]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/storage/protocol/JsonSignalProtocolStore.java
885fdfb3d3e4959a07c078019cc19094d797c549
[signal-cli] / src / main / java / org / asamk / signal / storage / protocol / JsonSignalProtocolStore.java
1 package org.asamk.signal.storage.protocol;
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.asamk.signal.TrustLevel;
7 import org.whispersystems.libsignal.IdentityKey;
8 import org.whispersystems.libsignal.IdentityKeyPair;
9 import org.whispersystems.libsignal.InvalidKeyIdException;
10 import org.whispersystems.libsignal.SignalProtocolAddress;
11 import org.whispersystems.libsignal.state.*;
12
13 import java.util.List;
14 import java.util.Map;
15
16 public class JsonSignalProtocolStore implements SignalProtocolStore {
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 JsonSignalProtocolStore() {
39 }
40
41 public JsonSignalProtocolStore(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 JsonSignalProtocolStore(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 boolean saveIdentity(SignalProtocolAddress address, IdentityKey identityKey) {
67 return identityKeyStore.saveIdentity(address, identityKey);
68 }
69
70 public void saveIdentity(String name, IdentityKey identityKey, TrustLevel trustLevel) {
71 identityKeyStore.saveIdentity(name, identityKey, trustLevel, null);
72 }
73
74 public Map<String, List<JsonIdentityKeyStore.Identity>> getIdentities() {
75 return identityKeyStore.getIdentities();
76 }
77
78 public List<JsonIdentityKeyStore.Identity> getIdentities(String name) {
79 return identityKeyStore.getIdentities(name);
80 }
81
82 @Override
83 public boolean isTrustedIdentity(SignalProtocolAddress address, IdentityKey identityKey, Direction direction) {
84 return identityKeyStore.isTrustedIdentity(address, identityKey, direction);
85 }
86
87 @Override
88 public PreKeyRecord loadPreKey(int preKeyId) throws InvalidKeyIdException {
89 return preKeyStore.loadPreKey(preKeyId);
90 }
91
92 @Override
93 public void storePreKey(int preKeyId, PreKeyRecord record) {
94 preKeyStore.storePreKey(preKeyId, record);
95 }
96
97 @Override
98 public boolean containsPreKey(int preKeyId) {
99 return preKeyStore.containsPreKey(preKeyId);
100 }
101
102 @Override
103 public void removePreKey(int preKeyId) {
104 preKeyStore.removePreKey(preKeyId);
105 }
106
107 @Override
108 public SessionRecord loadSession(SignalProtocolAddress address) {
109 return sessionStore.loadSession(address);
110 }
111
112 @Override
113 public List<Integer> getSubDeviceSessions(String name) {
114 return sessionStore.getSubDeviceSessions(name);
115 }
116
117 @Override
118 public void storeSession(SignalProtocolAddress address, SessionRecord record) {
119 sessionStore.storeSession(address, record);
120 }
121
122 @Override
123 public boolean containsSession(SignalProtocolAddress address) {
124 return sessionStore.containsSession(address);
125 }
126
127 @Override
128 public void deleteSession(SignalProtocolAddress address) {
129 sessionStore.deleteSession(address);
130 }
131
132 @Override
133 public void deleteAllSessions(String name) {
134 sessionStore.deleteAllSessions(name);
135 }
136
137 @Override
138 public SignedPreKeyRecord loadSignedPreKey(int signedPreKeyId) throws InvalidKeyIdException {
139 return signedPreKeyStore.loadSignedPreKey(signedPreKeyId);
140 }
141
142 @Override
143 public List<SignedPreKeyRecord> loadSignedPreKeys() {
144 return signedPreKeyStore.loadSignedPreKeys();
145 }
146
147 @Override
148 public void storeSignedPreKey(int signedPreKeyId, SignedPreKeyRecord record) {
149 signedPreKeyStore.storeSignedPreKey(signedPreKeyId, record);
150 }
151
152 @Override
153 public boolean containsSignedPreKey(int signedPreKeyId) {
154 return signedPreKeyStore.containsSignedPreKey(signedPreKeyId);
155 }
156
157 @Override
158 public void removeSignedPreKey(int signedPreKeyId) {
159 signedPreKeyStore.removeSignedPreKey(signedPreKeyId);
160 }
161 }