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
JavaScript
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;
;