X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/0a5e836ab69d52c262ea792ed4b84a82dd8a34ca..4f67ac674b464b07a9ce022a6b19229d511384e2:/src/main/java/org/asamk/signal/commands/TrustCommand.java diff --git a/src/main/java/org/asamk/signal/commands/TrustCommand.java b/src/main/java/org/asamk/signal/commands/TrustCommand.java index 78f22c19..65487ba7 100644 --- a/src/main/java/org/asamk/signal/commands/TrustCommand.java +++ b/src/main/java/org/asamk/signal/commands/TrustCommand.java @@ -11,6 +11,7 @@ import org.asamk.signal.manager.Manager; import org.asamk.signal.util.Hex; import org.whispersystems.signalservice.api.util.InvalidNumberException; +import java.util.Base64; import java.util.Locale; public class TrustCommand implements JsonRpcLocalCommand { @@ -49,44 +50,59 @@ public class TrustCommand implements JsonRpcLocalCommand { } } else { var safetyNumber = ns.getString("verified-safety-number"); - if (safetyNumber != null) { - safetyNumber = safetyNumber.replaceAll(" ", ""); - if (safetyNumber.length() == 66) { - byte[] fingerprintBytes; - try { - fingerprintBytes = Hex.toByteArray(safetyNumber.toLowerCase(Locale.ROOT)); - } catch (Exception e) { - throw new UserErrorException( - "Failed to parse the fingerprint, make sure the fingerprint is a correctly encoded hex string without additional characters."); - } - boolean res; - try { - res = m.trustIdentityVerified(number, fingerprintBytes); - } catch (InvalidNumberException e) { - throw new UserErrorException("Failed to parse recipient: " + e.getMessage()); - } - if (!res) { - throw new UserErrorException( - "Failed to set the trust for the fingerprint of this number, make sure the number and the fingerprint are correct."); - } - } else if (safetyNumber.length() == 60) { - boolean res; - try { - res = m.trustIdentityVerifiedSafetyNumber(number, safetyNumber); - } catch (InvalidNumberException e) { - throw new UserErrorException("Failed to parse recipient: " + e.getMessage()); - } - if (!res) { - throw new UserErrorException( - "Failed to set the trust for the safety number of this phone number, make sure the phone number and the safety number are correct."); - } - } else { + if (safetyNumber == null) { + throw new UserErrorException( + "You need to specify the fingerprint/safety number you have verified with -v SAFETY_NUMBER"); + } + + safetyNumber = safetyNumber.replaceAll(" ", ""); + if (safetyNumber.length() == 66) { + byte[] fingerprintBytes; + try { + fingerprintBytes = Hex.toByteArray(safetyNumber.toLowerCase(Locale.ROOT)); + } catch (Exception e) { throw new UserErrorException( - "Safety number has invalid format, either specify the old hex fingerprint or the new safety number"); + "Failed to parse the fingerprint, make sure the fingerprint is a correctly encoded hex string without additional characters."); + } + boolean res; + try { + res = m.trustIdentityVerified(number, fingerprintBytes); + } catch (InvalidNumberException e) { + throw new UserErrorException("Failed to parse recipient: " + e.getMessage()); + } + if (!res) { + throw new UserErrorException( + "Failed to set the trust for the fingerprint of this number, make sure the number and the fingerprint are correct."); + } + } else if (safetyNumber.length() == 60) { + boolean res; + try { + res = m.trustIdentityVerifiedSafetyNumber(number, safetyNumber); + } catch (InvalidNumberException e) { + throw new UserErrorException("Failed to parse recipient: " + e.getMessage()); + } + if (!res) { + throw new UserErrorException( + "Failed to set the trust for the safety number of this phone number, make sure the phone number and the safety number are correct."); } } else { - throw new UserErrorException( - "You need to specify the fingerprint/safety number you have verified with -v SAFETY_NUMBER"); + final byte[] scannableSafetyNumber; + try { + scannableSafetyNumber = Base64.getDecoder().decode(safetyNumber); + } catch (IllegalArgumentException e) { + throw new UserErrorException( + "Safety number has invalid format, either specify the old hex fingerprint or the new safety number"); + } + boolean res; + try { + res = m.trustIdentityVerifiedSafetyNumber(number, scannableSafetyNumber); + } catch (InvalidNumberException e) { + throw new UserErrorException("Failed to parse recipient: " + e.getMessage()); + } + if (!res) { + throw new UserErrorException( + "Failed to set the trust for the safety number of this phone number, make sure the phone number and the safety number are correct."); + } } } }