Interface IdentityKeyStore
-
- All Implemented Interfaces:
@CalledFromNative() public interface IdentityKeyStore
Provides an interface to identity information.
Moxie Marlinspike
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public enumIdentityKeyStore.Directionpublic enumIdentityKeyStore.IdentityChange
-
Method Summary
Modifier and Type Method Description abstract IdentityKeyPairgetIdentityKeyPair()Get the local client's identity key pair. abstract intgetLocalRegistrationId()Return the local client's registration ID. abstract IdentityKeyStore.IdentityChangesaveIdentity(SignalProtocolAddress address, IdentityKey identityKey)Save a remote client's identity key Store a remote client's identity key as trusted. abstract booleanisTrustedIdentity(SignalProtocolAddress address, IdentityKey identityKey, IdentityKeyStore.Direction direction)Verify a remote client's identity key. abstract IdentityKeygetIdentity(SignalProtocolAddress address)Return the saved public identity key for a remote client -
-
Method Detail
-
getIdentityKeyPair
abstract IdentityKeyPair getIdentityKeyPair()
Get the local client's identity key pair.
- Returns:
The local client's persistent identity key pair.
-
getLocalRegistrationId
abstract int getLocalRegistrationId()
Return the local client's registration ID.
Clients should maintain a registration ID, a random number between 1 and 16380 that's generated once at install time.
- Returns:
the local client's registration ID.
-
saveIdentity
abstract IdentityKeyStore.IdentityChange saveIdentity(SignalProtocolAddress address, IdentityKey identityKey)
Save a remote client's identity key
Store a remote client's identity key as trusted.
- Parameters:
address- The address of the remote client.identityKey- The remote client's identity key.- Returns:
True if the identity key replaces a previous identity, false if not
-
isTrustedIdentity
abstract boolean isTrustedIdentity(SignalProtocolAddress address, IdentityKey identityKey, IdentityKeyStore.Direction direction)
Verify a remote client's identity key.
Determine whether a remote client's identity is trusted. Convention is that the Signal Protocol is 'trust on first use.' This means that an identity key is considered 'trusted' if there is no entry for the recipient in the local store, or if it matches the saved key for a recipient in the local store. Only if it mismatches an entry in the local store is it considered 'untrusted.'
Clients may wish to make a distinction as to how keys are trusted based on the direction of travel. For instance, clients may wish to accept all 'incoming' identity key changes, while only blocking identity key changes when sending a message.
- Parameters:
address- The address of the remote client.identityKey- The identity key to verify.direction- The direction (sending or receiving) this identity is being used for.- Returns:
true if trusted, false if untrusted.
-
getIdentity
abstract IdentityKey getIdentity(SignalProtocolAddress address)
Return the saved public identity key for a remote client
- Parameters:
address- The address of the remote client- Returns:
The public identity key, or null if absent
-
-
-
-