Add explicit type check
This commit is contained in:
parent
d5bd326877
commit
4a77aeff26
|
@ -82,10 +82,11 @@ function requireSetupHandle(): SetupHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkBlob(blob: Blob) {
|
function checkBlob(blob: Blob) {
|
||||||
|
if (!(blob instanceof Uint8Array)) {
|
||||||
|
throw new Error("Expected blob to be a UInt8Array.");
|
||||||
|
}
|
||||||
if (blob.length != BYTES_PER_BLOB) {
|
if (blob.length != BYTES_PER_BLOB) {
|
||||||
throw new Error(
|
throw new Error(`Expected blob to be ${BYTES_PER_BLOB} bytes.`);
|
||||||
`Expected blob to be UInt8Array of ${BYTES_PER_BLOB} bytes.`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,10 +97,11 @@ function checkBlobs(blobs: Blob[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkCommitment(commitment: KZGCommitment) {
|
function checkCommitment(commitment: KZGCommitment) {
|
||||||
|
if (!(commitment instanceof Uint8Array)) {
|
||||||
|
throw new Error("Expected commitment to be a UInt8Array.");
|
||||||
|
}
|
||||||
if (commitment.length != BYTES_PER_COMMITMENT) {
|
if (commitment.length != BYTES_PER_COMMITMENT) {
|
||||||
throw new Error(
|
throw new Error(`Expected commitment to be ${BYTES_PER_COMMITMENT} bytes.`);
|
||||||
`Expected commitment to be UInt8Array of ${BYTES_PER_COMMITMENT} bytes.`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,10 +112,11 @@ function checkCommitments(commitments: KZGCommitment[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkProof(proof: KZGProof) {
|
function checkProof(proof: KZGProof) {
|
||||||
|
if (!(proof instanceof Uint8Array)) {
|
||||||
|
throw new Error("Expected proof to be a UInt8Array.");
|
||||||
|
}
|
||||||
if (proof.length != BYTES_PER_PROOF) {
|
if (proof.length != BYTES_PER_PROOF) {
|
||||||
throw new Error(
|
throw new Error(`Expected proof to be ${BYTES_PER_PROOF} bytes.`);
|
||||||
`Expected proof to be UInt8Array of ${BYTES_PER_PROOF} bytes.`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,9 +127,12 @@ function checkProofs(proofs: KZGProof[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkFieldElement(field: Bytes32) {
|
function checkFieldElement(field: Bytes32) {
|
||||||
|
if (!(field instanceof Uint8Array)) {
|
||||||
|
throw new Error("Expected field element to be a UInt8Array.");
|
||||||
|
}
|
||||||
if (field.length != BYTES_PER_FIELD_ELEMENT) {
|
if (field.length != BYTES_PER_FIELD_ELEMENT) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Expected field element to be UInt8Array of ${BYTES_PER_FIELD_ELEMENT} bytes.`,
|
`Expected field element to be ${BYTES_PER_FIELD_ELEMENT} bytes.`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,14 +205,14 @@ describe("C-KZG", () => {
|
||||||
it("throws as expected when given an argument of invalid type", () => {
|
it("throws as expected when given an argument of invalid type", () => {
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
expect(() => blobToKzgCommitment("wrong type")).toThrowError(
|
expect(() => blobToKzgCommitment("wrong type")).toThrowError(
|
||||||
"Expected blob to be UInt8Array of 131072 bytes",
|
"Expected blob to be a UInt8Array",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("throws as expected when given an argument of invalid length", () => {
|
it("throws as expected when given an argument of invalid length", () => {
|
||||||
expect(() =>
|
expect(() =>
|
||||||
blobToKzgCommitment(randomBytes(BYTES_PER_BLOB - 1)),
|
blobToKzgCommitment(randomBytes(BYTES_PER_BLOB - 1)),
|
||||||
).toThrowError("Expected blob to be UInt8Array of 131072 bytes");
|
).toThrowError("Expected blob to be 131072 bytes");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -281,6 +281,13 @@ describe("C-KZG", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("edge cases for verifyBlobKzgProofBatch", () => {
|
describe("edge cases for verifyBlobKzgProofBatch", () => {
|
||||||
|
it("should reject non-bytearray blob", () => {
|
||||||
|
expect(() =>
|
||||||
|
// @ts-expect-error
|
||||||
|
verifyBlobKzgProofBatch(["foo", "bar"], [], []),
|
||||||
|
).toThrowError("Expected blob to be a UInt8Array");
|
||||||
|
});
|
||||||
|
|
||||||
it("zero blobs/commitments/proofs should verify as true", () => {
|
it("zero blobs/commitments/proofs should verify as true", () => {
|
||||||
expect(verifyBlobKzgProofBatch([], [], [])).toBe(true);
|
expect(verifyBlobKzgProofBatch([], [], [])).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue