]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/util/KeyUtils.java
Cleanup utils
[signal-cli] / src / main / java / org / asamk / signal / manager / util / KeyUtils.java
diff --git a/src/main/java/org/asamk/signal/manager/util/KeyUtils.java b/src/main/java/org/asamk/signal/manager/util/KeyUtils.java
new file mode 100644 (file)
index 0000000..2b4bc37
--- /dev/null
@@ -0,0 +1,43 @@
+package org.asamk.signal.manager.util;
+
+import org.asamk.signal.util.RandomUtils;
+import org.signal.zkgroup.InvalidInputException;
+import org.signal.zkgroup.profiles.ProfileKey;
+import org.whispersystems.util.Base64;
+
+public class KeyUtils {
+
+    private KeyUtils() {
+    }
+
+    public static String createSignalingKey() {
+        return getSecret(52);
+    }
+
+    public static ProfileKey createProfileKey() {
+        try {
+            return new ProfileKey(getSecretBytes(32));
+        } catch (InvalidInputException e) {
+            throw new AssertionError("Profile key is guaranteed to be 32 bytes here");
+        }
+    }
+
+    public static String createPassword() {
+        return getSecret(18);
+    }
+
+    public static byte[] createStickerUploadKey() {
+        return getSecretBytes(32);
+    }
+
+    private static String getSecret(int size) {
+        byte[] secret = getSecretBytes(size);
+        return Base64.encodeBytes(secret);
+    }
+
+    public static byte[] getSecretBytes(int size) {
+        byte[] secret = new byte[size];
+        RandomUtils.getSecureRandom().nextBytes(secret);
+        return secret;
+    }
+}