Add additional logging to dialog.

This commit is contained in:
Cody Henthorne
2021-06-10 16:06:32 -04:00
committed by GitHub
parent 6d7e09fec1
commit 881ab90982
6 changed files with 35 additions and 6 deletions

View File

@@ -1474,6 +1474,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
@Override
public void onSendAnywayAfterSafetyNumberChange(@NonNull List<RecipientId> changedRecipients) {
Log.d(TAG, "onSendAnywayAfterSafetyNumberChange");
initializeIdentityRecords().addListener(new AssertedSuccessListener<Boolean>() {
@Override
public void onSuccess(Boolean result) {
@@ -1484,6 +1485,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
@Override
public void onMessageResentAfterSafetyNumberChange() {
Log.d(TAG, "onMessageResentAfterSafetyNumberChange");
initializeIdentityRecords().addListener(new AssertedSuccessListener<Boolean>() {
@Override
public void onSuccess(Boolean result) { }

View File

@@ -35,4 +35,9 @@ final class ChangedRecipient {
boolean isVerified() {
return record.getVerifiedStatus() == IdentityDatabase.VerifiedStatus.VERIFIED;
}
@Override
public String toString() {
return "ChangedRecipient{" + "recipient=" + recipient.getId() + ", record=" + record.getIdentityKey().hashCode() + '}';
}
}

View File

@@ -24,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.annimon.stream.Stream;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.VerifyIdentityActivity;
import org.thoughtcrime.securesms.database.IdentityDatabase;
@@ -36,6 +37,8 @@ import java.util.List;
public final class SafetyNumberChangeDialog extends DialogFragment implements SafetyNumberChangeAdapter.Callbacks {
private static final String TAG = Log.tag(SafetyNumberChangeDialog.class);
public static final String SAFETY_NUMBER_DIALOG = "SAFETY_NUMBER";
private static final String RECIPIENT_IDS_EXTRA = "recipient_ids";
@@ -191,6 +194,8 @@ public final class SafetyNumberChangeDialog extends DialogFragment implements Sa
}
private void handleSendAnyway(DialogInterface dialogInterface, int which) {
Log.d(TAG, "handleSendAnyway");
Activity activity = getActivity();
Callback callback;
if (activity instanceof Callback) {
@@ -207,9 +212,11 @@ public final class SafetyNumberChangeDialog extends DialogFragment implements Sa
if (callback != null) {
switch (result.getResult()) {
case TRUST_AND_VERIFY:
Log.d(TAG, "Trust and verify");
callback.onSendAnywayAfterSafetyNumberChange(result.getChangedRecipients());
break;
case TRUST_VERIFY_AND_RESEND:
Log.d(TAG, "Trust, verify, and resent");
callback.onMessageResentAfterSafetyNumberChange();
break;
}

View File

@@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.sms.MessageSender;
import org.thoughtcrime.securesms.util.Util;
import org.whispersystems.libsignal.IdentityKey;
import org.whispersystems.libsignal.SignalProtocolAddress;
import org.whispersystems.signalservice.api.SignalSessionLock;
@@ -42,12 +43,14 @@ final class SafetyNumberChangeRepository {
}
@NonNull LiveData<TrustAndVerifyResult> trustOrVerifyChangedRecipients(@NonNull List<ChangedRecipient> changedRecipients) {
Log.d(TAG, "Trust or verify changed recipients for: " + Util.join(changedRecipients, ","));
MutableLiveData<TrustAndVerifyResult> liveData = new MutableLiveData<>();
SignalExecutors.BOUNDED.execute(() -> liveData.postValue(trustOrVerifyChangedRecipientsInternal(changedRecipients)));
return liveData;
}
@NonNull LiveData<TrustAndVerifyResult> trustOrVerifyChangedRecipientsAndResend(@NonNull List<ChangedRecipient> changedRecipients, @NonNull MessageRecord messageRecord) {
Log.d(TAG, "Trust or verify changed recipients and resend message: " + messageRecord.getId() + " for: " + Util.join(changedRecipients, ","));
MutableLiveData<TrustAndVerifyResult> liveData = new MutableLiveData<>();
SignalExecutors.BOUNDED.execute(() -> liveData.postValue(trustOrVerifyChangedRecipientsAndResendInternal(changedRecipients, messageRecord)));
return liveData;
@@ -66,6 +69,8 @@ final class SafetyNumberChangeRepository {
.map(record -> new ChangedRecipient(Recipient.resolved(record.getRecipientId()), record))
.toList();
Log.d(TAG, "Safety number change state, message: " + (messageRecord != null ? messageRecord.getId() : "null") + " records: " + Util.join(changedRecipients, ","));
return new SafetyNumberChangeState(changedRecipients, messageRecord);
}
@@ -95,10 +100,12 @@ final class SafetyNumberChangeRepository {
IdentityRecord identityRecord = changedRecipient.getIdentityRecord();
if (changedRecipient.isUnverified()) {
Log.d(TAG, "Setting " + identityRecord.getRecipientId() + " as verified");
identityDatabase.setVerified(identityRecord.getRecipientId(),
identityRecord.getIdentityKey(),
IdentityDatabase.VerifiedStatus.DEFAULT);
} else {
Log.d(TAG, "Setting " + identityRecord.getRecipientId() + " as approved");
identityDatabase.setApproval(identityRecord.getRecipientId(), true);
}
}
@@ -110,11 +117,17 @@ final class SafetyNumberChangeRepository {
@WorkerThread
private TrustAndVerifyResult trustOrVerifyChangedRecipientsAndResendInternal(@NonNull List<ChangedRecipient> changedRecipients,
@NonNull MessageRecord messageRecord) {
if (changedRecipients.isEmpty()) {
Log.d(TAG, "No changed recipients to process, will still process message record");
}
try(SignalSessionLock.Lock unused = DatabaseSessionLock.INSTANCE.acquire()) {
for (ChangedRecipient changedRecipient : changedRecipients) {
SignalProtocolAddress mismatchAddress = new SignalProtocolAddress(changedRecipient.getRecipient().requireServiceId(), 1);
TextSecureIdentityKeyStore identityKeyStore = new TextSecureIdentityKeyStore(context);
identityKeyStore.saveIdentity(mismatchAddress, changedRecipient.getIdentityRecord().getIdentityKey(), true);
Log.d(TAG, "Saving identity for: " + changedRecipient.getRecipient().getId() + " " + changedRecipient.getIdentityRecord().getIdentityKey().hashCode());
boolean result = identityKeyStore.saveIdentity(mismatchAddress, changedRecipient.getIdentityRecord().getIdentityKey(), true);
Log.d(TAG, "Saving identity result: " + result);
}
}
@@ -127,6 +140,7 @@ final class SafetyNumberChangeRepository {
@WorkerThread
private void processOutgoingMessageRecord(@NonNull List<ChangedRecipient> changedRecipients, @NonNull MessageRecord messageRecord) {
Log.d(TAG, "processOutgoingMessageRecord");
MessageDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context);
MessageDatabase mmsDatabase = DatabaseFactory.getMmsDatabase(context);

View File

@@ -3,14 +3,13 @@ package org.thoughtcrime.securesms.crypto.storage;
import android.content.Context;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.crypto.DatabaseSessionLock;
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil;
import org.thoughtcrime.securesms.crypto.SessionUtil;
import org.thoughtcrime.securesms.crypto.DatabaseSessionLock;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.IdentityDatabase;
import org.thoughtcrime.securesms.database.IdentityDatabase.IdentityRecord;
import org.thoughtcrime.securesms.database.IdentityDatabase.VerifiedStatus;
import org.thoughtcrime.securesms.database.SenderKeySharedDatabase;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.IdentityUtil;
@@ -59,6 +58,8 @@ public class TextSecureIdentityKeyStore implements IdentityKeyStore {
return false;
}
Log.i(TAG, "Existing: " + identityRecord.get().getIdentityKey().hashCode() + " New: " + identityKey.hashCode());
if (!identityRecord.get().getIdentityKey().equals(identityKey)) {
Log.i(TAG, "Replacing existing identity...");
VerifiedStatus verifiedStatus;
@@ -145,7 +146,7 @@ public class TextSecureIdentityKeyStore implements IdentityKeyStore {
}
if (!identityKey.equals(identityRecord.get().getIdentityKey())) {
Log.w(TAG, "Identity keys don't match...");
Log.w(TAG, "Identity keys don't match... service: " + identityRecord.get().getIdentityKey().hashCode() + " database: " + identityRecord.get().getIdentityKey().hashCode());
return false;
}

View File

@@ -80,11 +80,11 @@ public class Util {
return join(Arrays.asList(list), delimiter);
}
public static String join(Collection<String> list, String delimiter) {
public static <T> String join(Collection<T> list, String delimiter) {
StringBuilder result = new StringBuilder();
int i = 0;
for (String item : list) {
for (T item : list) {
result.append(item);
if (++i < list.size())