]>
nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/IdentityVerificationCode.java
1 package org
.asamk
.signal
.manager
.api
;
3 import org
.signal
.libsignal
.protocol
.util
.Hex
;
5 import java
.util
.Base64
;
6 import java
.util
.Locale
;
8 public sealed interface IdentityVerificationCode
{
10 record Fingerprint(byte[] fingerprint
) implements IdentityVerificationCode
{}
12 record SafetyNumber(String safetyNumber
) implements IdentityVerificationCode
{}
14 record ScannableSafetyNumber(byte[] safetyNumber
) implements IdentityVerificationCode
{}
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
);
24 final var scannableSafetyNumber
= Base64
.getDecoder().decode(code
);
25 return new ScannableSafetyNumber(scannableSafetyNumber
);