@toruslabs/torus.js
Advanced tools
Comparing version 2.2.2 to 2.2.3
@@ -1,1 +0,1 @@ | ||
module.exports=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=13)}([function(e,r){e.exports=require("bn.js")},function(e,r){e.exports=require("@babel/runtime/regenerator")},function(e,r){e.exports=require("web3-utils")},function(e,r){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,r){e.exports=require("@babel/runtime/helpers/asyncToGenerator")},function(e,r){e.exports=require("@toruslabs/eccrypto")},function(e,r){e.exports=require("@babel/runtime/helpers/toConsumableArray")},function(e,r){e.exports=require("@babel/runtime/helpers/typeof")},function(e,r){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,r){e.exports=require("@babel/runtime/helpers/createClass")},function(e,r){e.exports=require("elliptic")},function(e,r){e.exports=require("loglevel")},function(e,r){e.exports=require("json-stable-stringify")},function(e,r,t){"use strict";t.r(r);var n=t(1),o=t.n(n),u=t(3),i=t.n(u),a=t(7),c=t.n(a),s=t(4),f=t.n(s),l=t(8),p=t.n(l),h=t(9),d=t.n(h),b=t(5),g=t(0),v=t.n(g),m=t(10),y=t(2);function k(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function O(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?k(Object(t),!0).forEach((function(r){i()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):k(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var x=function(e,r){var t=new Promise((function(r,t){var n=setTimeout((function(){clearTimeout(n),t(new Error("Timed out in ".concat(e,"ms")))}),e)}));return Promise.race([r,t])},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n={mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(r)},o=O(O(O({},n),t),{method:"POST"});return x(12e3,fetch(e,o).then((function(e){if(e.ok)return e.json();throw e})))},P=function(e,r){return{jsonrpc:"2.0",method:e,id:10,params:r}},j=t(11),S=t.n(j).a.getLogger("torus.js"),_=function(e,r){return new Promise((function(t,n){var o,u=0,i={resolved:!1},a=new Array(e.length).fill(void 0),c=new Array(e.length).fill(void 0);e.forEach((function(s,f){s.then((function(e){c[f]=e})).catch((function(e){a[f]=e})).finally((function(){i.resolved||r(c.slice(0),i).then((function(e){i.resolved=!0,t(e)})).catch((function(e){o=e})).finally((function(r){(u+=1)===e.length&&n(new Error("Unable to resolve enough promises, errors: ".concat(JSON.stringify(a),", responses: ").concat(JSON.stringify(c),", predicate: ").concat(o.message||o)))}))}))}))}))},q=t(6),E=t.n(q),D=t(12),M=t.n(D);function A(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function X(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?A(Object(t),!0).forEach((function(r){i()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):A(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var Y=function e(r,t){var n=r;if("number"==typeof n&&(n=Array.from({length:n},(function(e,r){return r}))),t>n.length||t<=0)return[];if(t===n.length)return[n];if(1===t)return n.reduce((function(e,r){return[].concat(E()(e),[[r]])}),[]);for(var o=[],u=[],i=0;i<=n.length-t+1;i+=1){u=e(n.slice(i+1),t-1);for(var a=0;a<u.length;a+=1)o.push([n[i]].concat(E()(u[a])))}return o},B=function(e,r){for(var t={},n=0;n<e.length;n+=1){var o=M()(e[n]);if(t[o]=t[o]?t[o]+1:1,t[o]===r)return e[n]}},K=function(e,r,t){var n=e.map((function(e){return w(e,P("VerifierLookupRequest",{verifier:r,verifier_id:t.toString()})).catch((function(e){}))}));return _(n,(function(r){var t=r.filter((function(e){return e})),n=B(t.map((function(e){return e&&e.error})),1+~~(e.length/2)),o=B(t.map((function(e){return e&&e.result})),1+~~(e.length/2));return o||n?Promise.resolve({keyResult:o,errorResult:n}):Promise.reject(new Error("invalid"))})).catch((function(e){}))},C=function e(r,t,n,o,u,i){var a,c;if(void 0===n?(a=Math.floor(Math.random()*r.length),c=a):a=n%r.length,a===o)throw new Error("Looped through all");void 0!==o&&(c=o);var s=P("KeyAssign",{verifier:u,verifier_id:i.toString()});return w("https://signer.tor.us/api/sign",s,{headers:{pubKeyX:t[a].X,pubKeyY:t[a].Y}}).then((function(n){return w(r[a],X(X({},s),n),{headers:{"Content-Type":"application/json; charset=utf-8"}}).catch((function(n){return e(r,t,a+1,c,u,i)}))}))};function F(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function R(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?F(Object(t),!0).forEach((function(r){i()(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):F(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var T=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=r.enableLogging,n=void 0!==t&&t,o=r.metadataHost,u=void 0===o?"https://metadata.tor.us":o;p()(this,e),this.ec=new m.ec("secp256k1"),this.metadataHost=u,S.setDefaultLevel("DEBUG"),n||S.disableAll()}var r,t,n;return d()(e,[{key:"retrieveShares",value:(n=f()(o.a.mark((function e(r,t,n,u,i){var a,s,l,p,h,d,g,m,k=this;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(a=[],s=Object(b.generatePrivate)(),l=Object(b.getPublic)(s).toString("hex"),p=l.slice(2,66),h=l.slice(66),d=Object(y.keccak256)(i),g=0;g<r.length;g+=1)m=w(r[g],P("CommitmentRequest",{messageprefix:"mug00",tokencommitment:d.slice(2),temppubx:p,temppuby:h,timestamp:(Date.now()-2e3).toString().slice(0,10),verifieridentifier:n})).catch((function(e){return S.debug("commitment",e)})),a.push(m);return e.abrupt("return",_(a,(function(e){return e.filter((function(e){return!(!e||"object"!==c()(e)||e.error)})).length>=3*~~(r.length/4)+1?Promise.resolve(e):Promise.reject(new Error("invalid"))})).then((function(e){for(var a=[],c=[],l=0;l<e.length;l+=1)e[l]&&c.push(e[l].result);for(var p=0;p<r.length;p+=1){var h=w(r[p],P("ShareRequest",{encrypted:"yes",item:[R(R({},u),{},{idtoken:i,nodesignatures:c,verifieridentifier:n})]})).catch((function(e){return S.debug("share req",e)}));a.push(h)}return _(a,function(){var e=f()(o.a.mark((function e(n,u){var i,a,c,f,l,p,h,d,g,m,y,O,x,w;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=n.filter((function(e){return e})),a=B(n.map((function(e){return e&&e.result&&e.result.keys[0].PublicKey})),1+~~(r.length/2)),!(i.length>=1+~~(r.length/2)&&a)){e.next=32;break}for(c=[],f=[],l=0;l<n.length;l+=1)n[l]&&n[l].result&&n[l].result.keys&&n[l].result.keys.length>0?(n[l].result.keys.sort((function(e,r){return new v.a(e.Index,16).cmp(new v.a(r.Index,16))})),n[l].result.keys[0].Metadata?(p={ephemPublicKey:Buffer.from(n[l].result.keys[0].Metadata.ephemPublicKey,"hex"),iv:Buffer.from(n[l].result.keys[0].Metadata.iv,"hex"),mac:Buffer.from(n[l].result.keys[0].Metadata.mac,"hex"),mode:Buffer.from(n[l].result.keys[0].Metadata.mode,"hex")},c.push(Object(b.decrypt)(s,R(R({},p),{},{ciphertext:Buffer.from(atob(n[l].result.keys[0].Share).padStart(64,"0"),"hex")})).catch((function(e){return S.debug("share decryption",e)})))):c.push(Promise.resolve(Buffer.from(n[l].result.keys[0].Share.padStart(64,"0"),"hex")))):c.push(Promise.resolve(void 0)),f.push(new v.a(t[l],16));return e.next=8,Promise.all(c);case 8:if(h=e.sent,!u.resolved){e.next=11;break}return e.abrupt("return",void 0);case 11:d=h.reduce((function(e,r,t){return r&&e.push({index:f[t],value:new v.a(r)}),e}),[]),g=Y(d.length,1+~~(r.length/2)),y=function(e){var r=g[e],t=d.filter((function(e,t){return r.includes(t)})),n=t.map((function(e){return e.value})),o=t.map((function(e){return e.index})),u=k.lagrangeInterpolation(n,o),i=Object(b.getPublic)(Buffer.from(u.toString(16,64),"hex")).toString("hex"),c=i.slice(2,66),s=i.slice(66);if(0===new v.a(c,16).cmp(new v.a(a.X,16))&&0===new v.a(s,16).cmp(new v.a(a.Y,16)))return m=u,"break"},O=0;case 15:if(!(O<g.length)){e.next=22;break}if("break"!==y(O)){e.next=19;break}return e.abrupt("break",22);case 19:O+=1,e.next=15;break;case 22:if(void 0!==m){e.next=24;break}throw new Error("could not derive private key");case 24:return e.next=26,k.getMetadata({pub_key_X:a.X,pub_key_Y:a.Y});case 26:if(x=e.sent,!u.resolved){e.next=29;break}return e.abrupt("return",void 0);case 29:return m=m.add(x).umod(k.ec.curve.n),w=k.generateAddressFromPrivKey(m),e.abrupt("return",{ethAddress:w,privKey:m.toString("hex",64)});case 32:throw new Error("invalid");case 33:case"end":return e.stop()}}),e)})));return function(r,t){return e.apply(this,arguments)}}())})));case 8:case"end":return e.stop()}}),e)}))),function(e,r,t,o,u){return n.apply(this,arguments)})},{key:"getMetadata",value:(t=f()(o.a.mark((function e(r,t){var n;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,w("".concat(this.metadataHost,"/get"),r,t);case 3:if((n=e.sent)&&n.message){e.next=6;break}return e.abrupt("return",new v.a(0));case 6:return e.abrupt("return",new v.a(n.message,16));case 9:return e.prev=9,e.t0=e.catch(0),S.error(e.t0),e.abrupt("return",new v.a(0));case 13:case"end":return e.stop()}}),e,this,[[0,9]])}))),function(e,r){return t.apply(this,arguments)})},{key:"generateMetadataParams",value:function(e,r){var t=this.ec.keyFromPrivate(r.toString("hex",64)),n={data:e,timestamp:new v.a(Date.now()).toString(16)},o=t.sign(Object(y.keccak256)(JSON.stringify(n)).slice(2));return{pub_key_X:t.getPublic().getX().toString("hex"),pub_key_Y:t.getPublic().getY().toString("hex"),set_data:n,signature:Buffer.from(o.r.toString(16,64)+o.s.toString(16,64)+new v.a(o.v).toString(16,2),"hex").toString("base64")}}},{key:"setMetadata",value:(r=f()(o.a.mark((function e(r,t){var n;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,w("".concat(this.metadataHost,"/set"),r,t);case 3:return n=e.sent,e.abrupt("return",n.message);case 7:return e.prev=7,e.t0=e.catch(0),S.error(e.t0),e.abrupt("return","");case 11:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(e,t){return r.apply(this,arguments)})},{key:"lagrangeInterpolation",value:function(e,r){if(e.length!==r.length)return null;for(var t=new v.a(0),n=0;n<e.length;n+=1){for(var o=new v.a(1),u=new v.a(1),i=0;i<e.length;i+=1)if(n!==i){o=(o=o.mul(r[i].neg())).umod(this.ec.curve.n);var a=r[n].sub(r[i]);a=a.umod(this.ec.curve.n),u=u.mul(a).umod(this.ec.curve.n)}var c=o.mul(u.invm(this.ec.curve.n)).umod(this.ec.curve.n);c=c.mul(e[n]).umod(this.ec.curve.n),t=t.add(c)}return t.umod(this.ec.curve.n)}},{key:"generateAddressFromPrivKey",value:function(e){var r=this.ec.keyFromPrivate(e.toString("hex",64),"hex").getPublic().encode("hex").slice(2),t="0x".concat(Object(y.keccak256)(Buffer.from(r,"hex")).slice(26));return Object(y.toChecksumAddress)(t)}},{key:"generateAddressFromPubKey",value:function(e,r){var t=this.ec.keyFromPublic({x:e.toString("hex",64),y:r.toString("hex",64)}).getPublic().encode("hex").slice(2),n="0x".concat(Object(y.keccak256)(Buffer.from(t,"hex")).slice(26));return Object(y.toChecksumAddress)(n)}},{key:"getPublicAddress",value:function(e,r,t){var n=this,u=t.verifier,i=t.verifierId,a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return K(e,u,i).then((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.keyResult,o=t.errorResult;if(o)return C(e,r,void 0,void 0,u,i).then((function(r){return K(e,u,i)}));if(n)return{keyResult:n};throw new Error("node results do not match")})).then(f()(o.a.mark((function e(){var r,t,u,i,c,s,f,l,p=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=p.length>0&&void 0!==p[0]?p[0]:{},!(t=r.keyResult)){e.next=13;break}return u=t.keys[0],i=u.pub_key_X,c=u.pub_key_Y,e.next=5,n.getMetadata({pub_key_X:i,pub_key_Y:c});case 5:if(s=e.sent,f=n.ec.keyFromPublic({x:i.toString(16),y:c.toString(16)}).getPublic().add(n.ec.keyFromPrivate(s.toString(16)).getPublic()),i=f.getX().toString(16),c=f.getY().toString(16),l=n.generateAddressFromPubKey(f.getX(),f.getY()),a){e.next=12;break}return e.abrupt("return",l);case 12:return e.abrupt("return",{address:l,X:i,Y:c});case 13:throw new Error("node results do not match");case 14:case"end":return e.stop()}}),e)}))))}}]),e}();r.default=T}]).default; | ||
module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=15)}([function(e,t){e.exports=require("bn.js")},function(e,t){e.exports=require("@babel/runtime/regenerator")},function(e,t){e.exports=require("@toruslabs/http-helpers")},function(e,t){e.exports=require("web3-utils")},function(e,t){e.exports=require("@babel/runtime/helpers/asyncToGenerator")},function(e,t){e.exports=require("@toruslabs/eccrypto")},function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("@babel/runtime/helpers/toConsumableArray")},function(e,t){e.exports=require("@babel/runtime/helpers/typeof")},function(e,t){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,t){e.exports=require("@babel/runtime/helpers/createClass")},function(e,t){e.exports=require("elliptic")},function(e,t){e.exports=require("memory-cache")},function(e,t){e.exports=require("loglevel")},function(e,t){e.exports=require("json-stable-stringify")},function(e,t,r){"use strict";r.r(t);var n=r(1),o=r.n(n),u=r(6),a=r.n(u),i=r(8),c=r.n(i),s=r(4),l=r.n(s),f=r(9),p=r.n(f),h=r(10),b=r.n(h),d=r(5),g=r(2),v=r(0),m=r.n(v),y=r(11),k=r(12),x=r.n(k),O=r(3),w=r(13),j=r.n(w).a.getLogger("torus.js"),P=function(e,t){return new Promise((function(r,n){var o,u=0,a={resolved:!1},i=new Array(e.length).fill(void 0),c=new Array(e.length).fill(void 0);e.forEach((function(s,l){s.then((function(e){c[l]=e})).catch((function(e){i[l]=e})).finally((function(){a.resolved||t(c.slice(0),a).then((function(e){a.resolved=!0,r(e)})).catch((function(e){o=e})).finally((function(t){(u+=1)===e.length&&n(new Error("Unable to resolve enough promises, errors: ".concat(JSON.stringify(i),", responses: ").concat(JSON.stringify(c),", predicate: ").concat(o.message||o)))}))}))}))}))},S=r(7),_=r.n(S),A=r(14),q=r.n(A);function K(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function C(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?K(Object(r),!0).forEach((function(t){a()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):K(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var E=function e(t,r){var n=t;if("number"==typeof n&&(n=Array.from({length:n},(function(e,t){return t}))),r>n.length||r<=0)return[];if(r===n.length)return[n];if(1===r)return n.reduce((function(e,t){return[].concat(_()(e),[[t]])}),[]);for(var o=[],u=[],a=0;a<=n.length-r+1;a+=1){u=e(n.slice(a+1),r-1);for(var i=0;i<u.length;i+=1)o.push([n[a]].concat(_()(u[i])))}return o},M=function(e,t){for(var r={},n=0;n<e.length;n+=1){var o=q()(e[n]);if(r[o]=r[o]?r[o]+1:1,r[o]===t)return e[n]}},R=function(e,t,r){var n=e.map((function(e){return Object(g.post)(e,Object(g.generateJsonRPCObject)("VerifierLookupRequest",{verifier:t,verifier_id:r.toString()})).catch((function(e){}))}));return P(n,(function(t){var r=t.filter((function(e){return e})),n=M(r.map((function(e){return e&&e.error})),1+~~(e.length/2)),o=M(r.map((function(e){return e&&e.result})),1+~~(e.length/2));return o||n?Promise.resolve({keyResult:o,errorResult:n}):Promise.reject(new Error("invalid"))})).catch((function(e){}))},D=function e(t,r,n,o,u,a){var i,c;if(void 0===n?(i=Math.floor(Math.random()*t.length),c=i):i=n%t.length,i===o)throw new Error("Looped through all");void 0!==o&&(c=o);var s=Object(g.generateJsonRPCObject)("KeyAssign",{verifier:u,verifier_id:a.toString()});return Object(g.post)("https://signer.tor.us/api/sign",s,{headers:{pubKeyX:r[i].X,pubKeyY:r[i].Y}},{useAPIKey:!0}).then((function(n){return Object(g.post)(t[i],C(C({},s),n),{headers:{"Content-Type":"application/json; charset=utf-8"}}).catch((function(n){return e(t,r,i+1,c,u,a)}))}))};function I(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function X(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?I(Object(r),!0).forEach((function(t){a()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var Y=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.enableLogging,n=void 0!==r&&r,o=t.metadataHost,u=void 0===o?"https://metadata.tor.us":o,a=t.allowHost,i=void 0===a?"https://signer.tor.us/api/allow":a;p()(this,e),this.ec=new y.ec("secp256k1"),this.metadataHost=u,this.allowHost=i,this.metadataCache=x.a,j.setDefaultLevel("DEBUG"),n||j.disableAll(),this.metadataLock={}}var t,r,n;return b()(e,[{key:"retrieveShares",value:(n=l()(o.a.mark((function e(t,r,n,u,a){var i,s,f,p,h,b,v,y,k=this;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=[],e.next=3,Object(g.get)(this.allowHost,{},{useAPIKey:!0});case 3:for(s=Object(d.generatePrivate)(),f=Object(d.getPublic)(s).toString("hex"),p=f.slice(2,66),h=f.slice(66),b=Object(O.keccak256)(a),v=0;v<t.length;v+=1)y=Object(g.post)(t[v],Object(g.generateJsonRPCObject)("CommitmentRequest",{messageprefix:"mug00",tokencommitment:b.slice(2),temppubx:p,temppuby:h,verifieridentifier:n})).catch((function(e){return j.debug("commitment",e)})),i.push(y);return e.abrupt("return",P(i,(function(e){return e.filter((function(e){return!(!e||"object"!==c()(e)||e.error)})).length>=3*~~(t.length/4)+1?Promise.resolve(e):Promise.reject(new Error("invalid"))})).then((function(e){for(var i=[],c=[],f=0;f<e.length;f+=1)e[f]&&c.push(e[f].result);for(var p=0;p<t.length;p+=1){var h=Object(g.post)(t[p],Object(g.generateJsonRPCObject)("ShareRequest",{encrypted:"yes",item:[X(X({},u),{},{idtoken:a,nodesignatures:c,verifieridentifier:n})]})).catch((function(e){return j.debug("share req",e)}));i.push(h)}return P(i,function(){var e=l()(o.a.mark((function e(n,u){var a,i,c,l,f,p,h,b,g,v,y,x,O,w;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.filter((function(e){return e})),i=M(n.map((function(e){return e&&e.result&&e.result.keys[0].PublicKey})),1+~~(t.length/2)),!(a.length>=1+~~(t.length/2)&&i)){e.next=32;break}for(c=[],l=[],f=0;f<n.length;f+=1)n[f]&&n[f].result&&n[f].result.keys&&n[f].result.keys.length>0?(n[f].result.keys.sort((function(e,t){return new m.a(e.Index,16).cmp(new m.a(t.Index,16))})),n[f].result.keys[0].Metadata?(p={ephemPublicKey:Buffer.from(n[f].result.keys[0].Metadata.ephemPublicKey,"hex"),iv:Buffer.from(n[f].result.keys[0].Metadata.iv,"hex"),mac:Buffer.from(n[f].result.keys[0].Metadata.mac,"hex"),mode:Buffer.from(n[f].result.keys[0].Metadata.mode,"hex")},c.push(Object(d.decrypt)(s,X(X({},p),{},{ciphertext:Buffer.from(atob(n[f].result.keys[0].Share).padStart(64,"0"),"hex")})).catch((function(e){return j.debug("share decryption",e)})))):c.push(Promise.resolve(Buffer.from(n[f].result.keys[0].Share.padStart(64,"0"),"hex")))):c.push(Promise.resolve(void 0)),l.push(new m.a(r[f],16));return e.next=8,Promise.all(c);case 8:if(h=e.sent,!u.resolved){e.next=11;break}return e.abrupt("return",void 0);case 11:b=h.reduce((function(e,t,r){return t&&e.push({index:l[r],value:new m.a(t)}),e}),[]),g=E(b.length,1+~~(t.length/2)),y=function(e){var t=g[e],r=b.filter((function(e,r){return t.includes(r)})),n=r.map((function(e){return e.value})),o=r.map((function(e){return e.index})),u=k.lagrangeInterpolation(n,o),a=Object(d.getPublic)(Buffer.from(u.toString(16,64),"hex")).toString("hex"),c=a.slice(2,66),s=a.slice(66);if(0===new m.a(c,16).cmp(new m.a(i.X,16))&&0===new m.a(s,16).cmp(new m.a(i.Y,16)))return v=u,"break"},x=0;case 15:if(!(x<g.length)){e.next=22;break}if("break"!==y(x)){e.next=19;break}return e.abrupt("break",22);case 19:x+=1,e.next=15;break;case 22:if(void 0!==v){e.next=24;break}throw new Error("could not derive private key");case 24:return e.next=26,k.getMetadata({pub_key_X:i.X,pub_key_Y:i.Y});case 26:if(O=e.sent,!u.resolved){e.next=29;break}return e.abrupt("return",void 0);case 29:return v=v.add(O).umod(k.ec.curve.n),w=k.generateAddressFromPrivKey(v),e.abrupt("return",{ethAddress:w,privKey:v.toString("hex",64)});case 32:throw new Error("invalid");case 33:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}())})));case 10:case"end":return e.stop()}}),e,this)}))),function(e,t,r,o,u){return n.apply(this,arguments)})},{key:"getMetadata",value:(r=l()(o.a.mark((function e(t,r){var n,u,a,i,c=this;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,u=JSON.stringify(t),null===this.metadataLock[u]){e.next=7;break}return e.next=5,this.metadataLock[u];case 5:e.next=8;break;case 7:this.metadataLock[u]=new Promise((function(e){n=function(){c.metadataLock[u]=null,e()}}));case 8:if(null===(a=this.metadataCache.get(u))){e.next=12;break}return n&&n(),e.abrupt("return",a);case 12:return e.next=14,Object(g.post)("".concat(this.metadataHost,"/get"),t,r,{useAPIKey:!0});case 14:if((i=e.sent)&&i.message){e.next=19;break}return this.metadataCache.put(u,new m.a(0),6e4),n&&n(),e.abrupt("return",new m.a(0));case 19:return this.metadataCache.put(u,new m.a(i.message,16),6e4),e.abrupt("return",new m.a(i.message,16));case 23:return e.prev=23,e.t0=e.catch(0),j.error(e.t0),n&&n(),e.abrupt("return",new m.a(0));case 28:case"end":return e.stop()}}),e,this,[[0,23]])}))),function(e,t){return r.apply(this,arguments)})},{key:"generateMetadataParams",value:function(e,t){var r=this.ec.keyFromPrivate(t.toString("hex",64)),n={data:e,timestamp:new m.a(~~(Date.now()/1e3)).toString(16)},o=r.sign(Object(O.keccak256)(JSON.stringify(n)).slice(2));return{pub_key_X:r.getPublic().getX().toString("hex"),pub_key_Y:r.getPublic().getY().toString("hex"),set_data:n,signature:Buffer.from(o.r.toString(16,64)+o.s.toString(16,64)+new m.a(o.v).toString(16,2),"hex").toString("base64")}}},{key:"setMetadata",value:(t=l()(o.a.mark((function e(t,r){var n;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Object(g.post)("".concat(this.metadataHost,"/set"),t,r,{useAPIKey:!0});case 3:return n=e.sent,e.abrupt("return",n.message);case 7:return e.prev=7,e.t0=e.catch(0),j.error(e.t0),e.abrupt("return","");case 11:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(e,r){return t.apply(this,arguments)})},{key:"lagrangeInterpolation",value:function(e,t){if(e.length!==t.length)return null;for(var r=new m.a(0),n=0;n<e.length;n+=1){for(var o=new m.a(1),u=new m.a(1),a=0;a<e.length;a+=1)if(n!==a){o=(o=o.mul(t[a].neg())).umod(this.ec.curve.n);var i=t[n].sub(t[a]);i=i.umod(this.ec.curve.n),u=u.mul(i).umod(this.ec.curve.n)}var c=o.mul(u.invm(this.ec.curve.n)).umod(this.ec.curve.n);c=c.mul(e[n]).umod(this.ec.curve.n),r=r.add(c)}return r.umod(this.ec.curve.n)}},{key:"generateAddressFromPrivKey",value:function(e){var t=this.ec.keyFromPrivate(e.toString("hex",64),"hex").getPublic().encode("hex").slice(2),r="0x".concat(Object(O.keccak256)(Buffer.from(t,"hex")).slice(26));return Object(O.toChecksumAddress)(r)}},{key:"generateAddressFromPubKey",value:function(e,t){var r=this.ec.keyFromPublic({x:e.toString("hex",64),y:t.toString("hex",64)}).getPublic().encode("hex").slice(2),n="0x".concat(Object(O.keccak256)(Buffer.from(r,"hex")).slice(26));return Object(O.toChecksumAddress)(n)}},{key:"getPublicAddress",value:function(e,t,r){var n=this,u=r.verifier,a=r.verifierId,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return R(e,u,a).then((function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.keyResult,o=r.errorResult;if(o&&JSON.stringify(o).includes("Verifier + VerifierID has not yet been assigned"))return D(e,t,void 0,void 0,u,a).then((function(t){return R(e,u,a)}));if(n)return{keyResult:n};throw new Error("node results do not match")})).then(l()(o.a.mark((function e(){var t,r,u,a,c,s,l,f,p=arguments;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=p.length>0&&void 0!==p[0]?p[0]:{},!(r=t.keyResult)){e.next=13;break}return u=r.keys[0],a=u.pub_key_X,c=u.pub_key_Y,e.next=5,n.getMetadata({pub_key_X:a,pub_key_Y:c});case 5:if(s=e.sent,l=n.ec.keyFromPublic({x:a.toString(16),y:c.toString(16)}).getPublic().add(n.ec.keyFromPrivate(s.toString(16)).getPublic()),a=l.getX().toString(16),c=l.getY().toString(16),f=n.generateAddressFromPubKey(l.getX(),l.getY()),i){e.next=12;break}return e.abrupt("return",f);case 12:return e.abrupt("return",{address:f,X:a,Y:c});case 13:throw new Error("node results do not match");case 14:case"end":return e.stop()}}),e)}))))}}],[{key:"setAPIKey",value:function(e){Object(g.setAPIKey)(e)}},{key:"setEmbedHost",value:function(e){Object(g.setEmbedHost)(e)}}]),e}();t.default=Y}]).default; |
{ | ||
"name": "@toruslabs/torus.js", | ||
"version": "2.2.2", | ||
"version": "2.2.3", | ||
"description": "Handle communication with torus nodes", | ||
@@ -24,7 +24,9 @@ "main": "dist/torusUtils.cjs.js", | ||
"dependencies": { | ||
"@toruslabs/eccrypto": "^1.1.3", | ||
"@toruslabs/http-helpers": "^1.3.3", | ||
"bn.js": "^5.1.2", | ||
"@toruslabs/eccrypto": "^1.1.3", | ||
"elliptic": "^6.5.3", | ||
"json-stable-stringify": "^1.0.1", | ||
"loglevel": "^1.6.8", | ||
"memory-cache": "^0.2.0", | ||
"web3-utils": "^1.2.9" | ||
@@ -31,0 +33,0 @@ }, |
import BN from 'bn.js' | ||
declare class Torus { | ||
constructor(); | ||
constructor(options: {enableLogging?: Boolean, metadataHost?: string, allowHost?: string }); | ||
static setAPIKey(apiKey: string): void; | ||
static setEmbedHost(embedHost: string): void; | ||
retrieveShares(endpoints: String[], indexes: Number[], verifier: 'google' | 'facebook' | 'twitch' | 'reddit' | 'discord' | 'jwt' | string, verifierParams: VerifierParams, idToken: String): Promise<ShareResponse>; | ||
@@ -6,0 +8,0 @@ lagrangeInterpolation(shares: BN[], nodeIndex: BN[]): BN; |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Network access
Supply chain riskThis module accesses the network.
Found 2 instances in 1 package
11
1394814
9
5874
+ Addedmemory-cache@^0.2.0
+ Added@toruslabs/http-helpers@1.4.0(transitive)
+ Addeddeepmerge@4.3.1(transitive)
+ Addedmemory-cache@0.2.0(transitive)