Socket
Socket
Sign inDemoInstall

@hyperledger/cactus-common

Package Overview
Dependencies
Maintainers
0
Versions
58
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hyperledger/cactus-common - npm Package Compare versions

Comparing version 2.0.0-rc.2 to 2.0.0-rc.3

2

dist/lib/test/typescript/unit/key-converter.test.d.ts

@@ -1,1 +0,1 @@

export {};
import "jest-extended";

@@ -6,152 +6,139 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const tape_1 = __importDefault(require("tape"));
require("jest-extended");
const key_encoder_1 = __importDefault(require("key-encoder"));
const public_api_1 = require("../../../main/typescript/public-api");
const key_converter_1 = require("../../../main/typescript/key-converter");
tape_1.default.skip("Test Public Raw key conversion", async (assert) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPublic = Buffer.from(keyPair.publicKey).toString("hex");
const pemPublic = keyEncoder.encodePublic(Buffer.from(keyPair.publicKey).toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Raw);
assert.deepEquals(keyPair.publicKey, convertRawPrivate, "Public Raw => Raw conversion successful");
const convertHexPublic = keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Hex);
assert.equals(hexPublic, convertHexPublic, "Public Raw => Hex conversion successful");
const convertPemPublic = keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
assert.equals(pemPublic, convertPemPublic, "Public Raw => PEM conversion successful");
assert.end();
});
tape_1.default.skip("Test Public Hex key conversion", async (assert) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPublic = Buffer.from(keyPair.publicKey).toString("hex");
const pemPublic = keyEncoder.encodePublic(Buffer.from(keyPair.publicKey).toString("hex"), "raw", "pem");
const convertRawPublic = keyConverter.publicKeyAs(hexPublic, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Raw);
assert.deepEquals(keyPair.publicKey, convertRawPublic, "Public Hex => Raw conversion successful");
const convertHexPublic = keyConverter.publicKeyAs(hexPublic, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Hex);
assert.deepEquals(hexPublic, convertHexPublic, "Public Hex => Hex conversion successful");
const convertPemPublic = keyConverter.publicKeyAs(hexPublic, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.PEM);
assert.deepEquals(pemPublic, convertPemPublic, "Public Hex => PEM conversion successful");
assert.end();
});
tape_1.default.skip("Test Public PEM key conversion", async (assert) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPublic = Buffer.from(keyPair.publicKey).toString("hex");
const pemPublic = keyEncoder.encodePublic(Buffer.from(keyPair.publicKey).toString("hex"), "raw", "pem");
const convertRawPublic = keyConverter.publicKeyAs(pemPublic, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw);
assert.deepEquals(keyPair.publicKey, convertRawPublic, "Public PEM => Raw conversion successful");
const convertHexPublic = keyConverter.publicKeyAs(pemPublic, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Hex);
assert.deepEquals(hexPublic, convertHexPublic, "Public PEM => Hex conversion successful");
const convertPemPublic = keyConverter.publicKeyAs(pemPublic, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.PEM);
assert.deepEquals(pemPublic, convertPemPublic, "Public PEM => PEM conversion successful");
assert.end();
});
tape_1.default.skip("Test Private Raw key conversion", async (assert) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPrivate = keyPair.privateKey.toString("hex");
const pemPrivate = keyEncoder.encodePrivate(keyPair.privateKey.toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Raw);
assert.deepEquals(keyPair.privateKey, convertRawPrivate, "Private Raw => Raw conversion successful");
const convertHexPrivate = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Hex);
assert.equals(hexPrivate, convertHexPrivate, "Private Raw => Hex conversion successful");
const convertPemPrivate = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
assert.equals(pemPrivate, convertPemPrivate, "Private Raw => PEM conversion successful");
assert.end();
});
tape_1.default.skip("Test Private Hex key conversion", async (assert) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPrivate = keyPair.privateKey.toString("hex");
const pemPrivate = keyEncoder.encodePrivate(keyPair.privateKey.toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.privateKeyAs(hexPrivate, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Raw);
assert.deepEquals(keyPair.privateKey, convertRawPrivate, "Private Hex => Raw conversion successful");
const convertHexPrivate = keyConverter.privateKeyAs(hexPrivate, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Hex);
assert.deepEquals(hexPrivate, convertHexPrivate, "Private Hex => Hex conversion successful");
const convertPemPrivate = keyConverter.privateKeyAs(hexPrivate, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.PEM);
assert.deepEquals(pemPrivate, convertPemPrivate, "Private Hex => PEM conversion successful");
assert.end();
});
tape_1.default.skip("Test Private PEM key conversion", async (assert) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPrivate = keyPair.privateKey.toString("hex");
const pemPrivate = keyEncoder.encodePrivate(keyPair.privateKey.toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.privateKeyAs(pemPrivate, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw);
assert.deepEquals(keyPair.privateKey, convertRawPrivate, "Private PEM => Raw conversion successful");
const convertHexPrivate = keyConverter.privateKeyAs(pemPrivate, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Hex);
assert.deepEquals(hexPrivate, convertHexPrivate, "Private PEM => Hex conversion successful");
const convertPemPrivate = keyConverter.privateKeyAs(pemPrivate, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.PEM);
assert.deepEquals(pemPrivate, convertPemPrivate, "Private PEM => PEM conversion successful");
assert.end();
});
tape_1.default.skip("Test invalid from key format", async (t) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
t.throws(() => {
keyConverter.publicKeyAs(keyPair.publicKey, "abc", key_converter_1.KeyFormat.PEM);
}, "KeyConverter#publicKeyAs Invalid KeyFormat");
t.throws(() => {
keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, "abc");
}, "KeyConverter#publicKeyAs Invalid KeyFormat");
t.throws(() => {
keyConverter.privateKeyAs(keyPair.privateKey, "abc", key_converter_1.KeyFormat.PEM);
}, "KeyConverter#privateKeyAs Invalid KeyFormat");
t.throws(() => {
keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, "abc");
}, "KeyConverter#privateKeyAs Invalid KeyFormat");
t.end();
});
tape_1.default.skip("correct signatures after conversion whirlwind", async (t) => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
t.comment(`keyPair.privateKey: ${keyPair.privateKey}`);
t.comment(`privateKey hex: ${keyPair.privateKey.toString("hex")}`);
const privKeyPem = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
t.comment(`privKeyPem: ${privKeyPem}`);
const privKeyHex = keyConverter.privateKeyAs(privKeyPem, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Hex);
t.comment(`privKeyHex: ${privKeyHex}`);
const privKeyRaw = keyConverter.privateKeyAs(privKeyPem, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw);
t.comment(`privKeyBuffer: ${privKeyRaw}`);
t.deepEquals(keyPair.privateKey, privKeyRaw, "privKey equals privKeyRaw");
const privKeyPem2 = keyConverter.privateKeyAs(privKeyHex, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.PEM);
t.comment(`privKeyPem2: ${privKeyPem2}`);
const privKeyPem3 = keyConverter.privateKeyAs(privKeyRaw, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
t.comment(`privKeyPem3: ${privKeyPem3}`);
t.equal(privKeyPem, privKeyPem2, "privKeyPem equals privKeyPem2");
t.equal(privKeyPem, privKeyPem3, "privKeyPem equals privKeyPem3");
t.equal(privKeyPem2, privKeyPem3, "privKeyPem2 equals privKeyPem3");
const payload = "hello";
const signer1 = new public_api_1.JsObjectSigner({
privateKey: keyPair.privateKey,
describe("KeyConverter", () => {
test("Test Public Raw key conversion", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPublic = Buffer.from(keyPair.publicKey).toString("hex");
const pemPublic = keyEncoder.encodePublic(Buffer.from(keyPair.publicKey).toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Raw);
// If the output came back with the wrong type, fail the test.
if (typeof convertRawPrivate === "string") {
throw new Error("Expected Uint8Array not a string because we passed in toFormat as KeyFormat.Raw");
}
expect(keyPair.publicKey).toEqual(convertRawPrivate);
const convertHexPublic = keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Hex);
expect(hexPublic).toEqual(convertHexPublic);
const convertPemPublic = keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
expect(pemPublic).toEqual(convertPemPublic);
});
const signer2 = new public_api_1.JsObjectSigner({
privateKey: keyConverter.privateKeyAs(privKeyPem2, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw),
test("Test Public Hex key conversion", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPublic = Buffer.from(keyPair.publicKey).toString("hex");
const pemPublic = keyEncoder.encodePublic(Buffer.from(keyPair.publicKey).toString("hex"), "raw", "pem");
const convertRawPublic = keyConverter.publicKeyAs(hexPublic, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Raw);
expect(keyPair.publicKey).toEqual(convertRawPublic);
const convertHexPublic = keyConverter.publicKeyAs(hexPublic, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Hex);
expect(hexPublic).toEqual(convertHexPublic);
const convertPemPublic = keyConverter.publicKeyAs(hexPublic, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.PEM);
expect(pemPublic).toEqual(convertPemPublic);
});
const signer3 = new public_api_1.JsObjectSigner({
privateKey: keyConverter.privateKeyAs(privKeyPem3, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw),
test("Test Public PEM key conversion", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPublic = Buffer.from(keyPair.publicKey).toString("hex");
const pemPublic = keyEncoder.encodePublic(Buffer.from(keyPair.publicKey).toString("hex"), "raw", "pem");
const convertRawPublic = keyConverter.publicKeyAs(pemPublic, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw);
expect(keyPair.publicKey).toEqual(convertRawPublic);
const convertHexPublic = keyConverter.publicKeyAs(pemPublic, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Hex);
expect(hexPublic).toEqual(convertHexPublic);
const convertPemPublic = keyConverter.publicKeyAs(pemPublic, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.PEM);
expect(pemPublic).toEqual(convertPemPublic);
});
const signer4 = new public_api_1.JsObjectSigner({
privateKey: keyConverter.privateKeyAs(privKeyHex, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Raw),
test("Test Private Raw key conversion", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPrivate = keyPair.privateKey.toString("hex");
const pemPrivate = keyEncoder.encodePrivate(keyPair.privateKey.toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Raw);
expect(keyPair.privateKey).toEqual(convertRawPrivate);
const convertHexPrivate = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.Hex);
expect(hexPrivate).toEqual(convertHexPrivate);
const convertPemPrivate = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
expect(pemPrivate).toEqual(convertPemPrivate);
});
const signature1 = signer1.sign(payload);
t.comment(`Signature 1: ${signature1}`);
const signature2 = signer2.sign(payload);
t.comment(`Signature 2: ${signature2}`);
const signature3 = signer3.sign(payload);
t.comment(`Signature 3: ${signature3}`);
const signature4 = signer4.sign(payload);
t.comment(`Signature 4: ${signature4}`);
t.deepEquals(signature1, signature2, "signature1 deep equals signature2");
t.deepEquals(signature2, signature3, "signature2 deep equals signature3");
t.deepEquals(signature1, signature4, "signature1 deep equals signature4");
t.end();
test("Test Private Hex key conversion", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPrivate = keyPair.privateKey.toString("hex");
const pemPrivate = keyEncoder.encodePrivate(keyPair.privateKey.toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.privateKeyAs(hexPrivate, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Raw);
expect(keyPair.privateKey).toEqual(convertRawPrivate);
const convertHexPrivate = keyConverter.privateKeyAs(hexPrivate, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Hex);
expect(hexPrivate).toEqual(convertHexPrivate);
const convertPemPrivate = keyConverter.privateKeyAs(hexPrivate, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.PEM);
expect(pemPrivate).toEqual(convertPemPrivate);
});
test("Test Private PEM key conversion", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const keyEncoder = new key_encoder_1.default("secp256k1");
const hexPrivate = keyPair.privateKey.toString("hex");
const pemPrivate = keyEncoder.encodePrivate(keyPair.privateKey.toString("hex"), "raw", "pem");
const convertRawPrivate = keyConverter.privateKeyAs(pemPrivate, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw);
expect(keyPair.privateKey).toEqual(convertRawPrivate);
const convertHexPrivate = keyConverter.privateKeyAs(pemPrivate, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Hex);
expect(hexPrivate).toEqual(convertHexPrivate);
const convertPemPrivate = keyConverter.privateKeyAs(pemPrivate, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.PEM);
expect(pemPrivate).toEqual(convertPemPrivate);
});
test("Test invalid from key format", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
expect(() => {
keyConverter.publicKeyAs(keyPair.publicKey, "abc", key_converter_1.KeyFormat.PEM);
}).toThrow();
expect(() => {
keyConverter.publicKeyAs(keyPair.publicKey, key_converter_1.KeyFormat.Raw, "abc");
}).toThrow();
expect(() => {
keyConverter.privateKeyAs(keyPair.privateKey, "abc", key_converter_1.KeyFormat.PEM);
}).toThrow();
expect(() => {
keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, "abc");
}).toThrow();
});
test("correct signatures after conversion whirlwind", async () => {
const keyConverter = new key_converter_1.KeyConverter();
const keyPair = public_api_1.Secp256k1Keys.generateKeyPairsBuffer();
const privKeyPem = keyConverter.privateKeyAs(keyPair.privateKey, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
const privKeyHex = keyConverter.privateKeyAs(privKeyPem, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Hex);
const privKeyRaw = keyConverter.privateKeyAs(privKeyPem, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw);
expect(keyPair.privateKey).toEqual(privKeyRaw);
const privKeyPem2 = keyConverter.privateKeyAs(privKeyHex, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.PEM);
const privKeyPem3 = keyConverter.privateKeyAs(privKeyRaw, key_converter_1.KeyFormat.Raw, key_converter_1.KeyFormat.PEM);
expect(privKeyPem).toEqual(privKeyPem2);
expect(privKeyPem).toEqual(privKeyPem3);
expect(privKeyPem2).toEqual(privKeyPem3);
const payload = "hello";
const signer1 = new public_api_1.JsObjectSigner({
privateKey: keyPair.privateKey,
});
const signer2 = new public_api_1.JsObjectSigner({
privateKey: keyConverter.privateKeyAs(privKeyPem2, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw),
});
const signer3 = new public_api_1.JsObjectSigner({
privateKey: keyConverter.privateKeyAs(privKeyPem3, key_converter_1.KeyFormat.PEM, key_converter_1.KeyFormat.Raw),
});
const signer4 = new public_api_1.JsObjectSigner({
privateKey: keyConverter.privateKeyAs(privKeyHex, key_converter_1.KeyFormat.Hex, key_converter_1.KeyFormat.Raw),
});
const signature1 = signer1.sign(payload);
const signature2 = signer2.sign(payload);
const signature3 = signer3.sign(payload);
const signature4 = signer4.sign(payload);
expect(signature1).toEqual(signature2);
expect(signature2).toEqual(signature3);
expect(signature1).toEqual(signature4);
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWNvbnZlcnRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Rlc3QvdHlwZXNjcmlwdC91bml0L2tleS1jb252ZXJ0ZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUFrQztBQUVsQyw4REFBcUM7QUFFckMsb0VBRzZDO0FBRTdDLDBFQUdnRDtBQUVoRCxjQUFJLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxNQUFZLEVBQUUsRUFBRTtJQUNqRSxNQUFNLFlBQVksR0FBRyxJQUFJLDRCQUFZLEVBQUUsQ0FBQztJQUN4QyxNQUFNLE9BQU8sR0FBRywwQkFBYSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDdkQsTUFBTSxVQUFVLEdBQWUsSUFBSSxxQkFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQzlDLEtBQUssRUFDTCxLQUFLLENBQ04sQ0FBQztJQUVGLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FDaEQsT0FBTyxDQUFDLFNBQVMsRUFDakIseUJBQVMsQ0FBQyxHQUFHLEVBQ2IseUJBQVMsQ0FBQyxHQUFHLENBQ2QsQ0FBQztJQUNGLE1BQU0sQ0FBQyxVQUFVLENBQ2YsT0FBTyxDQUFDLFNBQVMsRUFDakIsaUJBQWlCLEVBQ2pCLHlDQUF5QyxDQUMxQyxDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUMvQyxPQUFPLENBQUMsU0FBUyxFQUNq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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWNvbnZlcnRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Rlc3QvdHlwZXNjcmlwdC91bml0L2tleS1jb252ZXJ0ZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF1QjtBQUV2Qiw4REFBcUM7QUFFckMsb0VBRzZDO0FBRTdDLDBFQUdnRDtBQUVoRCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBWSxFQUFFLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsMEJBQWEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFlLElBQUkscUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUM5QyxLQUFLLEVBQ0wsS0FBSyxDQUNOLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ2hELE9BQU8sQ0FBQyxTQUFTLEVBQ2pCLHlCQUFTLENBQUMsR0FBRyxFQUNiLHlCQUFTLENBQUMsR0FBRyxDQUNkLENBQUM7UUFFRiw4REFBOEQ7UUFDOUQsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUZBQWlGLENBQ2xGLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxDQUFD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
{
"name": "@hyperledger/cactus-common",
"version": "2.0.0-rc.2",
"version": "2.0.0-rc.3",
"description": "Universal library used by both front end and back end components of Cactus. Aims to be a developer swiss army knife.",

@@ -73,4 +73,4 @@ "keywords": [

"@types/secp256k1": "4.0.3",
"@types/uuid": "9.0.8",
"uuid": "9.0.1"
"@types/uuid": "10.0.0",
"uuid": "10.0.0"
},

@@ -87,3 +87,3 @@ "engines": {

"watch": {},
"gitHead": "fc9df672cbd30a28d13cb388643b3a51f18304c0"
"gitHead": "1ce7c605778ef4cc53e78e480e70dc48669ebf5b"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc