]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/KeyUtils.java
Extract SignalAccount from Manager
[signal-cli] / src / main / java / org / asamk / signal / manager / KeyUtils.java
diff --git a/src/main/java/org/asamk/signal/manager/KeyUtils.java b/src/main/java/org/asamk/signal/manager/KeyUtils.java
new file mode 100644 (file)
index 0000000..225cf68
--- /dev/null
@@ -0,0 +1,47 @@
+package org.asamk.signal.manager;
+
+import org.whispersystems.signalservice.internal.util.Base64;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+
+class KeyUtils {
+
+    private KeyUtils() {
+    }
+
+    static String createSignalingKey() {
+        return getSecret(52);
+    }
+
+    static byte[] createProfileKey() {
+        return getSecretBytes(32);
+    }
+
+    static String createPassword() {
+        return getSecret(18);
+    }
+
+    static byte[] createGroupId() {
+        return getSecretBytes(16);
+    }
+
+    private static String getSecret(int size) {
+        byte[] secret = getSecretBytes(size);
+        return Base64.encodeBytes(secret);
+    }
+
+    private static byte[] getSecretBytes(int size) {
+        byte[] secret = new byte[size];
+        getSecureRandom().nextBytes(secret);
+        return secret;
+    }
+
+    private static SecureRandom getSecureRandom() {
+        try {
+            return SecureRandom.getInstance("SHA1PRNG");
+        } catch (NoSuchAlgorithmException e) {
+            throw new AssertionError(e);
+        }
+    }
+}