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