@toruslabs/rss-client
Advanced tools
Comparing version 1.2.0 to 1.2.1
@@ -65,3 +65,4 @@ /******/ (() => { // webpackBootstrap | ||
"lagrangeInterpolation": () => (/* reexport */ lagrangeInterpolation), | ||
"randomSelection": () => (/* reexport */ randomSelection) | ||
"randomSelection": () => (/* reexport */ randomSelection), | ||
"recover": () => (/* reexport */ recover) | ||
}); | ||
@@ -641,57 +642,55 @@ | ||
}() | ||
}, { | ||
key: "recover", | ||
value: function () { | ||
var _recover = asyncToGenerator_default()( /*#__PURE__*/regenerator_default().mark(function _callee2(opts) { | ||
var factorKey, serverEncs, userEnc, selectedServers, factorKeyBuf, prom1, prom2, _yield$Promise$all, _yield$Promise$all2, decryptedUserEnc, decryptedServerEncs, someDecrypted, decryptedLCs, temp1, serverReconstructed, temp2, factorShare; | ||
return regenerator_default().wrap(function _callee2$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
factorKey = opts.factorKey, serverEncs = opts.serverEncs, userEnc = opts.userEnc, selectedServers = opts.selectedServers; | ||
factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
prom1 = decrypt(factorKeyBuf, userEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
prom2 = Promise.all(serverEncs.map(function (serverEnc) { | ||
return serverEnc && decrypt(factorKeyBuf, serverEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
})); | ||
_context3.next = 6; | ||
return Promise.all([prom1, prom2]); | ||
case 6: | ||
_yield$Promise$all = _context3.sent; | ||
_yield$Promise$all2 = slicedToArray_default()(_yield$Promise$all, 2); | ||
decryptedUserEnc = _yield$Promise$all2[0]; | ||
decryptedServerEncs = _yield$Promise$all2[1]; | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
someDecrypted = decryptedServerEncs.filter(function (_, j) { | ||
return selectedServers.indexOf(j + 1) >= 0; | ||
}); | ||
decryptedLCs = selectedServers.map(function (index) { | ||
return getLagrangeCoeffs(selectedServers, index); | ||
}); | ||
temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
factorShare = temp1.add(temp2).umod(ecCurve.n); | ||
return _context3.abrupt("return", { | ||
factorShare: factorShare | ||
}); | ||
case 17: | ||
case "end": | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2); | ||
})); | ||
function recover(_x2) { | ||
return _recover.apply(this, arguments); | ||
} | ||
return recover; | ||
}() | ||
}]); | ||
return RSSClient; | ||
}(); | ||
function recover(_x2) { | ||
return _recover.apply(this, arguments); | ||
} | ||
function _recover() { | ||
_recover = asyncToGenerator_default()( /*#__PURE__*/regenerator_default().mark(function _callee2(opts) { | ||
var factorKey, serverEncs, userEnc, selectedServers, factorKeyBuf, prom1, prom2, _yield$Promise$all, _yield$Promise$all2, decryptedUserEnc, decryptedServerEncs, someDecrypted, decryptedLCs, temp1, serverReconstructed, temp2, tssShare; | ||
return regenerator_default().wrap(function _callee2$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
factorKey = opts.factorKey, serverEncs = opts.serverEncs, userEnc = opts.userEnc, selectedServers = opts.selectedServers; | ||
factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
prom1 = decrypt(factorKeyBuf, userEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
prom2 = Promise.all(serverEncs.map(function (serverEnc) { | ||
return serverEnc && decrypt(factorKeyBuf, serverEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
})); | ||
_context3.next = 6; | ||
return Promise.all([prom1, prom2]); | ||
case 6: | ||
_yield$Promise$all = _context3.sent; | ||
_yield$Promise$all2 = slicedToArray_default()(_yield$Promise$all, 2); | ||
decryptedUserEnc = _yield$Promise$all2[0]; | ||
decryptedServerEncs = _yield$Promise$all2[1]; | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
someDecrypted = decryptedServerEncs.filter(function (_, j) { | ||
return selectedServers.indexOf(j + 1) >= 0; | ||
}); | ||
decryptedLCs = selectedServers.map(function (index) { | ||
return getLagrangeCoeffs(selectedServers, index); | ||
}); | ||
temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
tssShare = temp1.add(temp2).umod(ecCurve.n); | ||
return _context3.abrupt("return", { | ||
tssShare: tssShare | ||
}); | ||
case 17: | ||
case "end": | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2); | ||
})); | ||
return _recover.apply(this, arguments); | ||
} | ||
;// CONCATENATED MODULE: ./src/index.ts | ||
@@ -698,0 +697,0 @@ |
@@ -65,3 +65,4 @@ /******/ (() => { // webpackBootstrap | ||
"lagrangeInterpolation": () => (/* reexport */ lagrangeInterpolation), | ||
"randomSelection": () => (/* reexport */ randomSelection) | ||
"randomSelection": () => (/* reexport */ randomSelection), | ||
"recover": () => (/* reexport */ recover) | ||
}); | ||
@@ -641,57 +642,55 @@ | ||
}() | ||
}, { | ||
key: "recover", | ||
value: function () { | ||
var _recover = asyncToGenerator_default()( /*#__PURE__*/regenerator_default().mark(function _callee2(opts) { | ||
var factorKey, serverEncs, userEnc, selectedServers, factorKeyBuf, prom1, prom2, _yield$Promise$all, _yield$Promise$all2, decryptedUserEnc, decryptedServerEncs, someDecrypted, decryptedLCs, temp1, serverReconstructed, temp2, factorShare; | ||
return regenerator_default().wrap(function _callee2$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
factorKey = opts.factorKey, serverEncs = opts.serverEncs, userEnc = opts.userEnc, selectedServers = opts.selectedServers; | ||
factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
prom1 = decrypt(factorKeyBuf, userEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
prom2 = Promise.all(serverEncs.map(function (serverEnc) { | ||
return serverEnc && decrypt(factorKeyBuf, serverEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
})); | ||
_context3.next = 6; | ||
return Promise.all([prom1, prom2]); | ||
case 6: | ||
_yield$Promise$all = _context3.sent; | ||
_yield$Promise$all2 = slicedToArray_default()(_yield$Promise$all, 2); | ||
decryptedUserEnc = _yield$Promise$all2[0]; | ||
decryptedServerEncs = _yield$Promise$all2[1]; | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
someDecrypted = decryptedServerEncs.filter(function (_, j) { | ||
return selectedServers.indexOf(j + 1) >= 0; | ||
}); | ||
decryptedLCs = selectedServers.map(function (index) { | ||
return getLagrangeCoeffs(selectedServers, index); | ||
}); | ||
temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
factorShare = temp1.add(temp2).umod(ecCurve.n); | ||
return _context3.abrupt("return", { | ||
factorShare: factorShare | ||
}); | ||
case 17: | ||
case "end": | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2); | ||
})); | ||
function recover(_x2) { | ||
return _recover.apply(this, arguments); | ||
} | ||
return recover; | ||
}() | ||
}]); | ||
return RSSClient; | ||
}(); | ||
function recover(_x2) { | ||
return _recover.apply(this, arguments); | ||
} | ||
function _recover() { | ||
_recover = asyncToGenerator_default()( /*#__PURE__*/regenerator_default().mark(function _callee2(opts) { | ||
var factorKey, serverEncs, userEnc, selectedServers, factorKeyBuf, prom1, prom2, _yield$Promise$all, _yield$Promise$all2, decryptedUserEnc, decryptedServerEncs, someDecrypted, decryptedLCs, temp1, serverReconstructed, temp2, tssShare; | ||
return regenerator_default().wrap(function _callee2$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
factorKey = opts.factorKey, serverEncs = opts.serverEncs, userEnc = opts.userEnc, selectedServers = opts.selectedServers; | ||
factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
prom1 = decrypt(factorKeyBuf, userEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
prom2 = Promise.all(serverEncs.map(function (serverEnc) { | ||
return serverEnc && decrypt(factorKeyBuf, serverEnc).then(function (buf) { | ||
return new (external_bn_js_default())(buf); | ||
}); | ||
})); | ||
_context3.next = 6; | ||
return Promise.all([prom1, prom2]); | ||
case 6: | ||
_yield$Promise$all = _context3.sent; | ||
_yield$Promise$all2 = slicedToArray_default()(_yield$Promise$all, 2); | ||
decryptedUserEnc = _yield$Promise$all2[0]; | ||
decryptedServerEncs = _yield$Promise$all2[1]; | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
someDecrypted = decryptedServerEncs.filter(function (_, j) { | ||
return selectedServers.indexOf(j + 1) >= 0; | ||
}); | ||
decryptedLCs = selectedServers.map(function (index) { | ||
return getLagrangeCoeffs(selectedServers, index); | ||
}); | ||
temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
tssShare = temp1.add(temp2).umod(ecCurve.n); | ||
return _context3.abrupt("return", { | ||
tssShare: tssShare | ||
}); | ||
case 17: | ||
case "end": | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2); | ||
})); | ||
return _recover.apply(this, arguments); | ||
} | ||
;// CONCATENATED MODULE: ./src/index.ts | ||
@@ -698,0 +697,0 @@ |
@@ -533,59 +533,57 @@ import _slicedToArray from '@babel/runtime/helpers/slicedToArray'; | ||
}() | ||
}, { | ||
key: "recover", | ||
value: function () { | ||
var _recover = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(opts) { | ||
var factorKey, serverEncs, userEnc, selectedServers, factorKeyBuf, prom1, prom2, _yield$Promise$all, _yield$Promise$all2, decryptedUserEnc, decryptedServerEncs, someDecrypted, decryptedLCs, temp1, serverReconstructed, temp2, factorShare; | ||
return _regeneratorRuntime.wrap(function _callee2$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
factorKey = opts.factorKey, serverEncs = opts.serverEncs, userEnc = opts.userEnc, selectedServers = opts.selectedServers; | ||
factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
prom1 = decrypt(factorKeyBuf, userEnc).then(function (buf) { | ||
return new BN(buf); | ||
}); | ||
prom2 = Promise.all(serverEncs.map(function (serverEnc) { | ||
return serverEnc && decrypt(factorKeyBuf, serverEnc).then(function (buf) { | ||
return new BN(buf); | ||
}); | ||
})); | ||
_context3.next = 6; | ||
return Promise.all([prom1, prom2]); | ||
case 6: | ||
_yield$Promise$all = _context3.sent; | ||
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2); | ||
decryptedUserEnc = _yield$Promise$all2[0]; | ||
decryptedServerEncs = _yield$Promise$all2[1]; | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
someDecrypted = decryptedServerEncs.filter(function (_, j) { | ||
return selectedServers.indexOf(j + 1) >= 0; | ||
}); | ||
decryptedLCs = selectedServers.map(function (index) { | ||
return getLagrangeCoeffs(selectedServers, index); | ||
}); | ||
temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
factorShare = temp1.add(temp2).umod(ecCurve.n); | ||
return _context3.abrupt("return", { | ||
factorShare: factorShare | ||
}); | ||
case 17: | ||
case "end": | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2); | ||
})); | ||
function recover(_x2) { | ||
return _recover.apply(this, arguments); | ||
} | ||
return recover; | ||
}() | ||
}]); | ||
return RSSClient; | ||
}(); | ||
function recover(_x2) { | ||
return _recover.apply(this, arguments); | ||
} | ||
function _recover() { | ||
_recover = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(opts) { | ||
var factorKey, serverEncs, userEnc, selectedServers, factorKeyBuf, prom1, prom2, _yield$Promise$all, _yield$Promise$all2, decryptedUserEnc, decryptedServerEncs, someDecrypted, decryptedLCs, temp1, serverReconstructed, temp2, tssShare; | ||
return _regeneratorRuntime.wrap(function _callee2$(_context3) { | ||
while (1) { | ||
switch (_context3.prev = _context3.next) { | ||
case 0: | ||
factorKey = opts.factorKey, serverEncs = opts.serverEncs, userEnc = opts.userEnc, selectedServers = opts.selectedServers; | ||
factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
prom1 = decrypt(factorKeyBuf, userEnc).then(function (buf) { | ||
return new BN(buf); | ||
}); | ||
prom2 = Promise.all(serverEncs.map(function (serverEnc) { | ||
return serverEnc && decrypt(factorKeyBuf, serverEnc).then(function (buf) { | ||
return new BN(buf); | ||
}); | ||
})); | ||
_context3.next = 6; | ||
return Promise.all([prom1, prom2]); | ||
case 6: | ||
_yield$Promise$all = _context3.sent; | ||
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2); | ||
decryptedUserEnc = _yield$Promise$all2[0]; | ||
decryptedServerEncs = _yield$Promise$all2[1]; | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
someDecrypted = decryptedServerEncs.filter(function (_, j) { | ||
return selectedServers.indexOf(j + 1) >= 0; | ||
}); | ||
decryptedLCs = selectedServers.map(function (index) { | ||
return getLagrangeCoeffs(selectedServers, index); | ||
}); | ||
temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
tssShare = temp1.add(temp2).umod(ecCurve.n); | ||
return _context3.abrupt("return", { | ||
tssShare: tssShare | ||
}); | ||
case 17: | ||
case "end": | ||
return _context3.stop(); | ||
} | ||
} | ||
}, _callee2); | ||
})); | ||
return _recover.apply(this, arguments); | ||
} | ||
export { RSSClient, decrypt, dotProduct, ecCurve, ecPoint, encrypt, generatePolynomial, getLagrangeCoeffs, getShare, hexPoint, lagrangeInterpolation, randomSelection }; | ||
export { RSSClient, decrypt, dotProduct, ecCurve, ecPoint, encrypt, generatePolynomial, getLagrangeCoeffs, getShare, hexPoint, lagrangeInterpolation, randomSelection, recover }; | ||
//# sourceMappingURL=rssClient.esm.js.map |
@@ -55,3 +55,3 @@ import BN from "bn.js"; | ||
export type RecoverResponse = { | ||
factorShare: BN; | ||
tssShare: BN; | ||
}; | ||
@@ -67,3 +67,3 @@ export declare class RSSClient { | ||
refresh(opts: RefreshOptions): Promise<RefreshResponse[]>; | ||
recover(opts: RecoverOptions): Promise<RecoverResponse>; | ||
} | ||
export declare function recover(opts: RecoverOptions): Promise<RecoverResponse>; |
{ | ||
"name": "@toruslabs/rss-client", | ||
"version": "1.2.0", | ||
"version": "1.2.1", | ||
"description": "RSS Client", | ||
@@ -5,0 +5,0 @@ "main": "dist/rssClient.cjs.js", |
@@ -89,3 +89,3 @@ import { generatePrivate } from "@toruslabs/eccrypto"; | ||
export type RecoverResponse = { | ||
factorShare: BN; | ||
tssShare: BN; | ||
}; | ||
@@ -372,19 +372,19 @@ | ||
} | ||
} | ||
async recover(opts: RecoverOptions): Promise<RecoverResponse> { | ||
const { factorKey, serverEncs, userEnc, selectedServers } = opts; | ||
const factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
const prom1 = decrypt(factorKeyBuf, userEnc).then((buf) => new BN(buf)); | ||
const prom2 = Promise.all(serverEncs.map((serverEnc) => serverEnc && decrypt(factorKeyBuf, serverEnc).then((buf) => new BN(buf)))); | ||
const [decryptedUserEnc, decryptedServerEncs] = await Promise.all([prom1, prom2]); | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
const someDecrypted = decryptedServerEncs.filter((_, j) => selectedServers.indexOf(j + 1) >= 0); | ||
const decryptedLCs = selectedServers.map((index) => getLagrangeCoeffs(selectedServers, index)); | ||
const temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
const serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
const temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
const factorShare = temp1.add(temp2).umod(ecCurve.n); | ||
export async function recover(opts: RecoverOptions): Promise<RecoverResponse> { | ||
const { factorKey, serverEncs, userEnc, selectedServers } = opts; | ||
const factorKeyBuf = Buffer.from(factorKey.toString(16, 64), "hex"); | ||
const prom1 = decrypt(factorKeyBuf, userEnc).then((buf) => new BN(buf)); | ||
const prom2 = Promise.all(serverEncs.map((serverEnc) => serverEnc && decrypt(factorKeyBuf, serverEnc).then((buf) => new BN(buf)))); | ||
const [decryptedUserEnc, decryptedServerEncs] = await Promise.all([prom1, prom2]); | ||
// use threshold number of factor encryptions from the servers to interpolate server share | ||
const someDecrypted = decryptedServerEncs.filter((_, j) => selectedServers.indexOf(j + 1) >= 0); | ||
const decryptedLCs = selectedServers.map((index) => getLagrangeCoeffs(selectedServers, index)); | ||
const temp1 = decryptedUserEnc.mul(getLagrangeCoeffs([1, 2], 2)); | ||
const serverReconstructed = dotProduct(someDecrypted, decryptedLCs).umod(ecCurve.n); | ||
const temp2 = serverReconstructed.mul(getLagrangeCoeffs([1, 2], 1)); | ||
const tssShare = temp1.add(temp2).umod(ecCurve.n); | ||
return { factorShare }; | ||
} | ||
return { tssShare }; | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
3560590
27159