From f2cdee7c380d22e851dfd1dcf5dba1d84b94f6ff Mon Sep 17 00:00:00 2001 From: Cerber Date: Fri, 10 May 2013 10:45:39 +0200 Subject: [PATCH 1/5] Adding eclipse files to gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 0283abf..0354169 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,8 @@ +#Maven build result directory target/ +#binary objects *.o +#Eclipse project files +/.settings +/.classpath +/.project From 01ba1bc058236ef10859872d9ee94531f3dbbbbf Mon Sep 17 00:00:00 2001 From: Cerber Date: Fri, 10 May 2013 11:06:07 +0200 Subject: [PATCH 2/5] Adding to system preferences to be able to : - disable native implementation - be able to "install" the native implementation somewhere on the HDD --- .../java/com/lambdaworks/crypto/SCrypt.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lambdaworks/crypto/SCrypt.java b/src/main/java/com/lambdaworks/crypto/SCrypt.java index 6274238..fc0cf60 100644 --- a/src/main/java/com/lambdaworks/crypto/SCrypt.java +++ b/src/main/java/com/lambdaworks/crypto/SCrypt.java @@ -24,8 +24,30 @@ public class SCrypt { private static final boolean native_library_loaded; static { - LibraryLoader loader = LibraryLoaders.loader(); - native_library_loaded = loader.load("scrypt", true); + if (Boolean.getBoolean("com.lambdaworks.crypto.SCrypt.disableNative")) { + // User want's pure java impl ?! ... Ok let's do so. + native_library_loaded = false; + } else { + // Path to the native lib (if provided) + String libPath = System + .getProperty("com.lambdaworks.crypto.SCrypt.nativeLib"); + // trim to null + if (libPath != null) { + libPath = libPath.trim(); + if (libPath.length() == 0) { + libPath = null; + } + } + if (libPath == null) { + // automatic library loading + LibraryLoader loader = LibraryLoaders.loader(); + native_library_loaded = loader.load("scrypt", true); + } else { + // User wants to use a specific location / SystemLibraryLoader + LibraryLoader loader = new SystemLibraryLoader(); + native_library_loaded = loader.load(libPath, true); + } + } } /** From 38d05b96ca9633d8cbc46803c87fb8e4d2dc8ac8 Mon Sep 17 00:00:00 2001 From: Cerber Date: Fri, 10 May 2013 11:14:01 +0200 Subject: [PATCH 3/5] - change version number to next SNAPSHOT : 1.3.4-SNAPSHOT - set surfire XX:MaxHeapSize to 256M - moved signature plugin to a specific active profile (to be able to disable it) - created a "privateClassif" profile to be able to set a specific qualifier to the jar to be able to differenciate it from the official one --- pom.xml | 64 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index c20b2a8..7949c34 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.lambdaworks scrypt - 1.3.3 + 1.3.4-SNAPSHOT jar @@ -58,21 +58,6 @@ - - org.apache.maven.plugins - maven-jarsigner-plugin - 1.2 - - - sign - verify - - sign - - - - - org.apache.maven.plugins maven-surefire-plugin @@ -80,7 +65,7 @@ false - -Xmx2G -Xms512M + -Xmx2G -Xms512M -XX:MaxHeapSize=256m @@ -101,6 +86,31 @@ + + + + + sign + + true + + + + + + org.apache.maven.plugins + maven-jarsigner-plugin + 1.2 + + + sign + verify + + sign + + + + org.apache.maven.plugins @@ -118,6 +128,26 @@ + + + privateClassif + + false + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.3.2 + + PRIVATE + + + + + + UTF-8 From 33b13b62a604ea96abe57ce9b8a65a8306495f5b Mon Sep 17 00:00:00 2001 From: Cerber Date: Fri, 10 May 2013 11:40:50 +0200 Subject: [PATCH 4/5] Added new options to the readme --- README | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README b/README index a800da6..3194c3c 100644 --- a/README +++ b/README @@ -15,6 +15,16 @@ Java implementation of scrypt http://groups.google.com/group/lambdaworks-oss lambdaworks-oss@googlegroups.com +System prefrences + Two preferences are available : + - com.lambdaworks.crypto.SCrypt.disableNative : if set to "true" will + completely disable the native optimizations (regardless of other preferences) + - com.lambdaworks.crypto.SCrypt.nativeLib : allows to define the path to + the native library + + eg. + java -Dcom.lambdaworks.crypto.SCrypt.disableNative=true MainClass + java -Dcom.lambdaworks.crypto.SCrypt.nativeLib=/path/to/the/native/lib.so MainClass Usage com.lambdaworks.crypto.SCryptUtil implements a modified version of MCF, @@ -50,7 +60,8 @@ Maven Artifacts com.lambdaworks scrypt - 1.3.3 + 1.3.4-SNAPSHOT + PRIVATE Native Code Implementation From 1eca0577dd6ebdd81e405b2c3a1c392733345a1c Mon Sep 17 00:00:00 2001 From: Cerber Date: Tue, 14 May 2013 14:15:59 +0200 Subject: [PATCH 5/5] Replaced System.loadLibrary(...) by System.load(...) --- src/main/java/com/lambdaworks/crypto/SCrypt.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lambdaworks/crypto/SCrypt.java b/src/main/java/com/lambdaworks/crypto/SCrypt.java index fc0cf60..a0fda1c 100644 --- a/src/main/java/com/lambdaworks/crypto/SCrypt.java +++ b/src/main/java/com/lambdaworks/crypto/SCrypt.java @@ -44,8 +44,15 @@ public class SCrypt { native_library_loaded = loader.load("scrypt", true); } else { // User wants to use a specific location / SystemLibraryLoader - LibraryLoader loader = new SystemLibraryLoader(); - native_library_loaded = loader.load(libPath, true); + boolean sucessfullyLoaded = false; + try { + System.load(libPath); + sucessfullyLoaded = true; + } catch (Exception e) { + sucessfullyLoaded = false; + e.printStackTrace(); + } + native_library_loaded = sucessfullyLoaded; } } }