]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/protocol/SignalProtocolStore.java
5e504ec6f5183ebf7febc069c5a41748a4548430
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / protocol / SignalProtocolStore.java
1 package org.asamk.signal.manager.storage.protocol;
2
3 import org.whispersystems.libsignal.IdentityKey;
4 import org.whispersystems.libsignal.IdentityKeyPair;
5 import org.whispersystems.libsignal.InvalidKeyIdException;
6 import org.whispersystems.libsignal.NoSessionException;
7 import org.whispersystems.libsignal.SignalProtocolAddress;
8 import org.whispersystems.libsignal.groups.state.SenderKeyRecord;
9 import org.whispersystems.libsignal.state.IdentityKeyStore;
10 import org.whispersystems.libsignal.state.PreKeyRecord;
11 import org.whispersystems.libsignal.state.PreKeyStore;
12 import org.whispersystems.libsignal.state.SessionRecord;
13 import org.whispersystems.libsignal.state.SignedPreKeyRecord;
14 import org.whispersystems.libsignal.state.SignedPreKeyStore;
15 import org.whispersystems.signalservice.api.SignalServiceProtocolStore;
16 import org.whispersystems.signalservice.api.SignalServiceSessionStore;
17 import org.whispersystems.signalservice.api.push.DistributionId;
18
19 import java.util.Collection;
20 import java.util.List;
21 import java.util.Set;
22 import java.util.UUID;
23
24 public class SignalProtocolStore implements SignalServiceProtocolStore {
25
26 private final PreKeyStore preKeyStore;
27 private final SignedPreKeyStore signedPreKeyStore;
28 private final SignalServiceSessionStore sessionStore;
29 private final IdentityKeyStore identityKeyStore;
30
31 public SignalProtocolStore(
32 final PreKeyStore preKeyStore,
33 final SignedPreKeyStore signedPreKeyStore,
34 final SignalServiceSessionStore sessionStore,
35 final IdentityKeyStore identityKeyStore
36 ) {
37 this.preKeyStore = preKeyStore;
38 this.signedPreKeyStore = signedPreKeyStore;
39 this.sessionStore = sessionStore;
40 this.identityKeyStore = identityKeyStore;
41 }
42
43 @Override
44 public IdentityKeyPair getIdentityKeyPair() {
45 return identityKeyStore.getIdentityKeyPair();
46 }
47
48 @Override
49 public int getLocalRegistrationId() {
50 return identityKeyStore.getLocalRegistrationId();
51 }
52
53 @Override
54 public boolean saveIdentity(SignalProtocolAddress address, IdentityKey identityKey) {
55 return identityKeyStore.saveIdentity(address, identityKey);
56 }
57
58 @Override
59 public boolean isTrustedIdentity(SignalProtocolAddress address, IdentityKey identityKey, Direction direction) {
60 return identityKeyStore.isTrustedIdentity(address, identityKey, direction);
61 }
62
63 @Override
64 public IdentityKey getIdentity(SignalProtocolAddress address) {
65 return identityKeyStore.getIdentity(address);
66 }
67
68 @Override
69 public PreKeyRecord loadPreKey(int preKeyId) throws InvalidKeyIdException {
70 return preKeyStore.loadPreKey(preKeyId);
71 }
72
73 @Override
74 public void storePreKey(int preKeyId, PreKeyRecord record) {
75 preKeyStore.storePreKey(preKeyId, record);
76 }
77
78 @Override
79 public boolean containsPreKey(int preKeyId) {
80 return preKeyStore.containsPreKey(preKeyId);
81 }
82
83 @Override
84 public void removePreKey(int preKeyId) {
85 preKeyStore.removePreKey(preKeyId);
86 }
87
88 @Override
89 public SessionRecord loadSession(SignalProtocolAddress address) {
90 return sessionStore.loadSession(address);
91 }
92
93 @Override
94 public List<SessionRecord> loadExistingSessions(final List<SignalProtocolAddress> addresses) throws NoSessionException {
95 return sessionStore.loadExistingSessions(addresses);
96 }
97
98 @Override
99 public List<Integer> getSubDeviceSessions(String name) {
100 return sessionStore.getSubDeviceSessions(name);
101 }
102
103 @Override
104 public void storeSession(SignalProtocolAddress address, SessionRecord record) {
105 sessionStore.storeSession(address, record);
106 }
107
108 @Override
109 public boolean containsSession(SignalProtocolAddress address) {
110 return sessionStore.containsSession(address);
111 }
112
113 @Override
114 public void deleteSession(SignalProtocolAddress address) {
115 sessionStore.deleteSession(address);
116 }
117
118 @Override
119 public void deleteAllSessions(String name) {
120 sessionStore.deleteAllSessions(name);
121 }
122
123 @Override
124 public void archiveSession(final SignalProtocolAddress address) {
125 sessionStore.archiveSession(address);
126 }
127
128 @Override
129 public SignedPreKeyRecord loadSignedPreKey(int signedPreKeyId) throws InvalidKeyIdException {
130 return signedPreKeyStore.loadSignedPreKey(signedPreKeyId);
131 }
132
133 @Override
134 public List<SignedPreKeyRecord> loadSignedPreKeys() {
135 return signedPreKeyStore.loadSignedPreKeys();
136 }
137
138 @Override
139 public void storeSignedPreKey(int signedPreKeyId, SignedPreKeyRecord record) {
140 signedPreKeyStore.storeSignedPreKey(signedPreKeyId, record);
141 }
142
143 @Override
144 public boolean containsSignedPreKey(int signedPreKeyId) {
145 return signedPreKeyStore.containsSignedPreKey(signedPreKeyId);
146 }
147
148 @Override
149 public void removeSignedPreKey(int signedPreKeyId) {
150 signedPreKeyStore.removeSignedPreKey(signedPreKeyId);
151 }
152
153 @Override
154 public void storeSenderKey(
155 final SignalProtocolAddress sender, final UUID distributionId, final SenderKeyRecord record
156 ) {
157 // TODO
158 }
159
160 @Override
161 public SenderKeyRecord loadSenderKey(final SignalProtocolAddress sender, final UUID distributionId) {
162 // TODO
163 return null;
164 }
165
166 @Override
167 public Set<SignalProtocolAddress> getSenderKeySharedWith(final DistributionId distributionId) {
168 // TODO
169 return null;
170 }
171
172 @Override
173 public void markSenderKeySharedWith(
174 final DistributionId distributionId, final Collection<SignalProtocolAddress> addresses
175 ) {
176 // TODO
177 }
178
179 @Override
180 public void clearSenderKeySharedWith(
181 final DistributionId distributionId, final Collection<SignalProtocolAddress> addresses
182 ) {
183 // TODO
184 }
185 }