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 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":";;AAyDA,gCA2DC;AAhHD,qDAAwE;AACxE,+DAAkF;AAClF,0DAA6D;AAK7D,6EAG4C;AAC5C,sEAGyC;AACzC,wDAAsE;AACtE,4DAA+E;AAC/E,2DAAoD;AACpD,uFAAgF;AAChF,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;QACf,IAAI,KAAK,YAAY,gCAAkB,EAAE,CAAC;YAIxC,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":";;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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '2.17.2';
4
+ exports.version = '2.17.3';
5
5
  //# sourceMappingURL=version.js.map
@@ -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":"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,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtE,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,cAAc,EAAE,MAAM,yCAAyC,CAAA;AACxE,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,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,cAAc,CAC7B,UAAU,CAAC,OAAO,CAAC,EACnB,MAAM,cAAc,CAAC,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,kBAAkB,EAAE,CAAC;YACxC,8GAA8G;YAC9G,kGAAkG;YAClG,0CAA0C;YAC1C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
- export const version = '2.17.2';
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;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;AAK/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,CAwD/B"}
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.2";
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.2'
1
+ export const version = '2.17.3'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.17.2",
4
+ "version": "2.17.3",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",