HMODULE open_library()

in src/main/native/org/apache/commons/crypto/DynamicLoader.c [32:60]


HMODULE open_library(JNIEnv *env)
#endif

{
  if (!openssl) {
    const char *libraryPath = COMMONS_CRYPTO_OPENSSL_LIBRARY;
    jclass clazz = (*env)->FindClass(env, "org/apache/commons/crypto/utils/Utils");
    if (clazz) {
        jmethodID libraryPathFunc = (*env)->GetStaticMethodID(env, clazz, "libraryPath", "(Ljava/lang/String;)Ljava/lang/String;");
        if (libraryPathFunc) {
            jstring defaultLibrary = (*env)->NewStringUTF(env, COMMONS_CRYPTO_OPENSSL_LIBRARY);
            jstring result = (jstring) (*env)->CallStaticObjectMethod(env, clazz, libraryPathFunc, defaultLibrary);
            if (result) {
                libraryPath = (*env)->GetStringUTFChars(env, result, NULL);
            }
        }
    }
#ifdef UNIX
    openssl = dlopen(libraryPath, RTLD_LAZY | RTLD_GLOBAL);
#endif

#ifdef WINDOWS
    // not necessary to provide override for Windows
    openssl = LoadLibrary(TEXT(COMMONS_CRYPTO_OPENSSL_LIBRARY));
#endif

  }
  return openssl;
}