@haex-space/vault-sdk 2.3.15 → 2.3.16

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.
package/dist/index.d.mts CHANGED
@@ -267,6 +267,17 @@ declare function encryptCrdtData(data: object, vaultKey: Uint8Array): Promise<{
267
267
  encryptedData: string;
268
268
  nonce: string;
269
269
  }>;
270
+ /**
271
+ * Wraps (encrypts) a key with another key using AES-GCM
272
+ * Used for key hierarchies (e.g., master key -> space key -> file key)
273
+ * Returns: nonce (12 bytes) + ciphertext as Uint8Array
274
+ */
275
+ declare function wrapKey(keyToWrap: Uint8Array, wrappingKey: Uint8Array): Promise<Uint8Array>;
276
+ /**
277
+ * Unwraps (decrypts) a key with another key using AES-GCM
278
+ * Expects: nonce (12 bytes) + ciphertext as Uint8Array
279
+ */
280
+ declare function unwrapKey(wrappedKey: Uint8Array, wrappingKey: Uint8Array): Promise<Uint8Array>;
270
281
  /**
271
282
  * Decrypts CRDT log data with the vault key
272
283
  */
@@ -276,4 +287,4 @@ declare function base64ToArrayBuffer(base64: string): Uint8Array;
276
287
 
277
288
  declare function createHaexVaultClient(config?: HaexHubConfig): HaexVaultClient;
278
289
 
279
- export { ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HAEXTENSION_METHODS, HaexHubConfig, HaexVaultClient, type HaexspaceMessageType, type HaextensionMethod, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultClient, decryptCrdtData, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptString, encryptVaultKey, generateVaultKey, hexToBytes, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, sortObjectKeysRecursively, verifyExtensionSignature };
290
+ export { ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HAEXTENSION_METHODS, HaexHubConfig, HaexVaultClient, type HaexspaceMessageType, type HaextensionMethod, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultClient, decryptCrdtData, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptString, encryptVaultKey, generateVaultKey, hexToBytes, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, sortObjectKeysRecursively, unwrapKey, verifyExtensionSignature, wrapKey };
package/dist/index.d.ts CHANGED
@@ -267,6 +267,17 @@ declare function encryptCrdtData(data: object, vaultKey: Uint8Array): Promise<{
267
267
  encryptedData: string;
268
268
  nonce: string;
269
269
  }>;
270
+ /**
271
+ * Wraps (encrypts) a key with another key using AES-GCM
272
+ * Used for key hierarchies (e.g., master key -> space key -> file key)
273
+ * Returns: nonce (12 bytes) + ciphertext as Uint8Array
274
+ */
275
+ declare function wrapKey(keyToWrap: Uint8Array, wrappingKey: Uint8Array): Promise<Uint8Array>;
276
+ /**
277
+ * Unwraps (decrypts) a key with another key using AES-GCM
278
+ * Expects: nonce (12 bytes) + ciphertext as Uint8Array
279
+ */
280
+ declare function unwrapKey(wrappedKey: Uint8Array, wrappingKey: Uint8Array): Promise<Uint8Array>;
270
281
  /**
271
282
  * Decrypts CRDT log data with the vault key
272
283
  */
@@ -276,4 +287,4 @@ declare function base64ToArrayBuffer(base64: string): Uint8Array;
276
287
 
277
288
  declare function createHaexVaultClient(config?: HaexHubConfig): HaexVaultClient;
278
289
 
279
- export { ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HAEXTENSION_METHODS, HaexHubConfig, HaexVaultClient, type HaexspaceMessageType, type HaextensionMethod, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultClient, decryptCrdtData, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptString, encryptVaultKey, generateVaultKey, hexToBytes, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, sortObjectKeysRecursively, verifyExtensionSignature };
290
+ export { ExtensionManifest, HAEXSPACE_MESSAGE_TYPES, HAEXTENSION_METHODS, HaexHubConfig, HaexVaultClient, type HaexspaceMessageType, type HaextensionMethod, type VerifyResult, type ZipFileEntry, arrayBufferToBase64, base64ToArrayBuffer, createHaexVaultClient, decryptCrdtData, decryptString, decryptVaultKey, decryptVaultName, deriveKeyFromPassword, encryptCrdtData, encryptString, encryptVaultKey, generateVaultKey, hexToBytes, installBaseTag, installCookiePolyfill, installHistoryPolyfill, installLocalStoragePolyfill, installPolyfills, installSessionStoragePolyfill, sortObjectKeysRecursively, unwrapKey, verifyExtensionSignature, wrapKey };
package/dist/index.js CHANGED
@@ -1980,6 +1980,42 @@ async function encryptCrdtData(data, vaultKey) {
1980
1980
  nonce: arrayBufferToBase64(nonce)
1981
1981
  };
1982
1982
  }
1983
+ async function wrapKey(keyToWrap, wrappingKey) {
1984
+ const cryptoKey = await crypto.subtle.importKey(
1985
+ "raw",
1986
+ new Uint8Array(wrappingKey),
1987
+ { name: ALGORITHM },
1988
+ false,
1989
+ ["encrypt"]
1990
+ );
1991
+ const nonce = crypto.getRandomValues(new Uint8Array(12));
1992
+ const ciphertext = await crypto.subtle.encrypt(
1993
+ { name: ALGORITHM, iv: nonce },
1994
+ cryptoKey,
1995
+ new Uint8Array(keyToWrap)
1996
+ );
1997
+ const result = new Uint8Array(12 + ciphertext.byteLength);
1998
+ result.set(nonce, 0);
1999
+ result.set(new Uint8Array(ciphertext), 12);
2000
+ return result;
2001
+ }
2002
+ async function unwrapKey(wrappedKey, wrappingKey) {
2003
+ const cryptoKey = await crypto.subtle.importKey(
2004
+ "raw",
2005
+ new Uint8Array(wrappingKey),
2006
+ { name: ALGORITHM },
2007
+ false,
2008
+ ["decrypt"]
2009
+ );
2010
+ const nonce = wrappedKey.slice(0, 12);
2011
+ const ciphertext = wrappedKey.slice(12);
2012
+ const plaintext = await crypto.subtle.decrypt(
2013
+ { name: ALGORITHM, iv: nonce },
2014
+ cryptoKey,
2015
+ ciphertext
2016
+ );
2017
+ return new Uint8Array(plaintext);
2018
+ }
1983
2019
  async function decryptCrdtData(encryptedData, nonce, vaultKey) {
1984
2020
  const vaultKeyBuffer = new Uint8Array(vaultKey);
1985
2021
  const cryptoKey = await crypto.subtle.importKey(
@@ -2071,6 +2107,8 @@ exports.installLocalStoragePolyfill = installLocalStoragePolyfill;
2071
2107
  exports.installPolyfills = installPolyfills;
2072
2108
  exports.installSessionStoragePolyfill = installSessionStoragePolyfill;
2073
2109
  exports.sortObjectKeysRecursively = sortObjectKeysRecursively;
2110
+ exports.unwrapKey = unwrapKey;
2074
2111
  exports.verifyExtensionSignature = verifyExtensionSignature;
2112
+ exports.wrapKey = wrapKey;
2075
2113
  //# sourceMappingURL=index.js.map
2076
2114
  //# sourceMappingURL=index.js.map