Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@qevm/json-wallets

Package Overview
Dependencies
Maintainers
3
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@qevm/json-wallets - npm Package Compare versions

Comparing version
5.7.2
to
5.7.3
+1
-1
lib/_version.d.ts

@@ -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
"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"}
"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"}

@@ -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 +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"}

@@ -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"}
"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"}

@@ -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 +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"}
{
"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"
}
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";

@@ -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: "",
});
}
}

@@ -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,
};

@@ -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 @@

}

@@ -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);
});
}
"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("-");
}