X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/701328b8c26d6ad4f98cf8213dd57e4b06aa1281..35c72f692f13b12594ecdbe8f59f31d3b396d356:/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 index 00000000..225cf682 --- /dev/null +++ b/src/main/java/org/asamk/signal/manager/KeyUtils.java @@ -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); + } + } +}