]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/senderKeys/SenderKeyStore.java
d60249b6db6d21f6d0eb1bf5ce0a2c8249c41c05
[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.storage.Database;
5 import org.signal.libsignal.protocol.SignalProtocolAddress;
6 import org.signal.libsignal.protocol.groups.state.SenderKeyRecord;
7 import org.whispersystems.signalservice.api.SignalServiceSenderKeyStore;
8 import org.whispersystems.signalservice.api.push.DistributionId;
9 import org.whispersystems.signalservice.api.push.ServiceId;
10
11 import java.util.Collection;
12 import java.util.Map;
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(final Database database) {
22 this.senderKeyRecordStore = new SenderKeyRecordStore(database);
23 this.senderKeySharedStore = new SenderKeySharedStore(database);
24 }
25
26 @Override
27 public void storeSenderKey(
28 final SignalProtocolAddress sender, final UUID distributionId, final SenderKeyRecord record
29 ) {
30 senderKeyRecordStore.storeSenderKey(sender, distributionId, record);
31 }
32
33 @Override
34 public SenderKeyRecord loadSenderKey(final SignalProtocolAddress sender, final UUID distributionId) {
35 return senderKeyRecordStore.loadSenderKey(sender, distributionId);
36 }
37
38 @Override
39 public Set<SignalProtocolAddress> getSenderKeySharedWith(final DistributionId distributionId) {
40 return senderKeySharedStore.getSenderKeySharedWith(distributionId);
41 }
42
43 @Override
44 public void markSenderKeySharedWith(
45 final DistributionId distributionId, final Collection<SignalProtocolAddress> addresses
46 ) {
47 senderKeySharedStore.markSenderKeySharedWith(distributionId, addresses);
48 }
49
50 @Override
51 public void clearSenderKeySharedWith(final Collection<SignalProtocolAddress> addresses) {
52 senderKeySharedStore.clearSenderKeySharedWith(addresses);
53 }
54
55 public void deleteAll() {
56 senderKeySharedStore.deleteAll();
57 senderKeyRecordStore.deleteAll();
58 }
59
60 public void deleteAll(ServiceId serviceId) {
61 senderKeySharedStore.deleteAllFor(serviceId);
62 senderKeyRecordStore.deleteAllFor(serviceId);
63 }
64
65 public void deleteSharedWith(ServiceId serviceId) {
66 senderKeySharedStore.deleteAllFor(serviceId);
67 }
68
69 public void deleteSharedWith(ServiceId serviceId, int deviceId, DistributionId distributionId) {
70 senderKeySharedStore.deleteSharedWith(serviceId, deviceId, distributionId);
71 }
72
73 public void deleteOurKey(ServiceId selfServiceId, DistributionId distributionId) {
74 senderKeySharedStore.deleteAllFor(distributionId);
75 senderKeyRecordStore.deleteSenderKey(selfServiceId, distributionId.asUuid());
76 }
77
78 public long getCreateTimeForOurKey(ServiceId selfServiceId, int deviceId, DistributionId distributionId) {
79 return senderKeyRecordStore.getCreateTimeForKey(selfServiceId, deviceId, distributionId.asUuid());
80 }
81
82 void addLegacySenderKeys(final Collection<Pair<SenderKeyRecordStore.Key, SenderKeyRecord>> senderKeys) {
83 senderKeyRecordStore.addLegacySenderKeys(senderKeys);
84 }
85
86 void addLegacySenderKeysShared(final Map<DistributionId, Set<SenderKeySharedStore.SenderKeySharedEntry>> sharedSenderKeys) {
87 senderKeySharedStore.addLegacySenderKeysShared(sharedSenderKeys);
88 }
89 }