@toruslabs/torus.js
Advanced tools
Comparing version 4.2.3 to 4.2.4
@@ -1,2 +0,2 @@ | ||
module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.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 a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));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=18)}([function(e,t){e.exports=require("@babel/runtime/regenerator")},function(e,t){e.exports=require("bn.js")},function(e,t){e.exports=require("@toruslabs/http-helpers")},function(e,t){e.exports=require("@babel/runtime/helpers/asyncToGenerator")},function(e,t){e.exports=require("web3-utils")},function(e,t){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,t){e.exports=require("@babel/runtime/helpers/getPrototypeOf")},function(e,t){e.exports=require("@toruslabs/eccrypto")},function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("json-stable-stringify")},function(e,t){e.exports=require("@babel/runtime/helpers/inherits")},function(e,t){e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(e,t){e.exports=require("@babel/runtime/helpers/wrapNativeSuper")},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/createClass")},function(e,t){e.exports=require("elliptic")},function(e,t){e.exports=require("loglevel")},function(e,t,r){"use strict";r.r(t),r.d(t,"keyAssign",(function(){return L})),r.d(t,"keyLookup",(function(){return T})),r.d(t,"waitKeyLookup",(function(){return V}));var n=r(8),a=r.n(n),o=r(14),i=r.n(o),u=r(3),s=r.n(u),c=r(5),f=r.n(c),l=r(15),p=r.n(l),h=r(0),b=r.n(h),d=r(7),g=r(2),v=r(1),y=r.n(v),m=r(16),x=r(9),k=r.n(x),O=r(4),w=r(17),P=r.n(w).a.getLogger("torus.js");P.disableAll();var S=P,j=r(10),_=r.n(j),N=r(11),K=r.n(N),A=r(6),R=r.n(A),E=r(12),q=r.n(E);function F(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=R()(e);if(t){var a=R()(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return K()(this,r)}}var M=function(e){_()(r,e);var t=F(r);function r(e){var n,a=e.errors,o=e.responses,i=e.predicate;return f()(this,r),(n=t.call(this,"Unable to resolve enough promises.")).errors=a,n.responses=o,n.predicate=i,n}return r}(q()(Error)),I=function(e,t){return new Promise((function(r,n){var a,o=0,i={resolved:!1},u=new Array(e.length).fill(void 0),s=new Array(e.length).fill(void 0);e.forEach((function(c,f){c.then((function(e){s[f]=e})).catch((function(e){u[f]=e})).finally((function(){i.resolved||t(s.slice(0),i).then((function(e){i.resolved=!0,r(e)})).catch((function(e){a=e})).finally((function(t){if((o+=1)===e.length){var r=Object.values(s.reduce((function(e,t){var r,n,a=t||{},o=a.id,i=a.error;return(null==i||null===(r=i.data)||void 0===r?void 0:r.length)>0&&(i.data.startsWith("Error occurred while verifying params")?e[o]=(n=i.data).charAt(0).toUpperCase()+n.slice(1):e[o]=i.data),e}),{}));if(r.length>0){var i=r.length>1?"\n".concat(r.map((function(e){return"• ".concat(e)})).join("\n")):r[0];n(new Error(i))}else{var c;n(new M({errors:u,responses:s,predicate:(null===(c=a)||void 0===c?void 0:c.message)||a}))}}}))}))}))}))},X=r(13),Y=r.n(X);function J(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 B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?J(Object(r),!0).forEach((function(t){a()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):J(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function C(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=R()(e);if(t){var a=R()(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return K()(this,r)}}var H=function(e){_()(r,e);var t=C(r);function r(){return f()(this,r),t.apply(this,arguments)}return r}(q()(Error)),D=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(Y()(e),[[t]])}),[]);for(var a=[],o=[],i=0;i<=n.length-r+1;i+=1){o=e(n.slice(i+1),r-1);for(var u=0;u<o.length;u+=1)a.push([n[i]].concat(Y()(o[u])))}return a},U=function(e,t){for(var r={},n=0;n<e.length;n+=1){var a=k()(e[n]);if(r[a]=r[a]?r[a]+1:1,r[a]===t)return e[n]}},T=function(){var e=s()(b.a.mark((function e(t,r,n){var a;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.map((function(e){return Object(g.post)(e,Object(g.generateJsonRPCObject)("VerifierLookupRequest",{verifier:r,verifier_id:n.toString()})).catch((function(e){return S.error("lookup request failed",e)}))})),e.abrupt("return",I(a,(function(e){var r=e.filter((function(e){return e})),n=U(r.map((function(e){return e&&e.error})),1+~~(t.length/2)),a=U(r.map((function(e){return e&&e.result})),1+~~(t.length/2));return a||n?Promise.resolve({keyResult:a,errorResult:n}):Promise.reject(new Error("invalid results ".concat(JSON.stringify(e))))})));case 2:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}(),V=function(e,t,r,n){return new Promise((function(a,o){setTimeout((function(){T(e,t,r).then(a).catch(o)}),n)}))},L=function(){var e=s()(b.a.mark((function e(t,r,n,a,o,i){var u,s,c,f;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===n?(u=Math.floor(Math.random()*t.length),s=u):u=n%t.length,u!==a){e.next=3;break}throw new Error("Looped through all");case 3:return void 0!==a&&(s=a),c=Object(g.generateJsonRPCObject)("KeyAssign",{verifier:o,verifier_id:i.toString()}),e.prev=5,e.next=8,Object(g.post)("https://signer.tor.us/api/sign",c,{headers:{pubKeyX:r[u].X,pubKeyY:r[u].Y}},{useAPIKey:!0});case 8:return f=e.sent,e.abrupt("return",Object(g.post)(t[u],B(B({},c),f),{headers:{"Content-Type":"application/json; charset=utf-8"}}));case 12:return e.prev=12,e.t0=e.catch(5),S.error(e.t0),e.abrupt("return",L(t,r,u+1,s,o,i));case 16:case"end":return e.stop()}}),e,null,[[5,12]])})));return function(t,r,n,a,o,i){return e.apply(this,arguments)}}();function G(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 W(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?G(Object(r),!0).forEach((function(t){a()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var z=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.enableOneKey,n=void 0!==r&&r,a=t.metadataHost,o=void 0===a?"https://metadata.tor.us":a,i=t.allowHost,u=void 0===i?"https://signer.tor.us/api/allow":i,s=t.serverTimeOffset,c=void 0===s?0:s;f()(this,e),this.ec=new m.ec("secp256k1"),this.metadataHost=o,this.allowHost=u,this.enableOneKey=n,this.serverTimeOffset=c||0}var t,r,n,a,o,u,c,l;return p()(e,[{key:"getUserTypeAndAddress",value:(l=s()(b.a.mark((function e(t,r,n){var a,o,i,u,s,c,f,l,p,h,d,g,v,m,x,k,O,w,P,S,j,_=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.verifier,o=n.verifierId,i=_.length>3&&void 0!==_[3]&&_[3],e.next=4,T(t,a,o);case 4:if(e.t0=e.sent,e.t0){e.next=7;break}e.t0={};case 7:if(u=e.t0,s=u.keyResult,c=u.errorResult,f=!1,!c||!JSON.stringify(c).includes("Verifier + VerifierID has not yet been assigned")){e.next=26;break}if(i){e.next=14;break}throw new Error("Verifier + VerifierID has not yet been assigned");case 14:return e.next=16,L(t,r,void 0,void 0,a,o);case 16:return e.next=18,V(t,a,o,1e3);case 18:if(e.t1=e.sent,e.t1){e.next=21;break}e.t1={};case 21:p=e.t1,l=p.keyResult,f=!0,e.next=31;break;case 26:if(!s){e.next=30;break}l=s,e.next=31;break;case 30:throw new Error("node results do not match at first lookup ".concat(JSON.stringify(s||{}),", ").concat(JSON.stringify(c||{})));case 31:if(!l){e.next=61;break}return h=l.keys[0],d=h.pub_key_X,g=h.pub_key_Y,e.prev=33,e.next=37,this.getOrSetNonce(d,g,void 0,!f);case 37:w=e.sent,v=w.typeOfUser,m=w.nonce,x=w.pubNonce,O=w.upgraded,m=new y.a(m||"0",16),e.next=48;break;case 45:throw e.prev=45,e.t2=e.catch(33),new H;case 48:if("v1"!==v){e.next=52;break}k=this.ec.keyFromPublic({x:d.toString(16),y:g.toString(16)}).getPublic().add(this.ec.keyFromPrivate(m.toString(16)).getPublic()),e.next=57;break;case 52:if("v2"!==v){e.next=56;break}k=this.ec.keyFromPublic({x:d.toString(16),y:g.toString(16)}).getPublic().add(this.ec.keyFromPublic({x:x.x,y:x.y}).getPublic()),e.next=57;break;case 56:throw new Error("getOrSetNonce should always return typeOfUser.");case 57:return P=k.getX().toString(16),S=k.getY().toString(16),j=this.generateAddressFromPubKey(k.getX(),k.getY()),e.abrupt("return",{typeOfUser:v,nonce:m,pubNonce:x,upgraded:O,X:P,Y:S,address:j});case 61:throw new Error("node results do not match at final lookup ".concat(JSON.stringify(s||{}),", ").concat(JSON.stringify(c||{})));case 62:case"end":return e.stop()}}),e,this,[[33,45]])}))),function(e,t,r){return l.apply(this,arguments)})},{key:"setCustomKey",value:(c=s()(b.a.mark((function e(t){var r,n,a,o,i,u,s,c,f;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.privKeyHex,n=t.metadataNonce,a=t.torusKeyHex,o=t.customKeyHex,a?i=new y.a(a,16):(u=new y.a(r,16),i=u.sub(n).umod(this.ec.curve.n)),s=new y.a(o,16),c=s.sub(i).umod(this.ec.curve.n),f=this.generateMetadataParams(c.toString(16),i.toString(16)),e.next=7,this.setMetadata(f);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return c.apply(this,arguments)})},{key:"retrieveShares",value:(u=s()(b.a.mark((function e(t,r,n,a,o){var u,c,f,l,p,h,v,m,x,k=this,w=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=w.length>5&&void 0!==w[5]?w[5]:{},c=[],e.next=4,Object(g.get)(this.allowHost,{headers:{verifier:n,verifier_id:a.verifier_id}},{useAPIKey:!0});case 4:for(f=Object(d.generatePrivate)(),l=Object(d.getPublic)(f).toString("hex"),p=l.slice(2,66),h=l.slice(66),v=Object(O.keccak256)(o),m=0;m<t.length;m+=1)x=Object(g.post)(t[m],Object(g.generateJsonRPCObject)("CommitmentRequest",{messageprefix:"mug00",tokencommitment:v.slice(2),temppubx:p,temppuby:h,verifieridentifier:n})).catch((function(e){return S.error("commitment",e)})),c.push(x);return e.abrupt("return",I(c,(function(e){return e.filter((function(e){return!(!e||"object"!==i()(e)||e.error)})).length>=3*~~(t.length/4)+1?Promise.resolve(e):Promise.reject(new Error("invalid ".concat(JSON.stringify(e))))})).then((function(e){for(var i=[],c=[],l=0;l<e.length;l+=1)e[l]&&c.push(e[l].result);for(var p=0;p<t.length;p+=1){var h=Object(g.post)(t[p],Object(g.generateJsonRPCObject)("ShareRequest",{encrypted:"yes",item:[W(W({},a),{},{idtoken:o,nodesignatures:c,verifieridentifier:n},u)]})).catch((function(e){return S.error("share req",e)}));i.push(h)}return I(i,function(){var e=s()(b.a.mark((function e(n,a){var o,i,u,s,c,l,p,h,g,v,m,x;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.filter((function(e){return e})),i=U(n.map((function(e){return e&&e.result&&e.result.keys[0].PublicKey})),1+~~(t.length/2)),!(o.length>=1+~~(t.length/2)&&i)){e.next=25;break}for(u=[],s=[],c=0;c<n.length;c+=1)n[c]&&n[c].result&&n[c].result.keys&&n[c].result.keys.length>0?(n[c].result.keys.sort((function(e,t){return new y.a(e.Index,16).cmp(new y.a(t.Index,16))})),n[c].result.keys[0].Metadata?(l={ephemPublicKey:Buffer.from(n[c].result.keys[0].Metadata.ephemPublicKey,"hex"),iv:Buffer.from(n[c].result.keys[0].Metadata.iv,"hex"),mac:Buffer.from(n[c].result.keys[0].Metadata.mac,"hex"),mode:Buffer.from(n[c].result.keys[0].Metadata.mode,"hex")},u.push(Object(d.decrypt)(f,W(W({},l),{},{ciphertext:Buffer.from(atob(n[c].result.keys[0].Share).padStart(64,"0"),"hex")})).catch((function(e){return S.debug("share decryption",e)})))):u.push(Promise.resolve(Buffer.from(n[c].result.keys[0].Share.padStart(64,"0"),"hex")))):u.push(Promise.resolve(void 0)),s.push(new y.a(r[c],16));return e.next=8,Promise.all(u);case 8:if(p=e.sent,!a.resolved){e.next=11;break}return e.abrupt("return",void 0);case 11:h=p.reduce((function(e,t,r){return t&&e.push({index:s[r],value:new y.a(t)}),e}),[]),g=D(h.length,1+~~(t.length/2)),m=function(e){var t=g[e],r=h.filter((function(e,r){return t.includes(r)})),n=r.map((function(e){return e.value})),a=r.map((function(e){return e.index})),o=k.lagrangeInterpolation(n,a),u=Object(d.getPublic)(Buffer.from(o.toString(16,64),"hex")).toString("hex"),s=u.slice(2,66),c=u.slice(66);if(0===new y.a(s,16).cmp(new y.a(i.X,16))&&0===new y.a(c,16).cmp(new y.a(i.Y,16)))return v=o,"break"},x=0;case 15:if(!(x<g.length)){e.next=22;break}if("break"!==m(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.abrupt("return",v);case 25:throw new Error("invalid");case 26:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}())})).then(function(){var e=s()(b.a.mark((function e(t){var r,n,a,o,i,u,s,c;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t,n=Object(d.getPublic)(Buffer.from(r.toString(16,64),"hex")).toString("hex"),a=n.slice(2,66),o=n.slice(66),!k.enableOneKey){e.next=12;break}return e.next=7,k.getNonce(a,o,r);case 7:u=e.sent,s=u.nonce,i=new y.a(s||"0",16),e.next=15;break;case 12:return e.next=14,k.getMetadata({pub_key_X:a,pub_key_Y:o});case 14:i=e.sent;case 15:return S.debug("> torus.js/retrieveShares",{privKey:r.toString(16),metadataNonce:i.toString(16)}),r=r.add(i).umod(k.ec.curve.n),c=k.generateAddressFromPrivKey(r),S.debug("> torus.js/retrieveShares",{ethAddress:c,privKey:r.toString(16)}),e.abrupt("return",{ethAddress:c,privKey:r.toString("hex",64),metadataNonce:i});case 20:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:case"end":return e.stop()}}),e,this)}))),function(e,t,r,n,a){return u.apply(this,arguments)})},{key:"getMetadata",value:(o=s()(b.a.mark((function e(t,r){var n;return b.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,"/get"),t,r,{useAPIKey:!0});case 3:if((n=e.sent)&&n.message){e.next=6;break}return e.abrupt("return",new y.a(0));case 6:return e.abrupt("return",new y.a(n.message,16));case 9:return e.prev=9,e.t0=e.catch(0),S.error("get metadata error",e.t0),e.abrupt("return",new y.a(0));case 13:case"end":return e.stop()}}),e,this,[[0,9]])}))),function(e,t){return o.apply(this,arguments)})},{key:"generateMetadataParams",value:function(e,t){var r=this.ec.keyFromPrivate(t.toString("hex",64)),n={data:e,timestamp:new y.a(~~(this.serverTimeOffset+Date.now()/1e3)).toString(16)},a=r.sign(Object(O.keccak256)(k()(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(a.r.toString(16,64)+a.s.toString(16,64)+new y.a(a.v).toString(16,2),"hex").toString("base64")}}},{key:"setMetadata",value:(a=s()(b.a.mark((function e(t,r){var n;return b.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),S.error("set metadata error",e.t0),e.abrupt("return","");case 11:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(e,t){return a.apply(this,arguments)})},{key:"lagrangeInterpolation",value:function(e,t){if(e.length!==t.length)return null;for(var r=new y.a(0),n=0;n<e.length;n+=1){for(var a=new y.a(1),o=new y.a(1),i=0;i<e.length;i+=1)if(n!==i){a=(a=a.mul(t[i].neg())).umod(this.ec.curve.n);var u=t[n].sub(t[i]);u=u.umod(this.ec.curve.n),o=o.mul(u).umod(this.ec.curve.n)}var s=a.mul(o.invm(this.ec.curve.n)).umod(this.ec.curve.n);s=s.mul(e[n]).umod(this.ec.curve.n),r=r.add(s)}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:(n=s()(b.a.mark((function e(t,r,n){var a,o,i,u,s,c,f,l,p,h,d,g,v,m,x,k,O,w,P,j,_=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=n.verifier,o=n.verifierId,i=_.length>3&&void 0!==_[3]&&_[3],S.debug("> torus.js/getPublicAddress",{endpoints:t,torusNodePubs:r,verifier:a,verifierId:o,isExtended:i}),s=!1,e.next=6,T(t,a,o);case 6:if(e.t0=e.sent,e.t0){e.next=9;break}e.t0={};case 9:if(c=e.t0,f=c.keyResult,!(l=c.errorResult)||!JSON.stringify(l).includes("Verifier + VerifierID has not yet been assigned")){e.next=25;break}return e.next=15,L(t,r,void 0,void 0,a,o);case 15:return e.next=17,V(t,a,o,1e3);case 17:if(e.t1=e.sent,e.t1){e.next=20;break}e.t1={};case 20:p=e.t1,u=p.keyResult,s=!0,e.next=30;break;case 25:if(!f){e.next=29;break}u=f,e.next=30;break;case 29:throw new Error("node results do not match at first lookup ".concat(JSON.stringify(f||{}),", ").concat(JSON.stringify(l||{})));case 30:if(S.debug("> torus.js/getPublicAddress",{finalKeyResult:u,isNewKey:s}),!u){e.next=72;break}if(d=u.keys[0],g=d.pub_key_X,v=d.pub_key_Y,!this.enableOneKey){e.next=60;break}return e.prev=34,e.next=38,this.getOrSetNonce(g,v,void 0,!s);case 38:P=e.sent,m=P.typeOfUser,x=P.nonce,k=P.pubNonce,w=P.upgraded,x=new y.a(x||"0",16),e.next=49;break;case 46:throw e.prev=46,e.t2=e.catch(34),new H;case 49:if("v1"!==m){e.next=53;break}O=this.ec.keyFromPublic({x:g.toString(16),y:v.toString(16)}).getPublic().add(this.ec.keyFromPrivate(x.toString(16)).getPublic()),e.next=58;break;case 53:if("v2"!==m){e.next=57;break}O=w?this.ec.keyFromPublic({x:g.toString(16),y:v.toString(16)}).getPublic():this.ec.keyFromPublic({x:g.toString(16),y:v.toString(16)}).getPublic().add(this.ec.keyFromPublic({x:k.x,y:k.y}).getPublic()),e.next=58;break;case 57:throw new Error("getOrSetNonce should always return typeOfUser.");case 58:e.next=65;break;case 60:return m="v1",e.next=63,this.getMetadata({pub_key_X:g,pub_key_Y:v});case 63:x=e.sent,O=this.ec.keyFromPublic({x:g.toString(16),y:v.toString(16)}).getPublic().add(this.ec.keyFromPrivate(x.toString(16)).getPublic());case 65:if(g=O.getX().toString(16),v=O.getY().toString(16),j=this.generateAddressFromPubKey(O.getX(),O.getY()),S.debug("> torus.js/getPublicAddress",{X:g,Y:v,address:j,typeOfUser:m,nonce:null===(h=x)||void 0===h?void 0:h.toString(16),pubNonce:k}),i){e.next=71;break}return e.abrupt("return",j);case 71:return e.abrupt("return",{typeOfUser:m,address:j,X:g,Y:v,metadataNonce:x,pubNonce:k});case 72:throw new Error("node results do not match at final lookup ".concat(JSON.stringify(f||{}),", ").concat(JSON.stringify(l||{})));case 73:case"end":return e.stop()}}),e,this,[[34,46]])}))),function(e,t,r){return n.apply(this,arguments)})},{key:"getOrSetNonce",value:(r=s()(b.a.mark((function e(t,r,n){var a,o,i,u=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=u.length>3&&void 0!==u[3]&&u[3],i=a?"getNonce":"getOrSetNonce",o=n?this.generateMetadataParams(i,n):{pub_key_X:t,pub_key_Y:r,set_data:{data:i}},e.abrupt("return",Object(g.post)("".concat(this.metadataHost,"/get_or_set_nonce"),o,void 0,{useAPIKey:!0}));case 4:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return r.apply(this,arguments)})},{key:"getNonce",value:(t=s()(b.a.mark((function e(t,r,n){return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.getOrSetNonce(t,r,n,!0));case 1:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"getPostboxKeyFrom1OutOf1",value:function(e,t){var r=new y.a(e,16),n=new y.a(t,16);return r.sub(n).umod(this.ec.curve.n).toString("hex")}}],[{key:"enableLogging",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e?S.enableAll():S.disableAll()}},{key:"setAPIKey",value:function(e){Object(g.setAPIKey)(e)}},{key:"setEmbedHost",value:function(e){Object(g.setEmbedHost)(e)}},{key:"isGetOrSetNonceError",value:function(e){return e instanceof H}}]),e}();t.default=z}]); | ||
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=18)}([function(e,t){e.exports=require("@babel/runtime/regenerator")},function(e,t){e.exports=require("bn.js")},function(e,t){e.exports=require("@toruslabs/http-helpers")},function(e,t){e.exports=require("@babel/runtime/helpers/asyncToGenerator")},function(e,t){e.exports=require("web3-utils")},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("@babel/runtime/helpers/getPrototypeOf")},function(e,t){e.exports=require("@toruslabs/eccrypto")},function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("json-stable-stringify")},function(e,t){e.exports=require("@babel/runtime/helpers/inherits")},function(e,t){e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(e,t){e.exports=require("@babel/runtime/helpers/wrapNativeSuper")},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("elliptic")},function(e,t){e.exports=require("loglevel")},function(e,t,r){"use strict";r.r(t),r.d(t,"keyAssign",(function(){return L})),r.d(t,"keyLookup",(function(){return U})),r.d(t,"waitKeyLookup",(function(){return V}));var n=r(9),o=r.n(n),a=r(15),i=r.n(a),u=r(3),s=r.n(u),c=r(5),f=r.n(c),l=r(6),p=r.n(l),h=r(0),b=r.n(h),d=r(8),g=r(2),y=r(1),v=r.n(y),m=r(16),k=r(10),x=r.n(k),w=r(4),O=r(17),P=r.n(O).a.getLogger("torus.js");P.disableAll();var S=P,j=r(11),_=r.n(j),N=r(12),K=r.n(N),A=r(7),E=r.n(A),R=r(13),q=r.n(R);function F(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=E()(e);if(t){var o=E()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return K()(this,r)}}var M=function(e){_()(r,e);var t=F(r);function r(e){var n,o=e.errors,a=e.responses,i=e.predicate;return f()(this,r),(n=t.call(this,"Unable to resolve enough promises.")).errors=o,n.responses=a,n.predicate=i,n}return p()(r)}(q()(Error)),I=function(e,t){return new Promise((function(r,n){var o,a=0,i={resolved:!1},u=new Array(e.length).fill(void 0),s=new Array(e.length).fill(void 0);e.forEach((function(c,f){c.then((function(e){s[f]=e})).catch((function(e){u[f]=e})).finally((function(){i.resolved||t(s.slice(0),i).then((function(e){i.resolved=!0,r(e)})).catch((function(e){o=e})).finally((function(t){if((a+=1)===e.length){var r=Object.values(s.reduce((function(e,t){var r,n,o=t||{},a=o.id,i=o.error;return(null==i||null===(r=i.data)||void 0===r?void 0:r.length)>0&&(i.data.startsWith("Error occurred while verifying params")?e[a]=(n=i.data).charAt(0).toUpperCase()+n.slice(1):e[a]=i.data),e}),{}));if(r.length>0){var i=r.length>1?"\n".concat(r.map((function(e){return"• ".concat(e)})).join("\n")):r[0];n(new Error(i))}else{var c;n(new M({errors:u,responses:s,predicate:(null===(c=o)||void 0===c?void 0:c.message)||o}))}}}))}))}))}))},X=r(14),Y=r.n(X);function J(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 B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?J(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):J(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function C(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=E()(e);if(t){var o=E()(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return K()(this,r)}}var H=function(e){_()(r,e);var t=C(r);function r(){return f()(this,r),t.apply(this,arguments)}return p()(r)}(q()(Error)),T=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(Y()(e),[[t]])}),[]);for(var o=[],a=[],i=0;i<=n.length-r+1;i+=1){a=e(n.slice(i+1),r-1);for(var u=0;u<a.length;u+=1)o.push([n[i]].concat(Y()(a[u])))}return o},D=function(e,t){for(var r={},n=0;n<e.length;n+=1){var o=x()(e[n]);if(r[o]=r[o]?r[o]+1:1,r[o]===t)return e[n]}},U=function(){var e=s()(b.a.mark((function e(t,r,n){var o;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.map((function(e){return Object(g.post)(e,Object(g.generateJsonRPCObject)("VerifierLookupRequest",{verifier:r,verifier_id:n.toString()})).catch((function(e){return S.error("lookup request failed",e)}))})),e.abrupt("return",I(o,(function(e){var r=e.filter((function(e){return e})),n=D(r.map((function(e){return e&&e.error})),1+~~(t.length/2)),o=D(r.map((function(e){return e&&e.result})),1+~~(t.length/2));return o||n?Promise.resolve({keyResult:o,errorResult:n}):Promise.reject(new Error("invalid results ".concat(JSON.stringify(e))))})));case 2:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}(),V=function(e,t,r,n){return new Promise((function(o,a){setTimeout((function(){U(e,t,r).then(o).catch(a)}),n)}))},L=function(){var e=s()(b.a.mark((function e(t,r,n,o,a,i){var u,s,c,f;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===n?(u=Math.floor(Math.random()*t.length),s=u):u=n%t.length,u!==o){e.next=3;break}throw new Error("Looped through all");case 3:return void 0!==o&&(s=o),c=Object(g.generateJsonRPCObject)("KeyAssign",{verifier:a,verifier_id:i.toString()}),e.prev=5,e.next=8,Object(g.post)("https://signer.tor.us/api/sign",c,{headers:{pubKeyX:r[u].X,pubKeyY:r[u].Y}},{useAPIKey:!0});case 8:return f=e.sent,e.abrupt("return",Object(g.post)(t[u],B(B({},c),f),{headers:{"Content-Type":"application/json; charset=utf-8"}}));case 12:if(e.prev=12,e.t0=e.catch(5),S.error(e.t0),!["Timed out","TypeError: Failed to fetch","TypeError: cancelled","TypeError: NetworkError when attempting to fetch resource."].includes(e.t0.message)){e.next=18;break}return e.abrupt("return",L(t,r,u+1,s,a,i));case 18:throw new Error("Sorry, torus network that powers web3auth is currently very busy.\n We will generate your key in time. Pls try again later. \n\n ".concat(e.t0.message||""));case 19:case"end":return e.stop()}}),e,null,[[5,12]])})));return function(t,r,n,o,a,i){return e.apply(this,arguments)}}();function G(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 W(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?G(Object(r),!0).forEach((function(t){o()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var z=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.enableOneKey,n=void 0!==r&&r,o=t.metadataHost,a=void 0===o?"https://metadata.tor.us":o,i=t.allowHost,u=void 0===i?"https://signer.tor.us/api/allow":i,s=t.serverTimeOffset,c=void 0===s?0:s;f()(this,e),this.ec=new m.ec("secp256k1"),this.metadataHost=a,this.allowHost=u,this.enableOneKey=n,this.serverTimeOffset=c||0}var t,r,n,o,a,u,c,l;return p()(e,[{key:"getUserTypeAndAddress",value:(l=s()(b.a.mark((function e(t,r,n){var o,a,i,u,s,c,f,l,p,h,d,g,y,m,k,x,w,O,P,S,j,_=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.verifier,a=n.verifierId,i=_.length>3&&void 0!==_[3]&&_[3],e.next=4,U(t,o,a);case 4:if(e.t0=e.sent,e.t0){e.next=7;break}e.t0={};case 7:if(u=e.t0,s=u.keyResult,c=u.errorResult,f=!1,!c||!JSON.stringify(c).includes("Verifier + VerifierID has not yet been assigned")){e.next=26;break}if(i){e.next=14;break}throw new Error("Verifier + VerifierID has not yet been assigned");case 14:return e.next=16,L(t,r,void 0,void 0,o,a);case 16:return e.next=18,V(t,o,a,1e3);case 18:if(e.t1=e.sent,e.t1){e.next=21;break}e.t1={};case 21:p=e.t1,l=p.keyResult,f=!0,e.next=31;break;case 26:if(!s){e.next=30;break}l=s,e.next=31;break;case 30:throw new Error("node results do not match at first lookup ".concat(JSON.stringify(s||{}),", ").concat(JSON.stringify(c||{})));case 31:if(!l){e.next=61;break}return h=l.keys[0],d=h.pub_key_X,g=h.pub_key_Y,e.prev=33,e.next=37,this.getOrSetNonce(d,g,void 0,!f);case 37:O=e.sent,y=O.typeOfUser,m=O.nonce,k=O.pubNonce,w=O.upgraded,m=new v.a(m||"0",16),e.next=48;break;case 45:throw e.prev=45,e.t2=e.catch(33),new H;case 48:if("v1"!==y){e.next=52;break}x=this.ec.keyFromPublic({x:d.toString(16),y:g.toString(16)}).getPublic().add(this.ec.keyFromPrivate(m.toString(16)).getPublic()),e.next=57;break;case 52:if("v2"!==y){e.next=56;break}x=this.ec.keyFromPublic({x:d.toString(16),y:g.toString(16)}).getPublic().add(this.ec.keyFromPublic({x:k.x,y:k.y}).getPublic()),e.next=57;break;case 56:throw new Error("getOrSetNonce should always return typeOfUser.");case 57:return P=x.getX().toString(16),S=x.getY().toString(16),j=this.generateAddressFromPubKey(x.getX(),x.getY()),e.abrupt("return",{typeOfUser:y,nonce:m,pubNonce:k,upgraded:w,X:P,Y:S,address:j});case 61:throw new Error("node results do not match at final lookup ".concat(JSON.stringify(s||{}),", ").concat(JSON.stringify(c||{})));case 62:case"end":return e.stop()}}),e,this,[[33,45]])}))),function(e,t,r){return l.apply(this,arguments)})},{key:"setCustomKey",value:(c=s()(b.a.mark((function e(t){var r,n,o,a,i,u,s,c,f;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.privKeyHex,n=t.metadataNonce,o=t.torusKeyHex,a=t.customKeyHex,o?i=new v.a(o,16):(u=new v.a(r,16),i=u.sub(n).umod(this.ec.curve.n)),s=new v.a(a,16),c=s.sub(i).umod(this.ec.curve.n),f=this.generateMetadataParams(c.toString(16),i.toString(16)),e.next=7,this.setMetadata(f);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return c.apply(this,arguments)})},{key:"retrieveShares",value:(u=s()(b.a.mark((function e(t,r,n,o,a){var u,c,f,l,p,h,y,m,k,x=this,O=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=O.length>5&&void 0!==O[5]?O[5]:{},c=[],e.next=4,Object(g.get)(this.allowHost,{headers:{verifier:n,verifier_id:o.verifier_id}},{useAPIKey:!0});case 4:for(f=Object(d.generatePrivate)(),l=Object(d.getPublic)(f).toString("hex"),p=l.slice(2,66),h=l.slice(66),y=Object(w.keccak256)(a),m=0;m<t.length;m+=1)k=Object(g.post)(t[m],Object(g.generateJsonRPCObject)("CommitmentRequest",{messageprefix:"mug00",tokencommitment:y.slice(2),temppubx:p,temppuby:h,verifieridentifier:n})).catch((function(e){return S.error("commitment",e)})),c.push(k);return e.abrupt("return",I(c,(function(e){return e.filter((function(e){return!(!e||"object"!==i()(e)||e.error)})).length>=3*~~(t.length/4)+1?Promise.resolve(e):Promise.reject(new Error("invalid ".concat(JSON.stringify(e))))})).then((function(e){for(var i=[],c=[],l=0;l<e.length;l+=1)e[l]&&c.push(e[l].result);for(var p=0;p<t.length;p+=1){var h=Object(g.post)(t[p],Object(g.generateJsonRPCObject)("ShareRequest",{encrypted:"yes",item:[W(W({},o),{},{idtoken:a,nodesignatures:c,verifieridentifier:n},u)]})).catch((function(e){return S.error("share req",e)}));i.push(h)}return I(i,function(){var e=s()(b.a.mark((function e(n,o){var a,i,u,s,c,l,p,h,g,y,m,k;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.filter((function(e){return e})),i=D(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=25;break}for(u=[],s=[],c=0;c<n.length;c+=1)n[c]&&n[c].result&&n[c].result.keys&&n[c].result.keys.length>0?(n[c].result.keys.sort((function(e,t){return new v.a(e.Index,16).cmp(new v.a(t.Index,16))})),n[c].result.keys[0].Metadata?(l={ephemPublicKey:Buffer.from(n[c].result.keys[0].Metadata.ephemPublicKey,"hex"),iv:Buffer.from(n[c].result.keys[0].Metadata.iv,"hex"),mac:Buffer.from(n[c].result.keys[0].Metadata.mac,"hex"),mode:Buffer.from(n[c].result.keys[0].Metadata.mode,"hex")},u.push(Object(d.decrypt)(f,W(W({},l),{},{ciphertext:Buffer.from(atob(n[c].result.keys[0].Share).padStart(64,"0"),"hex")})).catch((function(e){return S.debug("share decryption",e)})))):u.push(Promise.resolve(Buffer.from(n[c].result.keys[0].Share.padStart(64,"0"),"hex")))):u.push(Promise.resolve(void 0)),s.push(new v.a(r[c],16));return e.next=8,Promise.all(u);case 8:if(p=e.sent,!o.resolved){e.next=11;break}return e.abrupt("return",void 0);case 11:h=p.reduce((function(e,t,r){return t&&e.push({index:s[r],value:new v.a(t)}),e}),[]),g=T(h.length,1+~~(t.length/2)),m=function(e){var t=g[e],r=h.filter((function(e,r){return t.includes(r)})),n=r.map((function(e){return e.value})),o=r.map((function(e){return e.index})),a=x.lagrangeInterpolation(n,o),u=Object(d.getPublic)(Buffer.from(a.toString(16,64),"hex")).toString("hex"),s=u.slice(2,66),c=u.slice(66);if(0===new v.a(s,16).cmp(new v.a(i.X,16))&&0===new v.a(c,16).cmp(new v.a(i.Y,16)))return y=a,"break"},k=0;case 15:if(!(k<g.length)){e.next=22;break}if("break"!==m(k)){e.next=19;break}return e.abrupt("break",22);case 19:k+=1,e.next=15;break;case 22:if(void 0!==y){e.next=24;break}throw new Error("could not derive private key");case 24:return e.abrupt("return",y);case 25:throw new Error("invalid");case 26:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}())})).then(function(){var e=s()(b.a.mark((function e(t){var r,n,o,a,i,u,s,c;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t,n=Object(d.getPublic)(Buffer.from(r.toString(16,64),"hex")).toString("hex"),o=n.slice(2,66),a=n.slice(66),!x.enableOneKey){e.next=12;break}return e.next=7,x.getNonce(o,a,r);case 7:u=e.sent,s=u.nonce,i=new v.a(s||"0",16),e.next=15;break;case 12:return e.next=14,x.getMetadata({pub_key_X:o,pub_key_Y:a});case 14:i=e.sent;case 15:return S.debug("> torus.js/retrieveShares",{privKey:r.toString(16),metadataNonce:i.toString(16)}),r=r.add(i).umod(x.ec.curve.n),c=x.generateAddressFromPrivKey(r),S.debug("> torus.js/retrieveShares",{ethAddress:c,privKey:r.toString(16)}),e.abrupt("return",{ethAddress:c,privKey:r.toString("hex",64),metadataNonce:i});case 20:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:case"end":return e.stop()}}),e,this)}))),function(e,t,r,n,o){return u.apply(this,arguments)})},{key:"getMetadata",value:(a=s()(b.a.mark((function e(t,r){var n;return b.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,"/get"),t,r,{useAPIKey:!0});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("get metadata error",e.t0),e.abrupt("return",new v.a(0));case 13:case"end":return e.stop()}}),e,this,[[0,9]])}))),function(e,t){return a.apply(this,arguments)})},{key:"generateMetadataParams",value:function(e,t){var r=this.ec.keyFromPrivate(t.toString("hex",64)),n={data:e,timestamp:new v.a(~~(this.serverTimeOffset+Date.now()/1e3)).toString(16)},o=r.sign(Object(w.keccak256)(x()(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 v.a(o.v).toString(16,2),"hex").toString("base64")}}},{key:"setMetadata",value:(o=s()(b.a.mark((function e(t,r){var n;return b.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),S.error("set metadata error",e.t0),e.abrupt("return","");case 11:case"end":return e.stop()}}),e,this,[[0,7]])}))),function(e,t){return o.apply(this,arguments)})},{key:"lagrangeInterpolation",value:function(e,t){if(e.length!==t.length)return null;for(var r=new v.a(0),n=0;n<e.length;n+=1){for(var o=new v.a(1),a=new v.a(1),i=0;i<e.length;i+=1)if(n!==i){o=(o=o.mul(t[i].neg())).umod(this.ec.curve.n);var u=t[n].sub(t[i]);u=u.umod(this.ec.curve.n),a=a.mul(u).umod(this.ec.curve.n)}var s=o.mul(a.invm(this.ec.curve.n)).umod(this.ec.curve.n);s=s.mul(e[n]).umod(this.ec.curve.n),r=r.add(s)}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(w.keccak256)(Buffer.from(t,"hex")).slice(26));return Object(w.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(w.keccak256)(Buffer.from(r,"hex")).slice(26));return Object(w.toChecksumAddress)(n)}},{key:"getPublicAddress",value:(n=s()(b.a.mark((function e(t,r,n){var o,a,i,u,s,c,f,l,p,h,d,g,y,m,k,x,w,O,P,j,_=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.verifier,a=n.verifierId,i=_.length>3&&void 0!==_[3]&&_[3],S.debug("> torus.js/getPublicAddress",{endpoints:t,torusNodePubs:r,verifier:o,verifierId:a,isExtended:i}),s=!1,e.next=6,U(t,o,a);case 6:if(e.t0=e.sent,e.t0){e.next=9;break}e.t0={};case 9:if(c=e.t0,f=c.keyResult,!(l=c.errorResult)||!JSON.stringify(l).includes("Verifier + VerifierID has not yet been assigned")){e.next=25;break}return e.next=15,L(t,r,void 0,void 0,o,a);case 15:return e.next=17,V(t,o,a,1e3);case 17:if(e.t1=e.sent,e.t1){e.next=20;break}e.t1={};case 20:p=e.t1,u=p.keyResult,s=!0,e.next=30;break;case 25:if(!f){e.next=29;break}u=f,e.next=30;break;case 29:throw new Error("node results do not match at first lookup ".concat(JSON.stringify(f||{}),", ").concat(JSON.stringify(l||{})));case 30:if(S.debug("> torus.js/getPublicAddress",{finalKeyResult:u,isNewKey:s}),!u){e.next=72;break}if(d=u.keys[0],g=d.pub_key_X,y=d.pub_key_Y,!this.enableOneKey){e.next=60;break}return e.prev=34,e.next=38,this.getOrSetNonce(g,y,void 0,!s);case 38:P=e.sent,m=P.typeOfUser,k=P.nonce,x=P.pubNonce,O=P.upgraded,k=new v.a(k||"0",16),e.next=49;break;case 46:throw e.prev=46,e.t2=e.catch(34),new H;case 49:if("v1"!==m){e.next=53;break}w=this.ec.keyFromPublic({x:g.toString(16),y:y.toString(16)}).getPublic().add(this.ec.keyFromPrivate(k.toString(16)).getPublic()),e.next=58;break;case 53:if("v2"!==m){e.next=57;break}w=O?this.ec.keyFromPublic({x:g.toString(16),y:y.toString(16)}).getPublic():this.ec.keyFromPublic({x:g.toString(16),y:y.toString(16)}).getPublic().add(this.ec.keyFromPublic({x:x.x,y:x.y}).getPublic()),e.next=58;break;case 57:throw new Error("getOrSetNonce should always return typeOfUser.");case 58:e.next=65;break;case 60:return m="v1",e.next=63,this.getMetadata({pub_key_X:g,pub_key_Y:y});case 63:k=e.sent,w=this.ec.keyFromPublic({x:g.toString(16),y:y.toString(16)}).getPublic().add(this.ec.keyFromPrivate(k.toString(16)).getPublic());case 65:if(g=w.getX().toString(16),y=w.getY().toString(16),j=this.generateAddressFromPubKey(w.getX(),w.getY()),S.debug("> torus.js/getPublicAddress",{X:g,Y:y,address:j,typeOfUser:m,nonce:null===(h=k)||void 0===h?void 0:h.toString(16),pubNonce:x}),i){e.next=71;break}return e.abrupt("return",j);case 71:return e.abrupt("return",{typeOfUser:m,address:j,X:g,Y:y,metadataNonce:k,pubNonce:x});case 72:throw new Error("node results do not match at final lookup ".concat(JSON.stringify(f||{}),", ").concat(JSON.stringify(l||{})));case 73:case"end":return e.stop()}}),e,this,[[34,46]])}))),function(e,t,r){return n.apply(this,arguments)})},{key:"getOrSetNonce",value:(r=s()(b.a.mark((function e(t,r,n){var o,a,i,u=arguments;return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=u.length>3&&void 0!==u[3]&&u[3],i=o?"getNonce":"getOrSetNonce",a=n?this.generateMetadataParams(i,n):{pub_key_X:t,pub_key_Y:r,set_data:{data:i}},e.abrupt("return",Object(g.post)("".concat(this.metadataHost,"/get_or_set_nonce"),a,void 0,{useAPIKey:!0}));case 4:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return r.apply(this,arguments)})},{key:"getNonce",value:(t=s()(b.a.mark((function e(t,r,n){return b.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.getOrSetNonce(t,r,n,!0));case 1:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"getPostboxKeyFrom1OutOf1",value:function(e,t){var r=new v.a(e,16),n=new v.a(t,16);return r.sub(n).umod(this.ec.curve.n).toString("hex")}}],[{key:"enableLogging",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e?S.enableAll():S.disableAll()}},{key:"setAPIKey",value:function(e){Object(g.setAPIKey)(e)}},{key:"setEmbedHost",value:function(e){Object(g.setEmbedHost)(e)}},{key:"isGetOrSetNonceError",value:function(e){return e instanceof H}}]),e}();t.default=z}]); | ||
//# sourceMappingURL=torusUtils.cjs.js.map |
@@ -52,3 +52,3 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty'; | ||
return SomeError; | ||
return _createClass(SomeError); | ||
}( /*#__PURE__*/_wrapNativeSuper(Error)); | ||
@@ -119,5 +119,5 @@ var Some = function Some(promises, predicate) { | ||
function ownKeys$1(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$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } | ||
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } | ||
@@ -138,3 +138,3 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } | ||
return GetOrSetNonceError; | ||
return _createClass(GetOrSetNonceError); | ||
}( /*#__PURE__*/_wrapNativeSuper(Error)); | ||
@@ -250,3 +250,3 @@ var kCombinations = function kCombinations(s, k) { | ||
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(endpoints, torusNodePubs, lastPoint, firstPoint, verifier, verifierId) { | ||
var nodeNum, initialPoint, data, signedData; | ||
var nodeNum, initialPoint, data, signedData, acceptedErrorMsgs; | ||
return _regeneratorRuntime.wrap(function _callee2$(_context2) { | ||
@@ -299,5 +299,20 @@ while (1) { | ||
log.error(_context2.t0); | ||
acceptedErrorMsgs = [// Slow node | ||
'Timed out', // Happens when the node is not reachable (dns issue etc) | ||
'TypeError: Failed to fetch', // All except iOS and Firefox | ||
'TypeError: cancelled', // iOS | ||
'TypeError: NetworkError when attempting to fetch resource.' // Firefox | ||
]; | ||
if (!acceptedErrorMsgs.includes(_context2.t0.message)) { | ||
_context2.next = 18; | ||
break; | ||
} | ||
return _context2.abrupt("return", keyAssign(endpoints, torusNodePubs, nodeNum + 1, initialPoint, verifier, verifierId)); | ||
case 16: | ||
case 18: | ||
throw new Error("Sorry, torus network that powers web3auth is currently very busy.\n We will generate your key in time. Pls try again later. \n\n ".concat(_context2.t0.message || '')); | ||
case 19: | ||
case "end": | ||
@@ -315,5 +330,5 @@ return _context2.stop(); | ||
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); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } | ||
// of Torus nodes to handle malicious node responses | ||
@@ -320,0 +335,0 @@ |
{ | ||
"name": "@toruslabs/torus.js", | ||
"version": "4.2.3", | ||
"version": "4.2.4", | ||
"description": "Handle communication with torus nodes", | ||
@@ -27,3 +27,3 @@ "main": "dist/torusUtils.cjs.js", | ||
"@toruslabs/eccrypto": "^1.1.8", | ||
"@toruslabs/http-helpers": "^2.1.1", | ||
"@toruslabs/http-helpers": "^2.1.4", | ||
"bn.js": "^5.2.0", | ||
@@ -36,11 +36,11 @@ "elliptic": "^6.5.4", | ||
"devDependencies": { | ||
"@babel/cli": "^7.16.0", | ||
"@babel/core": "^7.16.0", | ||
"@babel/eslint-parser": "^7.16.3", | ||
"@babel/eslint-plugin": "^7.14.5", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.16.0", | ||
"@babel/plugin-transform-runtime": "^7.16.4", | ||
"@babel/preset-env": "^7.16.4", | ||
"@babel/register": "^7.16.0", | ||
"@babel/runtime-corejs3": "^7.16.3", | ||
"@babel/cli": "^7.16.8", | ||
"@babel/core": "^7.16.7", | ||
"@babel/eslint-parser": "^7.16.5", | ||
"@babel/eslint-plugin": "^7.16.5", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.16.7", | ||
"@babel/plugin-transform-runtime": "^7.16.8", | ||
"@babel/preset-env": "^7.16.8", | ||
"@babel/register": "^7.16.9", | ||
"@babel/runtime-corejs3": "^7.16.8", | ||
"@rollup/plugin-babel": "^5.3.0", | ||
@@ -53,13 +53,13 @@ "@toruslabs/fetch-node-details": "^4.0.2", | ||
"cross-env": "^7.0.3", | ||
"dotenv": "^10.0.0", | ||
"eslint": "^8.3.0", | ||
"dotenv": "^12.0.4", | ||
"eslint": "^8.7.0", | ||
"eslint-config-airbnb-base": "^15.0.0", | ||
"eslint-config-prettier": "^8.3.0", | ||
"eslint-config-standard": "^16.0.3", | ||
"eslint-config-standard": "^17.0.0-0", | ||
"eslint-plugin-chai-expect": "^3.0.0", | ||
"eslint-plugin-import": "^2.25.3", | ||
"eslint-plugin-mocha": "^9.0.0", | ||
"eslint-plugin-import": "^2.25.4", | ||
"eslint-plugin-mocha": "^10.0.3", | ||
"eslint-plugin-node": "^11.1.0", | ||
"eslint-plugin-prettier": "^4.0.0", | ||
"eslint-plugin-promise": "^5.2.0", | ||
"eslint-plugin-promise": "^6.0.0", | ||
"eslint-plugin-simple-import-sort": "^7.0.0", | ||
@@ -70,9 +70,9 @@ "eslint-webpack-plugin": "^2.5.4", | ||
"jsonwebtoken": "^8.5.1", | ||
"lint-staged": "^12.1.2", | ||
"mocha": "^9.1.3", | ||
"lint-staged": "^12.1.7", | ||
"mocha": "^9.1.4", | ||
"node-fetch": "^2.6.1", | ||
"parallel-webpack": "^2.6.0", | ||
"prettier": "^2.5.0", | ||
"prettier": "^2.5.1", | ||
"rimraf": "^3.0.2", | ||
"rollup": "^2.60.2", | ||
"rollup": "^2.64.0", | ||
"rollup-plugin-sourcemaps": "^0.6.3", | ||
@@ -79,0 +79,0 @@ "webpack": "^4.46.0", |
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 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 too big to display
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
5365704
13115