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