Simplify service id checks in MessageReceiver

This commit is contained in:
Fedor Indutny
2025-04-24 11:24:52 -07:00
committed by GitHub
parent 5a191b2e49
commit bebdab211e
2 changed files with 12 additions and 11 deletions
+3 -10
View File
@@ -1248,16 +1248,9 @@ export default class MessageReceiver
const task = async (): Promise<DecryptResult> => {
const { destinationServiceId } = envelope;
const serviceIdKind =
this.#storage.user.getOurServiceIdKind(destinationServiceId);
if (serviceIdKind === ServiceIdKind.Unknown) {
log.warn(
'MessageReceiver.decryptAndCacheBatch: ' +
`Rejecting envelope ${getEnvelopeId(envelope)}, ` +
`unknown serviceId: ${destinationServiceId}`
);
return { plaintext: undefined, envelope: undefined };
}
const serviceIdKind = isPniString(destinationServiceId)
? ServiceIdKind.PNI
: ServiceIdKind.ACI;
const unsealedEnvelope = await this.#unsealEnvelope(
stores,
+9 -1
View File
@@ -10,6 +10,15 @@ export async function checkOurPniIdentityKey(): Promise<void> {
strictAssert(server, 'WebAPI not ready');
const ourPni = window.storage.user.getCheckedPni();
const { pni: remotePni } = await server.whoami();
if (remotePni !== ourPni) {
log.warn(
`checkOurPniIdentityKey: remote pni mismatch, ${remotePni} != ${ourPni}`
);
window.Whisper.events.trigger('unlinkAndDisconnect');
return;
}
const localKeyPair = await window.storage.protocol.getIdentityKeyPair(ourPni);
if (!localKeyPair) {
log.warn(
@@ -20,7 +29,6 @@ export async function checkOurPniIdentityKey(): Promise<void> {
}
const { identityKey: remoteKey } = await server.getKeysForServiceId(ourPni);
if (!constantTimeEqual(localKeyPair.publicKey.serialize(), remoteKey)) {
log.warn(
`checkOurPniIdentityKey: local/remote key mismatch for ${ourPni}, unlinking`