Use class interface for more transparent errors
This commit is contained in:
parent
fc868ffd27
commit
d2c11ed16c
|
@ -107,6 +107,8 @@ export function runIndexTests(bls: IBls): void {
|
||||||
const msgs = dataArr.map((data) => data.msg);
|
const msgs = dataArr.map((data) => data.msg);
|
||||||
const sigs = dataArr.map((data) => data.sig);
|
const sigs = dataArr.map((data) => data.sig);
|
||||||
|
|
||||||
|
expect(bls.Signature.verifyMultipleSignatures(pks, msgs, sigs)).to.equal(true, "class interface failed");
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
bls.verifyMultipleSignatures(
|
bls.verifyMultipleSignatures(
|
||||||
pks.map((pk) => pk.toBytes()),
|
pks.map((pk) => pk.toBytes()),
|
||||||
|
@ -114,31 +116,30 @@ export function runIndexTests(bls: IBls): void {
|
||||||
sigs.map((sig) => sig.toBytes())
|
sigs.map((sig) => sig.toBytes())
|
||||||
)
|
)
|
||||||
).to.equal(true, "functional (bytes serialized) interface failed");
|
).to.equal(true, "functional (bytes serialized) interface failed");
|
||||||
|
|
||||||
expect(bls.Signature.verifyMultipleSignatures(pks, msgs, sigs)).to.equal(true, "class interface failed");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Test fails correctly against a malicous signature", async () => {
|
it("Test fails correctly against a malicous signature", async () => {
|
||||||
const pks = maliciousVerifyMultipleSignaturesData.pks.map(hexToBytes);
|
const pks = maliciousVerifyMultipleSignaturesData.pks.map(bls.PublicKey.fromHex);
|
||||||
const msgs = maliciousVerifyMultipleSignaturesData.msgs.map(hexToBytes);
|
const msgs = maliciousVerifyMultipleSignaturesData.msgs.map(hexToBytes);
|
||||||
const sigs = maliciousVerifyMultipleSignaturesData.sigs.map(hexToBytes);
|
const sigs = maliciousVerifyMultipleSignaturesData.sigs.map(bls.Signature.fromHex);
|
||||||
|
|
||||||
maliciousVerifyMultipleSignaturesData.manipulated.forEach((isManipulated, i) => {
|
maliciousVerifyMultipleSignaturesData.manipulated.forEach((isManipulated, i) => {
|
||||||
expect(bls.verify(pks[i], msgs[i], sigs[i])).to.equal(
|
expect(sigs[i].verify(pks[i], msgs[i])).to.equal(
|
||||||
!isManipulated,
|
!isManipulated,
|
||||||
isManipulated ? "Manipulated signature should not verify" : "Ok signature should verify"
|
isManipulated ? "Manipulated signature should not verify" : "Ok signature should verify"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// This method (AggregateVerify in BLS spec lingo) should verify
|
// This method (AggregateVerify in BLS spec lingo) should verify
|
||||||
const dangerousAggSig = bls.aggregateSignatures(sigs);
|
|
||||||
expect(bls.verifyMultiple(pks, msgs, dangerousAggSig)).to.equal(
|
const dangerousAggSig = bls.Signature.aggregate(sigs);
|
||||||
|
expect(dangerousAggSig.verifyMultiple(pks, msgs)).to.equal(
|
||||||
true,
|
true,
|
||||||
"Malicious signature should be validated with bls.verifyMultiple"
|
"Malicious signature should be validated with bls.verifyMultiple"
|
||||||
);
|
);
|
||||||
|
|
||||||
// This method is expected to catch the malicious signature and not verify
|
// This method is expected to catch the malicious signature and not verify
|
||||||
expect(bls.verifyMultipleSignatures(pks, msgs, sigs)).to.equal(
|
expect(bls.Signature.verifyMultipleSignatures(pks, msgs, sigs)).to.equal(
|
||||||
false,
|
false,
|
||||||
"Malicous signature should not validate with bls.verifyMultipleSignatures"
|
"Malicous signature should not validate with bls.verifyMultipleSignatures"
|
||||||
);
|
);
|
||||||
|
|
Reference in New Issue