sender-key: credit original fix and fix key handling

This commit is contained in:
Rajeh Taher
2025-09-13 11:38:24 +03:00
parent f0dcc30e0f
commit e305d4848e
3 changed files with 10 additions and 4 deletions
+3 -1
View File
@@ -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)
}
+6 -2
View File
@@ -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')
}
+1 -1
View File
@@ -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
}