diff --git a/src/Signal/Group/sender-chain-key.ts b/src/Signal/Group/sender-chain-key.ts index 768a131c..18777a28 100644 --- a/src/Signal/Group/sender-chain-key.ts +++ b/src/Signal/Group/sender-chain-key.ts @@ -11,11 +11,13 @@ export class SenderChainKey { constructor(iteration: number, chainKey: any) { this.iteration = iteration if (Buffer.isBuffer(chainKey)) { + // backported from @MartinSchere's PR this.chainKey = chainKey } else if (chainKey instanceof Uint8Array) { this.chainKey = Buffer.from(chainKey) } else if (chainKey && typeof chainKey === 'object') { - this.chainKey = Buffer.from(Object.values(chainKey)) + // backported from @MartinSchere (#1741) + this.chainKey = Buffer.from(Object.values(chainKey)) // temp fix // backported from @MartinSchere (#1741) } else { this.chainKey = Buffer.alloc(0) } diff --git a/src/Signal/Group/sender-key-state.ts b/src/Signal/Group/sender-key-state.ts index c176a698..9791be3a 100644 --- a/src/Signal/Group/sender-key-state.ts +++ b/src/Signal/Group/sender-key-state.ts @@ -99,11 +99,13 @@ export class SenderKeyState { let key = this.senderKeyStateStructure.senderSigningKey.public // normalize into Buffer - if (!(key instanceof Buffer)) { + if (!Buffer.isBuffer(key)) { if (key instanceof Uint8Array) { key = Buffer.from(key) } else if (typeof key === 'string') { key = Buffer.from(key, 'base64') + } else if (key && typeof key === 'object') { + return Buffer.from(Object.values(key)) // temp fix // inspired by @MartinSchere 's #1741 } else { key = Buffer.from(key || []) } @@ -127,10 +129,12 @@ export class SenderKeyState { return undefined } - if (privateKey instanceof Buffer) { + if (Buffer.isBuffer(privateKey)) { return privateKey } else if (privateKey instanceof Uint8Array) { return Buffer.from(privateKey) + } else if (privateKey && typeof privateKey === 'object') { + return Buffer.from(Object.values(privateKey)) // temp fix // inspired by @MartinSchere 's #1741 } else if (typeof privateKey === 'string') { return Buffer.from(privateKey, 'base64') } diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index a7cd37c5..c835b31b 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -1120,7 +1120,7 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { if (getBinaryNodeChild(node, 'unavailable') && !encNode) { await sendMessageAck(node) const { key } = decodeMessageNode(node, authState.creds.me!.id, authState.creds.me!.lid || '').fullMessage - response = await requestPlaceholderResend(key) + response = await requestPlaceholderResend(key) // TODO: DEPRECATE THIS LOGIC AND PASS IT OFF TO THE RETRY MANAGER if (response === 'RESOLVED') { return }