@frequency-chain/ethereum-utils 1.17.0-rc7 → 1.17.1

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.
@@ -3626,6 +3626,8 @@ function stringToU8a(value) {
3626
3626
  * @summary Creates a Uint8Array value from a Uint8Array, Buffer, string or hex input.
3627
3627
  * @description
3628
3628
  * `null` or `undefined` inputs returns a `[]` result, Uint8Array values returns the value, hex strings returns a Uint8Array representation.
3629
+ * If `strict` is true, `null` or `undefined` will throw an error instead of returning an empty array.
3630
+ * Supports input types: Uint8Array, Buffer, hex string, string, or number array.
3629
3631
  * @example
3630
3632
  * <BR>
3631
3633
  *
@@ -3636,7 +3638,10 @@ function stringToU8a(value) {
3636
3638
  * u8aToU8a(0x1234); // => Uint8Array([0x12, 0x34])
3637
3639
  * ```
3638
3640
  */
3639
- function u8aToU8a(value) {
3641
+ function u8aToU8a(value, strict = false) {
3642
+ if (strict && (value === null || value === undefined)) {
3643
+ throw new Error('u8aToU8a: Expected non-null, non-undefined value');
3644
+ }
3640
3645
  return isU8a(value)
3641
3646
  // NOTE isBuffer needs to go here since it actually extends
3642
3647
  // Uint8Array on Node.js environments, so all Buffer are Uint8Array,
@@ -10515,7 +10520,7 @@ function ethereumEncode(addressOrPublic) {
10515
10520
  /**
10516
10521
  * The current version of Ethers.
10517
10522
  */
10518
- const version = "6.14.4";/**
10523
+ const version = "6.15.0";/**
10519
10524
  * Property helper functions.
10520
10525
  *
10521
10526
  * @_subsection api/utils:Properties [about-properties]
@@ -14694,12 +14699,28 @@ class Signature {
14694
14699
  /**
14695
14700
  * The ``s`` value for a signature.
14696
14701
  */
14697
- get s() { return this.#s; }
14702
+ get s() {
14703
+ assertArgument(parseInt(this.#s.substring(0, 3)) < 8, "non-canonical s; use ._s", "s", this.#s);
14704
+ return this.#s;
14705
+ }
14698
14706
  set s(_value) {
14699
14707
  assertArgument(dataLength(_value) === 32, "invalid s", "value", _value);
14700
- const value = hexlify(_value);
14701
- assertArgument(parseInt(value.substring(0, 3)) < 8, "non-canonical s", "value", value);
14702
- this.#s = value;
14708
+ this.#s = hexlify(_value);
14709
+ }
14710
+ /**
14711
+ * Return the s value, unchecked for EIP-2 compliance.
14712
+ *
14713
+ * This should generally not be used and is for situations where
14714
+ * a non-canonical S value might be relevant, such as Frontier blocks
14715
+ * that were mined prior to EIP-2 or invalid Authorization List
14716
+ * signatures.
14717
+ */
14718
+ get _s() { return this.#s; }
14719
+ /**
14720
+ * Returns true if the Signature is valid for [[link-eip-2]] signatures.
14721
+ */
14722
+ isValid() {
14723
+ return (parseInt(this.#s.substring(0, 3)) < 8);
14703
14724
  }
14704
14725
  /**
14705
14726
  * The ``v`` value for a signature.
@@ -14776,13 +14797,13 @@ class Signature {
14776
14797
  this.#networkV = null;
14777
14798
  }
14778
14799
  [Symbol.for('nodejs.util.inspect.custom')]() {
14779
- return `Signature { r: "${this.r}", s: "${this.s}", yParity: ${this.yParity}, networkV: ${this.networkV} }`;
14800
+ return `Signature { r: "${this.r}", s: "${this._s}"${this.isValid() ? "" : ', valid: "false"'}, yParity: ${this.yParity}, networkV: ${this.networkV} }`;
14780
14801
  }
14781
14802
  /**
14782
14803
  * Returns a new identical [[Signature]].
14783
14804
  */
14784
14805
  clone() {
14785
- const clone = new Signature(_guard$2, this.r, this.s, this.v);
14806
+ const clone = new Signature(_guard$2, this.r, this._s, this.v);
14786
14807
  if (this.networkV) {
14787
14808
  clone.#networkV = this.networkV;
14788
14809
  }
@@ -14796,7 +14817,7 @@ class Signature {
14796
14817
  return {
14797
14818
  _type: "signature",
14798
14819
  networkV: ((networkV != null) ? networkV.toString() : null),
14799
- r: this.r, s: this.s, v: this.v,
14820
+ r: this.r, s: this._s, v: this.v,
14800
14821
  };
14801
14822
  }
14802
14823
  /**
@@ -14895,10 +14916,9 @@ class Signature {
14895
14916
  }
14896
14917
  if (bytes.length === 65) {
14897
14918
  const r = hexlify(bytes.slice(0, 32));
14898
- const s = bytes.slice(32, 64);
14899
- assertError((s[0] & 0x80) === 0, "non-canonical s");
14919
+ const s = hexlify(bytes.slice(32, 64));
14900
14920
  const v = Signature.getNormalizedV(bytes[64]);
14901
- return new Signature(_guard$2, r, hexlify(s), v);
14921
+ return new Signature(_guard$2, r, s, v);
14902
14922
  }
14903
14923
  assertError(false, "invalid raw signature length");
14904
14924
  }
@@ -14922,7 +14942,6 @@ class Signature {
14922
14942
  }
14923
14943
  assertError(false, "missing s");
14924
14944
  })(sig.s, sig.yParityAndS);
14925
- assertError((getBytes(s)[0] & 0x80) == 0, "non-canonical s");
14926
14945
  // Get v; by any means necessary (we check consistency below)
14927
14946
  const { networkV, v } = (function (_v, yParityAndS, yParity) {
14928
14947
  if (_v != null) {
@@ -19473,6 +19492,18 @@ const AUTHORIZED_KEY_DATA_DEFINITION = {
19473
19492
  },
19474
19493
  ],
19475
19494
  };
19495
+ const RECOVERY_COMMITMENT_PAYLOAD_DEFINITION = {
19496
+ RecoveryCommitmentPayload: [
19497
+ {
19498
+ name: 'recoveryCommitment',
19499
+ type: 'bytes',
19500
+ },
19501
+ {
19502
+ name: 'expiration',
19503
+ type: 'uint32',
19504
+ },
19505
+ ],
19506
+ };
19476
19507
  const CLAIM_HANDLE_PAYLOAD_DEFINITION = {
19477
19508
  ClaimHandlePayload: [
19478
19509
  {
@@ -19577,7 +19608,7 @@ const SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION = {
19577
19608
  type: 'string',
19578
19609
  },
19579
19610
  ],
19580
- };var signatureDefinitions=/*#__PURE__*/Object.freeze({__proto__:null,ADD_KEY_DATA_DEFINITION:ADD_KEY_DATA_DEFINITION,ADD_PROVIDER_DEFINITION:ADD_PROVIDER_DEFINITION,AUTHORIZED_KEY_DATA_DEFINITION:AUTHORIZED_KEY_DATA_DEFINITION,CLAIM_HANDLE_PAYLOAD_DEFINITION:CLAIM_HANDLE_PAYLOAD_DEFINITION,EIP712_DOMAIN_DEFINITION:EIP712_DOMAIN_DEFINITION,EIP712_DOMAIN_MAINNET:EIP712_DOMAIN_MAINNET,EIP712_DOMAIN_TESTNET:EIP712_DOMAIN_TESTNET,ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2:ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,PASSKEY_PUBLIC_KEY_DEFINITION:PASSKEY_PUBLIC_KEY_DEFINITION,SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION:SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION});/**
19611
+ };var signatureDefinitions=/*#__PURE__*/Object.freeze({__proto__:null,ADD_KEY_DATA_DEFINITION:ADD_KEY_DATA_DEFINITION,ADD_PROVIDER_DEFINITION:ADD_PROVIDER_DEFINITION,AUTHORIZED_KEY_DATA_DEFINITION:AUTHORIZED_KEY_DATA_DEFINITION,CLAIM_HANDLE_PAYLOAD_DEFINITION:CLAIM_HANDLE_PAYLOAD_DEFINITION,EIP712_DOMAIN_DEFINITION:EIP712_DOMAIN_DEFINITION,EIP712_DOMAIN_MAINNET:EIP712_DOMAIN_MAINNET,EIP712_DOMAIN_TESTNET:EIP712_DOMAIN_TESTNET,ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2:ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,PASSKEY_PUBLIC_KEY_DEFINITION:PASSKEY_PUBLIC_KEY_DEFINITION,RECOVERY_COMMITMENT_PAYLOAD_DEFINITION:RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION:SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION});/**
19581
19612
  * Signing EIP-712 or ERC-191 compatible signature based on payload
19582
19613
  * @param secretKey
19583
19614
  * @param payload
@@ -19634,6 +19665,7 @@ function normalizePayload(payload) {
19634
19665
  case 'PasskeyPublicKey':
19635
19666
  case 'ClaimHandlePayload':
19636
19667
  case 'AddProvider':
19668
+ case 'RecoveryCommitmentPayload':
19637
19669
  case 'SiwfLoginRequestPayload':
19638
19670
  break;
19639
19671
  case 'AddKeyData':
@@ -19672,6 +19704,7 @@ function getTypesFor(payloadType) {
19672
19704
  AddKeyData: ADD_KEY_DATA_DEFINITION,
19673
19705
  AuthorizedKeyData: AUTHORIZED_KEY_DATA_DEFINITION,
19674
19706
  AddProvider: ADD_PROVIDER_DEFINITION,
19707
+ RecoveryCommitmentPayload: RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,
19675
19708
  // offchain signatures
19676
19709
  SiwfSignedRequestPayload: SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
19677
19710
  };
@@ -19747,6 +19780,21 @@ function createAddProvider(authorizedMsaId, schemaIds, expirationBlock) {
19747
19780
  expiration: expirationBlock,
19748
19781
  };
19749
19782
  }
19783
+ /**
19784
+ * Build a RecoveryCommitmentPayload for signature.
19785
+ *
19786
+ * @param recoveryCommitment The recovery commitment data as a HexString
19787
+ * @param expirationBlock Block number after which this payload is invalid
19788
+ */
19789
+ function createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock) {
19790
+ assert(isHexString(recoveryCommitment), 'recoveryCommitment should be a valid hex string');
19791
+ assert(isValidUint32(expirationBlock), 'expiration should be a valid uint32');
19792
+ return {
19793
+ type: 'RecoveryCommitmentPayload',
19794
+ recoveryCommitment: recoveryCommitment,
19795
+ expiration: expirationBlock,
19796
+ };
19797
+ }
19750
19798
  /**
19751
19799
  * Build a ClaimHandlePayload for signature.
19752
19800
  *
@@ -19919,6 +19967,18 @@ function getEip712BrowserRequestAddProvider(authorizedMsaId, schemaIds, expirati
19919
19967
  const normalized = normalizePayload(message);
19920
19968
  return createEip712Payload(ADD_PROVIDER_DEFINITION, message.type, domain, normalized);
19921
19969
  }
19970
+ /**
19971
+ * Returns the EIP-712 browser request for a RecoveryCommitmentPayload for signing.
19972
+ *
19973
+ * @param recoveryCommitment The recovery commitment data as a Uint8Array
19974
+ * @param expirationBlock Block number after which this payload is invalid
19975
+ * @param domain
19976
+ */
19977
+ function getEip712BrowserRequestRecoveryCommitmentPayload(recoveryCommitment, expirationBlock, domain = EIP712_DOMAIN_MAINNET) {
19978
+ const message = createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock);
19979
+ const normalized = normalizePayload(message);
19980
+ return createEip712Payload(RECOVERY_COMMITMENT_PAYLOAD_DEFINITION, message.type, domain, normalized);
19981
+ }
19922
19982
  /**
19923
19983
  * Returns the EIP-712 browser request for a PaginatedUpsertSignaturePayloadV2 for signing.
19924
19984
  *
@@ -20054,4 +20114,4 @@ function prefixEthereumTags(hexPayload) {
20054
20114
  const wrapped = `\x19Ethereum Signed Message:\n${hexPayload.length}${hexPayload}`;
20055
20115
  const buffer = Buffer.from(wrapped, 'utf-8');
20056
20116
  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);
20057
- }var signature=/*#__PURE__*/Object.freeze({__proto__:null,createAddKeyData:createAddKeyData,createAddProvider:createAddProvider,createAuthorizedKeyData:createAuthorizedKeyData,createClaimHandlePayload:createClaimHandlePayload,createItemizedAddAction:createItemizedAddAction,createItemizedDeleteAction:createItemizedDeleteAction,createItemizedSignaturePayloadV2:createItemizedSignaturePayloadV2,createPaginatedDeleteSignaturePayloadV2:createPaginatedDeleteSignaturePayloadV2,createPaginatedUpsertSignaturePayloadV2:createPaginatedUpsertSignaturePayloadV2,createPasskeyPublicKey:createPasskeyPublicKey,createSiwfLoginRequestPayload:createSiwfLoginRequestPayload,createSiwfSignedRequestPayload:createSiwfSignedRequestPayload,getEip712BrowserRequestAddKeyData:getEip712BrowserRequestAddKeyData,getEip712BrowserRequestAddProvider:getEip712BrowserRequestAddProvider,getEip712BrowserRequestAuthorizedKeyData:getEip712BrowserRequestAuthorizedKeyData,getEip712BrowserRequestClaimHandlePayload:getEip712BrowserRequestClaimHandlePayload,getEip712BrowserRequestItemizedSignaturePayloadV2:getEip712BrowserRequestItemizedSignaturePayloadV2,getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2:getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2,getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2:getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2,getEip712BrowserRequestPasskeyPublicKey:getEip712BrowserRequestPasskeyPublicKey,getEip712BrowserRequestSiwfSignedRequestPayload:getEip712BrowserRequestSiwfSignedRequestPayload,getEthereumMessageSigner:getEthereumMessageSigner,getEthereumRegularSigner:getEthereumRegularSigner,sign:sign,verifySignature:verifySignature});var index = { ...payloads, ...address, ...signatureDefinitions, ...signature };export{ADD_KEY_DATA_DEFINITION,ADD_PROVIDER_DEFINITION,AUTHORIZED_KEY_DATA_DEFINITION,CLAIM_HANDLE_PAYLOAD_DEFINITION,EIP712_DOMAIN_DEFINITION,EIP712_DOMAIN_MAINNET,EIP712_DOMAIN_TESTNET,ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,PASSKEY_PUBLIC_KEY_DEFINITION,SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,createAddKeyData,createAddProvider,createAuthorizedKeyData,createClaimHandlePayload,createItemizedAddAction,createItemizedDeleteAction,createItemizedSignaturePayloadV2,createPaginatedDeleteSignaturePayloadV2,createPaginatedUpsertSignaturePayloadV2,createPasskeyPublicKey,createRandomKey,createSiwfLoginRequestPayload,createSiwfSignedRequestPayload,index as default,ethereumAddressToKeyringPair,getAccountId20MultiAddress,getEip712BrowserRequestAddKeyData,getEip712BrowserRequestAddProvider,getEip712BrowserRequestAuthorizedKeyData,getEip712BrowserRequestClaimHandlePayload,getEip712BrowserRequestItemizedSignaturePayloadV2,getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2,getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2,getEip712BrowserRequestPasskeyPublicKey,getEip712BrowserRequestSiwfSignedRequestPayload,getEthereumMessageSigner,getEthereumRegularSigner,getKeyringPairFromSecp256k1PrivateKey,getSS58AccountFromEthereumAccount,getUnifiedAddress,getUnifiedPublicKey,reverseUnifiedAddressToEthereumAddress,sign,verifySignature};
20117
+ }var signature=/*#__PURE__*/Object.freeze({__proto__:null,createAddKeyData:createAddKeyData,createAddProvider:createAddProvider,createAuthorizedKeyData:createAuthorizedKeyData,createClaimHandlePayload:createClaimHandlePayload,createItemizedAddAction:createItemizedAddAction,createItemizedDeleteAction:createItemizedDeleteAction,createItemizedSignaturePayloadV2:createItemizedSignaturePayloadV2,createPaginatedDeleteSignaturePayloadV2:createPaginatedDeleteSignaturePayloadV2,createPaginatedUpsertSignaturePayloadV2:createPaginatedUpsertSignaturePayloadV2,createPasskeyPublicKey:createPasskeyPublicKey,createRecoveryCommitmentPayload:createRecoveryCommitmentPayload,createSiwfLoginRequestPayload:createSiwfLoginRequestPayload,createSiwfSignedRequestPayload:createSiwfSignedRequestPayload,getEip712BrowserRequestAddKeyData:getEip712BrowserRequestAddKeyData,getEip712BrowserRequestAddProvider:getEip712BrowserRequestAddProvider,getEip712BrowserRequestAuthorizedKeyData:getEip712BrowserRequestAuthorizedKeyData,getEip712BrowserRequestClaimHandlePayload:getEip712BrowserRequestClaimHandlePayload,getEip712BrowserRequestItemizedSignaturePayloadV2:getEip712BrowserRequestItemizedSignaturePayloadV2,getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2:getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2,getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2:getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2,getEip712BrowserRequestPasskeyPublicKey:getEip712BrowserRequestPasskeyPublicKey,getEip712BrowserRequestRecoveryCommitmentPayload:getEip712BrowserRequestRecoveryCommitmentPayload,getEip712BrowserRequestSiwfSignedRequestPayload:getEip712BrowserRequestSiwfSignedRequestPayload,getEthereumMessageSigner:getEthereumMessageSigner,getEthereumRegularSigner:getEthereumRegularSigner,sign:sign,verifySignature:verifySignature});var index = { ...payloads, ...address, ...signatureDefinitions, ...signature };export{ADD_KEY_DATA_DEFINITION,ADD_PROVIDER_DEFINITION,AUTHORIZED_KEY_DATA_DEFINITION,CLAIM_HANDLE_PAYLOAD_DEFINITION,EIP712_DOMAIN_DEFINITION,EIP712_DOMAIN_MAINNET,EIP712_DOMAIN_TESTNET,ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,PASSKEY_PUBLIC_KEY_DEFINITION,RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,createAddKeyData,createAddProvider,createAuthorizedKeyData,createClaimHandlePayload,createItemizedAddAction,createItemizedDeleteAction,createItemizedSignaturePayloadV2,createPaginatedDeleteSignaturePayloadV2,createPaginatedUpsertSignaturePayloadV2,createPasskeyPublicKey,createRandomKey,createRecoveryCommitmentPayload,createSiwfLoginRequestPayload,createSiwfSignedRequestPayload,index as default,ethereumAddressToKeyringPair,getAccountId20MultiAddress,getEip712BrowserRequestAddKeyData,getEip712BrowserRequestAddProvider,getEip712BrowserRequestAuthorizedKeyData,getEip712BrowserRequestClaimHandlePayload,getEip712BrowserRequestItemizedSignaturePayloadV2,getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2,getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2,getEip712BrowserRequestPasskeyPublicKey,getEip712BrowserRequestRecoveryCommitmentPayload,getEip712BrowserRequestSiwfSignedRequestPayload,getEthereumMessageSigner,getEthereumRegularSigner,getKeyringPairFromSecp256k1PrivateKey,getSS58AccountFromEthereumAccount,getUnifiedAddress,getUnifiedPublicKey,reverseUnifiedAddressToEthereumAddress,sign,verifySignature};
@@ -3626,6 +3626,8 @@ function stringToU8a(value) {
3626
3626
  * @summary Creates a Uint8Array value from a Uint8Array, Buffer, string or hex input.
3627
3627
  * @description
3628
3628
  * `null` or `undefined` inputs returns a `[]` result, Uint8Array values returns the value, hex strings returns a Uint8Array representation.
3629
+ * If `strict` is true, `null` or `undefined` will throw an error instead of returning an empty array.
3630
+ * Supports input types: Uint8Array, Buffer, hex string, string, or number array.
3629
3631
  * @example
3630
3632
  * <BR>
3631
3633
  *
@@ -3636,7 +3638,10 @@ function stringToU8a(value) {
3636
3638
  * u8aToU8a(0x1234); // => Uint8Array([0x12, 0x34])
3637
3639
  * ```
3638
3640
  */
3639
- function u8aToU8a(value) {
3641
+ function u8aToU8a(value, strict = false) {
3642
+ if (strict && (value === null || value === undefined)) {
3643
+ throw new Error('u8aToU8a: Expected non-null, non-undefined value');
3644
+ }
3640
3645
  return isU8a(value)
3641
3646
  // NOTE isBuffer needs to go here since it actually extends
3642
3647
  // Uint8Array on Node.js environments, so all Buffer are Uint8Array,
@@ -10733,6 +10738,18 @@ const AUTHORIZED_KEY_DATA_DEFINITION = {
10733
10738
  },
10734
10739
  ],
10735
10740
  };
10741
+ const RECOVERY_COMMITMENT_PAYLOAD_DEFINITION = {
10742
+ RecoveryCommitmentPayload: [
10743
+ {
10744
+ name: 'recoveryCommitment',
10745
+ type: 'bytes',
10746
+ },
10747
+ {
10748
+ name: 'expiration',
10749
+ type: 'uint32',
10750
+ },
10751
+ ],
10752
+ };
10736
10753
  const CLAIM_HANDLE_PAYLOAD_DEFINITION = {
10737
10754
  ClaimHandlePayload: [
10738
10755
  {
@@ -10837,7 +10854,7 @@ const SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION = {
10837
10854
  type: 'string',
10838
10855
  },
10839
10856
  ],
10840
- };var signatureDefinitions=/*#__PURE__*/Object.freeze({__proto__:null,ADD_KEY_DATA_DEFINITION:ADD_KEY_DATA_DEFINITION,ADD_PROVIDER_DEFINITION:ADD_PROVIDER_DEFINITION,AUTHORIZED_KEY_DATA_DEFINITION:AUTHORIZED_KEY_DATA_DEFINITION,CLAIM_HANDLE_PAYLOAD_DEFINITION:CLAIM_HANDLE_PAYLOAD_DEFINITION,EIP712_DOMAIN_DEFINITION:EIP712_DOMAIN_DEFINITION,EIP712_DOMAIN_MAINNET:EIP712_DOMAIN_MAINNET,EIP712_DOMAIN_TESTNET:EIP712_DOMAIN_TESTNET,ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2:ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,PASSKEY_PUBLIC_KEY_DEFINITION:PASSKEY_PUBLIC_KEY_DEFINITION,SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION:SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION});/**
10857
+ };var signatureDefinitions=/*#__PURE__*/Object.freeze({__proto__:null,ADD_KEY_DATA_DEFINITION:ADD_KEY_DATA_DEFINITION,ADD_PROVIDER_DEFINITION:ADD_PROVIDER_DEFINITION,AUTHORIZED_KEY_DATA_DEFINITION:AUTHORIZED_KEY_DATA_DEFINITION,CLAIM_HANDLE_PAYLOAD_DEFINITION:CLAIM_HANDLE_PAYLOAD_DEFINITION,EIP712_DOMAIN_DEFINITION:EIP712_DOMAIN_DEFINITION,EIP712_DOMAIN_MAINNET:EIP712_DOMAIN_MAINNET,EIP712_DOMAIN_TESTNET:EIP712_DOMAIN_TESTNET,ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2:ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2:PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,PASSKEY_PUBLIC_KEY_DEFINITION:PASSKEY_PUBLIC_KEY_DEFINITION,RECOVERY_COMMITMENT_PAYLOAD_DEFINITION:RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION:SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION});/**
10841
10858
  * Signing EIP-712 or ERC-191 compatible signature based on payload
10842
10859
  * @param secretKey
10843
10860
  * @param payload
@@ -10894,6 +10911,7 @@ function normalizePayload(payload) {
10894
10911
  case 'PasskeyPublicKey':
10895
10912
  case 'ClaimHandlePayload':
10896
10913
  case 'AddProvider':
10914
+ case 'RecoveryCommitmentPayload':
10897
10915
  case 'SiwfLoginRequestPayload':
10898
10916
  break;
10899
10917
  case 'AddKeyData':
@@ -10932,6 +10950,7 @@ function getTypesFor(payloadType) {
10932
10950
  AddKeyData: ADD_KEY_DATA_DEFINITION,
10933
10951
  AuthorizedKeyData: AUTHORIZED_KEY_DATA_DEFINITION,
10934
10952
  AddProvider: ADD_PROVIDER_DEFINITION,
10953
+ RecoveryCommitmentPayload: RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,
10935
10954
  // offchain signatures
10936
10955
  SiwfSignedRequestPayload: SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
10937
10956
  };
@@ -11007,6 +11026,21 @@ function createAddProvider(authorizedMsaId, schemaIds, expirationBlock) {
11007
11026
  expiration: expirationBlock,
11008
11027
  };
11009
11028
  }
11029
+ /**
11030
+ * Build a RecoveryCommitmentPayload for signature.
11031
+ *
11032
+ * @param recoveryCommitment The recovery commitment data as a HexString
11033
+ * @param expirationBlock Block number after which this payload is invalid
11034
+ */
11035
+ function createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock) {
11036
+ assert(isHexString(recoveryCommitment), 'recoveryCommitment should be a valid hex string');
11037
+ assert(isValidUint32(expirationBlock), 'expiration should be a valid uint32');
11038
+ return {
11039
+ type: 'RecoveryCommitmentPayload',
11040
+ recoveryCommitment: recoveryCommitment,
11041
+ expiration: expirationBlock,
11042
+ };
11043
+ }
11010
11044
  /**
11011
11045
  * Build a ClaimHandlePayload for signature.
11012
11046
  *
@@ -11179,6 +11213,18 @@ function getEip712BrowserRequestAddProvider(authorizedMsaId, schemaIds, expirati
11179
11213
  const normalized = normalizePayload(message);
11180
11214
  return createEip712Payload(ADD_PROVIDER_DEFINITION, message.type, domain, normalized);
11181
11215
  }
11216
+ /**
11217
+ * Returns the EIP-712 browser request for a RecoveryCommitmentPayload for signing.
11218
+ *
11219
+ * @param recoveryCommitment The recovery commitment data as a Uint8Array
11220
+ * @param expirationBlock Block number after which this payload is invalid
11221
+ * @param domain
11222
+ */
11223
+ function getEip712BrowserRequestRecoveryCommitmentPayload(recoveryCommitment, expirationBlock, domain = EIP712_DOMAIN_MAINNET) {
11224
+ const message = createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock);
11225
+ const normalized = normalizePayload(message);
11226
+ return createEip712Payload(RECOVERY_COMMITMENT_PAYLOAD_DEFINITION, message.type, domain, normalized);
11227
+ }
11182
11228
  /**
11183
11229
  * Returns the EIP-712 browser request for a PaginatedUpsertSignaturePayloadV2 for signing.
11184
11230
  *
@@ -11314,4 +11360,4 @@ function prefixEthereumTags(hexPayload) {
11314
11360
  const wrapped = `\x19Ethereum Signed Message:\n${hexPayload.length}${hexPayload}`;
11315
11361
  const buffer = Buffer.from(wrapped, 'utf-8');
11316
11362
  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);
11317
- }var signature=/*#__PURE__*/Object.freeze({__proto__:null,createAddKeyData:createAddKeyData,createAddProvider:createAddProvider,createAuthorizedKeyData:createAuthorizedKeyData,createClaimHandlePayload:createClaimHandlePayload,createItemizedAddAction:createItemizedAddAction,createItemizedDeleteAction:createItemizedDeleteAction,createItemizedSignaturePayloadV2:createItemizedSignaturePayloadV2,createPaginatedDeleteSignaturePayloadV2:createPaginatedDeleteSignaturePayloadV2,createPaginatedUpsertSignaturePayloadV2:createPaginatedUpsertSignaturePayloadV2,createPasskeyPublicKey:createPasskeyPublicKey,createSiwfLoginRequestPayload:createSiwfLoginRequestPayload,createSiwfSignedRequestPayload:createSiwfSignedRequestPayload,getEip712BrowserRequestAddKeyData:getEip712BrowserRequestAddKeyData,getEip712BrowserRequestAddProvider:getEip712BrowserRequestAddProvider,getEip712BrowserRequestAuthorizedKeyData:getEip712BrowserRequestAuthorizedKeyData,getEip712BrowserRequestClaimHandlePayload:getEip712BrowserRequestClaimHandlePayload,getEip712BrowserRequestItemizedSignaturePayloadV2:getEip712BrowserRequestItemizedSignaturePayloadV2,getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2:getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2,getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2:getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2,getEip712BrowserRequestPasskeyPublicKey:getEip712BrowserRequestPasskeyPublicKey,getEip712BrowserRequestSiwfSignedRequestPayload:getEip712BrowserRequestSiwfSignedRequestPayload,getEthereumMessageSigner:getEthereumMessageSigner,getEthereumRegularSigner:getEthereumRegularSigner,sign:sign,verifySignature:verifySignature});var index = { ...payloads, ...address, ...signatureDefinitions, ...signature };exports.ADD_KEY_DATA_DEFINITION=ADD_KEY_DATA_DEFINITION;exports.ADD_PROVIDER_DEFINITION=ADD_PROVIDER_DEFINITION;exports.AUTHORIZED_KEY_DATA_DEFINITION=AUTHORIZED_KEY_DATA_DEFINITION;exports.CLAIM_HANDLE_PAYLOAD_DEFINITION=CLAIM_HANDLE_PAYLOAD_DEFINITION;exports.EIP712_DOMAIN_DEFINITION=EIP712_DOMAIN_DEFINITION;exports.EIP712_DOMAIN_MAINNET=EIP712_DOMAIN_MAINNET;exports.EIP712_DOMAIN_TESTNET=EIP712_DOMAIN_TESTNET;exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2=ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2;exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2=PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2;exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2=PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2;exports.PASSKEY_PUBLIC_KEY_DEFINITION=PASSKEY_PUBLIC_KEY_DEFINITION;exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION=SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION;exports.createAddKeyData=createAddKeyData;exports.createAddProvider=createAddProvider;exports.createAuthorizedKeyData=createAuthorizedKeyData;exports.createClaimHandlePayload=createClaimHandlePayload;exports.createItemizedAddAction=createItemizedAddAction;exports.createItemizedDeleteAction=createItemizedDeleteAction;exports.createItemizedSignaturePayloadV2=createItemizedSignaturePayloadV2;exports.createPaginatedDeleteSignaturePayloadV2=createPaginatedDeleteSignaturePayloadV2;exports.createPaginatedUpsertSignaturePayloadV2=createPaginatedUpsertSignaturePayloadV2;exports.createPasskeyPublicKey=createPasskeyPublicKey;exports.createRandomKey=createRandomKey;exports.createSiwfLoginRequestPayload=createSiwfLoginRequestPayload;exports.createSiwfSignedRequestPayload=createSiwfSignedRequestPayload;exports.default=index;exports.ethereumAddressToKeyringPair=ethereumAddressToKeyringPair;exports.getAccountId20MultiAddress=getAccountId20MultiAddress;exports.getEip712BrowserRequestAddKeyData=getEip712BrowserRequestAddKeyData;exports.getEip712BrowserRequestAddProvider=getEip712BrowserRequestAddProvider;exports.getEip712BrowserRequestAuthorizedKeyData=getEip712BrowserRequestAuthorizedKeyData;exports.getEip712BrowserRequestClaimHandlePayload=getEip712BrowserRequestClaimHandlePayload;exports.getEip712BrowserRequestItemizedSignaturePayloadV2=getEip712BrowserRequestItemizedSignaturePayloadV2;exports.getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2=getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2;exports.getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2=getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2;exports.getEip712BrowserRequestPasskeyPublicKey=getEip712BrowserRequestPasskeyPublicKey;exports.getEip712BrowserRequestSiwfSignedRequestPayload=getEip712BrowserRequestSiwfSignedRequestPayload;exports.getEthereumMessageSigner=getEthereumMessageSigner;exports.getEthereumRegularSigner=getEthereumRegularSigner;exports.getKeyringPairFromSecp256k1PrivateKey=getKeyringPairFromSecp256k1PrivateKey;exports.getSS58AccountFromEthereumAccount=getSS58AccountFromEthereumAccount;exports.getUnifiedAddress=getUnifiedAddress;exports.getUnifiedPublicKey=getUnifiedPublicKey;exports.reverseUnifiedAddressToEthereumAddress=reverseUnifiedAddressToEthereumAddress;exports.sign=sign;exports.verifySignature=verifySignature;Object.defineProperty(exports,'__esModule',{value:true});}));
11363
+ }var signature=/*#__PURE__*/Object.freeze({__proto__:null,createAddKeyData:createAddKeyData,createAddProvider:createAddProvider,createAuthorizedKeyData:createAuthorizedKeyData,createClaimHandlePayload:createClaimHandlePayload,createItemizedAddAction:createItemizedAddAction,createItemizedDeleteAction:createItemizedDeleteAction,createItemizedSignaturePayloadV2:createItemizedSignaturePayloadV2,createPaginatedDeleteSignaturePayloadV2:createPaginatedDeleteSignaturePayloadV2,createPaginatedUpsertSignaturePayloadV2:createPaginatedUpsertSignaturePayloadV2,createPasskeyPublicKey:createPasskeyPublicKey,createRecoveryCommitmentPayload:createRecoveryCommitmentPayload,createSiwfLoginRequestPayload:createSiwfLoginRequestPayload,createSiwfSignedRequestPayload:createSiwfSignedRequestPayload,getEip712BrowserRequestAddKeyData:getEip712BrowserRequestAddKeyData,getEip712BrowserRequestAddProvider:getEip712BrowserRequestAddProvider,getEip712BrowserRequestAuthorizedKeyData:getEip712BrowserRequestAuthorizedKeyData,getEip712BrowserRequestClaimHandlePayload:getEip712BrowserRequestClaimHandlePayload,getEip712BrowserRequestItemizedSignaturePayloadV2:getEip712BrowserRequestItemizedSignaturePayloadV2,getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2:getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2,getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2:getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2,getEip712BrowserRequestPasskeyPublicKey:getEip712BrowserRequestPasskeyPublicKey,getEip712BrowserRequestRecoveryCommitmentPayload:getEip712BrowserRequestRecoveryCommitmentPayload,getEip712BrowserRequestSiwfSignedRequestPayload:getEip712BrowserRequestSiwfSignedRequestPayload,getEthereumMessageSigner:getEthereumMessageSigner,getEthereumRegularSigner:getEthereumRegularSigner,sign:sign,verifySignature:verifySignature});var index = { ...payloads, ...address, ...signatureDefinitions, ...signature };exports.ADD_KEY_DATA_DEFINITION=ADD_KEY_DATA_DEFINITION;exports.ADD_PROVIDER_DEFINITION=ADD_PROVIDER_DEFINITION;exports.AUTHORIZED_KEY_DATA_DEFINITION=AUTHORIZED_KEY_DATA_DEFINITION;exports.CLAIM_HANDLE_PAYLOAD_DEFINITION=CLAIM_HANDLE_PAYLOAD_DEFINITION;exports.EIP712_DOMAIN_DEFINITION=EIP712_DOMAIN_DEFINITION;exports.EIP712_DOMAIN_MAINNET=EIP712_DOMAIN_MAINNET;exports.EIP712_DOMAIN_TESTNET=EIP712_DOMAIN_TESTNET;exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2=ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2;exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2=PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2;exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2=PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2;exports.PASSKEY_PUBLIC_KEY_DEFINITION=PASSKEY_PUBLIC_KEY_DEFINITION;exports.RECOVERY_COMMITMENT_PAYLOAD_DEFINITION=RECOVERY_COMMITMENT_PAYLOAD_DEFINITION;exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION=SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION;exports.createAddKeyData=createAddKeyData;exports.createAddProvider=createAddProvider;exports.createAuthorizedKeyData=createAuthorizedKeyData;exports.createClaimHandlePayload=createClaimHandlePayload;exports.createItemizedAddAction=createItemizedAddAction;exports.createItemizedDeleteAction=createItemizedDeleteAction;exports.createItemizedSignaturePayloadV2=createItemizedSignaturePayloadV2;exports.createPaginatedDeleteSignaturePayloadV2=createPaginatedDeleteSignaturePayloadV2;exports.createPaginatedUpsertSignaturePayloadV2=createPaginatedUpsertSignaturePayloadV2;exports.createPasskeyPublicKey=createPasskeyPublicKey;exports.createRandomKey=createRandomKey;exports.createRecoveryCommitmentPayload=createRecoveryCommitmentPayload;exports.createSiwfLoginRequestPayload=createSiwfLoginRequestPayload;exports.createSiwfSignedRequestPayload=createSiwfSignedRequestPayload;exports.default=index;exports.ethereumAddressToKeyringPair=ethereumAddressToKeyringPair;exports.getAccountId20MultiAddress=getAccountId20MultiAddress;exports.getEip712BrowserRequestAddKeyData=getEip712BrowserRequestAddKeyData;exports.getEip712BrowserRequestAddProvider=getEip712BrowserRequestAddProvider;exports.getEip712BrowserRequestAuthorizedKeyData=getEip712BrowserRequestAuthorizedKeyData;exports.getEip712BrowserRequestClaimHandlePayload=getEip712BrowserRequestClaimHandlePayload;exports.getEip712BrowserRequestItemizedSignaturePayloadV2=getEip712BrowserRequestItemizedSignaturePayloadV2;exports.getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2=getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2;exports.getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2=getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2;exports.getEip712BrowserRequestPasskeyPublicKey=getEip712BrowserRequestPasskeyPublicKey;exports.getEip712BrowserRequestRecoveryCommitmentPayload=getEip712BrowserRequestRecoveryCommitmentPayload;exports.getEip712BrowserRequestSiwfSignedRequestPayload=getEip712BrowserRequestSiwfSignedRequestPayload;exports.getEthereumMessageSigner=getEthereumMessageSigner;exports.getEthereumRegularSigner=getEthereumRegularSigner;exports.getKeyringPairFromSecp256k1PrivateKey=getKeyringPairFromSecp256k1PrivateKey;exports.getSS58AccountFromEthereumAccount=getSS58AccountFromEthereumAccount;exports.getUnifiedAddress=getUnifiedAddress;exports.getUnifiedPublicKey=getUnifiedPublicKey;exports.reverseUnifiedAddressToEthereumAddress=reverseUnifiedAddressToEthereumAddress;exports.sign=sign;exports.verifySignature=verifySignature;Object.defineProperty(exports,'__esModule',{value:true});}));
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION = exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PASSKEY_PUBLIC_KEY_DEFINITION = exports.CLAIM_HANDLE_PAYLOAD_DEFINITION = exports.AUTHORIZED_KEY_DATA_DEFINITION = exports.ADD_KEY_DATA_DEFINITION = exports.ADD_PROVIDER_DEFINITION = exports.EIP712_DOMAIN_TESTNET = exports.EIP712_DOMAIN_MAINNET = exports.EIP712_DOMAIN_DEFINITION = void 0;
3
+ exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION = exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2 = exports.PASSKEY_PUBLIC_KEY_DEFINITION = exports.CLAIM_HANDLE_PAYLOAD_DEFINITION = exports.RECOVERY_COMMITMENT_PAYLOAD_DEFINITION = exports.AUTHORIZED_KEY_DATA_DEFINITION = exports.ADD_KEY_DATA_DEFINITION = exports.ADD_PROVIDER_DEFINITION = exports.EIP712_DOMAIN_TESTNET = exports.EIP712_DOMAIN_MAINNET = exports.EIP712_DOMAIN_DEFINITION = void 0;
4
4
  exports.EIP712_DOMAIN_DEFINITION = {
5
5
  EIP712Domain: [
6
6
  {
@@ -83,6 +83,18 @@ exports.AUTHORIZED_KEY_DATA_DEFINITION = {
83
83
  },
84
84
  ],
85
85
  };
86
+ exports.RECOVERY_COMMITMENT_PAYLOAD_DEFINITION = {
87
+ RecoveryCommitmentPayload: [
88
+ {
89
+ name: 'recoveryCommitment',
90
+ type: 'bytes',
91
+ },
92
+ {
93
+ name: 'expiration',
94
+ type: 'uint32',
95
+ },
96
+ ],
97
+ };
86
98
  exports.CLAIM_HANDLE_PAYLOAD_DEFINITION = {
87
99
  ClaimHandlePayload: [
88
100
  {
@@ -196,6 +208,7 @@ const PAYLOAD_DEFINITIONS = [
196
208
  exports.PASSKEY_PUBLIC_KEY_DEFINITION,
197
209
  exports.PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,
198
210
  exports.PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,
211
+ exports.RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,
199
212
  exports.ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,
200
213
  exports.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
201
214
  ];
package/cjs/signature.js CHANGED
@@ -5,6 +5,7 @@ exports.verifySignature = verifySignature;
5
5
  exports.createAddKeyData = createAddKeyData;
6
6
  exports.createAuthorizedKeyData = createAuthorizedKeyData;
7
7
  exports.createAddProvider = createAddProvider;
8
+ exports.createRecoveryCommitmentPayload = createRecoveryCommitmentPayload;
8
9
  exports.createClaimHandlePayload = createClaimHandlePayload;
9
10
  exports.createPasskeyPublicKey = createPasskeyPublicKey;
10
11
  exports.createItemizedAddAction = createItemizedAddAction;
@@ -17,6 +18,7 @@ exports.createSiwfLoginRequestPayload = createSiwfLoginRequestPayload;
17
18
  exports.getEip712BrowserRequestAddKeyData = getEip712BrowserRequestAddKeyData;
18
19
  exports.getEip712BrowserRequestAuthorizedKeyData = getEip712BrowserRequestAuthorizedKeyData;
19
20
  exports.getEip712BrowserRequestAddProvider = getEip712BrowserRequestAddProvider;
21
+ exports.getEip712BrowserRequestRecoveryCommitmentPayload = getEip712BrowserRequestRecoveryCommitmentPayload;
20
22
  exports.getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2 = getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2;
21
23
  exports.getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2 = getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2;
22
24
  exports.getEip712BrowserRequestItemizedSignaturePayloadV2 = getEip712BrowserRequestItemizedSignaturePayloadV2;
@@ -87,6 +89,7 @@ function normalizePayload(payload) {
87
89
  case 'PasskeyPublicKey':
88
90
  case 'ClaimHandlePayload':
89
91
  case 'AddProvider':
92
+ case 'RecoveryCommitmentPayload':
90
93
  case 'SiwfLoginRequestPayload':
91
94
  break;
92
95
  case 'AddKeyData':
@@ -125,6 +128,7 @@ function getTypesFor(payloadType) {
125
128
  AddKeyData: signature_definitions_js_1.ADD_KEY_DATA_DEFINITION,
126
129
  AuthorizedKeyData: signature_definitions_js_1.AUTHORIZED_KEY_DATA_DEFINITION,
127
130
  AddProvider: signature_definitions_js_1.ADD_PROVIDER_DEFINITION,
131
+ RecoveryCommitmentPayload: signature_definitions_js_1.RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,
128
132
  // offchain signatures
129
133
  SiwfSignedRequestPayload: signature_definitions_js_1.SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
130
134
  };
@@ -200,6 +204,21 @@ function createAddProvider(authorizedMsaId, schemaIds, expirationBlock) {
200
204
  expiration: expirationBlock,
201
205
  };
202
206
  }
207
+ /**
208
+ * Build a RecoveryCommitmentPayload for signature.
209
+ *
210
+ * @param recoveryCommitment The recovery commitment data as a HexString
211
+ * @param expirationBlock Block number after which this payload is invalid
212
+ */
213
+ function createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock) {
214
+ (0, utils_js_1.assert)((0, utils_js_1.isHexString)(recoveryCommitment), 'recoveryCommitment should be a valid hex string');
215
+ (0, utils_js_1.assert)((0, utils_js_1.isValidUint32)(expirationBlock), 'expiration should be a valid uint32');
216
+ return {
217
+ type: 'RecoveryCommitmentPayload',
218
+ recoveryCommitment: recoveryCommitment,
219
+ expiration: expirationBlock,
220
+ };
221
+ }
203
222
  /**
204
223
  * Build a ClaimHandlePayload for signature.
205
224
  *
@@ -372,6 +391,18 @@ function getEip712BrowserRequestAddProvider(authorizedMsaId, schemaIds, expirati
372
391
  const normalized = normalizePayload(message);
373
392
  return createEip712Payload(signature_definitions_js_1.ADD_PROVIDER_DEFINITION, message.type, domain, normalized);
374
393
  }
394
+ /**
395
+ * Returns the EIP-712 browser request for a RecoveryCommitmentPayload for signing.
396
+ *
397
+ * @param recoveryCommitment The recovery commitment data as a Uint8Array
398
+ * @param expirationBlock Block number after which this payload is invalid
399
+ * @param domain
400
+ */
401
+ function getEip712BrowserRequestRecoveryCommitmentPayload(recoveryCommitment, expirationBlock, domain = signature_definitions_js_1.EIP712_DOMAIN_MAINNET) {
402
+ const message = createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock);
403
+ const normalized = normalizePayload(message);
404
+ return createEip712Payload(signature_definitions_js_1.RECOVERY_COMMITMENT_PAYLOAD_DEFINITION, message.type, domain, normalized);
405
+ }
375
406
  /**
376
407
  * Returns the EIP-712 browser request for a PaginatedUpsertSignaturePayloadV2 for signing.
377
408
  *
@@ -80,6 +80,18 @@ export const AUTHORIZED_KEY_DATA_DEFINITION = {
80
80
  },
81
81
  ],
82
82
  };
83
+ export const RECOVERY_COMMITMENT_PAYLOAD_DEFINITION = {
84
+ RecoveryCommitmentPayload: [
85
+ {
86
+ name: 'recoveryCommitment',
87
+ type: 'bytes',
88
+ },
89
+ {
90
+ name: 'expiration',
91
+ type: 'uint32',
92
+ },
93
+ ],
94
+ };
83
95
  export const CLAIM_HANDLE_PAYLOAD_DEFINITION = {
84
96
  ClaimHandlePayload: [
85
97
  {
@@ -193,6 +205,7 @@ const PAYLOAD_DEFINITIONS = [
193
205
  PASSKEY_PUBLIC_KEY_DEFINITION,
194
206
  PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2,
195
207
  PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2,
208
+ RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,
196
209
  ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2,
197
210
  SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
198
211
  ];
package/esm/signature.js CHANGED
@@ -2,7 +2,7 @@ import { assert, isHexString, isValidUint16, isValidUint32, isValidUint64String
2
2
  import { reverseUnifiedAddressToEthereumAddress } from './address.js';
3
3
  import { ethers } from 'ethers';
4
4
  import { u8aToHex } from '@polkadot/util';
5
- import { ADD_KEY_DATA_DEFINITION, ADD_PROVIDER_DEFINITION, AUTHORIZED_KEY_DATA_DEFINITION, CLAIM_HANDLE_PAYLOAD_DEFINITION, EIP712_DOMAIN_MAINNET, EIP712_DOMAIN_DEFINITION, ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2, PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2, PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2, PASSKEY_PUBLIC_KEY_DEFINITION, SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION, EIP712_DOMAIN_TESTNET, } from './signature.definitions.js';
5
+ import { ADD_KEY_DATA_DEFINITION, ADD_PROVIDER_DEFINITION, AUTHORIZED_KEY_DATA_DEFINITION, CLAIM_HANDLE_PAYLOAD_DEFINITION, EIP712_DOMAIN_MAINNET, EIP712_DOMAIN_DEFINITION, ITEMIZED_SIGNATURE_PAYLOAD_DEFINITION_V2, PAGINATED_DELETE_SIGNATURE_PAYLOAD_DEFINITION_V2, PAGINATED_UPSERT_SIGNATURE_PAYLOAD_DEFINITION_V2, PASSKEY_PUBLIC_KEY_DEFINITION, SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION, EIP712_DOMAIN_TESTNET, RECOVERY_COMMITMENT_PAYLOAD_DEFINITION, } from './signature.definitions.js';
6
6
  /**
7
7
  * Signing EIP-712 or ERC-191 compatible signature based on payload
8
8
  * @param secretKey
@@ -60,6 +60,7 @@ function normalizePayload(payload) {
60
60
  case 'PasskeyPublicKey':
61
61
  case 'ClaimHandlePayload':
62
62
  case 'AddProvider':
63
+ case 'RecoveryCommitmentPayload':
63
64
  case 'SiwfLoginRequestPayload':
64
65
  break;
65
66
  case 'AddKeyData':
@@ -98,6 +99,7 @@ function getTypesFor(payloadType) {
98
99
  AddKeyData: ADD_KEY_DATA_DEFINITION,
99
100
  AuthorizedKeyData: AUTHORIZED_KEY_DATA_DEFINITION,
100
101
  AddProvider: ADD_PROVIDER_DEFINITION,
102
+ RecoveryCommitmentPayload: RECOVERY_COMMITMENT_PAYLOAD_DEFINITION,
101
103
  // offchain signatures
102
104
  SiwfSignedRequestPayload: SIWF_SIGNED_REQUEST_PAYLOAD_DEFINITION,
103
105
  };
@@ -173,6 +175,21 @@ export function createAddProvider(authorizedMsaId, schemaIds, expirationBlock) {
173
175
  expiration: expirationBlock,
174
176
  };
175
177
  }
178
+ /**
179
+ * Build a RecoveryCommitmentPayload for signature.
180
+ *
181
+ * @param recoveryCommitment The recovery commitment data as a HexString
182
+ * @param expirationBlock Block number after which this payload is invalid
183
+ */
184
+ export function createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock) {
185
+ assert(isHexString(recoveryCommitment), 'recoveryCommitment should be a valid hex string');
186
+ assert(isValidUint32(expirationBlock), 'expiration should be a valid uint32');
187
+ return {
188
+ type: 'RecoveryCommitmentPayload',
189
+ recoveryCommitment: recoveryCommitment,
190
+ expiration: expirationBlock,
191
+ };
192
+ }
176
193
  /**
177
194
  * Build a ClaimHandlePayload for signature.
178
195
  *
@@ -345,6 +362,18 @@ export function getEip712BrowserRequestAddProvider(authorizedMsaId, schemaIds, e
345
362
  const normalized = normalizePayload(message);
346
363
  return createEip712Payload(ADD_PROVIDER_DEFINITION, message.type, domain, normalized);
347
364
  }
365
+ /**
366
+ * Returns the EIP-712 browser request for a RecoveryCommitmentPayload for signing.
367
+ *
368
+ * @param recoveryCommitment The recovery commitment data as a Uint8Array
369
+ * @param expirationBlock Block number after which this payload is invalid
370
+ * @param domain
371
+ */
372
+ export function getEip712BrowserRequestRecoveryCommitmentPayload(recoveryCommitment, expirationBlock, domain = EIP712_DOMAIN_MAINNET) {
373
+ const message = createRecoveryCommitmentPayload(recoveryCommitment, expirationBlock);
374
+ const normalized = normalizePayload(message);
375
+ return createEip712Payload(RECOVERY_COMMITMENT_PAYLOAD_DEFINITION, message.type, domain, normalized);
376
+ }
348
377
  /**
349
378
  * Returns the EIP-712 browser request for a PaginatedUpsertSignaturePayloadV2 for signing.
350
379
  *
package/index.d.ts CHANGED
@@ -9,6 +9,7 @@ declare const _default: {
9
9
  createAddKeyData(msaId: string | bigint, newPublicKey: payloads.HexString | Uint8Array, expirationBlock: number): payloads.AddKeyData;
10
10
  createAuthorizedKeyData(msaId: string | bigint, newPublicKey: payloads.HexString | Uint8Array, expirationBlock: number): payloads.AuthorizedKeyData;
11
11
  createAddProvider(authorizedMsaId: string | bigint, schemaIds: number[], expirationBlock: number): payloads.AddProvider;
12
+ createRecoveryCommitmentPayload(recoveryCommitment: payloads.HexString, expirationBlock: number): payloads.RecoveryCommitmentPayload;
12
13
  createClaimHandlePayload(handle: string, expirationBlock: number): payloads.ClaimHandlePayload;
13
14
  createPasskeyPublicKey(publicKey: payloads.HexString | Uint8Array): payloads.PasskeyPublicKey;
14
15
  createItemizedAddAction(data: payloads.HexString | Uint8Array): payloads.AddItemizedAction;
@@ -21,6 +22,7 @@ declare const _default: {
21
22
  getEip712BrowserRequestAddKeyData(msaId: string | bigint, newPublicKey: payloads.HexString | Uint8Array, expirationBlock: number, domain?: payloads.EipDomainPayload): unknown;
22
23
  getEip712BrowserRequestAuthorizedKeyData(msaId: string | bigint, authorizedPublicKey: payloads.HexString | Uint8Array, expirationBlock: number, domain?: payloads.EipDomainPayload): unknown;
23
24
  getEip712BrowserRequestAddProvider(authorizedMsaId: string | bigint, schemaIds: number[], expirationBlock: number, domain?: payloads.EipDomainPayload): unknown;
25
+ getEip712BrowserRequestRecoveryCommitmentPayload(recoveryCommitment: payloads.HexString, expirationBlock: number, domain?: payloads.EipDomainPayload): unknown;
24
26
  getEip712BrowserRequestPaginatedUpsertSignaturePayloadV2(schemaId: number, pageId: number, targetHash: number, expiration: number, payload: payloads.HexString | Uint8Array, domain?: payloads.EipDomainPayload): unknown;
25
27
  getEip712BrowserRequestPaginatedDeleteSignaturePayloadV2(schemaId: number, pageId: number, targetHash: number, expiration: number, domain?: payloads.EipDomainPayload): unknown;
26
28
  getEip712BrowserRequestItemizedSignaturePayloadV2(schemaId: number, targetHash: number, expiration: number, actions: payloads.ItemizedAction[], domain?: payloads.EipDomainPayload): unknown;
@@ -55,6 +57,12 @@ declare const _default: {
55
57
  type: string;
56
58
  }[];
57
59
  };
60
+ RECOVERY_COMMITMENT_PAYLOAD_DEFINITION: {
61
+ RecoveryCommitmentPayload: {
62
+ name: string;
63
+ type: string;
64
+ }[];
65
+ };
58
66
  CLAIM_HANDLE_PAYLOAD_DEFINITION: {
59
67
  ClaimHandlePayload: {
60
68
  name: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frequency-chain/ethereum-utils",
3
- "version": "1.17.0-rc7",
3
+ "version": "1.17.1",
4
4
  "bugs": {
5
5
  "url": "https://github.com/frequency-chain/frequency/issues"
6
6
  },
@@ -15,9 +15,9 @@
15
15
  "author": "frequency-chain",
16
16
  "license": "Apache-2.0",
17
17
  "dependencies": {
18
- "@polkadot/api": "^16.2.2",
19
- "@polkadot/util": "13.5.2",
20
- "ethers": "^6.14.4"
18
+ "@polkadot/api": "^16.3.1",
19
+ "@polkadot/util": "13.5.3",
20
+ "ethers": "^6.15.0"
21
21
  },
22
22
  "optionalDependencies": {
23
23
  "@rollup/rollup-linux-x64-gnu": "^4.44.1"
package/payloads.d.ts CHANGED
@@ -77,6 +77,11 @@ export interface AddProvider {
77
77
  schemaIds: number[];
78
78
  expiration: number;
79
79
  }
80
+ export interface RecoveryCommitmentPayload {
81
+ type: 'RecoveryCommitmentPayload';
82
+ recoveryCommitment: HexString;
83
+ expiration: number;
84
+ }
80
85
  export interface SiwfSignedRequestPayload {
81
86
  type: 'SiwfSignedRequestPayload';
82
87
  callback: string;
@@ -87,7 +92,7 @@ export interface SiwfLoginRequestPayload {
87
92
  type: 'SiwfLoginRequestPayload';
88
93
  message: string;
89
94
  }
90
- export type SupportedPayload = PaginatedUpsertSignaturePayloadV2 | PaginatedDeleteSignaturePayloadV2 | ItemizedSignaturePayloadV2 | PasskeyPublicKey | ClaimHandlePayload | AddKeyData | AuthorizedKeyData | AddProvider | SiwfSignedRequestPayload | SiwfLoginRequestPayload;
95
+ export type SupportedPayload = PaginatedUpsertSignaturePayloadV2 | PaginatedDeleteSignaturePayloadV2 | ItemizedSignaturePayloadV2 | PasskeyPublicKey | ClaimHandlePayload | AddKeyData | AuthorizedKeyData | AddProvider | RecoveryCommitmentPayload | SiwfSignedRequestPayload | SiwfLoginRequestPayload;
91
96
  export type NormalizedSupportedPayload = Omit<SupportedPayload, 'type'>;
92
97
  export interface EipDomainPayload {
93
98
  name: string;
package/signature.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AddKeyData, AuthorizedKeyData, AddProvider, ChainType, ClaimHandlePayload, EcdsaSignature, ItemizedSignaturePayloadV2, PaginatedDeleteSignaturePayloadV2, PaginatedUpsertSignaturePayloadV2, PasskeyPublicKey, SupportedPayload, HexString, AddItemizedAction, DeleteItemizedAction, ItemizedAction, EipDomainPayload, SiwfSignedRequestPayload, SiwfLoginRequestPayload } from './payloads.js';
1
+ import { AddKeyData, AuthorizedKeyData, AddProvider, ChainType, ClaimHandlePayload, EcdsaSignature, ItemizedSignaturePayloadV2, PaginatedDeleteSignaturePayloadV2, PaginatedUpsertSignaturePayloadV2, PasskeyPublicKey, SupportedPayload, HexString, AddItemizedAction, DeleteItemizedAction, ItemizedAction, EipDomainPayload, RecoveryCommitmentPayload, SiwfSignedRequestPayload, SiwfLoginRequestPayload } from './payloads.js';
2
2
  import { KeyringPair } from '@polkadot/keyring/types';
3
3
  import { Signer } from '@polkadot/types/types';
4
4
  /**
@@ -40,6 +40,13 @@ export declare function createAuthorizedKeyData(msaId: string | bigint, newPubli
40
40
  * @param expirationBlock Block number after which this payload is invalid
41
41
  */
42
42
  export declare function createAddProvider(authorizedMsaId: string | bigint, schemaIds: number[], expirationBlock: number): AddProvider;
43
+ /**
44
+ * Build a RecoveryCommitmentPayload for signature.
45
+ *
46
+ * @param recoveryCommitment The recovery commitment data as a HexString
47
+ * @param expirationBlock Block number after which this payload is invalid
48
+ */
49
+ export declare function createRecoveryCommitmentPayload(recoveryCommitment: HexString, expirationBlock: number): RecoveryCommitmentPayload;
43
50
  /**
44
51
  * Build a ClaimHandlePayload for signature.
45
52
  *
@@ -124,6 +131,14 @@ export declare function getEip712BrowserRequestAuthorizedKeyData(msaId: string |
124
131
  * @param domain
125
132
  */
126
133
  export declare function getEip712BrowserRequestAddProvider(authorizedMsaId: string | bigint, schemaIds: number[], expirationBlock: number, domain?: EipDomainPayload): unknown;
134
+ /**
135
+ * Returns the EIP-712 browser request for a RecoveryCommitmentPayload for signing.
136
+ *
137
+ * @param recoveryCommitment The recovery commitment data as a Uint8Array
138
+ * @param expirationBlock Block number after which this payload is invalid
139
+ * @param domain
140
+ */
141
+ export declare function getEip712BrowserRequestRecoveryCommitmentPayload(recoveryCommitment: HexString, expirationBlock: number, domain?: EipDomainPayload): unknown;
127
142
  /**
128
143
  * Returns the EIP-712 browser request for a PaginatedUpsertSignaturePayloadV2 for signing.
129
144
  *
@@ -25,6 +25,12 @@ export declare const AUTHORIZED_KEY_DATA_DEFINITION: {
25
25
  type: string;
26
26
  }[];
27
27
  };
28
+ export declare const RECOVERY_COMMITMENT_PAYLOAD_DEFINITION: {
29
+ RecoveryCommitmentPayload: {
30
+ name: string;
31
+ type: string;
32
+ }[];
33
+ };
28
34
  export declare const CLAIM_HANDLE_PAYLOAD_DEFINITION: {
29
35
  ClaimHandlePayload: {
30
36
  name: string;
@@ -80,6 +86,11 @@ declare const PAYLOAD_DEFINITIONS: ({
80
86
  name: string;
81
87
  type: string;
82
88
  }[];
89
+ } | {
90
+ RecoveryCommitmentPayload: {
91
+ name: string;
92
+ type: string;
93
+ }[];
83
94
  } | {
84
95
  ClaimHandlePayload: {
85
96
  name: string;