1 package org
.asamk
.signal
.manager
.storage
.identities
;
3 import org
.signal
.libsignal
.protocol
.IdentityKey
;
4 import org
.signal
.libsignal
.protocol
.IdentityKeyPair
;
5 import org
.signal
.libsignal
.protocol
.SignalProtocolAddress
;
7 import java
.util
.function
.Supplier
;
9 public class SignalIdentityKeyStore
implements org
.signal
.libsignal
.protocol
.state
.IdentityKeyStore
{
11 private final Supplier
<IdentityKeyPair
> identityKeyPairSupplier
;
12 private final int localRegistrationId
;
13 private final IdentityKeyStore identityKeyStore
;
15 public SignalIdentityKeyStore(
16 final Supplier
<IdentityKeyPair
> identityKeyPairSupplier
,
17 final int localRegistrationId
,
18 final IdentityKeyStore identityKeyStore
20 this.identityKeyPairSupplier
= identityKeyPairSupplier
;
21 this.localRegistrationId
= localRegistrationId
;
22 this.identityKeyStore
= identityKeyStore
;
26 public IdentityKeyPair
getIdentityKeyPair() {
27 return identityKeyPairSupplier
.get();
31 public int getLocalRegistrationId() {
32 return localRegistrationId
;
36 public boolean saveIdentity(SignalProtocolAddress address
, IdentityKey identityKey
) {
37 return identityKeyStore
.saveIdentity(address
.getName(), identityKey
);
41 public boolean isTrustedIdentity(SignalProtocolAddress address
, IdentityKey identityKey
, Direction direction
) {
42 return identityKeyStore
.isTrustedIdentity(address
.getName(), identityKey
, direction
);
46 public IdentityKey
getIdentity(SignalProtocolAddress address
) {
47 final var identityInfo
= identityKeyStore
.getIdentityInfo(address
.getName());
48 return identityInfo
== null ?
null : identityInfo
.getIdentityKey();