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
;
10 import java
.io
.IOException
;
11 import java
.util
.List
;
13 public class JsonAxolotlStore
implements AxolotlStore
{
14 private final JsonPreKeyStore preKeyStore
;
15 private final JsonSessionStore sessionStore
;
16 private final JsonSignedPreKeyStore signedPreKeyStore
;
18 private final JsonIdentityKeyStore identityKeyStore
;
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"));
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
);
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());
42 public IdentityKeyPair
getIdentityKeyPair() {
43 return identityKeyStore
.getIdentityKeyPair();
47 public int getLocalRegistrationId() {
48 return identityKeyStore
.getLocalRegistrationId();
52 public void saveIdentity(String name
, IdentityKey identityKey
) {
53 identityKeyStore
.saveIdentity(name
, identityKey
);
57 public boolean isTrustedIdentity(String name
, IdentityKey identityKey
) {
58 return identityKeyStore
.isTrustedIdentity(name
, identityKey
);
62 public PreKeyRecord
loadPreKey(int preKeyId
) throws InvalidKeyIdException
{
63 return preKeyStore
.loadPreKey(preKeyId
);
67 public void storePreKey(int preKeyId
, PreKeyRecord
record) {
68 preKeyStore
.storePreKey(preKeyId
, record);
72 public boolean containsPreKey(int preKeyId
) {
73 return preKeyStore
.containsPreKey(preKeyId
);
77 public void removePreKey(int preKeyId
) {
78 preKeyStore
.removePreKey(preKeyId
);
82 public SessionRecord
loadSession(AxolotlAddress address
) {
83 return sessionStore
.loadSession(address
);
87 public List
<Integer
> getSubDeviceSessions(String name
) {
88 return sessionStore
.getSubDeviceSessions(name
);
92 public void storeSession(AxolotlAddress address
, SessionRecord
record) {
93 sessionStore
.storeSession(address
, record);
97 public boolean containsSession(AxolotlAddress address
) {
98 return sessionStore
.containsSession(address
);
102 public void deleteSession(AxolotlAddress address
) {
103 sessionStore
.deleteSession(address
);
107 public void deleteAllSessions(String name
) {
108 sessionStore
.deleteAllSessions(name
);
112 public SignedPreKeyRecord
loadSignedPreKey(int signedPreKeyId
) throws InvalidKeyIdException
{
113 return signedPreKeyStore
.loadSignedPreKey(signedPreKeyId
);
117 public List
<SignedPreKeyRecord
> loadSignedPreKeys() {
118 return signedPreKeyStore
.loadSignedPreKeys();
122 public void storeSignedPreKey(int signedPreKeyId
, SignedPreKeyRecord
record) {
123 signedPreKeyStore
.storeSignedPreKey(signedPreKeyId
, record);
127 public boolean containsSignedPreKey(int signedPreKeyId
) {
128 return signedPreKeyStore
.containsSignedPreKey(signedPreKeyId
);
132 public void removeSignedPreKey(int signedPreKeyId
) {
133 signedPreKeyStore
.removeSignedPreKey(signedPreKeyId
);