X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/55d485de88bf2f67f64be3978cf7c5649f1cc36f..0a68303ca448f69a5655beb23f4213187dbce0b4:/src/main/java/org/asamk/signal/JsonIdentityKeyStore.java diff --git a/src/main/java/org/asamk/signal/JsonIdentityKeyStore.java b/src/main/java/org/asamk/signal/JsonIdentityKeyStore.java index d4d0ea3e..d71e3581 100644 --- a/src/main/java/org/asamk/signal/JsonIdentityKeyStore.java +++ b/src/main/java/org/asamk/signal/JsonIdentityKeyStore.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.*; import org.whispersystems.libsignal.IdentityKey; import org.whispersystems.libsignal.IdentityKeyPair; import org.whispersystems.libsignal.InvalidKeyException; +import org.whispersystems.libsignal.SignalProtocolAddress; import org.whispersystems.libsignal.state.IdentityKeyStore; import java.io.IOException; @@ -36,8 +37,8 @@ class JsonIdentityKeyStore implements IdentityKeyStore { } @Override - public void saveIdentity(String name, IdentityKey identityKey) { - saveIdentity(name, identityKey, TrustLevel.TRUSTED_UNVERIFIED, null); + public void saveIdentity(SignalProtocolAddress address, IdentityKey identityKey) { + saveIdentity(address.getName(), identityKey, TrustLevel.TRUSTED_UNVERIFIED, null); } /** @@ -58,7 +59,9 @@ class JsonIdentityKeyStore implements IdentityKeyStore { if (!id.identityKey.equals(identityKey)) continue; - id.trustLevel = trustLevel; + if (id.trustLevel.compareTo(trustLevel) < 0) { + id.trustLevel = trustLevel; + } if (added != null) { id.added = added; } @@ -69,8 +72,8 @@ class JsonIdentityKeyStore implements IdentityKeyStore { } @Override - public boolean isTrustedIdentity(String name, IdentityKey identityKey) { - List identities = trustedKeys.get(name); + public boolean isTrustedIdentity(SignalProtocolAddress address, IdentityKey identityKey) { + List identities = trustedKeys.get(address.getName()); if (identities == null) { // Trust on first use return true; @@ -85,6 +88,16 @@ class JsonIdentityKeyStore implements IdentityKeyStore { return false; } + public Map> getIdentities() { + // TODO deep copy + return trustedKeys; + } + + public List getIdentities(String name) { + // TODO deep copy + return trustedKeys.get(name); + } + public static class JsonIdentityKeyStoreDeserializer extends JsonDeserializer { @Override @@ -165,8 +178,8 @@ class JsonIdentityKeyStore implements IdentityKeyStore { trustLevel == TrustLevel.TRUSTED_VERIFIED; } - public String getFingerprint() { - return Hex.toStringCondensed(identityKey.getPublicKey().serialize()); + public byte[] getFingerprint() { + return identityKey.getPublicKey().serialize(); } } }