]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/textsecure/JsonSignalProtocolStore.java
f440a709acd5c3de25030e4a8f9315db4dae33f0
[signal-cli] / src / main / java / org / asamk / textsecure / JsonSignalProtocolStore.java
1 package org.asamk.textsecure;
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 @Override
72 public boolean isTrustedIdentity(String name, IdentityKey identityKey) {
73 return identityKeyStore.isTrustedIdentity(name, identityKey);
74 }
75
76 @Override
77 public PreKeyRecord loadPreKey(int preKeyId) throws InvalidKeyIdException {
78 return preKeyStore.loadPreKey(preKeyId);
79 }
80
81 @Override
82 public void storePreKey(int preKeyId, PreKeyRecord record) {
83 preKeyStore.storePreKey(preKeyId, record);
84 }
85
86 @Override
87 public boolean containsPreKey(int preKeyId) {
88 return preKeyStore.containsPreKey(preKeyId);
89 }
90
91 @Override
92 public void removePreKey(int preKeyId) {
93 preKeyStore.removePreKey(preKeyId);
94 }
95
96 @Override
97 public SessionRecord loadSession(SignalProtocolAddress address) {
98 return sessionStore.loadSession(address);
99 }
100
101 @Override
102 public List<Integer> getSubDeviceSessions(String name) {
103 return sessionStore.getSubDeviceSessions(name);
104 }
105
106 @Override
107 public void storeSession(SignalProtocolAddress address, SessionRecord record) {
108 sessionStore.storeSession(address, record);
109 }
110
111 @Override
112 public boolean containsSession(SignalProtocolAddress address) {
113 return sessionStore.containsSession(address);
114 }
115
116 @Override
117 public void deleteSession(SignalProtocolAddress address) {
118 sessionStore.deleteSession(address);
119 }
120
121 @Override
122 public void deleteAllSessions(String name) {
123 sessionStore.deleteAllSessions(name);
124 }
125
126 @Override
127 public SignedPreKeyRecord loadSignedPreKey(int signedPreKeyId) throws InvalidKeyIdException {
128 return signedPreKeyStore.loadSignedPreKey(signedPreKeyId);
129 }
130
131 @Override
132 public List<SignedPreKeyRecord> loadSignedPreKeys() {
133 return signedPreKeyStore.loadSignedPreKeys();
134 }
135
136 @Override
137 public void storeSignedPreKey(int signedPreKeyId, SignedPreKeyRecord record) {
138 signedPreKeyStore.storeSignedPreKey(signedPreKeyId, record);
139 }
140
141 @Override
142 public boolean containsSignedPreKey(int signedPreKeyId) {
143 return signedPreKeyStore.containsSignedPreKey(signedPreKeyId);
144 }
145
146 @Override
147 public void removeSignedPreKey(int signedPreKeyId) {
148 signedPreKeyStore.removeSignedPreKey(signedPreKeyId);
149 }
150 }