Remove support for legacyMessage

This commit is contained in:
Scott Nonnenberg 2022-03-30 20:07:55 -07:00 committed by GitHub
parent 97b03d8803
commit 99687a4b5b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 33 deletions

View File

@ -26,9 +26,9 @@ message Envelope {
optional string source = 2; optional string source = 2;
optional string sourceUuid = 11; optional string sourceUuid = 11;
optional uint32 sourceDevice = 7; optional uint32 sourceDevice = 7;
optional string relay = 3; // reserved 3; // formerly optional string relay = 3;
optional uint64 timestamp = 5; optional uint64 timestamp = 5;
optional bytes legacyMessage = 6; // Contains an encrypted DataMessage // reserved 6; // formerly optional bytes legacyMessage = 6;
optional bytes content = 8; // Contains an encrypted Content optional bytes content = 8; // Contains an encrypted Content
optional string serverGuid = 9; optional string serverGuid = 9;
optional uint64 serverTimestamp = 10; optional uint64 serverTimestamp = 10;

View File

@ -313,7 +313,6 @@ export default class MessageReceiver
) )
: ourUuid, : ourUuid,
timestamp: decoded.timestamp?.toNumber(), timestamp: decoded.timestamp?.toNumber(),
legacyMessage: dropNull(decoded.legacyMessage),
content: dropNull(decoded.content), content: dropNull(decoded.content),
serverGuid: decoded.serverGuid, serverGuid: decoded.serverGuid,
serverTimestamp, serverTimestamp,
@ -706,7 +705,6 @@ export default class MessageReceiver
decoded.destinationUuid || item.destinationUuid || ourUuid.toString() decoded.destinationUuid || item.destinationUuid || ourUuid.toString()
), ),
timestamp: decoded.timestamp?.toNumber(), timestamp: decoded.timestamp?.toNumber(),
legacyMessage: dropNull(decoded.legacyMessage),
content: dropNull(decoded.content), content: dropNull(decoded.content),
serverGuid: decoded.serverGuid, serverGuid: decoded.serverGuid,
serverTimestamp: serverTimestamp:
@ -1124,14 +1122,9 @@ export default class MessageReceiver
return; return;
} }
if (envelope.legacyMessage) {
await this.innerHandleLegacyMessage(envelope, plaintext);
return;
}
this.removeFromCache(envelope); this.removeFromCache(envelope);
throw new Error('Received message with no content and no legacyMessage'); throw new Error('Received message with no content');
} }
private async unsealEnvelope( private async unsealEnvelope(
@ -1161,10 +1154,10 @@ export default class MessageReceiver
strictAssert(uuidKind === UUIDKind.ACI, 'Sealed non-ACI envelope'); strictAssert(uuidKind === UUIDKind.ACI, 'Sealed non-ACI envelope');
const ciphertext = envelope.content || envelope.legacyMessage; const ciphertext = envelope.content;
if (!ciphertext) { if (!ciphertext) {
this.removeFromCache(envelope); this.removeFromCache(envelope);
throw new Error('Received message with no content and no legacyMessage'); throw new Error('Received message with no content');
} }
log.info(`MessageReceiver.unsealEnvelope(${logId}): unidentified message`); log.info(`MessageReceiver.unsealEnvelope(${logId}): unidentified message`);
@ -1226,12 +1219,8 @@ export default class MessageReceiver
} }
let ciphertext: Uint8Array; let ciphertext: Uint8Array;
let isLegacy = false;
if (envelope.content) { if (envelope.content) {
ciphertext = envelope.content; ciphertext = envelope.content;
} else if (envelope.legacyMessage) {
ciphertext = envelope.legacyMessage;
isLegacy = true;
} else { } else {
this.removeFromCache(envelope); this.removeFromCache(envelope);
strictAssert( strictAssert(
@ -1240,9 +1229,7 @@ export default class MessageReceiver
); );
} }
log.info( log.info(`MessageReceiver.decryptEnvelope(${logId})`);
`MessageReceiver.decryptEnvelope(${logId})${isLegacy ? ' (legacy)' : ''}`
);
const plaintext = await this.decrypt( const plaintext = await this.decrypt(
stores, stores,
envelope, envelope,
@ -1255,11 +1242,6 @@ export default class MessageReceiver
return { plaintext, envelope }; return { plaintext, envelope };
} }
// Legacy envelopes do not carry senderKeyDistributionMessage
if (isLegacy) {
return { plaintext, envelope };
}
// Note: we need to process this as part of decryption, because we might need this // Note: we need to process this as part of decryption, because we might need this
// sender key to decrypt the next message in the queue! // sender key to decrypt the next message in the queue!
try { try {
@ -1966,14 +1948,6 @@ export default class MessageReceiver
return this.dispatchAndWait(ev); return this.dispatchAndWait(ev);
} }
private async innerHandleLegacyMessage(
envelope: ProcessedEnvelope,
plaintext: Uint8Array
) {
const message = Proto.DataMessage.decode(plaintext);
return this.handleDataMessage(envelope, message);
}
private async maybeUpdateTimestamp( private async maybeUpdateTimestamp(
envelope: ProcessedEnvelope envelope: ProcessedEnvelope
): Promise<ProcessedEnvelope> { ): Promise<ProcessedEnvelope> {

View File

@ -85,7 +85,6 @@ export type ProcessedEnvelope = Readonly<{
sourceDevice?: number; sourceDevice?: number;
destinationUuid: UUID; destinationUuid: UUID;
timestamp: number; timestamp: number;
legacyMessage?: Uint8Array;
content?: Uint8Array; content?: Uint8Array;
serverGuid: string; serverGuid: string;
serverTimestamp: number; serverTimestamp: number;