@aztec/accounts 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2

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.
Files changed (75) hide show
  1. package/artifacts/EcdsaKAccount.json +552 -552
  2. package/artifacts/EcdsaRAccount.json +259 -259
  3. package/artifacts/SchnorrAccount.json +770 -770
  4. package/artifacts/SchnorrSingleKeyAccount.json +501 -501
  5. package/dest/dapp/dapp_interface.js +3 -5
  6. package/dest/dapp/index.js +0 -1
  7. package/dest/defaults/account_contract.js +3 -4
  8. package/dest/defaults/account_interface.js +7 -4
  9. package/dest/defaults/index.js +2 -4
  10. package/dest/ecdsa/ecdsa_k/account_contract.js +15 -11
  11. package/dest/ecdsa/ecdsa_k/artifact.js +3 -2
  12. package/dest/ecdsa/ecdsa_k/index.js +3 -7
  13. package/dest/ecdsa/index.js +0 -1
  14. package/dest/ecdsa/ssh_ecdsa_r/account_contract.js +51 -48
  15. package/dest/ecdsa/ssh_ecdsa_r/artifact.js +3 -2
  16. package/dest/ecdsa/ssh_ecdsa_r/index.js +3 -7
  17. package/dest/schnorr/account_contract.js +14 -11
  18. package/dest/schnorr/artifact.js +3 -2
  19. package/dest/schnorr/index.js +3 -7
  20. package/dest/single_key/account_contract.js +13 -10
  21. package/dest/single_key/artifact.js +3 -2
  22. package/dest/single_key/index.js +3 -7
  23. package/dest/testing/configuration.js +25 -24
  24. package/dest/testing/create_account.js +16 -13
  25. package/dest/testing/index.js +1 -3
  26. package/dest/utils/index.js +0 -1
  27. package/dest/utils/ssh_agent.js +75 -31
  28. package/package.json +9 -9
  29. package/src/defaults/index.ts +1 -1
  30. package/dest/dapp/dapp_interface.d.ts +0 -11
  31. package/dest/dapp/dapp_interface.d.ts.map +0 -1
  32. package/dest/dapp/index.d.ts +0 -2
  33. package/dest/dapp/index.d.ts.map +0 -1
  34. package/dest/defaults/account_contract.d.ts +0 -17
  35. package/dest/defaults/account_contract.d.ts.map +0 -1
  36. package/dest/defaults/account_interface.d.ts +0 -23
  37. package/dest/defaults/account_interface.d.ts.map +0 -1
  38. package/dest/defaults/index.d.ts +0 -10
  39. package/dest/defaults/index.d.ts.map +0 -1
  40. package/dest/ecdsa/ecdsa_k/account_contract.d.ts +0 -16
  41. package/dest/ecdsa/ecdsa_k/account_contract.d.ts.map +0 -1
  42. package/dest/ecdsa/ecdsa_k/artifact.d.ts +0 -3
  43. package/dest/ecdsa/ecdsa_k/artifact.d.ts.map +0 -1
  44. package/dest/ecdsa/ecdsa_k/index.d.ts +0 -33
  45. package/dest/ecdsa/ecdsa_k/index.d.ts.map +0 -1
  46. package/dest/ecdsa/index.d.ts +0 -3
  47. package/dest/ecdsa/index.d.ts.map +0 -1
  48. package/dest/ecdsa/ssh_ecdsa_r/account_contract.d.ts +0 -19
  49. package/dest/ecdsa/ssh_ecdsa_r/account_contract.d.ts.map +0 -1
  50. package/dest/ecdsa/ssh_ecdsa_r/artifact.d.ts +0 -2
  51. package/dest/ecdsa/ssh_ecdsa_r/artifact.d.ts.map +0 -1
  52. package/dest/ecdsa/ssh_ecdsa_r/index.d.ts +0 -33
  53. package/dest/ecdsa/ssh_ecdsa_r/index.d.ts.map +0 -1
  54. package/dest/schnorr/account_contract.d.ts +0 -15
  55. package/dest/schnorr/account_contract.d.ts.map +0 -1
  56. package/dest/schnorr/artifact.d.ts +0 -2
  57. package/dest/schnorr/artifact.d.ts.map +0 -1
  58. package/dest/schnorr/index.d.ts +0 -31
  59. package/dest/schnorr/index.d.ts.map +0 -1
  60. package/dest/single_key/account_contract.d.ts +0 -14
  61. package/dest/single_key/account_contract.d.ts.map +0 -1
  62. package/dest/single_key/artifact.d.ts +0 -2
  63. package/dest/single_key/artifact.d.ts.map +0 -1
  64. package/dest/single_key/index.d.ts +0 -31
  65. package/dest/single_key/index.d.ts.map +0 -1
  66. package/dest/testing/configuration.d.ts +0 -29
  67. package/dest/testing/configuration.d.ts.map +0 -1
  68. package/dest/testing/create_account.d.ts +0 -20
  69. package/dest/testing/create_account.d.ts.map +0 -1
  70. package/dest/testing/index.d.ts +0 -11
  71. package/dest/testing/index.d.ts.map +0 -1
  72. package/dest/utils/index.d.ts +0 -2
  73. package/dest/utils/index.d.ts.map +0 -1
  74. package/dest/utils/ssh_agent.d.ts +0 -36
  75. package/dest/utils/ssh_agent.d.ts.map +0 -1
@@ -2,17 +2,15 @@ import { DefaultDappEntrypoint } from '@aztec/entrypoints/dapp';
2
2
  import { DefaultAccountInterface } from '../defaults/account_interface.js';
3
3
  /**
4
4
  * Default implementation for an account interface that uses a dapp entrypoint.
5
- */
6
- export class DefaultDappInterface extends DefaultAccountInterface {
7
- constructor(authWitnessProvider, userAddress, dappAddress, nodeInfo) {
5
+ */ export class DefaultDappInterface extends DefaultAccountInterface {
6
+ constructor(authWitnessProvider, userAddress, dappAddress, nodeInfo){
8
7
  super(authWitnessProvider, userAddress, nodeInfo);
9
8
  this.entrypoint = new DefaultDappEntrypoint(userAddress.address, authWitnessProvider, dappAddress, nodeInfo.l1ChainId, nodeInfo.protocolVersion);
10
9
  }
11
10
  static createFromUserWallet(wallet, dappAddress) {
12
11
  return new DefaultDappInterface(wallet, wallet.getCompleteAddress(), dappAddress, {
13
12
  l1ChainId: wallet.getChainId().toNumber(),
14
- protocolVersion: wallet.getVersion().toNumber(),
13
+ protocolVersion: wallet.getVersion().toNumber()
15
14
  });
16
15
  }
17
16
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFwcF9pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGFwcC9kYXBwX2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUzRTs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx1QkFBdUI7SUFDL0QsWUFDRSxtQkFBd0MsRUFDeEMsV0FBNEIsRUFDNUIsV0FBeUIsRUFDekIsUUFBeUQ7UUFFekQsS0FBSyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUkscUJBQXFCLENBQ3pDLFdBQVcsQ0FBQyxPQUFPLEVBQ25CLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsUUFBUSxDQUFDLFNBQVMsRUFDbEIsUUFBUSxDQUFDLGVBQWUsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsTUFBcUIsRUFBRSxXQUF5QjtRQUMxRSxPQUFPLElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFdBQVcsRUFBRTtZQUNoRixTQUFTLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUN6QyxlQUFlLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTtTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
@@ -1,2 +1 @@
1
1
  export * from './dapp_interface.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGFwcC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDIn0=
@@ -2,9 +2,9 @@ import { DefaultAccountInterface } from '../defaults/account_interface.js';
2
2
  /**
3
3
  * Base class for implementing an account contract. Requires that the account uses the
4
4
  * default entrypoint method signature.
5
- */
6
- export class DefaultAccountContract {
7
- constructor(artifact) {
5
+ */ export class DefaultAccountContract {
6
+ artifact;
7
+ constructor(artifact){
8
8
  this.artifact = artifact;
9
9
  }
10
10
  getContractArtifact() {
@@ -14,4 +14,3 @@ export class DefaultAccountContract {
14
14
  return new DefaultAccountInterface(this.getAuthWitnessProvider(address), address, nodeInfo);
15
15
  }
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWZhdWx0cy9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTNFOzs7R0FHRztBQUNILE1BQU0sT0FBZ0Isc0JBQXNCO0lBSTFDLFlBQW9CLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQUcsQ0FBQztJQUVsRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBd0IsRUFBRSxRQUFrQjtRQUN2RCxPQUFPLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RixDQUFDO0NBQ0YifQ==
@@ -3,9 +3,13 @@ import { DefaultAccountEntrypoint } from '@aztec/entrypoints/account';
3
3
  /**
4
4
  * Default implementation for an account interface. Requires that the account uses the default
5
5
  * entrypoint signature, which accept an AppPayload and a FeePayload as defined in noir-libs/aztec-noir/src/entrypoint module
6
- */
7
- export class DefaultAccountInterface {
8
- constructor(authWitnessProvider, address, nodeInfo) {
6
+ */ export class DefaultAccountInterface {
7
+ authWitnessProvider;
8
+ address;
9
+ entrypoint;
10
+ chainId;
11
+ version;
12
+ constructor(authWitnessProvider, address, nodeInfo){
9
13
  this.authWitnessProvider = authWitnessProvider;
10
14
  this.address = address;
11
15
  this.entrypoint = new DefaultAccountEntrypoint(address.address, authWitnessProvider, nodeInfo.l1ChainId, nodeInfo.protocolVersion);
@@ -31,4 +35,3 @@ export class DefaultAccountInterface {
31
35
  return this.version;
32
36
  }
33
37
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVmYXVsdHMvYWNjb3VudF9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUEyQyxFQUFFLEVBQWlCLE1BQU0sb0JBQW9CLENBQUM7QUFDaEcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQU1sQyxZQUNVLG1CQUF3QyxFQUN4QyxPQUF3QixFQUNoQyxRQUF5RDtRQUZqRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBR2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSx3QkFBd0IsQ0FDNUMsT0FBTyxDQUFDLE9BQU8sRUFDZixtQkFBbUIsRUFDbkIsUUFBUSxDQUFDLFNBQVMsRUFDbEIsUUFBUSxDQUFDLGVBQWUsQ0FDekIsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxTQUErQjtRQUN0RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUFlO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGIn0=
@@ -1,10 +1,8 @@
1
1
  /**
2
2
  * The `@aztec/accounts/defaults` export provides the base class {@link DefaultAccountContract} for implementing account contracts that use the default entrypoint payload module.
3
3
  *
4
- * Read more in {@link https://docs.aztec.network/developers/wallets/writing_an_account_contract | Writing an account contract}.
4
+ * Read more in {@link https://docs.aztec.network/developers/tutorials/codealong/contract_tutorials/write_accounts_contract | Writing an account contract}.
5
5
  *
6
6
  * @packageDocumentation
7
- */
8
- export * from './account_interface.js';
7
+ */ export * from './account_interface.js';
9
8
  export * from './account_contract.js';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVmYXVsdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDIn0=
@@ -5,29 +5,33 @@ import { EcdsaKAccountContractArtifact } from './artifact.js';
5
5
  /**
6
6
  * Account contract that authenticates transactions using ECDSA signatures
7
7
  * verified against a secp256k1 public key stored in an immutable encrypted note.
8
- */
9
- export class EcdsaKAccountContract extends DefaultAccountContract {
10
- constructor(signingPrivateKey) {
11
- super(EcdsaKAccountContractArtifact);
12
- this.signingPrivateKey = signingPrivateKey;
8
+ */ export class EcdsaKAccountContract extends DefaultAccountContract {
9
+ signingPrivateKey;
10
+ constructor(signingPrivateKey){
11
+ super(EcdsaKAccountContractArtifact), this.signingPrivateKey = signingPrivateKey;
13
12
  }
14
13
  async getDeploymentArgs() {
15
14
  const signingPublicKey = await new Ecdsa().computePublicKey(this.signingPrivateKey);
16
- return [signingPublicKey.subarray(0, 32), signingPublicKey.subarray(32, 64)];
15
+ return [
16
+ signingPublicKey.subarray(0, 32),
17
+ signingPublicKey.subarray(32, 64)
18
+ ];
17
19
  }
18
20
  getAuthWitnessProvider(_address) {
19
21
  return new EcdsaKAuthWitnessProvider(this.signingPrivateKey);
20
22
  }
21
23
  }
22
- /** Creates auth witnesses using ECDSA signatures. */
23
- class EcdsaKAuthWitnessProvider {
24
- constructor(signingPrivateKey) {
24
+ /** Creates auth witnesses using ECDSA signatures. */ class EcdsaKAuthWitnessProvider {
25
+ signingPrivateKey;
26
+ constructor(signingPrivateKey){
25
27
  this.signingPrivateKey = signingPrivateKey;
26
28
  }
27
29
  async createAuthWit(messageHash) {
28
30
  const ecdsa = new Ecdsa();
29
31
  const signature = await ecdsa.constructSignature(messageHash.toBuffer(), this.signingPrivateKey);
30
- return Promise.resolve(new AuthWitness(messageHash, [...signature.r, ...signature.s]));
32
+ return Promise.resolve(new AuthWitness(messageHash, [
33
+ ...signature.r,
34
+ ...signature.s
35
+ ]));
31
36
  }
32
37
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lY2RzYS9lY2RzYV9rL2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBd0IsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxzQkFBc0I7SUFDL0QsWUFBb0IsaUJBQXlCO1FBQzNDLEtBQUssQ0FBQyw2QkFBaUQsQ0FBQyxDQUFDO1FBRHZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtJQUU3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQjtRQUNyQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRixPQUFPLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQXlCO1FBQzlDLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSx5QkFBeUI7SUFDN0IsWUFBb0IsaUJBQXlCO1FBQXpCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtJQUFHLENBQUM7SUFFakQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFlO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDMUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pHLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7Q0FDRiJ9
@@ -1,4 +1,5 @@
1
1
  import { loadContractArtifact } from '@aztec/aztec.js';
2
- import EcdsaKAccountContractJson from '../../../artifacts/EcdsaKAccount.json' assert { type: 'json' };
2
+ import EcdsaKAccountContractJson from '../../../artifacts/EcdsaKAccount.json' assert {
3
+ type: 'json'
4
+ };
3
5
  export const EcdsaKAccountContractArtifact = loadContractArtifact(EcdsaKAccountContractJson);
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWNkc2EvZWNkc2Ffay9hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9ELG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekcsT0FBTyx5QkFBeUIsTUFBTSx1Q0FBdUMsQ0FBQyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBcUIsb0JBQW9CLENBQ2pGLHlCQUFpRCxDQUNsRCxDQUFDIn0=
@@ -3,8 +3,7 @@
3
3
  * Consider using this account type when working with integrations with Ethereum wallets.
4
4
  *
5
5
  * @packageDocumentation
6
- */
7
- import { AccountManager } from '@aztec/aztec.js/account';
6
+ */ import { AccountManager } from '@aztec/aztec.js/account';
8
7
  import { getWallet } from '@aztec/aztec.js/wallet';
9
8
  import { EcdsaKAccountContract } from './account_contract.js';
10
9
  export { EcdsaKAccountContractArtifact } from './artifact.js';
@@ -16,8 +15,7 @@ export { EcdsaKAccountContract };
16
15
  * @param signingPrivateKey - Secp256k1 key used for signing transactions.
17
16
  * @param salt - Deployment salt.
18
17
  * @returns An account manager initialized with the account contract and its deployment params
19
- */
20
- export function getEcdsaKAccount(pxe, secretKey, signingPrivateKey, salt) {
18
+ */ export function getEcdsaKAccount(pxe, secretKey, signingPrivateKey, salt) {
21
19
  return AccountManager.create(pxe, secretKey, new EcdsaKAccountContract(signingPrivateKey), salt);
22
20
  }
23
21
  /**
@@ -26,8 +24,6 @@ export function getEcdsaKAccount(pxe, secretKey, signingPrivateKey, salt) {
26
24
  * @param address - Address for the account.
27
25
  * @param signingPrivateKey - ECDSA key used for signing transactions.
28
26
  * @returns A wallet for this account that can be used to interact with a contract instance.
29
- */
30
- export function getEcdsaKWallet(pxe, address, signingPrivateKey) {
27
+ */ export function getEcdsaKWallet(pxe, address, signingPrivateKey) {
31
28
  return getWallet(pxe, address, new EcdsaKAccountContract(signingPrivateKey));
32
29
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWNkc2EvZWNkc2Ffay9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQXNCLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztBQUVqQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixHQUFRLEVBQ1IsU0FBYSxFQUNiLGlCQUF5QixFQUN6QixJQUFXO0lBRVgsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQVEsRUFBRSxPQUFxQixFQUFFLGlCQUF5QjtJQUN4RixPQUFPLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUkscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMifQ==
@@ -1,3 +1,2 @@
1
1
  export * from './ecdsa_k/index.js';
2
2
  export * from './ssh_ecdsa_r/index.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNkc2EvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDIn0=
@@ -1,5 +1,3 @@
1
- var _SSHEcdsaRAuthWitnessProvider_instances, _SSHEcdsaRAuthWitnessProvider_parseECDSASignature;
2
- import { __classPrivateFieldGet } from "tslib";
3
1
  import { AuthWitness } from '@aztec/circuit-types';
4
2
  import { EcdsaSignature } from '@aztec/circuits.js/barretenberg';
5
3
  import { DefaultAccountContract } from '../../defaults/account_contract.js';
@@ -12,65 +10,70 @@ const secp256r1N = 1157920892103562487626974469494075735299969552241357603424222
12
10
  * Since this implementation relays signatures to an SSH agent, we provide the
13
11
  * public key here not for signature verification, but to identify actual identity
14
12
  * that will be used to sign authwitnesses.
15
- */
16
- export class EcdsaRSSHAccountContract extends DefaultAccountContract {
17
- constructor(signingPublicKey) {
18
- super(EcdsaRAccountContractArtifact);
19
- this.signingPublicKey = signingPublicKey;
13
+ */ export class EcdsaRSSHAccountContract extends DefaultAccountContract {
14
+ signingPublicKey;
15
+ constructor(signingPublicKey){
16
+ super(EcdsaRAccountContractArtifact), this.signingPublicKey = signingPublicKey;
20
17
  }
21
18
  getDeploymentArgs() {
22
- return Promise.resolve([this.signingPublicKey.subarray(0, 32), this.signingPublicKey.subarray(32, 64)]);
19
+ return Promise.resolve([
20
+ this.signingPublicKey.subarray(0, 32),
21
+ this.signingPublicKey.subarray(32, 64)
22
+ ]);
23
23
  }
24
24
  getAuthWitnessProvider(_address) {
25
25
  return new SSHEcdsaRAuthWitnessProvider(this.signingPublicKey);
26
26
  }
27
27
  }
28
- /** Creates auth witnesses using ECDSA signatures. */
29
- class SSHEcdsaRAuthWitnessProvider {
30
- constructor(signingPublicKey) {
31
- _SSHEcdsaRAuthWitnessProvider_instances.add(this);
28
+ /** Creates auth witnesses using ECDSA signatures. */ class SSHEcdsaRAuthWitnessProvider {
29
+ signingPublicKey;
30
+ constructor(signingPublicKey){
32
31
  this.signingPublicKey = signingPublicKey;
33
32
  }
33
+ #parseECDSASignature(data) {
34
+ // Extract ECDSA signature components
35
+ let offset = 0;
36
+ const sigTypeLen = data.readUInt32BE(offset);
37
+ offset += 4;
38
+ const sigType = data.subarray(offset, offset + sigTypeLen).toString();
39
+ offset += sigTypeLen;
40
+ if (sigType !== 'ecdsa-sha2-nistp256') {
41
+ throw new Error(`Unexpected signature type: ${sigType}`);
42
+ }
43
+ offset += 4;
44
+ const rLen = data.readUInt32BE(offset);
45
+ offset += 4;
46
+ let r = data.subarray(offset, offset + rLen);
47
+ offset += rLen;
48
+ const sLen = data.readUInt32BE(offset);
49
+ offset += 4;
50
+ let s = data.subarray(offset, offset + sLen);
51
+ // R and S are encoded using ASN.1 DER format, which may include a leading zero byte to avoid interpreting the value as negative
52
+ if (r.length > 32) {
53
+ r = Buffer.from(Uint8Array.prototype.slice.call(r, 1));
54
+ }
55
+ if (s.length > 32) {
56
+ s = Buffer.from(Uint8Array.prototype.slice.call(s, 1));
57
+ }
58
+ const maybeHighS = BigInt(`0x${s.toString('hex')}`);
59
+ // ECDSA signatures must have a low S value so they can be used as a nullifier. BB forces a value of 27 for v, so
60
+ // only one PublicKey can verify the signature (and not its negated counterpart) https://ethereum.stackexchange.com/a/55728
61
+ if (maybeHighS > secp256r1N / 2n + 1n) {
62
+ s = Buffer.from((secp256r1N - maybeHighS).toString(16), 'hex');
63
+ }
64
+ return new EcdsaSignature(r, s, Buffer.from([
65
+ 0
66
+ ]));
67
+ }
34
68
  async createAuthWit(messageHash) {
35
69
  // Key type and curve name
36
70
  const keyType = Buffer.from('ecdsa-sha2-nistp256');
37
71
  const curveName = Buffer.from('nistp256');
38
72
  const data = await signWithAgent(keyType, curveName, this.signingPublicKey, messageHash.toBuffer());
39
- const signature = __classPrivateFieldGet(this, _SSHEcdsaRAuthWitnessProvider_instances, "m", _SSHEcdsaRAuthWitnessProvider_parseECDSASignature).call(this, data);
40
- return new AuthWitness(messageHash, [...signature.r, ...signature.s]);
73
+ const signature = this.#parseECDSASignature(data);
74
+ return new AuthWitness(messageHash, [
75
+ ...signature.r,
76
+ ...signature.s
77
+ ]);
41
78
  }
42
79
  }
43
- _SSHEcdsaRAuthWitnessProvider_instances = new WeakSet(), _SSHEcdsaRAuthWitnessProvider_parseECDSASignature = function _SSHEcdsaRAuthWitnessProvider_parseECDSASignature(data) {
44
- // Extract ECDSA signature components
45
- let offset = 0;
46
- const sigTypeLen = data.readUInt32BE(offset);
47
- offset += 4;
48
- const sigType = data.subarray(offset, offset + sigTypeLen).toString();
49
- offset += sigTypeLen;
50
- if (sigType !== 'ecdsa-sha2-nistp256') {
51
- throw new Error(`Unexpected signature type: ${sigType}`);
52
- }
53
- offset += 4;
54
- const rLen = data.readUInt32BE(offset);
55
- offset += 4;
56
- let r = data.subarray(offset, offset + rLen);
57
- offset += rLen;
58
- const sLen = data.readUInt32BE(offset);
59
- offset += 4;
60
- let s = data.subarray(offset, offset + sLen);
61
- // R and S are encoded using ASN.1 DER format, which may include a leading zero byte to avoid interpreting the value as negative
62
- if (r.length > 32) {
63
- r = Buffer.from(Uint8Array.prototype.slice.call(r, 1));
64
- }
65
- if (s.length > 32) {
66
- s = Buffer.from(Uint8Array.prototype.slice.call(s, 1));
67
- }
68
- const maybeHighS = BigInt(`0x${s.toString('hex')}`);
69
- // ECDSA signatures must have a low S value so they can be used as a nullifier. BB forces a value of 27 for v, so
70
- // only one PublicKey can verify the signature (and not its negated counterpart) https://ethereum.stackexchange.com/a/55728
71
- if (maybeHighS > secp256r1N / 2n + 1n) {
72
- s = Buffer.from((secp256r1N - maybeHighS).toString(16), 'hex');
73
- }
74
- return new EcdsaSignature(r, s, Buffer.from([0]));
75
- };
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lY2RzYS9zc2hfZWNkc2Ffci9hY2NvdW50X2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBd0IsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxNQUFNLFVBQVUsR0FBRywrRUFBK0UsQ0FBQztBQUNuRzs7Ozs7O0dBTUc7QUFDSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsc0JBQXNCO0lBQ2xFLFlBQW9CLGdCQUF3QjtRQUMxQyxLQUFLLENBQUMsNkJBQWlELENBQUMsQ0FBQztRQUR2QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7SUFFNUMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBeUI7UUFDOUMsT0FBTyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQUVELHFEQUFxRDtBQUNyRCxNQUFNLDRCQUE0QjtJQUNoQyxZQUFvQixnQkFBd0I7O1FBQXhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtJ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
@@ -1,4 +1,5 @@
1
1
  import { loadContractArtifact } from '@aztec/aztec.js';
2
- import EcdsaRAccountContractJson from '../../../artifacts/EcdsaRAccount.json' assert { type: 'json' };
2
+ import EcdsaRAccountContractJson from '../../../artifacts/EcdsaRAccount.json' assert {
3
+ type: 'json'
4
+ };
3
5
  export const EcdsaRAccountContractArtifact = loadContractArtifact(EcdsaRAccountContractJson);
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWNkc2Evc3NoX2VjZHNhX3IvYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxGLE9BQU8seUJBQXlCLE1BQU0sdUNBQXVDLENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFFdEcsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsb0JBQW9CLENBQUMseUJBQWlELENBQUMsQ0FBQyJ9
@@ -3,8 +3,7 @@
3
3
  * Consider using this account type when working with integrations with Ethereum wallets.
4
4
  *
5
5
  * @packageDocumentation
6
- */
7
- import { AccountManager } from '@aztec/aztec.js/account';
6
+ */ import { AccountManager } from '@aztec/aztec.js/account';
8
7
  import { getWallet } from '@aztec/aztec.js/wallet';
9
8
  import { EcdsaRSSHAccountContract } from './account_contract.js';
10
9
  export { EcdsaRAccountContractArtifact } from './artifact.js';
@@ -16,8 +15,7 @@ export { EcdsaRSSHAccountContract };
16
15
  * @param signingPublicKey - Secp2561 key used to identify its corresponding private key in the SSH Agent.
17
16
  * @param salt - Deployment salt.
18
17
  * @returns An account manager initialized with the account contract and its deployment params
19
- */
20
- export function getEcdsaRSSHAccount(pxe, secretKey, signingPublicKey, salt) {
18
+ */ export function getEcdsaRSSHAccount(pxe, secretKey, signingPublicKey, salt) {
21
19
  return AccountManager.create(pxe, secretKey, new EcdsaRSSHAccountContract(signingPublicKey), salt);
22
20
  }
23
21
  /**
@@ -26,8 +24,6 @@ export function getEcdsaRSSHAccount(pxe, secretKey, signingPublicKey, salt) {
26
24
  * @param address - Address for the account.
27
25
  * @param signingPrivateKey - ECDSA key used for signing transactions.
28
26
  * @returns A wallet for this account that can be used to interact with a contract instance.
29
- */
30
- export function getEcdsaRSSHWallet(pxe, address, signingPublicKey) {
27
+ */ export function getEcdsaRSSHWallet(pxe, address, signingPublicKey) {
31
28
  return getWallet(pxe, address, new EcdsaRSSHAccountContract(signingPublicKey));
32
29
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWNkc2Evc3NoX2VjZHNhX3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsY0FBYyxFQUFhLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFzQixTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLENBQUM7QUFFcEM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBUSxFQUNSLFNBQWEsRUFDYixnQkFBd0IsRUFDeEIsSUFBVztJQUVYLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQVEsRUFBRSxPQUFxQixFQUFFLGdCQUF3QjtJQUMxRixPQUFPLFNBQVMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUMifQ==
@@ -5,29 +5,32 @@ import { SchnorrAccountContractArtifact } from './artifact.js';
5
5
  /**
6
6
  * Account contract that authenticates transactions using Schnorr signatures
7
7
  * verified against a Grumpkin public key stored in an immutable encrypted note.
8
- */
9
- export class SchnorrAccountContract extends DefaultAccountContract {
10
- constructor(signingPrivateKey) {
11
- super(SchnorrAccountContractArtifact);
12
- this.signingPrivateKey = signingPrivateKey;
8
+ */ export class SchnorrAccountContract extends DefaultAccountContract {
9
+ signingPrivateKey;
10
+ constructor(signingPrivateKey){
11
+ super(SchnorrAccountContractArtifact), this.signingPrivateKey = signingPrivateKey;
13
12
  }
14
13
  async getDeploymentArgs() {
15
14
  const signingPublicKey = await new Schnorr().computePublicKey(this.signingPrivateKey);
16
- return [signingPublicKey.x, signingPublicKey.y];
15
+ return [
16
+ signingPublicKey.x,
17
+ signingPublicKey.y
18
+ ];
17
19
  }
18
20
  getAuthWitnessProvider(_address) {
19
21
  return new SchnorrAuthWitnessProvider(this.signingPrivateKey);
20
22
  }
21
23
  }
22
- /** Creates auth witnesses using Schnorr signatures. */
23
- class SchnorrAuthWitnessProvider {
24
- constructor(signingPrivateKey) {
24
+ /** Creates auth witnesses using Schnorr signatures. */ class SchnorrAuthWitnessProvider {
25
+ signingPrivateKey;
26
+ constructor(signingPrivateKey){
25
27
  this.signingPrivateKey = signingPrivateKey;
26
28
  }
27
29
  async createAuthWit(messageHash) {
28
30
  const schnorr = new Schnorr();
29
31
  const signature = await schnorr.constructSignature(messageHash.toBuffer(), this.signingPrivateKey);
30
- return new AuthWitness(messageHash, [...signature.toBuffer()]);
32
+ return new AuthWitness(messageHash, [
33
+ ...signature.toBuffer()
34
+ ]);
31
35
  }
32
36
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hub3JyL2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBNkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9EOzs7R0FHRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxzQkFBc0I7SUFDaEUsWUFBb0IsaUJBQWlDO1FBQ25ELEtBQUssQ0FBQyw4QkFBa0QsQ0FBQyxDQUFDO1FBRHhDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0I7SUFFckQsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUI7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEYsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBeUI7UUFDOUMsT0FBTyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Q0FDRjtBQUVELHVEQUF1RDtBQUN2RCxNQUFNLDBCQUEwQjtJQUM5QixZQUFvQixpQkFBaUM7UUFBakMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFnQjtJQUFHLENBQUM7SUFFekQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFlO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25HLE9BQU8sSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRiJ9
@@ -1,4 +1,5 @@
1
1
  import { loadContractArtifact } from '@aztec/aztec.js';
2
- import SchnorrAccountContractJson from '../../artifacts/SchnorrAccount.json' assert { type: 'json' };
2
+ import SchnorrAccountContractJson from '../../artifacts/SchnorrAccount.json' assert {
3
+ type: 'json'
4
+ };
3
5
  export const SchnorrAccountContractArtifact = loadContractArtifact(SchnorrAccountContractJson);
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Nobm9yci9hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEYsT0FBTywwQkFBMEIsTUFBTSxxQ0FBcUMsQ0FBQyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUVyRyxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxvQkFBb0IsQ0FBQywwQkFBa0QsQ0FBQyxDQUFDIn0=
@@ -3,8 +3,7 @@
3
3
  * This is the suggested account contract type for most use cases within Aztec.
4
4
  *
5
5
  * @packageDocumentation
6
- */
7
- import { AccountManager } from '@aztec/aztec.js/account';
6
+ */ import { AccountManager } from '@aztec/aztec.js/account';
8
7
  import { getWallet } from '@aztec/aztec.js/wallet';
9
8
  import { SchnorrAccountContract } from './account_contract.js';
10
9
  export { SchnorrAccountContract };
@@ -16,8 +15,7 @@ export { SchnorrAccountContractArtifact } from './artifact.js';
16
15
  * @param signingPrivateKey - Grumpkin key used for signing transactions.
17
16
  * @param salt - Deployment salt.
18
17
  * @returns An account manager initialized with the account contract and its deployment params
19
- */
20
- export function getSchnorrAccount(pxe, secretKey, signingPrivateKey, salt) {
18
+ */ export function getSchnorrAccount(pxe, secretKey, signingPrivateKey, salt) {
21
19
  return AccountManager.create(pxe, secretKey, new SchnorrAccountContract(signingPrivateKey), salt);
22
20
  }
23
21
  /**
@@ -26,8 +24,6 @@ export function getSchnorrAccount(pxe, secretKey, signingPrivateKey, salt) {
26
24
  * @param address - Address for the account.
27
25
  * @param signingPrivateKey - Grumpkin key used for signing transactions.
28
26
  * @returns A wallet for this account that can be used to interact with a contract instance.
29
- */
30
- export function getSchnorrWallet(pxe, address, signingPrivateKey) {
27
+ */ export function getSchnorrWallet(pxe, address, signingPrivateKey) {
31
28
  return getWallet(pxe, address, new SchnorrAccountContract(signingPrivateKey));
32
29
  }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Nobm9yci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQXNCLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDO0FBRWxDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixHQUFRLEVBQ1IsU0FBYSxFQUNiLGlCQUFpQyxFQUNqQyxJQUFXO0lBRVgsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEdBQVEsRUFDUixPQUFxQixFQUNyQixpQkFBaUM7SUFFakMsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDIn0=
@@ -5,11 +5,10 @@ import { SchnorrSingleKeyAccountContractArtifact } from './artifact.js';
5
5
  /**
6
6
  * Account contract that authenticates transactions using Schnorr signatures verified against
7
7
  * the note encryption key, relying on a single private key for both encryption and authentication.
8
- */
9
- export class SingleKeyAccountContract extends DefaultAccountContract {
10
- constructor(encryptionPrivateKey) {
11
- super(SchnorrSingleKeyAccountContractArtifact);
12
- this.encryptionPrivateKey = encryptionPrivateKey;
8
+ */ export class SingleKeyAccountContract extends DefaultAccountContract {
9
+ encryptionPrivateKey;
10
+ constructor(encryptionPrivateKey){
11
+ super(SchnorrSingleKeyAccountContractArtifact), this.encryptionPrivateKey = encryptionPrivateKey;
13
12
  }
14
13
  getDeploymentArgs() {
15
14
  return Promise.resolve(undefined);
@@ -22,17 +21,21 @@ export class SingleKeyAccountContract extends DefaultAccountContract {
22
21
  * Creates auth witnesses using Schnorr signatures and including the partial address and public key
23
22
  * in the witness, so verifiers do not need to store the public key and can instead validate it
24
23
  * by reconstructing the current address.
25
- */
26
- class SingleKeyAuthWitnessProvider {
27
- constructor(privateKey, account) {
24
+ */ class SingleKeyAuthWitnessProvider {
25
+ privateKey;
26
+ account;
27
+ constructor(privateKey, account){
28
28
  this.privateKey = privateKey;
29
29
  this.account = account;
30
30
  }
31
31
  async createAuthWit(messageHash) {
32
32
  const schnorr = new Schnorr();
33
33
  const signature = await schnorr.constructSignature(messageHash.toBuffer(), this.privateKey);
34
- const witness = [...this.account.publicKeys.toFields(), ...signature.toBuffer(), this.account.partialAddress];
34
+ const witness = [
35
+ ...this.account.publicKeys.toFields(),
36
+ ...signature.toBuffer(),
37
+ this.account.partialAddress
38
+ ];
35
39
  return Promise.resolve(new AuthWitness(messageHash, witness));
36
40
  }
37
41
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudF9jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW5nbGVfa2V5L2FjY291bnRfY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBNkMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhFOzs7R0FHRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxzQkFBc0I7SUFDbEUsWUFBb0Isb0JBQW9DO1FBQ3RELEtBQUssQ0FBQyx1Q0FBMkQsQ0FBQyxDQUFDO1FBRGpELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBZ0I7SUFFeEQsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsT0FBd0I7UUFDN0MsT0FBTyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSw0QkFBNEI7SUFDaEMsWUFBb0IsVUFBMEIsRUFBVSxPQUF3QjtRQUE1RCxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWlCO0lBQUcsQ0FBQztJQUVwRixLQUFLLENBQUMsYUFBYSxDQUFDLFdBQWU7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlHLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0YifQ==
@@ -1,4 +1,5 @@
1
1
  import { loadContractArtifact } from '@aztec/aztec.js';
2
- import SchnorrSingleKeyAccountContractJson from '../../artifacts/SchnorrSingleKeyAccount.json' assert { type: 'json' };
2
+ import SchnorrSingleKeyAccountContractJson from '../../artifacts/SchnorrSingleKeyAccount.json' assert {
3
+ type: 'json'
4
+ };
3
5
  export const SchnorrSingleKeyAccountContractArtifact = loadContractArtifact(SchnorrSingleKeyAccountContractJson);
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2luZ2xlX2tleS9hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEYsT0FBTyxtQ0FBbUMsTUFBTSw4Q0FBOEMsQ0FBQyxTQUFTLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUV2SCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxvQkFBb0IsQ0FDekUsbUNBQTJELENBQzVELENBQUMifQ==
@@ -3,8 +3,7 @@
3
3
  * It is not recommended to use this account type in production.
4
4
  *
5
5
  * @packageDocumentation
6
- */
7
- import { AccountManager } from '@aztec/aztec.js/account';
6
+ */ import { AccountManager } from '@aztec/aztec.js/account';
8
7
  import { getWallet } from '@aztec/aztec.js/wallet';
9
8
  import { deriveMasterIncomingViewingSecretKey } from '@aztec/circuits.js';
10
9
  import { SingleKeyAccountContract } from './account_contract.js';
@@ -16,8 +15,7 @@ export { SchnorrSingleKeyAccountContractArtifact as SingleKeyAccountContractArti
16
15
  * @param secretKey - Secret key used to derive all the keystore keys (in this case also used to get signing key).
17
16
  * @param salt - Deployment salt.
18
17
  * @returns An account manager initialized with the account contract and its deployment params
19
- */
20
- export function getSingleKeyAccount(pxe, secretKey, salt) {
18
+ */ export function getSingleKeyAccount(pxe, secretKey, salt) {
21
19
  const encryptionPrivateKey = deriveMasterIncomingViewingSecretKey(secretKey);
22
20
  return AccountManager.create(pxe, secretKey, new SingleKeyAccountContract(encryptionPrivateKey), salt);
23
21
  }
@@ -27,9 +25,7 @@ export function getSingleKeyAccount(pxe, secretKey, salt) {
27
25
  * @param address - Address for the account.
28
26
  * @param signingPrivateKey - Grumpkin key used for note encryption and signing transactions.
29
27
  * @returns A wallet for this account that can be used to interact with a contract instance.
30
- */
31
- export function getSingleKeyWallet(pxe, address, signingKey) {
28
+ */ export function getSingleKeyWallet(pxe, address, signingKey) {
32
29
  return getWallet(pxe, address, new SingleKeyAccountContract(signingKey));
33
30
  }
34
31
  export { getSingleKeyAccount as getUnsafeSchnorrAccount, getSingleKeyWallet as getUnsafeSchnorrWallet };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2luZ2xlX2tleS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxjQUFjLEVBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQXNCLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZFLE9BQU8sRUFBOEIsb0NBQW9DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsdUNBQXVDLElBQUksZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUc7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEdBQVEsRUFBRSxTQUFhLEVBQUUsSUFBVztJQUN0RSxNQUFNLG9CQUFvQixHQUFHLG9DQUFvQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdFLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksd0JBQXdCLENBQUMsb0JBQW9CLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6RyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxHQUFRLEVBQ1IsT0FBcUIsRUFDckIsVUFBMEI7SUFFMUIsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUVELE9BQU8sRUFBRSxtQkFBbUIsSUFBSSx1QkFBdUIsRUFBRSxrQkFBa0IsSUFBSSxzQkFBc0IsRUFBRSxDQUFDIn0=