diff --git a/platform-independent/c/core/src/mpw-jni.c b/platform-independent/c/core/src/mpw-jni.c index 10f3960f..c714ba31 100644 --- a/platform-independent/c/core/src/mpw-jni.c +++ b/platform-independent/c/core/src/mpw-jni.c @@ -84,8 +84,8 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) { return JNI_VERSION_1_6; } -/* native int _masterKey(final String fullName, final byte[] masterPassword, final Version version) */ -JNIEXPORT jbyteArray JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__1masterKey(JNIEnv *env, jobject obj, +/* native byte[] _masterKey(final String fullName, final byte[] masterPassword, final int algorithmVersion) */ +JNIEXPORT jbyteArray JNICALL Java_com_lyndir_masterpassword_MPAlgorithm_00024Version__1masterKey(JNIEnv *env, jobject obj, jstring fullName, jbyteArray masterPassword, jint algorithmVersion) { if (!fullName || !masterPassword) @@ -108,9 +108,9 @@ JNIEXPORT jbyteArray JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__ return masterKey; } -/* native int _siteKey(final byte[] masterKey, final String siteName, final long siteCounter, - final MPKeyPurpose keyPurpose, @Nullable final String keyContext, final Version version) */ -JNIEXPORT jbyteArray JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__1siteKey(JNIEnv *env, jobject obj, +/* native byte[] _siteKey(final byte[] masterKey, final String siteName, final long siteCounter, + final int keyPurpose, @Nullable final String keyContext, final int version) */ +JNIEXPORT jbyteArray JNICALL Java_com_lyndir_masterpassword_MPAlgorithm_00024Version__1siteKey(JNIEnv *env, jobject obj, jbyteArray masterKey, jstring siteName, jlong siteCounter, jint keyPurpose, jstring keyContext, jint algorithmVersion) { if (!masterKey || !siteName) @@ -138,9 +138,9 @@ JNIEXPORT jbyteArray JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__ } /* native String _siteResult(final byte[] masterKey, final byte[] siteKey, final String siteName, final long siteCounter, - final MPKeyPurpose keyPurpose, @Nullable final String keyContext, - final MPResultType resultType, @Nullable final String resultParam, final Version version) */ -JNIEXPORT jstring JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__1siteResult(JNIEnv *env, jobject obj, + final int keyPurpose, @Nullable final String keyContext, + final int resultType, @Nullable final String resultParam, final int algorithmVersion) */ +JNIEXPORT jstring JNICALL Java_com_lyndir_masterpassword_MPAlgorithm_00024Version__1siteResult(JNIEnv *env, jobject obj, jbyteArray masterKey, jbyteArray siteKey, jstring siteName, jlong siteCounter, jint keyPurpose, jstring keyContext, jint resultType, jstring resultParam, jint algorithmVersion) { @@ -173,9 +173,9 @@ JNIEXPORT jstring JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__1si } /* native String _siteState(final byte[] masterKey, final byte[] siteKey, final String siteName, final long siteCounter, - final MPKeyPurpose keyPurpose, @Nullable final String keyContext, - final MPResultType resultType, final String resultParam, final Version version) */ -JNIEXPORT jstring JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__1siteState(JNIEnv *env, jobject obj, + final int keyPurpose, @Nullable final String keyContext, + final int resultType, final String resultParam, final int algorithmVersion) */ +JNIEXPORT jstring JNICALL Java_com_lyndir_masterpassword_MPAlgorithm_00024Version__1siteState(JNIEnv *env, jobject obj, jbyteArray masterKey, jbyteArray siteKey, jstring siteName, jlong siteCounter, jint keyPurpose, jstring keyContext, jint resultType, jstring resultParam, jint algorithmVersion) { diff --git a/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java b/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java index c307f273..ef62f065 100644 --- a/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java +++ b/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/MPAlgorithm.java @@ -227,7 +227,8 @@ public interface MPAlgorithm { private static final int AES_BLOCKSIZE = 128 /* bit */; static { - Native.load( MPAlgorithm.class, "mpw" ); + if (!Native.load( MPAlgorithm.class, "mpw" )) + Logger.get( MPAlgorithm.class ).err( "Native mpw library unavailable." ); } protected final Logger logger = Logger.get( getClass() ); diff --git a/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java b/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java index 1f9be15b..56f304ba 100644 --- a/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java +++ b/platform-independent/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java @@ -74,9 +74,9 @@ public final class Native { // Write the library resource to a temporary file. libraryFile = File.createTempFile( libraryName, libraryExtension ); + libraryFile.deleteOnExit(); FileOutputStream libraryFileStream = new FileOutputStream( libraryFile ); try { - libraryFile.deleteOnExit(); ByteStreams.copy( libraryStream, libraryFileStream ); } finally { @@ -91,9 +91,8 @@ public final class Native { catch (@SuppressWarnings("ErrorNotRethrown") final IOException | UnsatisfiedLinkError e) { logger.wrn( e, "Couldn't load library: %s", libraryResource ); - if (libraryFile != null) - if (libraryFile.exists() && !libraryFile.delete()) - logger.wrn( "Couldn't clean up library file: %s", libraryFile ); + if (libraryFile != null && libraryFile.exists() && !libraryFile.delete()) + logger.wrn( "Couldn't clean up library file: %s", libraryFile ); libraryFile = null; } }