mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
Merge branch 'master' into invalid-qr-patch
This commit is contained in:
@@ -6,6 +6,7 @@ const logger = MAIN_LOGGER.child({ })
|
|||||||
logger.level = 'trace'
|
logger.level = 'trace'
|
||||||
|
|
||||||
const useStore = !process.argv.includes('--no-store')
|
const useStore = !process.argv.includes('--no-store')
|
||||||
|
const doReplies = !process.argv.includes('--no-reply')
|
||||||
|
|
||||||
// the store maintains the data of the WA connection in memory
|
// the store maintains the data of the WA connection in memory
|
||||||
// can be written out to a file & read from it
|
// can be written out to a file & read from it
|
||||||
@@ -59,7 +60,7 @@ const startSock = async() => {
|
|||||||
console.log(JSON.stringify(m, undefined, 2))
|
console.log(JSON.stringify(m, undefined, 2))
|
||||||
|
|
||||||
const msg = m.messages[0]
|
const msg = m.messages[0]
|
||||||
if(!msg.key.fromMe && m.type === 'notify') {
|
if(!msg.key.fromMe && m.type === 'notify' && doReplies) {
|
||||||
console.log('replying to', m.messages[0].key.remoteJid)
|
console.log('replying to', m.messages[0].key.remoteJid)
|
||||||
await sock!.sendReadReceipt(msg.key.remoteJid, msg.key.participant, [msg.key.id])
|
await sock!.sendReadReceipt(msg.key.remoteJid, msg.key.participant, [msg.key.id])
|
||||||
await sendMessageWTyping({ text: 'Hello there!' }, msg.key.remoteJid)
|
await sendMessageWTyping({ text: 'Hello there!' }, msg.key.remoteJid)
|
||||||
|
|||||||
@@ -546,7 +546,6 @@ export const makeChatsSocket = (config: SocketConfig) => {
|
|||||||
to: S_WHATSAPP_NET,
|
to: S_WHATSAPP_NET,
|
||||||
xmlns: 'abt',
|
xmlns: 'abt',
|
||||||
type: 'get',
|
type: 'get',
|
||||||
id: generateMessageTag(),
|
|
||||||
},
|
},
|
||||||
content: [
|
content: [
|
||||||
{ tag: 'props', attrs: { protocol: '1' } }
|
{ tag: 'props', attrs: { protocol: '1' } }
|
||||||
@@ -573,7 +572,6 @@ export const makeChatsSocket = (config: SocketConfig) => {
|
|||||||
to: S_WHATSAPP_NET,
|
to: S_WHATSAPP_NET,
|
||||||
xmlns: 'w',
|
xmlns: 'w',
|
||||||
type: 'get',
|
type: 'get',
|
||||||
id: generateMessageTag(),
|
|
||||||
},
|
},
|
||||||
content: [
|
content: [
|
||||||
{ tag: 'props', attrs: { } }
|
{ tag: 'props', attrs: { } }
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export const makeNoiseHandler = ({ public: publicKey, private: privateKey }: Key
|
|||||||
|
|
||||||
const authenticate = (data: Uint8Array) => {
|
const authenticate = (data: Uint8Array) => {
|
||||||
if(!isFinished) {
|
if(!isFinished) {
|
||||||
hash = sha256(Buffer.from(Binary.build(hash, data).readByteArray()))
|
hash = sha256(Buffer.concat([hash, data]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ export const makeNoiseHandler = ({ public: publicKey, private: privateKey }: Key
|
|||||||
isFinished = true
|
isFinished = true
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = Binary.build(NOISE_MODE).readBuffer()
|
const data = Buffer.from(NOISE_MODE)
|
||||||
let hash = Buffer.from(data.byteLength === 32 ? data : sha256(Buffer.from(data)))
|
let hash = Buffer.from(data.byteLength === 32 ? data : sha256(Buffer.from(data)))
|
||||||
let salt = hash
|
let salt = hash
|
||||||
let encKey = hash
|
let encKey = hash
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { createHash } from 'crypto'
|
|||||||
import { proto } from '../../WAProto'
|
import { proto } from '../../WAProto'
|
||||||
import { KEY_BUNDLE_TYPE } from '../Defaults'
|
import { KEY_BUNDLE_TYPE } from '../Defaults'
|
||||||
import type { AuthenticationCreds, SignalCreds, SocketConfig } from '../Types'
|
import type { AuthenticationCreds, SignalCreds, SocketConfig } from '../Types'
|
||||||
import { Binary, BinaryNode, getBinaryNodeChild, jidDecode, S_WHATSAPP_NET } from '../WABinary'
|
import { BinaryNode, getBinaryNodeChild, jidDecode, S_WHATSAPP_NET } from '../WABinary'
|
||||||
import { Curve, hmacSign } from './crypto'
|
import { Curve, hmacSign } from './crypto'
|
||||||
import { encodeBigEndian } from './generics'
|
import { encodeBigEndian } from './generics'
|
||||||
import { createSignalIdentity } from './signal'
|
import { createSignalIdentity } from './signal'
|
||||||
@@ -124,18 +124,26 @@ export const configureSuccessfulPairing = (
|
|||||||
const account = proto.ADVSignedDeviceIdentity.decode(details)
|
const account = proto.ADVSignedDeviceIdentity.decode(details)
|
||||||
const { accountSignatureKey, accountSignature } = account
|
const { accountSignatureKey, accountSignature } = account
|
||||||
|
|
||||||
const accountMsg = Binary.build(new Uint8Array([6, 0]), account.details, signedIdentityKey.public).readByteArray()
|
const accountMsg = Buffer.concat([
|
||||||
|
Buffer.from([6, 0]),
|
||||||
|
account.details,
|
||||||
|
signedIdentityKey.public
|
||||||
|
])
|
||||||
if(!Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
|
if(!Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
|
||||||
throw new Boom('Failed to verify account signature')
|
throw new Boom('Failed to verify account signature')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const deviceMsg = Buffer.concat([
|
||||||
|
new Uint8Array([6, 1]),
|
||||||
|
account.details,
|
||||||
|
signedIdentityKey.public,
|
||||||
|
account.accountSignatureKey
|
||||||
|
])
|
||||||
|
account.deviceSignature = Curve.sign(signedIdentityKey.private, deviceMsg)
|
||||||
|
|
||||||
const identity = createSignalIdentity(jid, accountSignatureKey)
|
const identity = createSignalIdentity(jid, accountSignatureKey)
|
||||||
|
|
||||||
const deviceIdentity = proto.ADVDeviceIdentity.decode(account.details)
|
const deviceIdentity = proto.ADVDeviceIdentity.decode(account.details)
|
||||||
const keyIndex = deviceIdentity.keyIndex
|
|
||||||
|
|
||||||
const deviceMsg = Binary.build(new Uint8Array([6, 1]), account.details, signedIdentityKey.public, account.accountSignatureKey).readByteArray()
|
|
||||||
account.deviceSignature = Curve.sign(signedIdentityKey.private, deviceMsg)
|
|
||||||
|
|
||||||
delete account.accountSignatureKey
|
delete account.accountSignatureKey
|
||||||
const accountEnc = proto.ADVSignedDeviceIdentity.encode(account).finish()
|
const accountEnc = proto.ADVSignedDeviceIdentity.encode(account).finish()
|
||||||
|
|||||||
Reference in New Issue
Block a user