mirror of
https://github.com/FranP-code/Baileys.git
synced 2025-10-13 00:32:22 +00:00
fix: group cipher signatures
This commit is contained in:
@@ -41,7 +41,7 @@ class GroupCipher {
|
|||||||
const senderKeyMessage = new SenderKeyMessage(null, null, null, null, senderKeyMessageBytes);
|
const senderKeyMessage = new SenderKeyMessage(null, null, null, null, senderKeyMessageBytes);
|
||||||
|
|
||||||
const senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId());
|
const senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId());
|
||||||
//senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic());
|
senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic());
|
||||||
const senderKey = this.getSenderKey(senderKeyState, senderKeyMessage.getIteration());
|
const senderKey = this.getSenderKey(senderKeyState, senderKeyMessage.getIteration());
|
||||||
// senderKeyState.senderKeyStateStructure.senderSigningKey.private =
|
// senderKeyState.senderKeyStateStructure.senderSigningKey.private =
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class SenderKeyDistributionMessage extends CiphertextMessage {
|
|||||||
|
|
||||||
const distributionMessage = protobufs.SenderKeyDistributionMessage.decode(
|
const distributionMessage = protobufs.SenderKeyDistributionMessage.decode(
|
||||||
message
|
message
|
||||||
).toJSON();
|
);
|
||||||
this.serialized = serialized;
|
this.serialized = serialized;
|
||||||
this.id = distributionMessage.id;
|
this.id = distributionMessage.id;
|
||||||
this.iteration = distributionMessage.iteration;
|
this.iteration = distributionMessage.iteration;
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ class SenderKeyMessage extends CiphertextMessage {
|
|||||||
const version = serialized[0];
|
const version = serialized[0];
|
||||||
const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
|
const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
|
||||||
const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
||||||
const senderKeyMessage = protobufs.SenderKeyMessage.decode(message).toJSON();
|
const senderKeyMessage = protobufs.SenderKeyMessage.decode(message);
|
||||||
senderKeyMessage.ciphertext = Buffer.from(senderKeyMessage.ciphertext, 'base64');
|
senderKeyMessage.ciphertext = senderKeyMessage.ciphertext;
|
||||||
|
|
||||||
this.serialized = serialized;
|
this.serialized = serialized;
|
||||||
this.messageVersion = (version & 0xff) >> 4;
|
this.messageVersion = (version & 0xff) >> 4;
|
||||||
@@ -64,7 +64,7 @@ class SenderKeyMessage extends CiphertextMessage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
verifySignature(signatureKey) {
|
verifySignature(signatureKey) {
|
||||||
const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH + 1);
|
const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH);
|
||||||
const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
||||||
const res = curve.verifySignature(signatureKey, part1, part2);
|
const res = curve.verifySignature(signatureKey, part1, part2);
|
||||||
if (!res) throw new Error('Invalid signature!');
|
if (!res) throw new Error('Invalid signature!');
|
||||||
|
|||||||
Reference in New Issue
Block a user