viem 2.17.2 → 2.17.3
Sign up to get free protection for your applications and to get access to all the features.
- 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'
|