]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/protocol/LegacyJsonSignedPreKeyStore.java
cdcba916fb0532c5f1cfb22b821376a4e61401e0
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / protocol / LegacyJsonSignedPreKeyStore.java
1 package org.asamk.signal.manager.storage.protocol;
2
3 import com.fasterxml.jackson.core.JsonParser;
4 import com.fasterxml.jackson.databind.DeserializationContext;
5 import com.fasterxml.jackson.databind.JsonDeserializer;
6 import com.fasterxml.jackson.databind.JsonNode;
7
8 import java.io.IOException;
9 import java.util.Base64;
10 import java.util.HashMap;
11 import java.util.Map;
12
13 public class LegacyJsonSignedPreKeyStore {
14
15 private final Map<Integer, byte[]> signedPreKeys;
16
17 private LegacyJsonSignedPreKeyStore(final Map<Integer, byte[]> signedPreKeys) {
18 this.signedPreKeys = signedPreKeys;
19 }
20
21 public Map<Integer, byte[]> getSignedPreKeys() {
22 return signedPreKeys;
23 }
24
25 public static class JsonSignedPreKeyStoreDeserializer extends JsonDeserializer<LegacyJsonSignedPreKeyStore> {
26
27 @Override
28 public LegacyJsonSignedPreKeyStore deserialize(
29 JsonParser jsonParser, DeserializationContext deserializationContext
30 ) throws IOException {
31 JsonNode node = jsonParser.getCodec().readTree(jsonParser);
32
33 var preKeyMap = new HashMap<Integer, byte[]>();
34 if (node.isArray()) {
35 for (var preKey : node) {
36 final var preKeyId = preKey.get("id").asInt();
37 final var preKeyRecord = Base64.getDecoder().decode(preKey.get("record").asText());
38 preKeyMap.put(preKeyId, preKeyRecord);
39 }
40 }
41
42 return new LegacyJsonSignedPreKeyStore(preKeyMap);
43 }
44 }
45 }