]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/util/KeyUtils.java
Refactor identity key store
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / util / KeyUtils.java
index 5167331ab9441b03bf955e7f0aa6facbd970310b..03bf8d79ad75af6ca2a969180841c89c9d4b44ce 100644 (file)
@@ -6,6 +6,7 @@ import org.whispersystems.libsignal.IdentityKey;
 import org.whispersystems.libsignal.IdentityKeyPair;
 import org.whispersystems.libsignal.InvalidKeyException;
 import org.whispersystems.libsignal.ecc.Curve;
+import org.whispersystems.libsignal.ecc.ECPrivateKey;
 import org.whispersystems.libsignal.state.PreKeyRecord;
 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
 import org.whispersystems.libsignal.util.Medium;
@@ -23,6 +24,17 @@ public class KeyUtils {
     private KeyUtils() {
     }
 
+    public static IdentityKeyPair getIdentityKeyPair(byte[] publicKeyBytes, byte[] privateKeyBytes) {
+        try {
+            IdentityKey publicKey = new IdentityKey(publicKeyBytes);
+            ECPrivateKey privateKey = Curve.decodePrivatePoint(privateKeyBytes);
+
+            return new IdentityKeyPair(publicKey, privateKey);
+        } catch (InvalidKeyException e) {
+            throw new AssertionError(e);
+        }
+    }
+
     public static IdentityKeyPair generateIdentityKeyPair() {
         var djbKeyPair = Curve.generateKeyPair();
         var djbIdentityKey = new IdentityKey(djbKeyPair.getPublicKey());