]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/JsonSignalProtocolStore.java
015707ae5be1c01e6c50e6786b282fadb0b91272
[signal-cli] / src / main / java / org / asamk / signal / JsonSignalProtocolStore.java
1 package org.asamk.signal;
2
3 import com.fasterxml.jackson.annotation.JsonProperty;
4 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
5 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
6 import org.whispersystems.libsignal.IdentityKey;
7 import org.whispersystems.libsignal.IdentityKeyPair;
8 import org.whispersystems.libsignal.InvalidKeyIdException;
9 import org.whispersystems.libsignal.SignalProtocolAddress;
10 import org.whispersystems.libsignal.state.PreKeyRecord;
11 import org.whispersystems.libsignal.state.SessionRecord;
12 import org.whispersystems.libsignal.state.SignalProtocolStore;
13 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
14
15 import java.util.List;
16
17 class JsonSignalProtocolStore implements SignalProtocolStore {
18
19 @JsonProperty("preKeys")
20 @JsonDeserialize(using = JsonPreKeyStore.JsonPreKeyStoreDeserializer.class)
21 @JsonSerialize(using = JsonPreKeyStore.JsonPreKeyStoreSerializer.class)
22 protected JsonPreKeyStore preKeyStore;
23
24 @JsonProperty("sessionStore")
25 @JsonDeserialize(using = JsonSessionStore.JsonSessionStoreDeserializer.class)
26 @JsonSerialize(using = JsonSessionStore.JsonPreKeyStoreSerializer.class)
27 protected JsonSessionStore sessionStore;
28
29 @JsonProperty("signedPreKeyStore")
30 @JsonDeserialize(using = JsonSignedPreKeyStore.JsonSignedPreKeyStoreDeserializer.class)
31 @JsonSerialize(using = JsonSignedPreKeyStore.JsonSignedPreKeyStoreSerializer.class)
32 protected JsonSignedPreKeyStore signedPreKeyStore;
33
34 @JsonProperty("identityKeyStore")
35 @JsonDeserialize(using = JsonIdentityKeyStore.JsonIdentityKeyStoreDeserializer.class)
36 @JsonSerialize(using = JsonIdentityKeyStore.JsonIdentityKeyStoreSerializer.class)
37 protected JsonIdentityKeyStore identityKeyStore;
38
39 public JsonSignalProtocolStore() {
40 }
41
42 public JsonSignalProtocolStore(JsonPreKeyStore preKeyStore, JsonSessionStore sessionStore, JsonSignedPreKeyStore signedPreKeyStore, JsonIdentityKeyStore identityKeyStore) {
43 this.preKeyStore = preKeyStore;
44 this.sessionStore = sessionStore;
45 this.signedPreKeyStore = signedPreKeyStore;
46 this.identityKeyStore = identityKeyStore;
47 }
48
49 public JsonSignalProtocolStore(IdentityKeyPair identityKeyPair, int registrationId) {
50 preKeyStore = new JsonPreKeyStore();
51 sessionStore = new JsonSessionStore();
52 signedPreKeyStore = new JsonSignedPreKeyStore();
53 this.identityKeyStore = new JsonIdentityKeyStore(identityKeyPair, registrationId);
54 }
55
56 @Override
57 public IdentityKeyPair getIdentityKeyPair() {
58 return identityKeyStore.getIdentityKeyPair();
59 }
60
61 @Override
62 public int getLocalRegistrationId() {
63 return identityKeyStore.getLocalRegistrationId();
64 }
65
66 @Override
67 public void saveIdentity(String name, IdentityKey identityKey) {
68 identityKeyStore.saveIdentity(name, identityKey);
69 }
70
71 public void saveIdentity(String name, IdentityKey identityKey, TrustLevel trustLevel) {
72 identityKeyStore.saveIdentity(name, identityKey, trustLevel, null);
73 }
74
75 @Override
76 public boolean isTrustedIdentity(String name, IdentityKey identityKey) {
77 return identityKeyStore.isTrustedIdentity(name, identityKey);
78 }
79
80 @Override
81 public PreKeyRecord loadPreKey(int preKeyId) throws InvalidKeyIdException {
82 return preKeyStore.loadPreKey(preKeyId);
83 }
84
85 @Override
86 public void storePreKey(int preKeyId, PreKeyRecord record) {
87 preKeyStore.storePreKey(preKeyId, record);
88 }
89
90 @Override
91 public boolean containsPreKey(int preKeyId) {
92 return preKeyStore.containsPreKey(preKeyId);
93 }
94
95 @Override
96 public void removePreKey(int preKeyId) {
97 preKeyStore.removePreKey(preKeyId);
98 }
99
100 @Override
101 public SessionRecord loadSession(SignalProtocolAddress address) {
102 return sessionStore.loadSession(address);
103 }
104
105 @Override
106 public List<Integer> getSubDeviceSessions(String name) {
107 return sessionStore.getSubDeviceSessions(name);
108 }
109
110 @Override
111 public void storeSession(SignalProtocolAddress address, SessionRecord record) {
112 sessionStore.storeSession(address, record);
113 }
114
115 @Override
116 public boolean containsSession(SignalProtocolAddress address) {
117 return sessionStore.containsSession(address);
118 }
119
120 @Override
121 public void deleteSession(SignalProtocolAddress address) {
122 sessionStore.deleteSession(address);
123 }
124
125 @Override
126 public void deleteAllSessions(String name) {
127 sessionStore.deleteAllSessions(name);
128 }
129
130 @Override
131 public SignedPreKeyRecord loadSignedPreKey(int signedPreKeyId) throws InvalidKeyIdException {
132 return signedPreKeyStore.loadSignedPreKey(signedPreKeyId);
133 }
134
135 @Override
136 public List<SignedPreKeyRecord> loadSignedPreKeys() {
137 return signedPreKeyStore.loadSignedPreKeys();
138 }
139
140 @Override
141 public void storeSignedPreKey(int signedPreKeyId, SignedPreKeyRecord record) {
142 signedPreKeyStore.storeSignedPreKey(signedPreKeyId, record);
143 }
144
145 @Override
146 public boolean containsSignedPreKey(int signedPreKeyId) {
147 return signedPreKeyStore.containsSignedPreKey(signedPreKeyId);
148 }
149
150 @Override
151 public void removeSignedPreKey(int signedPreKeyId) {
152 signedPreKeyStore.removeSignedPreKey(signedPreKeyId);
153 }
154 }