UNPKG

lighthouse-encryption-sdk-browser

Version:

Encryption SDK: Build your trustless, decentralized and fault resistance Application using distributed key shades with threshold cryptography

39 lines (38 loc) 1.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.recoverKey = void 0; const browser_1 = __importDefault(require("bls-eth-wasm/browser")); const recoverKey = async (keyShards) => { if (!Array.isArray(keyShards) || !(typeof keyShards[0].index == "string") || !(typeof keyShards[0].key == "string")) { throw new Error("keyShards must be an array of objects containing these keys [index, key]"); } try { const idVec = []; const secVec = []; await browser_1.default.init(browser_1.default.BLS12_381).then(() => browser_1.default.getCurveOrder()); keyShards.map((keyShard) => { const sk = new browser_1.default.SecretKey(); //convert readable string into secretKey vectors sk.deserializeHexStr(keyShard.key); secVec.push(sk); //convert readable string into Id vectors const id = new browser_1.default.Id(); id.deserializeHexStr(keyShard.index); idVec.push(id); }); const sec = new browser_1.default.SecretKey(); //recover key sec.recover(secVec, idVec); const s = sec.serializeToHexStr(); return { masterKey: s, error: null }; } catch (err) { return { masterKey: null, error: "can't recover Key" }; } }; exports.recoverKey = recoverKey;