From 3b24e1d1b81877965444c7330e0a7b0c862da64f Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Fri, 25 May 2018 13:08:05 -0400 Subject: [PATCH] Move native implementation build into masterpassword-core --- core/c/build.gradle | 44 ++++++++++ core/c/{ => src}/aes.c | 0 core/c/{ => src}/aes.h | 0 core/c/{ => src}/base64.c | 0 core/c/{ => src}/base64.h | 0 core/c/{ => src}/mpw-algorithm.c | 0 core/c/{ => src}/mpw-algorithm.h | 0 core/c/{ => src}/mpw-algorithm_v0.c | 0 core/c/{ => src}/mpw-algorithm_v1.c | 0 core/c/{ => src}/mpw-algorithm_v2.c | 0 core/c/{ => src}/mpw-algorithm_v3.c | 0 .../src/mpw/c/jni_mpw.c => c/src/mpw-jni.c} | 2 +- .../src/mpw/c/jni_mpw.h => c/src/mpw-jni.h} | 0 core/c/{ => src}/mpw-marshal-util.c | 0 core/c/{ => src}/mpw-marshal-util.h | 0 core/c/{ => src}/mpw-marshal.c | 0 core/c/{ => src}/mpw-marshal.h | 0 core/c/{ => src}/mpw-types.c | 0 core/c/{ => src}/mpw-types.h | 0 core/c/{ => src}/mpw-util.c | 0 core/c/{ => src}/mpw-util.h | 0 core/java/algorithm/build.gradle | 83 ++++-------------- .../lyndir/masterpassword/impl/Native.java | 47 +++++++--- core/java/model/build.gradle | 17 ++-- core/java/tests/build.gradle | 2 + gradle/gradle/wrapper/gradle-wrapper.jar | Bin 54727 -> 54413 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- gradle/settings.gradle | 6 +- 28 files changed, 115 insertions(+), 89 deletions(-) create mode 100644 core/c/build.gradle rename core/c/{ => src}/aes.c (100%) rename core/c/{ => src}/aes.h (100%) rename core/c/{ => src}/base64.c (100%) rename core/c/{ => src}/base64.h (100%) rename core/c/{ => src}/mpw-algorithm.c (100%) rename core/c/{ => src}/mpw-algorithm.h (100%) rename core/c/{ => src}/mpw-algorithm_v0.c (100%) rename core/c/{ => src}/mpw-algorithm_v1.c (100%) rename core/c/{ => src}/mpw-algorithm_v2.c (100%) rename core/c/{ => src}/mpw-algorithm_v3.c (100%) rename core/{java/algorithm/src/mpw/c/jni_mpw.c => c/src/mpw-jni.c} (94%) rename core/{java/algorithm/src/mpw/c/jni_mpw.h => c/src/mpw-jni.h} (100%) rename core/c/{ => src}/mpw-marshal-util.c (100%) rename core/c/{ => src}/mpw-marshal-util.h (100%) rename core/c/{ => src}/mpw-marshal.c (100%) rename core/c/{ => src}/mpw-marshal.h (100%) rename core/c/{ => src}/mpw-types.c (100%) rename core/c/{ => src}/mpw-types.h (100%) rename core/c/{ => src}/mpw-util.c (100%) rename core/c/{ => src}/mpw-util.h (100%) diff --git a/core/c/build.gradle b/core/c/build.gradle new file mode 100644 index 00000000..2fd63e6b --- /dev/null +++ b/core/c/build.gradle @@ -0,0 +1,44 @@ +import org.gradle.internal.jvm.Jvm + + +plugins { + id 'cpp-library' + id 'xcode' + id 'visual-studio' +} + +description = 'Master Password Algorithm Implementation' + +library { + linkage.set( [Linkage.STATIC, Linkage.SHARED] ) + + binaries.configureEach { + // Reconfigure the toolchain from C++ to C. + compileTask.get().source.setFrom( fileTree( dir: "src", include: "**/*.c" ) ) + if (toolChain instanceof VisualCpp) { + compileTask.get().compilerArgs = ["/TC"] + } else if (toolChain instanceof GccCompatibleToolChain) { + compileTask.get().compilerArgs = ["-x", "c", "-std=c11"] + //linkTask.get().linkerArgs = ["-nodefaultlibs", "-lc"] + } + + // Resolve our standard naming for OS platforms. + def platform = System.getProperty( "os.name" ).toLowerCase( Locale.ROOT ) + if (platform.startsWith( "mac" )) + platform = "macos" + + project.dependencies { + // Depend on JDK for JNI support. + add( includePathConfiguration.name, + files( new File( Jvm.current().javaHome, "include" ) ) { first().eachDir { from it } } ) + + // Depend on libsodium from `lib`; run `lib/bin/build_libsodium-${os}` first. + add( includePathConfiguration.name, + files( "../../lib/libsodium/build-${platform}~/out/include" ) ) + add( linkLibraries.name, + fileTree( "../../lib/libsodium/build-${platform}~/out/lib" ) ) + } + + compileTask.get().compilerArgs.add "-DMPW_SODIUM=1" + } +} diff --git a/core/c/aes.c b/core/c/src/aes.c similarity index 100% rename from core/c/aes.c rename to core/c/src/aes.c diff --git a/core/c/aes.h b/core/c/src/aes.h similarity index 100% rename from core/c/aes.h rename to core/c/src/aes.h diff --git a/core/c/base64.c b/core/c/src/base64.c similarity index 100% rename from core/c/base64.c rename to core/c/src/base64.c diff --git a/core/c/base64.h b/core/c/src/base64.h similarity index 100% rename from core/c/base64.h rename to core/c/src/base64.h diff --git a/core/c/mpw-algorithm.c b/core/c/src/mpw-algorithm.c similarity index 100% rename from core/c/mpw-algorithm.c rename to core/c/src/mpw-algorithm.c diff --git a/core/c/mpw-algorithm.h b/core/c/src/mpw-algorithm.h similarity index 100% rename from core/c/mpw-algorithm.h rename to core/c/src/mpw-algorithm.h diff --git a/core/c/mpw-algorithm_v0.c b/core/c/src/mpw-algorithm_v0.c similarity index 100% rename from core/c/mpw-algorithm_v0.c rename to core/c/src/mpw-algorithm_v0.c diff --git a/core/c/mpw-algorithm_v1.c b/core/c/src/mpw-algorithm_v1.c similarity index 100% rename from core/c/mpw-algorithm_v1.c rename to core/c/src/mpw-algorithm_v1.c diff --git a/core/c/mpw-algorithm_v2.c b/core/c/src/mpw-algorithm_v2.c similarity index 100% rename from core/c/mpw-algorithm_v2.c rename to core/c/src/mpw-algorithm_v2.c diff --git a/core/c/mpw-algorithm_v3.c b/core/c/src/mpw-algorithm_v3.c similarity index 100% rename from core/c/mpw-algorithm_v3.c rename to core/c/src/mpw-algorithm_v3.c diff --git a/core/java/algorithm/src/mpw/c/jni_mpw.c b/core/c/src/mpw-jni.c similarity index 94% rename from core/java/algorithm/src/mpw/c/jni_mpw.c rename to core/c/src/mpw-jni.c index c4532d7c..720c6df2 100644 --- a/core/java/algorithm/src/mpw/c/jni_mpw.c +++ b/core/c/src/mpw-jni.c @@ -1,4 +1,4 @@ -#include "jni_mpw.h" +#include "mpw-jni.h" /** native int _scrypt(byte[] passwd, int passwdlen, byte[] salt, int saltlen, int N, int r, int p, byte[] buf, int buflen); */ JNIEXPORT jint JNICALL Java_com_lyndir_masterpassword_impl_MPAlgorithmV0__1scrypt(JNIEnv *env, jobject obj, diff --git a/core/java/algorithm/src/mpw/c/jni_mpw.h b/core/c/src/mpw-jni.h similarity index 100% rename from core/java/algorithm/src/mpw/c/jni_mpw.h rename to core/c/src/mpw-jni.h diff --git a/core/c/mpw-marshal-util.c b/core/c/src/mpw-marshal-util.c similarity index 100% rename from core/c/mpw-marshal-util.c rename to core/c/src/mpw-marshal-util.c diff --git a/core/c/mpw-marshal-util.h b/core/c/src/mpw-marshal-util.h similarity index 100% rename from core/c/mpw-marshal-util.h rename to core/c/src/mpw-marshal-util.h diff --git a/core/c/mpw-marshal.c b/core/c/src/mpw-marshal.c similarity index 100% rename from core/c/mpw-marshal.c rename to core/c/src/mpw-marshal.c diff --git a/core/c/mpw-marshal.h b/core/c/src/mpw-marshal.h similarity index 100% rename from core/c/mpw-marshal.h rename to core/c/src/mpw-marshal.h diff --git a/core/c/mpw-types.c b/core/c/src/mpw-types.c similarity index 100% rename from core/c/mpw-types.c rename to core/c/src/mpw-types.c diff --git a/core/c/mpw-types.h b/core/c/src/mpw-types.h similarity index 100% rename from core/c/mpw-types.h rename to core/c/src/mpw-types.h diff --git a/core/c/mpw-util.c b/core/c/src/mpw-util.c similarity index 100% rename from core/c/mpw-util.c rename to core/c/src/mpw-util.c diff --git a/core/c/mpw-util.h b/core/c/src/mpw-util.h similarity index 100% rename from core/c/mpw-util.h rename to core/c/src/mpw-util.h diff --git a/core/java/algorithm/build.gradle b/core/java/algorithm/build.gradle index 7d2a00fa..caaeea01 100644 --- a/core/java/algorithm/build.gradle +++ b/core/java/algorithm/build.gradle @@ -1,78 +1,27 @@ plugins { - id 'java' - id 'c' + id 'java-library' } + description = 'Master Password Algorithm Implementation' +configurations { + resource +} + dependencies { - compile( group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p1' ) { - exclude( module: 'joda-time' ) - } + implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p1' - compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.5' - compile group: 'org.jetbrains', name: 'annotations', version: '13.0' - compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1' + api( group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.9.5' ) + api group: 'org.jetbrains', name: 'annotations', version: '13.0' + api group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1' + + resource project( path: ':masterpassword-core', configuration: 'releaseSharedRuntimeElements' ) } -processResources { - dependsOn 'mpwSharedLibrary' -} - -// TODO: nativeGenHeaders should run prior to mpwSharedLibrary -// TODO: but that creates a cyclic dependency since processResources runs before compileJava which nativeGenHeaders depends on. -//task mpwSharedLibrary { -// dependsOn processResources -//} -build { -// dependsOn 'mpwSharedLibrary' - dependsOn 'nativeGenHeaders' -} - -task nativeGenHeaders { - description "Uses javah to regenerate the JNI header files" - inputs.file sourceSets.main.output.asFileTree.matching { - include 'com/lyndir/masterpassword/impl/MPAlgorithmV0.class' - } - outputs.file 'src/mpw/c/jni_mpw.h' - def classpath = files( sourceSets.main.compileClasspath, sourceSets.main.output ) - doLast { - ant.javah( class: 'com.lyndir.masterpassword.impl.MPAlgorithmV0', - outputFile: 'src/mpw/c/jni_mpw.h', - classpath: classpath.asPath ) - } -} - -model { - components { - mpw( NativeLibrarySpec ) { - binaries.all { - if (targetPlatform.operatingSystem.macOsX) { - cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include" - cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/darwin" - cCompiler.args '-mmacosx-version-min=10.4' - linker.args '-mmacosx-version-min=10.4' - } else if (targetPlatform.operatingSystem.linux) { - cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include" - cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/linux" - cCompiler.args '-D_FILE_OFFSET_BITS=64' - } else if (targetPlatform.operatingSystem.windows) { - cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include" - cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32" - linker.args "Shlwapi.lib", "Advapi32.lib" - } else if (targetPlatform.operatingSystem.freeBSD) { - cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include" - cCompiler.args '-I', "${org.gradle.internal.jvm.Jvm.current().javaHome}/include/freebsd" - } - } - // TODO: Can't we add the sharedLibraryFile to the resources through some kind of task dependency instead? - binaries.withType( SharedLibraryBinarySpec ) { - sourceSets.main.resources.srcDirs it.sharedLibraryFile.parent -// copy { -// from sharedLibraryFile -// to sourceSets.main.resources.outputDir -// } - } - } +jar { + dependsOn task( type: Sync, 'copyResources' ) { + from files( configurations.resource ) + into processResources.outputs.files.singleFile } } diff --git a/core/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java b/core/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java index 9852ea48..66f0c7b2 100644 --- a/core/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java +++ b/core/java/algorithm/src/main/java/com/lyndir/masterpassword/impl/Native.java @@ -18,42 +18,67 @@ package com.lyndir.masterpassword.impl; +import com.google.common.base.Joiner; import com.google.common.io.ByteStreams; import com.lyndir.lhunath.opal.system.logging.Logger; import java.io.*; +import java.util.Locale; +import javax.annotation.Nonnull; /** * @author lhunath, 2018-05-22 */ public final class Native { + private static final Logger logger = Logger.get( Native.class ); - private static final char FILE_DOT = '.'; - private static final String NATIVES_PATH = ""; + @SuppressWarnings("HardcodedFileSeparator") + private static final char RESOURCE_SEPARATOR = '/'; + private static final char EXTENSION_SEPARATOR = '.'; + private static final String NATIVES_PATH = "lib"; @SuppressWarnings({ "HardcodedFileSeparator", "LoadLibraryWithNonConstantString" }) public static void load(final Class context, final String name) { try { + // Find and open a stream to the packaged library resource. String library = System.mapLibraryName( name ); - int libraryDot = library.lastIndexOf( FILE_DOT ); + int libraryDot = library.lastIndexOf( EXTENSION_SEPARATOR ); String libraryName = (libraryDot > 0)? library.substring( 0, libraryDot ): library; - String libraryExtension = (libraryDot > 0)? library.substring( libraryDot ): "lib"; - String libraryResource = String.format( "%s/%s", NATIVES_PATH, library ); + String libraryExtension = (libraryDot > 0)? library.substring( libraryDot ): ".lib"; + String libraryResource = getLibraryResource( library ); InputStream libraryStream = context.getResourceAsStream( libraryResource ); if (libraryStream == null) throw new IllegalStateException( "Library: " + name + " (" + libraryResource + "), not found in class loader for: " + context ); - File libraryFile = File.createTempFile( "libmpw", ".dylib" ); - ByteStreams.copy( libraryStream, new FileOutputStream( libraryFile ) ); + // Write the library resource to a temporary file. + File libraryFile = File.createTempFile( libraryName, libraryExtension ); + FileOutputStream libraryFileStream = new FileOutputStream( libraryFile ); + try { + libraryFile.deleteOnExit(); + ByteStreams.copy( libraryStream, libraryFileStream ); + } + finally { + libraryFileStream.close(); + libraryStream.close(); + } + + // Load the library from the temporary file. System.load( libraryFile.getAbsolutePath() ); - libraryFile.deleteOnExit(); - if (!libraryFile.delete()) - logger.wrn( "Couldn't clean up library after loading: " + libraryFile ); } catch (final IOException e) { - throw new IllegalStateException( "Couldn't load library: " + name, e ); + throw new IllegalStateException( "Couldn't extract library: " + name, e ); } } + + @Nonnull + private static String getLibraryResource(final String library) { + String system = System.getProperty( "os.name" ).toLowerCase( Locale.ROOT ); + String architecture = System.getProperty( "os.arch" ).toLowerCase( Locale.ROOT ); + if ("Mac OS X".equalsIgnoreCase( system )) + system = "macos"; + + return Joiner.on( RESOURCE_SEPARATOR ).join( NATIVES_PATH, system, architecture, library ); + } } diff --git a/core/java/model/build.gradle b/core/java/model/build.gradle index 039b4fbd..ca26b226 100644 --- a/core/java/model/build.gradle +++ b/core/java/model/build.gradle @@ -1,19 +1,22 @@ plugins { - id 'java' + id 'java-library' id 'net.ltgt.apt' version '0.9' } description = 'Master Password Site Model' dependencies { - compile project( ':masterpassword-algorithm' ) - compile 'joda-time:joda-time:2.4' - compile 'com.fasterxml.jackson.core:jackson-core:2.9.5' - compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.5' - compile 'com.fasterxml.jackson.core:jackson-databind:2.9.5' - //compile group: 'com.google.code.gson', name: 'gson', version: '2.8.2' + implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p1' + implementation 'com.fasterxml.jackson.core:jackson-core:2.9.5' + + api project( ':masterpassword-algorithm' ) + api 'joda-time:joda-time:2.4' + api 'com.fasterxml.jackson.core:jackson-annotations:2.9.5' + api 'com.fasterxml.jackson.core:jackson-databind:2.9.5' + compileOnly 'com.google.auto.value:auto-value:1.2' apt group: 'com.google.auto.value', name: 'auto-value', version: '1.2' + testCompile 'org.testng:testng:6.8.5' testCompile 'ch.qos.logback:logback-classic:1.1.2' } diff --git a/core/java/tests/build.gradle b/core/java/tests/build.gradle index 56242948..6fb07175 100644 --- a/core/java/tests/build.gradle +++ b/core/java/tests/build.gradle @@ -5,6 +5,8 @@ plugins { description = 'Master Password Test Suite' dependencies { + implementation group: 'com.lyndir.lhunath.opal', name: 'opal-system', version: '1.7-p1' + compile project( ':masterpassword-algorithm' ) compile project( ':masterpassword-model' ) diff --git a/gradle/gradle/wrapper/gradle-wrapper.jar b/gradle/gradle/wrapper/gradle-wrapper.jar index 27768f1bbac3ce2d055b20d521f12da78d331e8e..91ca28c8b802289c3a438766657a5e98f20eff03 100644 GIT binary patch delta 22815 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