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 <[email protected]>
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