X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/b738f5740c94fe7a5df9e322e1345a99ef0c5ce5..bbdd6a89102f200f284a01a41ac2809c0759ae50:/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 index 00000000..2b4bc371 --- /dev/null +++ b/src/main/java/org/asamk/signal/manager/util/KeyUtils.java @@ -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; + } +}