@qevm/json-wallets
Advanced tools
@@ -1,2 +0,2 @@ | ||
| export declare const version = "json-wallets/5.7.0"; | ||
| export declare const version = "json-wallets/5.7.3"; | ||
| //# sourceMappingURL=_version.d.ts.map |
+1
-1
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.version = void 0; | ||
| exports.version = "json-wallets/5.7.0"; | ||
| exports.version = "json-wallets/5.7.3"; | ||
| //# sourceMappingURL=_version.js.map |
| import { ExternallyOwnedAccount } from "@qevm/abstract-signer"; | ||
| import { Bytes } from "@qevm/bytes"; | ||
| import { Description } from "@ethersproject/properties"; | ||
| import { Description } from "@qevm/properties"; | ||
| export interface _CrowdsaleAccount { | ||
@@ -5,0 +5,0 @@ address: string; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"crowdsale.d.ts","sourceRoot":"","sources":["../src.ts/crowdsale.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAY,KAAK,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQxD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,mBAAmB,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,iBAAiB,CAAE,YAAW,sBAAsB;IAClG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IAEtC,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB;CAG5D;AAGD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,sBAAsB,CA0CtF"} | ||
| {"version":3,"file":"crowdsale.d.ts","sourceRoot":"","sources":["../src.ts/crowdsale.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAY,KAAK,EAAE,MAAM,aAAa,CAAC;AAI9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,mBAAmB,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,gBACT,SAAQ,WAAW,CAAC,iBAAiB,CACrC,YAAW,sBAAsB;IAEjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IAEtC,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,gBAAgB;CAG5D;AAGD,wBAAgB,OAAO,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,KAAK,GAAG,MAAM,GACzB,sBAAsB,CA+CxB"} |
+30
-50
| "use strict"; | ||
| var __extends = (this && this.__extends) || (function () { | ||
| var extendStatics = function (d, b) { | ||
| extendStatics = Object.setPrototypeOf || | ||
| ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
| function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
| return extendStatics(d, b); | ||
| }; | ||
| return function (d, b) { | ||
| if (typeof b !== "function" && b !== null) | ||
| throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
| extendStatics(d, b); | ||
| function __() { this.constructor = d; } | ||
| d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
| }; | ||
| })(); | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -23,50 +8,45 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| exports.decrypt = decrypt; | ||
| var aes_js_1 = __importDefault(require("aes-js")); | ||
| var address_1 = require("@qevm/address"); | ||
| var bytes_1 = require("@qevm/bytes"); | ||
| var keccak256_1 = require("@qevm/keccak256"); | ||
| var pbkdf2_1 = require("@qevm/pbkdf2"); | ||
| var strings_1 = require("@qevm/strings"); | ||
| var properties_1 = require("@ethersproject/properties"); | ||
| var logger_1 = require("@ethersproject/logger"); | ||
| var _version_1 = require("./_version"); | ||
| var logger = new logger_1.Logger(_version_1.version); | ||
| var utils_1 = require("./utils"); | ||
| var CrowdsaleAccount = /** @class */ (function (_super) { | ||
| __extends(CrowdsaleAccount, _super); | ||
| function CrowdsaleAccount() { | ||
| return _super !== null && _super.apply(this, arguments) || this; | ||
| const aes_js_1 = __importDefault(require("aes-js")); | ||
| const address_1 = require("@qevm/address"); | ||
| const bytes_1 = require("@qevm/bytes"); | ||
| const keccak256_1 = require("@qevm/keccak256"); | ||
| const pbkdf2_1 = require("@qevm/pbkdf2"); | ||
| const strings_1 = require("@qevm/strings"); | ||
| const properties_1 = require("@qevm/properties"); | ||
| const logger_1 = require("@qevm/logger"); | ||
| const _version_1 = require("./_version"); | ||
| const logger = new logger_1.Logger(_version_1.version); | ||
| const utils_1 = require("./utils"); | ||
| class CrowdsaleAccount extends properties_1.Description { | ||
| isCrowdsaleAccount(value) { | ||
| return !!(value && value._isCrowdsaleAccount); | ||
| } | ||
| CrowdsaleAccount.prototype.isCrowdsaleAccount = function (value) { | ||
| return !!(value && value._isCrowdsaleAccount); | ||
| }; | ||
| return CrowdsaleAccount; | ||
| }(properties_1.Description)); | ||
| } | ||
| exports.CrowdsaleAccount = CrowdsaleAccount; | ||
| // See: https://github.com/ethereum/pyethsaletool | ||
| function decrypt(json, password) { | ||
| //FIXME Finnish entire decrypt | ||
| //FIXME Finish entire decrypt | ||
| throw new Error("Decryption of crowdsale account not yet implemented"); | ||
| var data = JSON.parse(json); | ||
| const data = JSON.parse(json); | ||
| password = (0, utils_1.getPassword)(password); | ||
| // Ethereum Address | ||
| var ethaddr = (0, address_1.getAddress)((0, utils_1.searchPath)(data, "ethaddr")); | ||
| const ethaddr = (0, address_1.getAddress)((0, utils_1.searchPath)(data, "ethaddr")); | ||
| // Encrypted Seed | ||
| var encseed = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "encseed")); | ||
| if (!encseed || (encseed.length % 16) !== 0) { | ||
| const encseed = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "encseed")); | ||
| if (!encseed || encseed.length % 16 !== 0) { | ||
| logger.throwArgumentError("invalid encseed", "json", json); | ||
| } | ||
| var key = (0, bytes_1.arrayify)((0, pbkdf2_1.pbkdf2)(password, password, 2000, 32, "sha256")).slice(0, 16); | ||
| var iv = encseed.slice(0, 16); | ||
| var encryptedSeed = encseed.slice(16); | ||
| const key = (0, bytes_1.arrayify)((0, pbkdf2_1.pbkdf2)(password, password, 2000, 32, "sha256")).slice(0, 16); | ||
| const iv = encseed.slice(0, 16); | ||
| const encryptedSeed = encseed.slice(16); | ||
| // Decrypt the seed | ||
| var aesCbc = new aes_js_1.default.ModeOfOperation.cbc(key, iv); | ||
| var seed = aes_js_1.default.padding.pkcs7.strip((0, bytes_1.arrayify)(aesCbc.decrypt(encryptedSeed))); | ||
| const aesCbc = new aes_js_1.default.ModeOfOperation.cbc(key, iv); | ||
| const seed = aes_js_1.default.padding.pkcs7.strip((0, bytes_1.arrayify)(aesCbc.decrypt(encryptedSeed))); | ||
| // This wallet format is weird... Convert the binary encoded hex to a string. | ||
| var seedHex = ""; | ||
| for (var i = 0; i < seed.length; i++) { | ||
| let seedHex = ""; | ||
| for (let i = 0; i < seed.length; i++) { | ||
| seedHex += String.fromCharCode(seed[i]); | ||
| } | ||
| var seedHexBytes = (0, strings_1.toUtf8Bytes)(seedHex); | ||
| var privateKey = (0, keccak256_1.keccak256)(seedHexBytes); | ||
| const seedHexBytes = (0, strings_1.toUtf8Bytes)(seedHex); | ||
| const privateKey = (0, keccak256_1.keccak256)(seedHexBytes); | ||
| return new CrowdsaleAccount({ | ||
@@ -76,5 +56,5 @@ _isCrowdsaleAccount: true, | ||
| privateKey: privateKey, | ||
| publicKey: "" | ||
| publicKey: "", | ||
| }); | ||
| } | ||
| //# sourceMappingURL=crowdsale.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"crowdsale.js","sourceRoot":"","sources":["../src.ts/crowdsale.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;AAwCb,0BA0CC;AAhFD,kDAAyB;AAGzB,yCAA2C;AAC3C,qCAA8C;AAC9C,6CAA4C;AAC5C,uCAAsC;AACtC,yCAA4C;AAC5C,wDAAwD;AAExD,gDAA+C;AAC/C,uCAAqC;AACrC,IAAM,MAAM,GAAG,IAAI,eAAM,CAAC,kBAAO,CAAC,CAAC;AAEnC,iCAAiE;AAUjE;IAAsC,oCAA8B;IAApE;;IAWA,CAAC;IAHG,6CAAkB,GAAlB,UAAmB,KAAU;QACzB,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,CAAC;IACL,uBAAC;AAAD,CAAC,AAXD,CAAsC,wBAAW,GAWhD;AAXY,4CAAgB;AAa7B,iDAAiD;AACjD,SAAgB,OAAO,CAAC,IAAY,EAAE,QAAwB;IAC1D,8BAA8B;IAC9B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAEvE,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,QAAQ,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC;IAEjC,mBAAmB;IACnB,IAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAExD,iBAAiB;IACjB,IAAM,OAAO,GAAG,IAAA,qBAAa,EAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,IAAM,GAAG,GAAG,IAAA,gBAAQ,EAAC,IAAA,eAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElF,IAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,IAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAExC,mBAAmB;IACnB,IAAM,MAAM,GAAG,IAAI,gBAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpD,IAAM,IAAI,GAAG,gBAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAA,gBAAQ,EAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9E,6EAA6E;IAC7E,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,IAAM,YAAY,GAAG,IAAA,qBAAW,EAAC,OAAO,CAAC,CAAC;IAE1C,IAAM,UAAU,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;IAE3C,OAAO,IAAI,gBAAgB,CAAE;QACzB,mBAAmB,EAAE,IAAI;QACzB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,UAAU;QACtB,SAAS,EAAE,EAAE;KAChB,CAAC,CAAC;AACP,CAAC"} | ||
| {"version":3,"file":"crowdsale.js","sourceRoot":"","sources":["../src.ts/crowdsale.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AA2Cb,0BAkDC;AA3FD,oDAAyB;AAGzB,2CAA2C;AAC3C,uCAA8C;AAC9C,+CAA4C;AAC5C,yCAAsC;AACtC,2CAA4C;AAC5C,iDAA+C;AAE/C,yCAAsC;AACtC,yCAAqC;AACrC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,kBAAO,CAAC,CAAC;AAEnC,mCAAiE;AAUjE,MAAa,gBACT,SAAQ,wBAA8B;IAUtC,kBAAkB,CAAC,KAAU;QACzB,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,CAAC;CACJ;AAdD,4CAcC;AAED,iDAAiD;AACjD,SAAgB,OAAO,CACnB,IAAY,EACZ,QAAwB;IAExB,6BAA6B;IAC7B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,QAAQ,GAAG,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC;IAEjC,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAExD,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAA,qBAAa,EAAC,IAAA,kBAAU,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,gBAAQ,EAAC,IAAA,eAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CACtE,CAAC,EACD,EAAE,CACL,CAAC;IAEF,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAExC,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,gBAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,gBAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAChC,IAAA,gBAAQ,EAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAC1C,CAAC;IAEF,6EAA6E;IAC7E,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,qBAAW,EAAC,OAAO,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,IAAA,qBAAS,EAAC,YAAY,CAAC,CAAC;IAE3C,OAAO,IAAI,gBAAgB,CAAC;QACxB,mBAAmB,EAAE,IAAI;QACzB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,UAAU;QACtB,SAAS,EAAE,EAAE;KAChB,CAAC,CAAC;AACP,CAAC"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,WAAW,IAAI,mBAAmB,EAAE,OAAO,IAAI,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE1J,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAavI;AAED,iBAAS,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,sBAAsB,CAU7F;AAED,OAAO,EACH,gBAAgB,EAEhB,eAAe,EACf,mBAAmB,EACnB,eAAe,EAEf,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EAEpB,iBAAiB,EACjB,qBAAqB,EAErB,gBAAgB,EAChB,cAAc,GACjB,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,OAAO,IAAI,eAAe,EAC1B,WAAW,IAAI,mBAAmB,EAClC,OAAO,IAAI,eAAe,EAC1B,cAAc,EACd,gBAAgB,EACnB,MAAM,YAAY,CAAC;AAEpB,iBAAS,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,KAAK,GAAG,MAAM,EACxB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAiBjC;AAED,iBAAS,qBAAqB,CAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,KAAK,GAAG,MAAM,GACzB,sBAAsB,CAUxB;AAED,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,GACjB,CAAC"} |
+4
-4
@@ -6,9 +6,9 @@ "use strict"; | ||
| exports.decryptJsonWalletSync = decryptJsonWalletSync; | ||
| var crowdsale_1 = require("./crowdsale"); | ||
| const crowdsale_1 = require("./crowdsale"); | ||
| Object.defineProperty(exports, "decryptCrowdsale", { enumerable: true, get: function () { return crowdsale_1.decrypt; } }); | ||
| var inspect_1 = require("./inspect"); | ||
| const inspect_1 = require("./inspect"); | ||
| Object.defineProperty(exports, "getJsonWalletAddress", { enumerable: true, get: function () { return inspect_1.getJsonWalletAddress; } }); | ||
| Object.defineProperty(exports, "isCrowdsaleWallet", { enumerable: true, get: function () { return inspect_1.isCrowdsaleWallet; } }); | ||
| Object.defineProperty(exports, "isKeystoreWallet", { enumerable: true, get: function () { return inspect_1.isKeystoreWallet; } }); | ||
| var keystore_1 = require("./keystore"); | ||
| const keystore_1 = require("./keystore"); | ||
| Object.defineProperty(exports, "decryptKeystore", { enumerable: true, get: function () { return keystore_1.decrypt; } }); | ||
@@ -22,3 +22,3 @@ Object.defineProperty(exports, "decryptKeystoreSync", { enumerable: true, get: function () { return keystore_1.decryptSync; } }); | ||
| } | ||
| var account = (0, crowdsale_1.decrypt)(json, password); | ||
| const account = (0, crowdsale_1.decrypt)(json, password); | ||
| if (progressCallback) { | ||
@@ -25,0 +25,0 @@ progressCallback(1); |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AA+CT,8CAAiB;AACjB,sDAAqB;AA3CzB,yCAA0D;AAgCtD,iGAhCgB,mBAAgB,OAgChB;AA/BpB,qCAAsF;AAuClF,qGAvCK,8BAAoB,OAuCL;AAFpB,kGArC2B,2BAAiB,OAqC3B;AACjB,iGAtC8C,0BAAgB,OAsC9C;AArCpB,uCAA0J;AAgCtJ,gGAhCgB,kBAAe,OAgChB;AACf,oGAjCgD,sBAAmB,OAiChD;AACnB,gGAlCgF,kBAAe,OAkChF;AAhCnB,SAAS,iBAAiB,CAAC,IAAY,EAAE,QAAwB,EAAE,gBAAmC;IAClG,IAAI,IAAA,2BAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,gBAAgB,EAAE,CAAC;YAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9C,IAAM,OAAO,GAAG,IAAA,mBAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAChD,IAAI,gBAAgB,EAAE,CAAC;YAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,IAAA,0BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAA,kBAAe,EAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,QAAwB;IACjE,IAAI,IAAA,2BAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,mBAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,IAAA,0BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAA,sBAAmB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC3C,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAiET,8CAAiB;AACjB,sDAAqB;AA7DzB,2CAA0D;AAqDtD,iGArDgB,mBAAgB,OAqDhB;AApDpB,uCAImB;AAsDf,qGAzDA,8BAAoB,OAyDA;AAFpB,kGAtDA,2BAAiB,OAsDA;AACjB,iGAtDA,0BAAgB,OAsDA;AApDpB,yCAMoB;AA0ChB,gGA/CW,kBAAe,OA+CX;AACf,oGA/Ce,sBAAmB,OA+Cf;AACnB,gGA/CW,kBAAe,OA+CX;AA1CnB,SAAS,iBAAiB,CACtB,IAAY,EACZ,QAAwB,EACxB,gBAAmC;IAEnC,IAAI,IAAA,2BAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,gBAAgB,EAAE,CAAC;YACnB,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,mBAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,gBAAgB,EAAE,CAAC;YACnB,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,IAAA,0BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAA,kBAAe,EAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,qBAAqB,CAC1B,IAAY,EACZ,QAAwB;IAExB,IAAI,IAAA,2BAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAA,mBAAgB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,IAAA,0BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAA,sBAAmB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC3C,CAAC"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src.ts/inspect.ts"],"names":[],"mappings":"AAKA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYtD;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAczD"} | ||
| {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../src.ts/inspect.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAkBtD;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBzD"} |
+7
-5
@@ -6,5 +6,5 @@ "use strict"; | ||
| exports.getJsonWalletAddress = getJsonWalletAddress; | ||
| var address_1 = require("@qevm/address"); | ||
| const address_1 = require("@qevm/address"); | ||
| function isCrowdsaleWallet(json) { | ||
| var data = null; | ||
| let data = null; | ||
| try { | ||
@@ -16,6 +16,6 @@ data = JSON.parse(json); | ||
| } | ||
| return (data.encseed && data.ethaddr); | ||
| return data.encseed && data.ethaddr; | ||
| } | ||
| function isKeystoreWallet(json) { | ||
| var data = null; | ||
| let data = null; | ||
| try { | ||
@@ -27,3 +27,5 @@ data = JSON.parse(json); | ||
| } | ||
| if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) { | ||
| if (!data.version || | ||
| parseInt(data.version) !== data.version || | ||
| parseInt(data.version) !== 3) { | ||
| return false; | ||
@@ -30,0 +32,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src.ts/inspect.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,8CAOC;AAED,4CAYC;AAMD,oDAcC;AA5CD,yCAA2C;AAG3C,SAAgB,iBAAiB,CAAC,IAAY;IAC1C,IAAI,IAAI,GAAQ,IAAI,CAAC;IACrB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IAEjC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY;IACzC,IAAI,IAAI,GAAQ,IAAI,CAAC;IACrB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IAEjC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3F,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,6EAA6E;IAC7E,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,uDAAuD;AACvD,sEAAsE;AACtE,GAAG;AAEH,SAAgB,oBAAoB,CAAC,IAAY;IAC7C,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IACpC,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACD,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IACpC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"} | ||
| {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src.ts/inspect.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,8CASC;AAED,4CAkBC;AAMD,oDAkBC;AAvDD,2CAA2C;AAE3C,SAAgB,iBAAiB,CAAC,IAAY;IAC1C,IAAI,IAAI,GAAQ,IAAI,CAAC;IACrB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;AACxC,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY;IACzC,IAAI,IAAI,GAAQ,IAAI,CAAC;IACrB,IAAI,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IACI,CAAC,IAAI,CAAC,OAAO;QACb,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO;QACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAC9B,CAAC;QACC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,6EAA6E;IAC7E,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,uDAAuD;AACvD,sEAAsE;AACtE,GAAG;AAEH,SAAgB,oBAAoB,CAAC,IAAY;IAC7C,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACD,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"} |
| import { ExternallyOwnedAccount } from "@qevm/abstract-signer"; | ||
| import { Bytes, BytesLike } from "@qevm/bytes"; | ||
| import { Description } from "@ethersproject/properties"; | ||
| import { Description } from "@qevm/properties"; | ||
| export interface _KeystoreAccount { | ||
@@ -5,0 +5,0 @@ address: string; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../src.ts/keystore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAY,KAAK,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAiBxD,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kBAAkB,EAAE,OAAO,CAAC;CAC/B;AAED,qBAAa,eAAgB,SAAQ,WAAW,CAAC,gBAAgB,CAAE,YAAW,sBAAsB;IAChG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAErC,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,eAAe;CAG1D;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC1B,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACL,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACd,CAAA;CACH,CAAA;AAmID,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,eAAe,CAKnF;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAKnI;AAID,wBAAsB,OAAO,CAAC,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiJvK"} | ||
| {"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../src.ts/keystore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAY,KAAK,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAY/C,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kBAAkB,EAAE,OAAO,CAAC;CAC/B;AAED,qBAAa,eACT,SAAQ,WAAW,CAAC,gBAAgB,CACpC,YAAW,sBAAsB;IAEjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAErC,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,eAAe;CAG1D;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACL,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACL,CAAC;AAiNF,wBAAgB,WAAW,CACvB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,KAAK,GAAG,MAAM,GACzB,eAAe,CAKjB;AAED,wBAAsB,OAAO,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,KAAK,GAAG,MAAM,EACxB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,eAAe,CAAC,CAW1B;AAID,wBAAsB,OAAO,CACzB,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,KAAK,GAAG,MAAM,EACxB,OAAO,CAAC,EAAE,cAAc,EACxB,gBAAgB,CAAC,EAAE,gBAAgB,GACpC,OAAO,CAAC,MAAM,CAAC,CAgLjB"} |
+205
-270
| "use strict"; | ||
| var __extends = (this && this.__extends) || (function () { | ||
| var extendStatics = function (d, b) { | ||
| extendStatics = Object.setPrototypeOf || | ||
| ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
| function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
| return extendStatics(d, b); | ||
| }; | ||
| return function (d, b) { | ||
| if (typeof b !== "function" && b !== null) | ||
| throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
| extendStatics(d, b); | ||
| function __() { this.constructor = d; } | ||
| d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
| }; | ||
| })(); | ||
| 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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); | ||
| return g.next = verb(0), g["throw"] = verb(1), g["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) { | ||
@@ -61,37 +10,32 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| exports.encrypt = encrypt; | ||
| var aes_js_1 = __importDefault(require("aes-js")); | ||
| var scrypt_js_1 = __importDefault(require("scrypt-js")); | ||
| var bytes_1 = require("@qevm/bytes"); | ||
| var keccak256_1 = require("@qevm/keccak256"); | ||
| var strings_1 = require("@qevm/strings"); | ||
| var pbkdf2_1 = require("@qevm/pbkdf2"); | ||
| var random_1 = require("@qevm/random"); | ||
| var properties_1 = require("@ethersproject/properties"); | ||
| var transactions_1 = require("@qevm/transactions"); | ||
| var signing_key_1 = require("@qevm/signing-key"); | ||
| var utils_1 = require("./utils"); | ||
| var logger_1 = require("@ethersproject/logger"); | ||
| var _version_1 = require("./_version"); | ||
| var logger = new logger_1.Logger(_version_1.version); | ||
| var KeystoreAccount = /** @class */ (function (_super) { | ||
| __extends(KeystoreAccount, _super); | ||
| function KeystoreAccount() { | ||
| return _super !== null && _super.apply(this, arguments) || this; | ||
| const aes_js_1 = __importDefault(require("aes-js")); | ||
| const scrypt_js_1 = __importDefault(require("scrypt-js")); | ||
| const bytes_1 = require("@qevm/bytes"); | ||
| const keccak256_1 = require("@qevm/keccak256"); | ||
| const strings_1 = require("@qevm/strings"); | ||
| const pbkdf2_1 = require("@qevm/pbkdf2"); | ||
| const random_1 = require("@qevm/random"); | ||
| const properties_1 = require("@qevm/properties"); | ||
| const transactions_1 = require("@qevm/transactions"); | ||
| const signing_key_1 = require("@qevm/signing-key"); | ||
| const utils_1 = require("./utils"); | ||
| const logger_1 = require("@qevm/logger"); | ||
| const _version_1 = require("./_version"); | ||
| const logger = new logger_1.Logger(_version_1.version); | ||
| class KeystoreAccount extends properties_1.Description { | ||
| isKeystoreAccount(value) { | ||
| return !!(value && value._isKeystoreAccount); | ||
| } | ||
| KeystoreAccount.prototype.isKeystoreAccount = function (value) { | ||
| return !!(value && value._isKeystoreAccount); | ||
| }; | ||
| return KeystoreAccount; | ||
| }(properties_1.Description)); | ||
| } | ||
| exports.KeystoreAccount = KeystoreAccount; | ||
| function hasMnemonic(value) { | ||
| var mnemonic = value.mnemonic; | ||
| const mnemonic = value.mnemonic; | ||
| return mnemonic; | ||
| } | ||
| function _decrypt(data, key, ciphertext) { | ||
| var cipher = (0, utils_1.searchPath)(data, "crypto/cipher"); | ||
| const cipher = (0, utils_1.searchPath)(data, "crypto/cipher"); | ||
| if (cipher === "aes-128-ctr") { | ||
| var iv = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/cipherparams/iv")); | ||
| var counter = new aes_js_1.default.Counter(iv); | ||
| var aesCtr = new aes_js_1.default.ModeOfOperation.ctr(key, counter); | ||
| const iv = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/cipherparams/iv")); | ||
| const counter = new aes_js_1.default.Counter(iv); | ||
| const aesCtr = new aes_js_1.default.ModeOfOperation.ctr(key, counter); | ||
| return (0, bytes_1.arrayify)(aesCtr.decrypt(ciphertext)); | ||
@@ -101,32 +45,32 @@ } | ||
| } | ||
| //FIXME Finnish getAccount | ||
| //FIXME Finish getAccount | ||
| function _getAccount(data, key) { | ||
| var ciphertext = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/ciphertext")); | ||
| var computedMAC = (0, bytes_1.hexlify)((0, keccak256_1.keccak256)((0, bytes_1.concat)([key.slice(16, 32), ciphertext]))).substring(2); | ||
| const ciphertext = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/ciphertext")); | ||
| const computedMAC = (0, bytes_1.hexlify)((0, keccak256_1.keccak256)((0, bytes_1.concat)([key.slice(16, 32), ciphertext]))).substring(2); | ||
| if (computedMAC !== (0, utils_1.searchPath)(data, "crypto/mac").toLowerCase()) { | ||
| throw new Error("invalid password"); | ||
| } | ||
| var keysArray = _decrypt(data, key.slice(0, 16), ciphertext); | ||
| const keysArray = _decrypt(data, key.slice(0, 16), ciphertext); | ||
| if (!keysArray) { | ||
| logger.throwError("unsupported cipher", logger_1.Logger.errors.UNSUPPORTED_OPERATION, { | ||
| operation: "decrypt" | ||
| operation: "decrypt", | ||
| }); | ||
| } | ||
| var privateKey = (0, bytes_1.hexlify)(keysArray.slice(0, 2800)); | ||
| var publickey = (0, bytes_1.hexlify)(keysArray.slice(2800)); | ||
| var mnemonicKey = key.slice(32, 64); | ||
| var address = (0, transactions_1.computeAddress)(publickey); | ||
| var account = { | ||
| const privateKey = (0, bytes_1.hexlify)(keysArray.slice(0, 2800)); | ||
| const publickey = (0, bytes_1.hexlify)(keysArray.slice(2800)); | ||
| const mnemonicKey = key.slice(32, 64); | ||
| const address = (0, transactions_1.computeAddress)(publickey); | ||
| const account = { | ||
| _isKeystoreAccount: true, | ||
| address: address, | ||
| privateKey: privateKey, | ||
| publicKey: publickey | ||
| publicKey: publickey, | ||
| }; | ||
| // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase | ||
| if ((0, utils_1.searchPath)(data, "x-ethers/version") === "0.1") { | ||
| var mnemonicCiphertext = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "x-ethers/mnemonicCiphertext")); | ||
| var mnemonicIv = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "x-ethers/mnemonicCounter")); | ||
| var mnemonicCounter = new aes_js_1.default.Counter(mnemonicIv); | ||
| var mnemonicAesCtr = new aes_js_1.default.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter); | ||
| var mnemonic = (0, strings_1.toUtf8String)(mnemonicAesCtr.decrypt(mnemonicCiphertext)); | ||
| const mnemonicCiphertext = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "x-ethers/mnemonicCiphertext")); | ||
| const mnemonicIv = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "x-ethers/mnemonicCounter")); | ||
| const mnemonicCounter = new aes_js_1.default.Counter(mnemonicIv); | ||
| const mnemonicAesCtr = new aes_js_1.default.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter); | ||
| const mnemonic = (0, strings_1.toUtf8String)(mnemonicAesCtr.decrypt(mnemonicCiphertext)); | ||
| account.mnemonic = mnemonic; | ||
@@ -143,13 +87,13 @@ } | ||
| function _computeKdfKey(data, password, pbkdf2Func, scryptFunc, progressCallback) { | ||
| var passwordBytes = (0, utils_1.getPassword)(password); | ||
| var kdf = (0, utils_1.searchPath)(data, "crypto/kdf"); | ||
| if (kdf && typeof (kdf) === "string") { | ||
| var throwError = function (name, value) { | ||
| const passwordBytes = (0, utils_1.getPassword)(password); | ||
| const kdf = (0, utils_1.searchPath)(data, "crypto/kdf"); | ||
| if (kdf && typeof kdf === "string") { | ||
| const throwError = function (name, value) { | ||
| return logger.throwArgumentError("invalid key-derivation function parameters", name, value); | ||
| }; | ||
| if (kdf.toLowerCase() === "scrypt") { | ||
| var salt = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/kdfparams/salt")); | ||
| var N = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/n")); | ||
| var r = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/r")); | ||
| var p = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/p")); | ||
| const salt = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/kdfparams/salt")); | ||
| const N = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/n")); | ||
| const r = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/r")); | ||
| const p = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/p")); | ||
| // Check for all required parameters | ||
@@ -163,3 +107,3 @@ if (!N || !r || !p) { | ||
| } | ||
| var dkLen = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/dklen")); | ||
| const dkLen = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/dklen")); | ||
| if (dkLen !== 32) { | ||
@@ -171,5 +115,5 @@ throwError("dklen", dkLen); | ||
| else if (kdf.toLowerCase() === "pbkdf2") { | ||
| var salt = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/kdfparams/salt")); | ||
| var prfFunc = null; | ||
| var prf = (0, utils_1.searchPath)(data, "crypto/kdfparams/prf"); | ||
| const salt = (0, utils_1.looseArrayify)((0, utils_1.searchPath)(data, "crypto/kdfparams/salt")); | ||
| let prfFunc = null; | ||
| const prf = (0, utils_1.searchPath)(data, "crypto/kdfparams/prf"); | ||
| if (prf === "hmac-sha256") { | ||
@@ -184,4 +128,4 @@ prfFunc = "sha256"; | ||
| } | ||
| var count = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/c")); | ||
| var dkLen = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/dklen")); | ||
| const count = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/c")); | ||
| const dkLen = parseInt((0, utils_1.searchPath)(data, "crypto/kdfparams/dklen")); | ||
| if (dkLen !== 32) { | ||
@@ -196,170 +140,161 @@ throwError("dklen", dkLen); | ||
| function decryptSync(json, password) { | ||
| var data = JSON.parse(json); | ||
| var key = _computeKdfKey(data, password, pbkdf2Sync, scrypt_js_1.default.syncScrypt); | ||
| const data = JSON.parse(json); | ||
| const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt_js_1.default.syncScrypt); | ||
| return _getAccount(data, key); | ||
| } | ||
| function decrypt(json, password, progressCallback) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var data, key; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| data = JSON.parse(json); | ||
| return [4 /*yield*/, _computeKdfKey(data, password, pbkdf2, scrypt_js_1.default.scrypt, progressCallback)]; | ||
| case 1: | ||
| key = _a.sent(); | ||
| return [2 /*return*/, _getAccount(data, key)]; | ||
| } | ||
| }); | ||
| }); | ||
| async function decrypt(json, password, progressCallback) { | ||
| const data = JSON.parse(json); | ||
| const key = await _computeKdfKey(data, password, pbkdf2, scrypt_js_1.default.scrypt, progressCallback); | ||
| return _getAccount(data, key); | ||
| } | ||
| // throw new Error("Encrypt of keystore account not yet implemented - everything about passes"); | ||
| function encrypt(account, password, options, progressCallback) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var key, e_1, privateKey, publicKey, keysArray, passwordBytes, client, salt, iv, uuidRandom, N, r, p; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| _a.trys.push([0, 3, , 4]); | ||
| // Check the address matches the public key | ||
| if (account.address !== (0, transactions_1.computeAddress)(account.publicKey)) { | ||
| throw new Error("address/publicKey mismatch"); | ||
| } | ||
| if (!hasMnemonic(account)) return [3 /*break*/, 2]; | ||
| return [4 /*yield*/, signing_key_1.SigningKey.generateFromMnemonics(account.mnemonic)]; | ||
| case 1: | ||
| key = _a.sent(); | ||
| if (account.privateKey !== key.privateKey) { | ||
| throw new Error("mnemonic/privateKey mismatch"); | ||
| } | ||
| if (account.publicKey !== key.publicKey) { | ||
| throw new Error("mnemonic/publicKey mismatch"); | ||
| } | ||
| _a.label = 2; | ||
| case 2: return [3 /*break*/, 4]; | ||
| case 3: | ||
| e_1 = _a.sent(); | ||
| return [2 /*return*/, Promise.reject(e_1)]; | ||
| case 4: | ||
| // The options are optional, so adjust the call as needed | ||
| if (typeof (options) === "function" && !progressCallback) { | ||
| options = {}; | ||
| } | ||
| if (!options) { | ||
| options = {}; | ||
| } | ||
| privateKey = (0, bytes_1.arrayify)(account.privateKey); | ||
| publicKey = (0, bytes_1.arrayify)(account.publicKey); | ||
| keysArray = new Uint8Array(privateKey.length + publicKey.length); | ||
| keysArray.set(privateKey, 0); | ||
| keysArray.set(publicKey, privateKey.length); | ||
| passwordBytes = (0, utils_1.getPassword)(password); | ||
| client = options.client; | ||
| if (!client) { | ||
| client = "ethers.js"; | ||
| } | ||
| salt = null; | ||
| if (options.salt) { | ||
| salt = (0, bytes_1.arrayify)(options.salt); | ||
| } | ||
| else { | ||
| salt = (0, random_1.randomBytes)(32); | ||
| ; | ||
| } | ||
| iv = null; | ||
| if (options.iv) { | ||
| iv = (0, bytes_1.arrayify)(options.iv); | ||
| if (iv.length !== 16) { | ||
| throw new Error("invalid iv"); | ||
| } | ||
| } | ||
| else { | ||
| iv = (0, random_1.randomBytes)(16); | ||
| } | ||
| uuidRandom = null; | ||
| if (options.uuid) { | ||
| uuidRandom = (0, bytes_1.arrayify)(options.uuid); | ||
| if (uuidRandom.length !== 16) { | ||
| throw new Error("invalid uuid"); | ||
| } | ||
| } | ||
| else { | ||
| uuidRandom = (0, random_1.randomBytes)(16); | ||
| } | ||
| N = (1 << 17), r = 8, p = 1; | ||
| if (options.scrypt) { | ||
| if (options.scrypt.N) { | ||
| N = options.scrypt.N; | ||
| } | ||
| if (options.scrypt.r) { | ||
| r = options.scrypt.r; | ||
| } | ||
| if (options.scrypt.p) { | ||
| p = options.scrypt.p; | ||
| } | ||
| } | ||
| // We take 64 bytes: | ||
| // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix) | ||
| // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet) | ||
| return [2 /*return*/, scrypt_js_1.default.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then(function (key) { | ||
| key = (0, bytes_1.arrayify)(key); | ||
| // This will be used to encrypt the wallet (as per Web3 secret storage) | ||
| var derivedKey = key.slice(0, 16); | ||
| var macPrefix = key.slice(16, 32); | ||
| // This will be used to encrypt the mnemonic phrase (if any) | ||
| var mnemonicKey = key.slice(32, 64); | ||
| // Encrypt the keys | ||
| var counter = new aes_js_1.default.Counter(iv); | ||
| var aesCtr = new aes_js_1.default.ModeOfOperation.ctr(derivedKey, counter); | ||
| var ciphertext = (0, bytes_1.arrayify)(aesCtr.encrypt(keysArray)); | ||
| // Compute the message authentication code, used to check the password | ||
| var mac = (0, keccak256_1.keccak256)((0, bytes_1.concat)([macPrefix, ciphertext])); | ||
| // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition | ||
| var data = { | ||
| id: (0, utils_1.uuidV4)(uuidRandom), | ||
| version: 3, | ||
| crypto: { | ||
| cipher: "aes-128-ctr", | ||
| cipherparams: { | ||
| iv: (0, bytes_1.hexlify)(iv).substring(2), | ||
| }, | ||
| ciphertext: (0, bytes_1.hexlify)(ciphertext).substring(2), | ||
| kdf: "scrypt", | ||
| kdfparams: { | ||
| salt: (0, bytes_1.hexlify)(salt).substring(2), | ||
| n: N, | ||
| dklen: 32, | ||
| p: p, | ||
| r: r | ||
| }, | ||
| mac: mac.substring(2) | ||
| } | ||
| }; | ||
| // If we have a mnemonic, encrypt it into the JSON wallet | ||
| if (hasMnemonic(account)) { | ||
| var mnemonicIv = (0, random_1.randomBytes)(16); | ||
| var mnemonicCounter = new aes_js_1.default.Counter(mnemonicIv); | ||
| var mnemonicAesCtr = new aes_js_1.default.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter); | ||
| var mnemonicCiphertext = (0, bytes_1.arrayify)(mnemonicAesCtr.encrypt((0, strings_1.toUtf8Bytes)(account.mnemonic))); | ||
| var now = new Date(); | ||
| var timestamp = (now.getUTCFullYear() + "-" + | ||
| (0, utils_1.zpad)(now.getUTCMonth() + 1, 2) + "-" + | ||
| (0, utils_1.zpad)(now.getUTCDate(), 2) + "T" + | ||
| (0, utils_1.zpad)(now.getUTCHours(), 2) + "-" + | ||
| (0, utils_1.zpad)(now.getUTCMinutes(), 2) + "-" + | ||
| (0, utils_1.zpad)(now.getUTCSeconds(), 2) + ".0Z"); | ||
| data["x-ethers"] = { | ||
| client: client, | ||
| gethFilename: ("UTC--" + timestamp + "--" + data.address), | ||
| mnemonicCounter: (0, bytes_1.hexlify)(mnemonicIv).substring(2), | ||
| mnemonicCiphertext: (0, bytes_1.hexlify)(mnemonicCiphertext).substring(2), | ||
| version: "0.1" | ||
| }; | ||
| } | ||
| return JSON.stringify(data); | ||
| })]; | ||
| async function encrypt(account, password, options, progressCallback) { | ||
| try { | ||
| // Check the address matches the public key | ||
| if (account.address !== (0, transactions_1.computeAddress)(account.publicKey)) { | ||
| throw new Error("address/publicKey mismatch"); | ||
| } | ||
| // Check the mnemonic (if any) matches private and public keys | ||
| if (hasMnemonic(account)) { | ||
| const key = await signing_key_1.SigningKey.generateFromMnemonics(account.mnemonic); | ||
| if (account.privateKey !== key.privateKey) { | ||
| throw new Error("mnemonic/privateKey mismatch"); | ||
| } | ||
| }); | ||
| if (account.publicKey !== key.publicKey) { | ||
| throw new Error("mnemonic/publicKey mismatch"); | ||
| } | ||
| } | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| // The options are optional, so adjust the call as needed | ||
| if (typeof options === "function" && !progressCallback) { | ||
| options = {}; | ||
| } | ||
| if (!options) { | ||
| options = {}; | ||
| } | ||
| const privateKey = (0, bytes_1.arrayify)(account.privateKey); | ||
| const publicKey = (0, bytes_1.arrayify)(account.publicKey); | ||
| const keysArray = new Uint8Array(privateKey.length + publicKey.length); | ||
| keysArray.set(privateKey, 0); | ||
| keysArray.set(publicKey, privateKey.length); | ||
| const passwordBytes = (0, utils_1.getPassword)(password); | ||
| let client = options.client; | ||
| if (!client) { | ||
| client = "ethers.js"; | ||
| } | ||
| // Check/generate the salt | ||
| let salt = null; | ||
| if (options.salt) { | ||
| salt = (0, bytes_1.arrayify)(options.salt); | ||
| } | ||
| else { | ||
| salt = (0, random_1.randomBytes)(32); | ||
| } | ||
| // Override initialization vector | ||
| let iv = null; | ||
| if (options.iv) { | ||
| iv = (0, bytes_1.arrayify)(options.iv); | ||
| if (iv.length !== 16) { | ||
| throw new Error("invalid iv"); | ||
| } | ||
| } | ||
| else { | ||
| iv = (0, random_1.randomBytes)(16); | ||
| } | ||
| // Override the uuid | ||
| let uuidRandom = null; | ||
| if (options.uuid) { | ||
| uuidRandom = (0, bytes_1.arrayify)(options.uuid); | ||
| if (uuidRandom.length !== 16) { | ||
| throw new Error("invalid uuid"); | ||
| } | ||
| } | ||
| else { | ||
| uuidRandom = (0, random_1.randomBytes)(16); | ||
| } | ||
| // Override the scrypt password-based key derivation function parameters | ||
| let N = 1 << 17, r = 8, p = 1; | ||
| if (options.scrypt) { | ||
| if (options.scrypt.N) { | ||
| N = options.scrypt.N; | ||
| } | ||
| if (options.scrypt.r) { | ||
| r = options.scrypt.r; | ||
| } | ||
| if (options.scrypt.p) { | ||
| p = options.scrypt.p; | ||
| } | ||
| } | ||
| // We take 64 bytes: | ||
| // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix) | ||
| // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet) | ||
| return scrypt_js_1.default | ||
| .scrypt(passwordBytes, salt, N, r, p, 64, progressCallback) | ||
| .then((key) => { | ||
| key = (0, bytes_1.arrayify)(key); | ||
| // This will be used to encrypt the wallet (as per Web3 secret storage) | ||
| const derivedKey = key.slice(0, 16); | ||
| const macPrefix = key.slice(16, 32); | ||
| // This will be used to encrypt the mnemonic phrase (if any) | ||
| const mnemonicKey = key.slice(32, 64); | ||
| // Encrypt the keys | ||
| const counter = new aes_js_1.default.Counter(iv); | ||
| const aesCtr = new aes_js_1.default.ModeOfOperation.ctr(derivedKey, counter); | ||
| const ciphertext = (0, bytes_1.arrayify)(aesCtr.encrypt(keysArray)); | ||
| // Compute the message authentication code, used to check the password | ||
| const mac = (0, keccak256_1.keccak256)((0, bytes_1.concat)([macPrefix, ciphertext])); | ||
| // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition | ||
| const data = { | ||
| id: (0, utils_1.uuidV4)(uuidRandom), | ||
| version: 3, | ||
| crypto: { | ||
| cipher: "aes-128-ctr", | ||
| cipherparams: { | ||
| iv: (0, bytes_1.hexlify)(iv).substring(2), | ||
| }, | ||
| ciphertext: (0, bytes_1.hexlify)(ciphertext).substring(2), | ||
| kdf: "scrypt", | ||
| kdfparams: { | ||
| salt: (0, bytes_1.hexlify)(salt).substring(2), | ||
| n: N, | ||
| dklen: 32, | ||
| p: p, | ||
| r: r, | ||
| }, | ||
| mac: mac.substring(2), | ||
| }, | ||
| }; | ||
| // If we have a mnemonic, encrypt it into the JSON wallet | ||
| if (hasMnemonic(account)) { | ||
| const mnemonicIv = (0, random_1.randomBytes)(16); | ||
| const mnemonicCounter = new aes_js_1.default.Counter(mnemonicIv); | ||
| const mnemonicAesCtr = new aes_js_1.default.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter); | ||
| const mnemonicCiphertext = (0, bytes_1.arrayify)(mnemonicAesCtr.encrypt((0, strings_1.toUtf8Bytes)(account.mnemonic))); | ||
| const now = new Date(); | ||
| const timestamp = now.getUTCFullYear() + | ||
| "-" + | ||
| (0, utils_1.zpad)(now.getUTCMonth() + 1, 2) + | ||
| "-" + | ||
| (0, utils_1.zpad)(now.getUTCDate(), 2) + | ||
| "T" + | ||
| (0, utils_1.zpad)(now.getUTCHours(), 2) + | ||
| "-" + | ||
| (0, utils_1.zpad)(now.getUTCMinutes(), 2) + | ||
| "-" + | ||
| (0, utils_1.zpad)(now.getUTCSeconds(), 2) + | ||
| ".0Z"; | ||
| data["x-ethers"] = { | ||
| client: client, | ||
| gethFilename: "UTC--" + timestamp + "--" + data.address, | ||
| mnemonicCounter: (0, bytes_1.hexlify)(mnemonicIv).substring(2), | ||
| mnemonicCiphertext: (0, bytes_1.hexlify)(mnemonicCiphertext).substring(2), | ||
| version: "0.1", | ||
| }; | ||
| } | ||
| return JSON.stringify(data); | ||
| }); | ||
| } | ||
| //# sourceMappingURL=keystore.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../src.ts/keystore.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../src.ts/keystore.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src.ts/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGlE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAK3D;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAInE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,CAKhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAyB5D;AAGD,wBAAgB,MAAM,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,CAqBrD"} | ||
| {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src.ts/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGlE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAK3D;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,CAKhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB5D;AAGD,wBAAgB,MAAM,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,CAqBrD"} |
+13
-13
@@ -8,7 +8,7 @@ "use strict"; | ||
| exports.uuidV4 = uuidV4; | ||
| var bytes_1 = require("@qevm/bytes"); | ||
| var strings_1 = require("@qevm/strings"); | ||
| const bytes_1 = require("@qevm/bytes"); | ||
| const strings_1 = require("@qevm/strings"); | ||
| function looseArrayify(hexString) { | ||
| if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') { | ||
| hexString = '0x' + hexString; | ||
| if (typeof hexString === "string" && hexString.substring(0, 2) !== "0x") { | ||
| hexString = "0x" + hexString; | ||
| } | ||
@@ -20,3 +20,3 @@ return (0, bytes_1.arrayify)(hexString); | ||
| while (value.length < length) { | ||
| value = '0' + value; | ||
| value = "0" + value; | ||
| } | ||
@@ -26,3 +26,3 @@ return value; | ||
| function getPassword(password) { | ||
| if (typeof (password) === 'string') { | ||
| if (typeof password === "string") { | ||
| return (0, strings_1.toUtf8Bytes)(password, strings_1.UnicodeNormalizationForm.NFKC); | ||
@@ -33,8 +33,8 @@ } | ||
| function searchPath(object, path) { | ||
| var currentChild = object; | ||
| var comps = path.toLowerCase().split('/'); | ||
| for (var i = 0; i < comps.length; i++) { | ||
| let currentChild = object; | ||
| const comps = path.toLowerCase().split("/"); | ||
| for (let i = 0; i < comps.length; i++) { | ||
| // Search for a child object with a case-insensitive matching key | ||
| var matchingChild = null; | ||
| for (var key in currentChild) { | ||
| let matchingChild = null; | ||
| for (const key in currentChild) { | ||
| if (key.toLowerCase() === comps[i]) { | ||
@@ -56,3 +56,3 @@ matchingChild = currentChild[key]; | ||
| function uuidV4(randomBytes) { | ||
| var bytes = (0, bytes_1.arrayify)(randomBytes); | ||
| const bytes = (0, bytes_1.arrayify)(randomBytes); | ||
| // Section: 4.1.3: | ||
@@ -65,3 +65,3 @@ // - time_hi_and_version[12:16] = 0b0100 | ||
| bytes[8] = (bytes[8] & 0x3f) | 0x80; | ||
| var value = (0, bytes_1.hexlify)(bytes); | ||
| const value = (0, bytes_1.hexlify)(bytes); | ||
| return [ | ||
@@ -68,0 +68,0 @@ value.substring(2, 10), |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src.ts/utils.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src.ts/utils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,sCAKC;AAED,oBAMC;AAED,kCAKC;AAED,gCAwBC;AAGD,wBAqBC;AAzED,uCAAkE;AAClE,2CAAsE;AAEtE,SAAgB,aAAa,CAAC,SAAiB;IAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtE,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,CAAC;IACD,OAAO,IAAA,gBAAQ,EAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,IAAI,CAAC,KAAsB,EAAE,MAAc;IACvD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC3B,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,WAAW,CAAC,QAAwB;IAChD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAA,qBAAW,EAAC,QAAQ,EAAE,kCAAwB,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,UAAU,CAAC,MAAW,EAAE,IAAY;IAChD,IAAI,YAAY,GAAG,MAAM,CAAC;IAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,iEAAiE;QACjE,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM;YACV,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,0BAA0B;QAC1B,YAAY,GAAG,aAAa,CAAC;IACjC,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,0DAA0D;AAC1D,SAAgB,MAAM,CAAC,WAAsB;IACzC,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,WAAW,CAAC,CAAC;IAEpC,kBAAkB;IAClB,wCAAwC;IACxC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpC,cAAc;IACd,uCAAuC;IACvC,uCAAuC;IACvC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC;IAE7B,OAAO;QACH,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QACtB,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;KAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC"} |
+39
-35
| { | ||
| "author": "Eugene Kuleshov", | ||
| "dependencies": { | ||
| "@qevm/abstract-signer": "^5.7.1", | ||
| "@qevm/address": "^5.7.0", | ||
| "@qevm/bytes": "5.7.1", | ||
| "@qevm/keccak256": "^5.7.0", | ||
| "@ethersproject/logger": "^5.7.0", | ||
| "@qevm/pbkdf2": "^5.7.0", | ||
| "@ethersproject/properties": "^5.7.0", | ||
| "@qevm/random": "^5.7.0", | ||
| "@qevm/strings": "^5.7.0", | ||
| "@qevm/transactions": "^5.7.2", | ||
| "@qevm/signing-key": "^5.7.0", | ||
| "aes-js": "3.0.0", | ||
| "scrypt-js": "3.0.1" | ||
| }, | ||
| "description": "Wallet management utilities for KeyStore and Crowdsale JSON wallets.", | ||
| "keywords": [ | ||
| "qEthereum", | ||
| "qethers" | ||
| ], | ||
| "license": "MIT", | ||
| "main": "./lib/index.js", | ||
| "module": "./lib.esm/index.js", | ||
| "name": "@qevm/json-wallets", | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "scripts": { | ||
| "test": "echo \"Error: no test specified\" && exit 1" | ||
| }, | ||
| "sideEffects": false, | ||
| "tarballHash": "0x5fdee49e317ed39fd61f164ae5ee21dce0011a86a12f6eb6f58618fa2b2a3a5e", | ||
| "types": "./lib/index.d.ts", | ||
| "version": "5.7.2" | ||
| "contributors": [ | ||
| "Eugene Kuleshov <kulevgen32@gmail.com>", | ||
| "Richard Moore <me@ricmoo.com>" | ||
| ], | ||
| "dependencies": { | ||
| "@qevm/abstract-signer": "^5.7.3", | ||
| "@qevm/address": "^5.7.3", | ||
| "@qevm/bytes": "^5.7.2", | ||
| "@qevm/keccak256": "^5.7.1", | ||
| "@qevm/logger": "^5.7.1", | ||
| "@qevm/pbkdf2": "^5.7.1", | ||
| "@qevm/properties": "^5.7.1", | ||
| "@qevm/random": "^5.7.1", | ||
| "@qevm/strings": "^5.7.2", | ||
| "@qevm/transactions": "^5.7.3", | ||
| "@qevm/signing-key": "^5.7.9", | ||
| "aes-js": "3.0.0", | ||
| "scrypt-js": "3.0.1" | ||
| }, | ||
| "description": "Wallet management utilities for KeyStore and Crowdsale JSON wallets.", | ||
| "keywords": [ | ||
| "QEVM", | ||
| "QuantumEVM", | ||
| "qethers" | ||
| ], | ||
| "license": "MIT", | ||
| "main": "./lib/index.js", | ||
| "module": "./lib.esm/index.js", | ||
| "name": "@qevm/json-wallets", | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "scripts": { | ||
| "test": "echo \"Error: no test specified\" && exit 1" | ||
| }, | ||
| "sideEffects": false, | ||
| "tarballHash": "0x5fdee49e317ed39fd61f164ae5ee21dce0011a86a12f6eb6f58618fa2b2a3a5e", | ||
| "types": "./lib/index.d.ts", | ||
| "version": "5.7.3" | ||
| } |
+3
-3
| Secret Storage JSON Wallet Utilities | ||
| ==================================== | ||
| This sub-module is part of the [ethers project](https://github.com/ethers-io/ethers.js). | ||
| This sub-module is part of the qethers, a fork of [ethers project](https://github.com/ethers-io/ethers.js). | ||
@@ -15,3 +15,3 @@ It is responsible for encoding, decoding, encrypting and decrypting JSON wallet | ||
| Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/ethers), | ||
| Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/@qevm/qethers), | ||
| but for those with more specific needs, individual components can be imported. | ||
@@ -41,3 +41,3 @@ | ||
| } = require("@ethersproject/json-wallets"); | ||
| } = require("@qevm/json-wallets"); | ||
| ``` | ||
@@ -44,0 +44,0 @@ |
@@ -1,1 +0,1 @@ | ||
| export const version = "json-wallets/5.7.0"; | ||
| export const version = "json-wallets/5.7.3"; |
+22
-11
@@ -11,5 +11,5 @@ "use strict"; | ||
| import { toUtf8Bytes } from "@qevm/strings"; | ||
| import { Description } from "@ethersproject/properties"; | ||
| import { Description } from "@qevm/properties"; | ||
| import { Logger } from "@ethersproject/logger"; | ||
| import { Logger } from "@qevm/logger"; | ||
| import { version } from "./_version"; | ||
@@ -28,3 +28,6 @@ const logger = new Logger(version); | ||
| export class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount { | ||
| export class CrowdsaleAccount | ||
| extends Description<_CrowdsaleAccount> | ||
| implements ExternallyOwnedAccount | ||
| { | ||
| readonly address: string; | ||
@@ -43,4 +46,7 @@ readonly privateKey: string; | ||
| // See: https://github.com/ethereum/pyethsaletool | ||
| export function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount { | ||
| //FIXME Finnish entire decrypt | ||
| export function decrypt( | ||
| json: string, | ||
| password: Bytes | string, | ||
| ): ExternallyOwnedAccount { | ||
| //FIXME Finish entire decrypt | ||
| throw new Error("Decryption of crowdsale account not yet implemented"); | ||
@@ -57,7 +63,10 @@ | ||
| const encseed = looseArrayify(searchPath(data, "encseed")); | ||
| if (!encseed || (encseed.length % 16) !== 0) { | ||
| if (!encseed || encseed.length % 16 !== 0) { | ||
| logger.throwArgumentError("invalid encseed", "json", json); | ||
| } | ||
| const key = arrayify(pbkdf2(password, password, 2000, 32, "sha256")).slice(0, 16); | ||
| const key = arrayify(pbkdf2(password, password, 2000, 32, "sha256")).slice( | ||
| 0, | ||
| 16, | ||
| ); | ||
@@ -69,3 +78,5 @@ const iv = encseed.slice(0, 16); | ||
| const aesCbc = new aes.ModeOfOperation.cbc(key, iv); | ||
| const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed))); | ||
| const seed = aes.padding.pkcs7.strip( | ||
| arrayify(aesCbc.decrypt(encryptedSeed)), | ||
| ); | ||
@@ -82,8 +93,8 @@ // This wallet format is weird... Convert the binary encoded hex to a string. | ||
| return new CrowdsaleAccount ({ | ||
| return new CrowdsaleAccount({ | ||
| _isCrowdsaleAccount: true, | ||
| address: ethaddr, | ||
| privateKey: privateKey, | ||
| publicKey: "" | ||
| publicKey: "", | ||
| }); | ||
| } | ||
| } |
+29
-12
@@ -7,10 +7,28 @@ "use strict"; | ||
| import { decrypt as decryptCrowdsale } from "./crowdsale"; | ||
| import { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from "./inspect"; | ||
| import { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from "./keystore"; | ||
| import { | ||
| getJsonWalletAddress, | ||
| isCrowdsaleWallet, | ||
| isKeystoreWallet, | ||
| } from "./inspect"; | ||
| import { | ||
| decrypt as decryptKeystore, | ||
| decryptSync as decryptKeystoreSync, | ||
| encrypt as encryptKeystore, | ||
| EncryptOptions, | ||
| ProgressCallback, | ||
| } from "./keystore"; | ||
| function decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<ExternallyOwnedAccount> { | ||
| function decryptJsonWallet( | ||
| json: string, | ||
| password: Bytes | string, | ||
| progressCallback?: ProgressCallback, | ||
| ): Promise<ExternallyOwnedAccount> { | ||
| if (isCrowdsaleWallet(json)) { | ||
| if (progressCallback) { progressCallback(0); } | ||
| const account = decryptCrowdsale(json, password) | ||
| if (progressCallback) { progressCallback(1); } | ||
| if (progressCallback) { | ||
| progressCallback(0); | ||
| } | ||
| const account = decryptCrowdsale(json, password); | ||
| if (progressCallback) { | ||
| progressCallback(1); | ||
| } | ||
| return Promise.resolve(account); | ||
@@ -26,5 +44,8 @@ } | ||
| function decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount { | ||
| function decryptJsonWalletSync( | ||
| json: string, | ||
| password: Bytes | string, | ||
| ): ExternallyOwnedAccount { | ||
| if (isCrowdsaleWallet(json)) { | ||
| return decryptCrowdsale(json, password) | ||
| return decryptCrowdsale(json, password); | ||
| } | ||
@@ -41,16 +62,12 @@ | ||
| decryptCrowdsale, | ||
| decryptKeystore, | ||
| decryptKeystoreSync, | ||
| encryptKeystore, | ||
| isCrowdsaleWallet, | ||
| isKeystoreWallet, | ||
| getJsonWalletAddress, | ||
| decryptJsonWallet, | ||
| decryptJsonWalletSync, | ||
| ProgressCallback, | ||
| EncryptOptions, | ||
| }; |
+18
-8
@@ -5,3 +5,2 @@ "use strict"; | ||
| export function isCrowdsaleWallet(json: string): boolean { | ||
@@ -11,5 +10,7 @@ let data: any = null; | ||
| data = JSON.parse(json); | ||
| } catch (error) { return false; } | ||
| } catch (error) { | ||
| return false; | ||
| } | ||
| return (data.encseed && data.ethaddr); | ||
| return data.encseed && data.ethaddr; | ||
| } | ||
@@ -21,5 +22,11 @@ | ||
| data = JSON.parse(json); | ||
| } catch (error) { return false; } | ||
| } catch (error) { | ||
| return false; | ||
| } | ||
| if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) { | ||
| if ( | ||
| !data.version || | ||
| parseInt(data.version) !== data.version || | ||
| parseInt(data.version) !== 3 | ||
| ) { | ||
| return false; | ||
@@ -40,3 +47,5 @@ } | ||
| return getAddress(JSON.parse(json).ethaddr); | ||
| } catch (error) { return null; } | ||
| } catch (error) { | ||
| return null; | ||
| } | ||
| } | ||
@@ -47,3 +56,5 @@ | ||
| return getAddress(JSON.parse(json).address); | ||
| } catch (error) { return null; } | ||
| } catch (error) { | ||
| return null; | ||
| } | ||
| } | ||
@@ -53,2 +64,1 @@ | ||
| } | ||
+256
-131
@@ -9,6 +9,6 @@ "use strict"; | ||
| import { keccak256 } from "@qevm/keccak256"; | ||
| import { toUtf8Bytes, toUtf8String } from "@qevm/strings" | ||
| import { toUtf8Bytes, toUtf8String } from "@qevm/strings"; | ||
| import { pbkdf2 as _pbkdf2 } from "@qevm/pbkdf2"; | ||
| import { randomBytes } from "@qevm/random"; | ||
| import { Description } from "@ethersproject/properties"; | ||
| import { Description } from "@qevm/properties"; | ||
| import { computeAddress } from "@qevm/transactions"; | ||
@@ -19,3 +19,3 @@ import { SigningKey } from "@qevm/signing-key"; | ||
| import { Logger } from "@ethersproject/logger"; | ||
| import { Logger } from "@qevm/logger"; | ||
| import { version } from "./_version"; | ||
@@ -26,7 +26,2 @@ const logger = new Logger(version); | ||
| // function hasMnemonic(value: any): value is { mnemonic: string } { | ||
| // const mnemonic = value.mnemonic; | ||
| // return mnemonic; | ||
| // } | ||
| export interface _KeystoreAccount { | ||
@@ -41,3 +36,6 @@ address: string; | ||
| export class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount { | ||
| export class KeystoreAccount | ||
| extends Description<_KeystoreAccount> | ||
| implements ExternallyOwnedAccount | ||
| { | ||
| readonly address: string; | ||
@@ -58,13 +56,13 @@ readonly privateKey: string; | ||
| export type EncryptOptions = { | ||
| iv?: BytesLike; | ||
| entropy?: BytesLike; | ||
| client?: string; | ||
| salt?: BytesLike; | ||
| uuid?: string; | ||
| scrypt?: { | ||
| N?: number; | ||
| r?: number; | ||
| p?: number; | ||
| } | ||
| } | ||
| iv?: BytesLike; | ||
| entropy?: BytesLike; | ||
| client?: string; | ||
| salt?: BytesLike; | ||
| uuid?: string; | ||
| scrypt?: { | ||
| N?: number; | ||
| r?: number; | ||
| p?: number; | ||
| }; | ||
| }; | ||
@@ -76,6 +74,10 @@ function hasMnemonic(value: any): value is { mnemonic: string } { | ||
| function _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array { | ||
| function _decrypt( | ||
| data: any, | ||
| key: Uint8Array, | ||
| ciphertext: Uint8Array, | ||
| ): Uint8Array { | ||
| const cipher = searchPath(data, "crypto/cipher"); | ||
| if (cipher === "aes-128-ctr") { | ||
| const iv = looseArrayify(searchPath(data, "crypto/cipherparams/iv")) | ||
| const iv = looseArrayify(searchPath(data, "crypto/cipherparams/iv")); | ||
| const counter = new aes.Counter(iv); | ||
@@ -91,7 +93,9 @@ | ||
| //FIXME Finnish getAccount | ||
| //FIXME Finish getAccount | ||
| function _getAccount(data: any, key: Uint8Array): KeystoreAccount { | ||
| const ciphertext = looseArrayify(searchPath(data, "crypto/ciphertext")); | ||
| const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2); | ||
| const computedMAC = hexlify( | ||
| keccak256(concat([key.slice(16, 32), ciphertext])), | ||
| ).substring(2); | ||
| if (computedMAC !== searchPath(data, "crypto/mac").toLowerCase()) { | ||
@@ -103,5 +107,9 @@ throw new Error("invalid password"); | ||
| if (!keysArray) { | ||
| logger.throwError("unsupported cipher", Logger.errors.UNSUPPORTED_OPERATION, { | ||
| operation: "decrypt" | ||
| }); | ||
| logger.throwError( | ||
| "unsupported cipher", | ||
| Logger.errors.UNSUPPORTED_OPERATION, | ||
| { | ||
| operation: "decrypt", | ||
| }, | ||
| ); | ||
| } | ||
@@ -119,3 +127,3 @@ | ||
| privateKey: privateKey, | ||
| publicKey: publickey | ||
| publicKey: publickey, | ||
| }; | ||
@@ -125,10 +133,19 @@ | ||
| if (searchPath(data, "x-ethers/version") === "0.1") { | ||
| const mnemonicCiphertext = looseArrayify(searchPath(data, "x-ethers/mnemonicCiphertext")); | ||
| const mnemonicIv = looseArrayify(searchPath(data, "x-ethers/mnemonicCounter")); | ||
| const mnemonicCiphertext = looseArrayify( | ||
| searchPath(data, "x-ethers/mnemonicCiphertext"), | ||
| ); | ||
| const mnemonicIv = looseArrayify( | ||
| searchPath(data, "x-ethers/mnemonicCounter"), | ||
| ); | ||
| const mnemonicCounter = new aes.Counter(mnemonicIv); | ||
| const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter); | ||
| const mnemonicAesCtr = new aes.ModeOfOperation.ctr( | ||
| mnemonicKey, | ||
| mnemonicCounter, | ||
| ); | ||
| const mnemonic = toUtf8String(mnemonicAesCtr.decrypt(mnemonicCiphertext)); | ||
| const mnemonic = toUtf8String( | ||
| mnemonicAesCtr.decrypt(mnemonicCiphertext), | ||
| ); | ||
| account.mnemonic = mnemonic; | ||
@@ -140,14 +157,48 @@ } | ||
| type ScryptFunc<T> = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T; | ||
| type Pbkdf2Func<T> = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T; | ||
| type ScryptFunc<T> = ( | ||
| pw: Uint8Array, | ||
| salt: Uint8Array, | ||
| n: number, | ||
| r: number, | ||
| p: number, | ||
| dkLen: number, | ||
| callback?: ProgressCallback, | ||
| ) => T; | ||
| type Pbkdf2Func<T> = ( | ||
| pw: Uint8Array, | ||
| salt: Uint8Array, | ||
| c: number, | ||
| dkLen: number, | ||
| prfFunc: string, | ||
| ) => T; | ||
| function pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array { | ||
| function pbkdf2Sync( | ||
| passwordBytes: Uint8Array, | ||
| salt: Uint8Array, | ||
| count: number, | ||
| dkLen: number, | ||
| prfFunc: string, | ||
| ): Uint8Array { | ||
| return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc)); | ||
| } | ||
| function pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise<Uint8Array> { | ||
| return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc)); | ||
| function pbkdf2( | ||
| passwordBytes: Uint8Array, | ||
| salt: Uint8Array, | ||
| count: number, | ||
| dkLen: number, | ||
| prfFunc: string, | ||
| ): Promise<Uint8Array> { | ||
| return Promise.resolve( | ||
| pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc), | ||
| ); | ||
| } | ||
| function _computeKdfKey<T>(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func<T>, scryptFunc: ScryptFunc<T>, progressCallback?: ProgressCallback): T { | ||
| function _computeKdfKey<T>( | ||
| data: any, | ||
| password: Bytes | string, | ||
| pbkdf2Func: Pbkdf2Func<T>, | ||
| scryptFunc: ScryptFunc<T>, | ||
| progressCallback?: ProgressCallback, | ||
| ): T { | ||
| const passwordBytes = getPassword(password); | ||
@@ -157,9 +208,15 @@ | ||
| if (kdf && typeof(kdf) === "string") { | ||
| const throwError = function(name: string, value: any): never { | ||
| return logger.throwArgumentError("invalid key-derivation function parameters", name, value); | ||
| } | ||
| if (kdf && typeof kdf === "string") { | ||
| const throwError = function (name: string, value: any): never { | ||
| return logger.throwArgumentError( | ||
| "invalid key-derivation function parameters", | ||
| name, | ||
| value, | ||
| ); | ||
| }; | ||
| if (kdf.toLowerCase() === "scrypt") { | ||
| const salt = looseArrayify(searchPath(data, "crypto/kdfparams/salt")); | ||
| const salt = looseArrayify( | ||
| searchPath(data, "crypto/kdfparams/salt"), | ||
| ); | ||
| const N = parseInt(searchPath(data, "crypto/kdfparams/n")); | ||
@@ -170,16 +227,30 @@ const r = parseInt(searchPath(data, "crypto/kdfparams/r")); | ||
| // Check for all required parameters | ||
| if (!N || !r || !p) { throwError("kdf", kdf); } | ||
| if (!N || !r || !p) { | ||
| throwError("kdf", kdf); | ||
| } | ||
| // Make sure N is a power of 2 | ||
| if ((N & (N - 1)) !== 0) { throwError("N", N); } | ||
| if ((N & (N - 1)) !== 0) { | ||
| throwError("N", N); | ||
| } | ||
| const dkLen = parseInt(searchPath(data, "crypto/kdfparams/dklen")); | ||
| if (dkLen !== 32) { throwError("dklen", dkLen); } | ||
| if (dkLen !== 32) { | ||
| throwError("dklen", dkLen); | ||
| } | ||
| return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback); | ||
| return scryptFunc( | ||
| passwordBytes, | ||
| salt, | ||
| N, | ||
| r, | ||
| p, | ||
| 64, | ||
| progressCallback, | ||
| ); | ||
| } else if (kdf.toLowerCase() === "pbkdf2") { | ||
| const salt = looseArrayify( | ||
| searchPath(data, "crypto/kdfparams/salt"), | ||
| ); | ||
| const salt = looseArrayify(searchPath(data, "crypto/kdfparams/salt")); | ||
| let prfFunc: string = null; | ||
@@ -198,3 +269,5 @@ const prf = searchPath(data, "crypto/kdfparams/prf"); | ||
| const dkLen = parseInt(searchPath(data, "crypto/kdfparams/dklen")); | ||
| if (dkLen !== 32) { throwError("dklen", dkLen); } | ||
| if (dkLen !== 32) { | ||
| throwError("dklen", dkLen); | ||
| } | ||
@@ -205,7 +278,13 @@ return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc); | ||
| return logger.throwArgumentError("unsupported key-derivation function", "kdf", kdf); | ||
| return logger.throwArgumentError( | ||
| "unsupported key-derivation function", | ||
| "kdf", | ||
| kdf, | ||
| ); | ||
| } | ||
| export function decryptSync(json: string, password: Bytes | string): KeystoreAccount { | ||
| export function decryptSync( | ||
| json: string, | ||
| password: Bytes | string, | ||
| ): KeystoreAccount { | ||
| const data = JSON.parse(json); | ||
@@ -217,6 +296,16 @@ | ||
| export async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<KeystoreAccount> { | ||
| export async function decrypt( | ||
| json: string, | ||
| password: Bytes | string, | ||
| progressCallback?: ProgressCallback, | ||
| ): Promise<KeystoreAccount> { | ||
| const data = JSON.parse(json); | ||
| const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback); | ||
| const key = await _computeKdfKey( | ||
| data, | ||
| password, | ||
| pbkdf2, | ||
| scrypt.scrypt, | ||
| progressCallback, | ||
| ); | ||
| return _getAccount(data, key); | ||
@@ -227,3 +316,8 @@ } | ||
| export async function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise<string> { | ||
| export async function encrypt( | ||
| account: ExternallyOwnedAccount, | ||
| password: Bytes | string, | ||
| options?: EncryptOptions, | ||
| progressCallback?: ProgressCallback, | ||
| ): Promise<string> { | ||
| try { | ||
@@ -237,13 +331,14 @@ // Check the address matches the public key | ||
| if (hasMnemonic(account)) { | ||
| const key = await SigningKey.generateFromMnemonics(account.mnemonic); | ||
| const key = await SigningKey.generateFromMnemonics( | ||
| account.mnemonic, | ||
| ); | ||
| if(account.privateKey !== key.privateKey){ | ||
| if (account.privateKey !== key.privateKey) { | ||
| throw new Error("mnemonic/privateKey mismatch"); | ||
| } | ||
| if(account.publicKey !== key.publicKey){ | ||
| if (account.publicKey !== key.publicKey) { | ||
| throw new Error("mnemonic/publicKey mismatch"); | ||
| } | ||
| } | ||
| } catch (e) { | ||
@@ -254,6 +349,8 @@ return Promise.reject(e); | ||
| // The options are optional, so adjust the call as needed | ||
| if (typeof(options) === "function" && !progressCallback) { | ||
| if (typeof options === "function" && !progressCallback) { | ||
| options = {}; | ||
| } | ||
| if (!options) { options = {}; } | ||
| if (!options) { | ||
| options = {}; | ||
| } | ||
@@ -271,3 +368,5 @@ const privateKey: Uint8Array = arrayify(account.privateKey); | ||
| let client = options.client; | ||
| if (!client) { client = "ethers.js"; } | ||
| if (!client) { | ||
| client = "ethers.js"; | ||
| } | ||
@@ -279,3 +378,3 @@ // Check/generate the salt | ||
| } else { | ||
| salt = randomBytes(32);; | ||
| salt = randomBytes(32); | ||
| } | ||
@@ -287,5 +386,7 @@ | ||
| iv = arrayify(options.iv); | ||
| if (iv.length !== 16) { throw new Error("invalid iv"); } | ||
| if (iv.length !== 16) { | ||
| throw new Error("invalid iv"); | ||
| } | ||
| } else { | ||
| iv = randomBytes(16); | ||
| iv = randomBytes(16); | ||
| } | ||
@@ -297,3 +398,5 @@ | ||
| uuidRandom = arrayify(options.uuid); | ||
| if (uuidRandom.length !== 16) { throw new Error("invalid uuid"); } | ||
| if (uuidRandom.length !== 16) { | ||
| throw new Error("invalid uuid"); | ||
| } | ||
| } else { | ||
@@ -304,7 +407,15 @@ uuidRandom = randomBytes(16); | ||
| // Override the scrypt password-based key derivation function parameters | ||
| let N = (1 << 17), r = 8, p = 1; | ||
| let N = 1 << 17, | ||
| r = 8, | ||
| p = 1; | ||
| if (options.scrypt) { | ||
| if (options.scrypt.N) { N = options.scrypt.N; } | ||
| if (options.scrypt.r) { r = options.scrypt.r; } | ||
| if (options.scrypt.p) { p = options.scrypt.p; } | ||
| if (options.scrypt.N) { | ||
| N = options.scrypt.N; | ||
| } | ||
| if (options.scrypt.r) { | ||
| r = options.scrypt.r; | ||
| } | ||
| if (options.scrypt.p) { | ||
| p = options.scrypt.p; | ||
| } | ||
| } | ||
@@ -315,67 +426,81 @@ | ||
| // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet) | ||
| return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => { | ||
| key = arrayify(key); | ||
| return scrypt | ||
| .scrypt(passwordBytes, salt, N, r, p, 64, progressCallback) | ||
| .then((key) => { | ||
| key = arrayify(key); | ||
| // This will be used to encrypt the wallet (as per Web3 secret storage) | ||
| const derivedKey = key.slice(0, 16); | ||
| const macPrefix = key.slice(16, 32); | ||
| // This will be used to encrypt the wallet (as per Web3 secret storage) | ||
| const derivedKey = key.slice(0, 16); | ||
| const macPrefix = key.slice(16, 32); | ||
| // This will be used to encrypt the mnemonic phrase (if any) | ||
| const mnemonicKey = key.slice(32, 64); | ||
| // This will be used to encrypt the mnemonic phrase (if any) | ||
| const mnemonicKey = key.slice(32, 64); | ||
| // Encrypt the keys | ||
| const counter = new aes.Counter(iv); | ||
| const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter); | ||
| const ciphertext = arrayify(aesCtr.encrypt(keysArray)); | ||
| // Encrypt the keys | ||
| const counter = new aes.Counter(iv); | ||
| const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter); | ||
| const ciphertext = arrayify(aesCtr.encrypt(keysArray)); | ||
| // Compute the message authentication code, used to check the password | ||
| const mac = keccak256(concat([macPrefix, ciphertext])) | ||
| // Compute the message authentication code, used to check the password | ||
| const mac = keccak256(concat([macPrefix, ciphertext])); | ||
| // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition | ||
| const data: { [key: string]: any } = { | ||
| id: uuidV4(uuidRandom), | ||
| version: 3, | ||
| crypto: { | ||
| cipher: "aes-128-ctr", | ||
| cipherparams: { | ||
| iv: hexlify(iv).substring(2), | ||
| // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition | ||
| const data: { [key: string]: any } = { | ||
| id: uuidV4(uuidRandom), | ||
| version: 3, | ||
| crypto: { | ||
| cipher: "aes-128-ctr", | ||
| cipherparams: { | ||
| iv: hexlify(iv).substring(2), | ||
| }, | ||
| ciphertext: hexlify(ciphertext).substring(2), | ||
| kdf: "scrypt", | ||
| kdfparams: { | ||
| salt: hexlify(salt).substring(2), | ||
| n: N, | ||
| dklen: 32, | ||
| p: p, | ||
| r: r, | ||
| }, | ||
| mac: mac.substring(2), | ||
| }, | ||
| ciphertext: hexlify(ciphertext).substring(2), | ||
| kdf: "scrypt", | ||
| kdfparams: { | ||
| salt: hexlify(salt).substring(2), | ||
| n: N, | ||
| dklen: 32, | ||
| p: p, | ||
| r: r | ||
| }, | ||
| mac: mac.substring(2) | ||
| }; | ||
| // If we have a mnemonic, encrypt it into the JSON wallet | ||
| if (hasMnemonic(account)) { | ||
| const mnemonicIv = randomBytes(16); | ||
| const mnemonicCounter = new aes.Counter(mnemonicIv); | ||
| const mnemonicAesCtr = new aes.ModeOfOperation.ctr( | ||
| mnemonicKey, | ||
| mnemonicCounter, | ||
| ); | ||
| const mnemonicCiphertext = arrayify( | ||
| mnemonicAesCtr.encrypt(toUtf8Bytes(account.mnemonic)), | ||
| ); | ||
| const now = new Date(); | ||
| const timestamp = | ||
| now.getUTCFullYear() + | ||
| "-" + | ||
| zpad(now.getUTCMonth() + 1, 2) + | ||
| "-" + | ||
| zpad(now.getUTCDate(), 2) + | ||
| "T" + | ||
| zpad(now.getUTCHours(), 2) + | ||
| "-" + | ||
| zpad(now.getUTCMinutes(), 2) + | ||
| "-" + | ||
| zpad(now.getUTCSeconds(), 2) + | ||
| ".0Z"; | ||
| data["x-ethers"] = { | ||
| client: client, | ||
| gethFilename: "UTC--" + timestamp + "--" + data.address, | ||
| mnemonicCounter: hexlify(mnemonicIv).substring(2), | ||
| mnemonicCiphertext: | ||
| hexlify(mnemonicCiphertext).substring(2), | ||
| version: "0.1", | ||
| }; | ||
| } | ||
| }; | ||
| // If we have a mnemonic, encrypt it into the JSON wallet | ||
| if (hasMnemonic(account)) { | ||
| const mnemonicIv = randomBytes(16); | ||
| const mnemonicCounter = new aes.Counter(mnemonicIv); | ||
| const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter); | ||
| const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(toUtf8Bytes(account.mnemonic))); | ||
| const now = new Date(); | ||
| const timestamp = (now.getUTCFullYear() + "-" + | ||
| zpad(now.getUTCMonth() + 1, 2) + "-" + | ||
| zpad(now.getUTCDate(), 2) + "T" + | ||
| zpad(now.getUTCHours(), 2) + "-" + | ||
| zpad(now.getUTCMinutes(), 2) + "-" + | ||
| zpad(now.getUTCSeconds(), 2) + ".0Z" | ||
| ); | ||
| data["x-ethers"] = { | ||
| client: client, | ||
| gethFilename: ("UTC--" + timestamp + "--" + data.address), | ||
| mnemonicCounter: hexlify(mnemonicIv).substring(2), | ||
| mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2), | ||
| version: "0.1" | ||
| }; | ||
| } | ||
| return JSON.stringify(data); | ||
| }); | ||
| } | ||
| return JSON.stringify(data); | ||
| }); | ||
| } |
+17
-17
| "use strict"; | ||
| import { arrayify, Bytes, BytesLike, hexlify } from "@qevm/bytes"; | ||
| import { toUtf8Bytes, UnicodeNormalizationForm } from '@qevm/strings'; | ||
| import { toUtf8Bytes, UnicodeNormalizationForm } from "@qevm/strings"; | ||
| export function looseArrayify(hexString: string): Uint8Array { | ||
| if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') { | ||
| hexString = '0x' + hexString; | ||
| if (typeof hexString === "string" && hexString.substring(0, 2) !== "0x") { | ||
| hexString = "0x" + hexString; | ||
| } | ||
@@ -15,3 +15,5 @@ return arrayify(hexString); | ||
| value = String(value); | ||
| while (value.length < length) { value = '0' + value; } | ||
| while (value.length < length) { | ||
| value = "0" + value; | ||
| } | ||
| return value; | ||
@@ -21,3 +23,3 @@ } | ||
| export function getPassword(password: Bytes | string): Uint8Array { | ||
| if (typeof(password) === 'string') { | ||
| if (typeof password === "string") { | ||
| return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC); | ||
@@ -31,12 +33,11 @@ } | ||
| const comps = path.toLowerCase().split('/'); | ||
| const comps = path.toLowerCase().split("/"); | ||
| for (let i = 0; i < comps.length; i++) { | ||
| // Search for a child object with a case-insensitive matching key | ||
| let matchingChild = null; | ||
| for (const key in currentChild) { | ||
| if (key.toLowerCase() === comps[i]) { | ||
| matchingChild = currentChild[key]; | ||
| break; | ||
| } | ||
| if (key.toLowerCase() === comps[i]) { | ||
| matchingChild = currentChild[key]; | ||
| break; | ||
| } | ||
| } | ||
@@ -72,9 +73,8 @@ | ||
| return [ | ||
| value.substring(2, 10), | ||
| value.substring(10, 14), | ||
| value.substring(14, 18), | ||
| value.substring(18, 22), | ||
| value.substring(22, 34), | ||
| value.substring(2, 10), | ||
| value.substring(10, 14), | ||
| value.substring(14, 18), | ||
| value.substring(18, 22), | ||
| value.substring(22, 34), | ||
| ].join("-"); | ||
| } | ||
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
1262
8.14%1
-50%72712
-7.28%+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated
Updated
Updated
Updated
Updated
Updated
Updated