Fix herumi's bytes length checks
This commit is contained in:
parent
78f66280de
commit
70574b45c1
|
@ -1,4 +1,3 @@
|
||||||
import assert from "assert";
|
|
||||||
import {SecretKeyType} from "bls-eth-wasm";
|
import {SecretKeyType} from "bls-eth-wasm";
|
||||||
import {generateRandomSecretKey} from "@chainsafe/bls-keygen";
|
import {generateRandomSecretKey} from "@chainsafe/bls-keygen";
|
||||||
import {SECRET_KEY_LENGTH} from "../constants";
|
import {SECRET_KEY_LENGTH} from "../constants";
|
||||||
|
@ -16,7 +15,10 @@ export class PrivateKey implements IPrivateKey {
|
||||||
}
|
}
|
||||||
|
|
||||||
static fromBytes(bytes: Uint8Array): PrivateKey {
|
static fromBytes(bytes: Uint8Array): PrivateKey {
|
||||||
assert(bytes.length === SECRET_KEY_LENGTH, "Private key should have 32 bytes");
|
if (bytes.length !== SECRET_KEY_LENGTH) {
|
||||||
|
throw Error(`Private key should have ${SECRET_KEY_LENGTH} bytes`);
|
||||||
|
}
|
||||||
|
|
||||||
const context = getContext();
|
const context = getContext();
|
||||||
const secretKey = new context.SecretKey();
|
const secretKey = new context.SecretKey();
|
||||||
secretKey.deserialize(bytes);
|
secretKey.deserialize(bytes);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import {PublicKeyType} from "bls-eth-wasm";
|
import {PublicKeyType} from "bls-eth-wasm";
|
||||||
import {getContext} from "./context";
|
import {getContext} from "./context";
|
||||||
import {EMPTY_PUBLIC_KEY} from "../constants";
|
import {EMPTY_PUBLIC_KEY, PUBLIC_KEY_LENGTH} from "../constants";
|
||||||
import {Signature} from "./signature";
|
import {Signature} from "./signature";
|
||||||
import {bytesToHex, hexToBytes, isEqualBytes} from "../helpers";
|
import {bytesToHex, hexToBytes, isEqualBytes} from "../helpers";
|
||||||
import {IPublicKey} from "../interface";
|
import {IPublicKey} from "../interface";
|
||||||
|
@ -13,6 +13,10 @@ export class PublicKey implements IPublicKey {
|
||||||
}
|
}
|
||||||
|
|
||||||
static fromBytes(bytes: Uint8Array): PublicKey {
|
static fromBytes(bytes: Uint8Array): PublicKey {
|
||||||
|
if (bytes.length !== PUBLIC_KEY_LENGTH) {
|
||||||
|
throw Error(`Public key must have ${PUBLIC_KEY_LENGTH} bytes`);
|
||||||
|
}
|
||||||
|
|
||||||
const context = getContext();
|
const context = getContext();
|
||||||
const publicKey = new context.PublicKey();
|
const publicKey = new context.PublicKey();
|
||||||
if (!isEqualBytes(EMPTY_PUBLIC_KEY, bytes)) {
|
if (!isEqualBytes(EMPTY_PUBLIC_KEY, bytes)) {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import assert from "assert";
|
|
||||||
import {SIGNATURE_LENGTH, EMPTY_SIGNATURE} from "../constants";
|
import {SIGNATURE_LENGTH, EMPTY_SIGNATURE} from "../constants";
|
||||||
import {SignatureType} from "bls-eth-wasm";
|
import {SignatureType} from "bls-eth-wasm";
|
||||||
import {getContext} from "./context";
|
import {getContext} from "./context";
|
||||||
|
@ -10,12 +9,18 @@ export class Signature implements ISignature {
|
||||||
readonly value: SignatureType;
|
readonly value: SignatureType;
|
||||||
|
|
||||||
constructor(value: SignatureType) {
|
constructor(value: SignatureType) {
|
||||||
|
if (!value.isValidOrder()) {
|
||||||
|
throw Error("Signature is not in valid order");
|
||||||
|
}
|
||||||
|
|
||||||
this.value = value;
|
this.value = value;
|
||||||
assert(this.value.isValidOrder());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static fromBytes(bytes: Uint8Array): Signature {
|
static fromBytes(bytes: Uint8Array): Signature {
|
||||||
assert(bytes.length === SIGNATURE_LENGTH, `Signature must have ${SIGNATURE_LENGTH} bytes`);
|
if (bytes.length !== SIGNATURE_LENGTH) {
|
||||||
|
throw Error(`Signature must have ${SIGNATURE_LENGTH} bytes`);
|
||||||
|
}
|
||||||
|
|
||||||
const context = getContext();
|
const context = getContext();
|
||||||
const signature = new context.Signature();
|
const signature = new context.Signature();
|
||||||
if (!isEqualBytes(EMPTY_SIGNATURE, bytes)) {
|
if (!isEqualBytes(EMPTY_SIGNATURE, bytes)) {
|
||||||
|
|
Reference in New Issue