New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@toruslabs/torus.js

Package Overview
Dependencies
Maintainers
3
Versions
138
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@toruslabs/torus.js - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

110

dist/httpHelpers.js

@@ -1,30 +0,64 @@

"use strict";
'use strict'
Object.defineProperty(exports, "__esModule", {
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.generateJsonRPCObject = exports.post = exports.promiseTimeout = void 0;
})
exports.generateJsonRPCObject = exports.post = exports.promiseTimeout = void 0
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object)
if (enumerableOnly)
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable
})
keys.push.apply(keys, symbols)
}
return keys
}
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {}
if (i % 2) {
ownKeys(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key])
})
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))
})
}
}
return target
}
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true })
} else {
obj[key] = value
}
return obj
}
var promiseTimeout = function promiseTimeout(ms, promise) {
var timeout = new Promise(function (resolve, reject) {
var id = setTimeout(function () {
clearTimeout(id);
reject(new Error('Timed out in ' + ms + 'ms'));
}, ms);
});
return Promise.race([promise, timeout]);
};
var timeout = new Promise(function(resolve, reject) {
var id = setTimeout(function() {
clearTimeout(id)
reject(new Error('Timed out in ' + ms + 'ms'))
}, ms)
})
return Promise.race([promise, timeout])
}
exports.promiseTimeout = promiseTimeout;
exports.promiseTimeout = promiseTimeout
var post = function post() {
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}
var defaultOptions = {

@@ -37,16 +71,26 @@ mode: 'cors',

body: JSON.stringify(data)
};
}
var options = _objectSpread({}, defaultOptions, {}, opts, {}, {
method: 'POST'
});
var options = _objectSpread(
{},
defaultOptions,
{},
opts,
{},
{
method: 'POST'
}
)
return promiseTimeout(12000, fetch(url, options).then(function (response) {
if (response.ok) {
return response.json();
} else throw new Error('Could not connect', response);
}));
};
return promiseTimeout(
12000,
fetch(url, options).then(function(response) {
if (response.ok) {
return response.json()
} else throw new Error('Could not connect', response)
})
)
}
exports.post = post;
exports.post = post

@@ -59,5 +103,5 @@ var generateJsonRPCObject = function generateJsonRPCObject(method, params) {

params: params
};
};
}
}
exports.generateJsonRPCObject = generateJsonRPCObject;
exports.generateJsonRPCObject = generateJsonRPCObject

@@ -1,35 +0,40 @@

"use strict";
'use strict'
Object.defineProperty(exports, "__esModule", {
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.Some = void 0;
})
exports.Some = void 0
var Some = function Some(promises, predicate) {
return new Promise(function (resolve, reject) {
var finishedCount = 0;
var resolved = false;
var resultArr = new Array(promises.length).fill(undefined);
promises.forEach(function (x, index) {
x.then(function (resp) {
resultArr[index] = resp;
})["catch"](function (_) {})["finally"](function () {
if (resolved) return;
predicate(resultArr.slice(0)).then(function (data) {
resolved = true;
resolve(data);
})["catch"](function (_) {
return undefined;
})["finally"](function (_) {
finishedCount++;
return new Promise(function(resolve, reject) {
var finishedCount = 0
var resolved = false
var resultArr = new Array(promises.length).fill(undefined)
promises.forEach(function(x, index) {
x.then(function(resp) {
resultArr[index] = resp
})
['catch'](function(_) {})
['finally'](function() {
if (resolved) return
predicate(resultArr.slice(0))
.then(function(data) {
resolved = true
resolve(data)
})
['catch'](function(_) {
return undefined
})
['finally'](function(_) {
finishedCount++
if (finishedCount === promises.length) {
reject(new Error('Unable to resolve enough promises, responses: ' + JSON.stringify(resultArr)));
}
});
});
});
});
};
if (finishedCount === promises.length) {
reject(new Error('Unable to resolve enough promises, responses: ' + JSON.stringify(resultArr)))
}
})
})
})
})
}
exports.Some = Some;
exports.Some = Some

@@ -1,57 +0,138 @@

"use strict";
'use strict'
Object.defineProperty(exports, "__esModule", {
Object.defineProperty(exports, '__esModule', {
value: true
});
exports["default"] = void 0;
})
exports['default'] = void 0
var _elliptic = require("elliptic");
var _elliptic = require('elliptic')
var _eccrypto = _interopRequireDefault(require("eccrypto"));
var _eccrypto = _interopRequireDefault(require('eccrypto'))
var _web3Utils = require("web3-utils");
var _web3Utils = require('web3-utils')
var _bn = _interopRequireDefault(require("bn.js"));
var _bn = _interopRequireDefault(require('bn.js'))
var _httpHelpers = require("./httpHelpers");
var _httpHelpers = require('./httpHelpers')
var _some = require("./some");
var _some = require('./some')
var _utils = require("./utils");
var _utils = require('./utils')
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj }
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg)
var value = info.value
} catch (error) {
reject(error)
return
}
if (info.done) {
resolve(value)
} else {
Promise.resolve(value).then(_next, _throw)
}
}
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _asyncToGenerator(fn) {
return function() {
var self = this,
args = arguments
return new Promise(function(resolve, reject) {
var gen = fn.apply(self, args)
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value)
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err)
}
_next(undefined)
})
}
}
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object)
if (enumerableOnly)
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable
})
keys.push.apply(keys, symbols)
}
return keys
}
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {}
if (i % 2) {
ownKeys(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key])
})
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))
})
}
}
return target
}
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true })
} else {
obj[key] = value
}
return obj
}
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function')
}
}
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i]
descriptor.enumerable = descriptor.enumerable || false
descriptor.configurable = true
if ('value' in descriptor) descriptor.writable = true
Object.defineProperty(target, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps)
if (staticProps) _defineProperties(Constructor, staticProps)
return Constructor
}
var Torus =
/*#__PURE__*/
function () {
function Torus() {
_classCallCheck(this, Torus);
/*#__PURE__*/
(function() {
function Torus() {
_classCallCheck(this, Torus)
this.ec = (0, _elliptic.ec)('secp256k1');
}
this.ec = (0, _elliptic.ec)('secp256k1')
}
_createClass(Torus, [{
key: "retrieveShares",
value: function retrieveShares(endpoints, indexes, verifier, verifierParams, idToken) {
var _this = this;
_createClass(Torus, [
{
key: 'retrieveShares',
value: function retrieveShares(endpoints, indexes, verifier, verifierParams, idToken) {
var _this = this
return new Promise(function (resolve, reject) {
var promiseArr = [];
/*
return new Promise(function(resolve, reject) {
var promiseArr = []
/*
CommitmentRequestParams struct {

@@ -66,26 +147,29 @@ MessagePrefix string `json:"messageprefix"`

*/
// generate temporary private and public key that is used to secure receive shares
// generate temporary private and public key that is used to secure receive shares
var tmpKey = _eccrypto["default"].generatePrivate();
var tmpKey = _eccrypto['default'].generatePrivate()
var pubKey = _eccrypto["default"].getPublic(tmpKey).toString('hex');
var pubKey = _eccrypto['default'].getPublic(tmpKey).toString('hex')
var pubKeyX = pubKey.slice(2, 66);
var pubKeyY = pubKey.slice(66);
var tokenCommitment = (0, _web3Utils.keccak256)(idToken); // make commitment requests to endpoints
var pubKeyX = pubKey.slice(2, 66)
var pubKeyY = pubKey.slice(66)
var tokenCommitment = (0, _web3Utils.keccak256)(idToken) // make commitment requests to endpoints
for (var i = 0; i < endpoints.length; i++) {
var p = (0, _httpHelpers.post)(endpoints[i], (0, _httpHelpers.generateJsonRPCObject)('CommitmentRequest', {
messageprefix: 'mug00',
tokencommitment: tokenCommitment.slice(2),
temppubx: pubKeyX,
temppuby: pubKeyY,
timestamp: (Date.now() - 2000).toString().slice(0, 10),
verifieridentifier: verifier
}))["catch"](function (_) {
return undefined;
});
promiseArr.push(p);
}
/*
for (var i = 0; i < endpoints.length; i++) {
var p = (0, _httpHelpers.post)(
endpoints[i],
(0, _httpHelpers.generateJsonRPCObject)('CommitmentRequest', {
messageprefix: 'mug00',
tokencommitment: tokenCommitment.slice(2),
temppubx: pubKeyX,
temppuby: pubKeyY,
timestamp: (Date.now() - 2000).toString().slice(0, 10),
verifieridentifier: verifier
})
)['catch'](function(_) {
return undefined
})
promiseArr.push(p)
}
/*
ShareRequestParams struct {

@@ -112,51 +196,70 @@ Item []bijson.RawMessage `json:"item"`

*/
// send share request once k + t number of commitment requests have completed
// send share request once k + t number of commitment requests have completed
;(0, _some.Some)(promiseArr, function(resultArr) {
var completedRequests = resultArr.filter(function(x) {
return x
})
(0, _some.Some)(promiseArr, function (resultArr) {
var completedRequests = resultArr.filter(function (x) {
return x;
});
if (completedRequests.length >= ~~(endpoints.length / 4) * 3 + 1) {
return Promise.resolve(resultArr)
}
if (completedRequests.length >= ~~(endpoints.length / 4) * 3 + 1) {
return Promise.resolve(resultArr);
}
return Promise.reject(new Error('invalid'))
})
.then(function(responses) {
var promiseArrRequest = []
var nodeSigs = []
return Promise.reject(new Error('invalid'));
}).then(function (responses) {
var promiseArrRequest = [];
var nodeSigs = [];
for (var _i = 0; _i < responses.length; _i++) {
if (responses[_i]) nodeSigs.push(responses[_i].result)
}
for (var _i = 0; _i < responses.length; _i++) {
if (responses[_i]) nodeSigs.push(responses[_i].result);
}
for (var _i2 = 0; _i2 < endpoints.length; _i2++) {
var _p = (0, _httpHelpers.post)(
endpoints[_i2],
(0, _httpHelpers.generateJsonRPCObject)('ShareRequest', {
encrypted: 'yes',
item: [
_objectSpread({}, verifierParams, {
idtoken: idToken,
nodesignatures: nodeSigs,
verifieridentifier: verifier
})
]
})
)['catch'](function(_) {
return undefined
})
for (var _i2 = 0; _i2 < endpoints.length; _i2++) {
var _p = (0, _httpHelpers.post)(endpoints[_i2], (0, _httpHelpers.generateJsonRPCObject)('ShareRequest', {
encrypted: 'yes',
item: [_objectSpread({}, verifierParams, {
idtoken: idToken,
nodesignatures: nodeSigs,
verifieridentifier: verifier
})]
}))["catch"](function (_) {
return undefined;
});
promiseArrRequest.push(_p)
}
promiseArrRequest.push(_p);
}
return (0, _some.Some)(
promiseArrRequest,
/*#__PURE__*/
(function() {
var _ref = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee(shareResponses) {
var completedRequests,
thresholdPublicKey,
sharePromises,
nodeIndex,
i,
metadata,
sharesResolved,
decryptedShares,
allCombis,
privateKey,
_loop,
j,
_ret,
ethAddress
return (0, _some.Some)(promiseArrRequest,
/*#__PURE__*/
function () {
var _ref = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee(shareResponses) {
var completedRequests, thresholdPublicKey, sharePromises, nodeIndex, i, metadata, sharesResolved, decryptedShares, allCombis, privateKey, _loop, j, _ret, ethAddress;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
/*
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch ((_context.prev = _context.next)) {
case 0:
/*
ShareRequestResult struct {

@@ -178,231 +281,264 @@ Keys []KeyAssignment

*/
// check if threshold number of nodes have returned the same user public key
completedRequests = shareResponses.filter(function (x) {
return x;
});
thresholdPublicKey = (0, _utils.thresholdSame)(shareResponses.map(function (x) {
return x && x.result && x.result.keys[0].PublicKey;
}), ~~(endpoints.length / 2) + 1); // optimistically run lagrange interpolation once threshold number of shares have been received
// this is matched against the user public key to ensure that shares are consistent
// check if threshold number of nodes have returned the same user public key
completedRequests = shareResponses.filter(function(x) {
return x
})
thresholdPublicKey = (0, _utils.thresholdSame)(
shareResponses.map(function(x) {
return x && x.result && x.result.keys[0].PublicKey
}),
~~(endpoints.length / 2) + 1
) // optimistically run lagrange interpolation once threshold number of shares have been received
// this is matched against the user public key to ensure that shares are consistent
if (!(completedRequests.length >= ~~(endpoints.length / 2) + 1 && thresholdPublicKey)) {
_context.next = 24;
break;
}
if (!(completedRequests.length >= ~~(endpoints.length / 2) + 1 && thresholdPublicKey)) {
_context.next = 24
break
}
sharePromises = [];
nodeIndex = [];
sharePromises = []
nodeIndex = []
for (i = 0; i < shareResponses.length; i++) {
if (shareResponses[i] && shareResponses[i].result && shareResponses[i].result.keys && shareResponses[i].result.keys.length > 0) {
shareResponses[i].result.keys.sort(function (a, b) {
return new _bn["default"](a.Index, 16).cmp(new _bn["default"](b.Index, 16));
});
for (i = 0; i < shareResponses.length; i++) {
if (
shareResponses[i] &&
shareResponses[i].result &&
shareResponses[i].result.keys &&
shareResponses[i].result.keys.length > 0
) {
shareResponses[i].result.keys.sort(function(a, b) {
return new _bn['default'](a.Index, 16).cmp(new _bn['default'](b.Index, 16))
})
if (shareResponses[i].result.keys[0].Metadata) {
metadata = {
ephemPublicKey: Buffer.from(shareResponses[i].result.keys[0].Metadata.ephemPublicKey, 'hex'),
iv: Buffer.from(shareResponses[i].result.keys[0].Metadata.iv, 'hex'),
mac: Buffer.from(shareResponses[i].result.keys[0].Metadata.mac, 'hex'),
mode: Buffer.from(shareResponses[i].result.keys[0].Metadata.mode, 'hex')
};
sharePromises.push(_eccrypto["default"].decrypt(tmpKey, _objectSpread({}, metadata, {
ciphertext: Buffer.from(atob(shareResponses[i].result.keys[0].Share).padStart(64, '0'), 'hex')
}))["catch"](function (_) {
return undefined;
}));
} else {
sharePromises.push(Promise.resolve(Buffer.from(shareResponses[i].result.keys[0].Share.padStart(64, '0'), 'hex')));
}
} else {
sharePromises.push(Promise.resolve(undefined));
}
if (shareResponses[i].result.keys[0].Metadata) {
metadata = {
ephemPublicKey: Buffer.from(shareResponses[i].result.keys[0].Metadata.ephemPublicKey, 'hex'),
iv: Buffer.from(shareResponses[i].result.keys[0].Metadata.iv, 'hex'),
mac: Buffer.from(shareResponses[i].result.keys[0].Metadata.mac, 'hex'),
mode: Buffer.from(shareResponses[i].result.keys[0].Metadata.mode, 'hex')
}
sharePromises.push(
_eccrypto['default']
.decrypt(
tmpKey,
_objectSpread({}, metadata, {
ciphertext: Buffer.from(atob(shareResponses[i].result.keys[0].Share).padStart(64, '0'), 'hex')
})
)
['catch'](function(_) {
return undefined
})
)
} else {
sharePromises.push(
Promise.resolve(Buffer.from(shareResponses[i].result.keys[0].Share.padStart(64, '0'), 'hex'))
)
}
} else {
sharePromises.push(Promise.resolve(undefined))
}
nodeIndex.push(new _bn["default"](indexes[i], 16));
}
nodeIndex.push(new _bn['default'](indexes[i], 16))
}
_context.next = 8;
return Promise.all(sharePromises);
_context.next = 8
return Promise.all(sharePromises)
case 8:
sharesResolved = _context.sent;
decryptedShares = sharesResolved.reduce(function (acc, curr, index) {
if (curr) acc.push({
index: nodeIndex[index],
value: new _bn["default"](curr)
});
return acc;
}, []); // run lagrange interpolation on all subsets, faster in the optimistic scenario than berlekamp-welch due to early exit
case 8:
sharesResolved = _context.sent
decryptedShares = sharesResolved.reduce(function(acc, curr, index) {
if (curr)
acc.push({
index: nodeIndex[index],
value: new _bn['default'](curr)
})
return acc
}, []) // run lagrange interpolation on all subsets, faster in the optimistic scenario than berlekamp-welch due to early exit
allCombis = (0, _utils.kCombinations)(decryptedShares.length, ~~(endpoints.length / 2) + 1);
allCombis = (0, _utils.kCombinations)(decryptedShares.length, ~~(endpoints.length / 2) + 1)
_loop = function _loop(j) {
var currentCombi = allCombis[j];
var currentCombiShares = decryptedShares.filter(function (v, index) {
return currentCombi.includes(index);
});
var shares = currentCombiShares.map(function (x) {
return x.value;
});
var indices = currentCombiShares.map(function (x) {
return x.index;
});
_loop = function _loop(j) {
var currentCombi = allCombis[j]
var currentCombiShares = decryptedShares.filter(function(v, index) {
return currentCombi.includes(index)
})
var shares = currentCombiShares.map(function(x) {
return x.value
})
var indices = currentCombiShares.map(function(x) {
return x.index
})
var derivedPrivateKey = _this.lagrangeInterpolation(shares, indices);
var derivedPrivateKey = _this.lagrangeInterpolation(shares, indices)
var pubKey = _eccrypto["default"].getPublic(Buffer.from(derivedPrivateKey.toString(16, 64), 'hex')).toString('hex');
var pubKey = _eccrypto['default'].getPublic(Buffer.from(derivedPrivateKey.toString(16, 64), 'hex')).toString('hex')
var pubKeyX = pubKey.slice(2, 66);
var pubKeyY = pubKey.slice(66);
var pubKeyX = pubKey.slice(2, 66)
var pubKeyY = pubKey.slice(66)
if (pubKeyX === thresholdPublicKey.X && pubKeyY === thresholdPublicKey.Y) {
privateKey = derivedPrivateKey;
return "break";
}
};
if (pubKeyX === thresholdPublicKey.X && pubKeyY === thresholdPublicKey.Y) {
privateKey = derivedPrivateKey
return 'break'
}
}
j = 0;
j = 0
case 13:
if (!(j < allCombis.length)) {
_context.next = 20;
break;
}
case 13:
if (!(j < allCombis.length)) {
_context.next = 20
break
}
_ret = _loop(j);
_ret = _loop(j)
if (!(_ret === "break")) {
_context.next = 17;
break;
}
if (!(_ret === 'break')) {
_context.next = 17
break
}
return _context.abrupt("break", 20);
return _context.abrupt('break', 20)
case 17:
j++;
_context.next = 13;
break;
case 17:
j++
_context.next = 13
break
case 20:
if (!(privateKey === undefined)) {
_context.next = 22;
break;
}
case 20:
if (!(privateKey === undefined)) {
_context.next = 22
break
}
throw new Error('could not derive private key');
throw new Error('could not derive private key')
case 22:
ethAddress = _this.generateAddressFromPrivKey(privateKey); // return reconstructed private key and ethereum address
case 22:
ethAddress = _this.generateAddressFromPrivKey(privateKey) // return reconstructed private key and ethereum address
return _context.abrupt("return", {
ethAddress: ethAddress,
privKey: privateKey.toString('hex', 64)
});
return _context.abrupt('return', {
ethAddress: ethAddress,
privKey: privateKey.toString('hex', 64)
})
case 24:
throw new Error('invalid');
case 24:
throw new Error('invalid')
case 25:
case "end":
return _context.stop();
}
}
}, _callee);
}));
case 25:
case 'end':
return _context.stop()
}
}
}, _callee)
})
)
return function (_x) {
return _ref.apply(this, arguments);
};
}());
}).then(function (response) {
resolve(response);
})["catch"](function (err) {
reject(err);
});
});
}
}, {
key: "lagrangeInterpolation",
value: function lagrangeInterpolation(shares, nodeIndex) {
if (shares.length !== nodeIndex.length) {
return null;
}
return function(_x) {
return _ref.apply(this, arguments)
}
})()
)
})
.then(function(response) {
resolve(response)
})
['catch'](function(err) {
reject(err)
})
})
}
},
{
key: 'lagrangeInterpolation',
value: function lagrangeInterpolation(shares, nodeIndex) {
if (shares.length !== nodeIndex.length) {
return null
}
var secret = new _bn["default"](0);
var secret = new _bn['default'](0)
for (var i = 0; i < shares.length; i++) {
var upper = new _bn["default"](1);
var lower = new _bn["default"](1);
for (var i = 0; i < shares.length; i++) {
var upper = new _bn['default'](1)
var lower = new _bn['default'](1)
for (var j = 0; j < shares.length; j++) {
if (i !== j) {
upper = upper.mul(nodeIndex[j].neg());
upper = upper.umod(this.ec.curve.n);
var temp = nodeIndex[i].sub(nodeIndex[j]);
temp = temp.umod(this.ec.curve.n);
lower = lower.mul(temp).umod(this.ec.curve.n);
for (var j = 0; j < shares.length; j++) {
if (i !== j) {
upper = upper.mul(nodeIndex[j].neg())
upper = upper.umod(this.ec.curve.n)
var temp = nodeIndex[i].sub(nodeIndex[j])
temp = temp.umod(this.ec.curve.n)
lower = lower.mul(temp).umod(this.ec.curve.n)
}
}
var delta = upper.mul(lower.invm(this.ec.curve.n)).umod(this.ec.curve.n)
delta = delta.mul(shares[i]).umod(this.ec.curve.n)
secret = secret.add(delta)
}
return secret.umod(this.ec.curve.n)
}
},
{
key: 'generateAddressFromPrivKey',
value: function generateAddressFromPrivKey(privateKey) {
var key = this.ec.keyFromPrivate(privateKey.toString('hex', 64), 'hex')
var publicKey = key
.getPublic()
.encode('hex')
.slice(2)
var ethAddressLower = '0x' + (0, _web3Utils.keccak256)(Buffer.from(publicKey, 'hex')).slice(64 - 38)
var ethAddress = (0, _web3Utils.toChecksumAddress)(ethAddressLower)
return ethAddress
}
},
{
key: 'getPubKeyAsync',
value: function getPubKeyAsync(endpoints, _ref2) {
var verifier = _ref2.verifier,
verifierId = _ref2.verifierId
return new Promise(function(resolve, reject) {
;(0, _utils.keyLookup)(endpoints, verifier, verifierId)
.then(function(_ref3) {
var keyResult = _ref3.keyResult,
errorResult = _ref3.errorResult
var delta = upper.mul(lower.invm(this.ec.curve.n)).umod(this.ec.curve.n);
delta = delta.mul(shares[i]).umod(this.ec.curve.n);
secret = secret.add(delta);
}
if (errorResult) {
return (0, _utils.keyAssign)(endpoints, undefined, verifier, verifierId).then(function(_) {
return (0, _utils.keyLookup)(endpoints, verifier, verifierId)
})
}
return secret.umod(this.ec.curve.n);
}
}, {
key: "generateAddressFromPrivKey",
value: function generateAddressFromPrivKey(privateKey) {
var key = this.ec.keyFromPrivate(privateKey.toString('hex', 64), 'hex');
var publicKey = key.getPublic().encode('hex').slice(2);
var ethAddressLower = '0x' + (0, _web3Utils.keccak256)(Buffer.from(publicKey, 'hex')).slice(64 - 38);
var ethAddress = (0, _web3Utils.toChecksumAddress)(ethAddressLower);
return ethAddress;
}
}, {
key: "getPubKeyAsync",
value: function getPubKeyAsync(endpoints, _ref2) {
var verifier = _ref2.verifier,
verifierId = _ref2.verifierId;
return new Promise(function (resolve, reject) {
(0, _utils.keyLookup)(endpoints, verifier, verifierId).then(function (_ref3) {
var keyResult = _ref3.keyResult,
errorResult = _ref3.errorResult;
if (keyResult) {
return Promise.resolve({
keyResult: keyResult
})
}
if (errorResult) {
return (0, _utils.keyAssign)(endpoints, undefined, verifier, verifierId).then(function (_) {
return (0, _utils.keyLookup)(endpoints, verifier, verifierId);
});
}
return reject(new Error('node results do not match'))
})
['catch'](function(_) {
return undefined
})
.then(function(_ref4) {
var keyResult = _ref4.keyResult
if (keyResult) {
return Promise.resolve({
keyResult: keyResult
});
}
if (keyResult) {
var ethAddress = keyResult.keys[0].address
resolve(ethAddress)
} else {
reject(new Error('node results do not match'))
}
})
['catch'](function(err) {
reject(err)
})
})
}
}
])
return reject(new Error('node results do not match'));
})["catch"](function (_) {
return undefined;
}).then(function (_ref4) {
var keyResult = _ref4.keyResult;
return Torus
})()
if (keyResult) {
var ethAddress = keyResult.keys[0].address;
resolve(ethAddress);
} else {
reject(new Error('node results do not match'));
}
})["catch"](function (err) {
reject(err);
});
});
}
}]);
return Torus;
}();
var _default = Torus;
exports["default"] = _default;
var _default = Torus
exports['default'] = _default

@@ -1,101 +0,128 @@

"use strict";
'use strict'
Object.defineProperty(exports, "__esModule", {
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.keyAssign = exports.keyLookup = exports.thresholdSame = exports.kCombinations = void 0;
})
exports.keyAssign = exports.keyLookup = exports.thresholdSame = exports.kCombinations = void 0
var _jsonStableStringify = _interopRequireDefault(require("json-stable-stringify"));
var _jsonStableStringify = _interopRequireDefault(require('json-stable-stringify'))
var _httpHelpers = require("./httpHelpers");
var _httpHelpers = require('./httpHelpers')
var _some = require("./some");
var _some = require('./some')
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj }
}
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _toConsumableArray(arr) {
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread()
}
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _nonIterableSpread() {
throw new TypeError('Invalid attempt to spread non-iterable instance')
}
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _iterableToArray(iter) {
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === '[object Arguments]') return Array.from(iter)
}
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i]
}
return arr2
}
}
var kCombinations = function kCombinations(s, k) {
var set = s;
var set = s
if (typeof set === 'number') {
set = Array.from({
length: set
}, function (_, i) {
return i;
});
set = Array.from(
{
length: set
},
function(_, i) {
return i
}
)
}
if (k > set.length || k <= 0) {
return [];
return []
}
if (k === set.length) {
return [set];
return [set]
}
if (k === 1) {
return set.reduce(function (acc, cur) {
return [].concat(_toConsumableArray(acc), [[cur]]);
}, []);
return set.reduce(function(acc, cur) {
return [].concat(_toConsumableArray(acc), [[cur]])
}, [])
}
var combs = [];
var tailCombs = [];
var combs = []
var tailCombs = []
for (var i = 0; i <= set.length - k + 1; i++) {
tailCombs = kCombinations(set.slice(i + 1), k - 1);
tailCombs = kCombinations(set.slice(i + 1), k - 1)
for (var j = 0; j < tailCombs.length; j++) {
combs.push([set[i]].concat(_toConsumableArray(tailCombs[j])));
combs.push([set[i]].concat(_toConsumableArray(tailCombs[j])))
}
}
return combs;
};
return combs
}
exports.kCombinations = kCombinations;
exports.kCombinations = kCombinations
var thresholdSame = function thresholdSame(arr, t) {
var hashMap = {};
var hashMap = {}
for (var i = 0; i < arr.length; i++) {
var str = (0, _jsonStableStringify["default"])(arr[i]);
hashMap[str] = hashMap[str] ? hashMap[str] + 1 : 1;
var str = (0, _jsonStableStringify['default'])(arr[i])
hashMap[str] = hashMap[str] ? hashMap[str] + 1 : 1
if (hashMap[str] === t) {
return arr[i];
return arr[i]
}
}
return undefined;
};
return undefined
}
exports.thresholdSame = thresholdSame;
exports.thresholdSame = thresholdSame
var keyLookup = function keyLookup(endpoints, verifier, verifierId) {
var lookupPromises = endpoints.map(function (x) {
return (0, _httpHelpers.post)(x, (0, _httpHelpers.generateJsonRPCObject)('VerifierLookupRequest', {
verifier: verifier,
verifier_id: verifierId.toString().toLowerCase()
}))["catch"](function (_) {
return undefined;
});
});
return (0, _some.Some)(lookupPromises, function (lookupResults) {
var lookupShares = lookupResults.filter(function (x) {
return x;
});
var errorResult = thresholdSame(lookupShares.map(function (x) {
return x && x.error;
}), ~~(endpoints.length / 2) + 1);
var keyResult = thresholdSame(lookupShares.map(function (x) {
return x && x.result;
}), ~~(endpoints.length / 2) + 1);
var lookupPromises = endpoints.map(function(x) {
return (0, _httpHelpers.post)(
x,
(0, _httpHelpers.generateJsonRPCObject)('VerifierLookupRequest', {
verifier: verifier,
verifier_id: verifierId.toString().toLowerCase()
})
)['catch'](function(_) {
return undefined
})
})
return (0, _some.Some)(lookupPromises, function(lookupResults) {
var lookupShares = lookupResults.filter(function(x) {
return x
})
var errorResult = thresholdSame(
lookupShares.map(function(x) {
return x && x.error
}),
~~(endpoints.length / 2) + 1
)
var keyResult = thresholdSame(
lookupShares.map(function(x) {
return x && x.result
}),
~~(endpoints.length / 2) + 1
)

@@ -106,23 +133,26 @@ if (keyResult || errorResult) {

errorResult: errorResult
});
})
}
return Promise.reject(new Error('invalid'));
})["catch"](function (_) {
return undefined;
});
};
return Promise.reject(new Error('invalid'))
})['catch'](function(_) {
return undefined
})
}
exports.keyLookup = keyLookup;
exports.keyLookup = keyLookup
var keyAssign = function keyAssign(endpoints, lastPoint, verifier, verifierId) {
var nodeNum = lastPoint === undefined ? Math.floor(Math.random() * endpoints.length) : lastPoint % endpoints.length;
return (0, _httpHelpers.post)(endpoints[nodeNum], (0, _httpHelpers.generateJsonRPCObject)('KeyAssign', {
verifier: verifier,
verifier_id: verifierId.toString().toLowerCase()
}))["catch"](function (_) {
return keyAssign(endpoints, nodeNum + 1, verifier, verifierId);
});
};
var nodeNum = lastPoint === undefined ? Math.floor(Math.random() * endpoints.length) : lastPoint % endpoints.length
return (0, _httpHelpers.post)(
endpoints[nodeNum],
(0, _httpHelpers.generateJsonRPCObject)('KeyAssign', {
verifier: verifier,
verifier_id: verifierId.toString().toLowerCase()
})
)['catch'](function(_) {
return keyAssign(endpoints, nodeNum + 1, verifier, verifierId)
})
}
exports.keyAssign = keyAssign;
exports.keyAssign = keyAssign

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

import Torus from './dist/torus'
const Torus = require('./dist/torus')
export default Torus
module.exports = Torus
{
"name": "@toruslabs/torus.js",
"version": "1.0.1",
"version": "1.0.2",
"description": "Handle communication with torus nodes",

@@ -5,0 +5,0 @@ "main": "index.js",

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