]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/KeyUtils.java
Implement sending messages using unidentified sender
[signal-cli] / src / main / java / org / asamk / signal / manager / KeyUtils.java
index 225cf68206b7a6b313c5ff79e3cfe5c4bf7b5ee8..364f1eabff87ab813911efb56ba755a95b74596c 100644 (file)
@@ -1,9 +1,9 @@
 package org.asamk.signal.manager;
 
-import org.whispersystems.signalservice.internal.util.Base64;
-
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
+import org.asamk.signal.util.RandomUtils;
+import org.signal.zkgroup.InvalidInputException;
+import org.signal.zkgroup.profiles.ProfileKey;
+import org.whispersystems.util.Base64;
 
 class KeyUtils {
 
@@ -14,8 +14,12 @@ class KeyUtils {
         return getSecret(52);
     }
 
-    static byte[] createProfileKey() {
-        return getSecretBytes(32);
+    static ProfileKey createProfileKey() {
+        try {
+            return new ProfileKey(getSecretBytes(32));
+        } catch (InvalidInputException e) {
+            throw new AssertionError("Profile key is guaranteed to be 32 bytes here");
+        }
     }
 
     static String createPassword() {
@@ -26,6 +30,10 @@ class KeyUtils {
         return getSecretBytes(16);
     }
 
+    static byte[] createUnrestrictedUnidentifiedAccess() {
+        return getSecretBytes(16);
+    }
+
     private static String getSecret(int size) {
         byte[] secret = getSecretBytes(size);
         return Base64.encodeBytes(secret);
@@ -33,15 +41,7 @@ class KeyUtils {
 
     private static byte[] getSecretBytes(int size) {
         byte[] secret = new byte[size];
-        getSecureRandom().nextBytes(secret);
+        RandomUtils.getSecureRandom().nextBytes(secret);
         return secret;
     }
-
-    private static SecureRandom getSecureRandom() {
-        try {
-            return SecureRandom.getInstance("SHA1PRNG");
-        } catch (NoSuchAlgorithmException e) {
-            throw new AssertionError(e);
-        }
-    }
 }