]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/senderKeys/SenderKeyStore.java
6a3da47e15eed14e8a1724faa2a025a7ff7523c7
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / senderKeys / SenderKeyStore.java
1 package org.asamk.signal.manager.storage.senderKeys;
2
3 import org.asamk.signal.manager.api.Pair;
4 import org.asamk.signal.manager.helper.RecipientAddressResolver;
5 import org.asamk.signal.manager.storage.Database;
6 import org.asamk.signal.manager.storage.recipients.RecipientId;
7 import org.asamk.signal.manager.storage.recipients.RecipientIdCreator;
8 import org.asamk.signal.manager.storage.recipients.RecipientResolver;
9 import org.signal.libsignal.protocol.SignalProtocolAddress;
10 import org.signal.libsignal.protocol.groups.state.SenderKeyRecord;
11 import org.whispersystems.signalservice.api.SignalServiceSenderKeyStore;
12 import org.whispersystems.signalservice.api.push.DistributionId;
13
14 import java.util.Collection;
15 import java.util.Map;
16 import java.util.Set;
17 import java.util.UUID;
18
19 public class SenderKeyStore implements SignalServiceSenderKeyStore {
20
21 private final SenderKeyRecordStore senderKeyRecordStore;
22 private final SenderKeySharedStore senderKeySharedStore;
23
24 public SenderKeyStore(
25 final Database database,
26 final RecipientAddressResolver addressResolver,
27 final RecipientResolver resolver,
28 final RecipientIdCreator recipientIdCreator
29 ) {
30 this.senderKeyRecordStore = new SenderKeyRecordStore(database, resolver);
31 this.senderKeySharedStore = new SenderKeySharedStore(database, recipientIdCreator, addressResolver, resolver);
32 }
33
34 @Override
35 public void storeSenderKey(
36 final SignalProtocolAddress sender, final UUID distributionId, final SenderKeyRecord record
37 ) {
38 senderKeyRecordStore.storeSenderKey(sender, distributionId, record);
39 }
40
41 @Override
42 public SenderKeyRecord loadSenderKey(final SignalProtocolAddress sender, final UUID distributionId) {
43 return senderKeyRecordStore.loadSenderKey(sender, distributionId);
44 }
45
46 @Override
47 public Set<SignalProtocolAddress> getSenderKeySharedWith(final DistributionId distributionId) {
48 return senderKeySharedStore.getSenderKeySharedWith(distributionId);
49 }
50
51 @Override
52 public void markSenderKeySharedWith(
53 final DistributionId distributionId, final Collection<SignalProtocolAddress> addresses
54 ) {
55 senderKeySharedStore.markSenderKeySharedWith(distributionId, addresses);
56 }
57
58 @Override
59 public void clearSenderKeySharedWith(final Collection<SignalProtocolAddress> addresses) {
60 senderKeySharedStore.clearSenderKeySharedWith(addresses);
61 }
62
63 public void deleteAll() {
64 senderKeySharedStore.deleteAll();
65 senderKeyRecordStore.deleteAll();
66 }
67
68 public void deleteAll(RecipientId recipientId) {
69 senderKeySharedStore.deleteAllFor(recipientId);
70 senderKeyRecordStore.deleteAllFor(recipientId);
71 }
72
73 public void deleteSharedWith(RecipientId recipientId) {
74 senderKeySharedStore.deleteAllFor(recipientId);
75 }
76
77 public void deleteSharedWith(RecipientId recipientId, int deviceId, DistributionId distributionId) {
78 senderKeySharedStore.deleteSharedWith(recipientId, deviceId, distributionId);
79 }
80
81 public void deleteOurKey(RecipientId selfRecipientId, DistributionId distributionId) {
82 senderKeySharedStore.deleteAllFor(distributionId);
83 senderKeyRecordStore.deleteSenderKey(selfRecipientId, distributionId.asUuid());
84 }
85
86 public long getCreateTimeForOurKey(RecipientId selfRecipientId, int deviceId, DistributionId distributionId) {
87 return senderKeyRecordStore.getCreateTimeForKey(selfRecipientId, deviceId, distributionId.asUuid());
88 }
89
90 public void mergeRecipients(RecipientId recipientId, RecipientId toBeMergedRecipientId) {
91 senderKeySharedStore.mergeRecipients(recipientId, toBeMergedRecipientId);
92 senderKeyRecordStore.mergeRecipients(recipientId, toBeMergedRecipientId);
93 }
94
95 void addLegacySenderKeys(final Collection<Pair<SenderKeyRecordStore.Key, SenderKeyRecord>> senderKeys) {
96 senderKeyRecordStore.addLegacySenderKeys(senderKeys);
97 }
98
99 void addLegacySenderKeysShared(final Map<DistributionId, Set<SenderKeySharedStore.SenderKeySharedEntry>> sharedSenderKeys) {
100 senderKeySharedStore.addLegacySenderKeysShared(sharedSenderKeys);
101 }
102 }