@aztec/key-store 0.71.0 → 0.73.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"key_store.d.ts","sourceRoot":"","sources":["../src/key_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,EAAE,EAEF,cAAc,EAEd,KAAK,SAAS,EACd,oBAAoB,EACpB,KAAK,cAAc,EAKpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,KAAK,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;AAE7E;;GAEG;AACH,qBAAa,QAAQ;;gBAGP,QAAQ,EAAE,iBAAiB;IAIvC;;;OAGG;IACI,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC;IAMhD;;;;;OAKG;IACU,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAwCzF;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAOnD;;;;;;OAMG;IACU,uBAAuB,CAAC,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsC/G;;;;;OAKG;IACU,2BAA2B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUnF;;;;;OAKG;IACU,iCAAiC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUzF;;;;;OAKG;IACU,iCAAiC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUzF;;;;;OAKG;IACU,yBAAyB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUjF;;;;;OAKG;IACU,iCAAiC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAU9F;;;;;;OAMG;IACU,8BAA8B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC;IAelG;;;;;;OAMG;IACU,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IAkBxE;;;;;OAKG;IACU,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;CAe3F"}
1
+ {"version":3,"file":"key_store.d.ts","sourceRoot":"","sources":["../src/key_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,EAAE,EAEF,cAAc,EAEd,KAAK,SAAS,EACd,oBAAoB,EACpB,KAAK,cAAc,EAKpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,KAAK,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;AAE7E;;GAEG;AACH,qBAAa,QAAQ;;gBAGP,QAAQ,EAAE,iBAAiB;IAIvC;;;OAGG;IACI,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC;IAMhD;;;;;OAKG;IACU,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAsCzF;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAOnD;;;;;;OAMG;IACU,uBAAuB,CAAC,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuC/G;;;;;OAKG;IACU,2BAA2B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUnF;;;;;OAKG;IACU,iCAAiC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUzF;;;;;OAKG;IACU,iCAAiC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUzF;;;;;OAKG;IACU,yBAAyB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAUjF;;;;;OAKG;IACU,iCAAiC,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC;IAU9F;;;;;;OAMG;IACU,8BAA8B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC;IAelG;;;;;;OAMG;IACU,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IAmBxE;;;;;OAKG;IACU,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;CAe3F"}
package/dest/key_store.js CHANGED
@@ -28,8 +28,8 @@ export class KeyStore {
28
28
  * @returns The account's complete address.
29
29
  */
30
30
  async addAccount(sk, partialAddress) {
31
- const { masterNullifierSecretKey, masterIncomingViewingSecretKey, masterOutgoingViewingSecretKey, masterTaggingSecretKey, publicKeys, } = deriveKeys(sk);
32
- const completeAddress = CompleteAddress.fromSecretKeyAndPartialAddress(sk, partialAddress);
31
+ const { masterNullifierSecretKey, masterIncomingViewingSecretKey, masterOutgoingViewingSecretKey, masterTaggingSecretKey, publicKeys, } = await deriveKeys(sk);
32
+ const completeAddress = await CompleteAddress.fromSecretKeyAndPartialAddress(sk, partialAddress);
33
33
  const { address: account } = completeAddress;
34
34
  // Naming of keys is as follows ${account}-${n/iv/ov/t}${sk/pk}_m
35
35
  await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-ivsk_m`, masterIncomingViewingSecretKey.toBuffer());
@@ -42,10 +42,14 @@ export class KeyStore {
42
42
  await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-tpk_m`, publicKeys.masterTaggingPublicKey.toBuffer());
43
43
  // We store pk_m_hash under `account-{n/iv/ov/t}pk_m_hash` key to be able to obtain address and key prefix
44
44
  // using the #getKeyPrefixAndAccount function later on
45
- await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-npk_m_hash`, publicKeys.masterNullifierPublicKey.hash().toBuffer());
46
- await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-ivpk_m_hash`, publicKeys.masterIncomingViewingPublicKey.hash().toBuffer());
47
- await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-ovpk_m_hash`, publicKeys.masterOutgoingViewingPublicKey.hash().toBuffer());
48
- await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-tpk_m_hash`, publicKeys.masterTaggingPublicKey.hash().toBuffer());
45
+ const masterNullifierPublicKeyHash = await publicKeys.masterNullifierPublicKey.hash();
46
+ await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-npk_m_hash`, masterNullifierPublicKeyHash.toBuffer());
47
+ const masterIncomingViewingPublicKeyHash = await publicKeys.masterIncomingViewingPublicKey.hash();
48
+ await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-ivpk_m_hash`, masterIncomingViewingPublicKeyHash.toBuffer());
49
+ const masterOutgoingViewingPublicKeyHash = await publicKeys.masterOutgoingViewingPublicKey.hash();
50
+ await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-ovpk_m_hash`, masterOutgoingViewingPublicKeyHash.toBuffer());
51
+ const masterTaggingPublicKeyHash = await publicKeys.masterTaggingPublicKey.hash();
52
+ await __classPrivateFieldGet(this, _KeyStore_keys, "f").set(`${account.toString()}-tpk_m_hash`, masterTaggingPublicKeyHash.toBuffer());
49
53
  // At last, we return the newly derived account address
50
54
  return completeAddress;
51
55
  }
@@ -74,7 +78,8 @@ export class KeyStore {
74
78
  throw new Error(`Could not find ${keyPrefix}pk_m for account ${account.toString()} whose address was successfully obtained with ${keyPrefix}pk_m_hash ${pkMHash.toString()}.`);
75
79
  }
76
80
  const pkM = Point.fromBuffer(pkMBuffer);
77
- if (!pkM.hash().equals(pkMHash)) {
81
+ const computedPkMHash = await pkM.hash();
82
+ if (!computedPkMHash.equals(pkMHash)) {
78
83
  throw new Error(`Could not find ${keyPrefix}pkM for ${keyPrefix}pk_m_hash ${pkMHash.toString()}.`);
79
84
  }
80
85
  // Now we find the secret key for the public key
@@ -84,11 +89,12 @@ export class KeyStore {
84
89
  }
85
90
  const skM = GrumpkinScalar.fromBuffer(skMBuffer);
86
91
  // We sanity check that it's possible to derive the public key from the secret key
87
- if (!derivePublicKeyFromSecretKey(skM).equals(pkM)) {
92
+ const derivedPkM = await derivePublicKeyFromSecretKey(skM);
93
+ if (!derivedPkM.equals(pkM)) {
88
94
  throw new Error(`Could not derive ${keyPrefix}pkM from ${keyPrefix}skM.`);
89
95
  }
90
96
  // At last we silo the secret key and return the key validation request
91
- const skApp = computeAppSecretKey(skM, contractAddress, keyPrefix);
97
+ const skApp = await computeAppSecretKey(skM, contractAddress, keyPrefix);
92
98
  return new KeyValidationRequest(pkM, skApp);
93
99
  }
94
100
  /**
@@ -185,7 +191,8 @@ export class KeyStore {
185
191
  throw new Error(`Could not find ${keyPrefix}sk_m for ${keyPrefix}pk_m ${pkM.toString()}. This should not happen.`);
186
192
  }
187
193
  const skM = GrumpkinScalar.fromBuffer(secretKeyBuffer);
188
- if (!derivePublicKeyFromSecretKey(skM).equals(pkM)) {
194
+ const derivedpkM = await derivePublicKeyFromSecretKey(skM);
195
+ if (!derivedpkM.equals(pkM)) {
189
196
  throw new Error(`Could not find ${keyPrefix}skM for ${keyPrefix}pkM ${pkM.toString()} in secret keys buffer.`);
190
197
  }
191
198
  return Promise.resolve(skM);
@@ -213,4 +220,4 @@ export class KeyStore {
213
220
  }
214
221
  }
215
222
  _KeyStore_keys = new WeakMap();
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2tleV9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLE9BQU8sRUFDTCxZQUFZLEVBQ1osZUFBZSxFQUNmLEVBQUUsRUFDRixjQUFjLEVBQ2QsY0FBYyxFQUNkLFlBQVksRUFFWixvQkFBb0IsRUFFcEIsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdqRjs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBR25CLFlBQVksUUFBMkI7UUFGdkMsaUNBQXFDO1FBR25DLHVCQUFBLElBQUksa0JBQVMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBQSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhO1FBQ2xCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQU0sRUFBRSxjQUE4QjtRQUM1RCxNQUFNLEVBQ0osd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsc0JBQXNCLEVBQ3RCLFVBQVUsR0FDWCxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuQixNQUFNLGVBQWUsR0FBRyxlQUFl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
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5X3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2tleV9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLE9BQU8sRUFDTCxZQUFZLEVBQ1osZUFBZSxFQUNmLEVBQUUsRUFDRixjQUFjLEVBQ2QsY0FBYyxFQUNkLFlBQVksRUFFWixvQkFBb0IsRUFFcEIsS0FBSyxFQUNMLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsNEJBQTRCLEdBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBbUIsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdqRjs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBR25CLFlBQVksUUFBMkI7UUFGdkMsaUNBQXFDO1FBR25DLHVCQUFBLElBQUksa0JBQVMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBQSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhO1FBQ2xCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQU0sRUFBRSxjQUE4QjtRQUM1RCxNQUFNLEVBQ0osd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsc0JBQXNCLEVBQ3RCLFVBQVUsR0FDWCxHQUFHLE1BQU0sVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpCLE1BQU0sZUFBZSxHQUFH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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/key-store",
3
- "version": "0.71.0",
3
+ "version": "0.73.0",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "typedocOptions": {
@@ -55,10 +55,10 @@
55
55
  ]
56
56
  },
57
57
  "dependencies": {
58
- "@aztec/circuit-types": "0.71.0",
59
- "@aztec/circuits.js": "0.71.0",
60
- "@aztec/foundation": "0.71.0",
61
- "@aztec/kv-store": "0.71.0",
58
+ "@aztec/circuit-types": "0.73.0",
59
+ "@aztec/circuits.js": "0.73.0",
60
+ "@aztec/foundation": "0.73.0",
61
+ "@aztec/kv-store": "0.73.0",
62
62
  "tslib": "^2.4.0"
63
63
  },
64
64
  "devDependencies": {
package/src/key_store.ts CHANGED
@@ -52,9 +52,9 @@ export class KeyStore {
52
52
  masterOutgoingViewingSecretKey,
53
53
  masterTaggingSecretKey,
54
54
  publicKeys,
55
- } = deriveKeys(sk);
55
+ } = await deriveKeys(sk);
56
56
 
57
- const completeAddress = CompleteAddress.fromSecretKeyAndPartialAddress(sk, partialAddress);
57
+ const completeAddress = await CompleteAddress.fromSecretKeyAndPartialAddress(sk, partialAddress);
58
58
  const { address: account } = completeAddress;
59
59
 
60
60
  // Naming of keys is as follows ${account}-${n/iv/ov/t}${sk/pk}_m
@@ -70,16 +70,14 @@ export class KeyStore {
70
70
 
71
71
  // We store pk_m_hash under `account-{n/iv/ov/t}pk_m_hash` key to be able to obtain address and key prefix
72
72
  // using the #getKeyPrefixAndAccount function later on
73
- await this.#keys.set(`${account.toString()}-npk_m_hash`, publicKeys.masterNullifierPublicKey.hash().toBuffer());
74
- await this.#keys.set(
75
- `${account.toString()}-ivpk_m_hash`,
76
- publicKeys.masterIncomingViewingPublicKey.hash().toBuffer(),
77
- );
78
- await this.#keys.set(
79
- `${account.toString()}-ovpk_m_hash`,
80
- publicKeys.masterOutgoingViewingPublicKey.hash().toBuffer(),
81
- );
82
- await this.#keys.set(`${account.toString()}-tpk_m_hash`, publicKeys.masterTaggingPublicKey.hash().toBuffer());
73
+ const masterNullifierPublicKeyHash = await publicKeys.masterNullifierPublicKey.hash();
74
+ await this.#keys.set(`${account.toString()}-npk_m_hash`, masterNullifierPublicKeyHash.toBuffer());
75
+ const masterIncomingViewingPublicKeyHash = await publicKeys.masterIncomingViewingPublicKey.hash();
76
+ await this.#keys.set(`${account.toString()}-ivpk_m_hash`, masterIncomingViewingPublicKeyHash.toBuffer());
77
+ const masterOutgoingViewingPublicKeyHash = await publicKeys.masterOutgoingViewingPublicKey.hash();
78
+ await this.#keys.set(`${account.toString()}-ovpk_m_hash`, masterOutgoingViewingPublicKeyHash.toBuffer());
79
+ const masterTaggingPublicKeyHash = await publicKeys.masterTaggingPublicKey.hash();
80
+ await this.#keys.set(`${account.toString()}-tpk_m_hash`, masterTaggingPublicKeyHash.toBuffer());
83
81
 
84
82
  // At last, we return the newly derived account address
85
83
  return completeAddress;
@@ -115,8 +113,8 @@ export class KeyStore {
115
113
  }
116
114
 
117
115
  const pkM = Point.fromBuffer(pkMBuffer);
118
-
119
- if (!pkM.hash().equals(pkMHash)) {
116
+ const computedPkMHash = await pkM.hash();
117
+ if (!computedPkMHash.equals(pkMHash)) {
120
118
  throw new Error(`Could not find ${keyPrefix}pkM for ${keyPrefix}pk_m_hash ${pkMHash.toString()}.`);
121
119
  }
122
120
 
@@ -131,12 +129,13 @@ export class KeyStore {
131
129
  const skM = GrumpkinScalar.fromBuffer(skMBuffer);
132
130
 
133
131
  // We sanity check that it's possible to derive the public key from the secret key
134
- if (!derivePublicKeyFromSecretKey(skM).equals(pkM)) {
132
+ const derivedPkM = await derivePublicKeyFromSecretKey(skM);
133
+ if (!derivedPkM.equals(pkM)) {
135
134
  throw new Error(`Could not derive ${keyPrefix}pkM from ${keyPrefix}skM.`);
136
135
  }
137
136
 
138
137
  // At last we silo the secret key and return the key validation request
139
- const skApp = computeAppSecretKey(skM, contractAddress, keyPrefix!);
138
+ const skApp = await computeAppSecretKey(skM, contractAddress, keyPrefix!);
140
139
 
141
140
  return new KeyValidationRequest(pkM, skApp);
142
141
  }
@@ -261,7 +260,8 @@ export class KeyStore {
261
260
  }
262
261
 
263
262
  const skM = GrumpkinScalar.fromBuffer(secretKeyBuffer);
264
- if (!derivePublicKeyFromSecretKey(skM).equals(pkM)) {
263
+ const derivedpkM = await derivePublicKeyFromSecretKey(skM);
264
+ if (!derivedpkM.equals(pkM)) {
265
265
  throw new Error(`Could not find ${keyPrefix}skM for ${keyPrefix}pkM ${pkM.toString()} in secret keys buffer.`);
266
266
  }
267
267