+ public static Profile.UnidentifiedAccessMode getUnidentifiedAccessMode(
+ final SignalServiceProfile encryptedProfile, final ProfileCipher profileCipher
+ ) {
+ if (encryptedProfile.isUnrestrictedUnidentifiedAccess()) {
+ return Profile.UnidentifiedAccessMode.UNRESTRICTED;
+ }
+
+ if (encryptedProfile.getUnidentifiedAccess() != null && profileCipher != null) {
+ final var unidentifiedAccessVerifier = Base64.getDecoder().decode(encryptedProfile.getUnidentifiedAccess());
+ if (profileCipher.verifyUnidentifiedAccess(unidentifiedAccessVerifier)) {
+ return Profile.UnidentifiedAccessMode.ENABLED;
+ }
+ }
+
+ return Profile.UnidentifiedAccessMode.DISABLED;
+ }
+
+ public static HashSet<Profile.Capability> getCapabilities(final SignalServiceProfile encryptedProfile) {
+ final var capabilities = new HashSet<Profile.Capability>();
+ if (encryptedProfile.getCapabilities().isGv1Migration()) {
+ capabilities.add(Profile.Capability.gv1Migration);
+ }
+ if (encryptedProfile.getCapabilities().isGv2()) {
+ capabilities.add(Profile.Capability.gv2);
+ }
+ if (encryptedProfile.getCapabilities().isStorage()) {
+ capabilities.add(Profile.Capability.storage);
+ }
+ return capabilities;
+ }
+