@rexezuge/d1 1.0.7 → 1.0.9

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":"aes-gcm.d.ts","sourceRoot":"","sources":["../src/aes-gcm.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,QAAA,MAAM,SAAS,KAAK,CAAC;AACrB,QAAA,MAAM,QAAQ,KAAK,CAAC;AAEpB,cAAM,cAAe,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI5B;AAsBD,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,iBAAe,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CASjH;AAED;;;;;;GAMG;AACH,iBAAe,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhH;AAED,2DAA2D;AAC3D,iBAAe,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrF;AAED,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC9F,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"aes-gcm.d.ts","sourceRoot":"","sources":["../src/aes-gcm.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,QAAA,MAAM,SAAS,KAAK,CAAC;AACrB,QAAA,MAAM,QAAQ,KAAK,CAAC;AAEpB,cAAM,cAAe,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM;CAI5B;AAsBD,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,iBAAe,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CASjH;AAED;;;;;;GAMG;AACH,iBAAe,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBhH;AAED,2DAA2D;AAC3D,iBAAe,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrF;AAED,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC9F,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
package/dist/aes-gcm.js CHANGED
@@ -66,7 +66,20 @@ async function decryptSecret(envelope, encodedKey) {
66
66
  const key = await importKey(encodedKey);
67
67
  const iv = base64ToBytes(envelope.iv);
68
68
  const ciphertext = base64ToBytes(envelope.ciphertext);
69
- const opened = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: iv }, key, ciphertext);
69
+ let opened;
70
+ try {
71
+ opened = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: iv }, key, ciphertext);
72
+ }
73
+ catch {
74
+ // A wrong key and a tampered ciphertext are the same failure to GCM — it
75
+ // authenticates the tag and refuses — and both must land as a typed error.
76
+ // Without this the platform's `OperationError: The operation failed for
77
+ // an operation-specific reason` escapes: a caller catching the documented
78
+ // `AesGcmKeyError` misses it, a fail-closed caller that catches by type
79
+ // falls through, and the one place it surfaces is a run's error message
80
+ // with nothing an owner can act on.
81
+ throw new AesGcmKeyError('The envelope could not be decrypted: wrong key or tampered ciphertext');
82
+ }
70
83
  return new TextDecoder().decode(opened);
71
84
  }
72
85
  /** Round-trip helper for tests and one-shot migrations. */
@@ -1 +1 @@
1
- {"version":3,"file":"aes-gcm.js","sourceRoot":"","sources":["../src/aes-gcm.ts"],"names":[],"mappings":"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","sourcesContent":["import { base64ToBytes, bytesToBase64 } from '@rexezuge/shared';\n\n/**\n * AES-GCM envelope for values that must be recoverable.\n *\n * Converged from the seven drifted copies of `backend-data/crypto/aes-gcm.ts`\n * (AWS, CalDAV, Durable-DAV, Edge-Git, Edge-Sonic, Mail-Meow, Mail-Otter).\n * Durable-DAV's is the canonical shape; names are de-scoped from\n * \"replication\" because every repo that encrypts a secret — replication remote\n * passwords, SES credentials, OAuth client secrets — has the same problem.\n *\n * Key material is base64 of exactly 32 bytes. A missing or wrong-sized key\n * throws rather than returning plaintext: the alternative — a helper that\n * quietly passes the value through when it cannot encrypt — would store the\n * secret in the clear on exactly the deployments that forgot to configure a\n * key, and nothing would report it.\n */\n\nconst KEY_BYTES = 32;\nconst IV_BYTES = 12;\n\nclass AesGcmKeyError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AesGcmKeyError';\n }\n}\n\nasync function importKey(encodedKey: string | undefined | null): Promise<CryptoKey> {\n if (typeof encodedKey !== 'string' || encodedKey.trim() === '') {\n throw new AesGcmKeyError('Encryption key is not configured; the secret cannot be stored');\n }\n let raw: Uint8Array;\n try {\n raw = base64ToBytes(encodedKey.trim());\n } catch {\n throw new AesGcmKeyError('Encryption key is not valid base64');\n }\n if (raw.byteLength !== KEY_BYTES) {\n throw new AesGcmKeyError(`Encryption key must decode to ${KEY_BYTES} bytes, got ${raw.byteLength}`);\n }\n try {\n return await crypto.subtle.importKey('raw', raw as BufferSource, { name: 'AES-GCM' }, false, ['encrypt', 'decrypt']);\n } catch {\n throw new AesGcmKeyError('Encryption key could not be imported as an AES-GCM key');\n }\n}\n\ninterface EncryptedEnvelope {\n ciphertext: string;\n iv: string;\n}\n\n/**\n * Encrypt one secret. The IV is random per call and returned alongside the\n * ciphertext so the caller can store the pair — reusing an IV under one key\n * destroys GCM's security guarantees outright, which is why it is not\n * internal to the ciphertext.\n */\nasync function encryptSecret(plaintext: string, encodedKey: string | undefined | null): Promise<EncryptedEnvelope> {\n const key = await importKey(encodedKey);\n const iv: Uint8Array = crypto.getRandomValues(new Uint8Array(IV_BYTES));\n const sealed: ArrayBuffer = await crypto.subtle.encrypt(\n { name: 'AES-GCM', iv: iv as BufferSource },\n key,\n new TextEncoder().encode(plaintext),\n );\n return { ciphertext: bytesToBase64(new Uint8Array(sealed)), iv: bytesToBase64(iv) };\n}\n\n/**\n * Decrypt one envelope.\n *\n * Throws on a wrong key or tampered ciphertext rather than returning garbage:\n * a fail-closed decrypt turns a config mistake into a loud, immediate error\n * instead of corrupt data flowing into a downstream request.\n */\nasync function decryptSecret(envelope: EncryptedEnvelope, encodedKey: string | undefined | null): Promise<string> {\n const key = await importKey(encodedKey);\n const iv: Uint8Array = base64ToBytes(envelope.iv);\n const ciphertext: Uint8Array = base64ToBytes(envelope.ciphertext);\n const opened: ArrayBuffer = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: iv as BufferSource }, key, ciphertext as BufferSource);\n return new TextDecoder().decode(opened);\n}\n\n/** Round-trip helper for tests and one-shot migrations. */\nasync function roundTripSecret(plaintext: string, encodedKey: string): Promise<string> {\n const envelope: EncryptedEnvelope = await encryptSecret(plaintext, encodedKey);\n return decryptSecret(envelope, encodedKey);\n}\n\nexport { AesGcmKeyError, decryptSecret, encryptSecret, roundTripSecret, IV_BYTES, KEY_BYTES };\nexport type { EncryptedEnvelope };\n"]}
1
+ {"version":3,"file":"aes-gcm.js","sourceRoot":"","sources":["../src/aes-gcm.ts"],"names":[],"mappings":"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","sourcesContent":["import { base64ToBytes, bytesToBase64 } from '@rexezuge/shared';\n\n/**\n * AES-GCM envelope for values that must be recoverable.\n *\n * Converged from the seven drifted copies of `backend-data/crypto/aes-gcm.ts`\n * (AWS, CalDAV, Durable-DAV, Edge-Git, Edge-Sonic, Mail-Meow, Mail-Otter).\n * Durable-DAV's is the canonical shape; names are de-scoped from\n * \"replication\" because every repo that encrypts a secret — replication remote\n * passwords, SES credentials, OAuth client secrets — has the same problem.\n *\n * Key material is base64 of exactly 32 bytes. A missing or wrong-sized key\n * throws rather than returning plaintext: the alternative — a helper that\n * quietly passes the value through when it cannot encrypt — would store the\n * secret in the clear on exactly the deployments that forgot to configure a\n * key, and nothing would report it.\n */\n\nconst KEY_BYTES = 32;\nconst IV_BYTES = 12;\n\nclass AesGcmKeyError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AesGcmKeyError';\n }\n}\n\nasync function importKey(encodedKey: string | undefined | null): Promise<CryptoKey> {\n if (typeof encodedKey !== 'string' || encodedKey.trim() === '') {\n throw new AesGcmKeyError('Encryption key is not configured; the secret cannot be stored');\n }\n let raw: Uint8Array;\n try {\n raw = base64ToBytes(encodedKey.trim());\n } catch {\n throw new AesGcmKeyError('Encryption key is not valid base64');\n }\n if (raw.byteLength !== KEY_BYTES) {\n throw new AesGcmKeyError(`Encryption key must decode to ${KEY_BYTES} bytes, got ${raw.byteLength}`);\n }\n try {\n return await crypto.subtle.importKey('raw', raw as BufferSource, { name: 'AES-GCM' }, false, ['encrypt', 'decrypt']);\n } catch {\n throw new AesGcmKeyError('Encryption key could not be imported as an AES-GCM key');\n }\n}\n\ninterface EncryptedEnvelope {\n ciphertext: string;\n iv: string;\n}\n\n/**\n * Encrypt one secret. The IV is random per call and returned alongside the\n * ciphertext so the caller can store the pair — reusing an IV under one key\n * destroys GCM's security guarantees outright, which is why it is not\n * internal to the ciphertext.\n */\nasync function encryptSecret(plaintext: string, encodedKey: string | undefined | null): Promise<EncryptedEnvelope> {\n const key = await importKey(encodedKey);\n const iv: Uint8Array = crypto.getRandomValues(new Uint8Array(IV_BYTES));\n const sealed: ArrayBuffer = await crypto.subtle.encrypt(\n { name: 'AES-GCM', iv: iv as BufferSource },\n key,\n new TextEncoder().encode(plaintext),\n );\n return { ciphertext: bytesToBase64(new Uint8Array(sealed)), iv: bytesToBase64(iv) };\n}\n\n/**\n * Decrypt one envelope.\n *\n * Throws on a wrong key or tampered ciphertext rather than returning garbage:\n * a fail-closed decrypt turns a config mistake into a loud, immediate error\n * instead of corrupt data flowing into a downstream request.\n */\nasync function decryptSecret(envelope: EncryptedEnvelope, encodedKey: string | undefined | null): Promise<string> {\n const key = await importKey(encodedKey);\n const iv: Uint8Array = base64ToBytes(envelope.iv);\n const ciphertext: Uint8Array = base64ToBytes(envelope.ciphertext);\n let opened: ArrayBuffer;\n try {\n opened = await crypto.subtle.decrypt({ name: 'AES-GCM', iv: iv as BufferSource }, key, ciphertext as BufferSource);\n } catch {\n // A wrong key and a tampered ciphertext are the same failure to GCM — it\n // authenticates the tag and refuses — and both must land as a typed error.\n // Without this the platform's `OperationError: The operation failed for\n // an operation-specific reason` escapes: a caller catching the documented\n // `AesGcmKeyError` misses it, a fail-closed caller that catches by type\n // falls through, and the one place it surfaces is a run's error message\n // with nothing an owner can act on.\n throw new AesGcmKeyError('The envelope could not be decrypted: wrong key or tampered ciphertext');\n }\n return new TextDecoder().decode(opened);\n}\n\n/** Round-trip helper for tests and one-shot migrations. */\nasync function roundTripSecret(plaintext: string, encodedKey: string): Promise<string> {\n const envelope: EncryptedEnvelope = await encryptSecret(plaintext, encodedKey);\n return decryptSecret(envelope, encodedKey);\n}\n\nexport { AesGcmKeyError, decryptSecret, encryptSecret, roundTripSecret, IV_BYTES, KEY_BYTES };\nexport type { EncryptedEnvelope };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rexezuge/d1",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -25,8 +25,8 @@
25
25
  "dist"
26
26
  ],
27
27
  "dependencies": {
28
- "@rexezuge/errors": "1.0.7",
29
- "@rexezuge/shared": "1.0.7"
28
+ "@rexezuge/errors": "1.0.9",
29
+ "@rexezuge/shared": "1.0.9"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "26.6.4",