in src/main/java/org/apache/commons/crypto/jna/OpenSslNativeJna.java [54:96]
static {
OpenSslJna.debug("OpenSslNativeJna static init start");
final String libraryName = System.getProperty(Crypto.CONF_PREFIX + OpenSslNativeJna.class.getSimpleName(), "crypto");
OpenSslJna.debug("OpenSslNativeJna NativeLibrary.getInstance('%s')", libraryName);
@SuppressWarnings("resource") // NativeLibrary.getInstance returns a singleton
final NativeLibrary crypto = NativeLibrary.getInstance(libraryName);
OpenSslJna.debug("OpenSslNativeJna NativeLibrary.getInstance('%s') -> %s", libraryName, crypto);
Function versionFunction = null;
try {
versionFunction = crypto.getFunction("SSLeay");
} catch (final UnsatisfiedLinkError e) {
versionFunction = crypto.getFunction("OpenSSL_version_num");
}
// Must find one of the above two functions; else give up
VERSION = versionFunction.invokeLong(new Object[]{});
OpenSslJna.debug(String.format("OpenSslNativeJna detected version 0x%x", VERSION));
VERSION_X_Y = VERSION & 0xffff0000; // keep only major.minor
if (VERSION_X_Y == VERSION_1_0_X) {
OpenSslJna.debug("Creating OpenSsl10XNativeJna");
JnaImplementation = new OpenSsl10XNativeJna();
} else if (VERSION_X_Y == VERSION_1_1_X) {
OpenSslJna.debug("Creating OpenSsl11XNativeJna");
JnaImplementation = new OpenSsl11XNativeJna();
} else if (VERSION_X_Y == VERSION_2_0_X) {
OpenSslJna.debug("Creating OpenSsl20XNativeJna");
JnaImplementation = new OpenSsl20XNativeJna();
// } else if (VERSION_X_Y == VERSION_3_0_X) {
// OpenSslJna.debug("Creating OpenSsl30XNativeJna");
// JnaImplementation = new OpenSsl30XNativeJna();
} else {
// TODO: Throw error?
OpenSslJna.debug("Creating OpenSsl10XNativeJna");
JnaImplementation = new OpenSsl10XNativeJna();
}
INIT_OK = JnaImplementation._INIT_OK();
INIT_ERROR = INIT_OK ? null : JnaImplementation._INIT_ERROR();
OpenSslJna.debug("OpenSslNativeJna INIT_OK = %s, INIT_ERROR = '%s', JnaImplementation = %s", INIT_OK, INIT_ERROR, JnaImplementation.getClass());
OpenSslJna.debug("OpenSslNativeJna static init end");
}