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