From e87ba3f964ffbf9fda6011566d475e7439c26706 Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Wed, 1 Mar 2023 01:31:02 +0700 Subject: [PATCH 1/9] minor fix --- packages/keysmith/dist/me3.d.ts | 1 + packages/keysmith/dist/me3.js | 15 ++++++ packages/keysmith/dist/me3.js.map | 2 +- packages/sample/app.ts | 76 +++++++++++++++---------------- 4 files changed, 54 insertions(+), 40 deletions(-) diff --git a/packages/keysmith/dist/me3.d.ts b/packages/keysmith/dist/me3.d.ts index 3edfd7e..7c7837b 100644 --- a/packages/keysmith/dist/me3.d.ts +++ b/packages/keysmith/dist/me3.d.ts @@ -9,6 +9,7 @@ export default class Me3 { private _serverPubRsa?; constructor(credential: ME3Config); me3ApiClient(): AxiosInstance; + isInitialized(): boolean; getGAuthUrl(): any; getGToken(redirectUrl: string): Promise; getWallets(): Promise; diff --git a/packages/keysmith/dist/me3.js b/packages/keysmith/dist/me3.js index d81c7d8..7f86265 100644 --- a/packages/keysmith/dist/me3.js +++ b/packages/keysmith/dist/me3.js @@ -114,6 +114,21 @@ var Me3 = (function () { Me3.prototype.me3ApiClient = function () { return this._client; }; + Me3.prototype.isInitialized = function () { + if (lodash_1["default"].isEmpty(this._apiToken)) { + return false; + } + if (lodash_1["default"].isEmpty(this._userSecret)) { + return false; + } + if (lodash_1["default"].isEmpty(this._myPriRsa)) { + return false; + } + if (lodash_1["default"].isEmpty(this._serverPubRsa)) { + return false; + } + return true; + }; Me3.prototype.getGAuthUrl = function () { return this._gClient.generateAuthUrl(); }; diff --git a/packages/keysmith/dist/me3.js.map b/packages/keysmith/dist/me3.js.map index 3f4fe18..851332e 100644 --- a/packages/keysmith/dist/me3.js.map +++ b/packages/keysmith/dist/me3.js.map @@ -1 +1 @@ -{"version":3,"file":"me3.js","sourceRoot":"","sources":["../src/me3.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAsB;AAEtB,8DAAuC;AACvC,2CAA8B;AAE9B,gDAA+E;AAC/E,iCAAmE;AACnE,oDAAmC;AACnC,oDAA6B;AAC7B,+BAAqC;AACrC,6CAA+C;AAE/C;IASE,aAAY,UAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAM,CACxB,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,aAAa,CACzB,CAAA;QACD,IAAI,CAAC,OAAO,GAAG,kBAAK,CAAC,MAAM,CAAC;YAC1B,OAAO,EAAE,UAAU,CAAC,QAAQ;SAC7B,CAAC,CAAA;QAEF,IAAM,aAAa,GAAG;YACpB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,UAAU,CAAC,SAAS;SACnC,CAAA;QACD,IAAM,KAAK,GAAQ,IAAI,CAAA;QACvB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UACpC,MAA0B;YAE1B,MAAM,CAAC,OAAO,GAAG,mBAAC,CAAC,KAAK,CAAC,aAAa,CAAC;iBACpC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC;iBACnC,MAAM,CAAC,mBAAC,CAAC,QAAQ,CAAC;iBAClB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;iBACrB,KAAK,EAAE,CAAA;YAEV,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,IAAmB;YAC5D,IAAA,IAAI,GAAK,IAAI,CAAC,IAAI,KAAd,CAAc;YACxB,IAAM,YAAY,GAAG,mBAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAC,CAAC,OAAO,CAAC,mBAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;YACxE,IAAI,YAAY,EAAE;gBAChB,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aACtC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;YAChB,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;IAKD,0BAAY,GAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,yBAAW,GAAX;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAA;IACxC,CAAC;IAEK,uBAAS,GAAf,UAAgB,WAAmB;;;;4BAC1B,WAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,EAAA;4BAAjD,WAAO,SAA0C,EAAA;;;;KAClD;IAEK,wBAAU,GAAhB;;;;;4BACgB,WAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAA;;wBAA1C,KAAK,GAAG,SAAkC;wBAChD,WAAM,IAAI,CAAC,YAAY,CAAC,KAAM,CAAC,EAAA;;wBAA/B,SAA+B,CAAA;wBAEd,WAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CACtC,qBAAqB,EACrB,IAAI,EACJ;gCACE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;6BAC1B,CACF,EAAA;;wBANO,IAAI,GAAK,CAAA,SAMhB,CAAA,KANW;wBAQZ,IAAI,CAAC,SAAS,GAAG,mBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;wBACzC,IAAI,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;4BAC7B,MAAM,KAAK,CAAC,kDAAkD,CAAC,CAAA;yBAChE;wBAEiB,WAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAA;;wBAA5C,SAAS,GAAG,SAAgC;6BAC9C,CAAC,SAAS,EAAV,cAAU;wBACZ,OAAO,CAAC,GAAG,CAAC,6CAAsC,KAAK,MAAG,CAAC,CAAA;wBACpD,WAAM,IAAI,CAAC,YAAY,EAAE,EAAA;4BAAhC,WAAO,SAAyB,EAAA;;wBAGlC,OAAO,CAAC,GAAG,CAAC,uCAAgC,KAAK,MAAG,CAAC,CAAA;wBAC9C,MAAM,GAAI,SAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAzC,CAAyC;wBACtC,WAAM,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAC9C,UAAA,OAAO,IAAI,OAAA,mBAAC,CAAC,GAAG,CAAC,OAAO,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC;gCAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;gCACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gCACxB,aAAa,EAAE,CAAC,CAAC,aAAa;gCAE9B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;6BAC5B,CAAC,EAN6B,CAM7B,CAAC,EANQ,CAMR,CACJ,EAAA;;wBARK,OAAO,GAAG,SAQf;8BACsB,EAAP,mBAAO;;;6BAAP,CAAA,qBAAO,CAAA;wBAAZ,CAAC;wBACV,WAAM,OAAO,CAAC,GAAG,CAAC;gCAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,sBAAsB,EACtB,IAAI,CAAC,WAAW,uBAAM,CAAC,KAAE,SAAS,EAAE,IAAI,IAAG,CAC5C;gCACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE;oCAC7C,MAAM,EAAE;wCACN,SAAS,EAAE,CAAC,CAAC,SAAS;wCACtB,MAAM,EAAE,CAAC;qCACV;iCACF,CAAC;6BACH,CAAC,EAAA;;wBAXF,SAWE,CAAA;;;wBAZY,IAAO,CAAA;;6BAcvB,WAAO,OAAO,EAAA;;;;KACf;IAED,yBAAW,GAAX,UAAY,IAAS,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QACpC,IAAM,MAAM,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,aAAc;YAC3B,QAAQ,EAAE,IAAI;SACf,CAAA;QACD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC9C,IAAA,KAA0B,IAAI,CAAC,WAAY,EAAzC,QAAQ,cAAA,EAAE,GAAG,SAAA,EAAE,IAAI,UAAsB,CAAA;YACjD,IAAM,YAAY,GAAG,UAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YACrD,mBAAC,CAAC,KAAK,CAAC,MAAM,EAAE;gBACd,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAA;SACH;QACD,OAAO,SAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,yBAAW,GAAX,UAAY,IAAc,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QACzC,IAAM,MAAM,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,SAAU;YACvB,QAAQ,EAAE,KAAK;SAChB,CAAA;QACD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC9C,IAAA,KAA0B,IAAI,CAAC,WAAY,EAAzC,QAAQ,cAAA,EAAE,GAAG,SAAA,EAAE,IAAI,UAAsB,CAAA;YACjD,IAAM,YAAY,GAAG,UAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YACrD,mBAAC,CAAC,KAAK,CAAC,MAAM,EAAE;gBACd,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAA;SACH;QAED,IAAM,SAAS,GAAG,SAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAUK,6BAAe,GAArB,UAAsB,MAAM,EAAE,YAAY,EAAE,kBAAkB;;;;;;wBACtD,KAAe,SAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAjD,QAAQ,QAAA,CAAyC;wBAEnD,WAAM,IAAA,6BAAe,EAAC;gCAC3B,MAAM,QAAA;gCACN,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;gCAClC,kBAAkB,oBAAA;6BACnB,CAAC,EAAA;4BAJF,WAAO,SAIL,EAAA;;;;KACH;IAEK,oBAAM,GAAZ,UAAa,MAAiB,EAAE,SAAS;;;;;4BACxB,WAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAAnC,MAAM,GAAG,SAA0B;wBACnC,UAAU,GAAG,mBAAC,CAAC,KAAK,CAAC,MAAM,CAAC;6BAC7B,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,mBAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAjD,CAAiD,CAAC;6BAC9D,IAAI,EAAE;6BACN,KAAK,EAAE,CAAA;wBACZ,IAAI,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;4BACzB,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAA;yBACnC;wBAEK,KAAe,SAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAjD,QAAQ,QAAA,CAAyC;wBAGnD,WAAM,IAAA,6BAAe,EAAC;gCAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;gCACzB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;gCACnC,kBAAkB,EAAE,SAAS;6BAC9B,CAAC,EAAA;4BAJF,WAAO,SAIL,EAAA;;;;KACH;IAgBa,2BAAa,GAA3B;;;;;4BAC2B,WAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAA;;wBAAxD,MAAM,GAAK,CAAA,SAA6C,CAAA,KAAlD;wBACpB,WAAO,MAAM,EAAA;;;;KACd;IAEa,4BAAc,GAA5B;;;;;4BACiB,WAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAAnC,MAAM,GAAG,SAA0B;wBACnC,OAAO,GAA0B,mBAAC,CAAC,MAAM,CAC7C,MAAM,EACN,UAAC,MAAM,EAAE,GAAG;4BACV,IAAM,IAAI,GAAG,MAAM,CAAC,mBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;4BAChD,IAAI,CAAC,IAAI,CAAC;gCACR,SAAS,EAAE,GAAG,CAAC,IAAI;gCACnB,UAAU,EAAE,mBAAC,CAAC,IAAI,CAAC,cAAO,GAAG,CAAC,WAAW,CAAE,CAAC;6BAC7C,CAAC,CAAA;4BACF,MAAM,CAAC,mBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;4BACpC,OAAO,MAAM,CAAA;wBACf,CAAC,EACD,EAAE,CACH,CAAA;wBAGK,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAA;wBACnC,OAAO,GAAG,IAAI,KAAK,EAAO,CAAA;4CACpB,GAAG,EAAE,IAAI;;;;4CACJ,WAAM,IAAA,mBAAY,EAAC,GAAG,EAAE,QAAQ,CAAC,EAAA;;wCAA1C,MAAM,GAAG,SAAiC;wCAChD,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4CACtB,OAAO,CAAC,IAAI,CAAC,mBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,UAAC,EAAE,IAAK,OAAA,mBAAC,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAnB,CAAmB,CAAC,CAAC,CAAA;yCACvD;;;;;8BAJyC,EAAlB,KAAA,mBAAC,CAAC,OAAO,CAAC,OAAO,CAAC;;;6BAAlB,CAAA,cAAkB,CAAA;wBAAjC,WAAW,EAAV,GAAG,QAAA,EAAE,IAAI,QAAA;2CAAT,GAAG,EAAE,IAAI;;;;;wBAAK,IAAkB,CAAA;;4BAM5C,WAAO,mBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAA;;;;KAC1B;IAEa,0BAAY,GAA1B;;;;;4BACmB,WAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAA;;wBAAxD,IAAI,GAAK,CAAA,SAA+C,CAAA,KAApD;wBAEZ,WAAO,IAAI,EAAA;;;;KACZ;IAEa,6BAAe,GAA7B,UAA8B,UAAgB;;;;;;;wBACtC,oBAAoB,GAAG,UAAO,MAAe;;gCACjD,WAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE;wCAC/C,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE;qCACnB,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,mBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,EAA1B,CAA0B,CAAC,EAAA;;6BAAA,CAAA;wBAEvC,GAAG,GAAqB,UAAU,IAA/B,EAAE,QAAQ,GAAW,UAAU,SAArB,EAAE,IAAI,GAAK,UAAU,KAAf,CAAe;6BACtC,CAAA,mBAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,mBAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,EAAlD,cAAkD;wBACrC,WAAM,oBAAoB,CAAC,EAAE,CAAC,EAAA;;wBAAvC,MAAM,GAAG,SAA8B;6BACzC,CAAC,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAlB,cAAkB;wBACpB,KAAA,IAAI,CAAA;wBAAe,WAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAA;;wBAAvD,GAAK,WAAW,GAAG,SAAoC,CAAA;wBAEvD,WAAO,KAAK,EAAA;;wBAGV,OAAO,GAAG,yBAAY,CAAC,QAAQ,CAAC;4BACpC,OAAO,EAAE,+DAA+D;4BACxE,MAAM,EAAE,EAAE;yBACX,CAAC,CAAA;wBACI,GAAG,GAAG,UAAG,CAAC,OAAO,CAAC,UAAG,OAAO,SAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;wBACtE,MAAM,GAAG,mBAAC,CAAC,MAAM,CAAC,EAAE,GAAG,KAAA,EAAE,QAAQ,UAAA,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,EAAE,mBAAC,CAAC,QAAQ,CAAC,CAAA;wBAC3D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBAGrB,WAAM,OAAO,CAAC,GAAG,CAAC;gCAMjC,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EACnC,iBAAS,CAAC,IAAI,EACd,kBAAkB,CACnB;6BACF,CAAC,EAAA;;wBAXK,MAAM,GAAI,CAAA,SAWf,CAAA,GAXW;wBAYb,WAAM,oBAAoB,CAAC,MAAO,CAAC,EAAA;;wBAAnC,SAAmC,CAAA;wBACnC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;wBAGzB,WAAO,IAAI,EAAA;;;;KACZ;IAEa,0BAAY,GAA1B,UAA2B,KAAa;;;;;4BACJ,WAAM,UAAG,CAAC,UAAU,EAAE,EAAA;;wBAAlD,KAA4B,SAAsB,EAAhD,UAAU,gBAAA,EAAE,SAAS,eAAA;wBACZ,WAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CACtC,yBAAyB,EACzB;gCACE,KAAK,OAAA;gCACL,SAAS,WAAA;6BACV,CACF,EAAA;;wBANO,IAAI,GAAK,CAAA,SAMhB,CAAA,KANW;wBAQZ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAA;wBAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;;;;;KAC1B;IACH,UAAC;AAAD,CAAC,AArSD,IAqSC"} \ No newline at end of file +{"version":3,"file":"me3.js","sourceRoot":"","sources":["../src/me3.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAsB;AAEtB,8DAAuC;AACvC,2CAA8B;AAE9B,gDAA+E;AAC/E,iCAAmE;AACnE,oDAAmC;AACnC,oDAA6B;AAC7B,+BAAqC;AACrC,6CAA+C;AAE/C;IASE,aAAY,UAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAM,CACxB,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,aAAa,CACzB,CAAA;QACD,IAAI,CAAC,OAAO,GAAG,kBAAK,CAAC,MAAM,CAAC;YAC1B,OAAO,EAAE,UAAU,CAAC,QAAQ;SAC7B,CAAC,CAAA;QAEF,IAAM,aAAa,GAAG;YACpB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,UAAU,CAAC,SAAS;SACnC,CAAA;QACD,IAAM,KAAK,GAAQ,IAAI,CAAA;QACvB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UACpC,MAA0B;YAE1B,MAAM,CAAC,OAAO,GAAG,mBAAC,CAAC,KAAK,CAAC,aAAa,CAAC;iBACpC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC;iBACnC,MAAM,CAAC,mBAAC,CAAC,QAAQ,CAAC;iBAClB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;iBACrB,KAAK,EAAE,CAAA;YAEV,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,IAAmB;YAC5D,IAAA,IAAI,GAAK,IAAI,CAAC,IAAI,KAAd,CAAc;YACxB,IAAM,YAAY,GAAG,mBAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAC,CAAC,OAAO,CAAC,mBAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;YACxE,IAAI,YAAY,EAAE;gBAChB,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aACtC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;YAChB,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;IAKD,0BAAY,GAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAKD,2BAAa,GAAb;QACE,IAAI,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAA;SACb;QACD,IAAI,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC/B,OAAO,KAAK,CAAA;SACb;QACD,IAAI,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAA;SACb;QACD,IAAI,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACjC,OAAO,KAAK,CAAA;SACb;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,yBAAW,GAAX;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAA;IACxC,CAAC;IAEK,uBAAS,GAAf,UAAgB,WAAmB;;;;4BAC1B,WAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,EAAA;4BAAjD,WAAO,SAA0C,EAAA;;;;KAClD;IAEK,wBAAU,GAAhB;;;;;4BACgB,WAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAA;;wBAA1C,KAAK,GAAG,SAAkC;wBAChD,WAAM,IAAI,CAAC,YAAY,CAAC,KAAM,CAAC,EAAA;;wBAA/B,SAA+B,CAAA;wBAEd,WAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CACtC,qBAAqB,EACrB,IAAI,EACJ;gCACE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;6BAC1B,CACF,EAAA;;wBANO,IAAI,GAAK,CAAA,SAMhB,CAAA,KANW;wBAQZ,IAAI,CAAC,SAAS,GAAG,mBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;wBACzC,IAAI,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;4BAC7B,MAAM,KAAK,CAAC,kDAAkD,CAAC,CAAA;yBAChE;wBAEiB,WAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAA;;wBAA5C,SAAS,GAAG,SAAgC;6BAC9C,CAAC,SAAS,EAAV,cAAU;wBACZ,OAAO,CAAC,GAAG,CAAC,6CAAsC,KAAK,MAAG,CAAC,CAAA;wBACpD,WAAM,IAAI,CAAC,YAAY,EAAE,EAAA;4BAAhC,WAAO,SAAyB,EAAA;;wBAGlC,OAAO,CAAC,GAAG,CAAC,uCAAgC,KAAK,MAAG,CAAC,CAAA;wBAC9C,MAAM,GAAI,SAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAzC,CAAyC;wBACtC,WAAM,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAC9C,UAAA,OAAO,IAAI,OAAA,mBAAC,CAAC,GAAG,CAAC,OAAO,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC;gCAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;gCACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gCACxB,aAAa,EAAE,CAAC,CAAC,aAAa;gCAE9B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;6BAC5B,CAAC,EAN6B,CAM7B,CAAC,EANQ,CAMR,CACJ,EAAA;;wBARK,OAAO,GAAG,SAQf;8BACsB,EAAP,mBAAO;;;6BAAP,CAAA,qBAAO,CAAA;wBAAZ,CAAC;wBACV,WAAM,OAAO,CAAC,GAAG,CAAC;gCAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,sBAAsB,EACtB,IAAI,CAAC,WAAW,uBAAM,CAAC,KAAE,SAAS,EAAE,IAAI,IAAG,CAC5C;gCACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE;oCAC7C,MAAM,EAAE;wCACN,SAAS,EAAE,CAAC,CAAC,SAAS;wCACtB,MAAM,EAAE,CAAC;qCACV;iCACF,CAAC;6BACH,CAAC,EAAA;;wBAXF,SAWE,CAAA;;;wBAZY,IAAO,CAAA;;6BAcvB,WAAO,OAAO,EAAA;;;;KACf;IAED,yBAAW,GAAX,UAAY,IAAS,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QACpC,IAAM,MAAM,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,aAAc;YAC3B,QAAQ,EAAE,IAAI;SACf,CAAA;QACD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC9C,IAAA,KAA0B,IAAI,CAAC,WAAY,EAAzC,QAAQ,cAAA,EAAE,GAAG,SAAA,EAAE,IAAI,UAAsB,CAAA;YACjD,IAAM,YAAY,GAAG,UAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YACrD,mBAAC,CAAC,KAAK,CAAC,MAAM,EAAE;gBACd,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAA;SACH;QACD,OAAO,SAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,yBAAW,GAAX,UAAY,IAAc,EAAE,OAAe;QAAf,wBAAA,EAAA,eAAe;QACzC,IAAM,MAAM,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,SAAU;YACvB,QAAQ,EAAE,KAAK;SAChB,CAAA;QACD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC9C,IAAA,KAA0B,IAAI,CAAC,WAAY,EAAzC,QAAQ,cAAA,EAAE,GAAG,SAAA,EAAE,IAAI,UAAsB,CAAA;YACjD,IAAM,YAAY,GAAG,UAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;YACrD,mBAAC,CAAC,KAAK,CAAC,MAAM,EAAE;gBACd,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAA;SACH;QAED,IAAM,SAAS,GAAG,SAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAUK,6BAAe,GAArB,UAAsB,MAAM,EAAE,YAAY,EAAE,kBAAkB;;;;;;wBACtD,KAAe,SAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAjD,QAAQ,QAAA,CAAyC;wBAEnD,WAAM,IAAA,6BAAe,EAAC;gCAC3B,MAAM,QAAA;gCACN,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;gCAClC,kBAAkB,oBAAA;6BACnB,CAAC,EAAA;4BAJF,WAAO,SAIL,EAAA;;;;KACH;IAEK,oBAAM,GAAZ,UAAa,MAAiB,EAAE,SAAS;;;;;4BACxB,WAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAAnC,MAAM,GAAG,SAA0B;wBACnC,UAAU,GAAG,mBAAC,CAAC,KAAK,CAAC,MAAM,CAAC;6BAC/B,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,mBAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAjD,CAAiD,CAAC;6BAC9D,IAAI,EAAE;6BACN,KAAK,EAAE,CAAA;wBACV,IAAI,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;4BACzB,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAA;yBACnC;wBAEK,KAAe,SAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAjD,QAAQ,QAAA,CAAyC;wBAGnD,WAAM,IAAA,6BAAe,EAAC;gCAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;gCACzB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;gCACnC,kBAAkB,EAAE,SAAS;6BAC9B,CAAC,EAAA;4BAJF,WAAO,SAIL,EAAA;;;;KACH;IAgBa,2BAAa,GAA3B;;;;;4BAC2B,WAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAA;;wBAAxD,MAAM,GAAK,CAAA,SAA6C,CAAA,KAAlD;wBACpB,WAAO,MAAM,EAAA;;;;KACd;IAEa,4BAAc,GAA5B;;;;;4BACiB,WAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAAnC,MAAM,GAAG,SAA0B;wBACnC,OAAO,GAA0B,mBAAC,CAAC,MAAM,CAC7C,MAAM,EACN,UAAC,MAAM,EAAE,GAAG;4BACV,IAAM,IAAI,GAAG,MAAM,CAAC,mBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;4BAChD,IAAI,CAAC,IAAI,CAAC;gCACR,SAAS,EAAE,GAAG,CAAC,IAAI;gCACnB,UAAU,EAAE,mBAAC,CAAC,IAAI,CAAC,cAAO,GAAG,CAAC,WAAW,CAAE,CAAC;6BAC7C,CAAC,CAAA;4BACF,MAAM,CAAC,mBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;4BACpC,OAAO,MAAM,CAAA;wBACf,CAAC,EACD,EAAE,CACH,CAAA;wBAGK,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAA;wBACnC,OAAO,GAAG,IAAI,KAAK,EAAO,CAAA;4CACpB,GAAG,EAAE,IAAI;;;;4CACJ,WAAM,IAAA,mBAAY,EAAC,GAAG,EAAE,QAAQ,CAAC,EAAA;;wCAA1C,MAAM,GAAG,SAAiC;wCAChD,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4CACtB,OAAO,CAAC,IAAI,CAAC,mBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,UAAC,EAAE,IAAK,OAAA,mBAAC,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAnB,CAAmB,CAAC,CAAC,CAAA;yCACvD;;;;;8BAJyC,EAAlB,KAAA,mBAAC,CAAC,OAAO,CAAC,OAAO,CAAC;;;6BAAlB,CAAA,cAAkB,CAAA;wBAAjC,WAAW,EAAV,GAAG,QAAA,EAAE,IAAI,QAAA;2CAAT,GAAG,EAAE,IAAI;;;;;wBAAK,IAAkB,CAAA;;4BAM5C,WAAO,mBAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAA;;;;KAC1B;IAEa,0BAAY,GAA1B;;;;;4BACmB,WAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAA;;wBAAxD,IAAI,GAAK,CAAA,SAA+C,CAAA,KAApD;wBAEZ,WAAO,IAAI,EAAA;;;;KACZ;IAEa,6BAAe,GAA7B,UAA8B,UAAgB;;;;;;;wBACtC,oBAAoB,GAAG,UAAO,MAAe;;gCACjD,WAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE;wCAC/C,MAAM,EAAE,EAAE,MAAM,QAAA,EAAE;qCACnB,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,mBAAC,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,EAA1B,CAA0B,CAAC,EAAA;;6BAAA,CAAA;wBAEvC,GAAG,GAAqB,UAAU,IAA/B,EAAE,QAAQ,GAAW,UAAU,SAArB,EAAE,IAAI,GAAK,UAAU,KAAf,CAAe;6BACtC,CAAA,mBAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,mBAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,EAAlD,cAAkD;wBACrC,WAAM,oBAAoB,CAAC,EAAE,CAAC,EAAA;;wBAAvC,MAAM,GAAG,SAA8B;6BACzC,CAAC,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAlB,cAAkB;wBACpB,KAAA,IAAI,CAAA;wBAAe,WAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAA;;wBAAvD,GAAK,WAAW,GAAG,SAAoC,CAAA;wBAEvD,WAAO,KAAK,EAAA;;wBAGV,OAAO,GAAG,yBAAY,CAAC,QAAQ,CAAC;4BACpC,OAAO,EAAE,+DAA+D;4BACxE,MAAM,EAAE,EAAE;yBACX,CAAC,CAAA;wBACI,GAAG,GAAG,UAAG,CAAC,OAAO,CAAC,UAAG,OAAO,SAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;wBACtE,MAAM,GAAG,mBAAC,CAAC,MAAM,CAAC,EAAE,GAAG,KAAA,EAAE,QAAQ,UAAA,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,EAAE,mBAAC,CAAC,QAAQ,CAAC,CAAA;wBAC3D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBAGrB,WAAM,OAAO,CAAC,GAAG,CAAC;gCAMjC,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EACnC,iBAAS,CAAC,IAAI,EACd,kBAAkB,CACnB;6BACF,CAAC,EAAA;;wBAXK,MAAM,GAAI,CAAA,SAWf,CAAA,GAXW;wBAYb,WAAM,oBAAoB,CAAC,MAAO,CAAC,EAAA;;wBAAnC,SAAmC,CAAA;wBACnC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;wBAGzB,WAAO,IAAI,EAAA;;;;KACZ;IAEa,0BAAY,GAA1B,UAA2B,KAAa;;;;;4BACJ,WAAM,UAAG,CAAC,UAAU,EAAE,EAAA;;wBAAlD,KAA4B,SAAsB,EAAhD,UAAU,gBAAA,EAAE,SAAS,eAAA;wBACZ,WAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CACtC,yBAAyB,EACzB;gCACE,KAAK,OAAA;gCACL,SAAS,WAAA;6BACV,CACF,EAAA;;wBANO,IAAI,GAAK,CAAA,SAMhB,CAAA,KANW;wBAQZ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAA;wBAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;;;;;KAC1B;IACH,UAAC;AAAD,CAAC,AAxTD,IAwTC"} \ No newline at end of file diff --git a/packages/sample/app.ts b/packages/sample/app.ts index 9a76ef4..4454d25 100644 --- a/packages/sample/app.ts +++ b/packages/sample/app.ts @@ -3,71 +3,69 @@ import { AddressInfo } from 'net' import express, { Request, Response } from 'express' import _ from 'lodash' import Me3 from '@me3technology/keysmith' - -import { utils } from 'ethers' import bodyParser from 'body-parser' dotenv.config() const app = express() const server = app.listen(process.env.PORT || 5000, () => { - const { port } = server.address() as AddressInfo - console.log('server is running on port', port) + const { port } = server.address() as AddressInfo + console.log('server is running on port', port) }) const me3 = new Me3({ - endpoint: process.env.endpoint, - partnerId: process.env.partner, - client_id: process.env.google, - client_secret: process.env.secret, - redirect_uris: [process.env.redirect], + endpoint: process.env.endpoint, + partnerId: process.env.partner, + client_id: process.env.google, + client_secret: process.env.secret, + redirect_uris: [process.env.redirect], }) let wallets = [] // initiate Google OAuth2 access app.get('/initiateAccess', async (req: Request, res: Response) => { - const gAuthUrl = await me3.getGAuthUrl() + const gAuthUrl = await me3.getGAuthUrl() - return res.json({ data: { url: gAuthUrl } }) + return res.json({ data: { url: gAuthUrl } }) }) // initiateAccess callback handler app.get('/', async function (req, res) { - const code = _.get(req.query, 'code') as string - if (_.isEmpty(code)) { - const auth_url = me3.getGAuthUrl() - res.redirect(auth_url) - return - } + const code = _.get(req.query, 'code') as string + if (_.isEmpty(code)) { + const auth_url = me3.getGAuthUrl() + res.redirect(auth_url) + return + } - const success = await me3.getGToken(code) - if (success) { - try { - wallets = await me3.getWallets() - console.table(wallets) - res.redirect('https://www.me3.io/') - } catch (e) { - res.json({ error: 'Oops, ERROR!', msg: e.message }) - } - return + const success = await me3.getGToken(code) + if (success) { + try { + wallets = await me3.getWallets() + console.table(wallets) + res.redirect('https://www.me3.io/') + } catch (e) { + res.json({ error: 'Oops, ERROR!', msg: e.message }) } + return + } - res.json({ error: 'Can\'t recover the wallets' }) + res.json({ error: 'Can\'t recover the wallets' }) }) app.post('/signTx', bodyParser.json(), async (req: Request, res: Response) => { - if (_.isEmpty(wallets)) { - return res.json({ error: 'Oops, ERROR!', msg: 'No wallets loaded' }) - } - try { - const { series, tx } = req.body - const walletToSign = wallets.find((w) => w.chainName.toLowerCase() === series.toLowerCase()) - const signed = await me3.signTx(walletToSign, tx) + if (!me3.isInitialized()) { + return res.json({ error: 'Oops, ERROR!', msg: 'Me3 still did not initialized!' }) + } + try { + const { series, tx } = req.body + const walletToSign = wallets.find((w) => w.chainName.toLowerCase() === series.toLowerCase()) + const signed = await me3.signTx(walletToSign, tx) - return res.json({ data: { signed } }) - } catch (e) { - return res.json({ error: 'Oops, ERROR!', msg: e.message }) - } + return res.json({ data: { signed } }) + } catch (e) { + return res.json({ error: 'Oops, ERROR!', msg: e.message }) } + } ) From 7978668bc676afbcf3acb1721d437c2332c7cf41 Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Thu, 9 Mar 2023 13:43:47 +0700 Subject: [PATCH 2/9] New build after resolve conflicting --- packages/keysmith/dist/me3.d.ts | 17 ++- packages/keysmith/dist/me3.js | 238 +++++++++++++++++------------- packages/keysmith/dist/me3.js.map | 2 +- 3 files changed, 145 insertions(+), 112 deletions(-) diff --git a/packages/keysmith/dist/me3.d.ts b/packages/keysmith/dist/me3.d.ts index 7c7837b..2876dbb 100644 --- a/packages/keysmith/dist/me3.d.ts +++ b/packages/keysmith/dist/me3.d.ts @@ -1,7 +1,7 @@ import { AxiosInstance } from 'axios'; import { CommData, ME3Config, Me3Wallet } from './types'; export default class Me3 { - private readonly _gClient; + private _gClient; private readonly _client; private _apiToken?; private _userSecret?; @@ -10,16 +10,21 @@ export default class Me3 { constructor(credential: ME3Config); me3ApiClient(): AxiosInstance; isInitialized(): boolean; - getGAuthUrl(): any; - getGToken(redirectUrl: string): Promise; - getWallets(): Promise; + getAuthLink(redirectURL: string): Promise; + getAuthToken(code: string, state: string, sessionState: string): Promise; + getWallets(): Promise<{ + chainName: any; + walletName: any; + walletAddress: any; + secret: any; + }[]>; encryptData(data: any, withAES?: boolean): CommData; decryptData(data: CommData, withAES?: boolean): any; - signTransaction(series: any, walletSecret: any, transactionRequest: any): Promise; signTx(wallet: Me3Wallet, txRequest: any): Promise; private _getChainList; private _createWallets; private _loadWallets; private _loadBackupFile; - private _exchangeKey; + private _refreshToken; + private _getUserProfile; } diff --git a/packages/keysmith/dist/me3.js b/packages/keysmith/dist/me3.js index 7f86265..43ad74e 100644 --- a/packages/keysmith/dist/me3.js +++ b/packages/keysmith/dist/me3.js @@ -80,11 +80,10 @@ var axios_1 = __importDefault(require("axios")); var types_1 = require("./types"); var wallet_1 = __importDefault(require("./wallet")); var google_1 = __importDefault(require("./google")); -var safe_1 = require("./safe"); +var safeV2_1 = require("./safeV2"); var transaction_1 = require("./transaction"); var Me3 = (function () { function Me3(credential) { - this._gClient = new google_1["default"](credential.client_id, credential.client_secret, credential.redirect_uris); this._client = axios_1["default"].create({ baseURL: credential.endpoint }); @@ -94,11 +93,12 @@ var Me3 = (function () { }; var _this = this; this._client.interceptors.request.use(function (config) { - config.headers = lodash_1["default"].chain(companyHeader) - .set('Light-token', _this._apiToken) - .pickBy(lodash_1["default"].identity) - .merge(config.headers) - .value(); + var _a; + var chain = lodash_1["default"].chain(companyHeader).pickBy(lodash_1["default"].identity); + if (!lodash_1["default"].isEmpty((_a = _this._apiToken) === null || _a === void 0 ? void 0 : _a.kc_access)) { + chain = chain.set('Authorization', "Bearer ".concat(_this._apiToken.kc_access)); + } + config.headers = chain.merge(config.headers).value(); return config; }); this._client.interceptors.response.use(function (resp) { @@ -109,6 +109,15 @@ var Me3 = (function () { } resp.data = data; return resp; + }, function (err) { + var status = err.response ? err.response.status : null; + if (status === 401) { + return _this._refreshToken().then(function (_) { + err.config.headers['Authorization'] = "Bearer ".concat(_this._apiToken.kc_access); + return _this._client.request(err.config); + }); + } + return Promise.reject(err); }); } Me3.prototype.me3ApiClient = function () { @@ -129,61 +138,82 @@ var Me3 = (function () { } return true; }; - Me3.prototype.getGAuthUrl = function () { - return this._gClient.generateAuthUrl(); - }; - Me3.prototype.getGToken = function (redirectUrl) { + Me3.prototype.getAuthLink = function (redirectURL) { return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this._gClient.getTokens(redirectUrl)]; - case 1: return [2, _a.sent()]; + var _a, privateKey, publicKey, data; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = safeV2_1.rsa.genKeyPair(), privateKey = _a.privateKey, publicKey = _a.publicKey; + this._myPriRsa = privateKey; + return [4, this._client.get('/kc/auth/link', { + params: { + redirectURL: redirectURL, + pubKey: publicKey + } + })]; + case 1: + data = (_b.sent()).data; + return [2, data]; } }); }); }; - Me3.prototype.getWallets = function () { + Me3.prototype.getAuthToken = function (code, state, sessionState) { return __awaiter(this, void 0, void 0, function () { - var email, data, isNewUser, cipher, wallets, _i, wallets_1, w; + var data; return __generator(this, function (_a) { switch (_a.label) { - case 0: return [4, this._gClient.getUserEmail()]; + case 0: return [4, this._client.get('/kc/auth/code', { + params: { + code: code, + state: state, + session_state: sessionState + } + })]; case 1: - email = _a.sent(); - return [4, this._exchangeKey(email)]; - case 2: - _a.sent(); - return [4, this._client.post('/api/light/register', null, { - params: { faceId: email } - })]; - case 3: data = (_a.sent()).data; - this._apiToken = lodash_1["default"].get(data, 'token', ''); + this._apiToken = data; + this._gClient = new google_1["default"](this._apiToken.google_access); + return [2, true]; + } + }); + }); + }; + Me3.prototype.getWallets = function () { + return __awaiter(this, void 0, void 0, function () { + var _a, email, krFileId, isNewUser, cipher, wallets, _i, wallets_1, w; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: if (lodash_1["default"].isEmpty(this._apiToken)) { throw Error('Error! Operation failed.Please contact me3 team!'); } - return [4, this._loadBackupFile(data)]; - case 4: - isNewUser = _a.sent(); - if (!!isNewUser) return [3, 6]; + return [4, this._getUserProfile()]; + case 1: + _a = _b.sent(), email = _a.email, krFileId = _a.krFileId; + return [4, this._loadBackupFile(krFileId)]; + case 2: + isNewUser = _b.sent(); + if (!!isNewUser) return [3, 4]; console.log("Already exist, Restore wallets for ".concat(email, "!")); return [4, this._loadWallets()]; - case 5: return [2, _a.sent()]; - case 6: + case 3: return [2, _b.sent()]; + case 4: console.log("New User, Create wallets for ".concat(email, "!")); - cipher = safe_1.v2.getWalletCiphers(this._userSecret)[0]; + cipher = safeV2_1.v2.getWalletCiphers(this._userSecret)[0]; return [4, this._createWallets().then(function (wallets) { return lodash_1["default"].map(wallets, function (w) { return ({ chainName: w.chainName, walletName: w.walletName, walletAddress: w.walletAddress, secret: cipher(w.secretRaw) }); }); })]; - case 7: - wallets = _a.sent(); + case 5: + wallets = _b.sent(); _i = 0, wallets_1 = wallets; - _a.label = 8; - case 8: - if (!(_i < wallets_1.length)) return [3, 11]; + _b.label = 6; + case 6: + if (!(_i < wallets_1.length)) return [3, 9]; w = wallets_1[_i]; return [4, Promise.all([ this._client.post('/api/light/addWallet', this.encryptData(__assign(__assign({}, w), { needFocus: true }))), @@ -194,13 +224,13 @@ var Me3 = (function () { } }), ])]; - case 9: - _a.sent(); - _a.label = 10; - case 10: + case 7: + _b.sent(); + _b.label = 8; + case 8: _i++; - return [3, 8]; - case 11: return [2, wallets]; + return [3, 6]; + case 9: return [2, wallets]; } }); }); @@ -208,18 +238,18 @@ var Me3 = (function () { Me3.prototype.encryptData = function (data, withAES) { if (withAES === void 0) { withAES = false; } var secure = { - rsaKey: this._serverPubRsa, + rsaKey: this._apiToken.rsaPubKey, isPubKey: true }; if (withAES === true && !lodash_1["default"].isEmpty(this._userSecret)) { var _a = this._userSecret, password = _a.password, key = _a.key, salt = _a.salt; - var decryptedKey = safe_1.aes.decrypt(key, password, salt); + var decryptedKey = safeV2_1.aes.decrypt(key, password, salt); lodash_1["default"].merge(secure, { aesKey: decryptedKey, aesSalt: salt }); } - return safe_1.v2.encrypt(JSON.stringify(data), secure); + return safeV2_1.v2.encrypt(JSON.stringify(data), secure); }; Me3.prototype.decryptData = function (data, withAES) { if (withAES === void 0) { withAES = false; } @@ -229,32 +259,15 @@ var Me3 = (function () { }; if (withAES === true && !lodash_1["default"].isEmpty(this._userSecret)) { var _a = this._userSecret, password = _a.password, key = _a.key, salt = _a.salt; - var decryptedKey = safe_1.aes.decrypt(key, password, salt); + var decryptedKey = safeV2_1.aes.decrypt(key, password, salt); lodash_1["default"].merge(secure, { aesKey: decryptedKey, aesSalt: salt }); } - var decrypted = safe_1.v2.decrypt(data, secure); + var decrypted = safeV2_1.v2.decrypt(data, secure); return JSON.parse(decrypted); }; - Me3.prototype.signTransaction = function (series, walletSecret, transactionRequest) { - return __awaiter(this, void 0, void 0, function () { - var _a, decipher; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = safe_1.v2.getWalletCiphers(this._userSecret), decipher = _a[1]; - return [4, (0, transaction_1.signTransaction)({ - series: series, - privateKey: decipher(walletSecret), - transactionRequest: transactionRequest - })]; - case 1: return [2, _b.sent()]; - } - }); - }); - }; Me3.prototype.signTx = function (wallet, txRequest) { return __awaiter(this, void 0, void 0, function () { var chains, chainFound, _a, decipher; @@ -270,7 +283,7 @@ var Me3 = (function () { if (lodash_1["default"].isEmpty(chainFound)) { throw Error('Chain not supported'); } - _a = safe_1.v2.getWalletCiphers(this._userSecret), decipher = _a[1]; + _a = safeV2_1.v2.getWalletCiphers(this._userSecret), decipher = _a[1]; return [4, (0, transaction_1.signTransaction)({ series: chainFound.series, privateKey: decipher(wallet.secret), @@ -352,75 +365,90 @@ var Me3 = (function () { case 0: return [4, this._client.get('/api/light/secretList')]; case 1: data = (_a.sent()).data; - return [2, data]; + return [2, lodash_1["default"].map(data, function (w) { return ({ + chainName: w.chainName, + walletName: w.walletName, + walletAddress: w.walletAddress, + secret: w.secret + }); })]; } }); }); }; - Me3.prototype._loadBackupFile = function (userDetail) { + Me3.prototype._loadBackupFile = function (krFileId) { return __awaiter(this, void 0, void 0, function () { - var fetchOrUpdateGFileId, uid, password, salt, fileId, _a, randStr, key, secret, jsonStr, jsonId; + var updateGFileId, _a, _b, uid, password, salt, randStr, key, secret, jsonStr, jsonId; var _this_1 = this; - return __generator(this, function (_b) { - switch (_b.label) { + return __generator(this, function (_c) { + switch (_c.label) { case 0: - fetchOrUpdateGFileId = function (fileId) { return __awaiter(_this_1, void 0, void 0, function () { + updateGFileId = function (fileId) { return __awaiter(_this_1, void 0, void 0, function () { return __generator(this, function (_a) { return [2, this._client.post('/api/light/userfileId', null, { params: { fileId: fileId } }).then(function (resp) { return lodash_1["default"].get(resp, 'data.fileId'); })]; }); }); }; - uid = userDetail.uid, password = userDetail.password, salt = userDetail.salt; - if (!(lodash_1["default"].isNil(uid) || lodash_1["default"].isNil(password) || lodash_1["default"].isNil(salt))) return [3, 3]; - return [4, fetchOrUpdateGFileId('')]; - case 1: - fileId = _b.sent(); - if (!!lodash_1["default"].isEmpty(fileId)) return [3, 3]; + if (!!lodash_1["default"].isEmpty(krFileId)) return [3, 2]; _a = this; - return [4, this._gClient.loadFile(fileId)]; - case 2: - _a._userSecret = _b.sent(); + return [4, this._gClient.loadFile(krFileId)]; + case 1: + _a._userSecret = _c.sent(); return [2, false]; - case 3: + case 2: + _b = this._apiToken, uid = _b.uid, password = _b.password, salt = _b.salt; + if (lodash_1["default"].isNil(uid) || lodash_1["default"].isNil(password) || lodash_1["default"].isNil(salt)) { + throw Error('No KR info!'); + } randStr = randomstring_1["default"].generate({ charset: 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789', length: 40 }); - key = safe_1.aes.encrypt("".concat(randStr).concat(new Date().getTime()), password, salt); + key = safeV2_1.aes.encrypt("".concat(randStr).concat(new Date().getTime()), password, salt); secret = lodash_1["default"].pickBy({ uid: uid, password: password, salt: salt, key: key }, lodash_1["default"].identity); jsonStr = JSON.stringify(secret); return [4, Promise.all([ - this._gClient.saveFiles(this._gClient.str2Readable(jsonStr), types_1.DriveName.json, 'application/json'), + this._gClient.saveFile(this._gClient.str2Readable(jsonStr), types_1.DriveName.json, 'application/json'), ])]; + case 3: + jsonId = (_c.sent())[0]; + return [4, updateGFileId(jsonId)]; case 4: - jsonId = (_b.sent())[0]; - return [4, fetchOrUpdateGFileId(jsonId)]; - case 5: - _b.sent(); + _c.sent(); this._userSecret = secret; return [2, true]; } }); }); }; - Me3.prototype._exchangeKey = function (email) { + Me3.prototype._refreshToken = function () { + var _a, _b; return __awaiter(this, void 0, void 0, function () { - var _a, privateKey, publicKey, data; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4, safe_1.rsa.genKeyPair()]; + var data; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (lodash_1["default"].isEmpty((_a = this._apiToken) === null || _a === void 0 ? void 0 : _a.kc_refresh)) { + return [2, false]; + } + return [4, axios_1["default"].post("".concat(this._client.defaults.baseURL, "/kc/auth/refresh"), { refresh: (_b = this._apiToken) === null || _b === void 0 ? void 0 : _b.kc_refresh })]; case 1: - _a = _b.sent(), privateKey = _a.privateKey, publicKey = _a.publicKey; - return [4, this._client.post('/api/light/exchange/key', { - email: email, - publicKey: publicKey - })]; - case 2: - data = (_b.sent()).data; - this._myPriRsa = privateKey; - this._serverPubRsa = data; - return [2]; + data = (_c.sent()).data; + this._apiToken = this.decryptData(data.data, false); + return [2, true]; + } + }); + }); + }; + Me3.prototype._getUserProfile = function () { + return __awaiter(this, void 0, void 0, function () { + var data; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4, this._client.get('/kc/api/userInfo')]; + case 1: + data = (_a.sent()).data; + return [2, data]; } }); }); diff --git a/packages/keysmith/dist/me3.js.map b/packages/keysmith/dist/me3.js.map index 851332e..a9ccd18 100644 --- a/packages/keysmith/dist/me3.js.map +++ b/packages/keysmith/dist/me3.js.map @@ -1 +1 @@ -{"version":3,"file":"me3.js","sourceRoot":"","sources":["../src/me3.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"me3.js","sourceRoot":"","sources":["../src/me3.ts"],"names":[],"mappings":"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"} \ No newline at end of file From 7f4c5b9616675e1727aaf44b9b34040f9a93fac8 Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Thu, 9 Mar 2023 13:46:15 +0700 Subject: [PATCH 3/9] minor comment fix --- packages/keysmith/src/me3.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/keysmith/src/me3.ts b/packages/keysmith/src/me3.ts index b2205e9..de74281 100644 --- a/packages/keysmith/src/me3.ts +++ b/packages/keysmith/src/me3.ts @@ -71,7 +71,7 @@ export default class Me3 { } /** - * Please use before getWallets + * Please use before `signTx` */ isInitialized(): boolean { if (_.isEmpty(this._apiToken)) { From 214a9bb20c5a3129979d2691f720ebbba7765c63 Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Tue, 28 Mar 2023 15:26:55 +0700 Subject: [PATCH 4/9] ignore --- .gitignore | 1 - packages/keysmith/dist/google.d.ts | 10 - packages/keysmith/dist/google.js | 96 ---- packages/keysmith/dist/google.js.map | 1 - packages/keysmith/dist/index.d.ts | 1 - packages/keysmith/dist/index.js | 17 - packages/keysmith/dist/index.js.map | 1 - packages/keysmith/dist/me3.d.ts | 30 -- packages/keysmith/dist/me3.js | 459 ------------------ packages/keysmith/dist/me3.js.map | 1 - packages/keysmith/dist/safe/aes.d.ts | 2 - packages/keysmith/dist/safe/aes.js | 43 -- packages/keysmith/dist/safe/aes.js.map | 1 - packages/keysmith/dist/safe/chacha.d.ts | 4 - packages/keysmith/dist/safe/chacha.js | 60 --- packages/keysmith/dist/safe/chacha.js.map | 1 - packages/keysmith/dist/safe/index.d.ts | 4 - packages/keysmith/dist/safe/index.js | 31 -- packages/keysmith/dist/safe/index.js.map | 1 - packages/keysmith/dist/safe/rsa.d.ts | 5 - packages/keysmith/dist/safe/rsa.js | 100 ---- packages/keysmith/dist/safe/rsa.js.map | 1 - packages/keysmith/dist/safe/v2.d.ts | 4 - packages/keysmith/dist/safe/v2.js | 67 --- packages/keysmith/dist/safe/v2.js.map | 1 - packages/keysmith/dist/safeV2/aes.d.ts | 2 - packages/keysmith/dist/safeV2/aes.js | 41 -- packages/keysmith/dist/safeV2/aes.js.map | 1 - packages/keysmith/dist/safeV2/chacha.d.ts | 5 - packages/keysmith/dist/safeV2/chacha.js | 26 - packages/keysmith/dist/safeV2/chacha.js.map | 1 - packages/keysmith/dist/safeV2/common.d.ts | 2 - packages/keysmith/dist/safeV2/common.js | 39 -- packages/keysmith/dist/safeV2/common.js.map | 1 - packages/keysmith/dist/safeV2/index.d.ts | 4 - packages/keysmith/dist/safeV2/index.js | 31 -- packages/keysmith/dist/safeV2/index.js.map | 1 - packages/keysmith/dist/safeV2/rsa.d.ts | 4 - packages/keysmith/dist/safeV2/rsa.js | 44 -- packages/keysmith/dist/safeV2/rsa.js.map | 1 - packages/keysmith/dist/safeV2/v2.d.ts | 4 - packages/keysmith/dist/safeV2/v2.js | 68 --- packages/keysmith/dist/safeV2/v2.js.map | 1 - .../keysmith/dist/transaction/domain.d.ts | 11 - packages/keysmith/dist/transaction/domain.js | 3 - .../keysmith/dist/transaction/domain.js.map | 1 - packages/keysmith/dist/transaction/index.d.ts | 6 - packages/keysmith/dist/transaction/index.js | 83 ---- .../keysmith/dist/transaction/index.js.map | 1 - .../transaction/perform-sign-transaction.d.ts | 6 - .../transaction/perform-sign-transaction.js | 61 --- .../perform-sign-transaction.js.map | 1 - packages/keysmith/dist/types.d.ts | 43 -- packages/keysmith/dist/types.js | 9 - packages/keysmith/dist/types.js.map | 1 - packages/keysmith/dist/wallet.d.ts | 4 - packages/keysmith/dist/wallet.js | 118 ----- packages/keysmith/dist/wallet.js.map | 1 - .../create-wallet/create-wallet-filecoin.d.ts | 2 - .../create-wallet/create-wallet-filecoin.js | 36 -- .../create-wallet-filecoin.js.map | 1 - 61 files changed, 1606 deletions(-) delete mode 100644 packages/keysmith/dist/google.d.ts delete mode 100644 packages/keysmith/dist/google.js delete mode 100644 packages/keysmith/dist/google.js.map delete mode 100644 packages/keysmith/dist/index.d.ts delete mode 100644 packages/keysmith/dist/index.js delete mode 100644 packages/keysmith/dist/index.js.map delete mode 100644 packages/keysmith/dist/me3.d.ts delete mode 100644 packages/keysmith/dist/me3.js delete mode 100644 packages/keysmith/dist/me3.js.map delete mode 100644 packages/keysmith/dist/safe/aes.d.ts delete mode 100644 packages/keysmith/dist/safe/aes.js delete mode 100644 packages/keysmith/dist/safe/aes.js.map delete mode 100644 packages/keysmith/dist/safe/chacha.d.ts delete mode 100644 packages/keysmith/dist/safe/chacha.js delete mode 100644 packages/keysmith/dist/safe/chacha.js.map delete mode 100644 packages/keysmith/dist/safe/index.d.ts delete mode 100644 packages/keysmith/dist/safe/index.js delete mode 100644 packages/keysmith/dist/safe/index.js.map delete mode 100644 packages/keysmith/dist/safe/rsa.d.ts delete mode 100644 packages/keysmith/dist/safe/rsa.js delete mode 100644 packages/keysmith/dist/safe/rsa.js.map delete mode 100644 packages/keysmith/dist/safe/v2.d.ts delete mode 100644 packages/keysmith/dist/safe/v2.js delete mode 100644 packages/keysmith/dist/safe/v2.js.map delete mode 100644 packages/keysmith/dist/safeV2/aes.d.ts delete mode 100644 packages/keysmith/dist/safeV2/aes.js delete mode 100644 packages/keysmith/dist/safeV2/aes.js.map delete mode 100644 packages/keysmith/dist/safeV2/chacha.d.ts delete mode 100644 packages/keysmith/dist/safeV2/chacha.js delete mode 100644 packages/keysmith/dist/safeV2/chacha.js.map delete mode 100644 packages/keysmith/dist/safeV2/common.d.ts delete mode 100644 packages/keysmith/dist/safeV2/common.js delete mode 100644 packages/keysmith/dist/safeV2/common.js.map delete mode 100644 packages/keysmith/dist/safeV2/index.d.ts delete mode 100644 packages/keysmith/dist/safeV2/index.js delete mode 100644 packages/keysmith/dist/safeV2/index.js.map delete mode 100644 packages/keysmith/dist/safeV2/rsa.d.ts delete mode 100644 packages/keysmith/dist/safeV2/rsa.js delete mode 100644 packages/keysmith/dist/safeV2/rsa.js.map delete mode 100644 packages/keysmith/dist/safeV2/v2.d.ts delete mode 100644 packages/keysmith/dist/safeV2/v2.js delete mode 100644 packages/keysmith/dist/safeV2/v2.js.map delete mode 100644 packages/keysmith/dist/transaction/domain.d.ts delete mode 100644 packages/keysmith/dist/transaction/domain.js delete mode 100644 packages/keysmith/dist/transaction/domain.js.map delete mode 100644 packages/keysmith/dist/transaction/index.d.ts delete mode 100644 packages/keysmith/dist/transaction/index.js delete mode 100644 packages/keysmith/dist/transaction/index.js.map delete mode 100644 packages/keysmith/dist/transaction/perform-sign-transaction.d.ts delete mode 100644 packages/keysmith/dist/transaction/perform-sign-transaction.js delete mode 100644 packages/keysmith/dist/transaction/perform-sign-transaction.js.map delete mode 100644 packages/keysmith/dist/types.d.ts delete mode 100644 packages/keysmith/dist/types.js delete mode 100644 packages/keysmith/dist/types.js.map delete mode 100644 packages/keysmith/dist/wallet.d.ts delete mode 100644 packages/keysmith/dist/wallet.js delete mode 100644 packages/keysmith/dist/wallet.js.map delete mode 100644 packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.d.ts delete mode 100644 packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js delete mode 100644 packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js.map diff --git a/.gitignore b/.gitignore index ea52a39..86a5fed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ **/node_modules/ **/.env **/dist -!packages/keysmith/dist **/lib **/.idea diff --git a/packages/keysmith/dist/google.d.ts b/packages/keysmith/dist/google.d.ts deleted file mode 100644 index 1eabbe2..0000000 --- a/packages/keysmith/dist/google.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -import { Readable } from 'stream'; -export default class Google { - private readonly _drive; - constructor(accessToken: string); - saveFile(body: any, fileName: string, mimeType: string): Promise; - loadFile(fileId: string): Promise; - b642Readable(base64: string): Readable; - str2Readable(str: string): Readable; -} diff --git a/packages/keysmith/dist/google.js b/packages/keysmith/dist/google.js deleted file mode 100644 index ff3561b..0000000 --- a/packages/keysmith/dist/google.js +++ /dev/null @@ -1,96 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var stream_1 = require("stream"); -var googleapis_1 = require("googleapis"); -var Google = (function () { - function Google(accessToken) { - var auth = new googleapis_1.google.auth.OAuth2(); - auth.setCredentials({ - access_token: accessToken - }); - this._drive = googleapis_1.google.drive({ auth: auth, version: 'v3' }); - } - Google.prototype.saveFile = function (body, fileName, mimeType) { - return __awaiter(this, void 0, void 0, function () { - var file; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this._drive.files.create({ - requestBody: { - name: fileName - }, - media: { - mimeType: mimeType, - body: body - }, - fields: 'id' - })]; - case 1: - file = _a.sent(); - return [2, file.data.id]; - } - }); - }); - }; - Google.prototype.loadFile = function (fileId) { - return __awaiter(this, void 0, void 0, function () { - var file; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this._drive.files.get({ - fileId: fileId, - alt: 'media' - })]; - case 1: - file = _a.sent(); - return [2, file.data]; - } - }); - }); - }; - Google.prototype.b642Readable = function (base64) { - return stream_1.Readable.from(Buffer.from(base64, 'base64')); - }; - Google.prototype.str2Readable = function (str) { - return stream_1.Readable.from(str, { encoding: 'utf8' }); - }; - return Google; -}()); -exports["default"] = Google; -//# sourceMappingURL=google.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/google.js.map b/packages/keysmith/dist/google.js.map deleted file mode 100644 index 4606b59..0000000 --- a/packages/keysmith/dist/google.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"google.js","sourceRoot":"","sources":["../src/google.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,yCAAmC;AAEnC;IAGE,gBAAY,WAAmB;QAC7B,IAAM,IAAI,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;QACrC,IAAI,CAAC,cAAc,CAAC;YAClB,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,GAAG,mBAAM,CAAC,KAAK,CAAC,EAAE,IAAI,MAAA,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;IAEK,yBAAQ,GAAd,UAAe,IAAS,EAAE,QAAgB,EAAE,QAAgB;;;;;4BAC7C,WAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;4BAC1C,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;6BACf;4BACD,KAAK,EAAE;gCACL,QAAQ,UAAA;gCACR,IAAI,MAAA;6BACL;4BACD,MAAM,EAAE,IAAI;yBACb,CAAC,EAAA;;wBATI,IAAI,GAAG,SASX;wBACF,WAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA;;;;KACpB;IAEK,yBAAQ,GAAd,UAAe,MAAc;;;;;4BACd,WAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;4BACvC,MAAM,QAAA;4BACN,GAAG,EAAE,OAAO;yBACb,CAAC,EAAA;;wBAHI,IAAI,GAAG,SAGX;wBACF,WAAO,IAAI,CAAC,IAAI,EAAA;;;;KACjB;IAED,6BAAY,GAAZ,UAAa,MAAc;QACzB,OAAO,iBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,6BAAY,GAAZ,UAAa,GAAW;QACtB,OAAO,iBAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACjD,CAAC;IACH,aAAC;AAAD,CAAC,AAxCD,IAwCC"} \ No newline at end of file diff --git a/packages/keysmith/dist/index.d.ts b/packages/keysmith/dist/index.d.ts deleted file mode 100644 index 6734549..0000000 --- a/packages/keysmith/dist/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './me3'; diff --git a/packages/keysmith/dist/index.js b/packages/keysmith/dist/index.js deleted file mode 100644 index c387d89..0000000 --- a/packages/keysmith/dist/index.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -exports.__esModule = true; -exports["default"] = void 0; -var me3_1 = require("./me3"); -__createBinding(exports, me3_1, "default"); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/index.js.map b/packages/keysmith/dist/index.js.map deleted file mode 100644 index a049efe..0000000 --- a/packages/keysmith/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,6BAA+B;AAAtB,2CAAO"} \ No newline at end of file diff --git a/packages/keysmith/dist/me3.d.ts b/packages/keysmith/dist/me3.d.ts deleted file mode 100644 index 2876dbb..0000000 --- a/packages/keysmith/dist/me3.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { AxiosInstance } from 'axios'; -import { CommData, ME3Config, Me3Wallet } from './types'; -export default class Me3 { - private _gClient; - private readonly _client; - private _apiToken?; - private _userSecret?; - private _myPriRsa?; - private _serverPubRsa?; - constructor(credential: ME3Config); - me3ApiClient(): AxiosInstance; - isInitialized(): boolean; - getAuthLink(redirectURL: string): Promise; - getAuthToken(code: string, state: string, sessionState: string): Promise; - getWallets(): Promise<{ - chainName: any; - walletName: any; - walletAddress: any; - secret: any; - }[]>; - encryptData(data: any, withAES?: boolean): CommData; - decryptData(data: CommData, withAES?: boolean): any; - signTx(wallet: Me3Wallet, txRequest: any): Promise; - private _getChainList; - private _createWallets; - private _loadWallets; - private _loadBackupFile; - private _refreshToken; - private _getUserProfile; -} diff --git a/packages/keysmith/dist/me3.js b/packages/keysmith/dist/me3.js deleted file mode 100644 index 43ad74e..0000000 --- a/packages/keysmith/dist/me3.js +++ /dev/null @@ -1,459 +0,0 @@ -"use strict"; -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -exports.__esModule = true; -var lodash_1 = __importDefault(require("lodash")); -var randomstring_1 = __importDefault(require("randomstring")); -var bip39 = __importStar(require("bip39")); -var axios_1 = __importDefault(require("axios")); -var types_1 = require("./types"); -var wallet_1 = __importDefault(require("./wallet")); -var google_1 = __importDefault(require("./google")); -var safeV2_1 = require("./safeV2"); -var transaction_1 = require("./transaction"); -var Me3 = (function () { - function Me3(credential) { - this._client = axios_1["default"].create({ - baseURL: credential.endpoint - }); - var companyHeader = { - 'Company-ID': 2000, - 'Partner-ID': credential.partnerId - }; - var _this = this; - this._client.interceptors.request.use(function (config) { - var _a; - var chain = lodash_1["default"].chain(companyHeader).pickBy(lodash_1["default"].identity); - if (!lodash_1["default"].isEmpty((_a = _this._apiToken) === null || _a === void 0 ? void 0 : _a.kc_access)) { - chain = chain.set('Authorization', "Bearer ".concat(_this._apiToken.kc_access)); - } - config.headers = chain.merge(config.headers).value(); - return config; - }); - this._client.interceptors.response.use(function (resp) { - var data = resp.data.data; - var isCipherBody = lodash_1["default"].every(['data', 'secret'], lodash_1["default"].partial(lodash_1["default"].has, data)); - if (isCipherBody) { - data = _this.decryptData(data, false); - } - resp.data = data; - return resp; - }, function (err) { - var status = err.response ? err.response.status : null; - if (status === 401) { - return _this._refreshToken().then(function (_) { - err.config.headers['Authorization'] = "Bearer ".concat(_this._apiToken.kc_access); - return _this._client.request(err.config); - }); - } - return Promise.reject(err); - }); - } - Me3.prototype.me3ApiClient = function () { - return this._client; - }; - Me3.prototype.isInitialized = function () { - if (lodash_1["default"].isEmpty(this._apiToken)) { - return false; - } - if (lodash_1["default"].isEmpty(this._userSecret)) { - return false; - } - if (lodash_1["default"].isEmpty(this._myPriRsa)) { - return false; - } - if (lodash_1["default"].isEmpty(this._serverPubRsa)) { - return false; - } - return true; - }; - Me3.prototype.getAuthLink = function (redirectURL) { - return __awaiter(this, void 0, void 0, function () { - var _a, privateKey, publicKey, data; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = safeV2_1.rsa.genKeyPair(), privateKey = _a.privateKey, publicKey = _a.publicKey; - this._myPriRsa = privateKey; - return [4, this._client.get('/kc/auth/link', { - params: { - redirectURL: redirectURL, - pubKey: publicKey - } - })]; - case 1: - data = (_b.sent()).data; - return [2, data]; - } - }); - }); - }; - Me3.prototype.getAuthToken = function (code, state, sessionState) { - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this._client.get('/kc/auth/code', { - params: { - code: code, - state: state, - session_state: sessionState - } - })]; - case 1: - data = (_a.sent()).data; - this._apiToken = data; - this._gClient = new google_1["default"](this._apiToken.google_access); - return [2, true]; - } - }); - }); - }; - Me3.prototype.getWallets = function () { - return __awaiter(this, void 0, void 0, function () { - var _a, email, krFileId, isNewUser, cipher, wallets, _i, wallets_1, w; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - if (lodash_1["default"].isEmpty(this._apiToken)) { - throw Error('Error! Operation failed.Please contact me3 team!'); - } - return [4, this._getUserProfile()]; - case 1: - _a = _b.sent(), email = _a.email, krFileId = _a.krFileId; - return [4, this._loadBackupFile(krFileId)]; - case 2: - isNewUser = _b.sent(); - if (!!isNewUser) return [3, 4]; - console.log("Already exist, Restore wallets for ".concat(email, "!")); - return [4, this._loadWallets()]; - case 3: return [2, _b.sent()]; - case 4: - console.log("New User, Create wallets for ".concat(email, "!")); - cipher = safeV2_1.v2.getWalletCiphers(this._userSecret)[0]; - return [4, this._createWallets().then(function (wallets) { return lodash_1["default"].map(wallets, function (w) { return ({ - chainName: w.chainName, - walletName: w.walletName, - walletAddress: w.walletAddress, - secret: cipher(w.secretRaw) - }); }); })]; - case 5: - wallets = _b.sent(); - _i = 0, wallets_1 = wallets; - _b.label = 6; - case 6: - if (!(_i < wallets_1.length)) return [3, 9]; - w = wallets_1[_i]; - return [4, Promise.all([ - this._client.post('/api/light/addWallet', this.encryptData(__assign(__assign({}, w), { needFocus: true }))), - this._client.post('/api/mainChain/ping', null, { - params: { - chainName: w.chainName, - status: 3 - } - }), - ])]; - case 7: - _b.sent(); - _b.label = 8; - case 8: - _i++; - return [3, 6]; - case 9: return [2, wallets]; - } - }); - }); - }; - Me3.prototype.encryptData = function (data, withAES) { - if (withAES === void 0) { withAES = false; } - var secure = { - rsaKey: this._apiToken.rsaPubKey, - isPubKey: true - }; - if (withAES === true && !lodash_1["default"].isEmpty(this._userSecret)) { - var _a = this._userSecret, password = _a.password, key = _a.key, salt = _a.salt; - var decryptedKey = safeV2_1.aes.decrypt(key, password, salt); - lodash_1["default"].merge(secure, { - aesKey: decryptedKey, - aesSalt: salt - }); - } - return safeV2_1.v2.encrypt(JSON.stringify(data), secure); - }; - Me3.prototype.decryptData = function (data, withAES) { - if (withAES === void 0) { withAES = false; } - var secure = { - rsaKey: this._myPriRsa, - isPubKey: false - }; - if (withAES === true && !lodash_1["default"].isEmpty(this._userSecret)) { - var _a = this._userSecret, password = _a.password, key = _a.key, salt = _a.salt; - var decryptedKey = safeV2_1.aes.decrypt(key, password, salt); - lodash_1["default"].merge(secure, { - aesKey: decryptedKey, - aesSalt: salt - }); - } - var decrypted = safeV2_1.v2.decrypt(data, secure); - return JSON.parse(decrypted); - }; - Me3.prototype.signTx = function (wallet, txRequest) { - return __awaiter(this, void 0, void 0, function () { - var chains, chainFound, _a, decipher; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4, this._getChainList()]; - case 1: - chains = _b.sent(); - chainFound = lodash_1["default"].chain(chains) - .filter(function (c) { return lodash_1["default"].toLower(c.name) === lodash_1["default"].toLower(wallet.chainName); }) - .head() - .value(); - if (lodash_1["default"].isEmpty(chainFound)) { - throw Error('Chain not supported'); - } - _a = safeV2_1.v2.getWalletCiphers(this._userSecret), decipher = _a[1]; - return [4, (0, transaction_1.signTransaction)({ - series: chainFound.series, - privateKey: decipher(wallet.secret), - transactionRequest: txRequest - })]; - case 2: return [2, _b.sent()]; - } - }); - }); - }; - Me3.prototype._getChainList = function () { - return __awaiter(this, void 0, void 0, function () { - var chains; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this._client.get('/api/mainChain/list')]; - case 1: - chains = (_a.sent()).data; - return [2, chains]; - } - }); - }); - }; - Me3.prototype._createWallets = function () { - return __awaiter(this, void 0, void 0, function () { - var chains, refined, mnemonic, wallets, _loop_1, _i, _a, _b, key, list; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: return [4, this._getChainList()]; - case 1: - chains = _c.sent(); - refined = lodash_1["default"].reduce(chains, function (result, acc) { - var list = result[lodash_1["default"].toLower(acc.series)] || []; - list.push({ - chainName: acc.name, - walletName: lodash_1["default"].trim("3rd_".concat(acc.description)) - }); - result[lodash_1["default"].toLower(acc.series)] = list; - return result; - }, {}); - mnemonic = bip39.generateMnemonic(); - wallets = new Array(); - _loop_1 = function (key, list) { - var wallet; - return __generator(this, function (_d) { - switch (_d.label) { - case 0: return [4, (0, wallet_1["default"])(key, mnemonic)]; - case 1: - wallet = _d.sent(); - if (!lodash_1["default"].isEmpty(wallet)) { - wallets.push(lodash_1["default"].map(list, function (it) { return lodash_1["default"].merge(it, wallet); })); - } - return [2]; - } - }); - }; - _i = 0, _a = lodash_1["default"].entries(refined); - _c.label = 2; - case 2: - if (!(_i < _a.length)) return [3, 5]; - _b = _a[_i], key = _b[0], list = _b[1]; - return [5, _loop_1(key, list)]; - case 3: - _c.sent(); - _c.label = 4; - case 4: - _i++; - return [3, 2]; - case 5: return [2, lodash_1["default"].flatten(wallets)]; - } - }); - }); - }; - Me3.prototype._loadWallets = function () { - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this._client.get('/api/light/secretList')]; - case 1: - data = (_a.sent()).data; - return [2, lodash_1["default"].map(data, function (w) { return ({ - chainName: w.chainName, - walletName: w.walletName, - walletAddress: w.walletAddress, - secret: w.secret - }); })]; - } - }); - }); - }; - Me3.prototype._loadBackupFile = function (krFileId) { - return __awaiter(this, void 0, void 0, function () { - var updateGFileId, _a, _b, uid, password, salt, randStr, key, secret, jsonStr, jsonId; - var _this_1 = this; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - updateGFileId = function (fileId) { return __awaiter(_this_1, void 0, void 0, function () { - return __generator(this, function (_a) { - return [2, this._client.post('/api/light/userfileId', null, { - params: { fileId: fileId } - }).then(function (resp) { return lodash_1["default"].get(resp, 'data.fileId'); })]; - }); - }); }; - if (!!lodash_1["default"].isEmpty(krFileId)) return [3, 2]; - _a = this; - return [4, this._gClient.loadFile(krFileId)]; - case 1: - _a._userSecret = _c.sent(); - return [2, false]; - case 2: - _b = this._apiToken, uid = _b.uid, password = _b.password, salt = _b.salt; - if (lodash_1["default"].isNil(uid) || lodash_1["default"].isNil(password) || lodash_1["default"].isNil(salt)) { - throw Error('No KR info!'); - } - randStr = randomstring_1["default"].generate({ - charset: 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789', - length: 40 - }); - key = safeV2_1.aes.encrypt("".concat(randStr).concat(new Date().getTime()), password, salt); - secret = lodash_1["default"].pickBy({ uid: uid, password: password, salt: salt, key: key }, lodash_1["default"].identity); - jsonStr = JSON.stringify(secret); - return [4, Promise.all([ - this._gClient.saveFile(this._gClient.str2Readable(jsonStr), types_1.DriveName.json, 'application/json'), - ])]; - case 3: - jsonId = (_c.sent())[0]; - return [4, updateGFileId(jsonId)]; - case 4: - _c.sent(); - this._userSecret = secret; - return [2, true]; - } - }); - }); - }; - Me3.prototype._refreshToken = function () { - var _a, _b; - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - if (lodash_1["default"].isEmpty((_a = this._apiToken) === null || _a === void 0 ? void 0 : _a.kc_refresh)) { - return [2, false]; - } - return [4, axios_1["default"].post("".concat(this._client.defaults.baseURL, "/kc/auth/refresh"), { refresh: (_b = this._apiToken) === null || _b === void 0 ? void 0 : _b.kc_refresh })]; - case 1: - data = (_c.sent()).data; - this._apiToken = this.decryptData(data.data, false); - return [2, true]; - } - }); - }); - }; - Me3.prototype._getUserProfile = function () { - return __awaiter(this, void 0, void 0, function () { - var data; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this._client.get('/kc/api/userInfo')]; - case 1: - data = (_a.sent()).data; - return [2, data]; - } - }); - }); - }; - return Me3; -}()); -exports["default"] = Me3; -//# sourceMappingURL=me3.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/me3.js.map b/packages/keysmith/dist/me3.js.map deleted file mode 100644 index a9ccd18..0000000 --- a/packages/keysmith/dist/me3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"me3.js","sourceRoot":"","sources":["../src/me3.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/keysmith/dist/safe/aes.d.ts b/packages/keysmith/dist/safe/aes.d.ts deleted file mode 100644 index 1683e7d..0000000 --- a/packages/keysmith/dist/safe/aes.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function encrypt(plain: string, password: string, salt: string): string; -export declare function decrypt(b64Str: string, password: string, salt: string): string; diff --git a/packages/keysmith/dist/safe/aes.js b/packages/keysmith/dist/safe/aes.js deleted file mode 100644 index 8cfa0c3..0000000 --- a/packages/keysmith/dist/safe/aes.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -exports.__esModule = true; -exports.decrypt = exports.encrypt = void 0; -var lodash_1 = __importDefault(require("lodash")); -var crypto_1 = require("crypto"); -var ENC_ALGO = 256; -var KEY_SIZE = ENC_ALGO / 8; -var IV_SIZE = 128 / 8; -function encrypt(plain, password, salt) { - var key = (0, crypto_1.pbkdf2Sync)(password, salt, 1, KEY_SIZE, 'sha512'); - var iv = (0, crypto_1.pbkdf2Sync)(password, salt, 1, IV_SIZE, 'sha512'); - var cipher = (0, crypto_1.createCipheriv)("aes-".concat(ENC_ALGO, "-cbc"), key, iv); - cipher.setAutoPadding(false); - var encrypted = Buffer.concat([ - cipher.update(_paddingSpace(plain), 'utf8'), - cipher.final(), - ]).toString('hex'); - return Buffer.from(encrypted, 'utf8') - .toString('base64'); -} -exports.encrypt = encrypt; -function decrypt(b64Str, password, salt) { - var key = (0, crypto_1.pbkdf2Sync)(password, salt, 1, KEY_SIZE, 'sha512'); - var iv = (0, crypto_1.pbkdf2Sync)(password, salt, 1, IV_SIZE, 'sha512'); - var utf8 = Buffer.from(b64Str, 'base64').toString('utf8'); - var decipher = (0, crypto_1.createDecipheriv)("aes-".concat(ENC_ALGO, "-cbc"), key, iv); - decipher.setAutoPadding(false); - var decoded = Buffer.concat([ - decipher.update(utf8, 'hex'), - decipher.final(), - ]).toString('utf8'); - return lodash_1["default"].trimEnd(decoded, ' '); -} -exports.decrypt = decrypt; -function _paddingSpace(str, pad) { - if (pad === void 0) { pad = 16; } - var paddedLen = str.length + pad - (str.length % pad); - return lodash_1["default"].padEnd(str, paddedLen); -} -//# sourceMappingURL=aes.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safe/aes.js.map b/packages/keysmith/dist/safe/aes.js.map deleted file mode 100644 index 03bfe9a..0000000 --- a/packages/keysmith/dist/safe/aes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aes.js","sourceRoot":"","sources":["../../src/safe/aes.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAsB;AACtB,iCAAqE;AAErE,IAAM,QAAQ,GAAG,GAAG,CAAA;AACpB,IAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAA;AAC7B,IAAM,OAAO,GAAG,GAAG,GAAG,CAAC,CAAA;AAEvB,SAAgB,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAY;IACnE,IAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC7D,IAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAE3D,IAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,cAAO,QAAQ,SAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE;KACf,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClB,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;SAClC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACvB,CAAC;AAZD,0BAYC;AAED,SAAgB,OAAO,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAY;IACpE,IAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC7D,IAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAE3D,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC3D,IAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,cAAO,QAAQ,SAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;IACjE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;QAC5B,QAAQ,CAAC,KAAK,EAAE;KACjB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACnB,OAAO,mBAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC;AAZD,0BAYC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,GAAQ;IAAR,oBAAA,EAAA,QAAQ;IAC1C,IAAM,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IACvD,OAAO,mBAAC,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;AACjC,CAAC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safe/chacha.d.ts b/packages/keysmith/dist/safe/chacha.d.ts deleted file mode 100644 index 08888f3..0000000 --- a/packages/keysmith/dist/safe/chacha.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// -export declare function genPassword(): Buffer; -export declare function encrypt(key: Buffer, plain: Buffer): Buffer; -export declare function decrypt(key: Buffer, encrypted: Buffer): Buffer; diff --git a/packages/keysmith/dist/safe/chacha.js b/packages/keysmith/dist/safe/chacha.js deleted file mode 100644 index 5635db9..0000000 --- a/packages/keysmith/dist/safe/chacha.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -exports.__esModule = true; -exports.decrypt = exports.encrypt = exports.genPassword = void 0; -var crypto_1 = __importStar(require("crypto")); -var ALGO_NAME = 'chacha20-poly1305'; -var AUTHTAG_LEN = 16; -var NONCE_LEN = 12; -function genPassword() { - return (0, crypto_1.randomBytes)(32); -} -exports.genPassword = genPassword; -function encrypt(key, plain) { - var nonce = (0, crypto_1.randomBytes)(NONCE_LEN); - var cipher = crypto_1["default"].createCipheriv(ALGO_NAME, key, nonce, { - authTagLength: AUTHTAG_LEN - }); - return Buffer.concat([ - nonce, - cipher.update(plain), - cipher.final(), - cipher.getAuthTag(), - ]); -} -exports.encrypt = encrypt; -function decrypt(key, encrypted) { - var nonce = encrypted.subarray(0, NONCE_LEN); - var decipher = crypto_1["default"].createDecipheriv(ALGO_NAME, key, nonce, { - authTagLength: AUTHTAG_LEN - }); - decipher.setAuthTag(encrypted.subarray(-AUTHTAG_LEN)); - return Buffer.concat([ - decipher.update(encrypted.subarray(NONCE_LEN, -AUTHTAG_LEN)), - decipher.final(), - ]); -} -exports.decrypt = decrypt; -//# sourceMappingURL=chacha.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safe/chacha.js.map b/packages/keysmith/dist/safe/chacha.js.map deleted file mode 100644 index 793df3f..0000000 --- a/packages/keysmith/dist/safe/chacha.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"chacha.js","sourceRoot":"","sources":["../../src/safe/chacha.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA4C;AAE5C,IAAM,SAAS,GAAG,mBAAmB,CAAA;AACrC,IAAM,WAAW,GAAG,EAAE,CAAA;AACtB,IAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,SAAgB,WAAW;IACzB,OAAO,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAA;AACxB,CAAC;AAFD,kCAEC;AAED,SAAgB,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,IAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,SAAS,CAAC,CAAA;IACpC,IAAM,MAAM,GAAG,mBAAM,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE;QAC1D,aAAa,EAAE,WAAW;KAC3B,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,MAAM,CAAC;QAEnB,KAAK;QAEL,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACpB,MAAM,CAAC,KAAK,EAAE;QAEd,MAAM,CAAC,UAAU,EAAE;KACpB,CAAC,CAAA;AACJ,CAAC;AAdD,0BAcC;AAED,SAAgB,OAAO,CAAC,GAAW,EAAE,SAAiB;IACpD,IAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAC9C,IAAM,QAAQ,GAAG,mBAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE;QAC9D,aAAa,EAAE,WAAW;KAC3B,CAAC,CAAA;IACF,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAChC,SAAS,EACT,CAAC,WAAW,CACb,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE;KACjB,CAAC,CAAA;AACJ,CAAC;AAbD,0BAaC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safe/index.d.ts b/packages/keysmith/dist/safe/index.d.ts deleted file mode 100644 index b87bb39..0000000 --- a/packages/keysmith/dist/safe/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * as v1 from './aes'; -export * as v2 from './v2'; -export * as aes from './aes'; -export * as rsa from './rsa'; diff --git a/packages/keysmith/dist/safe/index.js b/packages/keysmith/dist/safe/index.js deleted file mode 100644 index 913811e..0000000 --- a/packages/keysmith/dist/safe/index.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -exports.__esModule = true; -exports.rsa = exports.aes = exports.v2 = exports.v1 = void 0; -exports.v1 = __importStar(require("./aes")); -exports.v2 = __importStar(require("./v2")); -exports.aes = __importStar(require("./aes")); -exports.rsa = __importStar(require("./rsa")); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safe/index.js.map b/packages/keysmith/dist/safe/index.js.map deleted file mode 100644 index 55708de..0000000 --- a/packages/keysmith/dist/safe/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/safe/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2B;AAC3B,2CAA0B;AAC1B,6CAA4B;AAC5B,6CAA4B"} \ No newline at end of file diff --git a/packages/keysmith/dist/safe/rsa.d.ts b/packages/keysmith/dist/safe/rsa.d.ts deleted file mode 100644 index 0413f64..0000000 --- a/packages/keysmith/dist/safe/rsa.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -import { RsaKey } from '../types'; -export declare function genKeyPair(): Promise; -export declare function encrypt(b64Key: string, plain: Buffer, isPubKey?: boolean): Buffer; -export declare function decrypt(b64Key: string, encrypted: Buffer, isPubKey?: boolean): Buffer; diff --git a/packages/keysmith/dist/safe/rsa.js b/packages/keysmith/dist/safe/rsa.js deleted file mode 100644 index 3742639..0000000 --- a/packages/keysmith/dist/safe/rsa.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -exports.decrypt = exports.encrypt = exports.genKeyPair = void 0; -var crypto_1 = require("crypto"); -function genKeyPair() { - return __awaiter(this, void 0, void 0, function () { - var _a, publicKey, privateKey; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: return [4, (0, crypto_1.generateKeyPairSync)('rsa', { - modulusLength: 1024, - publicExponent: 0x10001, - publicKeyEncoding: { - format: 'der', - type: 'spki' - }, - privateKeyEncoding: { - format: 'der', - type: 'pkcs8' - } - })]; - case 1: - _a = _b.sent(), publicKey = _a.publicKey, privateKey = _a.privateKey; - return [2, { - privateKey: privateKey.toString('base64'), - publicKey: publicKey.toString('base64') - }]; - } - }); - }); -} -exports.genKeyPair = genKeyPair; -function encrypt(b64Key, plain, isPubKey) { - if (isPubKey === void 0) { isPubKey = true; } - var keyObj = _b642RsaKey(b64Key, isPubKey); - return isPubKey - ? (0, crypto_1.publicEncrypt)(keyObj, plain) - : (0, crypto_1.privateEncrypt)(keyObj, plain); -} -exports.encrypt = encrypt; -function decrypt(b64Key, encrypted, isPubKey) { - if (isPubKey === void 0) { isPubKey = false; } - var keyObj = _b642RsaKey(b64Key, isPubKey); - return isPubKey - ? (0, crypto_1.publicDecrypt)(keyObj, encrypted) - : (0, crypto_1.privateDecrypt)(keyObj, encrypted); -} -exports.decrypt = decrypt; -function _b642RsaKey(b64Str, isPubKey) { - if (isPubKey === void 0) { isPubKey = true; } - var buf = Buffer.from(b64Str, 'base64'); - return isPubKey - ? (0, crypto_1.createPublicKey)({ - key: buf, - format: 'der', - type: 'spki' - }) - : (0, crypto_1.createPrivateKey)({ - key: buf, - format: 'der', - type: 'pkcs8' - }); -} -//# sourceMappingURL=rsa.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safe/rsa.js.map b/packages/keysmith/dist/safe/rsa.js.map deleted file mode 100644 index 07d6eab..0000000 --- a/packages/keysmith/dist/safe/rsa.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsa.js","sourceRoot":"","sources":["../../src/safe/rsa.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCASe;AAGf,SAAsB,UAAU;;;;;wBACI,WAAM,IAAA,4BAAmB,EAAC,KAAK,EAAE;wBACjE,aAAa,EAAE,IAAI;wBACnB,cAAc,EAAE,OAAO;wBACvB,iBAAiB,EAAE;4BACjB,MAAM,EAAE,KAAK;4BACb,IAAI,EAAE,MAAM;yBACb;wBACD,kBAAkB,EAAE;4BAClB,MAAM,EAAE,KAAK;4BACb,IAAI,EAAE,OAAO;yBACd;qBACF,CAAC,EAAA;;oBAXI,KAA4B,SAWhC,EAXM,SAAS,eAAA,EAAE,UAAU,gBAAA;oBAY7B,WAAO;4BACL,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;4BACzC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;yBACxC,EAAA;;;;CACF;AAjBD,gCAiBC;AAED,SAAgB,OAAO,CAAC,MAAc,EAAE,KAAa,EAAE,QAAe;IAAf,yBAAA,EAAA,eAAe;IACpE,IAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC5C,OAAO,QAAQ;QACb,CAAC,CAAC,IAAA,sBAAa,EAAC,MAAM,EAAE,KAAK,CAAC;QAC9B,CAAC,CAAC,IAAA,uBAAc,EAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC;AALD,0BAKC;AAED,SAAgB,OAAO,CAAC,MAAc,EAAE,SAAiB,EAAE,QAAgB;IAAhB,yBAAA,EAAA,gBAAgB;IACzE,IAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC5C,OAAO,QAAQ;QACb,CAAC,CAAC,IAAA,sBAAa,EAAC,MAAM,EAAE,SAAS,CAAC;QAClC,CAAC,CAAC,IAAA,uBAAc,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AACvC,CAAC;AALD,0BAKC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,QAAe;IAAf,yBAAA,EAAA,eAAe;IAClD,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAEzC,OAAO,QAAQ;QACb,CAAC,CAAC,IAAA,wBAAe,EAAC;YAChB,GAAG,EAAE,GAAG;YACR,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC;QACF,CAAC,CAAC,IAAA,yBAAgB,EAAC;YACjB,GAAG,EAAE,GAAG;YACR,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,OAAO;SACd,CAAC,CAAA;AACN,CAAC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safe/v2.d.ts b/packages/keysmith/dist/safe/v2.d.ts deleted file mode 100644 index 06e5b1e..0000000 --- a/packages/keysmith/dist/safe/v2.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { CommData, CommSecret } from '../types'; -export declare function encrypt(plain: string, commSecret: CommSecret): CommData; -export declare function decrypt(data: CommData, commSecret: CommSecret): string; -export declare function getWalletCiphers(krData: any): ((plainPK: any) => string)[]; diff --git a/packages/keysmith/dist/safe/v2.js b/packages/keysmith/dist/safe/v2.js deleted file mode 100644 index 4b719f2..0000000 --- a/packages/keysmith/dist/safe/v2.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -exports.__esModule = true; -exports.getWalletCiphers = exports.decrypt = exports.encrypt = void 0; -var lodash_1 = __importDefault(require("lodash")); -var crypto_1 = require("crypto"); -var aes = __importStar(require("./aes")); -var rsa = __importStar(require("./rsa")); -var chacha = __importStar(require("./chacha")); -function encrypt(plain, commSecret) { - if (!lodash_1["default"].isEmpty(commSecret.aesPwd) && !lodash_1["default"].isEmpty(commSecret.aesSalt)) { - plain = aes.encrypt(plain, commSecret.aesPwd, commSecret.aesSalt); - } - var chachaKey = (0, crypto_1.randomBytes)(32); - var data = chacha.encrypt(chachaKey, Buffer.from(plain, 'utf8')).toString('base64'); - var secret = rsa.encrypt(commSecret.rsaKey, chachaKey, commSecret.isPubKey).toString('base64'); - return { data: data, secret: secret }; -} -exports.encrypt = encrypt; -function decrypt(data, commSecret) { - var chachaKey = rsa.decrypt(commSecret.rsaKey, Buffer.from(data.secret, 'base64'), commSecret.isPubKey); - var decryped = chacha.decrypt(chachaKey, Buffer.from(data.data, 'base64')); - var ret = decryped.toString('utf8'); - if (lodash_1["default"].isEmpty(commSecret.aesPwd) || lodash_1["default"].isEmpty(commSecret.aesSalt)) { - return ret; - } - return aes.decrypt(ret, commSecret.aesPwd, commSecret.aesSalt); -} -exports.decrypt = decrypt; -function getWalletCiphers(krData) { - if (lodash_1["default"].isEmpty(krData)) { - throw Error('Wrong KR info!'); - } - var key = krData.key, salt = krData.salt, password = krData.password; - var decryptedKey = aes.decrypt(key, password, salt); - return [ - function (plainPK) { return aes.encrypt(plainPK, decryptedKey, salt); }, - function (encryptedPK) { return aes.decrypt(encryptedPK, decryptedKey, salt); }, - ]; -} -exports.getWalletCiphers = getWalletCiphers; -//# sourceMappingURL=v2.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safe/v2.js.map b/packages/keysmith/dist/safe/v2.js.map deleted file mode 100644 index 37962ea..0000000 --- a/packages/keysmith/dist/safe/v2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/safe/v2.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAsB;AACtB,iCAAoC;AACpC,yCAA4B;AAC5B,yCAA4B;AAC5B,+CAAkC;AAGlC,SAAgB,OAAO,CAAC,KAAa,EAAE,UAAsB;IAC3D,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACnE,KAAK,GAAG,GAAG,CAAC,OAAO,CACjB,KAAK,EACL,UAAU,CAAC,MAAO,EAClB,UAAU,CAAC,OAAQ,CACpB,CAAA;KACF;IAED,IAAM,SAAS,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAA;IACjC,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CACzB,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAC3B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACpB,IAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CACxB,UAAU,CAAC,MAAM,EACjB,SAAS,EACT,UAAU,CAAC,QAAQ,CACpB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACpB,OAAO,EAAE,IAAI,MAAA,EAAE,MAAM,QAAA,EAAE,CAAA;AACzB,CAAC;AApBD,0BAoBC;AAED,SAAgB,OAAO,CAAC,IAAc,EAAE,UAAsB;IAC5D,IAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAC3B,UAAU,CAAC,MAAM,EACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAClC,UAAU,CAAC,QAAQ,CACpB,CAAA;IACD,IAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAC7B,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CACjC,CAAA;IAED,IAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrC,IAAI,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACjE,OAAO,GAAG,CAAA;KACX;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,MAAO,EAAE,UAAU,CAAC,OAAQ,CAAC,CAAA;AAClE,CAAC;AAhBD,0BAgBC;AAED,SAAgB,gBAAgB,CAAC,MAAM;IACrC,IAAI,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACrB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAA;KAC9B;IAEO,IAAA,GAAG,GAAqB,MAAM,IAA3B,EAAE,IAAI,GAAe,MAAM,KAArB,EAAE,QAAQ,GAAK,MAAM,SAAX,CAAW;IACtC,IAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAErD,OAAO;QACL,UAAA,OAAO,IAAI,OAAA,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAxC,CAAwC;QACnD,UAAA,WAAW,IAAI,OAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,EAA5C,CAA4C;KAC5D,CAAA;AACH,CAAC;AAZD,4CAYC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/aes.d.ts b/packages/keysmith/dist/safeV2/aes.d.ts deleted file mode 100644 index 1683e7d..0000000 --- a/packages/keysmith/dist/safeV2/aes.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function encrypt(plain: string, password: string, salt: string): string; -export declare function decrypt(b64Str: string, password: string, salt: string): string; diff --git a/packages/keysmith/dist/safeV2/aes.js b/packages/keysmith/dist/safeV2/aes.js deleted file mode 100644 index 99a146f..0000000 --- a/packages/keysmith/dist/safeV2/aes.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -exports.__esModule = true; -exports.decrypt = exports.encrypt = void 0; -var lodash_1 = __importDefault(require("lodash")); -var node_forge_1 = require("node-forge"); -var KEY_SIZE = 256 / 8; -var IV_SIZE = 128 / 8; -function encrypt(plain, password, salt) { - var key = (0, node_forge_1.pbkdf2)(password, salt, 1, KEY_SIZE, 'sha512'); - var iv = (0, node_forge_1.pbkdf2)(password, salt, 1, IV_SIZE, 'sha512'); - var engine = node_forge_1.cipher.createCipher('AES-CBC', key); - engine.mode.pad = undefined; - engine.mode.unpad = undefined; - engine.start({ iv: iv }); - engine.update(node_forge_1.util.createBuffer(_paddingSpace(plain), 'utf8')); - engine.finish(); - return node_forge_1.util.encode64(node_forge_1.util.encodeUtf8(engine.output.toHex())); -} -exports.encrypt = encrypt; -function decrypt(b64Str, password, salt) { - var rawBytes = node_forge_1.util.hexToBytes(node_forge_1.util.decodeUtf8(node_forge_1.util.decode64(b64Str))); - var key = (0, node_forge_1.pbkdf2)(password, salt, 1, KEY_SIZE, 'sha512'); - var iv = (0, node_forge_1.pbkdf2)(password, salt, 1, IV_SIZE, 'sha512'); - var engine = node_forge_1.cipher.createDecipher('AES-CBC', key); - engine.mode.pad = undefined; - engine.mode.unpad = undefined; - engine.start({ iv: iv }); - engine.update(node_forge_1.util.createBuffer(rawBytes)); - engine.finish(); - return lodash_1["default"].trimEnd(node_forge_1.util.decodeUtf8(engine.output), ' '); -} -exports.decrypt = decrypt; -function _paddingSpace(str, pad) { - if (pad === void 0) { pad = 16; } - var paddedLen = str.length + pad - (str.length % pad); - return lodash_1["default"].padEnd(str, paddedLen); -} -//# sourceMappingURL=aes.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/aes.js.map b/packages/keysmith/dist/safeV2/aes.js.map deleted file mode 100644 index c473536..0000000 --- a/packages/keysmith/dist/safeV2/aes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"aes.js","sourceRoot":"","sources":["../../src/safeV2/aes.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAsB;AACtB,yCAAiD;AAEjD,IAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAA;AACxB,IAAM,OAAO,GAAG,GAAG,GAAG,CAAC,CAAA;AAEvB,SAAgB,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAY;IACnE,IAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAM,EAAE,GAAG,IAAA,mBAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAEvD,IAAM,MAAM,GAAG,mBAAM,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAClD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAA;IAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;IAE7B,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAA,EAAE,CAAC,CAAA;IACpB,MAAM,CAAC,MAAM,CAAC,iBAAI,CAAC,YAAY,CAC7B,aAAa,CAAC,KAAK,CAAC,EACpB,MAAM,CACP,CAAC,CAAA;IACF,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,iBAAI,CAAC,QAAQ,CAClB,iBAAI,CAAC,UAAU,CACb,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CACtB,CACF,CAAA;AACH,CAAC;AApBD,0BAoBC;AAED,SAAgB,OAAO,CAAC,MAAc,EAAE,QAAgB,EAAE,IAAY;IACpE,IAAM,QAAQ,GAAG,iBAAI,CAAC,UAAU,CAC9B,iBAAI,CAAC,UAAU,CACb,iBAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtB,CACF,CAAA;IAED,IAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACzD,IAAM,EAAE,GAAG,IAAA,mBAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IACvD,IAAM,MAAM,GAAG,mBAAM,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IACpD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAA;IAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;IAE7B,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAA,EAAE,CAAC,CAAA;IACpB,MAAM,CAAC,MAAM,CAAC,iBAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC1C,MAAM,CAAC,MAAM,EAAE,CAAA;IAEf,OAAO,mBAAC,CAAC,OAAO,CACd,iBAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAC9B,GAAG,CACJ,CAAA;AACH,CAAC;AArBD,0BAqBC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,GAAQ;IAAR,oBAAA,EAAA,QAAQ;IAC1C,IAAM,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;IACvD,OAAO,mBAAC,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;AACjC,CAAC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/chacha.d.ts b/packages/keysmith/dist/safeV2/chacha.d.ts deleted file mode 100644 index 283251c..0000000 --- a/packages/keysmith/dist/safeV2/chacha.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export declare function encrypt(utf8PlainBytes: string): { - keyBytes: string; - b64DataBytes: string; -}; -export declare function decrypt(keyBytes: string, encryptedBytes: string): string; diff --git a/packages/keysmith/dist/safeV2/chacha.js b/packages/keysmith/dist/safeV2/chacha.js deleted file mode 100644 index b6fe20f..0000000 --- a/packages/keysmith/dist/safeV2/chacha.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -exports.__esModule = true; -exports.decrypt = exports.encrypt = void 0; -var chacha20poly1305_1 = require("@stablelib/chacha20poly1305"); -var bytes_1 = require("@stablelib/bytes"); -var node_forge_1 = require("node-forge"); -var common_1 = require("./common"); -function encrypt(utf8PlainBytes) { - var keyBytes = node_forge_1.random.getBytesSync(chacha20poly1305_1.KEY_LENGTH); - var dataArray = (0, common_1.forgeBytes2Uint8Array)(node_forge_1.util.encodeUtf8(utf8PlainBytes)); - var cipher = new chacha20poly1305_1.ChaCha20Poly1305((0, common_1.forgeBytes2Uint8Array)(keyBytes)); - var nonceArray = (0, common_1.forgeBytes2Uint8Array)(node_forge_1.random.getBytesSync(chacha20poly1305_1.NONCE_LENGTH)); - var encrypted = cipher.seal(nonceArray, dataArray); - var forgeBytes = (0, common_1.uint8Array2ForgeBytes)((0, bytes_1.concat)(nonceArray, encrypted)); - var dataBytes = node_forge_1.util.encode64(forgeBytes); - return { keyBytes: keyBytes, b64DataBytes: dataBytes }; -} -exports.encrypt = encrypt; -function decrypt(keyBytes, encryptedBytes) { - var decipher = new chacha20poly1305_1.ChaCha20Poly1305((0, common_1.forgeBytes2Uint8Array)(keyBytes)); - var encryptedArray = (0, common_1.forgeBytes2Uint8Array)(node_forge_1.util.decode64(encryptedBytes)); - var decrypted = decipher.open(encryptedArray.slice(0, chacha20poly1305_1.NONCE_LENGTH), encryptedArray.slice(chacha20poly1305_1.NONCE_LENGTH)); - return node_forge_1.util.decodeUtf8((0, common_1.uint8Array2ForgeBytes)(decrypted)); -} -exports.decrypt = decrypt; -//# sourceMappingURL=chacha.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/chacha.js.map b/packages/keysmith/dist/safeV2/chacha.js.map deleted file mode 100644 index 0276cf7..0000000 --- a/packages/keysmith/dist/safeV2/chacha.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"chacha.js","sourceRoot":"","sources":["../../src/safeV2/chacha.ts"],"names":[],"mappings":";;;AAAA,gEAAwF;AACxF,0CAAyC;AACzC,yCAAyC;AACzC,mCAAuE;AAEvE,SAAgB,OAAO,CAAC,cAAsB;IAC5C,IAAM,QAAQ,GAAG,mBAAM,CAAC,YAAY,CAAC,6BAAU,CAAC,CAAA;IAChD,IAAM,SAAS,GAAG,IAAA,8BAAqB,EACrC,iBAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAChC,CAAA;IAED,IAAM,MAAM,GAAG,IAAI,mCAAgB,CACjC,IAAA,8BAAqB,EAAC,QAAQ,CAAC,CAChC,CAAA;IACD,IAAM,UAAU,GAAG,IAAA,8BAAqB,EACtC,mBAAM,CAAC,YAAY,CAAC,+BAAY,CAAC,CAClC,CAAA;IACD,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACpD,IAAM,UAAU,GAAG,IAAA,8BAAqB,EACtC,IAAA,cAAM,EAAC,UAAU,EAAE,SAAS,CAAC,CAC9B,CAAA;IAED,IAAM,SAAS,GAAG,iBAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC3C,OAAO,EAAE,QAAQ,UAAA,EAAE,YAAY,EAAE,SAAS,EAAE,CAAA;AAC9C,CAAC;AAnBD,0BAmBC;AAED,SAAgB,OAAO,CAAC,QAAgB,EAAE,cAAsB;IAC9D,IAAM,QAAQ,GAAG,IAAI,mCAAgB,CACnC,IAAA,8BAAqB,EAAC,QAAQ,CAAC,CAChC,CAAA;IACD,IAAM,cAAc,GAAG,IAAA,8BAAqB,EAC1C,iBAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC9B,CAAA;IACD,IAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAC7B,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,+BAAY,CAAC,EACrC,cAAc,CAAC,KAAK,CAAC,+BAAY,CAAC,CACnC,CAAA;IACD,OAAO,iBAAI,CAAC,UAAU,CACpB,IAAA,8BAAqB,EAAC,SAAS,CAAC,CACjC,CAAA;AACH,CAAC;AAdD,0BAcC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/common.d.ts b/packages/keysmith/dist/safeV2/common.d.ts deleted file mode 100644 index ccec615..0000000 --- a/packages/keysmith/dist/safeV2/common.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function forgeBytes2Uint8Array(forgeBytesStr: string): Uint8Array; -export declare function uint8Array2ForgeBytes(array: Uint8Array): string; diff --git a/packages/keysmith/dist/safeV2/common.js b/packages/keysmith/dist/safeV2/common.js deleted file mode 100644 index e5f1768..0000000 --- a/packages/keysmith/dist/safeV2/common.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -exports.__esModule = true; -exports.uint8Array2ForgeBytes = exports.forgeBytes2Uint8Array = void 0; -var node_forge_1 = require("node-forge"); -var stableHex = __importStar(require("@stablelib/hex")); -function forgeBytes2Uint8Array(forgeBytesStr) { - var hexStr = node_forge_1.util.bytesToHex(forgeBytesStr); - return stableHex.decode(hexStr); -} -exports.forgeBytes2Uint8Array = forgeBytes2Uint8Array; -function uint8Array2ForgeBytes(array) { - var hex = stableHex.encode(array); - return node_forge_1.util.hexToBytes(hex); -} -exports.uint8Array2ForgeBytes = uint8Array2ForgeBytes; -//# sourceMappingURL=common.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/common.js.map b/packages/keysmith/dist/safeV2/common.js.map deleted file mode 100644 index fe3d636..0000000 --- a/packages/keysmith/dist/safeV2/common.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/safeV2/common.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAiC;AACjC,wDAA2C;AAE3C,SAAgB,qBAAqB,CAAC,aAAqB;IACzD,IAAM,MAAM,GAAG,iBAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;IAC7C,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACjC,CAAC;AAHD,sDAGC;AAED,SAAgB,qBAAqB,CAAC,KAAiB;IACrD,IAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACnC,OAAO,iBAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAHD,sDAGC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/index.d.ts b/packages/keysmith/dist/safeV2/index.d.ts deleted file mode 100644 index b87bb39..0000000 --- a/packages/keysmith/dist/safeV2/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * as v1 from './aes'; -export * as v2 from './v2'; -export * as aes from './aes'; -export * as rsa from './rsa'; diff --git a/packages/keysmith/dist/safeV2/index.js b/packages/keysmith/dist/safeV2/index.js deleted file mode 100644 index 913811e..0000000 --- a/packages/keysmith/dist/safeV2/index.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -exports.__esModule = true; -exports.rsa = exports.aes = exports.v2 = exports.v1 = void 0; -exports.v1 = __importStar(require("./aes")); -exports.v2 = __importStar(require("./v2")); -exports.aes = __importStar(require("./aes")); -exports.rsa = __importStar(require("./rsa")); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/index.js.map b/packages/keysmith/dist/safeV2/index.js.map deleted file mode 100644 index ce2d600..0000000 --- a/packages/keysmith/dist/safeV2/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/safeV2/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA2B;AAC3B,2CAA0B;AAC1B,6CAA4B;AAC5B,6CAA4B"} \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/rsa.d.ts b/packages/keysmith/dist/safeV2/rsa.d.ts deleted file mode 100644 index b4bd00f..0000000 --- a/packages/keysmith/dist/safeV2/rsa.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { RsaKey } from '../types'; -export declare function genKeyPair(): RsaKey; -export declare function encrypt(b64Key: string, plainBytes: string): string; -export declare function decrypt(b64Key: string, encryptedForgeBytes: string): string; diff --git a/packages/keysmith/dist/safeV2/rsa.js b/packages/keysmith/dist/safeV2/rsa.js deleted file mode 100644 index 3808f12..0000000 --- a/packages/keysmith/dist/safeV2/rsa.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -exports.__esModule = true; -exports.decrypt = exports.encrypt = exports.genKeyPair = void 0; -var node_forge_1 = require("node-forge"); -function _b64DerStr2Key(b64DerStr, isPriKey) { - if (isPriKey === void 0) { isPriKey = true; } - var asn1Obj = node_forge_1.asn1.fromDer(node_forge_1.util.decode64(b64DerStr)); - return isPriKey === true - ? node_forge_1.pki.privateKeyFromAsn1(asn1Obj) - : node_forge_1.pki.publicKeyFromAsn1(asn1Obj); -} -function _key2B64DerStr(key, isPriKey) { - if (isPriKey === void 0) { isPriKey = true; } - var asn1Obj = isPriKey === true ? node_forge_1.pki.privateKeyToAsn1(key) : node_forge_1.pki.publicKeyToAsn1(key); - var derFmt = node_forge_1.asn1.toDer(asn1Obj).getBytes(); - return node_forge_1.util.encode64(derFmt); -} -function genKeyPair() { - var _a = node_forge_1.pki.rsa.generateKeyPair({ - bits: 1024, - e: 0x10001 - }), privateKey = _a.privateKey, publicKey = _a.publicKey; - return { - privateKey: _key2B64DerStr(privateKey, true), - publicKey: _key2B64DerStr(publicKey, false) - }; -} -exports.genKeyPair = genKeyPair; -function encrypt(b64Key, plainBytes) { - var keyObj = _b64DerStr2Key(b64Key, false); - return keyObj.encrypt(plainBytes, 'RSA-OAEP', { - md: node_forge_1.md.sha1.create(), - mgf1: { - md: node_forge_1.md.sha1.create() - } - }); -} -exports.encrypt = encrypt; -function decrypt(b64Key, encryptedForgeBytes) { - var priKey = _b64DerStr2Key(b64Key, true); - return priKey.decrypt(encryptedForgeBytes, 'RSA-OAEP'); -} -exports.decrypt = decrypt; -//# sourceMappingURL=rsa.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/rsa.js.map b/packages/keysmith/dist/safeV2/rsa.js.map deleted file mode 100644 index 024dff9..0000000 --- a/packages/keysmith/dist/safeV2/rsa.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"rsa.js","sourceRoot":"","sources":["../../src/safeV2/rsa.ts"],"names":[],"mappings":";;;AAAA,yCAAgD;AAGhD,SAAS,cAAc,CAAC,SAAS,EAAE,QAAe;IAAf,yBAAA,EAAA,eAAe;IAChD,IAAM,OAAO,GAAG,iBAAI,CAAC,OAAO,CAAC,iBAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;IACtD,OAAO,QAAQ,KAAK,IAAI;QACtB,CAAC,CAAC,gBAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,gBAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,GAAG,EAAE,QAAe;IAAf,yBAAA,EAAA,eAAe;IAC1C,IAAM,OAAO,GACX,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAC1E,IAAM,MAAM,GAAG,iBAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC7C,OAAO,iBAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,SAAgB,UAAU;IAClB,IAAA,KAA4B,gBAAG,CAAC,GAAG,CAAC,eAAe,CAAC;QACxD,IAAI,EAAE,IAAI;QACV,CAAC,EAAE,OAAO;KACX,CAAC,EAHM,UAAU,gBAAA,EAAE,SAAS,eAG3B,CAAA;IACF,OAAO;QACL,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;QAC5C,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;KAC5C,CAAA;AACH,CAAC;AATD,gCASC;AAQD,SAAgB,OAAO,CAAC,MAAc,EAAE,UAAkB;IACxD,IAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE;QAC5C,EAAE,EAAE,eAAE,CAAC,IAAI,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE;YACJ,EAAE,EAAE,eAAE,CAAC,IAAI,CAAC,MAAM,EAAE;SACrB;KACF,CAAC,CAAA;AACJ,CAAC;AARD,0BAQC;AAQD,SAAgB,OAAO,CAAC,MAAc,EAAE,mBAA2B;IACjE,IAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;AACxD,CAAC;AAHD,0BAGC"} \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/v2.d.ts b/packages/keysmith/dist/safeV2/v2.d.ts deleted file mode 100644 index 06e5b1e..0000000 --- a/packages/keysmith/dist/safeV2/v2.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { CommData, CommSecret } from '../types'; -export declare function encrypt(plain: string, commSecret: CommSecret): CommData; -export declare function decrypt(data: CommData, commSecret: CommSecret): string; -export declare function getWalletCiphers(krData: any): ((plainPK: any) => string)[]; diff --git a/packages/keysmith/dist/safeV2/v2.js b/packages/keysmith/dist/safeV2/v2.js deleted file mode 100644 index 19ff911..0000000 --- a/packages/keysmith/dist/safeV2/v2.js +++ /dev/null @@ -1,68 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -exports.__esModule = true; -exports.getWalletCiphers = exports.decrypt = exports.encrypt = void 0; -var lodash_1 = __importDefault(require("lodash")); -var aes = __importStar(require("./aes")); -var rsa = __importStar(require("./rsa")); -var chacha = __importStar(require("./chacha")); -var node_forge_1 = require("node-forge"); -function encrypt(plain, commSecret) { - if (!lodash_1["default"].isEmpty(commSecret.aesPwd) && !lodash_1["default"].isEmpty(commSecret.aesSalt)) { - plain = aes.encrypt(plain, commSecret.aesPwd, commSecret.aesSalt); - } - var _a = chacha.encrypt(node_forge_1.util.encodeUtf8(plain)), keyBytes = _a.keyBytes, b64DataBytes = _a.b64DataBytes; - var secretBytes = rsa.encrypt(commSecret.rsaKey, keyBytes); - return { - data: b64DataBytes, - secret: node_forge_1.util.encode64(secretBytes) - }; -} -exports.encrypt = encrypt; -function decrypt(data, commSecret) { - var chachaKey = rsa.decrypt(commSecret.rsaKey, node_forge_1.util.decode64(data.secret)); - var ret = chacha.decrypt(chachaKey, data.data); - if (lodash_1["default"].isEmpty(commSecret.aesPwd) || lodash_1["default"].isEmpty(commSecret.aesSalt)) { - return ret; - } - return aes.decrypt(ret, commSecret.aesPwd, commSecret.aesSalt); -} -exports.decrypt = decrypt; -function getWalletCiphers(krData) { - if (lodash_1["default"].isEmpty(krData)) { - throw Error('Wrong KR info!'); - } - var key = krData.key, salt = krData.salt, password = krData.password; - var decryptedKey = aes.decrypt(key, password, salt); - return [ - function (plainPK) { return aes.encrypt(plainPK, decryptedKey, salt); }, - function (encryptedPK) { return aes.decrypt(encryptedPK, decryptedKey, salt); }, - ]; -} -exports.getWalletCiphers = getWalletCiphers; -//# sourceMappingURL=v2.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/safeV2/v2.js.map b/packages/keysmith/dist/safeV2/v2.js.map deleted file mode 100644 index 8e9c19a..0000000 --- a/packages/keysmith/dist/safeV2/v2.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/safeV2/v2.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAsB;AACtB,yCAA4B;AAC5B,yCAA4B;AAC5B,+CAAkC;AAElC,yCAAiC;AAEjC,SAAgB,OAAO,CAAC,KAAa,EAAE,UAAsB;IAC3D,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACnE,KAAK,GAAG,GAAG,CAAC,OAAO,CACjB,KAAK,EACL,UAAU,CAAC,MAAO,EAClB,UAAU,CAAC,OAAQ,CACpB,CAAA;KACF;IAEK,IAAA,KAA6B,MAAM,CAAC,OAAO,CAC/C,iBAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CACvB,EAFO,QAAQ,cAAA,EAAE,YAAY,kBAE7B,CAAA;IACD,IAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC5D,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,iBAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;KACnC,CAAA;AACH,CAAC;AAjBD,0BAiBC;AAED,SAAgB,OAAO,CAAC,IAAc,EAAE,UAAsB;IAC5D,IAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAC3B,UAAU,CAAC,MAAM,EACjB,iBAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3B,CAAA;IACD,IAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAChD,IAAI,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,mBAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACjE,OAAO,GAAG,CAAA;KACX;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,MAAO,EAAE,UAAU,CAAC,OAAQ,CAAC,CAAA;AAClE,CAAC;AAVD,0BAUC;AAED,SAAgB,gBAAgB,CAAC,MAAM;IACrC,IAAI,mBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACrB,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAA;KAC9B;IAEO,IAAA,GAAG,GAAqB,MAAM,IAA3B,EAAE,IAAI,GAAe,MAAM,KAArB,EAAE,QAAQ,GAAK,MAAM,SAAX,CAAW;IACtC,IAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAErD,OAAO;QACL,UAAA,OAAO,IAAI,OAAA,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,EAAxC,CAAwC;QACnD,UAAA,WAAW,IAAI,OAAA,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,EAA5C,CAA4C;KAC5D,CAAA;AACH,CAAC;AAZD,4CAYC"} \ No newline at end of file diff --git a/packages/keysmith/dist/transaction/domain.d.ts b/packages/keysmith/dist/transaction/domain.d.ts deleted file mode 100644 index a4c86eb..0000000 --- a/packages/keysmith/dist/transaction/domain.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -export type TransactionRequest = Record; -export interface WalletData { - chainName: string; - secret: string; - [key: string]: any; -} -export interface SignTransactionParams { - privateKey: string; - series: string; - transactionRequest: TransactionRequest; -} diff --git a/packages/keysmith/dist/transaction/domain.js b/packages/keysmith/dist/transaction/domain.js deleted file mode 100644 index 4c1e427..0000000 --- a/packages/keysmith/dist/transaction/domain.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -exports.__esModule = true; -//# sourceMappingURL=domain.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/transaction/domain.js.map b/packages/keysmith/dist/transaction/domain.js.map deleted file mode 100644 index 9312870..0000000 --- a/packages/keysmith/dist/transaction/domain.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/transaction/domain.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/packages/keysmith/dist/transaction/index.d.ts b/packages/keysmith/dist/transaction/index.d.ts deleted file mode 100644 index 529db7e..0000000 --- a/packages/keysmith/dist/transaction/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { SignTransactionParams } from './domain'; -export declare const signTransaction: ({ series, privateKey, transactionRequest, }: SignTransactionParams) => Promise; -declare const _default: { - signTransaction: ({ series, privateKey, transactionRequest, }: SignTransactionParams) => Promise; -}; -export default _default; diff --git a/packages/keysmith/dist/transaction/index.js b/packages/keysmith/dist/transaction/index.js deleted file mode 100644 index 8459ce2..0000000 --- a/packages/keysmith/dist/transaction/index.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -exports.signTransaction = void 0; -var perform_sign_transaction_1 = require("./perform-sign-transaction"); -var signTransaction = function (_a) { - var series = _a.series, privateKey = _a.privateKey, transactionRequest = _a.transactionRequest; - return __awaiter(void 0, void 0, void 0, function () { - var _b; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - console.log('signTransaction::transactionRequest to sign', transactionRequest); - _b = series.toLowerCase(); - switch (_b) { - case 'avax': return [3, 1]; - case 'bsc': return [3, 1]; - case 'matic': return [3, 1]; - case 'eth': return [3, 1]; - case 'ltc': return [3, 3]; - case 'bch': return [3, 3]; - case 'btc': return [3, 3]; - case 'fil': return [3, 3]; - case 'dot': return [3, 3]; - } - return [3, 4]; - case 1: return [4, (0, perform_sign_transaction_1.performSignEvmTransaction)(privateKey, transactionRequest)]; - case 2: return [2, _c.sent()]; - case 3: - { - throw new Error('Not implemented yet'); - } - _c.label = 4; - case 4: - { - throw new Error('Unsupported series'); - } - _c.label = 5; - case 5: return [2]; - } - }); - }); -}; -exports.signTransaction = signTransaction; -exports["default"] = { - signTransaction: exports.signTransaction -}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/transaction/index.js.map b/packages/keysmith/dist/transaction/index.js.map deleted file mode 100644 index a5105bc..0000000 --- a/packages/keysmith/dist/transaction/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAsE;AAG/D,IAAM,eAAe,GAAG,UAAO,EAId;QAHtB,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,kBAAkB,wBAAA;;;;;;oBAElB,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,kBAAkB,CAAC,CAAA;oBAEtE,KAAA,MAAM,CAAC,WAAW,EAAE,CAAA;;6BACvB,MAAM,CAAC,CAAP,cAAM;6BACN,KAAK,CAAC,CAAN,cAAK;6BACL,OAAO,CAAC,CAAR,cAAO;6BACP,KAAK,CAAC,CAAN,cAAK;6BAGL,KAAK,CAAC,CAAN,cAAK;6BACL,KAAK,CAAC,CAAN,cAAK;6BACL,KAAK,CAAC,CAAN,cAAK;6BACL,KAAK,CAAC,CAAN,cAAK;6BACL,KAAK,CAAC,CAAN,cAAK;;;wBAND,WAAM,IAAA,oDAAyB,EAAC,UAAU,EAAE,kBAAkB,CAAC,EAAA;wBAAtE,WAAO,SAA+D,EAAA;;oBAM5D;wBACV,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;qBACvC;;;oBACQ;wBACP,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;qBACtC;;;;;;CAEF,CAAA;AAzBY,QAAA,eAAe,mBAyB3B;AAED,qBAAe;IACb,eAAe,yBAAA;CAChB,CAAA"} \ No newline at end of file diff --git a/packages/keysmith/dist/transaction/perform-sign-transaction.d.ts b/packages/keysmith/dist/transaction/perform-sign-transaction.d.ts deleted file mode 100644 index ec9de6b..0000000 --- a/packages/keysmith/dist/transaction/perform-sign-transaction.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { TransactionRequest } from './domain'; -export declare const performSignEvmTransaction: (privateKey: string, transactionRequest: TransactionRequest) => Promise; -declare const _default: { - performSignEvmTransaction: (privateKey: string, transactionRequest: TransactionRequest) => Promise; -}; -export default _default; diff --git a/packages/keysmith/dist/transaction/perform-sign-transaction.js b/packages/keysmith/dist/transaction/perform-sign-transaction.js deleted file mode 100644 index 378e031..0000000 --- a/packages/keysmith/dist/transaction/perform-sign-transaction.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -exports.performSignEvmTransaction = void 0; -var ethers_1 = require("ethers"); -var performSignEvmTransaction = function (privateKey, transactionRequest) { return __awaiter(void 0, void 0, void 0, function () { - var wallet; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - try { - wallet = new ethers_1.ethers.Wallet(privateKey); - } - catch (error) { - throw new Error('Invalid privateKey provided'); - } - return [4, wallet.signTransaction(transactionRequest)]; - case 1: return [2, _a.sent()]; - } - }); -}); }; -exports.performSignEvmTransaction = performSignEvmTransaction; -exports["default"] = { - performSignEvmTransaction: exports.performSignEvmTransaction -}; -//# sourceMappingURL=perform-sign-transaction.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/transaction/perform-sign-transaction.js.map b/packages/keysmith/dist/transaction/perform-sign-transaction.js.map deleted file mode 100644 index 7622121..0000000 --- a/packages/keysmith/dist/transaction/perform-sign-transaction.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"perform-sign-transaction.js","sourceRoot":"","sources":["../../src/transaction/perform-sign-transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA+B;AAIxB,IAAM,yBAAyB,GAAG,UACvC,UAAkB,EAClB,kBAAsC;;;;;gBAGtC,IAAI;oBACF,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;iBACvC;gBAAC,OAAO,KAAK,EAAE;oBACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;iBAC/C;gBAEM,WAAM,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAA;oBAAvD,WAAO,SAAgD,EAAA;;;KACxD,CAAA;AAZY,QAAA,yBAAyB,6BAYrC;AAED,qBAAe;IACb,yBAAyB,mCAAA;CAC1B,CAAA"} \ No newline at end of file diff --git a/packages/keysmith/dist/types.d.ts b/packages/keysmith/dist/types.d.ts deleted file mode 100644 index da98363..0000000 --- a/packages/keysmith/dist/types.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -declare const DriveName: { - qr: string; - json: string; -}; -interface ME3Config { - endpoint: string; - partnerId: string; - redirect_url: string; -} -interface RsaKey { - privateKey: string; - publicKey: string; -} -interface Tokens { - kc_access: string; - kc_refresh: string; - google_access: string; - rsaPubKey: string; - uid?: string; - password?: string; - salt?: string; -} -interface CommSecret { - aesPwd?: string; - aesSalt?: string; - rsaKey: string; - isPubKey: boolean; -} -interface CommData { - secret: string; - data: string; -} -interface Me3Wallet { - chainName: string; - walletName: string; - walletAddress: string; - secret: string; -} -interface WalletRaw { - walletAddress: string; - secretRaw: string; -} -export { DriveName, ME3Config, RsaKey, Tokens, CommSecret, CommData, Me3Wallet, WalletRaw }; diff --git a/packages/keysmith/dist/types.js b/packages/keysmith/dist/types.js deleted file mode 100644 index 93ed0f7..0000000 --- a/packages/keysmith/dist/types.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -exports.__esModule = true; -exports.DriveName = void 0; -var DriveName = { - qr: 'ME3_QR', - json: 'ME3_KEY.json' -}; -exports.DriveName = DriveName; -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/types.js.map b/packages/keysmith/dist/types.js.map deleted file mode 100644 index 9fc255d..0000000 --- a/packages/keysmith/dist/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAM,SAAS,GAAG;IAChB,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,cAAc;CACrB,CAAA;AAqDQ,8BAAS"} \ No newline at end of file diff --git a/packages/keysmith/dist/wallet.d.ts b/packages/keysmith/dist/wallet.d.ts deleted file mode 100644 index 94200bc..0000000 --- a/packages/keysmith/dist/wallet.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export default function createWallet(series: string, mnemonic: string): Promise<{ - walletAddress: any; - secretRaw: any; -}>; diff --git a/packages/keysmith/dist/wallet.js b/packages/keysmith/dist/wallet.js deleted file mode 100644 index 271f396..0000000 --- a/packages/keysmith/dist/wallet.js +++ /dev/null @@ -1,118 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __generator = (this && this.__generator) || function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -}; -exports.__esModule = true; -var util_crypto_1 = require("@polkadot/util-crypto"); -var util_1 = require("@polkadot/util"); -var ethers_1 = require("ethers"); -var create_wallet_filecoin_1 = require("./wallet/create-wallet/create-wallet-filecoin"); -function createWallet(series, mnemonic) { - return __awaiter(this, void 0, void 0, function () { - var _a, wallet, mini, _b, publicKey, secretKey; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - _a = series; - switch (_a) { - case 'btc': return [3, 1]; - case 'ltc': return [3, 1]; - case 'bch': return [3, 1]; - case 'eth': return [3, 2]; - case 'dot': return [3, 3]; - case 'fil': return [3, 6]; - } - return [3, 7]; - case 1: return [2, _createBtcWallet(series, mnemonic)]; - case 2: - { - wallet = ethers_1.ethers.Wallet.fromMnemonic(mnemonic); - return [2, { - walletAddress: wallet.address, - secretRaw: wallet.privateKey - }]; - } - _c.label = 3; - case 3: - if (!!(0, util_crypto_1.cryptoIsReady)()) return [3, 5]; - return [4, (0, util_crypto_1.cryptoWaitReady)()]; - case 4: - _c.sent(); - _c.label = 5; - case 5: - mini = (0, util_crypto_1.mnemonicToMiniSecret)(mnemonic); - _b = (0, util_crypto_1.sr25519PairFromSeed)(mini), publicKey = _b.publicKey, secretKey = _b.secretKey; - return [2, { - walletAddress: (0, util_crypto_1.encodeAddress)(publicKey), - secretRaw: (0, util_1.u8aToHex)(secretKey) - }]; - case 6: - { - return [2, (0, create_wallet_filecoin_1.createWalletFilecoin)(mnemonic)]; - } - _c.label = 7; - case 7: return [3, 8]; - case 8: return [2, undefined]; - } - }); - }); -} -exports["default"] = createWallet; -function _createBtcWallet(series, mnemonic) { - var generator; - switch (series) { - case 'btc': - generator = require('bitcore-lib'); - break; - case 'ltc': - generator = require('bitcore-lib-ltc'); - break; - case 'bch': - generator = require('bitcore-lib-cash'); - break; - default: - return undefined; - } - var value = Buffer.from(mnemonic, 'utf8'); - var hash = generator.crypto.Hash.sha256(value); - var bn = generator.crypto.BN.fromBuffer(hash); - var privateKey = new generator.PrivateKey(bn); - return { - walletAddress: privateKey.toAddress().toString(), - secretRaw: privateKey.toString() - }; -} -//# sourceMappingURL=wallet.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/wallet.js.map b/packages/keysmith/dist/wallet.js.map deleted file mode 100644 index 9722b75..0000000 --- a/packages/keysmith/dist/wallet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAM8B;AAC9B,uCAAyC;AACzC,iCAA+B;AAE/B,wFAAoF;AAEpF,SAA8B,YAAY,CAAC,MAAc,EAAE,QAAgB;;;;;;oBACjE,KAAA,MAAM,CAAA;;6BACT,KAAK,CAAC,CAAN,cAAK;6BACL,KAAK,CAAC,CAAN,cAAK;6BACL,KAAK,CAAC,CAAN,cAAK;6BAGL,KAAK,CAAC,CAAN,cAAK;6BAOL,KAAK,CAAC,CAAN,cAAK;6BAWL,KAAK,CAAC,CAAN,cAAK;;;wBApBR,WAAO,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAA;;oBAE/B;wBACJ,MAAM,GAAG,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;wBACnD,WAAO;gCACL,aAAa,EAAE,MAAM,CAAC,OAAO;gCAC7B,SAAS,EAAE,MAAM,CAAC,UAAU;6BAC7B,EAAA;qBACF;;;yBAEK,CAAC,IAAA,2BAAa,GAAE,EAAhB,cAAgB;oBAClB,WAAM,IAAA,6BAAe,GAAE,EAAA;;oBAAvB,SAAuB,CAAA;;;oBAEnB,IAAI,GAAG,IAAA,kCAAoB,EAAC,QAAQ,CAAC,CAAA;oBACrC,KAA2B,IAAA,iCAAmB,EAAC,IAAI,CAAC,EAAlD,SAAS,eAAA,EAAE,SAAS,eAAA,CAA8B;oBAC1D,WAAO;4BACL,aAAa,EAAE,IAAA,2BAAa,EAAC,SAAS,CAAC;4BACvC,SAAS,EAAE,IAAA,eAAQ,EAAC,SAAS,CAAC;yBAC/B,EAAA;;oBAES;wBACV,WAAO,IAAA,6CAAoB,EAAC,QAAQ,CAAC,EAAA;qBACtC;;wBAEC,cAAK;wBAEP,WAAO,SAAS,EAAA;;;;CACjB;AAhCD,kCAgCC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IACxD,IAAI,SAAc,CAAA;IAClB,QAAQ,MAAM,EAAE;QAChB,KAAK,KAAK;YACR,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;YAClC,MAAK;QACP,KAAK,KAAK;YACR,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;YACtC,MAAK;QACP,KAAK,KAAK;YACR,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;YACvC,MAAK;QACP;YACE,OAAO,SAAS,CAAA;KACjB;IAED,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3C,IAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAChD,IAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAM,UAAU,GAAG,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IAC/C,OAAO;QACL,aAAa,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;QAChD,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE;KACjC,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.d.ts b/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.d.ts deleted file mode 100644 index 156b15e..0000000 --- a/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { WalletRaw } from '../../types'; -export declare const createWalletFilecoin: (mnemonic: string) => WalletRaw; diff --git a/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js b/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js deleted file mode 100644 index ea19eb4..0000000 --- a/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js +++ /dev/null @@ -1,36 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -exports.__esModule = true; -exports.createWalletFilecoin = void 0; -var signer = __importStar(require("@zondax/filecoin-signing-tools")); -var createWalletFilecoin = function (mnemonic) { - var key = signer.keyDerive(mnemonic, 'm/44\'/461\'/0\'/0/0', 'mainnet'); - return { - walletAddress: key.address, - secretRaw: key.private_base64 - }; -}; -exports.createWalletFilecoin = createWalletFilecoin; -//# sourceMappingURL=create-wallet-filecoin.js.map \ No newline at end of file diff --git a/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js.map b/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js.map deleted file mode 100644 index 9019b9f..0000000 --- a/packages/keysmith/dist/wallet/create-wallet/create-wallet-filecoin.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-wallet-filecoin.js","sourceRoot":"","sources":["../../../src/wallet/create-wallet/create-wallet-filecoin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAwD;AAIjD,IAAM,oBAAoB,GAAG,UAAC,QAAgB;IACjD,IAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CACxB,QAAQ,EACR,sBAAsB,EACtB,SAAS,CACZ,CAAA;IAED,OAAO;QACH,aAAa,EAAE,GAAG,CAAC,OAAO;QAC1B,SAAS,EAAE,GAAG,CAAC,cAAc;KAChC,CAAA;AACL,CAAC,CAAA;AAXY,QAAA,oBAAoB,wBAWhC"} \ No newline at end of file From be0603a029cdd29c70c6acd11dd83f7b4b057df2 Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Tue, 28 Mar 2023 15:42:44 +0700 Subject: [PATCH 5/9] - remove deprecated - add solana web3 --- packages/keysmith/package.json | 9 +- packages/keysmith/src/safe/aes.ts | 39 ----- packages/keysmith/src/safe/chacha.ts | 40 ----- packages/keysmith/src/safe/index.ts | 4 - packages/keysmith/src/safe/rsa.ts | 60 -------- packages/keysmith/src/safe/v2.ts | 60 -------- yarn.lock | 217 ++++++++++++++++++++++++++- 7 files changed, 216 insertions(+), 213 deletions(-) delete mode 100644 packages/keysmith/src/safe/aes.ts delete mode 100644 packages/keysmith/src/safe/chacha.ts delete mode 100644 packages/keysmith/src/safe/index.ts delete mode 100644 packages/keysmith/src/safe/rsa.ts delete mode 100644 packages/keysmith/src/safe/v2.ts diff --git a/packages/keysmith/package.json b/packages/keysmith/package.json index ced1f1c..b8eb666 100644 --- a/packages/keysmith/package.json +++ b/packages/keysmith/package.json @@ -58,6 +58,10 @@ "@polkadot/keyring": "^10.1.8", "@polkadot/util": "^10.1.8", "@polkadot/util-crypto": "^10.1.8", + "@solana/web3.js": "^1.74.0", + "@stablelib/bytes": "^1.0.1", + "@stablelib/chacha20poly1305": "^1.0.1", + "@stablelib/hex": "^1.0.1", "@zondax/filecoin-signing-tools": "^2.3.0", "axios": "^1.3.4", "bip39": "^3.0.4", @@ -67,10 +71,7 @@ "body-parser": "^1.20.1", "ethers": "^5.7.1", "googleapis": "^108.0.0", - "randomstring": "^1.2.2", - "@stablelib/bytes": "^1.0.1", - "@stablelib/chacha20poly1305": "^1.0.1", - "@stablelib/hex": "^1.0.1" + "randomstring": "^1.2.2" }, "resolutions": { "sharp": "0.28.0" diff --git a/packages/keysmith/src/safe/aes.ts b/packages/keysmith/src/safe/aes.ts deleted file mode 100644 index bd1210f..0000000 --- a/packages/keysmith/src/safe/aes.ts +++ /dev/null @@ -1,39 +0,0 @@ -import _ from 'lodash' -import { createCipheriv, createDecipheriv, pbkdf2Sync } from 'crypto' - -const ENC_ALGO = 256 -const KEY_SIZE = ENC_ALGO / 8 -const IV_SIZE = 128 / 8 - -export function encrypt(plain: string, password: string, salt: string): string { - const key = pbkdf2Sync(password, salt, 1, KEY_SIZE, 'sha512') - const iv = pbkdf2Sync(password, salt, 1, IV_SIZE, 'sha512') - - const cipher = createCipheriv(`aes-${ENC_ALGO}-cbc`, key, iv) - cipher.setAutoPadding(false) - const encrypted = Buffer.concat([ - cipher.update(_paddingSpace(plain), 'utf8'), - cipher.final(), - ]).toString('hex') - return Buffer.from(encrypted, 'utf8') - .toString('base64') -} - -export function decrypt(b64Str: string, password: string, salt: string): string { - const key = pbkdf2Sync(password, salt, 1, KEY_SIZE, 'sha512') - const iv = pbkdf2Sync(password, salt, 1, IV_SIZE, 'sha512') - - const utf8 = Buffer.from(b64Str, 'base64').toString('utf8') - const decipher = createDecipheriv(`aes-${ENC_ALGO}-cbc`, key, iv) - decipher.setAutoPadding(false) - const decoded = Buffer.concat([ - decipher.update(utf8, 'hex'), - decipher.final(), - ]).toString('utf8') - return _.trimEnd(decoded, ' ') -} - -function _paddingSpace(str: string, pad = 16) { - const paddedLen = str.length + pad - (str.length % pad) - return _.padEnd(str, paddedLen) -} diff --git a/packages/keysmith/src/safe/chacha.ts b/packages/keysmith/src/safe/chacha.ts deleted file mode 100644 index a2665bc..0000000 --- a/packages/keysmith/src/safe/chacha.ts +++ /dev/null @@ -1,40 +0,0 @@ -import crypto, { randomBytes } from 'crypto' - -const ALGO_NAME = 'chacha20-poly1305' -const AUTHTAG_LEN = 16 -const NONCE_LEN = 12 - -export function genPassword(): Buffer { - return randomBytes(32) -} - -export function encrypt(key: Buffer, plain: Buffer): Buffer { - const nonce = randomBytes(NONCE_LEN) - const cipher = crypto.createCipheriv(ALGO_NAME, key, nonce, { - authTagLength: AUTHTAG_LEN, - }) - return Buffer.concat([ - //---Nonce--- - nonce, - //---Ciper texts--- - cipher.update(plain), - cipher.final(), - //---Auth Tag--- - cipher.getAuthTag(), - ]) -} - -export function decrypt(key: Buffer, encrypted: Buffer): Buffer { - const nonce = encrypted.subarray(0, NONCE_LEN) - const decipher = crypto.createDecipheriv(ALGO_NAME, key, nonce, { - authTagLength: AUTHTAG_LEN, - }) - decipher.setAuthTag(encrypted.subarray(-AUTHTAG_LEN)) - return Buffer.concat([ - decipher.update(encrypted.subarray( - NONCE_LEN, - -AUTHTAG_LEN - )), - decipher.final(), - ]) -} diff --git a/packages/keysmith/src/safe/index.ts b/packages/keysmith/src/safe/index.ts deleted file mode 100644 index 99e8eb5..0000000 --- a/packages/keysmith/src/safe/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * as v1 from './aes' -export * as v2 from './v2' -export * as aes from './aes' -export * as rsa from './rsa' diff --git a/packages/keysmith/src/safe/rsa.ts b/packages/keysmith/src/safe/rsa.ts deleted file mode 100644 index 26368db..0000000 --- a/packages/keysmith/src/safe/rsa.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { - createPrivateKey, - createPublicKey, - generateKeyPairSync, - KeyObject, - privateDecrypt, - privateEncrypt, - publicDecrypt, - publicEncrypt, -} from 'crypto' -import { RsaKey } from '../types' - -export async function genKeyPair(): Promise { - const { publicKey, privateKey } = await generateKeyPairSync('rsa', { - modulusLength: 1024, - publicExponent: 0x10001, - publicKeyEncoding: { - format: 'der', - type: 'spki', - }, - privateKeyEncoding: { - format: 'der', - type: 'pkcs8', - }, - }) - return { - privateKey: privateKey.toString('base64'), - publicKey: publicKey.toString('base64'), - } -} - -export function encrypt(b64Key: string, plain: Buffer, isPubKey = true): Buffer { - const keyObj = _b642RsaKey(b64Key, isPubKey) - return isPubKey - ? publicEncrypt(keyObj, plain) - : privateEncrypt(keyObj, plain) -} - -export function decrypt(b64Key: string, encrypted: Buffer, isPubKey = false): Buffer { - const keyObj = _b642RsaKey(b64Key, isPubKey) - return isPubKey - ? publicDecrypt(keyObj, encrypted) - : privateDecrypt(keyObj, encrypted) -} - -function _b642RsaKey(b64Str: string, isPubKey = true): KeyObject { - const buf = Buffer.from(b64Str, 'base64') - - return isPubKey - ? createPublicKey({ - key: buf, - format: 'der', - type: 'spki', - }) - : createPrivateKey({ - key: buf, - format: 'der', - type: 'pkcs8', - }) -} diff --git a/packages/keysmith/src/safe/v2.ts b/packages/keysmith/src/safe/v2.ts deleted file mode 100644 index 7fc6b64..0000000 --- a/packages/keysmith/src/safe/v2.ts +++ /dev/null @@ -1,60 +0,0 @@ -import _ from 'lodash' -import { randomBytes } from 'crypto' -import * as aes from './aes' -import * as rsa from './rsa' -import * as chacha from './chacha' -import { CommData, CommSecret } from '../types' - -export function encrypt(plain: string, commSecret: CommSecret): CommData { - if (!_.isEmpty(commSecret.aesPwd) && !_.isEmpty(commSecret.aesSalt)) { - plain = aes.encrypt( - plain, - commSecret.aesPwd!, - commSecret.aesSalt! - ) - } - - const chachaKey = randomBytes(32) - const data = chacha.encrypt( - chachaKey, - Buffer.from(plain, 'utf8') - ).toString('base64') - const secret = rsa.encrypt( - commSecret.rsaKey, - chachaKey, - commSecret.isPubKey - ).toString('base64') - return { data, secret } -} - -export function decrypt(data: CommData, commSecret: CommSecret): string { - const chachaKey = rsa.decrypt( - commSecret.rsaKey, - Buffer.from(data.secret, 'base64'), - commSecret.isPubKey - ) - const decryped = chacha.decrypt( - chachaKey, - Buffer.from(data.data, 'base64') - ) - - const ret = decryped.toString('utf8') - if (_.isEmpty(commSecret.aesPwd) || _.isEmpty(commSecret.aesSalt)) { - return ret - } - return aes.decrypt(ret, commSecret.aesPwd!, commSecret.aesSalt!) -} - -export function getWalletCiphers(krData) { - if (_.isEmpty(krData)) { - throw Error('Wrong KR info!') - } - - const { key, salt, password } = krData - const decryptedKey = aes.decrypt(key, password, salt) - - return [ - plainPK => aes.encrypt(plainPK, decryptedKey, salt), - encryptedPK => aes.decrypt(encryptedPK, decryptedKey, salt), - ] -} diff --git a/yarn.lock b/yarn.lock index f072baf..9772d4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -257,6 +257,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" +"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7": version "7.20.13" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" @@ -1651,6 +1658,11 @@ npmlog "^6.0.2" write-file-atomic "^4.0.1" +"@noble/ed25519@^1.7.0": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== + "@noble/hashes@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" @@ -1661,7 +1673,12 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== -"@noble/secp256k1@1.7.1": +"@noble/hashes@^1.1.2": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" + integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.6.3": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== @@ -2157,6 +2174,35 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== +"@solana/buffer-layout@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/web3.js@^1.74.0": + version "1.74.0" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.74.0.tgz#dbcbeabb830dd7cbbcf5e31404ca79c9785cbf2d" + integrity sha512-RKZyPqizPCxmpMGfpu4fuplNZEWCrhRBjjVstv5QnAJvgln1jgOfgui+rjl1ExnqDnWKg9uaZ5jtGROH/cwabg== + dependencies: + "@babel/runtime" "^7.12.5" + "@noble/ed25519" "^1.7.0" + "@noble/hashes" "^1.1.2" + "@noble/secp256k1" "^1.6.3" + "@solana/buffer-layout" "^4.0.0" + agentkeepalive "^4.2.1" + bigint-buffer "^1.1.5" + bn.js "^5.0.0" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.1" + fast-stable-stringify "^1.0.0" + jayson "^3.4.4" + node-fetch "^2.6.7" + rpc-websockets "^7.5.1" + superstruct "^0.14.2" + "@stablelib/aead@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" @@ -2312,7 +2358,7 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== -"@types/connect@*": +"@types/connect@*", "@types/connect@^3.4.33": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== @@ -2417,6 +2463,11 @@ resolved "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz" integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -2472,6 +2523,13 @@ resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" @@ -2604,7 +2662,7 @@ secp256k1 "^4.0.3" tiny-secp256k1 "^2.2.1" -JSONStream@^1.0.4: +JSONStream@^1.0.4, JSONStream@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -3017,6 +3075,13 @@ bigi@^1.1.0, bigi@^1.4.2: resolved "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz" integrity sha512-ddkU+dFIuEIW8lE7ZwdIAf2UPoM90eaprg5m3YXAVVTmKlqV/9BX4A2M8BOK2yOq6/VgZFVhK6QAxJebhlbhzw== +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + bignumber.js@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" @@ -3039,6 +3104,13 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bip-schnorr@=0.6.4: version "0.6.4" resolved "https://registry.npmjs.org/bip-schnorr/-/bip-schnorr-0.6.4.tgz" @@ -3137,7 +3209,7 @@ bn.js@^4.11.9: resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.2.1: +bn.js@^5.0.0, bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -3160,6 +3232,15 @@ body-parser@1.20.1, body-parser@^1.20.1: type-is "~1.6.18" unpipe "1.0.0" +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -3254,6 +3335,14 @@ buffer-pipe@0.0.3: dependencies: safe-buffer "^5.1.2" +buffer@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.1.tgz#3cbea8c1463e5a0779e30b66d4c88c6ffa182ac2" + integrity sha512-rVAXBwEcEoYtxnHSO5iWyhzV/O1WMtkUYWlfdLS7FjU4PnSJJHEfHXi/uHPI5EwltmOA794gN3bm3/pzuctWjQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + buffer@^5.5.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" @@ -3262,6 +3351,21 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" @@ -3591,6 +3695,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -3902,6 +4011,11 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" @@ -4204,6 +4318,18 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" @@ -4487,7 +4613,7 @@ ethers@^6.0.8: tslib "2.4.0" ws "8.5.0" -eventemitter3@^4.0.4: +eventemitter3@^4.0.4, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -4579,6 +4705,11 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -4616,6 +4747,11 @@ fast-levenshtein@^2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + fast-text-encoding@^1.0.0: version "1.0.6" resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz" @@ -4649,6 +4785,11 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + filelist@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -5315,7 +5456,7 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -5707,6 +5848,11 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" @@ -5759,6 +5905,25 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" +jayson@^3.4.4: + version "3.7.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25" + integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + lodash "^4.17.20" + uuid "^8.3.2" + ws "^7.4.5" + jest-changed-files@^28.1.3: version "28.1.3" resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz" @@ -7890,6 +8055,19 @@ ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: hash-base "^3.0.0" inherits "^2.0.1" +rpc-websockets@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401" + integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w== + dependencies: + "@babel/runtime" "^7.17.2" + eventemitter3 "^4.0.7" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -8346,6 +8524,11 @@ strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" +superstruct@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b" + integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ== + supports-color@8.1.1, supports-color@^8.0.0: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" @@ -8435,6 +8618,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -8769,6 +8957,13 @@ url-template@^2.0.8: resolved "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz" integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" @@ -9010,6 +9205,16 @@ ws@8.5.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== +ws@^7.4.5: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.5.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" From 8ff532d31f9c341ce84362a03b4cae23180656e3 Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Wed, 29 Mar 2023 01:36:30 +0700 Subject: [PATCH 6/9] - solana wallet creation implemented - unit testing appended --- packages/keysmith/package.json | 3 +- .../keysmith/src/chains/common/context.ts | 9 + .../keysmith/src/chains/solana/context.ts | 45 ++ packages/keysmith/src/me3.ts | 30 +- packages/keysmith/src/types.ts | 8 +- packages/keysmith/test/chains/solana.ts | 32 ++ .../test/fixtures/me3-get-chain-list.ts | 411 ++++++++++-------- packages/keysmith/test/me3.test.ts | 2 +- packages/keysmith/test/safe.test.ts | 17 +- 9 files changed, 357 insertions(+), 200 deletions(-) create mode 100644 packages/keysmith/src/chains/common/context.ts create mode 100644 packages/keysmith/src/chains/solana/context.ts create mode 100644 packages/keysmith/test/chains/solana.ts diff --git a/packages/keysmith/package.json b/packages/keysmith/package.json index bf01f8a..704a8c9 100644 --- a/packages/keysmith/package.json +++ b/packages/keysmith/package.json @@ -71,7 +71,8 @@ "body-parser": "^1.20.1", "ethers": "^5.7.1", "googleapis": "^108.0.0", - "randomstring": "^1.2.2" + "randomstring": "^1.2.2", + "uuid": "^9.0.0" }, "resolutions": { "sharp": "0.28.0" diff --git a/packages/keysmith/src/chains/common/context.ts b/packages/keysmith/src/chains/common/context.ts new file mode 100644 index 0000000..d086e0a --- /dev/null +++ b/packages/keysmith/src/chains/common/context.ts @@ -0,0 +1,9 @@ +import { Me3Wallet } from '../../types' + +export interface IChainContext { + readonly series: string + + createWallet(chains: any[], mnemonic: string, pkCipher: (pk: string) => string): Promise + + signTx(wallet: Me3Wallet, tx: any, pkDecipher: (pk: string) => string): string +} \ No newline at end of file diff --git a/packages/keysmith/src/chains/solana/context.ts b/packages/keysmith/src/chains/solana/context.ts new file mode 100644 index 0000000..166329b --- /dev/null +++ b/packages/keysmith/src/chains/solana/context.ts @@ -0,0 +1,45 @@ +import * as bip39 from 'bip39' +import * as bs58 from 'bs58' +import web3, { Keypair } from '@solana/web3.js' + +import { IChainContext } from '../common/context' +import { Me3Wallet } from '../../types' + +import { getWalletName } from '../../wallet/create-wallet/common' + +export default class SolanaContext implements IChainContext { + readonly series: string + + constructor(_series: string) { + this.series = _series + } + + async createWallet( + chains: any[], + mnemonic: string, + pkCipher: (pk: string) => string + ): Promise { + const seed = await bip39.mnemonicToSeed(mnemonic) + const keypair = Keypair.fromSeed(seed.subarray(0, 32)) + const wallets = chains.map(c => { + return { + chainName: c.name, + walletName: getWalletName(c.name), + walletAddress: keypair.publicKey.toBase58(), + secret: pkCipher(bs58.encode(keypair.secretKey)), + } as Me3Wallet + }) + return wallets + } + + signTx( + wallet: Me3Wallet, + tx: web3.Transaction, + pkDecipher: (pk: string) => string + ): string { + const rawPK = pkDecipher(wallet.secret) + const rawPKBytes = bs58.decode(rawPK) + tx.sign(rawPKBytes) + return bs58.encode(tx.serialize()) + } +} \ No newline at end of file diff --git a/packages/keysmith/src/me3.ts b/packages/keysmith/src/me3.ts index f658906..74da41b 100644 --- a/packages/keysmith/src/me3.ts +++ b/packages/keysmith/src/me3.ts @@ -4,12 +4,14 @@ import _ from 'lodash' import RandomString from 'randomstring' import * as bip39 from 'bip39' -import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios' -import { CommData, DriveName, ME3Config, Tokens, Me3Wallet } from './types' +import axios, { AxiosInstance, AxiosResponse } from 'axios' +import { CommData, DriveName, ME3Config, Me3Wallet, Tokens } from './types' import createWallet from './wallet' import Google from './google' import { aes, rsa, v2 } from './safeV2' import { signTransaction } from './transaction' +import { IChainContext } from './chains/common/context' +import SolanaContext from './chains/solana/context' export default class Me3 { private _gClient: Google @@ -20,6 +22,8 @@ export default class Me3 { private _myPriRsa?: string private _serverPubRsa?: string + private _chainCtxs = new Map() + constructor(credential: ME3Config) { this._client = axios.create({ baseURL: credential.endpoint, @@ -30,7 +34,7 @@ export default class Me3 { 'Partner-ID': credential.partnerId, } const _this: Me3 = this - this._client.interceptors.request.use( (config) => { + this._client.interceptors.request.use((config) => { let chain = _.chain(companyHeader).pickBy(_.identity) if (!_.isEmpty(_this._apiToken?.kc_access)) { chain = chain.set('Authorization', `Bearer ${_this._apiToken.kc_access}`) @@ -61,6 +65,8 @@ export default class Me3 { return Promise.reject(err) } ) + + this._chainCtxs['sol'] = new SolanaContext('sol') } /** @@ -203,8 +209,14 @@ export default class Me3 { if (_.isEmpty(chainFound)) { throw Error('Chain not supported') } - const [, decipher] = v2.getWalletCiphers(this._userSecret) + + const refinedSeries = _.toLower(chainFound.series) + if (_.has(this._chainCtxs, refinedSeries)) { + return this._chainCtxs[refinedSeries].signTx(wallet, txRequest, decipher) + } + + // Deprecated, let's migrate to new mode return await signTransaction({ series: chainFound.series, privateKey: decipher(wallet.secret), @@ -241,8 +253,16 @@ export default class Me3 { // Create wallets const mnemonic = bip39.generateMnemonic() const wallets = new Array() + + const [cipher] = v2.getWalletCiphers(this._userSecret) + for (const entry of _.entries(refined)) { - const _wallets = await createWallet(entry, mnemonic) + const [series, chains] = entry + const _wallets = _.has(this._chainCtxs, series) + ? await this._chainCtxs[series].createWallet(chains, mnemonic, cipher) + // Deprecated way, please migrate to above + : await createWallet(entry, mnemonic) + if (!_.isEmpty(_wallets)) { wallets.push(_wallets) } diff --git a/packages/keysmith/src/types.ts b/packages/keysmith/src/types.ts index abef333..5002cdd 100644 --- a/packages/keysmith/src/types.ts +++ b/packages/keysmith/src/types.ts @@ -43,10 +43,10 @@ interface CommData { } interface Me3Wallet { - chainName: string; - walletName: string; - walletAddress: string; - secret: string; + chainName: string, + walletName: string, + walletAddress: string, + secret: string, } interface WalletRaw { diff --git a/packages/keysmith/test/chains/solana.ts b/packages/keysmith/test/chains/solana.ts new file mode 100644 index 0000000..bbfe509 --- /dev/null +++ b/packages/keysmith/test/chains/solana.ts @@ -0,0 +1,32 @@ +import _ from 'lodash' +import * as bip39 from 'bip39' +import { describe } from 'mocha' + +import { v2 } from '../../src/safeV2' +import { IChainContext } from '../../src/chains/common/context' +import SolanaContext from '../../src/chains/solana/context' +import { mockGetChainListResponse } from '../fixtures/me3-get-chain-list' +import { ALICE } from '../fixtures/configs' + +const SERIES = 'sol' +describe('Solana context testing', () => { + let solanaCtx: IChainContext + + before(function () { + solanaCtx = new SolanaContext(SERIES) + }) + + it('SolanaContext::createWallet', async function () { + const mnemonic = bip39.generateMnemonic() + + const chainMap = _.groupBy( + mockGetChainListResponse.data, + it => _.toLower(it.series) + ) + + const [cipher] = v2.getWalletCiphers(ALICE) + const wallets = await solanaCtx.createWallet(chainMap[SERIES], mnemonic, cipher) + + expect(wallets.length).toEqual(2) + }) +}) \ No newline at end of file diff --git a/packages/keysmith/test/fixtures/me3-get-chain-list.ts b/packages/keysmith/test/fixtures/me3-get-chain-list.ts index 23bf66c..052cc29 100644 --- a/packages/keysmith/test/fixtures/me3-get-chain-list.ts +++ b/packages/keysmith/test/fixtures/me3-get-chain-list.ts @@ -1,182 +1,233 @@ export const mockGetChainListResponse = { - 'code': '0', - 'msg': 'success', - 'data': [ - { - 'id': 2, - 'name': 'ETH', - 'symbol': 'ETH', - 'symbolIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20210930/fa2f1c8d81694848bff8d7e823dc82b1.png', - 'description': 'Ethereum\n', - 'chainId': 1, - 'node': 'https://api.tatum.io/v3/blockchain/node/ETH/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', - 'series': 'ETH', - 'hdCoinId': 60, - 'path': 'm/44\'/60\'/0\'/0/', - 'icon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/1626847409064.png', - 'activeIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/1626847357176.png', - 'sort': 2, - 'state': 1, - 'companyId': 2000, - 'txUrl': 'https://etherscan.io/tx/', - 'supportNft': 1, - 'supportDapp': 1, - 'ctime': 1626336341000, - 'mtime': 1675983791000, - 'currency': 'USD', - 'symbolRate': 1548.99, - 'change': '-6.42614', - }, - { - 'id': 3, - 'name': 'Polygon', - 'symbol': 'MATIC', - 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/cf98579e32bd479caadd360b3e4d8f4c.png', - 'description': 'Polygon', - 'chainId': 137, - 'node': 'https://api.tatum.io/v3/blockchain/node/MATIC/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', - 'series': 'ETH', - 'hdCoinId': null, - 'path': 'm/44\'/60\'/0\'/0/', - 'icon': 'https://oss.metabazaar.vip/wallet/20221111/ebf897bfc26a43faa839644a36f0dba2.png', - 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/fa669583b9f0462badd8f805e903772f.png', - 'sort': 4, - 'state': 1, - 'companyId': 2000, - 'txUrl': 'https://polygonscan.com/tx/', - 'supportNft': 1, - 'supportDapp': 1, - 'ctime': 1626744235000, - 'mtime': 1675123862000, - 'currency': 'USD', - 'symbolRate': 1.23, - 'change': '-6.37164', - }, - { - 'id': 4, - 'name': 'PolygonTest', - 'symbol': 'MATIC', - 'symbolIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220312/f5e3df4bbd3f4d9281d62ddc7e742535.png', - 'description': 'Polygon Testnet', - 'chainId': 80001, - 'node': 'https://api.tatum.io/v3/blockchain/node/MATIC/a1f30291-a820-482e-ab19-ee3403f80383_100', - 'series': 'ETH', - 'hdCoinId': 60, - 'path': 'm/44\'/60\'/0\'/0/', - 'icon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220312/c05d9d8fba9f4b0e95827de85beb14bb.png', - 'activeIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220312/d3bf400b6cab41b6b8ccaa95f288c5de.png', - 'sort': 7, - 'state': 1, - 'companyId': 2000, - 'txUrl': 'https://mumbai.polygonscan.com/tx/', - 'supportNft': 1, - 'supportDapp': 1, - 'ctime': 1626744476000, - 'mtime': 1675197926000, - 'currency': 'USD', - 'symbolRate': 1.23, - 'change': '-6.37164', - }, - { - 'id': 16, - 'name': 'Fuji', - 'symbol': 'AVAX', - 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/37654adc00f74098a7173579d07b639d.png', - 'description': 'Fuji Testnet\n', - 'chainId': 43113, - 'node': 'https://capable-aged-resonance.avalanche-testnet.quiknode.pro/4eb68fc64be46f14cf35068125719bb13a68dfe0/ext/bc/C/rpc/', - 'series': 'ETH', - 'hdCoinId': null, - 'path': 'm/44\'/60\'/0\'/0/', - 'icon': 'https://oss.metabazaar.vip/wallet/20221111/bfeb32a9402248018a458c32dad135cc.png', - 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/a55c009369c240bea8d06cc96f1846a5.png', - 'sort': 18, - 'state': 1, - 'companyId': 2000, - 'txUrl': 'https://testnet.snowtrace.io/tx/', - 'supportNft': 1, - 'supportDapp': 1, - 'ctime': 1653471985000, - 'mtime': 1673818239000, - 'currency': 'USD', - 'symbolRate': 17.94, - 'change': '-10.96622', - }, - { - 'id': 17, - 'name': 'AVAX', - 'symbol': 'AVAX', - 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/f40e34f7725f4043bb3f0a55d5f74350.png', - 'description': 'Avalanche', - 'chainId': 43114, - 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', - 'series': 'ETH', - 'hdCoinId': null, - 'path': 'm/44\'/60\'/0\'/0/', - 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', - 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', - 'sort': 18, - 'state': 1, - 'companyId': 2000, - 'txUrl': 'https://testnet.snowtrace.io/tx/', - 'supportNft': 1, - 'supportDapp': 1, - 'ctime': 1653471985000, - 'mtime': 1673818036000, - 'currency': 'USD', - 'symbolRate': 17.94, - 'change': '-10.96622', - }, - // the 2 below are fake data for testing purposes - { - 'id': 69, - 'name': 'MOON', - 'symbol': 'MOON', - 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/f40e34f7725f4043bb3f0a55d5f74350.png', - 'description': 'Mooncoin', - 'chainId': 43114, - 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', - 'series': 'MOON', - 'hdCoinId': null, - 'path': 'm/44\'/60\'/0\'/0/', - 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', - 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', - 'sort': 18, - 'state': 1, - 'companyId': 2000, - 'txUrl': 'https://testnet.snowtrace.io/tx/', - 'supportNft': 1, - 'supportDapp': 1, - 'ctime': 1653471985000, - 'mtime': 1673818036000, - 'currency': 'USD', - 'symbolRate': 17.94, - 'change': '-10.96622', - }, - { - 'id': 420, - 'name': 'LTC', - 'symbol': 'LTC', - 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/f40e34f7725f4043bb3f0a55d5f74350.png', - 'description': 'litecoin', - 'chainId': 43114, - 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', - 'series': 'LTC', - 'hdCoinId': null, - 'path': 'm/44\'/60\'/0\'/0/', - 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', - 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', - 'sort': 18, - 'state': 1, - 'companyId': 2000, - 'txUrl': 'https://testnet.snowtrace.io/tx/', - 'supportNft': 1, - 'supportDapp': 1, - 'ctime': 1653471985000, - 'mtime': 1673818036000, - 'currency': 'USD', - 'symbolRate': 17.94, - 'change': '-10.96622', - }, - ], + 'code': '0', + 'msg': 'success', + 'data': [ + { + 'id': 2, + 'name': 'ETH', + 'symbol': 'ETH', + 'symbolIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20210930/fa2f1c8d81694848bff8d7e823dc82b1.png', + 'description': 'Ethereum\n', + 'chainId': 1, + 'node': 'https://api.tatum.io/v3/blockchain/node/ETH/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'series': 'ETH', + 'hdCoinId': 60, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/1626847409064.png', + 'activeIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/1626847357176.png', + 'sort': 2, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://etherscan.io/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1626336341000, + 'mtime': 1675983791000, + 'currency': 'USD', + 'symbolRate': 1548.99, + 'change': '-6.42614', + }, + { + 'id': 3, + 'name': 'Polygon', + 'symbol': 'MATIC', + 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/cf98579e32bd479caadd360b3e4d8f4c.png', + 'description': 'Polygon', + 'chainId': 137, + 'node': 'https://api.tatum.io/v3/blockchain/node/MATIC/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'series': 'ETH', + 'hdCoinId': null, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://oss.metabazaar.vip/wallet/20221111/ebf897bfc26a43faa839644a36f0dba2.png', + 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/fa669583b9f0462badd8f805e903772f.png', + 'sort': 4, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://polygonscan.com/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1626744235000, + 'mtime': 1675123862000, + 'currency': 'USD', + 'symbolRate': 1.23, + 'change': '-6.37164', + }, + { + 'id': 4, + 'name': 'PolygonTest', + 'symbol': 'MATIC', + 'symbolIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220312/f5e3df4bbd3f4d9281d62ddc7e742535.png', + 'description': 'Polygon Testnet', + 'chainId': 80001, + 'node': 'https://api.tatum.io/v3/blockchain/node/MATIC/a1f30291-a820-482e-ab19-ee3403f80383_100', + 'series': 'ETH', + 'hdCoinId': 60, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220312/c05d9d8fba9f4b0e95827de85beb14bb.png', + 'activeIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220312/d3bf400b6cab41b6b8ccaa95f288c5de.png', + 'sort': 7, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://mumbai.polygonscan.com/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1626744476000, + 'mtime': 1675197926000, + 'currency': 'USD', + 'symbolRate': 1.23, + 'change': '-6.37164', + }, + { + 'id': 16, + 'name': 'Fuji', + 'symbol': 'AVAX', + 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/37654adc00f74098a7173579d07b639d.png', + 'description': 'Fuji Testnet\n', + 'chainId': 43113, + 'node': 'https://capable-aged-resonance.avalanche-testnet.quiknode.pro/4eb68fc64be46f14cf35068125719bb13a68dfe0/ext/bc/C/rpc/', + 'series': 'ETH', + 'hdCoinId': null, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://oss.metabazaar.vip/wallet/20221111/bfeb32a9402248018a458c32dad135cc.png', + 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/a55c009369c240bea8d06cc96f1846a5.png', + 'sort': 18, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://testnet.snowtrace.io/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1653471985000, + 'mtime': 1673818239000, + 'currency': 'USD', + 'symbolRate': 17.94, + 'change': '-10.96622', + }, + { + 'id': 17, + 'name': 'AVAX', + 'symbol': 'AVAX', + 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/f40e34f7725f4043bb3f0a55d5f74350.png', + 'description': 'Avalanche', + 'chainId': 43114, + 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'series': 'ETH', + 'hdCoinId': null, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', + 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', + 'sort': 18, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://testnet.snowtrace.io/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1653471985000, + 'mtime': 1673818036000, + 'currency': 'USD', + 'symbolRate': 17.94, + 'change': '-10.96622', + }, + // the 2 below are fake data for testing purposes + { + 'id': 69, + 'name': 'MOON', + 'symbol': 'MOON', + 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/f40e34f7725f4043bb3f0a55d5f74350.png', + 'description': 'Mooncoin', + 'chainId': 43114, + 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'series': 'MOON', + 'hdCoinId': null, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', + 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', + 'sort': 18, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://testnet.snowtrace.io/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1653471985000, + 'mtime': 1673818036000, + 'currency': 'USD', + 'symbolRate': 17.94, + 'change': '-10.96622', + }, + { + 'id': 420, + 'name': 'LTC', + 'symbol': 'LTC', + 'symbolIcon': 'https://oss.metabazaar.vip/wallet/20221111/f40e34f7725f4043bb3f0a55d5f74350.png', + 'description': 'litecoin', + 'chainId': 43114, + 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'series': 'LTC', + 'hdCoinId': null, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', + 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', + 'sort': 18, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://testnet.snowtrace.io/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1653471985000, + 'mtime': 1673818036000, + 'currency': 'USD', + 'symbolRate': 17.94, + 'change': '-10.96622', + }, + // solana chains + { + 'id': 10000, + 'name': 'SOL', + 'symbol': 'SOL', + 'symbolIcon': 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png', + 'description': 'SolanaMainBeta', + 'chainId': 43114, + 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'series': 'SOL', + 'hdCoinId': null, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', + 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', + 'sort': 18, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://testnet.snowtrace.io/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1653471985000, + 'mtime': 1673818036000, + 'currency': 'USD', + 'symbolRate': 17.94, + 'change': '-10.96622', + }, + { + 'id': 10001, + 'name': 'SOL', + 'symbol': 'dSOL', + 'symbolIcon': 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png', + 'description': 'SolanaDevNet', + 'chainId': 43114, + 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'series': 'SOL', + 'hdCoinId': null, + 'path': 'm/44\'/60\'/0\'/0/', + 'icon': 'https://oss.metabazaar.vip/wallet/20221111/4fd680c36ee14e26add93827f076ee80.png', + 'activeIcon': 'https://oss.metabazaar.vip/wallet/20221111/09bc80b6a03c4be5b91d669a2334532d.png', + 'sort': 18, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://testnet.snowtrace.io/tx/', + 'supportNft': 1, + 'supportDapp': 1, + 'ctime': 1653471985000, + 'mtime': 1673818036000, + 'currency': 'USD', + 'symbolRate': 17.94, + 'change': '-10.96622', + }, + ], } \ No newline at end of file diff --git a/packages/keysmith/test/me3.test.ts b/packages/keysmith/test/me3.test.ts index 615e964..de90b7f 100644 --- a/packages/keysmith/test/me3.test.ts +++ b/packages/keysmith/test/me3.test.ts @@ -7,7 +7,7 @@ import sinon from 'sinon' import Me3 from '../src' import { CONFIG, REDIRECTED, workableConfig } from './fixtures/configs' -import { v2, aes } from '../src/safe' +import { v2, aes } from '../src/safeV2' import { mockGetChainListResponse } from './fixtures/me3-get-chain-list' import axios from 'axios' diff --git a/packages/keysmith/test/safe.test.ts b/packages/keysmith/test/safe.test.ts index 5d68f4a..75d89db 100644 --- a/packages/keysmith/test/safe.test.ts +++ b/packages/keysmith/test/safe.test.ts @@ -1,9 +1,9 @@ import chai from 'chai' import { describe } from 'mocha' -import { aes, v1, v2 } from '../src/safe' -import * as rsa from '../src/safe/rsa' -import * as chacha from '../src/safe/chacha' +import { aes, v1, v2 } from '../src/safeV2' +import * as rsa from '../src/safeV2/rsa' +import * as chacha from '../src/safeV2/chacha' import { ALICE, RAWKEY } from './fixtures/configs' import chaiAsPromised from 'chai-as-promised' @@ -43,17 +43,16 @@ describe('Safe testing', () => { expect(key).to.be.ok const plain = 'Hello World' - const encoded = rsa.encrypt(key.publicKey, Buffer.from(plain, 'utf8')) - expect(rsa.decrypt(key.privateKey, encoded).toString('utf8')).to.deep.equal(plain) + const encoded = rsa.encrypt(key.publicKey, plain) + expect(rsa.decrypt(key.privateKey, encoded)).to.deep.equal(plain) }) it('Chacha testing', () => { - const chachaKey = chacha.genPassword() const plainText = 'Hello world' - const encrypted = chacha.encrypt(chachaKey, Buffer.from(plainText, 'utf8')) - const decrypted = chacha.decrypt(chachaKey, encrypted) - expect(decrypted.toString('utf8')).to.deep.equal(plainText) + const { keyBytes, b64DataBytes } = chacha.encrypt(plainText) + const decrypted = chacha.decrypt(keyBytes, b64DataBytes) + expect(decrypted).to.deep.equal(plainText) }) it('Enc/Dec testing', async function () { const rsaKey = await rsa.genKeyPair(), From 2c5edb07e075de7a8f8da018d614290d830721fe Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Wed, 29 Mar 2023 08:29:43 +0700 Subject: [PATCH 7/9] solana transaction signing done --- .../keysmith/src/chains/common/context.ts | 2 +- .../keysmith/src/chains/solana/context.ts | 31 ++++++++++++++----- packages/keysmith/test/chains/solana.ts | 31 +++++++++++++++++-- .../test/fixtures/me3-get-chain-list.ts | 4 +-- 4 files changed, 55 insertions(+), 13 deletions(-) diff --git a/packages/keysmith/src/chains/common/context.ts b/packages/keysmith/src/chains/common/context.ts index d086e0a..2455e4c 100644 --- a/packages/keysmith/src/chains/common/context.ts +++ b/packages/keysmith/src/chains/common/context.ts @@ -5,5 +5,5 @@ export interface IChainContext { createWallet(chains: any[], mnemonic: string, pkCipher: (pk: string) => string): Promise - signTx(wallet: Me3Wallet, tx: any, pkDecipher: (pk: string) => string): string + signTx(wallet: Me3Wallet, tx: any, pkDecipher: (pk: string) => string): Promise } \ No newline at end of file diff --git a/packages/keysmith/src/chains/solana/context.ts b/packages/keysmith/src/chains/solana/context.ts index 166329b..14dae41 100644 --- a/packages/keysmith/src/chains/solana/context.ts +++ b/packages/keysmith/src/chains/solana/context.ts @@ -1,12 +1,17 @@ +import _ from 'lodash' import * as bip39 from 'bip39' import * as bs58 from 'bs58' -import web3, { Keypair } from '@solana/web3.js' +import { Connection, Keypair, PublicKey, Transaction, clusterApiUrl } from '@solana/web3.js' import { IChainContext } from '../common/context' import { Me3Wallet } from '../../types' - import { getWalletName } from '../../wallet/create-wallet/common' +// TODO: How to use mainChain's node? +const RpcEndpoints = { + 'sol': 'mainnet-beta', + 'soldev': 'devnet', +} export default class SolanaContext implements IChainContext { readonly series: string @@ -32,14 +37,26 @@ export default class SolanaContext implements IChainContext { return wallets } - signTx( + async signTx( wallet: Me3Wallet, - tx: web3.Transaction, + tx: Transaction, pkDecipher: (pk: string) => string - ): string { + ): Promise { + if (_.isEmpty(tx.recentBlockhash) || _.isNil(tx.lastValidBlockHeight)) { + const rpcURL = clusterApiUrl(RpcEndpoints[_.toLower(wallet.chainName)]) + const solConn = new Connection(rpcURL) + const lastHash = await solConn.getLatestBlockhash('confirmed') + tx.recentBlockhash = lastHash.blockhash + tx.lastValidBlockHeight = lastHash.lastValidBlockHeight + } + const rawPK = pkDecipher(wallet.secret) const rawPKBytes = bs58.decode(rawPK) - tx.sign(rawPKBytes) - return bs58.encode(tx.serialize()) + tx.sign({ + publicKey: new PublicKey(wallet.walletAddress), + secretKey: rawPKBytes, + }) + const bytes = tx.serialize() + return bs58.encode(bytes) } } \ No newline at end of file diff --git a/packages/keysmith/test/chains/solana.ts b/packages/keysmith/test/chains/solana.ts index bbfe509..06a4363 100644 --- a/packages/keysmith/test/chains/solana.ts +++ b/packages/keysmith/test/chains/solana.ts @@ -1,16 +1,20 @@ import _ from 'lodash' import * as bip39 from 'bip39' import { describe } from 'mocha' +import { expect } from 'chai' +import { PublicKey, SystemProgram, Transaction } from '@solana/web3.js' import { v2 } from '../../src/safeV2' -import { IChainContext } from '../../src/chains/common/context' import SolanaContext from '../../src/chains/solana/context' +import { IChainContext } from '../../src/chains/common/context' import { mockGetChainListResponse } from '../fixtures/me3-get-chain-list' import { ALICE } from '../fixtures/configs' +import { Me3Wallet } from '../../src/types' const SERIES = 'sol' describe('Solana context testing', () => { let solanaCtx: IChainContext + let wallets: Me3Wallet[] before(function () { solanaCtx = new SolanaContext(SERIES) @@ -25,8 +29,29 @@ describe('Solana context testing', () => { ) const [cipher] = v2.getWalletCiphers(ALICE) - const wallets = await solanaCtx.createWallet(chainMap[SERIES], mnemonic, cipher) + wallets = await solanaCtx.createWallet(chainMap[SERIES], mnemonic, cipher) + + expect(wallets.length).equal(2) + }) + + it('SolanaContext::signTx', async function () { + const [, decipher] = v2.getWalletCiphers(ALICE) + + const sender = new PublicKey(wallets[0].walletAddress) + const receiver = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v') - expect(wallets.length).toEqual(2) + const tx = new Transaction() + { + tx.add( + SystemProgram.transfer({ + fromPubkey: sender, + toPubkey: receiver, + lamports: 1000000, + }) + ) + // We can add more instructions here + } + const rawTx = await solanaCtx.signTx(wallets[0], tx, decipher) + expect(rawTx).to.not.be.null }) }) \ No newline at end of file diff --git a/packages/keysmith/test/fixtures/me3-get-chain-list.ts b/packages/keysmith/test/fixtures/me3-get-chain-list.ts index 052cc29..25a63c2 100644 --- a/packages/keysmith/test/fixtures/me3-get-chain-list.ts +++ b/packages/keysmith/test/fixtures/me3-get-chain-list.ts @@ -186,7 +186,7 @@ export const mockGetChainListResponse = { 'symbolIcon': 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png', 'description': 'SolanaMainBeta', 'chainId': 43114, - 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'node': 'https://api.tatum.io/v3/blockchain/node/solana-mainnet/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', 'series': 'SOL', 'hdCoinId': null, 'path': 'm/44\'/60\'/0\'/0/', @@ -211,7 +211,7 @@ export const mockGetChainListResponse = { 'symbolIcon': 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png', 'description': 'SolanaDevNet', 'chainId': 43114, - 'node': 'https://api.tatum.io/v3/blockchain/node/AVAX/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'node': 'https://api.tatum.io/v3/blockchain/node/solana-devnet/a1f30291-a820-482e-ab19-ee3403f80383_100', 'series': 'SOL', 'hdCoinId': null, 'path': 'm/44\'/60\'/0\'/0/', From 71c96001094847a3f331033540bfb9b92b1e1d3a Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Wed, 29 Mar 2023 10:36:06 +0700 Subject: [PATCH 8/9] wallet creation completed. --- .../keysmith/src/chains/_share_/context.ts | 10 +++ .../common.ts => chains/_share_/functions.ts} | 0 .../keysmith/src/chains/bitcoin/context.ts | 57 ++++++++++++++ .../keysmith/src/chains/common/context.ts | 9 --- .../keysmith/src/chains/cosmos/context.ts | 17 ++++ packages/keysmith/src/chains/evm/context.ts | 41 ++++++++++ packages/keysmith/src/chains/evm/domain.ts | 1 + packages/keysmith/src/chains/file/context.ts | 45 +++++++++++ packages/keysmith/src/chains/index.ts | 7 ++ .../keysmith/src/chains/solana/context.ts | 20 ++--- .../keysmith/src/chains/substrate/context.ts | 47 +++++++++++ packages/keysmith/src/me3.ts | 77 +++++++++---------- packages/keysmith/src/safeV2/v2.ts | 3 +- packages/keysmith/src/transaction/domain.ts | 19 ----- packages/keysmith/src/transaction/index.ts | 33 -------- .../transaction/perform-sign-transaction.ts | 21 ----- packages/keysmith/src/types.ts | 7 +- packages/keysmith/src/wallet.ts | 61 --------------- .../src/wallet/create-wallet/bitcoin.ts | 37 --------- .../src/wallet/create-wallet/filecoin.ts | 19 ----- packages/keysmith/test/chains/solana.ts | 2 +- 21 files changed, 275 insertions(+), 258 deletions(-) create mode 100644 packages/keysmith/src/chains/_share_/context.ts rename packages/keysmith/src/{wallet/create-wallet/common.ts => chains/_share_/functions.ts} (100%) create mode 100644 packages/keysmith/src/chains/bitcoin/context.ts delete mode 100644 packages/keysmith/src/chains/common/context.ts create mode 100644 packages/keysmith/src/chains/cosmos/context.ts create mode 100644 packages/keysmith/src/chains/evm/context.ts create mode 100644 packages/keysmith/src/chains/evm/domain.ts create mode 100644 packages/keysmith/src/chains/file/context.ts create mode 100644 packages/keysmith/src/chains/index.ts create mode 100644 packages/keysmith/src/chains/substrate/context.ts delete mode 100644 packages/keysmith/src/transaction/domain.ts delete mode 100644 packages/keysmith/src/transaction/index.ts delete mode 100644 packages/keysmith/src/transaction/perform-sign-transaction.ts delete mode 100644 packages/keysmith/src/wallet.ts delete mode 100644 packages/keysmith/src/wallet/create-wallet/bitcoin.ts delete mode 100644 packages/keysmith/src/wallet/create-wallet/filecoin.ts diff --git a/packages/keysmith/src/chains/_share_/context.ts b/packages/keysmith/src/chains/_share_/context.ts new file mode 100644 index 0000000..0401341 --- /dev/null +++ b/packages/keysmith/src/chains/_share_/context.ts @@ -0,0 +1,10 @@ +import { Me3Wallet } from '../../types' +import { WalletCipher } from '../../safeV2/v2' + +export interface IChainContext { + readonly series: string + + createWallet(chains: any[], mnemonic: string, pkCipher: WalletCipher): Promise + + signTx(mainChain, wallet: Me3Wallet, tx: any, pkDecipher: WalletCipher): Promise +} \ No newline at end of file diff --git a/packages/keysmith/src/wallet/create-wallet/common.ts b/packages/keysmith/src/chains/_share_/functions.ts similarity index 100% rename from packages/keysmith/src/wallet/create-wallet/common.ts rename to packages/keysmith/src/chains/_share_/functions.ts diff --git a/packages/keysmith/src/chains/bitcoin/context.ts b/packages/keysmith/src/chains/bitcoin/context.ts new file mode 100644 index 0000000..9ae3b90 --- /dev/null +++ b/packages/keysmith/src/chains/bitcoin/context.ts @@ -0,0 +1,57 @@ +import _ from 'lodash' + +import { IChainContext } from '../_share_/context' +import { WalletCipher } from '../../safeV2/v2' +import { Me3Wallet } from '../../types' +import { getWalletName } from '../_share_/functions' + +const getGenerator = (series: string) => { + switch (_.toLower(series)) { + case 'btc': + return require('bitcore-lib') + case 'ltc': + return require('bitcore-lib-ltc') + case 'bch': + return require('bitcore-lib-cash') + default: + break + } + return undefined +} + +export class BitcoinContext implements IChainContext { + readonly series: string + + constructor(_series: string) { + this.series = _series + } + createWallet(chains: any[], mnemonic: string, pkCipher: WalletCipher): Promise { + const wallets = _.chain(chains) + .map(c => { + const generator = getGenerator(c.series) + if (_.isEmpty(generator)) { + return undefined + } + + const value = Buffer.from(mnemonic, 'utf8') + const hash = generator.crypto.Hash.sha256(value) + const bn = generator.crypto.BN.fromBuffer(hash) + const privateKey = new generator.PrivateKey(bn) + + return { + walletAddress: privateKey.toAddress().toString(), + secret: pkCipher(privateKey.toString()), + walletName: getWalletName(c.description), + chainName: c.name, + } as Me3Wallet + }) + .compact() + .value() + return Promise.resolve(wallets) + } + + signTx(mainChain, wallet: Me3Wallet, tx: any, pkDecipher: WalletCipher): Promise { + // TODO: BTC tx signning + return Promise.resolve('') + } +} \ No newline at end of file diff --git a/packages/keysmith/src/chains/common/context.ts b/packages/keysmith/src/chains/common/context.ts deleted file mode 100644 index 2455e4c..0000000 --- a/packages/keysmith/src/chains/common/context.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Me3Wallet } from '../../types' - -export interface IChainContext { - readonly series: string - - createWallet(chains: any[], mnemonic: string, pkCipher: (pk: string) => string): Promise - - signTx(wallet: Me3Wallet, tx: any, pkDecipher: (pk: string) => string): Promise -} \ No newline at end of file diff --git a/packages/keysmith/src/chains/cosmos/context.ts b/packages/keysmith/src/chains/cosmos/context.ts new file mode 100644 index 0000000..b740b8c --- /dev/null +++ b/packages/keysmith/src/chains/cosmos/context.ts @@ -0,0 +1,17 @@ +import { IChainContext } from '../_share_/context' +import { WalletCipher } from '../../safeV2/v2' +import { Me3Wallet } from '../../types' + +// TODO +export class CosmosContext implements IChainContext { + readonly series: string + + createWallet(chains: any[], mnemonic: string, pkCipher: WalletCipher): Promise { + return Promise.resolve([]) + } + + signTx(mainChain, wallet: Me3Wallet, tx: any, pkDecipher: WalletCipher): Promise { + return Promise.resolve('') + } + +} \ No newline at end of file diff --git a/packages/keysmith/src/chains/evm/context.ts b/packages/keysmith/src/chains/evm/context.ts new file mode 100644 index 0000000..6124b7c --- /dev/null +++ b/packages/keysmith/src/chains/evm/context.ts @@ -0,0 +1,41 @@ +import { ethers } from 'ethers' +import { Me3Wallet } from '../../types' +import { IChainContext } from '../_share_/context' +import { WalletCipher } from '../../safeV2/v2' +import { TransactionRequest } from './domain' +import { getWalletName } from '../_share_/functions' + +export class EvmContext implements IChainContext { + readonly series: string + + constructor(_series: string) { + this.series = _series + } + + createWallet(chains: any[], mnemonic: string, cipher: WalletCipher): Promise { + const wallets = chains.map(c => { + const accountIdx = 0 + const path = `${c.path}${accountIdx}` + + const wallet = ethers.Wallet.fromMnemonic(mnemonic, path) + return { + walletAddress: wallet.address, + secret: cipher(wallet.privateKey), + chainName: c.name, + walletName: getWalletName(c.description), + } as Me3Wallet + }) + + return Promise.resolve(wallets) + } + + async signTx(_, wallet: Me3Wallet, tx: TransactionRequest, pkDecipher: WalletCipher): Promise { + const rawPK = pkDecipher(wallet.secret) + try { + const wallet = new ethers.Wallet(rawPK) + return await wallet.signTransaction(tx) + } catch (error) { + throw new Error('Invalid privateKey provided') + } + } +} \ No newline at end of file diff --git a/packages/keysmith/src/chains/evm/domain.ts b/packages/keysmith/src/chains/evm/domain.ts new file mode 100644 index 0000000..52a453a --- /dev/null +++ b/packages/keysmith/src/chains/evm/domain.ts @@ -0,0 +1 @@ +export type TransactionRequest = Record \ No newline at end of file diff --git a/packages/keysmith/src/chains/file/context.ts b/packages/keysmith/src/chains/file/context.ts new file mode 100644 index 0000000..d8b8e90 --- /dev/null +++ b/packages/keysmith/src/chains/file/context.ts @@ -0,0 +1,45 @@ +import _ from 'lodash' +import * as signer from '@zondax/filecoin-signing-tools' + +import { IChainContext } from '../_share_/context' +import { WalletCipher } from '../../safeV2/v2' +import { Me3Wallet } from '../../types' +import { getWalletName } from '../_share_/functions' + +export class FileContext implements IChainContext { + readonly series: string + + constructor(_series: string) { + this.series = _series + } + + createWallet(chains: any[], mnemonic: string, pkCipher: WalletCipher): Promise { + const wallets = _.chain(chains) + .map(c => { + const accountIdx = 0 + const path = `${c.path}${accountIdx}` + + const key = signer.keyDerive( + mnemonic, + path, + _.toLower(c.name) === 'fil' ? 'mainnet' : 'testnet' + ) + + return { + walletAddress: key.address, + secret: pkCipher(key.private_base64), + walletName: getWalletName(c.description), + chainName: c.name, + } as Me3Wallet + }) + .compact() + .value() + + return Promise.resolve(wallets) + } + + signTx(mainChain, wallet: Me3Wallet, tx: any, pkDecipher: WalletCipher): Promise { + // TODO: File tx signning + return Promise.resolve('') + } +} diff --git a/packages/keysmith/src/chains/index.ts b/packages/keysmith/src/chains/index.ts new file mode 100644 index 0000000..3e63450 --- /dev/null +++ b/packages/keysmith/src/chains/index.ts @@ -0,0 +1,7 @@ +export * from './_share_/context' +export * from './bitcoin/context' +export * from './cosmos/context' +export * from './evm/context' +export * from './file/context' +export * from './solana/context' +export * from './substrate/context' \ No newline at end of file diff --git a/packages/keysmith/src/chains/solana/context.ts b/packages/keysmith/src/chains/solana/context.ts index 14dae41..f1e3834 100644 --- a/packages/keysmith/src/chains/solana/context.ts +++ b/packages/keysmith/src/chains/solana/context.ts @@ -1,18 +1,14 @@ import _ from 'lodash' import * as bip39 from 'bip39' import * as bs58 from 'bs58' -import { Connection, Keypair, PublicKey, Transaction, clusterApiUrl } from '@solana/web3.js' +import { Connection, Keypair, PublicKey, Transaction } from '@solana/web3.js' -import { IChainContext } from '../common/context' +import { IChainContext } from '../_share_/context' import { Me3Wallet } from '../../types' -import { getWalletName } from '../../wallet/create-wallet/common' +import { WalletCipher } from '../../safeV2/v2' +import { getWalletName } from '../_share_/functions' -// TODO: How to use mainChain's node? -const RpcEndpoints = { - 'sol': 'mainnet-beta', - 'soldev': 'devnet', -} -export default class SolanaContext implements IChainContext { +export class SolanaContext implements IChainContext { readonly series: string constructor(_series: string) { @@ -22,7 +18,7 @@ export default class SolanaContext implements IChainContext { async createWallet( chains: any[], mnemonic: string, - pkCipher: (pk: string) => string + pkCipher: WalletCipher ): Promise { const seed = await bip39.mnemonicToSeed(mnemonic) const keypair = Keypair.fromSeed(seed.subarray(0, 32)) @@ -38,13 +34,13 @@ export default class SolanaContext implements IChainContext { } async signTx( + mainChain, wallet: Me3Wallet, tx: Transaction, pkDecipher: (pk: string) => string ): Promise { if (_.isEmpty(tx.recentBlockhash) || _.isNil(tx.lastValidBlockHeight)) { - const rpcURL = clusterApiUrl(RpcEndpoints[_.toLower(wallet.chainName)]) - const solConn = new Connection(rpcURL) + const solConn = new Connection(mainChain.node) const lastHash = await solConn.getLatestBlockhash('confirmed') tx.recentBlockhash = lastHash.blockhash tx.lastValidBlockHeight = lastHash.lastValidBlockHeight diff --git a/packages/keysmith/src/chains/substrate/context.ts b/packages/keysmith/src/chains/substrate/context.ts new file mode 100644 index 0000000..0e8fd61 --- /dev/null +++ b/packages/keysmith/src/chains/substrate/context.ts @@ -0,0 +1,47 @@ +import { + cryptoIsReady, + cryptoWaitReady, + encodeAddress, + mnemonicToMiniSecret, + sr25519PairFromSeed, +} from '@polkadot/util-crypto' + +import { IChainContext } from '../_share_/context' +import { Me3Wallet } from '../../types' +import { WalletCipher } from '../../safeV2/v2' +import { u8aToHex } from '@polkadot/util' +import { getWalletName } from '../_share_/functions' + +export class SubstrateContext implements IChainContext { + readonly series: string + + constructor(_series: string) { + this.series = _series + if (!cryptoIsReady()) { + cryptoWaitReady().then(console.log) + } + } + createWallet(chains: any[], mnemonic: string, pkCipher: WalletCipher): Promise { + const mini = mnemonicToMiniSecret(mnemonic) + const { publicKey, secretKey } = sr25519PairFromSeed(mini) + const walletAddress = encodeAddress(publicKey) + const secret = pkCipher(u8aToHex(secretKey)) + + const wallets = chains.map(c => { + return { + chainName: c.name, + walletName: getWalletName(c.description), + walletAddress, + secret, + } as Me3Wallet + }) + + return Promise.resolve(wallets) + } + + signTx(mainChain, wallet: Me3Wallet, tx: any, pkDecipher: WalletCipher): Promise { + // TODO + return Promise.resolve('') + } + +} \ No newline at end of file diff --git a/packages/keysmith/src/me3.ts b/packages/keysmith/src/me3.ts index 74da41b..cee3b56 100644 --- a/packages/keysmith/src/me3.ts +++ b/packages/keysmith/src/me3.ts @@ -6,40 +6,44 @@ import * as bip39 from 'bip39' import axios, { AxiosInstance, AxiosResponse } from 'axios' import { CommData, DriveName, ME3Config, Me3Wallet, Tokens } from './types' -import createWallet from './wallet' import Google from './google' import { aes, rsa, v2 } from './safeV2' -import { signTransaction } from './transaction' -import { IChainContext } from './chains/common/context' -import SolanaContext from './chains/solana/context' +import { BitcoinContext, EvmContext, FileContext, IChainContext, SolanaContext, SubstrateContext } from './chains' export default class Me3 { private _gClient: Google private readonly _client: AxiosInstance + // TODO: Should be grouped in Me3Session {{{ private _apiToken?: Tokens private _userSecret?: any private _myPriRsa?: string private _serverPubRsa?: string + // TODO: Should be groupd in Me3Session }}} private _chainCtxs = new Map() constructor(credential: ME3Config) { this._client = axios.create({ baseURL: credential.endpoint, + timeout: (1000 * 60 * 30), + headers: { + 'Company-ID': 2000, + 'Partner-ID': credential.partnerId, + }, }) - const companyHeader = { - 'Company-ID': 2000, - 'Partner-ID': credential.partnerId, - } const _this: Me3 = this this._client.interceptors.request.use((config) => { - let chain = _.chain(companyHeader).pickBy(_.identity) + // https://stackoverflow.com/a/43439886 + delete process.env['http_proxy'] + delete process.env['HTTP_PROXY'] + delete process.env['https_proxy'] + delete process.env['HTTPS_PROXY'] + if (!_.isEmpty(_this._apiToken?.kc_access)) { - chain = chain.set('Authorization', `Bearer ${_this._apiToken.kc_access}`) + config.headers.set('Authorization', `Bearer ${_this._apiToken.kc_access}`) } - config.headers = chain.merge(config.headers).value() return config }) this._client.interceptors.response.use( @@ -67,6 +71,10 @@ export default class Me3 { ) this._chainCtxs['sol'] = new SolanaContext('sol') + this._chainCtxs['eth'] = new EvmContext('eth') + this._chainCtxs['btc'] = new BitcoinContext('btc') + this._chainCtxs['dot'] = new SubstrateContext('dot') + this._chainCtxs['fil'] = new FileContext('fil') } /** @@ -126,23 +134,18 @@ export default class Me3 { const { email, krFileId } = await this._getUserProfile() const isNewUser = await this._loadBackupFile(krFileId) - if (!isNewUser) { + if (isNewUser) { + console.log(`New User, Create wallets for ${email}!`) + } else { console.log(`Already exist, Restore wallets for ${email}!`) - return await this._loadWallets() + const wallets = await this._loadWallets() + if (!_.isEmpty(wallets)) { + return wallets + } + console.log(`OOPS, no wallet found and creating wallets for ${email}!`) } - console.log(`New User, Create wallets for ${email}!`) - const [cipher] = v2.getWalletCiphers(this._userSecret) - - const wallets = await this._createWallets().then( - results => _.map(results, w => ({ - chainName: w.chainName, - walletName: w.walletName, - walletAddress: w.walletAddress, - // TODO: We will provide encrypted private key, as partner wants tx sign on our module - secret: cipher(w.secretRaw), - })), - ) + const wallets = await this._createWallets() for (const w of wallets) { await Promise.all([ this._client.post( @@ -200,7 +203,7 @@ export default class Me3 { * @param txRequest: parameters of a transaction {@link TransactionRequest} * @return string signedTransaction */ - async signTx(wallet: Me3Wallet, txRequest) { + async signTx(wallet: Me3Wallet, txRequest): Promise { const chains = await this._getChainList() const chainFound = _.chain(chains) .filter(c => _.toLower(c.name) === _.toLower(wallet.chainName)) @@ -212,16 +215,10 @@ export default class Me3 { const [, decipher] = v2.getWalletCiphers(this._userSecret) const refinedSeries = _.toLower(chainFound.series) - if (_.has(this._chainCtxs, refinedSeries)) { - return this._chainCtxs[refinedSeries].signTx(wallet, txRequest, decipher) + if (!_.has(this._chainCtxs, refinedSeries)) { + return Promise.reject(`Unsupported series ${refinedSeries}`) } - - // Deprecated, let's migrate to new mode - return await signTransaction({ - series: chainFound.series, - privateKey: decipher(wallet.secret), - transactionRequest: txRequest, - }) + return this._chainCtxs[refinedSeries].signTx(chainFound, wallet, txRequest, decipher) } // private async _generateQR(content: string): Promise { @@ -258,11 +255,13 @@ export default class Me3 { for (const entry of _.entries(refined)) { const [series, chains] = entry - const _wallets = _.has(this._chainCtxs, series) - ? await this._chainCtxs[series].createWallet(chains, mnemonic, cipher) - // Deprecated way, please migrate to above - : await createWallet(entry, mnemonic) + if (!_.has(this._chainCtxs, series)) { + console.error(`[Me3::_getChainList] Unsupported series ${series}`) + continue + } + + const _wallets = await this._chainCtxs[series].createWallet(chains, mnemonic, cipher) if (!_.isEmpty(_wallets)) { wallets.push(_wallets) } diff --git a/packages/keysmith/src/safeV2/v2.ts b/packages/keysmith/src/safeV2/v2.ts index 1a88db1..ab15933 100644 --- a/packages/keysmith/src/safeV2/v2.ts +++ b/packages/keysmith/src/safeV2/v2.ts @@ -36,7 +36,8 @@ export function decrypt(data: CommData, commSecret: CommSecret): string { return aes.decrypt(ret, commSecret.aesPwd!, commSecret.aesSalt!) } -export function getWalletCiphers(krData) { +export type WalletCipher = (key: string) => string +export function getWalletCiphers(krData): WalletCipher[] { if (_.isEmpty(krData)) { throw Error('Wrong KR info!') } diff --git a/packages/keysmith/src/transaction/domain.ts b/packages/keysmith/src/transaction/domain.ts deleted file mode 100644 index d6c3781..0000000 --- a/packages/keysmith/src/transaction/domain.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Please provide params required to execute transactions on the blockchain of your choice - */ -export type TransactionRequest = Record - -/** - * WalletData interface is the shape of each wallet object returned by me3.getWallets() method - */ -export interface WalletData { - chainName: string; - secret: string; - [key: string]: any; -} - -export interface SignTransactionParams { - privateKey: string, - series: string, - transactionRequest: TransactionRequest, -} \ No newline at end of file diff --git a/packages/keysmith/src/transaction/index.ts b/packages/keysmith/src/transaction/index.ts deleted file mode 100644 index df3fb82..0000000 --- a/packages/keysmith/src/transaction/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { performSignEvmTransaction } from './perform-sign-transaction' -import { SignTransactionParams } from './domain' - -export const signTransaction = async ({ - series, - privateKey, - transactionRequest, -}: SignTransactionParams): Promise => { - console.log('signTransaction::transactionRequest to sign', transactionRequest) - - switch (series.toLowerCase()) { - case 'avax': - case 'bsc': - case 'matic': - case 'eth': { - return await performSignEvmTransaction(privateKey, transactionRequest) - } - case 'ltc': - case 'bch': - case 'btc': - case 'fil': - case 'dot': { - throw new Error('Not implemented yet') - } - default: { - throw new Error('Unsupported series') - } - } -} - -export default { - signTransaction, -} \ No newline at end of file diff --git a/packages/keysmith/src/transaction/perform-sign-transaction.ts b/packages/keysmith/src/transaction/perform-sign-transaction.ts deleted file mode 100644 index ef0c6b3..0000000 --- a/packages/keysmith/src/transaction/perform-sign-transaction.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ethers } from 'ethers' - -import { TransactionRequest } from './domain' - -export const performSignEvmTransaction = async ( - privateKey: string, - transactionRequest: TransactionRequest -): Promise => { - let wallet - try { - wallet = new ethers.Wallet(privateKey) - } catch (error) { - throw new Error('Invalid privateKey provided') - } - - return await wallet.signTransaction(transactionRequest) -} - -export default { - performSignEvmTransaction, -} \ No newline at end of file diff --git a/packages/keysmith/src/types.ts b/packages/keysmith/src/types.ts index 5002cdd..615ddb2 100644 --- a/packages/keysmith/src/types.ts +++ b/packages/keysmith/src/types.ts @@ -49,9 +49,4 @@ interface Me3Wallet { secret: string, } -interface WalletRaw { - walletAddress: string; - secretRaw: string; -} - -export { DriveName, ME3Config, RsaKey, Tokens, CommSecret, CommData, Me3Wallet, WalletRaw } +export { DriveName, ME3Config, RsaKey, Tokens, CommSecret, CommData, Me3Wallet } diff --git a/packages/keysmith/src/wallet.ts b/packages/keysmith/src/wallet.ts deleted file mode 100644 index d57a2f5..0000000 --- a/packages/keysmith/src/wallet.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { - cryptoIsReady, - cryptoWaitReady, - encodeAddress, - mnemonicToMiniSecret, - sr25519PairFromSeed, -} from '@polkadot/util-crypto' -import { u8aToHex } from '@polkadot/util' -import { ethers } from 'ethers' - -import { createFileCoinWallet } from './wallet/create-wallet/filecoin' -import { createBtcWallet } from './wallet/create-wallet/bitcoin' -import { getWalletName } from './wallet/create-wallet/common' - -export default async function createWallet(companyChain, mnemonic: string) { - const [series, chains] = companyChain - switch (series) { - case 'btc': - case 'ltc': - case 'bch': - return createBtcWallet(series, mnemonic) - - case 'eth': { - return chains.map(c => { - const wallet = ethers.Wallet.fromMnemonic(mnemonic, c.path) - return { - walletAddress: wallet.address, - secretRaw: wallet.privateKey, - chainName: c.name, - walletName: getWalletName(c.description), - } - }) - } - case 'dot': { - if (!cryptoIsReady()) { - await cryptoWaitReady() - } - const mini = mnemonicToMiniSecret(mnemonic) - const { publicKey, secretKey } = sr25519PairFromSeed(mini) - const walletAddress = encodeAddress(publicKey) - const secretRaw = u8aToHex(secretKey) - - return chains.map(c => { - return { - walletAddress, - secretRaw, - chainName: c.name, - walletName: getWalletName(c.description), - } - }) - } - case 'fil': - case 'filtest': { - return createFileCoinWallet(chains, mnemonic) - } - default: - break - } - return undefined -} - diff --git a/packages/keysmith/src/wallet/create-wallet/bitcoin.ts b/packages/keysmith/src/wallet/create-wallet/bitcoin.ts deleted file mode 100644 index 59edb9a..0000000 --- a/packages/keysmith/src/wallet/create-wallet/bitcoin.ts +++ /dev/null @@ -1,37 +0,0 @@ -import _ from 'lodash' -import { getWalletName } from './common' - -export const createBtcWallet = (chains: [any], mnemonic: string) => _.chain(chains) - .map(c => { - const generator = getGenerator(c.series) - if (_.isEmpty(generator)) { - return undefined - } - - const value = Buffer.from(mnemonic, 'utf8') - const hash = generator.crypto.Hash.sha256(value) - const bn = generator.crypto.BN.fromBuffer(hash) - const privateKey = new generator.PrivateKey(bn) - return { - walletAddress: privateKey.toAddress().toString(), - secretRaw: privateKey.toString(), - walletName: getWalletName(c.description), - chainName: c.name, - } - }) - .compact() - .value() - -const getGenerator = (series: string) => { - switch (_.toLower(series)) { - case 'btc': - return require('bitcore-lib') - case 'ltc': - return require('bitcore-lib-ltc') - case 'bch': - return require('bitcore-lib-cash') - default: - break - } - return undefined -} \ No newline at end of file diff --git a/packages/keysmith/src/wallet/create-wallet/filecoin.ts b/packages/keysmith/src/wallet/create-wallet/filecoin.ts deleted file mode 100644 index c4d6f14..0000000 --- a/packages/keysmith/src/wallet/create-wallet/filecoin.ts +++ /dev/null @@ -1,19 +0,0 @@ - -import _ from 'lodash' -import * as signer from '@zondax/filecoin-signing-tools' -import { getWalletName } from './common' - -export const createFileCoinWallet = (chains: [any], mnemonic: string) => chains.map(c => { - const key = signer.keyDerive( - mnemonic, - c.path, - _.toLower(c.name) === 'fil' ? 'mainnet' : 'testnet' - ) - - return { - walletAddress: key.address, - secretRaw: key.private_base64, - walletName: getWalletName(c.description), - chainName: c.name, - } -}) \ No newline at end of file diff --git a/packages/keysmith/test/chains/solana.ts b/packages/keysmith/test/chains/solana.ts index 06a4363..ae61c8c 100644 --- a/packages/keysmith/test/chains/solana.ts +++ b/packages/keysmith/test/chains/solana.ts @@ -6,7 +6,7 @@ import { PublicKey, SystemProgram, Transaction } from '@solana/web3.js' import { v2 } from '../../src/safeV2' import SolanaContext from '../../src/chains/solana/context' -import { IChainContext } from '../../src/chains/common/context' +import { IChainContext } from '../../src/chains/_share_/context' import { mockGetChainListResponse } from '../fixtures/me3-get-chain-list' import { ALICE } from '../fixtures/configs' import { Me3Wallet } from '../../src/types' From 059a9c77e05a69bc6a8668cc0242a03168372c54 Mon Sep 17 00:00:00 2001 From: Luiz Zheng Date: Wed, 29 Mar 2023 11:09:03 +0700 Subject: [PATCH 9/9] unit test refactored --- .../keysmith/src/chains/solana/context.ts | 10 +- packages/keysmith/test/chains/ethereum.ts | 51 +++ packages/keysmith/test/chains/file.ts | 37 ++ packages/keysmith/test/chains/solana.ts | 14 +- .../test/fixtures/me3-get-chain-list.ts | 30 +- packages/keysmith/test/fixtures/safe.ts | 352 +++++++++--------- .../perform-sign-transaction.test.ts | 34 -- .../test/transaction/transaction.test.ts | 51 --- .../wallet/create-wallet-filecoin.test.ts | 32 -- 9 files changed, 308 insertions(+), 303 deletions(-) create mode 100644 packages/keysmith/test/chains/ethereum.ts create mode 100644 packages/keysmith/test/chains/file.ts delete mode 100644 packages/keysmith/test/transaction/perform-sign-transaction.test.ts delete mode 100644 packages/keysmith/test/transaction/transaction.test.ts delete mode 100644 packages/keysmith/test/wallet/create-wallet-filecoin.test.ts diff --git a/packages/keysmith/src/chains/solana/context.ts b/packages/keysmith/src/chains/solana/context.ts index f1e3834..b9118e5 100644 --- a/packages/keysmith/src/chains/solana/context.ts +++ b/packages/keysmith/src/chains/solana/context.ts @@ -1,13 +1,18 @@ import _ from 'lodash' import * as bip39 from 'bip39' import * as bs58 from 'bs58' -import { Connection, Keypair, PublicKey, Transaction } from '@solana/web3.js' +import { clusterApiUrl, Connection, Keypair, PublicKey, Transaction } from '@solana/web3.js' import { IChainContext } from '../_share_/context' import { Me3Wallet } from '../../types' import { WalletCipher } from '../../safeV2/v2' import { getWalletName } from '../_share_/functions' +const RpcEndpoint = { + 'sol': 'mainnet-beta', + 'soldev': 'devnet', + 'soltest': 'testnet', +} export class SolanaContext implements IChainContext { readonly series: string @@ -40,7 +45,8 @@ export class SolanaContext implements IChainContext { pkDecipher: (pk: string) => string ): Promise { if (_.isEmpty(tx.recentBlockhash) || _.isNil(tx.lastValidBlockHeight)) { - const solConn = new Connection(mainChain.node) + const rpc = mainChain.node ?? clusterApiUrl(RpcEndpoint[_.toLower(wallet.chainName)]) + const solConn = new Connection(rpc) const lastHash = await solConn.getLatestBlockhash('confirmed') tx.recentBlockhash = lastHash.blockhash tx.lastValidBlockHeight = lastHash.lastValidBlockHeight diff --git a/packages/keysmith/test/chains/ethereum.ts b/packages/keysmith/test/chains/ethereum.ts new file mode 100644 index 0000000..dd99aef --- /dev/null +++ b/packages/keysmith/test/chains/ethereum.ts @@ -0,0 +1,51 @@ +import _ from 'lodash' +import * as bip39 from 'bip39' +import { describe } from 'mocha' +import { expect } from 'chai' +import { PublicKey, SystemProgram, Transaction } from '@solana/web3.js' + +import { v2 } from '../../src/safeV2' +import { EvmContext, IChainContext, SolanaContext } from '../../src/chains' +import { mockGetChainListResponse } from '../fixtures/me3-get-chain-list' +import { ALICE } from '../fixtures/configs' +import { Me3Wallet } from '../../src/types' +import { utils } from 'ethers' + +const SERIES = 'eth' +describe('Evm context testing', () => { + let ethCtx: IChainContext + let wallets: Me3Wallet[] + let chainMap + + before(function () { + ethCtx = new EvmContext(SERIES) + }) + + it('EvmContext::createWallet', async function () { + const mnemonic = bip39.generateMnemonic() + + chainMap = _.groupBy( + mockGetChainListResponse.data, + it => _.toLower(it.series) + ) + + const [cipher] = v2.getWalletCiphers(ALICE) + const size = chainMap[SERIES].length + wallets = await ethCtx.createWallet(chainMap[SERIES], mnemonic, cipher) + + expect(wallets.length).equal(size) + }) + + it('EvmContext::signTx', async function () { + const [, decipher] = v2.getWalletCiphers(ALICE) + + const tx = { + to: '0x8ba1f109551bD432803012645Ac136ddd64DBA72', + value: utils.parseEther('1.0'), + } + + const found = _.find(chainMap[ethCtx.series], c => c.name === wallets[0].chainName) + const rawTx = await ethCtx.signTx(found, wallets[0], tx, decipher) + expect(rawTx).to.not.be.null + }) +}) \ No newline at end of file diff --git a/packages/keysmith/test/chains/file.ts b/packages/keysmith/test/chains/file.ts new file mode 100644 index 0000000..ddd618d --- /dev/null +++ b/packages/keysmith/test/chains/file.ts @@ -0,0 +1,37 @@ +import _ from 'lodash' +import * as bip39 from 'bip39' +import { describe } from 'mocha' +import { expect } from 'chai' +import { PublicKey, SystemProgram, Transaction } from '@solana/web3.js' + +import { v2 } from '../../src/safeV2' +import { FileContext, IChainContext, SolanaContext } from '../../src/chains' +import { mockGetChainListResponse } from '../fixtures/me3-get-chain-list' +import { ALICE } from '../fixtures/configs' +import { Me3Wallet } from '../../src/types' +import { utils } from 'ethers' + +const SERIES = 'fil' +describe('File context testing', () => { + let fileCtx: IChainContext + let wallets: Me3Wallet[] + let chainMap + + before(function () { + fileCtx = new FileContext(SERIES) + }) + + it('FileContext::createWallet', async function () { + const mnemonic = bip39.generateMnemonic() + + chainMap = _.groupBy( + mockGetChainListResponse.data, + it => _.toLower(it.series) + ) + const size = chainMap[SERIES].length + const [cipher] = v2.getWalletCiphers(ALICE) + wallets = await fileCtx.createWallet(chainMap[SERIES], mnemonic, cipher) + + expect(wallets.length).equal(size) + }) +}) \ No newline at end of file diff --git a/packages/keysmith/test/chains/solana.ts b/packages/keysmith/test/chains/solana.ts index ae61c8c..69b0c3a 100644 --- a/packages/keysmith/test/chains/solana.ts +++ b/packages/keysmith/test/chains/solana.ts @@ -5,8 +5,7 @@ import { expect } from 'chai' import { PublicKey, SystemProgram, Transaction } from '@solana/web3.js' import { v2 } from '../../src/safeV2' -import SolanaContext from '../../src/chains/solana/context' -import { IChainContext } from '../../src/chains/_share_/context' +import { IChainContext, SolanaContext } from '../../src/chains' import { mockGetChainListResponse } from '../fixtures/me3-get-chain-list' import { ALICE } from '../fixtures/configs' import { Me3Wallet } from '../../src/types' @@ -15,6 +14,7 @@ const SERIES = 'sol' describe('Solana context testing', () => { let solanaCtx: IChainContext let wallets: Me3Wallet[] + let chainMap before(function () { solanaCtx = new SolanaContext(SERIES) @@ -23,15 +23,15 @@ describe('Solana context testing', () => { it('SolanaContext::createWallet', async function () { const mnemonic = bip39.generateMnemonic() - const chainMap = _.groupBy( + chainMap = _.groupBy( mockGetChainListResponse.data, it => _.toLower(it.series) ) - + const size = chainMap[SERIES].length const [cipher] = v2.getWalletCiphers(ALICE) wallets = await solanaCtx.createWallet(chainMap[SERIES], mnemonic, cipher) - expect(wallets.length).equal(2) + expect(wallets.length).equal(size) }) it('SolanaContext::signTx', async function () { @@ -51,7 +51,9 @@ describe('Solana context testing', () => { ) // We can add more instructions here } - const rawTx = await solanaCtx.signTx(wallets[0], tx, decipher) + + const found = _.find(chainMap[solanaCtx.series], c => c.name === wallets[0].chainName) + const rawTx = await solanaCtx.signTx(found, wallets[0], tx, decipher) expect(rawTx).to.not.be.null }) }) \ No newline at end of file diff --git a/packages/keysmith/test/fixtures/me3-get-chain-list.ts b/packages/keysmith/test/fixtures/me3-get-chain-list.ts index 25a63c2..88da94b 100644 --- a/packages/keysmith/test/fixtures/me3-get-chain-list.ts +++ b/packages/keysmith/test/fixtures/me3-get-chain-list.ts @@ -186,7 +186,7 @@ export const mockGetChainListResponse = { 'symbolIcon': 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png', 'description': 'SolanaMainBeta', 'chainId': 43114, - 'node': 'https://api.tatum.io/v3/blockchain/node/solana-mainnet/d93807e0-1006-4db6-a4fe-681bb81eccdb_100', + 'node': 'https://api.mainnet-beta.solana.com', 'series': 'SOL', 'hdCoinId': null, 'path': 'm/44\'/60\'/0\'/0/', @@ -211,7 +211,7 @@ export const mockGetChainListResponse = { 'symbolIcon': 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png', 'description': 'SolanaDevNet', 'chainId': 43114, - 'node': 'https://api.tatum.io/v3/blockchain/node/solana-devnet/a1f30291-a820-482e-ab19-ee3403f80383_100', + 'node': 'https://api.devnet.solana.com', 'series': 'SOL', 'hdCoinId': null, 'path': 'm/44\'/60\'/0\'/0/', @@ -229,5 +229,31 @@ export const mockGetChainListResponse = { 'symbolRate': 17.94, 'change': '-10.96622', }, + { + 'id': 11, + 'name': 'FILTest', + 'symbol': 'tFIL', + 'symbolIcon': 'https\n' + + '://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220401/53e0e61d3c8845c4a0b15da2c8809ac2.png', + 'description': 'FileCoinTest', + 'chainId': 461, + 'node': 'https://api.calibration.node.glif.io/rpc/v0', + 'series': 'FIL', + 'hdCoinId': null, + 'path': 'm/44\'/461\'/0\'/0/', + 'icon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220401/e141a6370f244ebbb5f388e0a9caaba0.png', + 'activeIcon': 'https://hicoinvip.oss-cn-beijing.aliyuncs.com/saas/20220401/c434dc8d4b8b40d2ad933363f63e5ff6.png', + 'sort': 22, + 'state': 1, + 'companyId': 2000, + 'txUrl': 'https://calibration.filscan.io/tipset/pool-message-detail?cid=', + 'supportNft': 0, + 'supportDapp': 0, + 'ctime': 1653471985000, + 'mtime': 1673818036000, + 'currency': 'USD', + 'symbolRate': 17.94, + 'change': '-10.96622', + }, ], } \ No newline at end of file diff --git a/packages/keysmith/test/fixtures/safe.ts b/packages/keysmith/test/fixtures/safe.ts index b54f565..5344dcf 100644 --- a/packages/keysmith/test/fixtures/safe.ts +++ b/packages/keysmith/test/fixtures/safe.ts @@ -1,177 +1,177 @@ export const AES_PWD = 'b7f925cf-eb3d-4587-b81b-a17b212cd61d', - AES_SALT = '3990611c-f057-4c25-bde6-4fe932161a5d', - BIG_JSON = { - 'name': 'KyberSwap Token List Arbitrum', - 'keywords': ['dmmexchange', 'kyberswap'], - 'timestamp': '2022-06-20T00:00:00+00:00', - 'logoURI': 'https://kyberswap.com/favicon.png', - 'tokens': [ - { - 'chainId': 42161, - 'address': '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - '_scan': 'https://arbiscan.io/token/0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - 'symbol': 'USDC', - 'name': 'USDC', - 'decimals': 6, - 'logoURI': 'https://assets.coingecko.com/coins/images/6319/large/USD_Coin_icon.png', - }, - { - 'chainId': 42161, - 'address': '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', - '_scan': 'https://arbiscan.io/token/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', - 'symbol': 'USDT', - 'name': 'USDT', - 'decimals': 6, - 'logoURI': 'https://coin.top/production/logo/usdtlogo.png', - }, - { - 'chainId': 42161, - 'address': '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', - '_scan': 'https://arbiscan.io/token/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', - 'symbol': 'DAI', - 'name': 'DAI', - 'decimals': 18, - 'logoURI': 'https://assets.coingecko.com/coins/images/9956/large/dai-multi-collateral-mcd.png', - }, - { - 'chainId': 42161, - 'address': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', - '_scan': 'https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', - 'symbol': 'WETH', - 'name': 'Wrapped Ether', - 'decimals': 18, - 'logoURI': 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png', - }, - { - 'chainId': 42161, - 'address': '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', - '_scan': 'https://arbiscan.io/token/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', - 'symbol': 'WBTC', - 'name': 'WBTC', - 'decimals': 8, - 'logoURI': 'https://assets.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png', - }, - { - 'chainId': 42161, - 'address': '0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A', - '_scan': 'https://arbiscan.io/token/0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A', - 'symbol': 'MIM', - 'name': 'Magic Internet Money', - 'decimals': 18, - 'logoURI': 'https://s2.coinmarketcap.com/static/img/coins/64x64/162.png', - }, - { - 'chainId': 42161, - 'address': '0x3F56e0c36d275367b8C502090EDF38289b3dEa0d', - '_scan': 'https://arbiscan.io/token/0x3F56e0c36d275367b8C502090EDF38289b3dEa0d', - 'decimals': 18, - 'name': 'MAI', - 'symbol': 'MAI', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/MAI.svg', - }, - { - 'chainId': 42161, - 'address': '0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7', - '_scan': 'https://arbiscan.io/token/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7', - 'decimals': 18, - 'name': 'Frax Share', - 'symbol': 'FXS', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/FXS.svg', - }, - { - 'chainId': 42161, - 'address': '0x080f6aed32fc474dd5717105dba5ea57268f46eb', - '_scan': 'https://arbiscan.io/token/0x080f6aed32fc474dd5717105dba5ea57268f46eb', - 'decimals': 18, - 'name': 'Synapse', - 'symbol': 'SYN', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/SYN.svg', - }, - { - 'chainId': 42161, - 'address': '0x319f865b287fcc10b30d8ce6144e8b6d1b476999', - '_scan': 'https://arbiscan.io/token/0x319f865b287fcc10b30d8ce6144e8b6d1b476999', - 'decimals': 18, - 'name': 'Cartesi', - 'symbol': 'CTSI', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/CTSI.png', - }, - { - 'chainId': 42161, - 'address': '0x9fb9a33956351cf4fa040f65a13b835a3c8764e3', - '_scan': 'https://arbiscan.io/token/0x9fb9a33956351cf4fa040f65a13b835a3c8764e3', - 'decimals': 18, - 'name': 'Multchain', - 'symbol': 'MULTI', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/MULTI.png', - }, - { - 'chainId': 42161, - 'address': '0x6694340fc020c5e6b96567843da2df01b2ce1eb6', - '_scan': 'https://arbiscan.io/token/0x6694340fc020c5e6b96567843da2df01b2ce1eb6', - 'decimals': 18, - 'name': 'Stargate Finance', - 'symbol': 'STG', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/STG.svg', - }, - { - 'chainId': 42161, - 'address': '0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae', - '_scan': 'https://arbiscan.io/token/0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae', - 'decimals': 18, - 'name': 'Beefy.Finance', - 'symbol': 'BIFI', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/BIFI.png', - }, - { - 'chainId': 42161, - 'address': '0x68ead55c258d6fa5e46d67fc90f53211eab885be', - '_scan': 'https://arbiscan.io/token/0x68ead55c258d6fa5e46d67fc90f53211eab885be', - 'decimals': 18, - 'name': 'Popcorn', - 'symbol': 'POP', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/POP.png', - }, - { - 'chainId': 42161, - 'address': '0xd74f5255d557944cf7dd0e45ff521520002d5748', - '_scan': 'https://arbiscan.io/token/0xd74f5255d557944cf7dd0e45ff521520002d5748', - 'decimals': 18, - 'name': 'Sperax USD', - 'symbol': 'USDS', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/USDS.svg', - }, - { - 'chainId': 42161, - 'address': '0xee9801669c6138e84bd50deb500827b776777d28', - '_scan': 'https://arbiscan.io/token/0xee9801669c6138e84bd50deb500827b776777d28', - 'decimals': 18, - 'name': 'O3 Swap', - 'symbol': 'O3', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/O3.png', - }, - { - 'chainId': 42161, - 'address': '0x21e60ee73f17ac0a411ae5d690f908c3ed66fe12', - '_scan': 'https://arbiscan.io/token/0x21e60ee73f17ac0a411ae5d690f908c3ed66fe12', - 'decimals': 18, - 'name': 'Deri Protocol', - 'symbol': 'DERI', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/DERI.svg', - }, - { - 'chainId': 42161, - 'address': '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a', - '_scan': 'https://arbiscan.io/token/0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a', - 'decimals': 18, - 'name': 'GMX', - 'symbol': 'GMX', - 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/GMX.svg', - }, - ], - 'version': { - 'major': 1, - 'minor': 0, - 'patch': 1, - }, - } \ No newline at end of file + AES_SALT = '3990611c-f057-4c25-bde6-4fe932161a5d', + BIG_JSON = { + 'name': 'KyberSwap Token List Arbitrum', + 'keywords': ['dmmexchange', 'kyberswap'], + 'timestamp': '2022-06-20T00:00:00+00:00', + 'logoURI': 'https://kyberswap.com/favicon.png', + 'tokens': [ + { + 'chainId': 42161, + 'address': '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + '_scan': 'https://arbiscan.io/token/0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + 'symbol': 'USDC', + 'name': 'USDC', + 'decimals': 6, + 'logoURI': 'https://assets.coingecko.com/coins/images/6319/large/USD_Coin_icon.png', + }, + { + 'chainId': 42161, + 'address': '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', + '_scan': 'https://arbiscan.io/token/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', + 'symbol': 'USDT', + 'name': 'USDT', + 'decimals': 6, + 'logoURI': 'https://coin.top/production/logo/usdtlogo.png', + }, + { + 'chainId': 42161, + 'address': '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', + '_scan': 'https://arbiscan.io/token/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', + 'symbol': 'DAI', + 'name': 'DAI', + 'decimals': 18, + 'logoURI': 'https://assets.coingecko.com/coins/images/9956/large/dai-multi-collateral-mcd.png', + }, + { + 'chainId': 42161, + 'address': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + '_scan': 'https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1', + 'symbol': 'WETH', + 'name': 'Wrapped Ether', + 'decimals': 18, + 'logoURI': 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png', + }, + { + 'chainId': 42161, + 'address': '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', + '_scan': 'https://arbiscan.io/token/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f', + 'symbol': 'WBTC', + 'name': 'WBTC', + 'decimals': 8, + 'logoURI': 'https://assets.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png', + }, + { + 'chainId': 42161, + 'address': '0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A', + '_scan': 'https://arbiscan.io/token/0xFEa7a6a0B346362BF88A9e4A88416B77a57D6c2A', + 'symbol': 'MIM', + 'name': 'Magic Internet Money', + 'decimals': 18, + 'logoURI': 'https://s2.coinmarketcap.com/static/img/coins/64x64/162.png', + }, + { + 'chainId': 42161, + 'address': '0x3F56e0c36d275367b8C502090EDF38289b3dEa0d', + '_scan': 'https://arbiscan.io/token/0x3F56e0c36d275367b8C502090EDF38289b3dEa0d', + 'decimals': 18, + 'name': 'MAI', + 'symbol': 'MAI', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/MAI.svg', + }, + { + 'chainId': 42161, + 'address': '0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7', + '_scan': 'https://arbiscan.io/token/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7', + 'decimals': 18, + 'name': 'Frax Share', + 'symbol': 'FXS', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/FXS.svg', + }, + { + 'chainId': 42161, + 'address': '0x080f6aed32fc474dd5717105dba5ea57268f46eb', + '_scan': 'https://arbiscan.io/token/0x080f6aed32fc474dd5717105dba5ea57268f46eb', + 'decimals': 18, + 'name': 'Synapse', + 'symbol': 'SYN', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/SYN.svg', + }, + { + 'chainId': 42161, + 'address': '0x319f865b287fcc10b30d8ce6144e8b6d1b476999', + '_scan': 'https://arbiscan.io/token/0x319f865b287fcc10b30d8ce6144e8b6d1b476999', + 'decimals': 18, + 'name': 'Cartesi', + 'symbol': 'CTSI', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/CTSI.png', + }, + { + 'chainId': 42161, + 'address': '0x9fb9a33956351cf4fa040f65a13b835a3c8764e3', + '_scan': 'https://arbiscan.io/token/0x9fb9a33956351cf4fa040f65a13b835a3c8764e3', + 'decimals': 18, + 'name': 'Multchain', + 'symbol': 'MULTI', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/MULTI.png', + }, + { + 'chainId': 42161, + 'address': '0x6694340fc020c5e6b96567843da2df01b2ce1eb6', + '_scan': 'https://arbiscan.io/token/0x6694340fc020c5e6b96567843da2df01b2ce1eb6', + 'decimals': 18, + 'name': 'Stargate Finance', + 'symbol': 'STG', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/STG.svg', + }, + { + 'chainId': 42161, + 'address': '0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae', + '_scan': 'https://arbiscan.io/token/0x99c409e5f62e4bd2ac142f17cafb6810b8f0baae', + 'decimals': 18, + 'name': 'Beefy.Finance', + 'symbol': 'BIFI', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/BIFI.png', + }, + { + 'chainId': 42161, + 'address': '0x68ead55c258d6fa5e46d67fc90f53211eab885be', + '_scan': 'https://arbiscan.io/token/0x68ead55c258d6fa5e46d67fc90f53211eab885be', + 'decimals': 18, + 'name': 'Popcorn', + 'symbol': 'POP', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/POP.png', + }, + { + 'chainId': 42161, + 'address': '0xd74f5255d557944cf7dd0e45ff521520002d5748', + '_scan': 'https://arbiscan.io/token/0xd74f5255d557944cf7dd0e45ff521520002d5748', + 'decimals': 18, + 'name': 'Sperax USD', + 'symbol': 'USDS', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/USDS.svg', + }, + { + 'chainId': 42161, + 'address': '0xee9801669c6138e84bd50deb500827b776777d28', + '_scan': 'https://arbiscan.io/token/0xee9801669c6138e84bd50deb500827b776777d28', + 'decimals': 18, + 'name': 'O3 Swap', + 'symbol': 'O3', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/O3.png', + }, + { + 'chainId': 42161, + 'address': '0x21e60ee73f17ac0a411ae5d690f908c3ed66fe12', + '_scan': 'https://arbiscan.io/token/0x21e60ee73f17ac0a411ae5d690f908c3ed66fe12', + 'decimals': 18, + 'name': 'Deri Protocol', + 'symbol': 'DERI', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/DERI.svg', + }, + { + 'chainId': 42161, + 'address': '0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a', + '_scan': 'https://arbiscan.io/token/0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a', + 'decimals': 18, + 'name': 'GMX', + 'symbol': 'GMX', + 'logoURI': 'https://raw.githubusercontent.com/KyberNetwork/ks-assets/main/img/token/GMX.svg', + }, + ], + 'version': { + 'major': 1, + 'minor': 0, + 'patch': 1, + }, + } \ No newline at end of file diff --git a/packages/keysmith/test/transaction/perform-sign-transaction.test.ts b/packages/keysmith/test/transaction/perform-sign-transaction.test.ts deleted file mode 100644 index 9202ae8..0000000 --- a/packages/keysmith/test/transaction/perform-sign-transaction.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { utils } from 'ethers' -import chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import { describe } from 'mocha' - -import { performSignEvmTransaction } from '../../src/transaction/perform-sign-transaction' - -chai.use(chaiAsPromised) -const { expect } = chai - -describe('performSignEvmTransaction unit test', () => { - it('Should throw when provided invalid privateKey', async () => { - const privateKey = 'invalid-priKey' - const tx = { - to: '0x8ba1f109551bD432803012645Ac136ddd64DBA72', - value: utils.parseEther('1.0'), - } - - await expect(performSignEvmTransaction(privateKey, tx)).to.eventually.be.rejectedWith('Invalid privateKey provided') - }) - - it('Should return signed tx when provided a valid privateKey and tx', async () => { - // Examples derived from https://docs.ethers.org/v5/api/signer/#Wallet - const privateKey = '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db' - const tx = { - to: '0x8ba1f109551bD432803012645Ac136ddd64DBA72', - value: utils.parseEther('1.0'), - } - - const signed = await performSignEvmTransaction(privateKey, tx) - - expect(signed).to.deep.equal('0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc') - }) -}) \ No newline at end of file diff --git a/packages/keysmith/test/transaction/transaction.test.ts b/packages/keysmith/test/transaction/transaction.test.ts deleted file mode 100644 index 722ca71..0000000 --- a/packages/keysmith/test/transaction/transaction.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import { describe } from 'mocha' - -import { signTransaction } from '../../src/transaction' -import { utils } from 'ethers' - -chai.use(chaiAsPromised) -const { expect } = chai - -// valid reusable fixtures -const privateKey = '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db' -const tx = { - to: '0x8ba1f109551bD432803012645Ac136ddd64DBA72', - value: utils.parseEther('1.0'), -} - -describe('signTransaction unit test', () => { - it('Should throw when provided unsupported series', async () => { - const invalidSeries = 'zil' - - await expect( - signTransaction({ - series: invalidSeries, - privateKey, - transactionRequest: tx, - })).to.eventually.be.rejectedWith('Unsupported series') - }); - - ['btc', 'ltc', 'fil', 'dot', 'bch'].forEach((series) => { - it(`Should throw when provided series that is not implemented yet - series=${series}`, async () => { - await expect( - signTransaction({ - series, - privateKey, - transactionRequest: {}, - }) - ).to.eventually.be.rejectedWith('Not implemented yet') - }) - }) - - it('Should return signed transaction when provided an evm (eth) series, valid privateKey and tx', async () => { - const signedTx = await signTransaction({ - series: 'eth', - privateKey, - transactionRequest: tx, - }) - - expect(signedTx).to.deep.equal('0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc') - }) -}) \ No newline at end of file diff --git a/packages/keysmith/test/wallet/create-wallet-filecoin.test.ts b/packages/keysmith/test/wallet/create-wallet-filecoin.test.ts deleted file mode 100644 index 6da5a96..0000000 --- a/packages/keysmith/test/wallet/create-wallet-filecoin.test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import * as chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import { describe } from 'mocha' - -import { createFileCoinWallet } from '../../src/wallet/create-wallet/filecoin' - -chai.use(chaiAsPromised) -const { expect } = chai - -describe('createWallet - filecoin', () => { - const mnemonic = 'equip will roof matter pink blind book anxiety banner elbow sun young' - - it('Should return walletAddress and secretRaw when provided mnemonic', async () => { - - // @zondax/filecoin-signing-tools - const newLib = createFileCoinWallet([ - { - series: 'fil', - name: 'FIL', - walletName: 'TestWallet', - }, - ], mnemonic) - console.info('output >', newLib) - - expect(newLib).to.deep.equal([{ - chainName: 'FIL', - walletName: 'TestWallet', - secretRaw: 'QNRGtRs1VdeqlXs8btpxrmEtzKOYybtfTcqqsigfBsA=', - walletAddress: 'f1trmstlgfyfpo6ineunloaeygjzpcfvq2dvbqtzi', - }]) - }) -}) \ No newline at end of file