mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-09-20 08:45:50 +01:00
Use new zkgroup credential for numberless accounts.
This commit is contained in:
committed by
Alex Hart
parent
01fae0aaf9
commit
483e7d24bd
@@ -11,6 +11,7 @@ import org.signal.libsignal.zkgroup.calllinks.CallLinkAuthCredentialPresentation
|
||||
import org.signal.libsignal.zkgroup.calllinks.CallLinkAuthCredentialResponse;
|
||||
import org.signal.libsignal.zkgroup.calllinks.CallLinkSecretParams;
|
||||
import org.signal.libsignal.zkgroup.groups.GroupSecretParams;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.whispersystems.signalservice.api.groupsv2.GroupsV2Api;
|
||||
import org.whispersystems.signalservice.api.groupsv2.GroupsV2AuthorizationString;
|
||||
@@ -151,7 +152,7 @@ public class GroupsV2Authorization {
|
||||
throw new NoCredentialForRedemptionTimeException();
|
||||
}
|
||||
|
||||
return groupsV2Api.getGroupsV2AuthorizationString(serviceIds.getAci(), serviceIds.requirePni(), todaySeconds, groupSecretParams, authCredentialWithPniResponse);
|
||||
return groupsV2Api.getGroupsV2AuthorizationString(serviceIds.getAci(), serviceIds.getPni(), SignalStore.account().getAuthCredentialSalt(), todaySeconds, groupSecretParams, authCredentialWithPniResponse);
|
||||
}
|
||||
|
||||
public interface ValueCache {
|
||||
|
||||
+14
-3
@@ -39,6 +39,7 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import okio.ByteString;
|
||||
|
||||
@@ -63,16 +64,26 @@ public class GroupsV2Api {
|
||||
|
||||
/**
|
||||
* Create an auth token from a credential response.
|
||||
*
|
||||
* @param authCredentialSalt required when the account has no PNI, provided by the server at registration/link time
|
||||
*/
|
||||
public GroupsV2AuthorizationString getGroupsV2AuthorizationString(ACI aci,
|
||||
PNI pni,
|
||||
@Nullable PNI pni,
|
||||
@Nullable byte[] authCredentialSalt,
|
||||
long redemptionTimeSeconds,
|
||||
GroupSecretParams groupSecretParams,
|
||||
AuthCredentialWithPniResponse authCredentialWithPniResponse)
|
||||
throws VerificationFailedException
|
||||
{
|
||||
ClientZkAuthOperations authOperations = groupsOperations.getAuthOperations();
|
||||
AuthCredentialWithPni authCredentialWithPni = authOperations.receiveAuthCredentialWithPniAsServiceId(aci.getLibSignalAci(), pni.getLibSignalPni(), redemptionTimeSeconds, authCredentialWithPniResponse);
|
||||
ClientZkAuthOperations authOperations = groupsOperations.getAuthOperations();
|
||||
|
||||
AuthCredentialWithPni authCredentialWithPni;
|
||||
if (pni != null) {
|
||||
authCredentialWithPni = authOperations.receiveAuthCredentialWithPniAsServiceId(aci.getLibSignalAci(), pni.getLibSignalPni(), redemptionTimeSeconds, authCredentialWithPniResponse);
|
||||
} else {
|
||||
authCredentialWithPni = authOperations.receiveAuthCredentialWithoutPni(aci.getLibSignalAci(), Objects.requireNonNull(authCredentialSalt, "Missing auth credential salt for account without a PNI"), redemptionTimeSeconds, authCredentialWithPniResponse);
|
||||
}
|
||||
|
||||
AuthCredentialPresentation authCredentialPresentation = authOperations.createAuthCredentialPresentation(new SecureRandom(), groupSecretParams, authCredentialWithPni);
|
||||
|
||||
return new GroupsV2AuthorizationString(groupSecretParams, authCredentialPresentation);
|
||||
|
||||
Reference in New Issue
Block a user