viem 0.0.0-main.20240424T120803 → 0.0.0-main.20240424T233310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/actions/public/verifyHash.js +12 -3
- package/_cjs/actions/public/verifyHash.js.map +1 -1
- package/_cjs/actions/public/verifyMessage.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/utils/signature/hexToSignature.js +18 -3
- package/_cjs/utils/signature/hexToSignature.js.map +1 -1
- package/_cjs/utils/signature/recoverMessageAddress.js.map +1 -1
- package/_cjs/utils/signature/recoverPublicKey.js +22 -6
- package/_cjs/utils/signature/recoverPublicKey.js.map +1 -1
- package/_cjs/utils/signature/verifyMessage.js.map +1 -1
- package/_esm/actions/public/verifyHash.js +11 -2
- package/_esm/actions/public/verifyHash.js.map +1 -1
- package/_esm/actions/public/verifyMessage.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/utils/signature/hexToSignature.js +18 -3
- package/_esm/utils/signature/hexToSignature.js.map +1 -1
- package/_esm/utils/signature/recoverMessageAddress.js.map +1 -1
- package/_esm/utils/signature/recoverPublicKey.js +25 -9
- package/_esm/utils/signature/recoverPublicKey.js.map +1 -1
- package/_esm/utils/signature/verifyMessage.js.map +1 -1
- package/_types/actions/public/verifyHash.d.ts +5 -5
- package/_types/actions/public/verifyHash.d.ts.map +1 -1
- package/_types/actions/public/verifyMessage.d.ts +2 -2
- package/_types/actions/public/verifyMessage.d.ts.map +1 -1
- package/_types/actions/public/verifyTypedData.d.ts +2 -2
- package/_types/actions/public/verifyTypedData.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts +2 -2
- package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts.map +1 -1
- package/_types/utils/signature/hexToSignature.d.ts +5 -0
- package/_types/utils/signature/hexToSignature.d.ts.map +1 -1
- package/_types/utils/signature/recoverAddress.d.ts +2 -2
- package/_types/utils/signature/recoverAddress.d.ts.map +1 -1
- package/_types/utils/signature/recoverMessageAddress.d.ts +2 -2
- package/_types/utils/signature/recoverMessageAddress.d.ts.map +1 -1
- package/_types/utils/signature/recoverPublicKey.d.ts +2 -2
- package/_types/utils/signature/recoverPublicKey.d.ts.map +1 -1
- package/_types/utils/signature/recoverTransactionAddress.d.ts +2 -2
- package/_types/utils/signature/recoverTransactionAddress.d.ts.map +1 -1
- package/_types/utils/signature/recoverTypedDataAddress.d.ts +2 -2
- package/_types/utils/signature/recoverTypedDataAddress.d.ts.map +1 -1
- package/_types/utils/signature/verifyMessage.d.ts +2 -2
- package/_types/utils/signature/verifyMessage.d.ts.map +1 -1
- package/_types/utils/signature/verifyTypedData.d.ts +2 -2
- package/_types/utils/signature/verifyTypedData.d.ts.map +1 -1
- package/actions/public/verifyHash.ts +15 -7
- package/actions/public/verifyMessage.ts +7 -2
- package/actions/public/verifyTypedData.ts +2 -2
- package/errors/version.ts +1 -1
- package/experimental/eip3074/utils/recoverAuthMessageAddress.ts +2 -2
- package/package.json +1 -1
- package/utils/signature/hexToSignature.ts +16 -3
- package/utils/signature/recoverAddress.ts +2 -2
- package/utils/signature/recoverMessageAddress.ts +7 -2
- package/utils/signature/recoverPublicKey.ts +36 -13
- package/utils/signature/recoverTransactionAddress.ts +2 -2
- package/utils/signature/recoverTypedDataAddress.ts +2 -2
- package/utils/signature/verifyMessage.ts +7 -2
- package/utils/signature/verifyTypedData.ts +2 -2
@@ -1,18 +1,27 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.verifyHash = void 0;
|
4
|
+
const index_js_1 = require("../../accounts/index.js");
|
4
5
|
const abis_js_1 = require("../../constants/abis.js");
|
5
6
|
const contracts_js_1 = require("../../constants/contracts.js");
|
6
7
|
const contract_js_1 = require("../../errors/contract.js");
|
8
|
+
const encodeDeployData_js_1 = require("../../utils/abi/encodeDeployData.js");
|
7
9
|
const isBytesEqual_js_1 = require("../../utils/data/isBytesEqual.js");
|
10
|
+
const isHex_js_1 = require("../../utils/data/isHex.js");
|
11
|
+
const toHex_js_1 = require("../../utils/encoding/toHex.js");
|
8
12
|
const getAction_js_1 = require("../../utils/getAction.js");
|
9
|
-
const index_js_1 = require("../../utils/index.js");
|
10
13
|
const call_js_1 = require("./call.js");
|
11
14
|
async function verifyHash(client, { address, hash, signature, ...callRequest }) {
|
12
|
-
const signatureHex = (
|
15
|
+
const signatureHex = (() => {
|
16
|
+
if ((0, isHex_js_1.isHex)(signature))
|
17
|
+
return signature;
|
18
|
+
if (typeof signature === 'object' && 'r' in signature && 's' in signature)
|
19
|
+
return (0, index_js_1.signatureToHex)(signature);
|
20
|
+
return (0, toHex_js_1.bytesToHex)(signature);
|
21
|
+
})();
|
13
22
|
try {
|
14
23
|
const { data } = await (0, getAction_js_1.getAction)(client, call_js_1.call, 'call')({
|
15
|
-
data: (0,
|
24
|
+
data: (0, encodeDeployData_js_1.encodeDeployData)({
|
16
25
|
abi: abis_js_1.universalSignatureValidatorAbi,
|
17
26
|
args: [address, hash, signatureHex],
|
18
27
|
bytecode: contracts_js_1.universalSignatureValidatorByteCode,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":";;;AAEA,sDAAwD;AAGxD,qDAAwE;AACxE,+DAAkF;AAClF,0DAA6D;AAI7D,6EAG4C;AAC5C,sEAGyC;AACzC,wDAAsE;AACtE,4DAA+E;AAC/E,2DAAoD;AACpD,uCAAyE;AA+BlE,KAAK,UAAU,UAAU,CAC9B,MAAiC,EACjC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,WAAW,EAAwB;IAElE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;QACzB,IAAI,IAAA,gBAAK,EAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;QACtC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS;YACvE,OAAO,IAAA,yBAAc,EAAC,SAAS,CAAC,CAAA;QAClC,OAAO,IAAA,qBAAU,EAAC,SAAS,CAAC,CAAA;IAC9B,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,wBAAS,EAC9B,MAAM,EACN,cAAI,EACJ,MAAM,CACP,CAAC;YACA,IAAI,EAAE,IAAA,sCAAgB,EAAC;gBACrB,GAAG,EAAE,wCAA8B;gBACnC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;gBACnC,QAAQ,EAAE,kDAAmC;aAC9C,CAAC;YACF,GAAG,WAAW;SACc,CAAC,CAAA;QAE/B,OAAO,IAAA,8BAAY,EAAC,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gCAAkB,EAAE,CAAC;YAIxC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AApCD,gCAoCC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../actions/public/verifyMessage.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../actions/public/verifyMessage.ts"],"names":[],"mappings":";;;AAYA,mDAAkD;AAElD,mDAIwB;AA6BjB,KAAK,UAAU,aAAa,CACjC,MAAiC,EACjC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAA2B;IAExE,MAAM,IAAI,GAAG,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAA;IACjC,OAAO,IAAA,0BAAU,EAAC,MAAM,EAAE;QACxB,OAAO;QACP,IAAI;QACJ,SAAS;QACT,GAAG,WAAW;KACf,CAAC,CAAA;AACJ,CAAC;AAXD,sCAWC"}
|
package/_cjs/errors/version.js
CHANGED
@@ -5,12 +5,27 @@ const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
5
5
|
const toHex_js_1 = require("../../utils/encoding/toHex.js");
|
6
6
|
function hexToSignature(signatureHex) {
|
7
7
|
const { r, s } = secp256k1_1.secp256k1.Signature.fromCompact(signatureHex.slice(2, 130));
|
8
|
-
const
|
8
|
+
const yParityOrV = Number(`0x${signatureHex.slice(130)}`);
|
9
|
+
const [v, yParity] = (() => {
|
10
|
+
if (yParityOrV === 0 || yParityOrV === 1)
|
11
|
+
return [undefined, yParityOrV];
|
12
|
+
if (yParityOrV === 27)
|
13
|
+
return [BigInt(yParityOrV), 0];
|
14
|
+
if (yParityOrV === 28)
|
15
|
+
return [BigInt(yParityOrV), 1];
|
16
|
+
throw new Error('Invalid yParityOrV value');
|
17
|
+
})();
|
18
|
+
if (typeof v !== 'undefined')
|
19
|
+
return {
|
20
|
+
r: (0, toHex_js_1.numberToHex)(r, { size: 32 }),
|
21
|
+
s: (0, toHex_js_1.numberToHex)(s, { size: 32 }),
|
22
|
+
v,
|
23
|
+
yParity,
|
24
|
+
};
|
9
25
|
return {
|
10
26
|
r: (0, toHex_js_1.numberToHex)(r, { size: 32 }),
|
11
27
|
s: (0, toHex_js_1.numberToHex)(s, { size: 32 }),
|
12
|
-
|
13
|
-
yParity: v === 28n ? 1 : 0,
|
28
|
+
yParity,
|
14
29
|
};
|
15
30
|
}
|
16
31
|
exports.hexToSignature = hexToSignature;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hexToSignature.js","sourceRoot":"","sources":["../../../utils/signature/hexToSignature.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAInD,4DAGsC;AActC,SAAgB,cAAc,CAAC,YAAiB;IAC9C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,qBAAS,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC5E,MAAM,
|
1
|
+
{"version":3,"file":"hexToSignature.js","sourceRoot":"","sources":["../../../utils/signature/hexToSignature.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AAInD,4DAGsC;AActC,SAAgB,cAAc,CAAC,YAAiB;IAC9C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,qBAAS,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzD,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;QACzB,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QACxE,IAAI,UAAU,KAAK,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,IAAI,UAAU,KAAK,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,OAAO,CAAC,KAAK,WAAW;QAC1B,OAAO;YACL,CAAC,EAAE,IAAA,sBAAW,EAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC/B,CAAC,EAAE,IAAA,sBAAW,EAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC/B,CAAC;YACD,OAAO;SACY,CAAA;IACvB,OAAO;QACL,CAAC,EAAE,IAAA,sBAAW,EAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/B,CAAC,EAAE,IAAA,sBAAW,EAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/B,OAAO;KACY,CAAA;AACvB,CAAC;AAtBD,wCAsBC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverMessageAddress.js","sourceRoot":"","sources":["../../../utils/signature/recoverMessageAddress.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"recoverMessageAddress.js","sourceRoot":"","sources":["../../../utils/signature/recoverMessageAddress.ts"],"names":[],"mappings":";;;AAUA,qDAAyE;AACzE,2DAG4B;AAcrB,KAAK,UAAU,qBAAqB,CAAC,EAC1C,OAAO,EACP,SAAS,GACuB;IAChC,OAAO,IAAA,kCAAc,EAAC,EAAE,IAAI,EAAE,IAAA,4BAAW,EAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AAClE,CAAC;AALD,sDAKC"}
|
@@ -5,17 +5,33 @@ const isHex_js_1 = require("../data/isHex.js");
|
|
5
5
|
const fromHex_js_1 = require("../encoding/fromHex.js");
|
6
6
|
const toHex_js_1 = require("../encoding/toHex.js");
|
7
7
|
async function recoverPublicKey({ hash, signature, }) {
|
8
|
-
const signatureHex = (0, isHex_js_1.isHex)(signature) ? signature : (0, toHex_js_1.toHex)(signature);
|
9
8
|
const hashHex = (0, isHex_js_1.isHex)(hash) ? hash : (0, toHex_js_1.toHex)(hash);
|
10
|
-
let v = (0, fromHex_js_1.hexToNumber)(`0x${signatureHex.slice(130)}`);
|
11
|
-
if (v === 0 || v === 1)
|
12
|
-
v += 27;
|
13
9
|
const { secp256k1 } = await Promise.resolve().then(() => require('@noble/curves/secp256k1'));
|
14
|
-
const
|
15
|
-
|
10
|
+
const signature_ = await (async () => {
|
11
|
+
if (typeof signature === 'object' && 'r' in signature && 's' in signature) {
|
12
|
+
const { r, s, v, yParity } = signature;
|
13
|
+
const yParityOrV = Number(yParity ?? v);
|
14
|
+
const recoveryBit = toRecoveryBit(yParityOrV);
|
15
|
+
return new secp256k1.Signature((0, fromHex_js_1.hexToBigInt)(r), (0, fromHex_js_1.hexToBigInt)(s)).addRecoveryBit(recoveryBit);
|
16
|
+
}
|
17
|
+
const signatureHex = (0, isHex_js_1.isHex)(signature) ? signature : (0, toHex_js_1.toHex)(signature);
|
18
|
+
const yParityOrV = (0, fromHex_js_1.hexToNumber)(`0x${signatureHex.slice(130)}`);
|
19
|
+
const recoveryBit = toRecoveryBit(yParityOrV);
|
20
|
+
return secp256k1.Signature.fromCompact(signatureHex.substring(2, 130)).addRecoveryBit(recoveryBit);
|
21
|
+
})();
|
22
|
+
const publicKey = signature_
|
16
23
|
.recoverPublicKey(hashHex.substring(2))
|
17
24
|
.toHex(false);
|
18
25
|
return `0x${publicKey}`;
|
19
26
|
}
|
20
27
|
exports.recoverPublicKey = recoverPublicKey;
|
28
|
+
function toRecoveryBit(yParityOrV) {
|
29
|
+
if (yParityOrV === 0 || yParityOrV === 1)
|
30
|
+
return yParityOrV;
|
31
|
+
if (yParityOrV === 27)
|
32
|
+
return 0;
|
33
|
+
if (yParityOrV === 28)
|
34
|
+
return 1;
|
35
|
+
throw new Error('Invalid yParityOrV value');
|
36
|
+
}
|
21
37
|
//# sourceMappingURL=recoverPublicKey.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverPublicKey.js","sourceRoot":"","sources":["../../../utils/signature/recoverPublicKey.ts"],"names":[],"mappings":";;;AAEA,+CAA6D;AAC7D,
|
1
|
+
{"version":3,"file":"recoverPublicKey.js","sourceRoot":"","sources":["../../../utils/signature/recoverPublicKey.ts"],"names":[],"mappings":";;;AAEA,+CAA6D;AAC7D,uDAI+B;AAC/B,mDAA4C;AAcrC,KAAK,UAAU,gBAAgB,CAAC,EACrC,IAAI,EACJ,SAAS,GACkB;IAC3B,MAAM,OAAO,GAAG,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAA;IAEhD,MAAM,EAAE,SAAS,EAAE,GAAG,2CAAa,yBAAyB,EAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAEnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;YACtC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAE,CAAA;YACxC,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;YAC7C,OAAO,IAAI,SAAS,CAAC,SAAS,CAC5B,IAAA,wBAAW,EAAC,CAAC,CAAC,EACd,IAAA,wBAAW,EAAC,CAAC,CAAC,CACf,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC/B,CAAC;QAGD,MAAM,YAAY,GAAG,IAAA,gBAAK,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,gBAAK,EAAC,SAAS,CAAC,CAAA;QACpE,MAAM,UAAU,GAAG,IAAA,wBAAW,EAAC,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QAC7C,OAAO,SAAS,CAAC,SAAS,CAAC,WAAW,CACpC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAC/B,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,SAAS,GAAG,UAAU;SACzB,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACtC,KAAK,CAAC,KAAK,CAAC,CAAA;IACf,OAAO,KAAK,SAAS,EAAE,CAAA;AACzB,CAAC;AAhCD,4CAgCC;AAED,SAAS,aAAa,CAAC,UAAkB;IACvC,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,UAAU,CAAA;IAC3D,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,CAAC,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,CAAC,CAAA;IAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAC7C,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../utils/signature/verifyMessage.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../utils/signature/verifyMessage.ts"],"names":[],"mappings":";;;AAQA,4DAA+E;AAC/E,oEAGqC;AAGrC,yEAGmC;AA+B5B,KAAK,UAAU,aAAa,CAAC,EAClC,OAAO,EACP,OAAO,EACP,SAAS,GACe;IACxB,OAAO,IAAA,kCAAc,EACnB,IAAA,0BAAU,EAAC,OAAO,CAAC,EACnB,MAAM,IAAA,gDAAqB,EAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CACpD,CAAA;AACH,CAAC;AATD,sCASC"}
|
@@ -1,9 +1,12 @@
|
|
1
|
+
import { signatureToHex } from '../../accounts/index.js';
|
1
2
|
import { universalSignatureValidatorAbi } from '../../constants/abis.js';
|
2
3
|
import { universalSignatureValidatorByteCode } from '../../constants/contracts.js';
|
3
4
|
import { CallExecutionError } from '../../errors/contract.js';
|
5
|
+
import { encodeDeployData, } from '../../utils/abi/encodeDeployData.js';
|
4
6
|
import { isBytesEqual, } from '../../utils/data/isBytesEqual.js';
|
7
|
+
import { isHex } from '../../utils/data/isHex.js';
|
8
|
+
import { bytesToHex } from '../../utils/encoding/toHex.js';
|
5
9
|
import { getAction } from '../../utils/getAction.js';
|
6
|
-
import { encodeDeployData, isHex, toHex } from '../../utils/index.js';
|
7
10
|
import { call } from './call.js';
|
8
11
|
/**
|
9
12
|
* Verifies a message hash onchain using ERC-6492.
|
@@ -13,7 +16,13 @@ import { call } from './call.js';
|
|
13
16
|
* @returns Whether or not the signature is valid. {@link VerifyHashReturnType}
|
14
17
|
*/
|
15
18
|
export async function verifyHash(client, { address, hash, signature, ...callRequest }) {
|
16
|
-
const signatureHex =
|
19
|
+
const signatureHex = (() => {
|
20
|
+
if (isHex(signature))
|
21
|
+
return signature;
|
22
|
+
if (typeof signature === 'object' && 'r' in signature && 's' in signature)
|
23
|
+
return signatureToHex(signature);
|
24
|
+
return bytesToHex(signature);
|
25
|
+
})();
|
17
26
|
try {
|
18
27
|
const { data } = await getAction(client, call, 'call')({
|
19
28
|
data: encodeDeployData({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAI7D,OAAO,EAEL,gBAAgB,GACjB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,YAAY,GACb,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAuB,KAAK,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAuB,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAA2C,IAAI,EAAE,MAAM,WAAW,CAAA;AAwBzE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAiC,EACjC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,WAAW,EAAwB;IAElE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;QACzB,IAAI,KAAK,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;QACtC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS;YACvE,OAAO,cAAc,CAAC,SAAS,CAAC,CAAA;QAClC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAC9B,MAAM,EACN,IAAI,EACJ,MAAM,CACP,CAAC;YACA,IAAI,EAAE,gBAAgB,CAAC;gBACrB,GAAG,EAAE,8BAA8B;gBACnC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;gBACnC,QAAQ,EAAE,mCAAmC;aAC9C,CAAC;YACF,GAAG,WAAW;SACc,CAAC,CAAA;QAE/B,OAAO,YAAY,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;YACxC,8GAA8G;YAC9G,kGAAkG;YAClG,0CAA0C;YAC1C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../actions/public/verifyMessage.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../actions/public/verifyMessage.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAGL,UAAU,GACX,MAAM,iBAAiB,CAAA;AAkBxB;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAiC,EACjC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAA2B;IAExE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,UAAU,CAAC,MAAM,EAAE;QACxB,OAAO;QACP,IAAI;QACJ,SAAS;QACT,GAAG,WAAW;KACf,CAAC,CAAA;AACJ,CAAC"}
|
package/_esm/errors/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = '0.0.0-main.
|
1
|
+
export const version = '0.0.0-main.20240424T233310';
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -12,12 +12,27 @@ import { numberToHex, } from '../../utils/encoding/toHex.js';
|
|
12
12
|
*/
|
13
13
|
export function hexToSignature(signatureHex) {
|
14
14
|
const { r, s } = secp256k1.Signature.fromCompact(signatureHex.slice(2, 130));
|
15
|
-
const
|
15
|
+
const yParityOrV = Number(`0x${signatureHex.slice(130)}`);
|
16
|
+
const [v, yParity] = (() => {
|
17
|
+
if (yParityOrV === 0 || yParityOrV === 1)
|
18
|
+
return [undefined, yParityOrV];
|
19
|
+
if (yParityOrV === 27)
|
20
|
+
return [BigInt(yParityOrV), 0];
|
21
|
+
if (yParityOrV === 28)
|
22
|
+
return [BigInt(yParityOrV), 1];
|
23
|
+
throw new Error('Invalid yParityOrV value');
|
24
|
+
})();
|
25
|
+
if (typeof v !== 'undefined')
|
26
|
+
return {
|
27
|
+
r: numberToHex(r, { size: 32 }),
|
28
|
+
s: numberToHex(s, { size: 32 }),
|
29
|
+
v,
|
30
|
+
yParity,
|
31
|
+
};
|
16
32
|
return {
|
17
33
|
r: numberToHex(r, { size: 32 }),
|
18
34
|
s: numberToHex(s, { size: 32 }),
|
19
|
-
|
20
|
-
yParity: v === 28n ? 1 : 0,
|
35
|
+
yParity,
|
21
36
|
};
|
22
37
|
}
|
23
38
|
//# sourceMappingURL=hexToSignature.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hexToSignature.js","sourceRoot":"","sources":["../../../utils/signature/hexToSignature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAInD,OAAO,EAEL,WAAW,GACZ,MAAM,+BAA+B,CAAA;AAItC;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,YAAiB;IAC9C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC5E,MAAM,
|
1
|
+
{"version":3,"file":"hexToSignature.js","sourceRoot":"","sources":["../../../utils/signature/hexToSignature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAInD,OAAO,EAEL,WAAW,GACZ,MAAM,+BAA+B,CAAA;AAItC;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,YAAiB;IAC9C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACzD,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;QACzB,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QACxE,IAAI,UAAU,KAAK,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,IAAI,UAAU,KAAK,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,OAAO,CAAC,KAAK,WAAW;QAC1B,OAAO;YACL,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC/B,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC/B,CAAC;YACD,OAAO;SACY,CAAA;IACvB,OAAO;QACL,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/B,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC/B,OAAO;KACY,CAAA;AACvB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverMessageAddress.js","sourceRoot":"","sources":["../../../utils/signature/recoverMessageAddress.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"recoverMessageAddress.js","sourceRoot":"","sources":["../../../utils/signature/recoverMessageAddress.ts"],"names":[],"mappings":"AAUA,OAAO,EAA6B,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAEL,cAAc,GACf,MAAM,qBAAqB,CAAA;AAc5B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAC1C,OAAO,EACP,SAAS,GACuB;IAChC,OAAO,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;AAClE,CAAC"}
|
@@ -1,19 +1,35 @@
|
|
1
1
|
import { isHex } from '../data/isHex.js';
|
2
|
-
import { hexToNumber } from '../encoding/fromHex.js';
|
2
|
+
import { hexToBigInt, hexToNumber, } from '../encoding/fromHex.js';
|
3
3
|
import { toHex } from '../encoding/toHex.js';
|
4
4
|
export async function recoverPublicKey({ hash, signature, }) {
|
5
|
-
const signatureHex = isHex(signature) ? signature : toHex(signature);
|
6
5
|
const hashHex = isHex(hash) ? hash : toHex(hash);
|
7
|
-
// Derive v = recoveryId + 27 from end of the signature (27 is added when signing the message)
|
8
|
-
// The recoveryId represents the y-coordinate on the secp256k1 elliptic curve and can have a value [0, 1].
|
9
|
-
let v = hexToNumber(`0x${signatureHex.slice(130)}`);
|
10
|
-
if (v === 0 || v === 1)
|
11
|
-
v += 27;
|
12
6
|
const { secp256k1 } = await import('@noble/curves/secp256k1');
|
13
|
-
const
|
14
|
-
|
7
|
+
const signature_ = await (async () => {
|
8
|
+
// typeof signature: `Signature`
|
9
|
+
if (typeof signature === 'object' && 'r' in signature && 's' in signature) {
|
10
|
+
const { r, s, v, yParity } = signature;
|
11
|
+
const yParityOrV = Number(yParity ?? v);
|
12
|
+
const recoveryBit = toRecoveryBit(yParityOrV);
|
13
|
+
return new secp256k1.Signature(hexToBigInt(r), hexToBigInt(s)).addRecoveryBit(recoveryBit);
|
14
|
+
}
|
15
|
+
// typeof signature: `Hex | ByteArray`
|
16
|
+
const signatureHex = isHex(signature) ? signature : toHex(signature);
|
17
|
+
const yParityOrV = hexToNumber(`0x${signatureHex.slice(130)}`);
|
18
|
+
const recoveryBit = toRecoveryBit(yParityOrV);
|
19
|
+
return secp256k1.Signature.fromCompact(signatureHex.substring(2, 130)).addRecoveryBit(recoveryBit);
|
20
|
+
})();
|
21
|
+
const publicKey = signature_
|
15
22
|
.recoverPublicKey(hashHex.substring(2))
|
16
23
|
.toHex(false);
|
17
24
|
return `0x${publicKey}`;
|
18
25
|
}
|
26
|
+
function toRecoveryBit(yParityOrV) {
|
27
|
+
if (yParityOrV === 0 || yParityOrV === 1)
|
28
|
+
return yParityOrV;
|
29
|
+
if (yParityOrV === 27)
|
30
|
+
return 0;
|
31
|
+
if (yParityOrV === 28)
|
32
|
+
return 1;
|
33
|
+
throw new Error('Invalid yParityOrV value');
|
34
|
+
}
|
19
35
|
//# sourceMappingURL=recoverPublicKey.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverPublicKey.js","sourceRoot":"","sources":["../../../utils/signature/recoverPublicKey.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,
|
1
|
+
{"version":3,"file":"recoverPublicKey.js","sourceRoot":"","sources":["../../../utils/signature/recoverPublicKey.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAEL,WAAW,EACX,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAc5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,IAAI,EACJ,SAAS,GACkB;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEhD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QACnC,gCAAgC;QAChC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;YACtC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAE,CAAA;YACxC,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;YAC7C,OAAO,IAAI,SAAS,CAAC,SAAS,CAC5B,WAAW,CAAC,CAAC,CAAC,EACd,WAAW,CAAC,CAAC,CAAC,CACf,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;QAC/B,CAAC;QAED,sCAAsC;QACtC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACpE,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9D,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QAC7C,OAAO,SAAS,CAAC,SAAS,CAAC,WAAW,CACpC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAC/B,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,SAAS,GAAG,UAAU;SACzB,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACtC,KAAK,CAAC,KAAK,CAAC,CAAA;IACf,OAAO,KAAK,SAAS,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB;IACvC,IAAI,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,UAAU,CAAA;IAC3D,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,CAAC,CAAA;IAC/B,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,CAAC,CAAA;IAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;AAC7C,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../utils/signature/verifyMessage.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../utils/signature/verifyMessage.ts"],"names":[],"mappings":"AAQA,OAAO,EAA4B,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAEL,cAAc,GACf,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAEL,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAmBnC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,OAAO,EACP,OAAO,EACP,SAAS,GACe;IACxB,OAAO,cAAc,CACnB,UAAU,CAAC,OAAO,CAAC,EACnB,MAAM,qBAAqB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CACpD,CAAA;AACH,CAAC"}
|
@@ -3,11 +3,11 @@ import type { Client } from '../../clients/createClient.js';
|
|
3
3
|
import type { Transport } from '../../clients/transports/createTransport.js';
|
4
4
|
import type { ErrorType } from '../../errors/utils.js';
|
5
5
|
import type { Chain } from '../../types/chain.js';
|
6
|
-
import type { ByteArray, Hex } from '../../types/misc.js';
|
7
|
-
import type
|
6
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js';
|
7
|
+
import { type EncodeDeployDataErrorType } from '../../utils/abi/encodeDeployData.js';
|
8
8
|
import { type IsBytesEqualErrorType } from '../../utils/data/isBytesEqual.js';
|
9
|
-
import type
|
10
|
-
import type
|
9
|
+
import { type IsHexErrorType } from '../../utils/data/isHex.js';
|
10
|
+
import { type ToHexErrorType } from '../../utils/encoding/toHex.js';
|
11
11
|
import { type CallErrorType, type CallParameters } from './call.js';
|
12
12
|
export type VerifyHashParameters = Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
|
13
13
|
/** The address that signed the original message. */
|
@@ -15,7 +15,7 @@ export type VerifyHashParameters = Pick<CallParameters, 'blockNumber' | 'blockTa
|
|
15
15
|
/** The hash to be verified. */
|
16
16
|
hash: Hex;
|
17
17
|
/** The signature that was generated by signing the message with the address's private key. */
|
18
|
-
signature: Hex | ByteArray;
|
18
|
+
signature: Hex | ByteArray | Signature;
|
19
19
|
};
|
20
20
|
export type VerifyHashReturnType = boolean;
|
21
21
|
export type VerifyHashErrorType = CallErrorType | IsHexErrorType | ToHexErrorType | IsBytesEqualErrorType | EncodeDeployDataErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyHash.d.ts","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
1
|
+
{"version":3,"file":"verifyHash.d.ts","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAI5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EACL,KAAK,yBAAyB,EAE/B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,KAAK,cAAc,EAAS,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,+BAA+B,CAAA;AAE/E,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAQ,MAAM,WAAW,CAAA;AAEzE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,EACd,aAAa,GAAG,UAAU,CAC3B,GAAG;IACF,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAA;IAChB,+BAA+B;IAC/B,IAAI,EAAE,GAAG,CAAA;IACT,8FAA8F;IAC9F,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAA;AAE1C,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,yBAAyB,GACzB,SAAS,CAAA;AAEb;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,MAAM,SAAS,KAAK,GAAG,SAAS,EAC/D,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EACjC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,EAAE,oBAAoB,GACjE,OAAO,CAAC,oBAAoB,CAAC,CAiC/B"}
|
@@ -3,7 +3,7 @@ import type { Client } from '../../clients/createClient.js';
|
|
3
3
|
import type { Transport } from '../../clients/transports/createTransport.js';
|
4
4
|
import type { ErrorType } from '../../errors/utils.js';
|
5
5
|
import type { Chain } from '../../types/chain.js';
|
6
|
-
import type { ByteArray, Hex, SignableMessage } from '../../types/misc.js';
|
6
|
+
import type { ByteArray, Hex, SignableMessage, Signature } from '../../types/misc.js';
|
7
7
|
import type { HashMessageErrorType } from '../../utils/signature/hashMessage.js';
|
8
8
|
import { type VerifyHashErrorType, type VerifyHashParameters } from './verifyHash.js';
|
9
9
|
export type VerifyMessageParameters = Omit<VerifyHashParameters, 'hash'> & {
|
@@ -12,7 +12,7 @@ export type VerifyMessageParameters = Omit<VerifyHashParameters, 'hash'> & {
|
|
12
12
|
/** The message to be verified. */
|
13
13
|
message: SignableMessage;
|
14
14
|
/** The signature that was generated by signing the message with the address's private key. */
|
15
|
-
signature: Hex | ByteArray;
|
15
|
+
signature: Hex | ByteArray | Signature;
|
16
16
|
};
|
17
17
|
export type VerifyMessageReturnType = boolean;
|
18
18
|
export type VerifyMessageErrorType = HashMessageErrorType | VerifyHashErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyMessage.d.ts","sourceRoot":"","sources":["../../../actions/public/verifyMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"verifyMessage.d.ts","sourceRoot":"","sources":["../../../actions/public/verifyMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EACV,SAAS,EACT,GAAG,EACH,eAAe,EACf,SAAS,EACV,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAChF,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,GAAG;IACzE,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,OAAO,EAAE,eAAe,CAAA;IACxB,8FAA8F;IAC9F,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAE7C,MAAM,MAAM,sBAAsB,GAC9B,oBAAoB,GACpB,mBAAmB,GACnB,SAAS,CAAA;AAEb;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,MAAM,SAAS,KAAK,GAAG,SAAS,EAClE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EACjC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,EAAE,uBAAuB,GACvE,OAAO,CAAC,uBAAuB,CAAC,CAQlC"}
|
@@ -3,7 +3,7 @@ import type { Client } from '../../clients/createClient.js';
|
|
3
3
|
import type { Transport } from '../../clients/transports/createTransport.js';
|
4
4
|
import type { ErrorType } from '../../errors/utils.js';
|
5
5
|
import type { Chain } from '../../types/chain.js';
|
6
|
-
import type { ByteArray, Hex } from '../../types/misc.js';
|
6
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js';
|
7
7
|
import type { TypedDataDefinition } from '../../types/typedData.js';
|
8
8
|
import { type HashTypedDataErrorType } from '../../utils/signature/hashTypedData.js';
|
9
9
|
import { type VerifyHashErrorType, type VerifyHashParameters } from './verifyHash.js';
|
@@ -11,7 +11,7 @@ export type VerifyTypedDataParameters<typedData extends TypedData | Record<strin
|
|
11
11
|
/** The address to verify the typed data for. */
|
12
12
|
address: Address;
|
13
13
|
/** The signature to verify */
|
14
|
-
signature: Hex | ByteArray;
|
14
|
+
signature: Hex | ByteArray | Signature;
|
15
15
|
};
|
16
16
|
export type VerifyTypedDataReturnType = boolean;
|
17
17
|
export type VerifyTypedDataErrorType = HashTypedDataErrorType | VerifyHashErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyTypedData.d.ts","sourceRoot":"","sources":["../../../actions/public/verifyTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"verifyTypedData.d.ts","sourceRoot":"","sources":["../../../actions/public/verifyTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,GACpC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IAC5C,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,8BAA8B;IAC9B,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAEH,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAE/C,MAAM,MAAM,wBAAwB,GAChC,sBAAsB,GACtB,mBAAmB,GACnB,SAAS,CAAA;AAEb;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EACpD,KAAK,SAAS,KAAK,GAAG,SAAS,EAE/B,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAChC,UAAU,EAAE,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,GAC5D,OAAO,CAAC,yBAAyB,CAAC,CAiBpC"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "0.0.0-main.
|
1
|
+
export declare const version = "0.0.0-main.20240424T233310";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { Address } from 'abitype';
|
2
|
-
import type { ByteArray, Hex } from '../../../types/misc.js';
|
2
|
+
import type { ByteArray, Hex, Signature } from '../../../types/misc.js';
|
3
3
|
import type { ErrorType } from '../../../errors/utils.js';
|
4
4
|
import { type RecoverAddressErrorType } from '../../../utils/signature/recoverAddress.js';
|
5
5
|
import { type ToAuthMessageParameters } from './toAuthMessage.js';
|
6
6
|
export type RecoverAuthMessageAddressParameters = ToAuthMessageParameters & {
|
7
|
-
signature: Hex | ByteArray;
|
7
|
+
signature: Hex | ByteArray | Signature;
|
8
8
|
};
|
9
9
|
export type RecoverAuthMessageAddressReturnType = Address;
|
10
10
|
export type RecoverAuthMessageAddressErrorType = RecoverAddressErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverAuthMessageAddress.d.ts","sourceRoot":"","sources":["../../../../experimental/eip3074/utils/recoverAuthMessageAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;
|
1
|
+
{"version":3,"file":"recoverAuthMessageAddress.d.ts","sourceRoot":"","sources":["../../../../experimental/eip3074/utils/recoverAuthMessageAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,KAAK,uBAAuB,EAAiB,MAAM,oBAAoB,CAAA;AAEhF,MAAM,MAAM,mCAAmC,GAAG,uBAAuB,GAAG;IAC1E,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,OAAO,CAAA;AAEzD,MAAM,MAAM,kCAAkC,GAC1C,uBAAuB,GACvB,SAAS,CAAA;AAEb,wBAAsB,yBAAyB,CAAC,EAC9C,SAAS,EACT,GAAG,UAAU,EACd,EAAE,mCAAmC,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAGpF"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hexToSignature.d.ts","sourceRoot":"","sources":["../../../utils/signature/hexToSignature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,qBAAqB,CAAA;AACzD,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,+BAA+B,CAAA;AAEtC,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,GAAG,SAAS,CAAA;AAEtE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,GAAG
|
1
|
+
{"version":3,"file":"hexToSignature.d.ts","sourceRoot":"","sources":["../../../utils/signature/hexToSignature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,qBAAqB,CAAA;AACzD,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,+BAA+B,CAAA;AAEtC,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,GAAG,SAAS,CAAA;AAEtE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,GAAG;;;;;;;;;;EAsB/C"}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import type { Address } from 'abitype';
|
2
|
-
import type { ByteArray, Hex } from '../../types/misc.js';
|
2
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js';
|
3
3
|
import type { ErrorType } from '../../errors/utils.js';
|
4
4
|
export type RecoverAddressParameters = {
|
5
5
|
hash: Hex | ByteArray;
|
6
|
-
signature: Hex | ByteArray;
|
6
|
+
signature: Hex | ByteArray | Signature;
|
7
7
|
};
|
8
8
|
export type RecoverAddressReturnType = Address;
|
9
9
|
export type RecoverAddressErrorType = ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"recoverAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAGtD,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,GAAG,GAAG,SAAS,CAAA;IACrB,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAA;AAE9C,MAAM,MAAM,uBAAuB,GAAG,SAAS,CAAA;AAE/C,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACJ,SAAS,GACV,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAE9D"}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import type { Address } from 'abitype';
|
2
|
-
import type { ByteArray, Hex, SignableMessage } from '../../types/misc.js';
|
2
|
+
import type { ByteArray, Hex, SignableMessage, Signature } from '../../types/misc.js';
|
3
3
|
import type { ErrorType } from '../../errors/utils.js';
|
4
4
|
import { type HashMessageErrorType } from './hashMessage.js';
|
5
5
|
import { type RecoverAddressErrorType } from './recoverAddress.js';
|
6
6
|
export type RecoverMessageAddressParameters = {
|
7
7
|
message: SignableMessage;
|
8
|
-
signature: Hex | ByteArray;
|
8
|
+
signature: Hex | ByteArray | Signature;
|
9
9
|
};
|
10
10
|
export type RecoverMessageAddressReturnType = Address;
|
11
11
|
export type RecoverMessageAddressErrorType = HashMessageErrorType | RecoverAddressErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverMessageAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverMessageAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"recoverMessageAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverMessageAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EACV,SAAS,EACT,GAAG,EACH,eAAe,EACf,SAAS,EACV,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,KAAK,oBAAoB,EAAe,MAAM,kBAAkB,CAAA;AACzE,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAA;AAE5B,MAAM,MAAM,+BAA+B,GAAG;IAC5C,OAAO,EAAE,eAAe,CAAA;IACxB,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG,OAAO,CAAA;AAErD,MAAM,MAAM,8BAA8B,GACtC,oBAAoB,GACpB,uBAAuB,GACvB,SAAS,CAAA;AAEb,wBAAsB,qBAAqB,CAAC,EAC1C,OAAO,EACP,SAAS,GACV,EAAE,+BAA+B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAE5E"}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { ErrorType } from '../../errors/utils.js';
|
2
|
-
import type { ByteArray, Hex } from '../../types/misc.js';
|
2
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js';
|
3
3
|
import { type IsHexErrorType } from '../data/isHex.js';
|
4
4
|
import { type HexToNumberErrorType } from '../encoding/fromHex.js';
|
5
5
|
export type RecoverPublicKeyParameters = {
|
6
6
|
hash: Hex | ByteArray;
|
7
|
-
signature: Hex | ByteArray;
|
7
|
+
signature: Hex | ByteArray | Signature;
|
8
8
|
};
|
9
9
|
export type RecoverPublicKeyReturnType = Hex;
|
10
10
|
export type RecoverPublicKeyErrorType = HexToNumberErrorType | IsHexErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverPublicKey.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverPublicKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"recoverPublicKey.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverPublicKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,KAAK,cAAc,EAAS,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,wBAAwB,CAAA;AAG/B,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,GAAG,GAAG,SAAS,CAAA;IACrB,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG,GAAG,CAAA;AAE5C,MAAM,MAAM,yBAAyB,GACjC,oBAAoB,GACpB,cAAc,GACd,SAAS,CAAA;AAEb,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,SAAS,GACV,EAAE,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA6BlE"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { Address } from 'abitype';
|
2
2
|
import type { ErrorType } from '../../errors/utils.js';
|
3
|
-
import type { ByteArray, Hex } from '../../types/misc.js';
|
3
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js';
|
4
4
|
import type { TransactionSerialized } from '../../types/transaction.js';
|
5
5
|
import { type Keccak256ErrorType } from '../hash/keccak256.js';
|
6
6
|
import { type SerializeTransactionErrorType } from '../transaction/serializeTransaction.js';
|
@@ -8,7 +8,7 @@ import { type RecoverAddressErrorType } from './recoverAddress.js';
|
|
8
8
|
import { type SignatureToHexErrorType } from './signatureToHex.js';
|
9
9
|
export type RecoverTransactionAddressParameters = {
|
10
10
|
serializedTransaction: TransactionSerialized;
|
11
|
-
signature?: Hex | ByteArray;
|
11
|
+
signature?: Hex | ByteArray | Signature;
|
12
12
|
};
|
13
13
|
export type RecoverTransactionAddressReturnType = Address;
|
14
14
|
export type RecoverTransactionAddressErrorType = SerializeTransactionErrorType | RecoverAddressErrorType | Keccak256ErrorType | SignatureToHexErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverTransactionAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverTransactionAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"recoverTransactionAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverTransactionAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,EAAE,KAAK,kBAAkB,EAAa,MAAM,sBAAsB,CAAA;AAEzE,OAAO,EACL,KAAK,6BAA6B,EAEnC,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAA;AAE5B,MAAM,MAAM,mCAAmC,GAAG;IAChD,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,SAAS,CAAC,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG,OAAO,CAAA;AAEzD,MAAM,MAAM,kCAAkC,GAC1C,6BAA6B,GAC7B,uBAAuB,GACvB,kBAAkB,GAClB,uBAAuB,GACvB,SAAS,CAAA;AAEb,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,mCAAmC,GAC9C,OAAO,CAAC,mCAAmC,CAAC,CA2B9C"}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import type { Address, TypedData } from 'abitype';
|
2
|
-
import type { ByteArray, Hex } from '../../types/misc.js';
|
2
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js';
|
3
3
|
import type { TypedDataDefinition } from '../../types/typedData.js';
|
4
4
|
import type { ErrorType } from '../../errors/utils.js';
|
5
5
|
import { type HashTypedDataErrorType } from './hashTypedData.js';
|
6
6
|
import { type RecoverAddressErrorType } from './recoverAddress.js';
|
7
7
|
export type RecoverTypedDataAddressParameters<typedData extends TypedData | Record<string, unknown> = TypedData, primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData> = TypedDataDefinition<typedData, primaryType> & {
|
8
|
-
signature: Hex | ByteArray;
|
8
|
+
signature: Hex | ByteArray | Signature;
|
9
9
|
};
|
10
10
|
export type RecoverTypedDataAddressReturnType = Address;
|
11
11
|
export type RecoverTypedDataAddressErrorType = RecoverAddressErrorType | HashTypedDataErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverTypedDataAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverTypedDataAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"recoverTypedDataAddress.d.ts","sourceRoot":"","sources":["../../../utils/signature/recoverTypedDataAddress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,KAAK,sBAAsB,EAAiB,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,qBAAqB,CAAA;AAE5B,MAAM,MAAM,iCAAiC,CAC3C,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IAChD,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,iCAAiC,GAAG,OAAO,CAAA;AAEvD,MAAM,MAAM,gCAAgC,GACxC,uBAAuB,GACvB,sBAAsB,GACtB,SAAS,CAAA;AAEb,wBAAsB,uBAAuB,CAC3C,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EAEpD,UAAU,EAAE,iCAAiC,CAAC,SAAS,EAAE,WAAW,CAAC,GACpE,OAAO,CAAC,iCAAiC,CAAC,CAY5C"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { Address } from 'abitype';
|
2
|
-
import type { ByteArray, Hex, SignableMessage } from '../../types/misc.js';
|
2
|
+
import type { ByteArray, Hex, SignableMessage, Signature } from '../../types/misc.js';
|
3
3
|
import { type GetAddressErrorType } from '../address/getAddress.js';
|
4
4
|
import { type IsAddressEqualErrorType } from '../address/isAddressEqual.js';
|
5
5
|
import type { ErrorType } from '../../errors/utils.js';
|
@@ -10,7 +10,7 @@ export type VerifyMessageParameters = {
|
|
10
10
|
/** The message to be verified. */
|
11
11
|
message: SignableMessage;
|
12
12
|
/** The signature that was generated by signing the message with the address's private key. */
|
13
|
-
signature: Hex | ByteArray;
|
13
|
+
signature: Hex | ByteArray | Signature;
|
14
14
|
};
|
15
15
|
export type VerifyMessageReturnType = boolean;
|
16
16
|
export type VerifyMessageErrorType = IsAddressEqualErrorType | GetAddressErrorType | RecoverMessageAddressErrorType | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyMessage.d.ts","sourceRoot":"","sources":["../../../utils/signature/verifyMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"verifyMessage.d.ts","sourceRoot":"","sources":["../../../utils/signature/verifyMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EACV,SAAS,EACT,GAAG,EACH,eAAe,EACf,SAAS,EACV,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,KAAK,mBAAmB,EAAc,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,8BAA8B,CAAA;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EACL,KAAK,8BAA8B,EAEpC,MAAM,4BAA4B,CAAA;AAEnC,MAAM,MAAM,uBAAuB,GAAG;IACpC,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAA;IAChB,kCAAkC;IAClC,OAAO,EAAE,eAAe,CAAA;IACxB,8FAA8F;IAC9F,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAA;AAE7C,MAAM,MAAM,sBAAsB,GAC9B,uBAAuB,GACvB,mBAAmB,GACnB,8BAA8B,GAC9B,SAAS,CAAA;AAEb;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,EAClC,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAK5D"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { Address, TypedData } from 'abitype';
|
2
|
-
import type { ByteArray, Hex } from '../../types/misc.js';
|
2
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js';
|
3
3
|
import type { TypedDataDefinition } from '../../types/typedData.js';
|
4
4
|
import { type GetAddressErrorType } from '../address/getAddress.js';
|
5
5
|
import { type IsAddressEqualErrorType } from '../address/isAddressEqual.js';
|
@@ -9,7 +9,7 @@ export type VerifyTypedDataParameters<typedData extends TypedData | Record<strin
|
|
9
9
|
/** The address to verify the typed data for. */
|
10
10
|
address: Address;
|
11
11
|
/** The signature to verify */
|
12
|
-
signature: Hex | ByteArray;
|
12
|
+
signature: Hex | ByteArray | Signature;
|
13
13
|
};
|
14
14
|
export type VerifyTypedDataReturnType = boolean;
|
15
15
|
export type VerifyTypedDataErrorType = IsAddressEqualErrorType | GetAddressErrorType | RecoverTypedDataAddressParameters | ErrorType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyTypedData.d.ts","sourceRoot":"","sources":["../../../utils/signature/verifyTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;
|
1
|
+
{"version":3,"file":"verifyTypedData.d.ts","sourceRoot":"","sources":["../../../utils/signature/verifyTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,KAAK,mBAAmB,EAAc,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,8BAA8B,CAAA;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EACL,KAAK,iCAAiC,EAEvC,MAAM,8BAA8B,CAAA;AAErC,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjE,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,MAAM,SAAS,IACpE,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG;IAChD,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,8BAA8B;IAC9B,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAA;AAE/C,MAAM,MAAM,wBAAwB,GAChC,uBAAuB,GACvB,mBAAmB,GACnB,iCAAiC,GACjC,SAAS,CAAA;AAEb;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,KAAK,CAAC,SAAS,SAAS,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,WAAW,SAAS,MAAM,SAAS,GAAG,cAAc,EAEpD,UAAU,EAAE,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,GAC5D,OAAO,CAAC,yBAAyB,CAAC,CAapC"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
|
3
|
+
import { signatureToHex } from '../../accounts/index.js'
|
3
4
|
import type { Client } from '../../clients/createClient.js'
|
4
5
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
5
6
|
import { universalSignatureValidatorAbi } from '../../constants/abis.js'
|
@@ -7,16 +8,18 @@ import { universalSignatureValidatorByteCode } from '../../constants/contracts.j
|
|
7
8
|
import { CallExecutionError } from '../../errors/contract.js'
|
8
9
|
import type { ErrorType } from '../../errors/utils.js'
|
9
10
|
import type { Chain } from '../../types/chain.js'
|
10
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
11
|
-
import
|
11
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
12
|
+
import {
|
13
|
+
type EncodeDeployDataErrorType,
|
14
|
+
encodeDeployData,
|
15
|
+
} from '../../utils/abi/encodeDeployData.js'
|
12
16
|
import {
|
13
17
|
type IsBytesEqualErrorType,
|
14
18
|
isBytesEqual,
|
15
19
|
} from '../../utils/data/isBytesEqual.js'
|
16
|
-
import type
|
17
|
-
import type
|
20
|
+
import { type IsHexErrorType, isHex } from '../../utils/data/isHex.js'
|
21
|
+
import { type ToHexErrorType, bytesToHex } from '../../utils/encoding/toHex.js'
|
18
22
|
import { getAction } from '../../utils/getAction.js'
|
19
|
-
import { encodeDeployData, isHex, toHex } from '../../utils/index.js'
|
20
23
|
import { type CallErrorType, type CallParameters, call } from './call.js'
|
21
24
|
|
22
25
|
export type VerifyHashParameters = Pick<
|
@@ -28,7 +31,7 @@ export type VerifyHashParameters = Pick<
|
|
28
31
|
/** The hash to be verified. */
|
29
32
|
hash: Hex
|
30
33
|
/** The signature that was generated by signing the message with the address's private key. */
|
31
|
-
signature: Hex | ByteArray
|
34
|
+
signature: Hex | ByteArray | Signature
|
32
35
|
}
|
33
36
|
|
34
37
|
export type VerifyHashReturnType = boolean
|
@@ -52,7 +55,12 @@ export async function verifyHash<TChain extends Chain | undefined>(
|
|
52
55
|
client: Client<Transport, TChain>,
|
53
56
|
{ address, hash, signature, ...callRequest }: VerifyHashParameters,
|
54
57
|
): Promise<VerifyHashReturnType> {
|
55
|
-
const signatureHex =
|
58
|
+
const signatureHex = (() => {
|
59
|
+
if (isHex(signature)) return signature
|
60
|
+
if (typeof signature === 'object' && 'r' in signature && 's' in signature)
|
61
|
+
return signatureToHex(signature)
|
62
|
+
return bytesToHex(signature)
|
63
|
+
})()
|
56
64
|
|
57
65
|
try {
|
58
66
|
const { data } = await getAction(
|
@@ -4,7 +4,12 @@ import type { Client } from '../../clients/createClient.js'
|
|
4
4
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
5
5
|
import type { ErrorType } from '../../errors/utils.js'
|
6
6
|
import type { Chain } from '../../types/chain.js'
|
7
|
-
import type {
|
7
|
+
import type {
|
8
|
+
ByteArray,
|
9
|
+
Hex,
|
10
|
+
SignableMessage,
|
11
|
+
Signature,
|
12
|
+
} from '../../types/misc.js'
|
8
13
|
import { hashMessage } from '../../utils/index.js'
|
9
14
|
import type { HashMessageErrorType } from '../../utils/signature/hashMessage.js'
|
10
15
|
import {
|
@@ -19,7 +24,7 @@ export type VerifyMessageParameters = Omit<VerifyHashParameters, 'hash'> & {
|
|
19
24
|
/** The message to be verified. */
|
20
25
|
message: SignableMessage
|
21
26
|
/** The signature that was generated by signing the message with the address's private key. */
|
22
|
-
signature: Hex | ByteArray
|
27
|
+
signature: Hex | ByteArray | Signature
|
23
28
|
}
|
24
29
|
|
25
30
|
export type VerifyMessageReturnType = boolean
|
@@ -4,7 +4,7 @@ import type { Client } from '../../clients/createClient.js'
|
|
4
4
|
import type { Transport } from '../../clients/transports/createTransport.js'
|
5
5
|
import type { ErrorType } from '../../errors/utils.js'
|
6
6
|
import type { Chain } from '../../types/chain.js'
|
7
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
7
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
8
8
|
import type { TypedDataDefinition } from '../../types/typedData.js'
|
9
9
|
import {
|
10
10
|
type HashTypedDataErrorType,
|
@@ -24,7 +24,7 @@ export type VerifyTypedDataParameters<
|
|
24
24
|
/** The address to verify the typed data for. */
|
25
25
|
address: Address
|
26
26
|
/** The signature to verify */
|
27
|
-
signature: Hex | ByteArray
|
27
|
+
signature: Hex | ByteArray | Signature
|
28
28
|
}
|
29
29
|
|
30
30
|
export type VerifyTypedDataReturnType = boolean
|
package/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '0.0.0-main.
|
1
|
+
export const version = '0.0.0-main.20240424T233310'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
|
3
|
-
import type { ByteArray, Hex } from '../../../types/misc.js'
|
3
|
+
import type { ByteArray, Hex, Signature } from '../../../types/misc.js'
|
4
4
|
|
5
5
|
import type { ErrorType } from '../../../errors/utils.js'
|
6
6
|
import { keccak256 } from '../../../utils/hash/keccak256.js'
|
@@ -11,7 +11,7 @@ import {
|
|
11
11
|
import { type ToAuthMessageParameters, toAuthMessage } from './toAuthMessage.js'
|
12
12
|
|
13
13
|
export type RecoverAuthMessageAddressParameters = ToAuthMessageParameters & {
|
14
|
-
signature: Hex | ByteArray
|
14
|
+
signature: Hex | ByteArray | Signature
|
15
15
|
}
|
16
16
|
|
17
17
|
export type RecoverAuthMessageAddressReturnType = Address
|
package/package.json
CHANGED
@@ -21,11 +21,24 @@ export type HexToSignatureErrorType = NumberToHexErrorType | ErrorType
|
|
21
21
|
*/
|
22
22
|
export function hexToSignature(signatureHex: Hex) {
|
23
23
|
const { r, s } = secp256k1.Signature.fromCompact(signatureHex.slice(2, 130))
|
24
|
-
const
|
24
|
+
const yParityOrV = Number(`0x${signatureHex.slice(130)}`)
|
25
|
+
const [v, yParity] = (() => {
|
26
|
+
if (yParityOrV === 0 || yParityOrV === 1) return [undefined, yParityOrV]
|
27
|
+
if (yParityOrV === 27) return [BigInt(yParityOrV), 0]
|
28
|
+
if (yParityOrV === 28) return [BigInt(yParityOrV), 1]
|
29
|
+
throw new Error('Invalid yParityOrV value')
|
30
|
+
})()
|
31
|
+
|
32
|
+
if (typeof v !== 'undefined')
|
33
|
+
return {
|
34
|
+
r: numberToHex(r, { size: 32 }),
|
35
|
+
s: numberToHex(s, { size: 32 }),
|
36
|
+
v,
|
37
|
+
yParity,
|
38
|
+
} satisfies Signature
|
25
39
|
return {
|
26
40
|
r: numberToHex(r, { size: 32 }),
|
27
41
|
s: numberToHex(s, { size: 32 }),
|
28
|
-
|
29
|
-
yParity: v === 28n ? 1 : 0,
|
42
|
+
yParity,
|
30
43
|
} satisfies Signature
|
31
44
|
}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
|
3
3
|
import { publicKeyToAddress } from '../../accounts/utils/publicKeyToAddress.js'
|
4
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
4
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
5
5
|
|
6
6
|
import type { ErrorType } from '../../errors/utils.js'
|
7
7
|
import { recoverPublicKey } from './recoverPublicKey.js'
|
8
8
|
|
9
9
|
export type RecoverAddressParameters = {
|
10
10
|
hash: Hex | ByteArray
|
11
|
-
signature: Hex | ByteArray
|
11
|
+
signature: Hex | ByteArray | Signature
|
12
12
|
}
|
13
13
|
|
14
14
|
export type RecoverAddressReturnType = Address
|
@@ -1,6 +1,11 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
|
3
|
-
import type {
|
3
|
+
import type {
|
4
|
+
ByteArray,
|
5
|
+
Hex,
|
6
|
+
SignableMessage,
|
7
|
+
Signature,
|
8
|
+
} from '../../types/misc.js'
|
4
9
|
|
5
10
|
import type { ErrorType } from '../../errors/utils.js'
|
6
11
|
import { type HashMessageErrorType, hashMessage } from './hashMessage.js'
|
@@ -11,7 +16,7 @@ import {
|
|
11
16
|
|
12
17
|
export type RecoverMessageAddressParameters = {
|
13
18
|
message: SignableMessage
|
14
|
-
signature: Hex | ByteArray
|
19
|
+
signature: Hex | ByteArray | Signature
|
15
20
|
}
|
16
21
|
|
17
22
|
export type RecoverMessageAddressReturnType = Address
|
@@ -1,12 +1,16 @@
|
|
1
1
|
import type { ErrorType } from '../../errors/utils.js'
|
2
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
2
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
3
3
|
import { type IsHexErrorType, isHex } from '../data/isHex.js'
|
4
|
-
import {
|
4
|
+
import {
|
5
|
+
type HexToNumberErrorType,
|
6
|
+
hexToBigInt,
|
7
|
+
hexToNumber,
|
8
|
+
} from '../encoding/fromHex.js'
|
5
9
|
import { toHex } from '../encoding/toHex.js'
|
6
10
|
|
7
11
|
export type RecoverPublicKeyParameters = {
|
8
12
|
hash: Hex | ByteArray
|
9
|
-
signature: Hex | ByteArray
|
13
|
+
signature: Hex | ByteArray | Signature
|
10
14
|
}
|
11
15
|
|
12
16
|
export type RecoverPublicKeyReturnType = Hex
|
@@ -20,20 +24,39 @@ export async function recoverPublicKey({
|
|
20
24
|
hash,
|
21
25
|
signature,
|
22
26
|
}: RecoverPublicKeyParameters): Promise<RecoverPublicKeyReturnType> {
|
23
|
-
const signatureHex = isHex(signature) ? signature : toHex(signature)
|
24
27
|
const hashHex = isHex(hash) ? hash : toHex(hash)
|
25
28
|
|
26
|
-
// Derive v = recoveryId + 27 from end of the signature (27 is added when signing the message)
|
27
|
-
// The recoveryId represents the y-coordinate on the secp256k1 elliptic curve and can have a value [0, 1].
|
28
|
-
let v = hexToNumber(`0x${signatureHex.slice(130)}`)
|
29
|
-
if (v === 0 || v === 1) v += 27
|
30
|
-
|
31
29
|
const { secp256k1 } = await import('@noble/curves/secp256k1')
|
32
|
-
const
|
33
|
-
|
34
|
-
|
35
|
-
|
30
|
+
const signature_ = await (async () => {
|
31
|
+
// typeof signature: `Signature`
|
32
|
+
if (typeof signature === 'object' && 'r' in signature && 's' in signature) {
|
33
|
+
const { r, s, v, yParity } = signature
|
34
|
+
const yParityOrV = Number(yParity ?? v)!
|
35
|
+
const recoveryBit = toRecoveryBit(yParityOrV)
|
36
|
+
return new secp256k1.Signature(
|
37
|
+
hexToBigInt(r),
|
38
|
+
hexToBigInt(s),
|
39
|
+
).addRecoveryBit(recoveryBit)
|
40
|
+
}
|
41
|
+
|
42
|
+
// typeof signature: `Hex | ByteArray`
|
43
|
+
const signatureHex = isHex(signature) ? signature : toHex(signature)
|
44
|
+
const yParityOrV = hexToNumber(`0x${signatureHex.slice(130)}`)
|
45
|
+
const recoveryBit = toRecoveryBit(yParityOrV)
|
46
|
+
return secp256k1.Signature.fromCompact(
|
47
|
+
signatureHex.substring(2, 130),
|
48
|
+
).addRecoveryBit(recoveryBit)
|
49
|
+
})()
|
50
|
+
|
51
|
+
const publicKey = signature_
|
36
52
|
.recoverPublicKey(hashHex.substring(2))
|
37
53
|
.toHex(false)
|
38
54
|
return `0x${publicKey}`
|
39
55
|
}
|
56
|
+
|
57
|
+
function toRecoveryBit(yParityOrV: number) {
|
58
|
+
if (yParityOrV === 0 || yParityOrV === 1) return yParityOrV
|
59
|
+
if (yParityOrV === 27) return 0
|
60
|
+
if (yParityOrV === 28) return 1
|
61
|
+
throw new Error('Invalid yParityOrV value')
|
62
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
import type { ErrorType } from '../../errors/utils.js'
|
3
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
3
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
4
4
|
import type { TransactionSerialized } from '../../types/transaction.js'
|
5
5
|
import { type Keccak256ErrorType, keccak256 } from '../hash/keccak256.js'
|
6
6
|
import { parseTransaction } from '../transaction/parseTransaction.js'
|
@@ -19,7 +19,7 @@ import {
|
|
19
19
|
|
20
20
|
export type RecoverTransactionAddressParameters = {
|
21
21
|
serializedTransaction: TransactionSerialized
|
22
|
-
signature?: Hex | ByteArray
|
22
|
+
signature?: Hex | ByteArray | Signature
|
23
23
|
}
|
24
24
|
|
25
25
|
export type RecoverTransactionAddressReturnType = Address
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { Address, TypedData } from 'abitype'
|
2
2
|
|
3
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
3
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
4
4
|
import type { TypedDataDefinition } from '../../types/typedData.js'
|
5
5
|
|
6
6
|
import type { ErrorType } from '../../errors/utils.js'
|
@@ -14,7 +14,7 @@ export type RecoverTypedDataAddressParameters<
|
|
14
14
|
typedData extends TypedData | Record<string, unknown> = TypedData,
|
15
15
|
primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
|
16
16
|
> = TypedDataDefinition<typedData, primaryType> & {
|
17
|
-
signature: Hex | ByteArray
|
17
|
+
signature: Hex | ByteArray | Signature
|
18
18
|
}
|
19
19
|
|
20
20
|
export type RecoverTypedDataAddressReturnType = Address
|
@@ -1,6 +1,11 @@
|
|
1
1
|
import type { Address } from 'abitype'
|
2
2
|
|
3
|
-
import type {
|
3
|
+
import type {
|
4
|
+
ByteArray,
|
5
|
+
Hex,
|
6
|
+
SignableMessage,
|
7
|
+
Signature,
|
8
|
+
} from '../../types/misc.js'
|
4
9
|
import { type GetAddressErrorType, getAddress } from '../address/getAddress.js'
|
5
10
|
import {
|
6
11
|
type IsAddressEqualErrorType,
|
@@ -19,7 +24,7 @@ export type VerifyMessageParameters = {
|
|
19
24
|
/** The message to be verified. */
|
20
25
|
message: SignableMessage
|
21
26
|
/** The signature that was generated by signing the message with the address's private key. */
|
22
|
-
signature: Hex | ByteArray
|
27
|
+
signature: Hex | ByteArray | Signature
|
23
28
|
}
|
24
29
|
|
25
30
|
export type VerifyMessageReturnType = boolean
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import type { Address, TypedData } from 'abitype'
|
2
2
|
|
3
|
-
import type { ByteArray, Hex } from '../../types/misc.js'
|
3
|
+
import type { ByteArray, Hex, Signature } from '../../types/misc.js'
|
4
4
|
import type { TypedDataDefinition } from '../../types/typedData.js'
|
5
5
|
import { type GetAddressErrorType, getAddress } from '../address/getAddress.js'
|
6
6
|
import {
|
@@ -21,7 +21,7 @@ export type VerifyTypedDataParameters<
|
|
21
21
|
/** The address to verify the typed data for. */
|
22
22
|
address: Address
|
23
23
|
/** The signature to verify */
|
24
|
-
signature: Hex | ByteArray
|
24
|
+
signature: Hex | ByteArray | Signature
|
25
25
|
}
|
26
26
|
|
27
27
|
export type VerifyTypedDataReturnType = boolean
|