]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/senderKeys/SenderKeyStore.java
ba2a032217823a9b7c8b5867f0c650d8b5a2e230
[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.io.IOException;
13 import java.util.Collection;
14 import java.util.Set;
15 import java.util.UUID;
16
17 public class SenderKeyStore implements SignalServiceSenderKeyStore {
18
19 private final SenderKeyRecordStore senderKeyRecordStore;
20 private final SenderKeySharedStore senderKeySharedStore;
21
22 public SenderKeyStore(
23 final File file,
24 final File senderKeysPath,
25 final RecipientAddressResolver addressResolver,
26 final RecipientResolver resolver
27 ) throws IOException {
28 this.senderKeyRecordStore = new SenderKeyRecordStore(senderKeysPath, resolver);
29 this.senderKeySharedStore = SenderKeySharedStore.load(file, addressResolver, resolver);
30 }
31
32 @Override
33 public void storeSenderKey(
34 final SignalProtocolAddress sender, final UUID distributionId, final SenderKeyRecord record
35 ) {
36 senderKeyRecordStore.storeSenderKey(sender, distributionId, record);
37 }
38
39 @Override
40 public SenderKeyRecord loadSenderKey(final SignalProtocolAddress sender, final UUID distributionId) {
41 return senderKeyRecordStore.loadSenderKey(sender, distributionId);
42 }
43
44 @Override
45 public Set<SignalProtocolAddress> getSenderKeySharedWith(final DistributionId distributionId) {
46 return senderKeySharedStore.getSenderKeySharedWith(distributionId);
47 }
48
49 @Override
50 public void markSenderKeySharedWith(
51 final DistributionId distributionId, final Collection<SignalProtocolAddress> addresses
52 ) {
53 senderKeySharedStore.markSenderKeySharedWith(distributionId, addresses);
54 }
55
56 @Override
57 public void clearSenderKeySharedWith(final Collection<SignalProtocolAddress> addresses) {
58 senderKeySharedStore.clearSenderKeySharedWith(addresses);
59 }
60
61 public void deleteAll() {
62 senderKeySharedStore.deleteAll();
63 senderKeyRecordStore.deleteAll();
64 }
65
66 public void deleteAll(RecipientId recipientId) {
67 senderKeySharedStore.deleteAllFor(recipientId);
68 senderKeyRecordStore.deleteAllFor(recipientId);
69 }
70
71 public void mergeRecipients(RecipientId recipientId, RecipientId toBeMergedRecipientId) {
72 senderKeySharedStore.mergeRecipients(recipientId, toBeMergedRecipientId);
73 senderKeyRecordStore.mergeRecipients(recipientId, toBeMergedRecipientId);
74 }
75 }