]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/IdentityVerificationCode.java
Update libsignal-service-java
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / IdentityVerificationCode.java
1 package org.asamk.signal.manager.api;
2
3 import org.signal.libsignal.protocol.util.Hex;
4
5 import java.util.Base64;
6 import java.util.Locale;
7
8 public sealed interface IdentityVerificationCode {
9
10 record Fingerprint(byte[] fingerprint) implements IdentityVerificationCode {}
11
12 record SafetyNumber(String safetyNumber) implements IdentityVerificationCode {}
13
14 record ScannableSafetyNumber(byte[] safetyNumber) implements IdentityVerificationCode {}
15
16 static IdentityVerificationCode parse(String code) throws Exception {
17 code = code.replaceAll(" ", "");
18 if (code.length() == 66) {
19 final var fingerprintBytes = Hex.fromStringCondensed(code.toLowerCase(Locale.ROOT));
20 return new Fingerprint(fingerprintBytes);
21 } else if (code.length() == 60) {
22 return new SafetyNumber(code);
23 } else {
24 final var scannableSafetyNumber = Base64.getDecoder().decode(code);
25 return new ScannableSafetyNumber(scannableSafetyNumber);
26 }
27 }
28 }