Search in sources :

Example 11 with ACI

use of org.whispersystems.signalservice.api.push.ACI in project Signal-Android by WhisperSystems.

the class LogSectionSystemInfo method getCensoredAci.

private static String getCensoredAci(@NonNull Context context) {
    ACI aci = SignalStore.account().getAci();
    if (aci != null) {
        String aciString = aci.toString();
        String lastTwo = aciString.substring(aciString.length() - 2);
        return "********-****-****-****-**********" + lastTwo;
    } else {
        return "N/A";
    }
}
Also used : ACI(org.whispersystems.signalservice.api.push.ACI)

Example 12 with ACI

use of org.whispersystems.signalservice.api.push.ACI in project Signal-Android by WhisperSystems.

the class SignalServiceAccountManager method getRegisteredUsersWithCdsh.

public Map<String, ACI> getRegisteredUsersWithCdsh(Set<String> e164numbers, String hexPublicKey, String hexCodeHash) throws IOException {
    CdshAuthResponse auth = pushServiceSocket.getCdshAuth();
    CdshService service = new CdshService(configuration, hexPublicKey, hexCodeHash);
    Single<ServiceResponse<Map<String, ACI>>> result = service.getRegisteredUsers(auth.getUsername(), auth.getPassword(), e164numbers);
    ServiceResponse<Map<String, ACI>> response;
    try {
        response = result.blockingGet();
    } catch (Exception e) {
        throw new RuntimeException("Unexpected exception when retrieving registered users!", e);
    }
    if (response.getResult().isPresent()) {
        return response.getResult().get();
    } else if (response.getApplicationError().isPresent()) {
        throw new IOException(response.getApplicationError().get());
    } else if (response.getExecutionError().isPresent()) {
        throw new IOException(response.getExecutionError().get());
    } else {
        throw new IOException("Missing result!");
    }
}
Also used : CdshService(org.whispersystems.signalservice.api.services.CdshService) ServiceResponse(org.whispersystems.signalservice.internal.ServiceResponse) ACI(org.whispersystems.signalservice.api.push.ACI) CdshAuthResponse(org.whispersystems.signalservice.internal.push.CdshAuthResponse) ByteString(com.google.protobuf.ByteString) IOException(java.io.IOException) Map(java.util.Map) HashMap(java.util.HashMap) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) NoContentException(org.whispersystems.signalservice.api.push.exceptions.NoContentException) InvalidKeyException(org.whispersystems.libsignal.InvalidKeyException) UnauthenticatedQuoteException(org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedQuoteException) PushNetworkException(org.whispersystems.signalservice.api.push.exceptions.PushNetworkException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) TimeoutException(java.util.concurrent.TimeoutException) NotFoundException(org.whispersystems.signalservice.api.push.exceptions.NotFoundException) NonSuccessfulResponseCodeException(org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException) InvalidCiphertextException(org.whispersystems.signalservice.api.crypto.InvalidCiphertextException) SignatureException(java.security.SignatureException) UnauthenticatedResponseException(org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException)

Example 13 with ACI

use of org.whispersystems.signalservice.api.push.ACI in project Signal-Android by WhisperSystems.

the class RotateSignedPreKeyJob method onRun.

@Override
public void onRun() throws Exception {
    if (!SignalStore.account().isRegistered() || SignalStore.account().getAci() == null || SignalStore.account().getPni() == null) {
        Log.w(TAG, "Not registered. Skipping.");
        return;
    }
    Log.i(TAG, "Rotating signed prekey...");
    ACI aci = SignalStore.account().getAci();
    PNI pni = SignalStore.account().getPni();
    if (aci == null) {
        Log.w(TAG, "ACI is unset!");
        return;
    }
    if (pni == null) {
        Log.w(TAG, "PNI is unset!");
        return;
    }
    rotate(ServiceIdType.ACI, ApplicationDependencies.getProtocolStore().aci(), SignalStore.account().aciPreKeys());
    rotate(ServiceIdType.PNI, ApplicationDependencies.getProtocolStore().pni(), SignalStore.account().pniPreKeys());
}
Also used : ACI(org.whispersystems.signalservice.api.push.ACI) PNI(org.whispersystems.signalservice.api.push.PNI)

Example 14 with ACI

use of org.whispersystems.signalservice.api.push.ACI in project Signal-Android by WhisperSystems.

the class ContactDiscoveryV3 method getDirectoryResult.

@WorkerThread
static DirectoryResult getDirectoryResult(@NonNull Set<String> databaseNumbers, @NonNull Set<String> systemNumbers) throws IOException {
    Set<String> allNumbers = SetUtil.union(databaseNumbers, systemNumbers);
    FuzzyPhoneNumberHelper.InputResult inputResult = FuzzyPhoneNumberHelper.generateInput(allNumbers, databaseNumbers);
    Set<String> sanitizedNumbers = sanitizeNumbers(inputResult.getNumbers());
    Set<String> ignoredNumbers = new HashSet<>();
    if (sanitizedNumbers.size() > MAX_NUMBERS) {
        Set<String> randomlySelected = randomlySelect(sanitizedNumbers, MAX_NUMBERS);
        ignoredNumbers = SetUtil.difference(sanitizedNumbers, randomlySelected);
        sanitizedNumbers = randomlySelected;
    }
    SignalServiceAccountManager accountManager = ApplicationDependencies.getSignalServiceAccountManager();
    try {
        Map<String, ACI> results = accountManager.getRegisteredUsersWithCdsh(sanitizedNumbers, BuildConfig.CDSH_PUBLIC_KEY, BuildConfig.CDSH_CODE_HASH);
        FuzzyPhoneNumberHelper.OutputResult outputResult = FuzzyPhoneNumberHelper.generateOutput(results, inputResult);
        return new DirectoryResult(outputResult.getNumbers(), outputResult.getRewrites(), ignoredNumbers);
    } catch (IOException e) {
        Log.w(TAG, "Attestation error.", e);
        throw new IOException(e);
    }
}
Also used : DirectoryResult(org.thoughtcrime.securesms.contacts.sync.DirectoryHelper.DirectoryResult) SignalServiceAccountManager(org.whispersystems.signalservice.api.SignalServiceAccountManager) ACI(org.whispersystems.signalservice.api.push.ACI) IOException(java.io.IOException) HashSet(java.util.HashSet) WorkerThread(androidx.annotation.WorkerThread)

Example 15 with ACI

use of org.whispersystems.signalservice.api.push.ACI in project Signal-Android by WhisperSystems.

the class ApplicationDependencyProvider method provideProtocolStore.

@Override
@NonNull
public SignalServiceDataStoreImpl provideProtocolStore() {
    ACI localAci = SignalStore.account().getAci();
    PNI localPni = SignalStore.account().getPni();
    if (localAci == null) {
        throw new IllegalStateException("No ACI set!");
    }
    if (localPni == null) {
        throw new IllegalStateException("No PNI set!");
    }
    if (!SignalStore.account().hasPniIdentityKey()) {
        SignalStore.account().generatePniIdentityKeyIfNecessary();
        CreateSignedPreKeyJob.enqueueIfNeeded();
    }
    SignalBaseIdentityKeyStore baseIdentityStore = new SignalBaseIdentityKeyStore(context);
    SignalServiceAccountDataStoreImpl aciStore = new SignalServiceAccountDataStoreImpl(context, new TextSecurePreKeyStore(localAci), new SignalIdentityKeyStore(baseIdentityStore, () -> SignalStore.account().getAciIdentityKey()), new TextSecureSessionStore(localAci), new SignalSenderKeyStore(context));
    SignalServiceAccountDataStoreImpl pniStore = new SignalServiceAccountDataStoreImpl(context, new TextSecurePreKeyStore(localPni), new SignalIdentityKeyStore(baseIdentityStore, () -> SignalStore.account().getPniIdentityKey()), new TextSecureSessionStore(localPni), new SignalSenderKeyStore(context));
    return new SignalServiceDataStoreImpl(context, aciStore, pniStore);
}
Also used : TextSecureSessionStore(org.thoughtcrime.securesms.crypto.storage.TextSecureSessionStore) TextSecurePreKeyStore(org.thoughtcrime.securesms.crypto.storage.TextSecurePreKeyStore) ACI(org.whispersystems.signalservice.api.push.ACI) SignalSenderKeyStore(org.thoughtcrime.securesms.crypto.storage.SignalSenderKeyStore) PNI(org.whispersystems.signalservice.api.push.PNI) SignalIdentityKeyStore(org.thoughtcrime.securesms.crypto.storage.SignalIdentityKeyStore) SignalBaseIdentityKeyStore(org.thoughtcrime.securesms.crypto.storage.SignalBaseIdentityKeyStore) SignalServiceAccountDataStoreImpl(org.thoughtcrime.securesms.crypto.storage.SignalServiceAccountDataStoreImpl) SignalServiceDataStoreImpl(org.thoughtcrime.securesms.crypto.storage.SignalServiceDataStoreImpl) NonNull(androidx.annotation.NonNull)

Aggregations

ACI (org.whispersystems.signalservice.api.push.ACI)32 Test (org.junit.Test)13 IOException (java.io.IOException)7 WorkerThread (androidx.annotation.WorkerThread)6 HashMap (java.util.HashMap)5 NonNull (androidx.annotation.NonNull)4 ByteString (com.google.protobuf.ByteString)4 ByteArrayInputStream (java.io.ByteArrayInputStream)4 DataInputStream (java.io.DataInputStream)4 Map (java.util.Map)4 PNI (org.whispersystems.signalservice.api.push.PNI)4 ServiceResponse (org.whispersystems.signalservice.internal.ServiceResponse)4 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)3 SignatureException (java.security.SignatureException)3 Collections (java.util.Collections)3 HashSet (java.util.HashSet)3 List (java.util.List)3 UUID (java.util.UUID)3 RecipientDatabase (org.thoughtcrime.securesms.database.RecipientDatabase)3 UnauthenticatedResponseException (org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException)3