viem 2.17.2 → 2.17.3
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/CHANGELOG.md +6 -0
- package/_cjs/actions/public/verifyHash.js +9 -0
- package/_cjs/actions/public/verifyHash.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_esm/actions/public/verifyHash.js +10 -0
- package/_esm/actions/public/verifyHash.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_types/actions/public/verifyHash.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/actions/public/verifyHash.ts +12 -0
- package/errors/version.ts +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# viem
|
2
2
|
|
3
|
+
## 2.17.3
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- [`ec3b0e0`](https://github.com/wevm/viem/commit/ec3b0e08f0a379249224e65092277191f1a8502b) Thanks [@jxom](https://github.com/jxom)! - Added fallback verification in `verifyHash`.
|
8
|
+
|
3
9
|
## 2.17.2
|
4
10
|
|
5
11
|
### Patch Changes
|
@@ -5,11 +5,14 @@ const abis_js_1 = require("../../constants/abis.js");
|
|
5
5
|
const contracts_js_1 = require("../../constants/contracts.js");
|
6
6
|
const contract_js_1 = require("../../errors/contract.js");
|
7
7
|
const encodeDeployData_js_1 = require("../../utils/abi/encodeDeployData.js");
|
8
|
+
const getAddress_js_1 = require("../../utils/address/getAddress.js");
|
9
|
+
const isAddressEqual_js_1 = require("../../utils/address/isAddressEqual.js");
|
8
10
|
const isBytesEqual_js_1 = require("../../utils/data/isBytesEqual.js");
|
9
11
|
const isHex_js_1 = require("../../utils/data/isHex.js");
|
10
12
|
const toHex_js_1 = require("../../utils/encoding/toHex.js");
|
11
13
|
const getAction_js_1 = require("../../utils/getAction.js");
|
12
14
|
const isErc6492Signature_js_1 = require("../../utils/signature/isErc6492Signature.js");
|
15
|
+
const recoverAddress_js_1 = require("../../utils/signature/recoverAddress.js");
|
13
16
|
const serializeErc6492Signature_js_1 = require("../../utils/signature/serializeErc6492Signature.js");
|
14
17
|
const serializeSignature_js_1 = require("../../utils/signature/serializeSignature.js");
|
15
18
|
const call_js_1 = require("./call.js");
|
@@ -49,6 +52,12 @@ async function verifyHash(client, parameters) {
|
|
49
52
|
return (0, isBytesEqual_js_1.isBytesEqual)(data ?? '0x0', '0x1');
|
50
53
|
}
|
51
54
|
catch (error) {
|
55
|
+
try {
|
56
|
+
const verified = (0, isAddressEqual_js_1.isAddressEqual)((0, getAddress_js_1.getAddress)(address), await (0, recoverAddress_js_1.recoverAddress)({ hash, signature }));
|
57
|
+
if (verified)
|
58
|
+
return true;
|
59
|
+
}
|
60
|
+
catch { }
|
52
61
|
if (error instanceof contract_js_1.CallExecutionError) {
|
53
62
|
return false;
|
54
63
|
}
|
@@ -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":";;AA4DA,gCAoEC;AA5HD,qDAAwE;AACxE,+DAAkF;AAClF,0DAA6D;AAK7D,6EAG4C;AAC5C,qEAA8D;AAC9D,6EAAsE;AACtE,sEAGyC;AACzC,wDAAsE;AACtE,4DAA+E;AAC/E,2DAAoD;AACpD,uFAAgF;AAChF,+EAAwE;AACxE,qGAA8F;AAC9F,uFAAgF;AAChF,uCAAyE;AACzE,6CAAsC;AA+B/B,KAAK,UAAU,UAAU,CAC9B,MAAiC,EACjC,UAAgC;IAEhC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,CAAA;IAE9E,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,0CAAkB,EAAC,SAAS,CAAC,CAAA;QACtC,OAAO,IAAA,qBAAU,EAAC,SAAS,CAAC,CAAA;IAC9B,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAGzC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW;YAAE,OAAO,YAAY,CAAA;QAGjD,IAAI,IAAA,0CAAkB,EAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAA;QAEzD,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAS,EAAC,MAAM,EAAE,oBAAO,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QAEzE,IAAI,QAAQ;YAAE,OAAO,YAAY,CAAA;QAIjC,OAAO,IAAA,wDAAyB,EAAC;YAC/B,OAAO,EAAE,OAAQ;YACjB,IAAI,EAAE,WAAY;YAClB,SAAS,EAAE,YAAY;SACxB,CAAC,CAAA;IACJ,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,gBAAgB,CAAC;gBACvC,QAAQ,EAAE,kDAAmC;aAC9C,CAAC;YACF,GAAG,IAAI;SACqB,CAAC,CAAA;QAE/B,OAAO,IAAA,8BAAY,EAAC,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,kCAAc,EAC7B,IAAA,0BAAU,EAAC,OAAO,CAAC,EACnB,MAAM,IAAA,kCAAc,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC1C,CAAA;YACD,IAAI,QAAQ;gBAAE,OAAO,IAAI,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,IAAI,KAAK,YAAY,gCAAkB,EAAE,CAAC;YAIxC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
package/_cjs/errors/version.js
CHANGED
@@ -2,11 +2,14 @@ import { universalSignatureValidatorAbi } from '../../constants/abis.js';
|
|
2
2
|
import { universalSignatureValidatorByteCode } from '../../constants/contracts.js';
|
3
3
|
import { CallExecutionError } from '../../errors/contract.js';
|
4
4
|
import { encodeDeployData, } from '../../utils/abi/encodeDeployData.js';
|
5
|
+
import { getAddress } from '../../utils/address/getAddress.js';
|
6
|
+
import { isAddressEqual } from '../../utils/address/isAddressEqual.js';
|
5
7
|
import { isBytesEqual, } from '../../utils/data/isBytesEqual.js';
|
6
8
|
import { isHex } from '../../utils/data/isHex.js';
|
7
9
|
import { bytesToHex } from '../../utils/encoding/toHex.js';
|
8
10
|
import { getAction } from '../../utils/getAction.js';
|
9
11
|
import { isErc6492Signature } from '../../utils/signature/isErc6492Signature.js';
|
12
|
+
import { recoverAddress } from '../../utils/signature/recoverAddress.js';
|
10
13
|
import { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js';
|
11
14
|
import { serializeSignature } from '../../utils/signature/serializeSignature.js';
|
12
15
|
import { call } from './call.js';
|
@@ -59,6 +62,13 @@ export async function verifyHash(client, parameters) {
|
|
59
62
|
return isBytesEqual(data ?? '0x0', '0x1');
|
60
63
|
}
|
61
64
|
catch (error) {
|
65
|
+
// Fallback attempt to verify the signature via ECDSA recovery.
|
66
|
+
try {
|
67
|
+
const verified = isAddressEqual(getAddress(address), await recoverAddress({ hash, signature }));
|
68
|
+
if (verified)
|
69
|
+
return true;
|
70
|
+
}
|
71
|
+
catch { }
|
62
72
|
if (error instanceof CallExecutionError) {
|
63
73
|
// if the execution fails, the signature was not valid and an internal method inside of the validator reverted
|
64
74
|
// this can happen for many reasons, for example if signer can not be recovered from the signature
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAK7D,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,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAChF,OAAO,EAA2C,IAAI,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAwBtC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAiC,EACjC,UAAgC;IAEhC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,CAAA;IAE9E,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,kBAAkB,CAAC,SAAS,CAAC,CAAA;QACtC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QACzC,uEAAuE;QACvE,4EAA4E;QAC5E,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW;YAAE,OAAO,YAAY,CAAA;QAEjD,6DAA6D;QAC7D,IAAI,kBAAkB,CAAC,YAAY,CAAC;YAAE,OAAO,YAAY,CAAA;QAEzD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;QACzE,gEAAgE;QAChE,IAAI,QAAQ;YAAE,OAAO,YAAY,CAAA;QAEjC,+EAA+E;QAC/E,wCAAwC;QACxC,OAAO,yBAAyB,CAAC;YAC/B,OAAO,EAAE,OAAQ;YACjB,IAAI,EAAE,WAAY;YAClB,SAAS,EAAE,YAAY;SACxB,CAAC,CAAA;IACJ,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,gBAAgB,CAAC;gBACvC,QAAQ,EAAE,mCAAmC;aAC9C,CAAC;YACF,GAAG,IAAI;SACqB,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
|
+
{"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../actions/public/verifyHash.ts"],"names":[],"mappings":"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"}
|
package/_esm/errors/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = '2.17.
|
1
|
+
export const version = '2.17.3';
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -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;AAEtC,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,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACL,KAAK,yBAAyB,EAE/B,MAAM,qCAAqC,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;AAEtC,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,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACL,KAAK,yBAAyB,EAE/B,MAAM,qCAAqC,CAAA;AAG5C,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;AAM/E,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAQ,MAAM,WAAW,CAAA;AAGzE,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,GAAG,KAAK,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,GAAG,CAAA;CAAE,GAAG,EAAE,CAAC,CAAA;AAEtD,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,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAiE/B"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "2.17.
|
1
|
+
export declare const version = "2.17.3";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -13,6 +13,8 @@ import {
|
|
13
13
|
type EncodeDeployDataErrorType,
|
14
14
|
encodeDeployData,
|
15
15
|
} from '../../utils/abi/encodeDeployData.js'
|
16
|
+
import { getAddress } from '../../utils/address/getAddress.js'
|
17
|
+
import { isAddressEqual } from '../../utils/address/isAddressEqual.js'
|
16
18
|
import {
|
17
19
|
type IsBytesEqualErrorType,
|
18
20
|
isBytesEqual,
|
@@ -21,6 +23,7 @@ import { type IsHexErrorType, isHex } from '../../utils/data/isHex.js'
|
|
21
23
|
import { type ToHexErrorType, bytesToHex } from '../../utils/encoding/toHex.js'
|
22
24
|
import { getAction } from '../../utils/getAction.js'
|
23
25
|
import { isErc6492Signature } from '../../utils/signature/isErc6492Signature.js'
|
26
|
+
import { recoverAddress } from '../../utils/signature/recoverAddress.js'
|
24
27
|
import { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js'
|
25
28
|
import { serializeSignature } from '../../utils/signature/serializeSignature.js'
|
26
29
|
import { type CallErrorType, type CallParameters, call } from './call.js'
|
@@ -105,6 +108,15 @@ export async function verifyHash<TChain extends Chain | undefined>(
|
|
105
108
|
|
106
109
|
return isBytesEqual(data ?? '0x0', '0x1')
|
107
110
|
} catch (error) {
|
111
|
+
// Fallback attempt to verify the signature via ECDSA recovery.
|
112
|
+
try {
|
113
|
+
const verified = isAddressEqual(
|
114
|
+
getAddress(address),
|
115
|
+
await recoverAddress({ hash, signature }),
|
116
|
+
)
|
117
|
+
if (verified) return true
|
118
|
+
} catch {}
|
119
|
+
|
108
120
|
if (error instanceof CallExecutionError) {
|
109
121
|
// if the execution fails, the signature was not valid and an internal method inside of the validator reverted
|
110
122
|
// this can happen for many reasons, for example if signer can not be recovered from the signature
|
package/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '2.17.
|
1
|
+
export const version = '2.17.3'
|