1 package org
.asamk
.signal
.manager
.storage
.identities
;
3 import org
.asamk
.signal
.manager
.storage
.recipients
.RecipientResolver
;
4 import org
.signal
.libsignal
.protocol
.IdentityKey
;
5 import org
.signal
.libsignal
.protocol
.IdentityKeyPair
;
6 import org
.signal
.libsignal
.protocol
.SignalProtocolAddress
;
7 import org
.whispersystems
.signalservice
.api
.push
.ServiceId
;
9 import java
.util
.function
.Supplier
;
11 public class SignalIdentityKeyStore
implements org
.signal
.libsignal
.protocol
.state
.IdentityKeyStore
{
13 private final Supplier
<IdentityKeyPair
> identityKeyPairSupplier
;
14 private final int localRegistrationId
;
15 private final IdentityKeyStore identityKeyStore
;
17 public SignalIdentityKeyStore(
18 final RecipientResolver resolver
,
19 final Supplier
<IdentityKeyPair
> identityKeyPairSupplier
,
20 final int localRegistrationId
,
21 final IdentityKeyStore identityKeyStore
23 this.identityKeyPairSupplier
= identityKeyPairSupplier
;
24 this.localRegistrationId
= localRegistrationId
;
25 this.identityKeyStore
= identityKeyStore
;
29 public IdentityKeyPair
getIdentityKeyPair() {
30 return identityKeyPairSupplier
.get();
34 public int getLocalRegistrationId() {
35 return localRegistrationId
;
39 public boolean saveIdentity(SignalProtocolAddress address
, IdentityKey identityKey
) {
40 final var serviceId
= ServiceId
.parseOrThrow(address
.getName());
42 return identityKeyStore
.saveIdentity(serviceId
, identityKey
);
46 public boolean isTrustedIdentity(SignalProtocolAddress address
, IdentityKey identityKey
, Direction direction
) {
47 final var serviceId
= ServiceId
.parseOrThrow(address
.getName());
49 return identityKeyStore
.isTrustedIdentity(serviceId
, identityKey
, direction
);
53 public IdentityKey
getIdentity(SignalProtocolAddress address
) {
54 final var serviceId
= ServiceId
.parseOrThrow(address
.getName());
55 final var identityInfo
= identityKeyStore
.getIdentityInfo(serviceId
);
56 return identityInfo
== null ?
null : identityInfo
.getIdentityKey();