]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/identities/SignalIdentityKeyStore.java
66dfec4e24f800bd2e9fe9bfe3910edbfe572084
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / identities / SignalIdentityKeyStore.java
1 package org.asamk.signal.manager.storage.identities;
2
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;
8
9 import java.util.function.Supplier;
10
11 public class SignalIdentityKeyStore implements org.signal.libsignal.protocol.state.IdentityKeyStore {
12
13 private final Supplier<IdentityKeyPair> identityKeyPairSupplier;
14 private final int localRegistrationId;
15 private final IdentityKeyStore identityKeyStore;
16
17 public SignalIdentityKeyStore(
18 final RecipientResolver resolver,
19 final Supplier<IdentityKeyPair> identityKeyPairSupplier,
20 final int localRegistrationId,
21 final IdentityKeyStore identityKeyStore
22 ) {
23 this.identityKeyPairSupplier = identityKeyPairSupplier;
24 this.localRegistrationId = localRegistrationId;
25 this.identityKeyStore = identityKeyStore;
26 }
27
28 @Override
29 public IdentityKeyPair getIdentityKeyPair() {
30 return identityKeyPairSupplier.get();
31 }
32
33 @Override
34 public int getLocalRegistrationId() {
35 return localRegistrationId;
36 }
37
38 @Override
39 public boolean saveIdentity(SignalProtocolAddress address, IdentityKey identityKey) {
40 final var serviceId = ServiceId.parseOrThrow(address.getName());
41
42 return identityKeyStore.saveIdentity(serviceId, identityKey);
43 }
44
45 @Override
46 public boolean isTrustedIdentity(SignalProtocolAddress address, IdentityKey identityKey, Direction direction) {
47 final var serviceId = ServiceId.parseOrThrow(address.getName());
48
49 return identityKeyStore.isTrustedIdentity(serviceId, identityKey, direction);
50 }
51
52 @Override
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();
57 }
58 }