]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/manager/util/ProfileUtils.java
Convert gradle scripts to kotlin
[signal-cli] / src / main / java / org / asamk / signal / manager / util / ProfileUtils.java
1 package org.asamk.signal.manager.util;
2
3 import org.asamk.signal.manager.storage.profiles.SignalProfile;
4 import org.signal.zkgroup.profiles.ProfileKey;
5 import org.whispersystems.signalservice.api.crypto.InvalidCiphertextException;
6 import org.whispersystems.signalservice.api.crypto.ProfileCipher;
7 import org.whispersystems.signalservice.api.profiles.SignalServiceProfile;
8
9 import java.util.Base64;
10
11 public class ProfileUtils {
12
13 public static SignalProfile decryptProfile(
14 final ProfileKey profileKey, final SignalServiceProfile encryptedProfile
15 ) {
16 ProfileCipher profileCipher = new ProfileCipher(profileKey);
17 try {
18 String name;
19 try {
20 name = encryptedProfile.getName() == null
21 ? null
22 : new String(profileCipher.decryptName(Base64.getDecoder().decode(encryptedProfile.getName())));
23 } catch (IllegalArgumentException e) {
24 name = null;
25 }
26 String unidentifiedAccess;
27 try {
28 unidentifiedAccess = encryptedProfile.getUnidentifiedAccess() == null
29 || !profileCipher.verifyUnidentifiedAccess(Base64.getDecoder()
30 .decode(encryptedProfile.getUnidentifiedAccess()))
31 ? null
32 : encryptedProfile.getUnidentifiedAccess();
33 } catch (IllegalArgumentException e) {
34 unidentifiedAccess = null;
35 }
36 return new SignalProfile(encryptedProfile.getIdentityKey(),
37 name,
38 unidentifiedAccess,
39 encryptedProfile.isUnrestrictedUnidentifiedAccess(),
40 encryptedProfile.getCapabilities());
41 } catch (InvalidCiphertextException e) {
42 return null;
43 }
44 }
45 }