You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2021/02/11 02:50:10 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2567] scrypt cost is made configurable

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 26633d9  [OPENMEETINGS-2567] scrypt cost is made configurable
26633d9 is described below

commit 26633d9a6f64078dc1355952ca517688214c39e0
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Feb 11 09:49:53 2021 +0700

    [OPENMEETINGS-2567] scrypt cost is made configurable
---
 .../openmeetings/util/crypt/SCryptImplementation.java      | 14 +++++++++++++-
 .../main/webapp/WEB-INF/classes/openmeetings.properties    |  3 +++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java
index 7be9b6f..34ba241 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java
@@ -20,8 +20,10 @@ package org.apache.openmeetings.util.crypt;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
+import java.io.InputStream;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
+import java.util.Properties;
 
 import org.apache.commons.codec.binary.Base64;
 import org.bouncycastle.crypto.generators.SCrypt;
@@ -42,7 +44,7 @@ public class SCryptImplementation implements ICrypt {
 				}
 				return sr;
 			});
-	private static final int COST = 1024 * 16;
+	private static int COST = 1024 * 16;
 	private static final int KEY_LENGTH = 512;
 	private static final int SALT_LENGTH = 200;
 
@@ -52,6 +54,16 @@ public class SCryptImplementation implements ICrypt {
 		return salt;
 	}
 
+	SCryptImplementation() {
+		try (final InputStream is = getClass().getResourceAsStream("/openmeetings.properties")) {
+			Properties props = new Properties();
+			props.load(is);
+			COST = Integer.valueOf(props.getProperty("scrypt.cost", "" + COST));
+		} catch (Exception e) {
+			log.error("Failed to initialize the COST", e);
+		}
+	}
+
 	private static String hash(String str, byte[] salt) {
 		byte[] dk = SCrypt.generate(str.getBytes(UTF_8), salt, COST, 8, 8, KEY_LENGTH);
 		return Base64.encodeBase64String(dk);
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties
index 3dc2989..37315c4 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties
@@ -16,6 +16,9 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+################## Crypt ##################
+scrypt.cost=16384
+
 ################## Timeouts ##################
 #			5000		== 5 sec
 #			300000		== 5 min