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