This commit is contained in:
Marin Petrunić 2019-12-11 10:58:24 +01:00
parent 1154be87ac
commit 50f5ac45c8
6 changed files with 15 additions and 19 deletions

View File

@ -45,23 +45,8 @@
}, },
"devDependencies": { "devDependencies": {
"@chainsafe/benchmark-utils": "^0.1.0", "@chainsafe/benchmark-utils": "^0.1.0",
"@types/assert": "^1.4.2",
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.5",
"@types/node": "^12.7.2",
"@typescript-eslint/eslint-plugin": "^1.3.0",
"@typescript-eslint/parser": "^1.3.0",
"chai": "^4.2.0",
"codecov": "^3.1.0",
"eslint": "^5.14.1",
"js-sha256": "^0.9.0", "js-sha256": "^0.9.0",
"js-yaml": "^3.13.1", "js-yaml": "^3.13.1",
"mocha": "^6.2.0",
"nyc": "^13.3.0",
"sinon": "^7.2.7",
"supertest": "^4.0.2",
"ts-node": "^7.0.1",
"typescript": "^3.2.1",
"webpack": "^4.30.0", "webpack": "^4.30.0",
"webpack-cli": "^3.3.2" "webpack-cli": "^3.3.2"
} }

View File

@ -1,4 +1,5 @@
export const SECRET_KEY_LENGTH = 32; export const SECRET_KEY_LENGTH = 32;
export const SIGNATURE_LENGTH = 96;
export const FP_POINT_LENGTH = 48; export const FP_POINT_LENGTH = 48;
export const PUBLIC_KEY_LENGTH = FP_POINT_LENGTH; export const PUBLIC_KEY_LENGTH = FP_POINT_LENGTH;
export const G2_HASH_PADDING = 16; export const G2_HASH_PADDING = 16;

View File

@ -1,3 +1,4 @@
/* eslint-disable require-atomic-updates */
import blsWasmWrapper from "@chainsafe/eth2-bls-wasm"; import blsWasmWrapper from "@chainsafe/eth2-bls-wasm";
let blsWrapper: typeof blsWasmWrapper | null = null; let blsWrapper: typeof blsWasmWrapper | null = null;

View File

@ -1,4 +1,5 @@
import assert from "assert"; import assert from "assert";
import {PUBLIC_KEY_LENGTH, SIGNATURE_LENGTH} from "../constants";
/** /**
* Pads byte array with zeroes on left side up to desired length. * Pads byte array with zeroes on left side up to desired length.
@ -12,3 +13,6 @@ export function padLeft(source: Buffer, length: number): Buffer {
source.copy(result, length - source.length); source.copy(result, length - source.length);
return result; return result;
} }
export const EMPTY_PUBLIC_KEY = Buffer.alloc(PUBLIC_KEY_LENGTH);
export const EMPTY_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH);

View File

@ -5,6 +5,7 @@ import {getContext} from "./context";
import {PUBLIC_KEY_LENGTH} from "./constants"; import {PUBLIC_KEY_LENGTH} from "./constants";
import assert from "assert"; import assert from "assert";
import {Signature} from "./signature"; import {Signature} from "./signature";
import {EMPTY_PUBLIC_KEY} from "./helpers/utils";
export class PublicKey { export class PublicKey {
@ -21,7 +22,9 @@ export class PublicKey {
public static fromBytes(bytes: BLSPubkey): PublicKey { public static fromBytes(bytes: BLSPubkey): PublicKey {
const context = getContext(); const context = getContext();
const publicKey = new context.PublicKey(); const publicKey = new context.PublicKey();
publicKey.deserialize(bytes); if(!bytes.equals(EMPTY_PUBLIC_KEY)) {
publicKey.deserialize(bytes);
}
return new PublicKey( return new PublicKey(
publicKey publicKey
); );

View File

@ -4,7 +4,7 @@ import {BLSSignature, Domain, Hash} from "@chainsafe/eth2.0-types";
import {SignatureType} from "@chainsafe/eth2-bls-wasm"; import {SignatureType} from "@chainsafe/eth2-bls-wasm";
import {getContext} from "./context"; import {getContext} from "./context";
import {PublicKey} from "./publicKey"; import {PublicKey} from "./publicKey";
import {padLeft} from "./helpers/utils"; import {EMPTY_SIGNATURE, padLeft} from "./helpers/utils";
export class Signature { export class Signature {
@ -21,7 +21,9 @@ export class Signature {
); );
const context = getContext(); const context = getContext();
const signature = new context.Signature(); const signature = new context.Signature();
signature.deserialize(value); if(!value.equals(EMPTY_SIGNATURE)) {
signature.deserialize(value);
}
return new Signature(signature); return new Signature(signature);
} }