1 package org
.asamk
.signal
.manager
.storage
.protocol
;
3 import org
.whispersystems
.libsignal
.IdentityKey
;
4 import org
.whispersystems
.libsignal
.IdentityKeyPair
;
5 import org
.whispersystems
.libsignal
.InvalidKeyIdException
;
6 import org
.whispersystems
.libsignal
.SignalProtocolAddress
;
7 import org
.whispersystems
.libsignal
.state
.IdentityKeyStore
;
8 import org
.whispersystems
.libsignal
.state
.PreKeyRecord
;
9 import org
.whispersystems
.libsignal
.state
.PreKeyStore
;
10 import org
.whispersystems
.libsignal
.state
.SessionRecord
;
11 import org
.whispersystems
.libsignal
.state
.SignedPreKeyRecord
;
12 import org
.whispersystems
.libsignal
.state
.SignedPreKeyStore
;
13 import org
.whispersystems
.signalservice
.api
.SignalServiceProtocolStore
;
14 import org
.whispersystems
.signalservice
.api
.SignalServiceSessionStore
;
16 import java
.util
.List
;
18 public class SignalProtocolStore
implements SignalServiceProtocolStore
{
20 private final PreKeyStore preKeyStore
;
21 private final SignedPreKeyStore signedPreKeyStore
;
22 private final SignalServiceSessionStore sessionStore
;
23 private final IdentityKeyStore identityKeyStore
;
25 public SignalProtocolStore(
26 final PreKeyStore preKeyStore
,
27 final SignedPreKeyStore signedPreKeyStore
,
28 final SignalServiceSessionStore sessionStore
,
29 final IdentityKeyStore identityKeyStore
31 this.preKeyStore
= preKeyStore
;
32 this.signedPreKeyStore
= signedPreKeyStore
;
33 this.sessionStore
= sessionStore
;
34 this.identityKeyStore
= identityKeyStore
;
38 public IdentityKeyPair
getIdentityKeyPair() {
39 return identityKeyStore
.getIdentityKeyPair();
43 public int getLocalRegistrationId() {
44 return identityKeyStore
.getLocalRegistrationId();
48 public boolean saveIdentity(SignalProtocolAddress address
, IdentityKey identityKey
) {
49 return identityKeyStore
.saveIdentity(address
, identityKey
);
53 public boolean isTrustedIdentity(SignalProtocolAddress address
, IdentityKey identityKey
, Direction direction
) {
54 return identityKeyStore
.isTrustedIdentity(address
, identityKey
, direction
);
58 public IdentityKey
getIdentity(SignalProtocolAddress address
) {
59 return identityKeyStore
.getIdentity(address
);
63 public PreKeyRecord
loadPreKey(int preKeyId
) throws InvalidKeyIdException
{
64 return preKeyStore
.loadPreKey(preKeyId
);
68 public void storePreKey(int preKeyId
, PreKeyRecord
record) {
69 preKeyStore
.storePreKey(preKeyId
, record);
73 public boolean containsPreKey(int preKeyId
) {
74 return preKeyStore
.containsPreKey(preKeyId
);
78 public void removePreKey(int preKeyId
) {
79 preKeyStore
.removePreKey(preKeyId
);
83 public SessionRecord
loadSession(SignalProtocolAddress address
) {
84 return sessionStore
.loadSession(address
);
88 public List
<Integer
> getSubDeviceSessions(String name
) {
89 return sessionStore
.getSubDeviceSessions(name
);
93 public void storeSession(SignalProtocolAddress address
, SessionRecord
record) {
94 sessionStore
.storeSession(address
, record);
98 public boolean containsSession(SignalProtocolAddress address
) {
99 return sessionStore
.containsSession(address
);
103 public void deleteSession(SignalProtocolAddress address
) {
104 sessionStore
.deleteSession(address
);
108 public void deleteAllSessions(String name
) {
109 sessionStore
.deleteAllSessions(name
);
113 public void archiveSession(final SignalProtocolAddress address
) {
114 sessionStore
.archiveSession(address
);
118 public SignedPreKeyRecord
loadSignedPreKey(int signedPreKeyId
) throws InvalidKeyIdException
{
119 return signedPreKeyStore
.loadSignedPreKey(signedPreKeyId
);
123 public List
<SignedPreKeyRecord
> loadSignedPreKeys() {
124 return signedPreKeyStore
.loadSignedPreKeys();
128 public void storeSignedPreKey(int signedPreKeyId
, SignedPreKeyRecord
record) {
129 signedPreKeyStore
.storeSignedPreKey(signedPreKeyId
, record);
133 public boolean containsSignedPreKey(int signedPreKeyId
) {
134 return signedPreKeyStore
.containsSignedPreKey(signedPreKeyId
);
138 public void removeSignedPreKey(int signedPreKeyId
) {
139 signedPreKeyStore
.removeSignedPreKey(signedPreKeyId
);