@martiandao/aptos-web3-bip44.js
Version:
Web3 SDK For Aptos
73 lines • 5.49 kB
JavaScript
"use strict";
// Copyright © Aptos Foundation
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable max-len */
const utils_1 = require("../../utils");
const bcs_1 = require("../../bcs");
const ed25519_1 = require("../../aptos_types/ed25519");
const multi_ed25519_1 = require("../../aptos_types/multi_ed25519");
describe("MultiEd25519", () => {
it("public key serializes to bytes correctly", async () => {
const publicKey1 = "b9c6ee1630ef3e711144a648db06bbb2284f7274cfbee53ffcee503cc1a49200";
const publicKey2 = "aef3f4a4b8eca1dfc343361bf8e436bd42de9259c04b8314eb8e2054dd6e82ab";
const publicKey3 = "8a5762e21ac1cdb3870442c77b4c3af58c7cedb8779d0270e6d4f1e2f7367d74";
const pubKeyMultiSig = new multi_ed25519_1.MultiEd25519PublicKey([
new ed25519_1.Ed25519PublicKey(new utils_1.HexString(publicKey1).toUint8Array()),
new ed25519_1.Ed25519PublicKey(new utils_1.HexString(publicKey2).toUint8Array()),
new ed25519_1.Ed25519PublicKey(new utils_1.HexString(publicKey3).toUint8Array()),
], 2);
expect(utils_1.HexString.fromUint8Array(pubKeyMultiSig.toBytes()).noPrefix()).toEqual("b9c6ee1630ef3e711144a648db06bbb2284f7274cfbee53ffcee503cc1a49200aef3f4a4b8eca1dfc343361bf8e436bd42de9259c04b8314eb8e2054dd6e82ab8a5762e21ac1cdb3870442c77b4c3af58c7cedb8779d0270e6d4f1e2f7367d7402");
});
it("public key deserializes from bytes correctly", async () => {
const publicKey1 = "b9c6ee1630ef3e711144a648db06bbb2284f7274cfbee53ffcee503cc1a49200";
const publicKey2 = "aef3f4a4b8eca1dfc343361bf8e436bd42de9259c04b8314eb8e2054dd6e82ab";
const publicKey3 = "8a5762e21ac1cdb3870442c77b4c3af58c7cedb8779d0270e6d4f1e2f7367d74";
const pubKeyMultiSig = new multi_ed25519_1.MultiEd25519PublicKey([
new ed25519_1.Ed25519PublicKey(new utils_1.HexString(publicKey1).toUint8Array()),
new ed25519_1.Ed25519PublicKey(new utils_1.HexString(publicKey2).toUint8Array()),
new ed25519_1.Ed25519PublicKey(new utils_1.HexString(publicKey3).toUint8Array()),
], 2);
const deserialzed = multi_ed25519_1.MultiEd25519PublicKey.deserialize(new bcs_1.Deserializer((0, bcs_1.bcsToBytes)(pubKeyMultiSig)));
expect(utils_1.HexString.fromUint8Array(deserialzed.toBytes()).noPrefix()).toEqual(utils_1.HexString.fromUint8Array(pubKeyMultiSig.toBytes()).noPrefix());
});
it("signature serializes to bytes correctly", async () => {
// eslint-disable-next-line operator-linebreak
const sig1 = "e6f3ba05469b2388492397840183945d4291f0dd3989150de3248e06b4cefe0ddf6180a80a0f04c045ee8f362870cb46918478cd9b56c66076f94f3efd5a8805";
// eslint-disable-next-line operator-linebreak
const sig2 = "2ae0818b7e51b853f1e43dc4c89a1f5fabc9cb256030a908f9872f3eaeb048fb1e2b4ffd5a9d5d1caedd0c8b7d6155ed8071e913536fa5c5a64327b6f2d9a102";
const bitmap = "c0000000";
const multisig = new multi_ed25519_1.MultiEd25519Signature([
new ed25519_1.Ed25519Signature(new utils_1.HexString(sig1).toUint8Array()),
new ed25519_1.Ed25519Signature(new utils_1.HexString(sig2).toUint8Array()),
], new utils_1.HexString(bitmap).toUint8Array());
expect(utils_1.HexString.fromUint8Array(multisig.toBytes()).noPrefix()).toEqual("e6f3ba05469b2388492397840183945d4291f0dd3989150de3248e06b4cefe0ddf6180a80a0f04c045ee8f362870cb46918478cd9b56c66076f94f3efd5a88052ae0818b7e51b853f1e43dc4c89a1f5fabc9cb256030a908f9872f3eaeb048fb1e2b4ffd5a9d5d1caedd0c8b7d6155ed8071e913536fa5c5a64327b6f2d9a102c0000000");
});
it("signature deserializes from bytes correctly", async () => {
// eslint-disable-next-line operator-linebreak
const sig1 = "e6f3ba05469b2388492397840183945d4291f0dd3989150de3248e06b4cefe0ddf6180a80a0f04c045ee8f362870cb46918478cd9b56c66076f94f3efd5a8805";
// eslint-disable-next-line operator-linebreak
const sig2 = "2ae0818b7e51b853f1e43dc4c89a1f5fabc9cb256030a908f9872f3eaeb048fb1e2b4ffd5a9d5d1caedd0c8b7d6155ed8071e913536fa5c5a64327b6f2d9a102";
const bitmap = "c0000000";
const multisig = new multi_ed25519_1.MultiEd25519Signature([
new ed25519_1.Ed25519Signature(new utils_1.HexString(sig1).toUint8Array()),
new ed25519_1.Ed25519Signature(new utils_1.HexString(sig2).toUint8Array()),
], new utils_1.HexString(bitmap).toUint8Array());
const deserialzed = multi_ed25519_1.MultiEd25519Signature.deserialize(new bcs_1.Deserializer((0, bcs_1.bcsToBytes)(multisig)));
expect(utils_1.HexString.fromUint8Array(deserialzed.toBytes()).noPrefix()).toEqual(utils_1.HexString.fromUint8Array(multisig.toBytes()).noPrefix());
});
it("creates a valid bitmap", () => {
expect(multi_ed25519_1.MultiEd25519Signature.createBitmap([0, 2, 31])).toEqual(new Uint8Array([0b10100000, 0b00000000, 0b00000000, 0b00000001]));
});
it("throws exception when creating a bitmap with wrong bits", async () => {
expect(() => {
multi_ed25519_1.MultiEd25519Signature.createBitmap([32]);
}).toThrow("Invalid bit value 32.");
});
it("throws exception when creating a bitmap with duplicate bits", async () => {
expect(() => {
multi_ed25519_1.MultiEd25519Signature.createBitmap([2, 2]);
}).toThrow("Duplicated bits detected.");
});
});
//# sourceMappingURL=multi_ed25519.test.js.map