From 01fd927070852085ebb0014785592318f6edb431 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Thu, 10 Jun 2021 08:55:25 +1000 Subject: [PATCH] match envelope type with ios protos --- protos/SignalService.proto | 4 ++-- ts/receiver/closedGroups.ts | 2 +- ts/receiver/contentMessage.ts | 6 +++--- ts/session/crypto/MessageEncrypter.ts | 8 ++++---- ts/session/sending/MessageSender.ts | 2 +- .../session/unit/crypto/MessageEncrypter_test.ts | 10 ++++------ .../session/unit/sending/MessageSender_test.ts | 16 ++++++++-------- ts/test/test-utils/utils/envelope.ts | 4 ++-- 8 files changed, 25 insertions(+), 27 deletions(-) diff --git a/protos/SignalService.proto b/protos/SignalService.proto index 72459280b..187cff541 100644 --- a/protos/SignalService.proto +++ b/protos/SignalService.proto @@ -7,8 +7,8 @@ option java_outer_classname = "SignalServiceProtos"; message Envelope { enum Type { - UNIDENTIFIED_SENDER = 6; - CLOSED_GROUP_CIPHERTEXT = 7; + SESSION_MESSAGE = 6; + CLOSED_GROUP_MESSAGE = 7; } // @required diff --git a/ts/receiver/closedGroups.ts b/ts/receiver/closedGroups.ts index 9c942a979..a7f2468f6 100644 --- a/ts/receiver/closedGroups.ts +++ b/ts/receiver/closedGroups.ts @@ -65,7 +65,7 @@ export async function handleClosedGroupControlMessage( // We drop New closed group message from our other devices, as they will come as ConfigurationMessage instead if (type === Type.ENCRYPTION_KEY_PAIR) { const isComingFromGroupPubkey = - envelope.type === SignalService.Envelope.Type.CLOSED_GROUP_CIPHERTEXT; + envelope.type === SignalService.Envelope.Type.CLOSED_GROUP_MESSAGE; await handleClosedGroupEncryptionKeyPair(envelope, groupUpdate, isComingFromGroupPubkey); return; } diff --git a/ts/receiver/contentMessage.ts b/ts/receiver/contentMessage.ts index 5937fd0bc..c2c73ecbb 100644 --- a/ts/receiver/contentMessage.ts +++ b/ts/receiver/contentMessage.ts @@ -228,10 +228,10 @@ async function doDecrypt( } switch (envelope.type) { - // Only UNIDENTIFIED_SENDER and CLOSED_GROUP_CIPHERTEXT are supported - case SignalService.Envelope.Type.CLOSED_GROUP_CIPHERTEXT: + // Only SESSION_MESSAGE and CLOSED_GROUP_MESSAGE are supported + case SignalService.Envelope.Type.CLOSED_GROUP_MESSAGE: return decryptForClosedGroup(envelope, ciphertext); - case SignalService.Envelope.Type.UNIDENTIFIED_SENDER: { + case SignalService.Envelope.Type.SESSION_MESSAGE: { return decryptUnidentifiedSender(envelope, ciphertext); } default: diff --git a/ts/session/crypto/MessageEncrypter.ts b/ts/session/crypto/MessageEncrypter.ts index 8c5c15b80..958fea91d 100644 --- a/ts/session/crypto/MessageEncrypter.ts +++ b/ts/session/crypto/MessageEncrypter.ts @@ -26,7 +26,7 @@ export async function encrypt( plainTextBuffer: Uint8Array, encryptionType: EncryptionType ): Promise { - const { CLOSED_GROUP_CIPHERTEXT, UNIDENTIFIED_SENDER } = SignalService.Envelope.Type; + const { CLOSED_GROUP_MESSAGE, SESSION_MESSAGE } = SignalService.Envelope.Type; if (encryptionType !== EncryptionType.ClosedGroup && encryptionType !== EncryptionType.Fallback) { throw new Error(`Invalid encryption type:${encryptionType}`); } @@ -35,7 +35,7 @@ export async function encrypt( if (encryptForClosedGroup) { // window?.log?.info( - // 'Encrypting message with SessionProtocol and envelope type is CLOSED_GROUP_CIPHERTEXT' + // 'Encrypting message with SessionProtocol and envelope type is CLOSED_GROUP_MESSAGE' // ); const hexEncryptionKeyPair = await getLatestClosedGroupEncryptionKeyPair(device.key); if (!hexEncryptionKeyPair) { @@ -52,13 +52,13 @@ export async function encrypt( ); return { - envelopeType: CLOSED_GROUP_CIPHERTEXT, + envelopeType: CLOSED_GROUP_MESSAGE, cipherText: cipherTextClosedGroup, }; } const cipherText = await exports.encryptUsingSessionProtocol(device, plainText); - return { envelopeType: UNIDENTIFIED_SENDER, cipherText }; + return { envelopeType: SESSION_MESSAGE, cipherText }; } export async function encryptUsingSessionProtocol( diff --git a/ts/session/sending/MessageSender.ts b/ts/session/sending/MessageSender.ts index 6dd77bdaf..200f44dfe 100644 --- a/ts/session/sending/MessageSender.ts +++ b/ts/session/sending/MessageSender.ts @@ -59,7 +59,7 @@ async function buildEnvelope( ): Promise { let source: string | undefined; - if (type === SignalService.Envelope.Type.CLOSED_GROUP_CIPHERTEXT) { + if (type === SignalService.Envelope.Type.CLOSED_GROUP_MESSAGE) { source = sskSource; } diff --git a/ts/test/session/unit/crypto/MessageEncrypter_test.ts b/ts/test/session/unit/crypto/MessageEncrypter_test.ts index 73400c67e..7de5e5490 100644 --- a/ts/test/session/unit/crypto/MessageEncrypter_test.ts +++ b/ts/test/session/unit/crypto/MessageEncrypter_test.ts @@ -125,7 +125,7 @@ describe('MessageEncrypter', () => { describe('EncryptionType', () => { describe('ClosedGroup', () => { - it('should return a CLOSED_GROUP_CIPHERTEXT envelope type for ClosedGroup', async () => { + it('should return a CLOSED_GROUP_MESSAGE envelope type for ClosedGroup', async () => { const hexKeyPair = { publicHex: `05${ourUserEd25516Keypair.pubKey}`, privateHex: '0123456789abcdef', @@ -142,10 +142,10 @@ describe('MessageEncrypter', () => { ); chai .expect(result.envelopeType) - .to.deep.equal(SignalService.Envelope.Type.CLOSED_GROUP_CIPHERTEXT); + .to.deep.equal(SignalService.Envelope.Type.CLOSED_GROUP_MESSAGE); }); - it('should return a UNIDENTIFIED_SENDER envelope type for Fallback', async () => { + it('should return a SESSION_MESSAGE envelope type for Fallback', async () => { const data = crypto.randomBytes(10); const result = await MessageEncrypter.encrypt( @@ -153,9 +153,7 @@ describe('MessageEncrypter', () => { data, EncryptionType.Fallback ); - chai - .expect(result.envelopeType) - .to.deep.equal(SignalService.Envelope.Type.UNIDENTIFIED_SENDER); + chai.expect(result.envelopeType).to.deep.equal(SignalService.Envelope.Type.SESSION_MESSAGE); }); it('should throw an error for anything else than Fallback or ClosedGroup', () => { diff --git a/ts/test/session/unit/sending/MessageSender_test.ts b/ts/test/session/unit/sending/MessageSender_test.ts index c156c1e07..f48560f7d 100644 --- a/ts/test/session/unit/sending/MessageSender_test.ts +++ b/ts/test/session/unit/sending/MessageSender_test.ts @@ -29,7 +29,7 @@ describe('MessageSender', () => { lokiMessageAPISendStub = sandbox.stub(LokiMessageApi, 'sendMessage').resolves(); encryptStub = sandbox.stub(MessageEncrypter, 'encrypt').resolves({ - envelopeType: SignalService.Envelope.Type.UNIDENTIFIED_SENDER, + envelopeType: SignalService.Envelope.Type.SESSION_MESSAGE, cipherText: crypto.randomBytes(10), }); @@ -77,7 +77,7 @@ describe('MessageSender', () => { }); describe('logic', () => { - let messageEncyrptReturnEnvelopeType = SignalService.Envelope.Type.UNIDENTIFIED_SENDER; + let messageEncyrptReturnEnvelopeType = SignalService.Envelope.Type.SESSION_MESSAGE; beforeEach(() => { encryptStub.callsFake(async (_device, plainTextBuffer, _type) => ({ @@ -107,7 +107,7 @@ describe('MessageSender', () => { }); it('should correctly build the envelope', async () => { - messageEncyrptReturnEnvelopeType = SignalService.Envelope.Type.UNIDENTIFIED_SENDER; + messageEncyrptReturnEnvelopeType = SignalService.Envelope.Type.SESSION_MESSAGE; // This test assumes the encryption stub returns the plainText passed into it. const device = TestUtils.generateFakePubKey().key; @@ -137,15 +137,15 @@ describe('MessageSender', () => { const envelope = SignalService.Envelope.decode( webSocketMessage.request?.body as Uint8Array ); - expect(envelope.type).to.equal(SignalService.Envelope.Type.UNIDENTIFIED_SENDER); + expect(envelope.type).to.equal(SignalService.Envelope.Type.SESSION_MESSAGE); expect(envelope.source).to.equal(''); expect(toNumber(envelope.timestamp)).to.equal(timestamp); expect(envelope.content).to.deep.equal(plainTextBuffer); }); - describe('UNIDENTIFIED_SENDER', () => { + describe('SESSION_MESSAGE', () => { it('should set the envelope source to be empty', async () => { - messageEncyrptReturnEnvelopeType = SignalService.Envelope.Type.UNIDENTIFIED_SENDER; + messageEncyrptReturnEnvelopeType = SignalService.Envelope.Type.SESSION_MESSAGE; // This test assumes the encryption stub returns the plainText passed into it. const device = TestUtils.generateFakePubKey().key; @@ -175,10 +175,10 @@ describe('MessageSender', () => { const envelope = SignalService.Envelope.decode( webSocketMessage.request?.body as Uint8Array ); - expect(envelope.type).to.equal(SignalService.Envelope.Type.UNIDENTIFIED_SENDER); + expect(envelope.type).to.equal(SignalService.Envelope.Type.SESSION_MESSAGE); expect(envelope.source).to.equal( '', - 'envelope source should be empty in UNIDENTIFIED_SENDER' + 'envelope source should be empty in SESSION_MESSAGE' ); }); }); diff --git a/ts/test/test-utils/utils/envelope.ts b/ts/test/test-utils/utils/envelope.ts index 393729e47..fff07c88f 100644 --- a/ts/test/test-utils/utils/envelope.ts +++ b/ts/test/test-utils/utils/envelope.ts @@ -10,7 +10,7 @@ export function generateEnvelopePlusClosedGroup(groupId: string, sender: string) receivedAt: Date.now(), timestamp: Date.now() - 2000, id: uuid(), - type: SignalService.Envelope.Type.CLOSED_GROUP_CIPHERTEXT, + type: SignalService.Envelope.Type.CLOSED_GROUP_MESSAGE, source: groupId, content: new Uint8Array(), toJSON: () => ['fake'], @@ -24,7 +24,7 @@ export function generateEnvelopePlus(sender: string): EnvelopePlus { receivedAt: Date.now(), timestamp: Date.now() - 2000, id: uuid(), - type: SignalService.Envelope.Type.UNIDENTIFIED_SENDER, + type: SignalService.Envelope.Type.SESSION_MESSAGE, source: sender, senderIdentity: sender, content: new Uint8Array(),