@opentdf/sdk 0.9.0-beta.91 → 0.9.0-beta.93

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 (182) hide show
  1. package/dist/cjs/src/access/access-fetch.js +1 -2
  2. package/dist/cjs/src/access/access-rpc.js +1 -3
  3. package/dist/cjs/src/access.js +1 -14
  4. package/dist/cjs/src/auth/auth.js +13 -10
  5. package/dist/cjs/src/auth/dpop.js +121 -0
  6. package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +37 -3
  7. package/dist/cjs/src/auth/oidc-externaljwt-provider.js +37 -3
  8. package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +37 -3
  9. package/dist/cjs/src/auth/oidc.js +10 -8
  10. package/dist/cjs/src/auth/providers.js +35 -12
  11. package/dist/cjs/src/crypto/index.js +16 -2
  12. package/dist/cjs/src/crypto/pemPublicToCrypto.js +17 -11
  13. package/dist/cjs/src/opentdf.js +40 -10
  14. package/dist/cjs/tdf3/index.js +4 -2
  15. package/dist/cjs/tdf3/src/assertions.js +71 -31
  16. package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  17. package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
  18. package/dist/cjs/tdf3/src/client/index.js +23 -33
  19. package/dist/cjs/tdf3/src/crypto/crypto-utils.js +12 -5
  20. package/dist/cjs/tdf3/src/crypto/declarations.js +1 -1
  21. package/dist/cjs/tdf3/src/crypto/index.js +849 -88
  22. package/dist/cjs/tdf3/src/crypto/jose/jwt-claims-set.js +11 -0
  23. package/dist/cjs/tdf3/src/crypto/jose/validate-crit.js +8 -0
  24. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +41 -0
  25. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/epoch.js +6 -0
  26. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/is_object.js +21 -0
  27. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +112 -0
  28. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/secs.js +60 -0
  29. package/dist/cjs/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +38 -0
  30. package/dist/cjs/tdf3/src/crypto/jose/vendor/util/errors.js +135 -0
  31. package/dist/cjs/tdf3/src/crypto/jwt.js +183 -0
  32. package/dist/cjs/tdf3/src/crypto/salt.js +14 -8
  33. package/dist/cjs/tdf3/src/models/encryption-information.js +17 -20
  34. package/dist/cjs/tdf3/src/models/key-access.js +43 -63
  35. package/dist/cjs/tdf3/src/tdf.js +75 -75
  36. package/dist/cjs/tdf3/src/utils/index.js +5 -39
  37. package/dist/types/src/access/access-fetch.d.ts.map +1 -1
  38. package/dist/types/src/access/access-rpc.d.ts.map +1 -1
  39. package/dist/types/src/access.d.ts +0 -5
  40. package/dist/types/src/access.d.ts.map +1 -1
  41. package/dist/types/src/auth/auth.d.ts +9 -6
  42. package/dist/types/src/auth/auth.d.ts.map +1 -1
  43. package/dist/types/src/auth/dpop.d.ts +60 -0
  44. package/dist/types/src/auth/dpop.d.ts.map +1 -0
  45. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +3 -2
  46. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -1
  47. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +3 -2
  48. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -1
  49. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +3 -2
  50. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -1
  51. package/dist/types/src/auth/oidc.d.ts +6 -4
  52. package/dist/types/src/auth/oidc.d.ts.map +1 -1
  53. package/dist/types/src/auth/providers.d.ts +5 -4
  54. package/dist/types/src/auth/providers.d.ts.map +1 -1
  55. package/dist/types/src/crypto/index.d.ts +2 -1
  56. package/dist/types/src/crypto/index.d.ts.map +1 -1
  57. package/dist/types/src/crypto/pemPublicToCrypto.d.ts +18 -0
  58. package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +1 -1
  59. package/dist/types/src/opentdf.d.ts +13 -4
  60. package/dist/types/src/opentdf.d.ts.map +1 -1
  61. package/dist/types/tdf3/index.d.ts +3 -3
  62. package/dist/types/tdf3/index.d.ts.map +1 -1
  63. package/dist/types/tdf3/src/assertions.d.ts +23 -8
  64. package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
  65. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts +3 -3
  66. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts.map +1 -1
  67. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts +4 -4
  68. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts.map +1 -1
  69. package/dist/types/tdf3/src/client/builders.d.ts +2 -2
  70. package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
  71. package/dist/types/tdf3/src/client/index.d.ts +6 -5
  72. package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
  73. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts +14 -4
  74. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -1
  75. package/dist/types/tdf3/src/crypto/declarations.d.ts +283 -18
  76. package/dist/types/tdf3/src/crypto/declarations.d.ts.map +1 -1
  77. package/dist/types/tdf3/src/crypto/index.d.ts +105 -28
  78. package/dist/types/tdf3/src/crypto/index.d.ts.map +1 -1
  79. package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts +3 -0
  80. package/dist/types/tdf3/src/crypto/jose/jwt-claims-set.d.ts.map +1 -0
  81. package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts +5 -0
  82. package/dist/types/tdf3/src/crypto/jose/validate-crit.d.ts.map +1 -0
  83. package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts +6 -0
  84. package/dist/types/tdf3/src/crypto/jose/vendor/lib/buffer_utils.d.ts.map +1 -0
  85. package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts +3 -0
  86. package/dist/types/tdf3/src/crypto/jose/vendor/lib/epoch.d.ts.map +1 -0
  87. package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts +3 -0
  88. package/dist/types/tdf3/src/crypto/jose/vendor/lib/is_object.d.ts.map +1 -0
  89. package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts +3 -0
  90. package/dist/types/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.d.ts.map +1 -0
  91. package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts +3 -0
  92. package/dist/types/tdf3/src/crypto/jose/vendor/lib/secs.d.ts.map +1 -0
  93. package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts +3 -0
  94. package/dist/types/tdf3/src/crypto/jose/vendor/lib/validate_crit.d.ts.map +1 -0
  95. package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts +76 -0
  96. package/dist/types/tdf3/src/crypto/jose/vendor/util/errors.d.ts.map +1 -0
  97. package/dist/types/tdf3/src/crypto/jwt.d.ts +76 -0
  98. package/dist/types/tdf3/src/crypto/jwt.d.ts.map +1 -0
  99. package/dist/types/tdf3/src/crypto/salt.d.ts +6 -1
  100. package/dist/types/tdf3/src/crypto/salt.d.ts.map +1 -1
  101. package/dist/types/tdf3/src/models/encryption-information.d.ts +4 -4
  102. package/dist/types/tdf3/src/models/encryption-information.d.ts.map +1 -1
  103. package/dist/types/tdf3/src/models/key-access.d.ts +8 -5
  104. package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
  105. package/dist/types/tdf3/src/tdf.d.ts +8 -8
  106. package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
  107. package/dist/types/tdf3/src/utils/index.d.ts +4 -3
  108. package/dist/types/tdf3/src/utils/index.d.ts.map +1 -1
  109. package/dist/web/src/access/access-fetch.js +3 -4
  110. package/dist/web/src/access/access-rpc.js +3 -5
  111. package/dist/web/src/access.js +1 -13
  112. package/dist/web/src/auth/auth.js +13 -10
  113. package/dist/web/src/auth/dpop.js +118 -0
  114. package/dist/web/src/auth/oidc-clientcredentials-provider.js +4 -3
  115. package/dist/web/src/auth/oidc-externaljwt-provider.js +4 -3
  116. package/dist/web/src/auth/oidc-refreshtoken-provider.js +4 -3
  117. package/dist/web/src/auth/oidc.js +11 -9
  118. package/dist/web/src/auth/providers.js +13 -12
  119. package/dist/web/src/crypto/index.js +4 -2
  120. package/dist/web/src/crypto/pemPublicToCrypto.js +11 -9
  121. package/dist/web/src/opentdf.js +7 -10
  122. package/dist/web/tdf3/index.js +3 -2
  123. package/dist/web/tdf3/src/assertions.js +71 -31
  124. package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  125. package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +4 -2
  126. package/dist/web/tdf3/src/client/index.js +25 -35
  127. package/dist/web/tdf3/src/crypto/crypto-utils.js +12 -5
  128. package/dist/web/tdf3/src/crypto/declarations.js +1 -1
  129. package/dist/web/tdf3/src/crypto/index.js +830 -84
  130. package/dist/web/tdf3/src/crypto/jose/jwt-claims-set.js +5 -0
  131. package/dist/web/tdf3/src/crypto/jose/validate-crit.js +3 -0
  132. package/dist/web/tdf3/src/crypto/jose/vendor/lib/buffer_utils.js +35 -0
  133. package/dist/web/tdf3/src/crypto/jose/vendor/lib/epoch.js +4 -0
  134. package/dist/web/tdf3/src/crypto/jose/vendor/lib/is_object.js +19 -0
  135. package/dist/web/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.js +107 -0
  136. package/dist/web/tdf3/src/crypto/jose/vendor/lib/secs.js +58 -0
  137. package/dist/web/tdf3/src/crypto/jose/vendor/lib/validate_crit.js +36 -0
  138. package/dist/web/tdf3/src/crypto/jose/vendor/util/errors.js +117 -0
  139. package/dist/web/tdf3/src/crypto/jwt.js +174 -0
  140. package/dist/web/tdf3/src/crypto/salt.js +13 -7
  141. package/dist/web/tdf3/src/models/encryption-information.js +11 -14
  142. package/dist/web/tdf3/src/models/key-access.js +44 -31
  143. package/dist/web/tdf3/src/tdf.js +71 -71
  144. package/dist/web/tdf3/src/utils/index.js +5 -6
  145. package/package.json +11 -4
  146. package/src/access/access-fetch.ts +2 -8
  147. package/src/access/access-rpc.ts +0 -7
  148. package/src/access.ts +0 -17
  149. package/src/auth/auth.ts +21 -12
  150. package/src/auth/dpop.ts +222 -0
  151. package/src/auth/oidc-clientcredentials-provider.ts +23 -15
  152. package/src/auth/oidc-externaljwt-provider.ts +23 -15
  153. package/src/auth/oidc-refreshtoken-provider.ts +23 -15
  154. package/src/auth/oidc.ts +21 -10
  155. package/src/auth/providers.ts +46 -29
  156. package/src/crypto/index.ts +21 -1
  157. package/src/crypto/pemPublicToCrypto.ts +11 -9
  158. package/src/opentdf.ts +19 -14
  159. package/tdf3/index.ts +32 -5
  160. package/tdf3/src/assertions.ts +99 -30
  161. package/tdf3/src/ciphers/aes-gcm-cipher.ts +7 -2
  162. package/tdf3/src/ciphers/symmetric-cipher-base.ts +7 -4
  163. package/tdf3/src/client/builders.ts +2 -2
  164. package/tdf3/src/client/index.ts +60 -59
  165. package/tdf3/src/crypto/crypto-utils.ts +15 -8
  166. package/tdf3/src/crypto/declarations.ts +338 -22
  167. package/tdf3/src/crypto/index.ts +1021 -118
  168. package/tdf3/src/crypto/jose/jwt-claims-set.ts +10 -0
  169. package/tdf3/src/crypto/jose/validate-crit.ts +9 -0
  170. package/tdf3/src/crypto/jose/vendor/lib/buffer_utils.ts +34 -0
  171. package/tdf3/src/crypto/jose/vendor/lib/epoch.ts +3 -0
  172. package/tdf3/src/crypto/jose/vendor/lib/is_object.ts +18 -0
  173. package/tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.ts +106 -0
  174. package/tdf3/src/crypto/jose/vendor/lib/secs.ts +57 -0
  175. package/tdf3/src/crypto/jose/vendor/lib/validate_crit.ts +35 -0
  176. package/tdf3/src/crypto/jose/vendor/util/errors.ts +101 -0
  177. package/tdf3/src/crypto/jwt.ts +256 -0
  178. package/tdf3/src/crypto/salt.ts +16 -8
  179. package/tdf3/src/models/encryption-information.ts +14 -21
  180. package/tdf3/src/models/key-access.ts +57 -41
  181. package/tdf3/src/tdf.ts +110 -93
  182. package/tdf3/src/utils/index.ts +5 -6
@@ -4,7 +4,7 @@
4
4
  * @private
5
5
  */
6
6
  import { Binary } from '../binary.js';
7
- import { CryptoService, DecryptResult, EncryptResult, PemKeyPair } from './declarations.js';
7
+ import { type AsymmetricSigningAlgorithm, type CryptoService, type DecryptResult, type ECCurve, type EncryptResult, type HashAlgorithm, type HkdfParams, type KeyOptions, type KeyPair, type PrivateKey, type PublicKey, type PublicKeyInfo, type SymmetricKey } from './declarations.js';
8
8
  import { AlgorithmUrn } from '../ciphers/algorithms.js';
9
9
  export declare const isSupported: boolean;
10
10
  export declare const method = "http://www.w3.org/2001/04/xmlenc#aes256-cbc";
@@ -16,33 +16,30 @@ export declare const name = "BrowserNativeCryptoService";
16
16
  export declare function rsaOaepSha1(modulusLength?: number): RsaHashedKeyGenParams;
17
17
  export declare function rsaPkcs1Sha256(modulusLength?: number): RsaHashedKeyGenParams;
18
18
  /**
19
- * Generate a random hex key
20
- * @return New key as a hex string
19
+ * Generate a random symmetric key (opaque).
20
+ * @param length - Key length in bytes (default 32 for AES-256)
21
+ * @return Opaque symmetric key
21
22
  */
22
- export declare function generateKey(length?: number): Promise<string>;
23
+ export declare function generateKey(length?: number): Promise<SymmetricKey>;
23
24
  /**
24
25
  * Generate an RSA key pair
25
26
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey}
26
27
  * @param size in bits
27
28
  */
28
- export declare function generateKeyPair(size?: number): Promise<CryptoKeyPair>;
29
+ export declare function generateKeyPair(size?: number): Promise<KeyPair>;
29
30
  /**
30
31
  * Generate an RSA key pair suitable for signatures
31
32
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey}
32
33
  */
33
- export declare function generateSigningKeyPair(): Promise<CryptoKeyPair>;
34
- export declare function cryptoToPemPair(keysMaybe: unknown): Promise<PemKeyPair>;
34
+ export declare function generateSigningKeyPair(): Promise<KeyPair>;
35
35
  /**
36
- * Encrypt using a public key
37
- * @param payload Payload to encrypt
38
- * @param publicKey PEM formatted public key
36
+ * Encrypt using a public key (RSA-OAEP).
37
+ * Accepts Binary or SymmetricKey for key wrapping.
38
+ * @param payload Payload to encrypt (Binary) or symmetric key to wrap (SymmetricKey)
39
+ * @param publicKey Opaque public key
39
40
  * @return Encrypted payload
40
41
  */
41
- export declare function encryptWithPublicKey(payload: Binary, publicKey: string): Promise<Binary>;
42
- /**
43
- * Generate a 16-byte initialization vector
44
- */
45
- export declare function generateInitializationVector(length?: number): Promise<string>;
42
+ export declare function encryptWithPublicKey(payload: Binary | SymmetricKey, publicKey: PublicKey): Promise<Binary>;
46
43
  export declare function randomBytes(byteLength: number): Promise<Uint8Array>;
47
44
  /**
48
45
  * Returns a promise to the encryption key as a binary string.
@@ -58,19 +55,19 @@ export declare function randomBytesAsHex(length: number): Promise<string>;
58
55
  /**
59
56
  * Decrypt a public-key encrypted payload with a private key
60
57
  * @param encryptedPayload Payload to decrypt
61
- * @param privateKey PEM formatted private keynpmv
58
+ * @param privateKey Opaque private key
62
59
  * @return Decrypted payload
63
60
  */
64
- export declare function decryptWithPrivateKey(encryptedPayload: Binary, privateKey: string): Promise<Binary>;
61
+ export declare function decryptWithPrivateKey(encryptedPayload: Binary, privateKey: PrivateKey): Promise<Binary>;
65
62
  /**
66
63
  * Decrypt content synchronously
67
64
  * @param payload The payload to decrypt
68
- * @param key The encryption key
65
+ * @param key The symmetric encryption key (opaque)
69
66
  * @param iv The initialization vector
70
67
  * @param algorithm The algorithm to use for encryption
71
68
  * @param authTag The authentication tag for authenticated crypto.
72
69
  */
73
- export declare function decrypt(payload: Binary, key: Binary, iv: Binary, algorithm?: AlgorithmUrn, authTag?: Binary): Promise<DecryptResult>;
70
+ export declare function decrypt(payload: Binary, key: SymmetricKey, iv: Binary, algorithm?: AlgorithmUrn, authTag?: Binary): Promise<DecryptResult>;
74
71
  /**
75
72
  * Encrypt content synchronously
76
73
  * @param payload The payload to encrypt
@@ -78,26 +75,106 @@ export declare function decrypt(payload: Binary, key: Binary, iv: Binary, algori
78
75
  * @param iv The initialization vector
79
76
  * @param algorithm The algorithm to use for encryption
80
77
  */
81
- export declare function encrypt(payload: Binary, key: Binary, iv: Binary, algorithm?: AlgorithmUrn): Promise<EncryptResult>;
78
+ export declare function encrypt(payload: Binary | SymmetricKey, key: SymmetricKey, iv: Binary, algorithm?: AlgorithmUrn): Promise<EncryptResult>;
82
79
  /**
83
80
  * Create a SHA256 hash. Code refrenced from MDN:
84
81
  * https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
85
82
  * @param content String content
86
83
  * @return Hex hash
87
84
  */
88
- export declare function sha256(content: string): Promise<string>;
89
- /**
90
- * Create an HMAC SHA256 hash
91
- * @param key Key string
92
- * @param content Content string
93
- * @return Hex hash
94
- */
95
- export declare function hmac(key: string, content: string): Promise<string>;
96
85
  /**
97
86
  * Create an ArrayBuffer from a hex string.
98
87
  * https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String?hl=en
99
88
  * @param hex - Hex string
100
89
  */
101
90
  export declare function hex2Ab(hex: string): ArrayBuffer;
91
+ /**
92
+ * Sign data with an asymmetric private key.
93
+ */
94
+ export declare function sign(data: Uint8Array, privateKey: PrivateKey, algorithm: AsymmetricSigningAlgorithm): Promise<Uint8Array>;
95
+ /**
96
+ * Verify signature with an asymmetric public key.
97
+ */
98
+ export declare function verify(data: Uint8Array, signature: Uint8Array, publicKey: PublicKey, algorithm: AsymmetricSigningAlgorithm): Promise<boolean>;
99
+ /**
100
+ * Compute hash digest.
101
+ */
102
+ export declare function digest(algorithm: HashAlgorithm, data: Uint8Array): Promise<Uint8Array>;
103
+ /**
104
+ * Extract PEM public key from X.509 certificate or return PEM key as-is.
105
+ *
106
+ * @param certOrPem - A PEM-encoded X.509 certificate or public key
107
+ * @param jwaAlgorithm - JWA algorithm hint for certificate parsing (RS256, RS512, ES256, ES384, ES512).
108
+ * If not provided for a certificate, will attempt to auto-detect from OIDs.
109
+ */
110
+ export declare function extractPublicKeyPem(certOrPem: string, jwaAlgorithm?: string): Promise<string>;
111
+ /**
112
+ * Generate an EC key pair for ECDH key agreement.
113
+ */
114
+ export declare function generateECKeyPair(curve?: ECCurve): Promise<KeyPair>;
115
+ /**
116
+ * Perform ECDH key agreement followed by HKDF key derivation.
117
+ * Returns opaque symmetric key for symmetric encryption.
118
+ */
119
+ export declare function deriveKeyFromECDH(privateKey: PrivateKey, publicKey: PublicKey, hkdfParams: HkdfParams): Promise<SymmetricKey>;
120
+ /**
121
+ * Compute HMAC-SHA256 of data with a symmetric key.
122
+ */
123
+ export declare function hmac(data: Uint8Array, key: SymmetricKey): Promise<Uint8Array>;
124
+ /**
125
+ * Verify HMAC-SHA256. Standalone utility — not part of CryptoService interface.
126
+ */
127
+ export declare function verifyHmac(data: Uint8Array, signature: Uint8Array, key: SymmetricKey): Promise<boolean>;
128
+ /**
129
+ * Import and validate a PEM public key, returning algorithm info.
130
+ * Uses JWK export for robust key parameter detection.
131
+ */
132
+ export declare function parsePublicKeyPem(pem: string): Promise<PublicKeyInfo>;
133
+ /**
134
+ * Convert a JWK (JSON Web Key) to PEM format.
135
+ */
136
+ export declare function jwkToPublicKeyPem(jwk: JsonWebKey): Promise<string>;
137
+ /**
138
+ * Convert a PEM public key to JWK format.
139
+ * Returns only public key components (no private key data).
140
+ */
141
+ export declare function publicKeyPemToJwk(publicKeyPem: string): Promise<JsonWebKey>;
142
+ /**
143
+ * Import a PEM public key as an opaque key.
144
+ */
145
+ export declare function importPublicKey(pem: string, options: KeyOptions): Promise<PublicKey>;
146
+ /**
147
+ * Import a PEM private key as an opaque key.
148
+ */
149
+ export declare function importPrivateKey(pem: string, options: KeyOptions): Promise<PrivateKey>;
150
+ /**
151
+ * Export an opaque public key to PEM format.
152
+ */
153
+ export declare function exportPublicKeyPem(key: PublicKey): Promise<string>;
154
+ /**
155
+ * Export an opaque private key to PEM format.
156
+ * ONLY USE FOR TESTING/DEVELOPMENT. Private keys should NOT be exportable in secure environments.
157
+ */
158
+ export declare function exportPrivateKeyPem(key: PrivateKey): Promise<string>;
159
+ /**
160
+ * Export an opaque public key to JWK format.
161
+ */
162
+ export declare function exportPublicKeyJwk(key: PublicKey): Promise<JsonWebKey>;
163
+ /**
164
+ * Import raw key bytes as an opaque symmetric key.
165
+ * Used for external keys (e.g., unwrapped from KAS).
166
+ */
167
+ export declare function importSymmetricKey(keyBytes: Uint8Array): Promise<SymmetricKey>;
168
+ /**
169
+ * Split a symmetric key into N shares using XOR secret sharing.
170
+ * Key bytes are extracted internally for splitting.
171
+ * HSM implementations cannot extract bytes and should throw ConfigurationError.
172
+ */
173
+ export declare function splitSymmetricKey(key: SymmetricKey, numShares: number): Promise<SymmetricKey[]>;
174
+ /**
175
+ * Merge symmetric key shares back into the original key using XOR.
176
+ * Key bytes are extracted internally for merging.
177
+ */
178
+ export declare function mergeSymmetricKeys(shares: SymmetricKey[]): Promise<SymmetricKey>;
102
179
  export declare const DefaultCryptoService: CryptoService;
103
180
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/crypto/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EAEb,UAAU,EACX,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIxD,eAAO,MAAM,WAAW,SAA4C,CAAC;AAErE,eAAO,MAAM,MAAM,gDAAgD,CAAC;AACpE,eAAO,MAAM,IAAI,+BAA+B,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,aAAa,GAAE,MAAqC,GACnD,qBAAqB,CAYvB;AAED,wBAAgB,cAAc,CAC5B,aAAa,GAAE,MAAqC,GACnD,qBAAqB,CAYvB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAElE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG3E;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,aAAa,CAAC,CAWrE;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAe7E;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB9F;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnF;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAIzE;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtE;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,YAAY,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CAExB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,YAAY,GACvB,OAAO,CAAC,aAAa,CAAC,CAExB;AA6FD;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7D;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAexE;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAS/C;AAED,eAAO,MAAM,oBAAoB,EAAE,aAelC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/crypto/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { JWTHeaderParameters, JWTPayload, JWTVerifyOptions } from 'jose';
2
+ export default function joseJwtClaimsSet(protectedHeader: JWTHeaderParameters, encodedPayload: Uint8Array, options?: JWTVerifyOptions): JWTPayload;
3
+ //# sourceMappingURL=jwt-claims-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-claims-set.d.ts","sourceRoot":"","sources":["../../../../../../tdf3/src/crypto/jose/jwt-claims-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAG9E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,eAAe,EAAE,mBAAmB,EACpC,cAAc,EAAE,UAAU,EAC1B,OAAO,CAAC,EAAE,gBAAgB,GACzB,UAAU,CAEZ"}
@@ -0,0 +1,5 @@
1
+ declare const _default: (Err: new (message?: string, options?: {
2
+ cause?: unknown;
3
+ }) => Error, recognizedDefault: Map<string, boolean>, recognizedOption: Record<string, boolean> | undefined, protectedHeader: Record<string, unknown> | undefined, joseHeader: Record<string, unknown>) => Set<string>;
4
+ export default _default;
5
+ //# sourceMappingURL=validate-crit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-crit.d.ts","sourceRoot":"","sources":["../../../../../../tdf3/src/crypto/jose/validate-crit.ts"],"names":[],"mappings":"wBAE+B,CAC7B,GAAG,EAAE,KAAK,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,KAAK,KAAK,EACnE,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACrD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACpD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,GAAG,CAAC,MAAM,CAAC;AANhB,wBAMiB"}
@@ -0,0 +1,6 @@
1
+ export declare const encoder: TextEncoder;
2
+ export declare const decoder: TextDecoder;
3
+ export declare function concat(...buffers: any[]): Uint8Array<any>;
4
+ export declare function uint64be(value: any): Uint8Array<ArrayBuffer>;
5
+ export declare function uint32be(value: any): Uint8Array<ArrayBuffer>;
6
+ //# sourceMappingURL=buffer_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer_utils.d.ts","sourceRoot":"","sources":["../../../../../../../../tdf3/src/crypto/jose/vendor/lib/buffer_utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,aAAoB,CAAC;AACzC,eAAO,MAAM,OAAO,aAAoB,CAAC;AAEzC,wBAAgB,MAAM,CAAC,GAAG,OAAO,OAAA,mBAShC;AAOD,wBAAgB,QAAQ,CAAC,KAAK,KAAA,2BAO7B;AACD,wBAAgB,QAAQ,CAAC,KAAK,KAAA,2BAI7B"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (date: any) => number;
2
+ export default _default;
3
+ //# sourceMappingURL=epoch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epoch.d.ts","sourceRoot":"","sources":["../../../../../../../../tdf3/src/crypto/jose/vendor/lib/epoch.ts"],"names":[],"mappings":"yBAEgB,SAAI;AAApB,wBAA2D"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (input: any) => boolean;
2
+ export default _default;
3
+ //# sourceMappingURL=is_object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is_object.d.ts","sourceRoot":"","sources":["../../../../../../../../tdf3/src/crypto/jose/vendor/lib/is_object.ts"],"names":[],"mappings":"yBAKgB,UAAK;AAArB,wBAYE"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (protectedHeader: any, encodedPayload: any, options?: {}) => any;
2
+ export default _default;
3
+ //# sourceMappingURL=jwt_claims_set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt_claims_set.d.ts","sourceRoot":"","sources":["../../../../../../../../tdf3/src/crypto/jose/vendor/lib/jwt_claims_set.ts"],"names":[],"mappings":"yBAiBgB,oBAAe,EAAE,mBAAc,EAAE,YAAY;AAA7D,wBAwFE"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (str: any) => number;
2
+ export default _default;
3
+ //# sourceMappingURL=secs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secs.d.ts","sourceRoot":"","sources":["../../../../../../../../tdf3/src/crypto/jose/vendor/lib/secs.ts"],"names":[],"mappings":"yBAQgB,QAAG;AAAnB,wBAgDE"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (Err: any, recognizedDefault: any, recognizedOption: any, protectedHeader: any, joseHeader: any) => Set<unknown>;
2
+ export default _default;
3
+ //# sourceMappingURL=validate_crit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate_crit.d.ts","sourceRoot":"","sources":["../../../../../../../../tdf3/src/crypto/jose/vendor/lib/validate_crit.ts"],"names":[],"mappings":"yBAGgB,QAAG,EAAE,sBAAiB,EAAE,qBAAgB,EAAE,oBAAe,EAAE,eAAU;AAArF,wBA+BE"}
@@ -0,0 +1,76 @@
1
+ export declare class JOSEError extends Error {
2
+ static code: string;
3
+ code: string;
4
+ constructor(message: any, options: any);
5
+ }
6
+ export declare class JWTClaimValidationFailed extends JOSEError {
7
+ static code: string;
8
+ code: string;
9
+ claim: string;
10
+ reason: string;
11
+ payload: any;
12
+ constructor(message: any, payload: any, claim?: string, reason?: string);
13
+ }
14
+ export declare class JWTExpired extends JOSEError {
15
+ static code: string;
16
+ code: string;
17
+ claim: string;
18
+ reason: string;
19
+ payload: any;
20
+ constructor(message: any, payload: any, claim?: string, reason?: string);
21
+ }
22
+ export declare class JOSEAlgNotAllowed extends JOSEError {
23
+ static code: string;
24
+ code: string;
25
+ }
26
+ export declare class JOSENotSupported extends JOSEError {
27
+ static code: string;
28
+ code: string;
29
+ }
30
+ export declare class JWEDecryptionFailed extends JOSEError {
31
+ static code: string;
32
+ code: string;
33
+ constructor(message: string | undefined, options: any);
34
+ }
35
+ export declare class JWEInvalid extends JOSEError {
36
+ static code: string;
37
+ code: string;
38
+ }
39
+ export declare class JWSInvalid extends JOSEError {
40
+ static code: string;
41
+ code: string;
42
+ }
43
+ export declare class JWTInvalid extends JOSEError {
44
+ static code: string;
45
+ code: string;
46
+ }
47
+ export declare class JWKInvalid extends JOSEError {
48
+ static code: string;
49
+ code: string;
50
+ }
51
+ export declare class JWKSInvalid extends JOSEError {
52
+ static code: string;
53
+ code: string;
54
+ }
55
+ export declare class JWKSNoMatchingKey extends JOSEError {
56
+ static code: string;
57
+ code: string;
58
+ constructor(message: string | undefined, options: any);
59
+ }
60
+ export declare class JWKSMultipleMatchingKeys extends JOSEError {
61
+ [Symbol.asyncIterator]: any;
62
+ static code: string;
63
+ code: string;
64
+ constructor(message: string | undefined, options: any);
65
+ }
66
+ export declare class JWKSTimeout extends JOSEError {
67
+ static code: string;
68
+ code: string;
69
+ constructor(message: string | undefined, options: any);
70
+ }
71
+ export declare class JWSSignatureVerificationFailed extends JOSEError {
72
+ static code: string;
73
+ code: string;
74
+ constructor(message: string | undefined, options: any);
75
+ }
76
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../../../tdf3/src/crypto/jose/vendor/util/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAU,SAAQ,KAAK;IAChC,MAAM,CAAC,IAAI,SAAsB;IACjC,IAAI,SAAsB;gBACd,OAAO,KAAA,EAAE,OAAO,KAAA;CAK/B;AACD,qBAAa,wBAAyB,SAAQ,SAAS;IACnD,MAAM,CAAC,IAAI,SAAqC;IAChD,IAAI,SAAqC;IACzC,KAAK,SAAC;IACN,MAAM,SAAC;IACP,OAAO,MAAC;gBACI,OAAO,KAAA,EAAE,OAAO,KAAA,EAAE,KAAK,SAAgB,EAAE,MAAM,SAAgB;CAM9E;AACD,qBAAa,UAAW,SAAQ,SAAS;IACrC,MAAM,CAAC,IAAI,SAAqB;IAChC,IAAI,SAAqB;IACzB,KAAK,SAAC;IACN,MAAM,SAAC;IACP,OAAO,MAAC;gBACI,OAAO,KAAA,EAAE,OAAO,KAAA,EAAE,KAAK,SAAgB,EAAE,MAAM,SAAgB;CAM9E;AACD,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C,MAAM,CAAC,IAAI,SAA8B;IACzC,IAAI,SAA8B;CACrC;AACD,qBAAa,gBAAiB,SAAQ,SAAS;IAC3C,MAAM,CAAC,IAAI,SAA4B;IACvC,IAAI,SAA4B;CACnC;AACD,qBAAa,mBAAoB,SAAQ,SAAS;IAC9C,MAAM,CAAC,IAAI,SAA+B;IAC1C,IAAI,SAA+B;gBACvB,OAAO,oBAAgC,EAAE,OAAO,KAAA;CAG/D;AACD,qBAAa,UAAW,SAAQ,SAAS;IACrC,MAAM,CAAC,IAAI,SAAqB;IAChC,IAAI,SAAqB;CAC5B;AACD,qBAAa,UAAW,SAAQ,SAAS;IACrC,MAAM,CAAC,IAAI,SAAqB;IAChC,IAAI,SAAqB;CAC5B;AACD,qBAAa,UAAW,SAAQ,SAAS;IACrC,MAAM,CAAC,IAAI,SAAqB;IAChC,IAAI,SAAqB;CAC5B;AACD,qBAAa,UAAW,SAAQ,SAAS;IACrC,MAAM,CAAC,IAAI,SAAqB;IAChC,IAAI,SAAqB;CAC5B;AACD,qBAAa,WAAY,SAAQ,SAAS;IACtC,MAAM,CAAC,IAAI,SAAsB;IACjC,IAAI,SAAsB;CAC7B;AACD,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C,MAAM,CAAC,IAAI,SAA8B;IACzC,IAAI,SAA8B;gBACtB,OAAO,oBAAoD,EAAE,OAAO,KAAA;CAGnF;AACD,qBAAa,wBAAyB,SAAQ,SAAS;IACnD,CAAC,MAAM,CAAC,aAAa,CAAC,MAAC;IACvB,MAAM,CAAC,IAAI,SAAqC;IAChD,IAAI,SAAqC;gBAC7B,OAAO,oBAAyD,EAAE,OAAO,KAAA;CAGxF;AACD,qBAAa,WAAY,SAAQ,SAAS;IACtC,MAAM,CAAC,IAAI,SAAsB;IACjC,IAAI,SAAsB;gBACd,OAAO,oBAAsB,EAAE,OAAO,KAAA;CAGrD;AACD,qBAAa,8BAA+B,SAAQ,SAAS;IACzD,MAAM,CAAC,IAAI,SAA2C;IACtD,IAAI,SAA2C;gBACnC,OAAO,oBAAkC,EAAE,OAAO,KAAA;CAGjE"}
@@ -0,0 +1,76 @@
1
+ import { type CryptoService, type PrivateKey, type PublicKey, type SigningAlgorithm, type SymmetricKey } from './declarations.js';
2
+ import { type JWTHeaderParameters, type JWTPayload, type JWTVerifyOptions, type SignOptions } from 'jose';
3
+ export type JwtHeader = JWTHeaderParameters & {
4
+ alg: SigningAlgorithm;
5
+ };
6
+ export type JwtPayload = JWTPayload;
7
+ /**
8
+ * Options for JWT signing. Matches jose SignOptions interface.
9
+ */
10
+ export type SignJwtOptions = SignOptions;
11
+ /**
12
+ * Options for JWT verification. Matches jose JWTVerifyOptions interface.
13
+ * Combines signature verification options and JWT claim verification options.
14
+ */
15
+ export type VerifyJwtOptions = Omit<JWTVerifyOptions, 'algorithms'> & {
16
+ /**
17
+ * A list of accepted JWS "alg" (Algorithm) Header Parameter values.
18
+ * By default all algorithms supported by the CryptoService are allowed.
19
+ * Unsecured JWTs ({ "alg": "none" }) are never accepted.
20
+ */
21
+ algorithms?: SigningAlgorithm[];
22
+ };
23
+ /**
24
+ * Base64url encode data per RFC 4648 Section 5.
25
+ * Uses URL-safe alphabet (- and _ instead of + and /) with no padding.
26
+ * Exported for testing purposes.
27
+ */
28
+ export declare function base64urlEncode(data: string | Uint8Array): string;
29
+ /**
30
+ * Decode the protected header from a JWT without verifying the signature.
31
+ * Useful for inspecting the header to determine key type before verification.
32
+ *
33
+ * @param token - The JWT string
34
+ * @returns The decoded header
35
+ * @throws Error if the token is malformed or uses alg "none"
36
+ */
37
+ export declare function decodeProtectedHeader(token: string): JwtHeader;
38
+ /**
39
+ * Sign a JWT using CryptoService. Replaces jose SignJWT.
40
+ *
41
+ * Implementation:
42
+ * 1. Base64url encode header and payload as JSON
43
+ * 2. Create signing input: `${headerB64}.${payloadB64}`
44
+ * 3. Sign via cryptoService.sign() (asymmetric) or hmac() (HS256)
45
+ * 4. Return compact JWT: `${headerB64}.${payloadB64}.${signatureB64}`
46
+ *
47
+ * @param cryptoService - Crypto implementation to use
48
+ * @param payload - JWT payload (claims)
49
+ * @param key - PEM-encoded private key for asymmetric algorithms, or raw key bytes for HS256
50
+ * @param header - JWT header (must include alg)
51
+ * @param options - Optional signing options (e.g., crit header handling)
52
+ * @returns Compact JWT string
53
+ */
54
+ export declare function signJwt(cryptoService: CryptoService, payload: JwtPayload, key: PrivateKey | SymmetricKey, header: JwtHeader, options?: SignJwtOptions): Promise<string>;
55
+ /**
56
+ * Verify a JWT and return its contents. Replaces jose jwtVerify.
57
+ *
58
+ * Implementation:
59
+ * 1. Split token into header.payload.signature
60
+ * 2. Decode header, validate algorithm against allowlist
61
+ * 3. Verify signature via cryptoService.verify() (asymmetric) or verifyHmac() (HS256)
62
+ * 4. Validate JWT claims (aud, iss, exp, nbf, etc.)
63
+ * 5. Return decoded header and payload
64
+ *
65
+ * @param cryptoService - Crypto implementation to use
66
+ * @param token - The JWT string to verify
67
+ * @param key - For asymmetric: PEM string or PublicKey (opaque). For HS256: Uint8Array or SymmetricKey (opaque).
68
+ * @param options - Verification options including algorithm allowlist and claim validations
69
+ * @throws Error if signature invalid, algorithm not in allowlist, claims invalid, or token malformed
70
+ * @returns Decoded header and payload
71
+ */
72
+ export declare function verifyJwt(cryptoService: CryptoService, token: string, key: string | Uint8Array | PublicKey | SymmetricKey, options?: VerifyJwtOptions): Promise<{
73
+ header: JwtHeader;
74
+ payload: JwtPayload;
75
+ }>;
76
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/crypto/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,MAAM,CAAC;AAId,MAAM,MAAM,SAAS,GAAG,mBAAmB,GAAG;IAAE,GAAG,EAAE,gBAAgB,CAAA;CAAE,CAAC;AACxE,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,GAAG;IACpE;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAUjE;AAwBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAE9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,OAAO,CAC3B,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,UAAU,GAAG,YAAY,EAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAC7B,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,EACnD,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,CAsFrD"}
@@ -1,2 +1,7 @@
1
- export declare const ztdfSalt: Promise<Uint8Array<ArrayBuffer>>;
1
+ import type { CryptoService } from './declarations.js';
2
+ /**
3
+ * Get the ZTDF salt (SHA-256 of "TDF").
4
+ * Lazily computed on first call and cached thereafter.
5
+ */
6
+ export declare function getZtdfSalt(cryptoService: CryptoService): Promise<Uint8Array>;
2
7
  //# sourceMappingURL=salt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"salt.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/crypto/salt.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,QAAQ,kCAAiB,CAAC"}
1
+ {"version":3,"file":"salt.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/crypto/salt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAUnF"}
@@ -2,10 +2,10 @@ import { Binary } from '../binary.js';
2
2
  import { type SymmetricCipher } from '../ciphers/symmetric-cipher-base.js';
3
3
  import { type KeyAccess, type KeyAccessObject } from './key-access.js';
4
4
  import { type Policy } from './policy.js';
5
- import { type CryptoService, type DecryptResult, type EncryptResult } from '../crypto/declarations.js';
5
+ import { type CryptoService, type DecryptResult, type EncryptResult, type SymmetricKey } from '../crypto/declarations.js';
6
6
  import { IntegrityAlgorithm } from '../tdf.js';
7
7
  export type KeyInfo = {
8
- readonly unwrappedKeyBinary: Binary;
8
+ readonly unwrappedKey: SymmetricKey;
9
9
  readonly unwrappedKeyIvBinary: Binary;
10
10
  };
11
11
  export type Segment = {
@@ -40,8 +40,8 @@ export declare class SplitKey {
40
40
  keyAccess: KeyAccess[];
41
41
  constructor(cipher: SymmetricCipher);
42
42
  generateKey(): Promise<KeyInfo>;
43
- encrypt(contentBinary: Binary, keyBinary: Binary, ivBinaryOptional?: Binary): Promise<EncryptResult>;
44
- decrypt(content: Uint8Array, keyBinary: Binary): Promise<DecryptResult>;
43
+ encrypt(contentBinary: Binary, key: SymmetricKey, ivBinaryOptional?: Binary): Promise<EncryptResult>;
44
+ decrypt(content: Uint8Array, key: SymmetricKey): Promise<DecryptResult>;
45
45
  getKeyAccessObjects(policy: Policy, keyInfo: KeyInfo): Promise<KeyAccessObject[]>;
46
46
  generateIvBinary(): Promise<Binary>;
47
47
  write(policy: Policy, keyInfo: KeyInfo): Promise<EncryptionInformation>;
@@ -1 +1 @@
1
- {"version":3,"file":"encryption-information.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/models/encryption-information.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC;AAEhC,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;IACtC,QAAQ,CAAC,oBAAoB,EAAE;QAC7B,QAAQ,CAAC,aAAa,EAAE;YACtB,GAAG,EAAE,kBAAkB,CAAC;YACxB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,QAAQ;aAIS,MAAM,EAAE,eAAe;IAHnD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,SAAS,EAAE,SAAS,EAAE,CAAC;gBAEK,MAAM,EAAE,eAAe;IAK7C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAO/B,OAAO,CACX,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,aAAa,CAAC;IAKnB,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIvE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyDjF,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA8B9E"}
1
+ {"version":3,"file":"encryption-information.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/models/encryption-information.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC;AAEhC,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,CAAC;IACtC,QAAQ,CAAC,oBAAoB,EAAE;QAC7B,QAAQ,CAAC,aAAa,EAAE;YACtB,GAAG,EAAE,kBAAkB,CAAC;YACxB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,2BAA2B,CAAC,EAAE,MAAM,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,QAAQ;aAIS,MAAM,EAAE,eAAe;IAHnD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,SAAS,EAAE,SAAS,EAAE,CAAC;gBAEK,MAAM,EAAE,eAAe;IAK7C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAM/B,OAAO,CACX,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,YAAY,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,aAAa,CAAC;IAKnB,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAIvE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAmDjF,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA8B9E"}
@@ -1,3 +1,4 @@
1
+ import type { CryptoService, KeyPair, SymmetricKey } from '../crypto/declarations.js';
1
2
  import { Policy } from './policy.js';
2
3
  export type KeyAccessType = 'remote' | 'wrapped' | 'ec-wrapped';
3
4
  export declare const schemaVersion = "1.0";
@@ -6,23 +7,25 @@ export declare class ECWrapped {
6
7
  readonly kid: string | undefined;
7
8
  readonly publicKey: string;
8
9
  readonly metadata: unknown;
10
+ readonly cryptoService: CryptoService;
9
11
  readonly sid?: string | undefined;
10
12
  readonly type = "ec-wrapped";
11
- readonly ephemeralKeyPair: Promise<CryptoKeyPair>;
13
+ readonly ephemeralKeyPair: Promise<KeyPair>;
12
14
  keyAccessObject?: KeyAccessObject;
13
- constructor(url: string, kid: string | undefined, publicKey: string, metadata: unknown, sid?: string | undefined);
14
- write(policy: Policy, dek: Uint8Array, encryptedMetadataStr: string): Promise<KeyAccessObject>;
15
+ constructor(url: string, kid: string | undefined, publicKey: string, metadata: unknown, cryptoService: CryptoService, sid?: string | undefined);
16
+ write(policy: Policy, dek: SymmetricKey, encryptedMetadataStr: string): Promise<KeyAccessObject>;
15
17
  }
16
18
  export declare class Wrapped {
17
19
  readonly url: string;
18
20
  readonly kid: string | undefined;
19
21
  readonly publicKey: string;
20
22
  readonly metadata: unknown;
23
+ readonly cryptoService: CryptoService;
21
24
  readonly sid?: string | undefined;
22
25
  readonly type = "wrapped";
23
26
  keyAccessObject?: KeyAccessObject;
24
- constructor(url: string, kid: string | undefined, publicKey: string, metadata: unknown, sid?: string | undefined);
25
- write(policy: Policy, keyBuffer: Uint8Array, encryptedMetadataStr: string): Promise<KeyAccessObject>;
27
+ constructor(url: string, kid: string | undefined, publicKey: string, metadata: unknown, cryptoService: CryptoService, sid?: string | undefined);
28
+ write(policy: Policy, key: SymmetricKey, encryptedMetadataStr: string): Promise<KeyAccessObject>;
26
29
  }
27
30
  export type KeyAccess = ECWrapped | Wrapped;
28
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"key-access.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/models/key-access.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAEhE,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,qBAAa,SAAS;aAMF,GAAG,EAAE,MAAM;aACX,GAAG,EAAE,MAAM,GAAG,SAAS;aACvB,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,OAAO;aACjB,GAAG,CAAC,EAAE,MAAM;IAT9B,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,eAAe,CAAC,EAAE,eAAe,CAAC;gBAGhB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EACjB,GAAG,CAAC,EAAE,MAAM,YAAA;IAYxB,KAAK,CACT,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,CAAC;CA4C5B;AAED,qBAAa,OAAO;aAKA,GAAG,EAAE,MAAM;aACX,GAAG,EAAE,MAAM,GAAG,SAAS;aACvB,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,OAAO;aACjB,GAAG,CAAC,EAAE,MAAM;IAR9B,QAAQ,CAAC,IAAI,aAAa;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;gBAGhB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EACjB,GAAG,CAAC,EAAE,MAAM,YAAA;IAGxB,KAAK,CACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,UAAU,EACrB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,CAAC;CAkC5B;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,IAAI,EAAE,aAAa,CAAC;IAEpB;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,aAAa,CAAC,EAAE;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"}
1
+ {"version":3,"file":"key-access.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/models/key-access.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGtF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAEhE,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,qBAAa,SAAS;aAMF,GAAG,EAAE,MAAM;aACX,GAAG,EAAE,MAAM,GAAG,SAAS;aACvB,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,OAAO;aACjB,aAAa,EAAE,aAAa;aAC5B,GAAG,CAAC,EAAE,MAAM;IAV9B,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,eAAe,CAAC;gBAGhB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,aAAa,EAC5B,GAAG,CAAC,EAAE,MAAM,YAAA;IAMxB,KAAK,CACT,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,EACjB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,CAAC;CAmE5B;AAED,qBAAa,OAAO;aAKA,GAAG,EAAE,MAAM;aACX,GAAG,EAAE,MAAM,GAAG,SAAS;aACvB,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,OAAO;aACjB,aAAa,EAAE,aAAa;aAC5B,GAAG,CAAC,EAAE,MAAM;IAT9B,QAAQ,CAAC,IAAI,aAAa;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;gBAGhB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,aAAa,EAC5B,GAAG,CAAC,EAAE,MAAM,YAAA;IAGxB,KAAK,CACT,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,YAAY,EACjB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,CAAC;CAkC5B;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,IAAI,EAAE,aAAa,CAAC;IAEpB;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,aAAa,CAAC,EAAE;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC"}
@@ -2,11 +2,10 @@ import { KasPublicKeyAlgorithm, KasPublicKeyInfo, OriginAllowList } from '../../
2
2
  import { type AuthProvider } from '../../src/auth/auth.js';
3
3
  import { type Chunker } from '../../src/seekable.js';
4
4
  import { AssertionConfig, AssertionVerificationKeys } from './assertions.js';
5
- import { Binary } from './binary.js';
6
5
  import { SymmetricCipher } from './ciphers/symmetric-cipher-base.js';
7
6
  import { DecryptParams } from './client/builders.js';
8
7
  import { DecoratedReadableStream } from './client/DecoratedReadableStream.js';
9
- import { type CryptoService, type DecryptResult } from './crypto/declarations.js';
8
+ import { type CryptoService, type DecryptResult, type KeyPair, type SymmetricKey } from './crypto/declarations.js';
10
9
  import { KeyAccessType, KeyInfo, Manifest, Policy, SplitKey, KeyAccess, KeyAccessObject, SplitType } from './models/index.js';
11
10
  import { ZipReader } from './utils/index.js';
12
11
  import { CentralDirectory } from './utils/zip-reader.js';
@@ -30,6 +29,7 @@ export type BuildKeyAccess = {
30
29
  publicKey: string;
31
30
  metadata?: Metadata;
32
31
  sid?: string;
32
+ cryptoService: CryptoService;
33
33
  };
34
34
  type Mailbox<T> = Promise<T> & {
35
35
  set: (value: T) => void;
@@ -46,7 +46,7 @@ export type IntegrityAlgorithm = 'GMAC' | 'HS256';
46
46
  export type EncryptConfiguration = {
47
47
  allowList?: OriginAllowList;
48
48
  cryptoService: CryptoService;
49
- dpopKeys: CryptoKeyPair;
49
+ dpopKeys: KeyPair;
50
50
  encryptionInformation: SplitKey;
51
51
  segmentSizeDefault: number;
52
52
  integrityAlgorithm: IntegrityAlgorithm;
@@ -69,7 +69,7 @@ export type DecryptConfiguration = {
69
69
  allowList?: OriginAllowList;
70
70
  authProvider: AuthProvider;
71
71
  cryptoService: CryptoService;
72
- dpopKeys: CryptoKeyPair;
72
+ dpopKeys: KeyPair;
73
73
  chunker: Chunker;
74
74
  keyMiddleware: KeyMiddleware;
75
75
  progressHandler?: (bytesProcessed: number) => void;
@@ -96,7 +96,7 @@ export type KasPublicKeyFormat = 'pkcs8' | 'jwks';
96
96
  * the value from `${kas}/kas_public_key`.
97
97
  */
98
98
  export declare function fetchKasPublicKey(kas: string, algorithm?: KasPublicKeyAlgorithm, kid?: string): Promise<KasPublicKeyInfo>;
99
- export declare function extractPemFromKeyString(keyString: string, alg: KasPublicKeyAlgorithm): Promise<string>;
99
+ export declare function extractPemFromKeyString(keyString: string, alg: KasPublicKeyAlgorithm, cryptoService: CryptoService): Promise<string>;
100
100
  /**
101
101
  * Build a key access object and add it to the list. Can specify either
102
102
  * a (url, publicKey) pair (legacy, deprecated) or an attribute URL (future).
@@ -110,7 +110,7 @@ export declare function extractPemFromKeyString(keyString: string, alg: KasPubli
110
110
  * @param {String? Object?} options.metadata - Metadata. Appears to be dead code.
111
111
  * @return {KeyAccess}- the key access object loaded
112
112
  */
113
- export declare function buildKeyAccess({ type, url, publicKey, kid, metadata, sid, alg, }: BuildKeyAccess): Promise<KeyAccess>;
113
+ export declare function buildKeyAccess({ type, url, publicKey, kid, metadata, sid, alg, cryptoService, }: BuildKeyAccess): Promise<KeyAccess>;
114
114
  export declare function validatePolicyObject(policy: Policy): void;
115
115
  export declare function writeStream(cfg: EncryptConfiguration): Promise<DecoratedReadableStream>;
116
116
  export type InspectedTDFOverview = {
@@ -120,9 +120,9 @@ export type InspectedTDFOverview = {
120
120
  };
121
121
  export declare function loadTDFStream(chunker: Chunker): Promise<InspectedTDFOverview>;
122
122
  export declare function splitLookupTableFactory(keyAccess: KeyAccessObject[], allowedKases: OriginAllowList): Record<string, Record<string, KeyAccessObject>>;
123
- export declare function sliceAndDecrypt({ buffer, reconstructedKeyBinary, slice, cipher, segmentIntegrityAlgorithm, specVersion, }: {
123
+ export declare function sliceAndDecrypt({ buffer, reconstructedKey, slice, cipher, cryptoService, segmentIntegrityAlgorithm, specVersion, }: {
124
124
  buffer: Uint8Array;
125
- reconstructedKeyBinary: Binary;
125
+ reconstructedKey: SymmetricKey;
126
126
  slice: Chunk[];
127
127
  cipher: SymmetricCipher;
128
128
  cryptoService: CryptoService;