1 package org
.asamk
.signal
.manager
.storage
.senderKeys
;
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
;
11 import java
.util
.Collection
;
14 import java
.util
.UUID
;
16 public class SenderKeyStore
implements SignalServiceSenderKeyStore
{
18 private final SenderKeyRecordStore senderKeyRecordStore
;
19 private final SenderKeySharedStore senderKeySharedStore
;
21 public SenderKeyStore(final Database database
) {
22 this.senderKeyRecordStore
= new SenderKeyRecordStore(database
);
23 this.senderKeySharedStore
= new SenderKeySharedStore(database
);
27 public void storeSenderKey(
28 final SignalProtocolAddress sender
, final UUID distributionId
, final SenderKeyRecord
record
30 senderKeyRecordStore
.storeSenderKey(sender
, distributionId
, record);
34 public SenderKeyRecord
loadSenderKey(final SignalProtocolAddress sender
, final UUID distributionId
) {
35 return senderKeyRecordStore
.loadSenderKey(sender
, distributionId
);
39 public Set
<SignalProtocolAddress
> getSenderKeySharedWith(final DistributionId distributionId
) {
40 return senderKeySharedStore
.getSenderKeySharedWith(distributionId
);
44 public void markSenderKeySharedWith(
45 final DistributionId distributionId
, final Collection
<SignalProtocolAddress
> addresses
47 senderKeySharedStore
.markSenderKeySharedWith(distributionId
, addresses
);
51 public void clearSenderKeySharedWith(final Collection
<SignalProtocolAddress
> addresses
) {
52 senderKeySharedStore
.clearSenderKeySharedWith(addresses
);
55 public void deleteAll() {
56 senderKeySharedStore
.deleteAll();
57 senderKeyRecordStore
.deleteAll();
60 public void deleteAll(ServiceId serviceId
) {
61 senderKeySharedStore
.deleteAllFor(serviceId
);
62 senderKeyRecordStore
.deleteAllFor(serviceId
);
65 public void deleteSharedWith(ServiceId serviceId
) {
66 senderKeySharedStore
.deleteAllFor(serviceId
);
69 public void deleteSharedWith(ServiceId serviceId
, int deviceId
, DistributionId distributionId
) {
70 senderKeySharedStore
.deleteSharedWith(serviceId
, deviceId
, distributionId
);
73 public void deleteOurKey(ServiceId selfServiceId
, DistributionId distributionId
) {
74 senderKeySharedStore
.deleteAllFor(distributionId
);
75 senderKeyRecordStore
.deleteSenderKey(selfServiceId
, distributionId
.asUuid());
78 public long getCreateTimeForOurKey(ServiceId selfServiceId
, int deviceId
, DistributionId distributionId
) {
79 return senderKeyRecordStore
.getCreateTimeForKey(selfServiceId
, deviceId
, distributionId
.asUuid());
82 void addLegacySenderKeys(final Collection
<Pair
<SenderKeyRecordStore
.Key
, SenderKeyRecord
>> senderKeys
) {
83 senderKeyRecordStore
.addLegacySenderKeys(senderKeys
);
86 void addLegacySenderKeysShared(final Map
<DistributionId
, Set
<SenderKeySharedStore
.SenderKeySharedEntry
>> sharedSenderKeys
) {
87 senderKeySharedStore
.addLegacySenderKeysShared(sharedSenderKeys
);