kopia lustrzana https://github.com/ryukoposting/Signal-Android
Show an error for internal users for decryption failures.
rodzic
4677883838
commit
8299d49042
|
@ -18,6 +18,7 @@ import org.thoughtcrime.securesms.messages.MessageContentProcessor.MessageState;
|
||||||
import org.thoughtcrime.securesms.messages.MessageDecryptionUtil;
|
import org.thoughtcrime.securesms.messages.MessageDecryptionUtil;
|
||||||
import org.thoughtcrime.securesms.messages.MessageDecryptionUtil.DecryptionResult;
|
import org.thoughtcrime.securesms.messages.MessageDecryptionUtil.DecryptionResult;
|
||||||
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||||
|
import org.thoughtcrime.securesms.notifications.NotificationIds;
|
||||||
import org.thoughtcrime.securesms.transport.RetryLaterException;
|
import org.thoughtcrime.securesms.transport.RetryLaterException;
|
||||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||||
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
|
import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
|
||||||
|
@ -118,7 +119,7 @@ public final class PushDecryptMessageJob extends BaseJob {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void postMigrationNotification() {
|
private void postMigrationNotification() {
|
||||||
NotificationManagerCompat.from(context).notify(494949,
|
NotificationManagerCompat.from(context).notify(NotificationIds.LEGACY_SQLCIPHER_MIGRATION,
|
||||||
new NotificationCompat.Builder(context, NotificationChannels.getMessagesChannel(context))
|
new NotificationCompat.Builder(context, NotificationChannels.getMessagesChannel(context))
|
||||||
.setSmallIcon(R.drawable.ic_notification)
|
.setSmallIcon(R.drawable.ic_notification)
|
||||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
package org.thoughtcrime.securesms.messages;
|
package org.thoughtcrime.securesms.messages;
|
||||||
|
|
||||||
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.core.app.NotificationCompat;
|
||||||
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
|
|
||||||
import org.signal.core.util.logging.Log;
|
import org.signal.core.util.logging.Log;
|
||||||
import org.signal.libsignal.metadata.InvalidMetadataMessageException;
|
import org.signal.libsignal.metadata.InvalidMetadataMessageException;
|
||||||
|
@ -18,6 +22,7 @@ import org.signal.libsignal.metadata.ProtocolLegacyMessageException;
|
||||||
import org.signal.libsignal.metadata.ProtocolNoSessionException;
|
import org.signal.libsignal.metadata.ProtocolNoSessionException;
|
||||||
import org.signal.libsignal.metadata.ProtocolUntrustedIdentityException;
|
import org.signal.libsignal.metadata.ProtocolUntrustedIdentityException;
|
||||||
import org.signal.libsignal.metadata.SelfSendException;
|
import org.signal.libsignal.metadata.SelfSendException;
|
||||||
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.crypto.ReentrantSessionLock;
|
import org.thoughtcrime.securesms.crypto.ReentrantSessionLock;
|
||||||
import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil;
|
import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil;
|
||||||
import org.thoughtcrime.securesms.crypto.storage.SignalProtocolStoreImpl;
|
import org.thoughtcrime.securesms.crypto.storage.SignalProtocolStoreImpl;
|
||||||
|
@ -29,8 +34,11 @@ import org.thoughtcrime.securesms.jobmanager.Job;
|
||||||
import org.thoughtcrime.securesms.jobs.AutomaticSessionResetJob;
|
import org.thoughtcrime.securesms.jobs.AutomaticSessionResetJob;
|
||||||
import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob;
|
import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob;
|
||||||
import org.thoughtcrime.securesms.jobs.SendRetryReceiptJob;
|
import org.thoughtcrime.securesms.jobs.SendRetryReceiptJob;
|
||||||
|
import org.thoughtcrime.securesms.logsubmit.SubmitDebugLogActivity;
|
||||||
import org.thoughtcrime.securesms.messages.MessageContentProcessor.ExceptionMetadata;
|
import org.thoughtcrime.securesms.messages.MessageContentProcessor.ExceptionMetadata;
|
||||||
import org.thoughtcrime.securesms.messages.MessageContentProcessor.MessageState;
|
import org.thoughtcrime.securesms.messages.MessageContentProcessor.MessageState;
|
||||||
|
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||||
|
import org.thoughtcrime.securesms.notifications.NotificationIds;
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||||
import org.thoughtcrime.securesms.util.GroupUtil;
|
import org.thoughtcrime.securesms.util.GroupUtil;
|
||||||
|
@ -88,6 +96,7 @@ public final class MessageDecryptionUtil {
|
||||||
|
|
||||||
if (sender.supportsMessageRetries() && Recipient.self().supportsMessageRetries() && FeatureFlags.senderKey()) {
|
if (sender.supportsMessageRetries() && Recipient.self().supportsMessageRetries() && FeatureFlags.senderKey()) {
|
||||||
jobs.add(handleRetry(context, sender, envelope, e));
|
jobs.add(handleRetry(context, sender, envelope, e));
|
||||||
|
postInternalErrorNotification(context);
|
||||||
} else {
|
} else {
|
||||||
jobs.add(new AutomaticSessionResetJob(sender.getId(), e.getSenderDevice(), envelope.getTimestamp()));
|
jobs.add(new AutomaticSessionResetJob(sender.getId(), e.getSenderDevice(), envelope.getTimestamp()));
|
||||||
}
|
}
|
||||||
|
@ -199,6 +208,19 @@ public final class MessageDecryptionUtil {
|
||||||
return new ExceptionMetadata(sender, e.getSenderDevice());
|
return new ExceptionMetadata(sender, e.getSenderDevice());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void postInternalErrorNotification(@NonNull Context context) {
|
||||||
|
if (!FeatureFlags.internalUser()) return;
|
||||||
|
|
||||||
|
NotificationManagerCompat.from(context).notify(NotificationIds.INTERNAL_ERROR,
|
||||||
|
new NotificationCompat.Builder(context, NotificationChannels.FAILURES)
|
||||||
|
.setSmallIcon(R.drawable.ic_notification)
|
||||||
|
.setContentTitle(context.getString(R.string.MessageDecryptionUtil_failed_to_decrypt_message))
|
||||||
|
.setContentText(context.getString(R.string.MessageDecryptionUtil_tap_to_send_a_debug_log))
|
||||||
|
.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, SubmitDebugLogActivity.class), 0))
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class NoSenderException extends Exception {}
|
private static class NoSenderException extends Exception {}
|
||||||
|
|
||||||
public static class DecryptionResult {
|
public static class DecryptionResult {
|
||||||
|
|
|
@ -9,6 +9,8 @@ public final class NotificationIds {
|
||||||
public static final int SMS_IMPORT_COMPLETE = 31337;
|
public static final int SMS_IMPORT_COMPLETE = 31337;
|
||||||
public static final int PRE_REGISTRATION_SMS = 5050;
|
public static final int PRE_REGISTRATION_SMS = 5050;
|
||||||
public static final int THREAD = 50000;
|
public static final int THREAD = 50000;
|
||||||
|
public static final int INTERNAL_ERROR = 258069;
|
||||||
|
public static final int LEGACY_SQLCIPHER_MIGRATION = 494949;
|
||||||
public static final int USER_NOTIFICATION_MIGRATION = 525600;
|
public static final int USER_NOTIFICATION_MIGRATION = 525600;
|
||||||
public static final int DEVICE_TRANSFER = 625420;
|
public static final int DEVICE_TRANSFER = 625420;
|
||||||
|
|
||||||
|
|
|
@ -1008,6 +1008,10 @@
|
||||||
<string name="MediaRepository_all_media">All media</string>
|
<string name="MediaRepository_all_media">All media</string>
|
||||||
<string name="MediaRepository__camera">Camera</string>
|
<string name="MediaRepository__camera">Camera</string>
|
||||||
|
|
||||||
|
<!-- MessageDecryptionUtil -->
|
||||||
|
<string name="MessageDecryptionUtil_failed_to_decrypt_message">Failed to decrypt message</string>
|
||||||
|
<string name="MessageDecryptionUtil_tap_to_send_a_debug_log">Tap to send a debug log</string>
|
||||||
|
|
||||||
<!-- MessageRecord -->
|
<!-- MessageRecord -->
|
||||||
<string name="MessageRecord_unknown">Unknown</string>
|
<string name="MessageRecord_unknown">Unknown</string>
|
||||||
<string name="MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported">Received a message encrypted using an old version of Signal that is no longer supported. Please ask the sender to update to the most recent version and resend the message.</string>
|
<string name="MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported">Received a message encrypted using an old version of Signal that is no longer supported. Please ask the sender to update to the most recent version and resend the message.</string>
|
||||||
|
|
Ładowanie…
Reference in New Issue