🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@qevm/wallet

Package Overview
Dependencies
Maintainers
2
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@qevm/wallet - npm Package Compare versions

Comparing version
5.7.5
to
5.7.6
+6
-6
lib/index.d.ts

@@ -11,3 +11,4 @@ import { Provider, TransactionRequest } from "@qevm/abstract-provider";

readonly _mnemonic: () => string;
constructor(credentials: Wallet | SigningKey | ExternallyOwnedAccount | string, provider?: Provider);
private constructor();
static create(credentials: Wallet | SigningKey | ExternallyOwnedAccount | string, provider?: Provider): Promise<Wallet>;
get mnemonic(): string;

@@ -22,10 +23,9 @@ get privateKey(): string;

encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise<string>;
static createRandom(options?: any): Wallet;
static initializeWasm(): Promise<void>;
static createRandom(options?: any): Promise<Wallet>;
static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<Wallet>;
static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet;
static fromMnemonic(mnemonic: string, provider?: Provider): Wallet;
static fromMnemonic(mnemonic: string, provider?: Provider): Promise<Wallet>;
}
export declare function verifyMessage(message: Bytes | string, signature: SignatureLike): number;
export declare function verifyTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, signature: SignatureLike): number;
export declare function verifyMessage(message: Bytes | string, signature: SignatureLike): Promise<number>;
export declare function verifyTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, signature: SignatureLike): Promise<number>;
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACzH,OAAO,EAAW,KAAK,EAAiC,aAAa,EAA0B,MAAM,aAAa,CAAC;AAInH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAA4D,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAwBhH,qBAAa,MAAO,SAAQ,MAAO,YAAW,sBAAsB,EAAE,eAAe;IAEjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAI5B,QAAQ,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,CAAC;gBAErB,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,sBAAsB,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ;IA6CnG,IAAI,QAAQ,IAAI,MAAM,CAA6B;IACnD,IAAI,UAAU,IAAI,MAAM,CAA0C;IAClE,IAAI,SAAS,IAAI,MAAM,CAAyC;IAEhE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAInC,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAc3D,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAexI,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAetG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM;WAK7B,cAAc;IAI3B,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM;IAI5E,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM;CAGrE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,MAAM,CAIvF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,GAAG,MAAM,CAInK"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACzH,OAAO,EAAW,KAAK,EAAiC,aAAa,EAA0B,MAAM,aAAa,CAAC;AAInH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAA4D,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAwBhH,qBAAa,MAAO,SAAQ,MAAO,YAAW,sBAAsB,EAAE,eAAe;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B,QAAQ,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,CAAC;IAEjC,OAAO;WAQM,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,sBAAsB,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B7H,IAAI,QAAQ,IAAI,MAAM,CAA6B;IACnD,IAAI,UAAU,IAAI,MAAM,CAA0C;IAClE,IAAI,SAAS,IAAI,MAAM,CAAyC;IAEhE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAI7B,eAAe,CAAC,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAYjE,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrD,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBxI,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;WASzF,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;WAO5C,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5H,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM;WAM/D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAGpF;AAGD,wBAAsB,aAAa,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtG;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlL"}
+265
-124
"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 };
}
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -6,15 +57,14 @@ exports.Wallet = void 0;

exports.verifyTypedData = verifyTypedData;
const address_1 = require("@qevm/address");
const abstract_provider_1 = require("@qevm/abstract-provider");
const abstract_signer_1 = require("@qevm/abstract-signer");
const bytes_1 = require("@qevm/bytes");
const hash_1 = require("@qevm/hash");
const keccak256_1 = require("@ethersproject/keccak256");
const properties_1 = require("@ethersproject/properties");
const signing_key_1 = require("@qevm/signing-key");
const json_wallets_1 = require("@qevm/json-wallets");
const transactions_1 = require("@qevm/transactions");
const logger_1 = require("@ethersproject/logger");
const _version_1 = require("./_version");
const logger = new logger_1.Logger(_version_1.version);
var address_1 = require("@qevm/address");
var abstract_signer_1 = require("@qevm/abstract-signer");
var bytes_1 = require("@qevm/bytes");
var hash_1 = require("@qevm/hash");
var keccak256_1 = require("@qevm/keccak256");
var properties_1 = require("@ethersproject/properties");
var signing_key_1 = require("@qevm/signing-key");
var json_wallets_1 = require("@qevm/json-wallets");
var transactions_1 = require("@qevm/transactions");
var logger_1 = require("@ethersproject/logger");
var _version_1 = require("./_version");
var logger = new logger_1.Logger(_version_1.version);
function isAccount(value) {

@@ -28,129 +78,220 @@ return (value != null &&

function hasMnemonic(value) {
const mnemonic = value.mnemonic;
var mnemonic = value.mnemonic;
return mnemonic;
}
class Wallet extends abstract_signer_1.Signer {
constructor(credentials, provider) {
super();
if (credentials instanceof Wallet) {
const signingKey = new signing_key_1.SigningKey(credentials.privateKey, credentials.publicKey);
(0, properties_1.defineReadOnly)(this, "_signingKey", () => signingKey);
(0, properties_1.defineReadOnly)(this, "address", (0, address_1.getAddress)((0, transactions_1.computeAddress)(this.publicKey)));
(0, properties_1.defineReadOnly)(this, "_mnemonic", credentials._mnemonic);
}
else if (typeof credentials === 'string') {
(0, properties_1.defineReadOnly)(this, "_signingKey", () => (signing_key_1.SigningKey.generateFromMnemonics(credentials)));
(0, properties_1.defineReadOnly)(this, "address", (0, address_1.getAddress)((0, transactions_1.computeAddress)(this.publicKey)));
(0, properties_1.defineReadOnly)(this, "_mnemonic", () => credentials);
}
else if (signing_key_1.SigningKey.isSigningKey(credentials)) {
(0, properties_1.defineReadOnly)(this, "_signingKey", () => credentials);
(0, properties_1.defineReadOnly)(this, "address", (0, address_1.getAddress)((0, transactions_1.computeAddress)(this.publicKey)));
(0, properties_1.defineReadOnly)(this, "_mnemonic", () => null);
}
else if (isAccount(credentials)) {
(0, properties_1.defineReadOnly)(this, "_signingKey", () => new signing_key_1.SigningKey(credentials.privateKey, credentials.publicKey));
(0, properties_1.defineReadOnly)(this, "address", (0, address_1.getAddress)((0, transactions_1.computeAddress)(this.publicKey)));
if (hasMnemonic(credentials)) {
(0, properties_1.defineReadOnly)(this, "_mnemonic", () => credentials.mnemonic);
const tempMnemSignature = signing_key_1.SigningKey.generateFromMnemonics(credentials.mnemonic);
if (tempMnemSignature.privateKey !== this._signingKey().privateKey) {
logger.throwArgumentError("mnemonic/keys mismatch", "privateKey", "[REDACTED]");
var Wallet = /** @class */ (function (_super) {
__extends(Wallet, _super);
function Wallet(signingKey, mnemonic, provider) {
var _this = _super.call(this) || this;
(0, properties_1.defineReadOnly)(_this, "_signingKey", function () { return signingKey; });
(0, properties_1.defineReadOnly)(_this, "address", (0, address_1.getAddress)((0, transactions_1.computeAddress)(signingKey.publicKey)));
(0, properties_1.defineReadOnly)(_this, "_mnemonic", function () { return mnemonic; });
(0, properties_1.defineReadOnly)(_this, "provider", provider || null);
return _this;
}
Wallet.create = function (credentials, provider) {
return __awaiter(this, void 0, void 0, function () {
var _a, signingKey, signingKey, testKey;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
if (!(credentials instanceof Wallet)) return [3 /*break*/, 2];
_a = Wallet.bind;
return [4 /*yield*/, signing_key_1.SigningKey.create(credentials.privateKey, credentials.publicKey)];
case 1: return [2 /*return*/, new (_a.apply(Wallet, [void 0, _b.sent(), credentials.mnemonic, provider]))()];
case 2:
if (!(typeof credentials === "string")) return [3 /*break*/, 4];
return [4 /*yield*/, signing_key_1.SigningKey.generateFromMnemonics(credentials)];
case 3:
signingKey = _b.sent();
return [2 /*return*/, new Wallet(signingKey, credentials, provider)];
case 4:
if (signing_key_1.SigningKey.isSigningKey(credentials)) {
return [2 /*return*/, new Wallet(credentials, null, provider)];
}
if (!isAccount(credentials)) return [3 /*break*/, 8];
return [4 /*yield*/, signing_key_1.SigningKey.create(credentials.privateKey, credentials.publicKey)];
case 5:
signingKey = _b.sent();
if (!hasMnemonic(credentials)) return [3 /*break*/, 7];
return [4 /*yield*/, signing_key_1.SigningKey.generateFromMnemonics(credentials.mnemonic)];
case 6:
testKey = _b.sent();
if (testKey.privateKey !== signingKey.privateKey || testKey.publicKey !== signingKey.publicKey) {
throw new Error("mnemonic/keys mismatch");
}
return [2 /*return*/, new Wallet(signingKey, credentials.mnemonic, provider)];
case 7: return [2 /*return*/, new Wallet(signingKey, null, provider)];
case 8: throw new Error("Invalid credentials");
}
if (tempMnemSignature.publicKey !== this._signingKey().publicKey) {
logger.throwArgumentError("mnemonic/keys mismatch", "publicKey", "[REDACTED]");
}
}
else {
(0, properties_1.defineReadOnly)(this, "_mnemonic", () => null);
}
}
else {
logger.throwArgumentError("invalid credentials", "credentials", credentials);
}
if (provider && !abstract_provider_1.Provider.isProvider(provider)) {
logger.throwArgumentError("invalid provider", "provider", provider);
}
(0, properties_1.defineReadOnly)(this, "provider", provider || null);
}
get mnemonic() { return this._mnemonic(); }
get privateKey() { return this._signingKey().privateKey; }
get publicKey() { return this._signingKey().publicKey; }
getAddress() {
});
});
};
Object.defineProperty(Wallet.prototype, "mnemonic", {
get: function () { return this._mnemonic(); },
enumerable: false,
configurable: true
});
Object.defineProperty(Wallet.prototype, "privateKey", {
get: function () { return this._signingKey().privateKey; },
enumerable: false,
configurable: true
});
Object.defineProperty(Wallet.prototype, "publicKey", {
get: function () { return this._signingKey().publicKey; },
enumerable: false,
configurable: true
});
Wallet.prototype.getAddress = function () {
return Promise.resolve(this.address);
}
connect(provider) {
return new Wallet(this, provider);
}
signTransaction(transaction) {
return (0, properties_1.resolveProperties)(transaction).then((tx) => {
if (tx.from != null) {
if ((0, address_1.getAddress)(tx.from) !== this.address) {
logger.throwArgumentError("transaction from address mismatch", "transaction.from", transaction.from);
};
Wallet.prototype.connect = function (provider) {
return new Wallet(this._signingKey(), this._mnemonic(), provider);
};
Wallet.prototype.signTransaction = function (transaction) {
return __awaiter(this, void 0, void 0, function () {
var tx, digest, signature;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, (0, properties_1.resolveProperties)(transaction)];
case 1:
tx = _a.sent();
if (tx.from != null && (0, address_1.getAddress)(tx.from) !== this.address) {
logger.throwArgumentError("transaction from address mismatch", "transaction.from", transaction.from);
}
delete tx.from;
digest = (0, keccak256_1.keccak256)((0, transactions_1.serialize)(tx));
return [4 /*yield*/, this._signingKey().signDigest(digest)];
case 2:
signature = _a.sent();
return [2 /*return*/, (0, transactions_1.serialize)(tx, signature)];
}
delete tx.from;
}
const signature = this._signingKey().signDigest((0, keccak256_1.keccak256)((0, transactions_1.serialize)(tx)));
return (0, transactions_1.serialize)(tx, signature);
});
});
}
async signMessage(message) {
return (0, bytes_1.joinSignature)(this._signingKey().signDigest((0, hash_1.hashMessage)(message)));
}
async _signTypedData(domain, types, value) {
// Populate any ENS names
const populated = await hash_1._TypedDataEncoder.resolveNames(domain, types, value, (name) => {
if (this.provider == null) {
logger.throwError("cannot resolve ENS names without a provider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
operation: "resolveName",
value: name
});
}
return this.provider.resolveName(name);
};
Wallet.prototype.signMessage = function (message) {
return __awaiter(this, void 0, void 0, function () {
var _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = bytes_1.joinSignature;
return [4 /*yield*/, this._signingKey().signDigest((0, hash_1.hashMessage)(message))];
case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
}
});
});
return (0, bytes_1.joinSignature)(this._signingKey().signDigest(hash_1._TypedDataEncoder.hash(populated.domain, types, populated.value)));
}
encrypt(password, options, progressCallback) {
if (typeof (options) === "function" && !progressCallback) {
};
Wallet.prototype._signTypedData = function (domain, types, value) {
return __awaiter(this, void 0, void 0, function () {
var populated, _a;
var _this = this;
return __generator(this, function (_b) {
switch (_b.label) {
case 0: return [4 /*yield*/, hash_1._TypedDataEncoder.resolveNames(domain, types, value, function (name) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
if (!this.provider) {
logger.throwError("cannot resolve ENS names without a provider", logger_1.Logger.errors.UNSUPPORTED_OPERATION, {
operation: "resolveName",
value: name
});
}
return [2 /*return*/, this.provider.resolveName(name)];
});
}); })];
case 1:
populated = _b.sent();
_a = bytes_1.joinSignature;
return [4 /*yield*/, this._signingKey().signDigest(hash_1._TypedDataEncoder.hash(populated.domain, types, populated.value))];
case 2: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];
}
});
});
};
Wallet.prototype.encrypt = function (password, options, progressCallback) {
if (typeof options === "function") {
progressCallback = options;
options = {};
}
if (progressCallback && typeof (progressCallback) !== "function") {
throw new Error("invalid callback");
}
if (!options) {
options = {};
}
return (0, json_wallets_1.encryptKeystore)(this, password, options, progressCallback);
}
static createRandom(options) {
const result = signing_key_1.SigningKey.dilithiumInstance.generateKeys(1, null);
return new Wallet(new signing_key_1.SigningKey(result.privateKey, result.publicKey));
}
static async initializeWasm() {
await signing_key_1.SigningKey.initialize();
}
static fromEncryptedJson(json, password, progressCallback) {
return (0, json_wallets_1.decryptJsonWallet)(json, password, progressCallback).then((account) => {
return new Wallet(account);
return (0, json_wallets_1.encryptKeystore)(this, password, options || {}, progressCallback);
};
Wallet.createRandom = function (options) {
return __awaiter(this, void 0, void 0, function () {
var result, signingKey;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, signing_key_1.SigningKey.ensureInitialized()];
case 1:
_a.sent();
result = signing_key_1.SigningKey.dilithiumInstance.generateKeys(1, null);
return [4 /*yield*/, signing_key_1.SigningKey.create(result.privateKey, result.publicKey)];
case 2:
signingKey = _a.sent();
return [2 /*return*/, new Wallet(signingKey, null)];
}
});
});
}
static fromEncryptedJsonSync(json, password) {
return new Wallet((0, json_wallets_1.decryptJsonWalletSync)(json, password));
}
static fromMnemonic(mnemonic, provider) {
return new Wallet(mnemonic, provider);
}
}
};
Wallet.fromEncryptedJson = function (json, password, progressCallback) {
return __awaiter(this, void 0, void 0, function () {
var account;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, (0, json_wallets_1.decryptJsonWallet)(json, password, progressCallback)];
case 1:
account = _a.sent();
return [4 /*yield*/, Wallet.create(account)];
case 2: return [2 /*return*/, _a.sent()];
}
});
});
};
Wallet.fromEncryptedJsonSync = function (json, password) {
var account = (0, json_wallets_1.decryptJsonWalletSync)(json, password);
var signingKey = signing_key_1.SigningKey.createSync(account.privateKey, account.publicKey);
return new Wallet(signingKey, null);
};
Wallet.fromMnemonic = function (mnemonic, provider) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, Wallet.create(mnemonic, provider)];
case 1: return [2 /*return*/, _a.sent()];
}
});
});
};
return Wallet;
}(abstract_signer_1.Signer));
exports.Wallet = Wallet;
function verifyMessage(message, signature) {
const sig = (0, bytes_1.splitSignature)(signature);
const varResult = signing_key_1.SigningKey.dilithiumInstance.verify((0, bytes_1.arrayify)(sig.signature), (0, bytes_1.arrayify)((0, hash_1.hashMessage)(message)), (0, bytes_1.arrayify)(sig.publicKey), 1);
return varResult.result;
return __awaiter(this, void 0, void 0, function () {
var sig, varResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, signing_key_1.SigningKey.ensureInitialized()];
case 1:
_a.sent();
sig = (0, bytes_1.splitSignature)(signature);
varResult = signing_key_1.SigningKey.dilithiumInstance.verify((0, bytes_1.arrayify)(sig.signature), (0, bytes_1.arrayify)((0, hash_1.hashMessage)(message)), (0, bytes_1.arrayify)(sig.publicKey), 1);
return [2 /*return*/, varResult.result];
}
});
});
}
function verifyTypedData(domain, types, value, signature) {
const sig = (0, bytes_1.splitSignature)(signature);
const varResult = signing_key_1.SigningKey.dilithiumInstance.verify(sig.signature, hash_1._TypedDataEncoder.hash(domain, types, value), sig.publicKey, 1);
return varResult.result;
return __awaiter(this, void 0, void 0, function () {
var sig, varResult;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, signing_key_1.SigningKey.ensureInitialized()];
case 1:
_a.sent();
sig = (0, bytes_1.splitSignature)(signature);
varResult = signing_key_1.SigningKey.dilithiumInstance.verify(sig.signature, hash_1._TypedDataEncoder.hash(domain, types, value), sig.publicKey, 1);
return [2 /*return*/, varResult.result];
}
});
});
}
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src.ts/index.ts"],"names":[],"mappings":"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"}

@@ -37,3 +37,3 @@ {

"types": "./lib/index.d.ts",
"version": "5.7.5"
"version": "5.7.6"
}

@@ -8,3 +8,3 @@ "use strict";

import { hashMessage, _TypedDataEncoder } from "@qevm/hash";
import { keccak256 } from "@ethersproject/keccak256";
import { keccak256 } from "@qevm/keccak256";
import { defineReadOnly, resolveProperties } from "@ethersproject/properties";

@@ -37,54 +37,45 @@ import { SigningKey } from "@qevm/signing-key";

export class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {
readonly address: string;
readonly provider: Provider;
// Wrapping the _signingKey and _mnemonic in a getter function prevents
// leaking the private key in console.log; still, be careful! :)
readonly _signingKey: () => SigningKey;
readonly _mnemonic: () => string;
constructor(credentials: Wallet | SigningKey | ExternallyOwnedAccount | string, provider?: Provider) {
private constructor(signingKey: SigningKey, mnemonic: string | null, provider?: Provider) {
super();
defineReadOnly(this, "_signingKey", () => signingKey);
defineReadOnly(this, "address", getAddress(computeAddress(signingKey.publicKey)));
defineReadOnly(this, "_mnemonic", () => mnemonic);
defineReadOnly(this, "provider", provider || null);
}
static async create(credentials: Wallet | SigningKey | ExternallyOwnedAccount | string, provider?: Provider): Promise<Wallet> {
if (credentials instanceof Wallet) {
const signingKey = new SigningKey(credentials.privateKey, credentials.publicKey);
defineReadOnly(this, "_signingKey", () => signingKey);
defineReadOnly(this, "address", getAddress(computeAddress(this.publicKey)));
defineReadOnly(this, "_mnemonic", credentials._mnemonic);
}else if(typeof credentials === 'string'){
defineReadOnly(this, "_signingKey", () => (SigningKey.generateFromMnemonics(credentials)));
defineReadOnly(this, "address", getAddress(computeAddress(this.publicKey)));
defineReadOnly(this, "_mnemonic", (): string => credentials);
} else if(SigningKey.isSigningKey(credentials)) {
defineReadOnly(this, "_signingKey", () => (<SigningKey>credentials));
defineReadOnly(this, "address", getAddress(computeAddress(this.publicKey)));
defineReadOnly(this, "_mnemonic", (): string => null);
}else if(isAccount(credentials)){
defineReadOnly(this, "_signingKey", () => new SigningKey(credentials.privateKey, credentials.publicKey));
defineReadOnly(this, "address", getAddress(computeAddress(this.publicKey)));
return new Wallet(await SigningKey.create(credentials.privateKey, credentials.publicKey), credentials.mnemonic, provider);
}
if (typeof credentials === "string") {
const signingKey = await SigningKey.generateFromMnemonics(credentials);
return new Wallet(signingKey, credentials, provider);
}
if (SigningKey.isSigningKey(credentials)) {
return new Wallet(credentials, null, provider);
}
if (isAccount(credentials)) {
const signingKey = await SigningKey.create(credentials.privateKey, credentials.publicKey);
if (hasMnemonic(credentials)) {
defineReadOnly(this, "_mnemonic", (): string => credentials.mnemonic);
const tempMnemSignature = SigningKey.generateFromMnemonics(credentials.mnemonic);
if(tempMnemSignature.privateKey !== this._signingKey().privateKey ){
logger.throwArgumentError("mnemonic/keys mismatch", "privateKey", "[REDACTED]");
const testKey = await SigningKey.generateFromMnemonics(credentials.mnemonic);
if (testKey.privateKey !== signingKey.privateKey || testKey.publicKey !== signingKey.publicKey) {
throw new Error("mnemonic/keys mismatch");
}
if(tempMnemSignature.publicKey !== this._signingKey().publicKey ){
logger.throwArgumentError("mnemonic/keys mismatch", "publicKey", "[REDACTED]");
}
return new Wallet(signingKey, credentials.mnemonic, provider);
} else {
defineReadOnly(this, "_mnemonic", (): string => null);
return new Wallet(signingKey, null, provider);
}
}else{
logger.throwArgumentError("invalid credentials", "credentials", credentials);
}
if (provider && !Provider.isProvider(provider)) {
logger.throwArgumentError("invalid provider", "provider", provider);
}
defineReadOnly(this, "provider", provider || null);
throw new Error("Invalid credentials");
}

@@ -101,27 +92,24 @@

connect(provider: Provider): Wallet {
return new Wallet(this, provider);
return new Wallet(this._signingKey(), this._mnemonic(), provider);
}
signTransaction(transaction: TransactionRequest): Promise<string> {
return resolveProperties(transaction).then((tx) => {
if (tx.from != null) {
if (getAddress(tx.from) !== this.address) {
logger.throwArgumentError("transaction from address mismatch", "transaction.from", transaction.from);
}
delete tx.from;
}
async signTransaction(transaction: TransactionRequest): Promise<string> {
const tx = await resolveProperties(transaction);
if (tx.from != null && getAddress(tx.from) !== this.address) {
logger.throwArgumentError("transaction from address mismatch", "transaction.from", transaction.from);
}
delete tx.from;
const signature = this._signingKey().signDigest(keccak256(serialize(<UnsignedTransaction>tx)));
return serialize(<UnsignedTransaction>tx, signature);
});
const digest = keccak256(serialize(<UnsignedTransaction>tx));
const signature = await this._signingKey().signDigest(digest);
return serialize(<UnsignedTransaction>tx, signature);
}
async signMessage(message: Bytes | string): Promise<string> {
return joinSignature(this._signingKey().signDigest(hashMessage(message)));
return joinSignature(await this._signingKey().signDigest(hashMessage(message)));
}
async _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {
// Populate any ENS names
const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {
if (this.provider == null) {
const populated = await _TypedDataEncoder.resolveNames(domain, types, value, async (name: string) => {
if (!this.provider) {
logger.throwError("cannot resolve ENS names without a provider", Logger.errors.UNSUPPORTED_OPERATION, {

@@ -135,7 +123,9 @@ operation: "resolveName",

return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));
return joinSignature(await this._signingKey().signDigest(
_TypedDataEncoder.hash(populated.domain, types, populated.value)
));
}
encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise<string> {
if (typeof(options) === "function" && !progressCallback) {
if (typeof options === "function") {
progressCallback = options;

@@ -145,36 +135,31 @@ options = {};

if (progressCallback && typeof(progressCallback) !== "function") {
throw new Error("invalid callback");
}
if (!options) { options = {}; }
return encryptKeystore(this, password, options, progressCallback);
return encryptKeystore(this, password, options || {}, progressCallback);
}
static createRandom(options?: any): Wallet {
static async createRandom(options?: any): Promise<Wallet> {
await SigningKey.ensureInitialized();
const result = SigningKey.dilithiumInstance.generateKeys(1, null);
return new Wallet(new SigningKey(result.privateKey, result.publicKey));
const signingKey = await SigningKey.create(result.privateKey, result.publicKey);
return new Wallet(signingKey, null);
}
static async initializeWasm(){
await SigningKey.initialize();
static async fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<Wallet> {
const account = await decryptJsonWallet(json, password, progressCallback);
return await Wallet.create(account);
}
static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<Wallet> {
return decryptJsonWallet(json, password, progressCallback).then((account) => {
return new Wallet(account);
});
}
static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {
return new Wallet(decryptJsonWalletSync(json, password));
const account = decryptJsonWalletSync(json, password);
const signingKey = SigningKey.createSync(account.privateKey, account.publicKey);
return new Wallet(signingKey, null);
}
static fromMnemonic(mnemonic: string, provider?: Provider): Wallet {
return new Wallet(mnemonic, provider);
static async fromMnemonic(mnemonic: string, provider?: Provider): Promise<Wallet> {
return await Wallet.create(mnemonic, provider);
}
}
export function verifyMessage(message: Bytes | string, signature: SignatureLike): number {
export async function verifyMessage(message: Bytes | string, signature: SignatureLike): Promise<number> {
await SigningKey.ensureInitialized();
const sig: Signature = splitSignature(signature);

@@ -185,3 +170,4 @@ const varResult: VerificationResult = SigningKey.dilithiumInstance.verify(arrayify(sig.signature), arrayify(hashMessage(message)), arrayify(sig.publicKey), 1);

export function verifyTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, signature: SignatureLike): number {
export async function verifyTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, signature: SignatureLike): Promise<number> {
await SigningKey.ensureInitialized();
const sig: Signature = splitSignature(signature);

@@ -188,0 +174,0 @@ const varResult: VerificationResult = SigningKey.dilithiumInstance.verify(sig.signature, _TypedDataEncoder.hash(domain, types, value), sig.publicKey, 1);