@opentdf/sdk 0.8.0-beta.74 → 0.8.0-rc.73

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 (260) hide show
  1. package/README.md +30 -5
  2. package/dist/cjs/src/nanoclients.js +292 -0
  3. package/dist/cjs/src/nanoindex.js +47 -0
  4. package/dist/cjs/src/nanotdf/Client.js +315 -0
  5. package/dist/cjs/src/nanotdf/NanoTDF.js +94 -0
  6. package/dist/cjs/src/nanotdf/browser-entry.js +19 -0
  7. package/dist/cjs/src/nanotdf/constants.js +5 -0
  8. package/dist/cjs/src/nanotdf/decrypt.js +17 -0
  9. package/dist/cjs/src/nanotdf/encrypt-dataset.js +38 -0
  10. package/dist/cjs/src/nanotdf/encrypt.js +132 -0
  11. package/dist/cjs/src/nanotdf/enum/CipherEnum.js +13 -0
  12. package/dist/cjs/src/nanotdf/enum/CurveNameEnum.js +15 -0
  13. package/dist/cjs/src/nanotdf/enum/EncodingEnum.js +8 -0
  14. package/dist/cjs/src/nanotdf/enum/PolicyTypeEnum.js +11 -0
  15. package/dist/cjs/src/nanotdf/enum/ProtocolEnum.js +10 -0
  16. package/dist/cjs/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +11 -0
  17. package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +28 -0
  18. package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +11 -0
  19. package/dist/cjs/src/nanotdf/index.js +25 -0
  20. package/dist/cjs/src/nanotdf/interfaces/PolicyInterface.js +3 -0
  21. package/dist/cjs/src/nanotdf/models/Ciphers.js +61 -0
  22. package/dist/cjs/src/nanotdf/models/DefaultParams.js +27 -0
  23. package/dist/cjs/src/nanotdf/models/EcCurves.js +39 -0
  24. package/dist/cjs/src/nanotdf/models/Header.js +255 -0
  25. package/dist/cjs/src/nanotdf/models/Payload.js +158 -0
  26. package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +73 -0
  27. package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +82 -0
  28. package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +38 -0
  29. package/dist/cjs/src/nanotdf/models/Policy/RemotePolicy.js +62 -0
  30. package/dist/cjs/src/nanotdf/models/ResourceLocator.js +211 -0
  31. package/dist/cjs/src/nanotdf/models/Signature.js +77 -0
  32. package/dist/cjs/src/{crypto → nanotdf-crypto}/ciphers.js +1 -1
  33. package/dist/cjs/src/{crypto → nanotdf-crypto}/decrypt.js +1 -1
  34. package/dist/cjs/src/{crypto → nanotdf-crypto}/digest.js +1 -1
  35. package/dist/cjs/src/{crypto → nanotdf-crypto}/ecdsaSignature.js +2 -2
  36. package/dist/cjs/src/{crypto → nanotdf-crypto}/encrypt.js +1 -1
  37. package/dist/cjs/src/{crypto → nanotdf-crypto}/enums.js +1 -1
  38. package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +20 -0
  39. package/dist/cjs/src/{crypto → nanotdf-crypto}/generateKeyPair.js +1 -1
  40. package/dist/cjs/src/{crypto → nanotdf-crypto}/generateRandomNumber.js +1 -1
  41. package/dist/cjs/src/{crypto → nanotdf-crypto}/index.js +1 -1
  42. package/dist/cjs/src/{crypto → nanotdf-crypto}/keyAgreement.js +1 -1
  43. package/dist/cjs/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.js +1 -1
  44. package/dist/cjs/src/opentdf.js +260 -9
  45. package/dist/cjs/src/tdf/NanoTDF/NanoTDF.js +38 -0
  46. package/dist/cjs/src/types/index.js +3 -0
  47. package/dist/cjs/src/utils.js +2 -2
  48. package/dist/cjs/tdf3/index.js +8 -7
  49. package/dist/cjs/tdf3/src/models/key-access.js +4 -4
  50. package/dist/cjs/tdf3/src/tdf.js +4 -4
  51. package/dist/types/src/nanoclients.d.ts +106 -0
  52. package/dist/types/src/nanoclients.d.ts.map +1 -0
  53. package/dist/types/src/nanoindex.d.ts +5 -0
  54. package/dist/types/src/nanoindex.d.ts.map +1 -0
  55. package/dist/types/src/nanotdf/Client.d.ts +91 -0
  56. package/dist/types/src/nanotdf/Client.d.ts.map +1 -0
  57. package/dist/types/src/nanotdf/NanoTDF.d.ts +24 -0
  58. package/dist/types/src/nanotdf/NanoTDF.d.ts.map +1 -0
  59. package/dist/types/src/nanotdf/browser-entry.d.ts +17 -0
  60. package/dist/types/src/nanotdf/browser-entry.d.ts.map +1 -0
  61. package/dist/types/src/nanotdf/constants.d.ts +2 -0
  62. package/dist/types/src/nanotdf/constants.d.ts.map +1 -0
  63. package/dist/types/src/nanotdf/decrypt.d.ts +9 -0
  64. package/dist/types/src/nanotdf/decrypt.d.ts.map +1 -0
  65. package/dist/types/src/nanotdf/encrypt-dataset.d.ts +11 -0
  66. package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +1 -0
  67. package/dist/types/src/nanotdf/encrypt.d.ts +13 -0
  68. package/dist/types/src/nanotdf/encrypt.d.ts.map +1 -0
  69. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +10 -0
  70. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +1 -0
  71. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts +12 -0
  72. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts.map +1 -0
  73. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts +5 -0
  74. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts.map +1 -0
  75. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +8 -0
  76. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +1 -0
  77. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts +7 -0
  78. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts.map +1 -0
  79. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts +8 -0
  80. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts.map +1 -0
  81. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts +20 -0
  82. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts.map +1 -0
  83. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +8 -0
  84. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +1 -0
  85. package/dist/types/src/nanotdf/index.d.ts +9 -0
  86. package/dist/types/src/nanotdf/index.d.ts.map +1 -0
  87. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts +17 -0
  88. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts.map +1 -0
  89. package/dist/types/src/nanotdf/models/Ciphers.d.ts +14 -0
  90. package/dist/types/src/nanotdf/models/Ciphers.d.ts.map +1 -0
  91. package/dist/types/src/nanotdf/models/DefaultParams.d.ts +21 -0
  92. package/dist/types/src/nanotdf/models/DefaultParams.d.ts.map +1 -0
  93. package/dist/types/src/nanotdf/models/EcCurves.d.ts +15 -0
  94. package/dist/types/src/nanotdf/models/EcCurves.d.ts.map +1 -0
  95. package/dist/types/src/nanotdf/models/Header.d.ts +73 -0
  96. package/dist/types/src/nanotdf/models/Header.d.ts.map +1 -0
  97. package/dist/types/src/nanotdf/models/Payload.d.ts +47 -0
  98. package/dist/types/src/nanotdf/models/Payload.d.ts.map +1 -0
  99. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts +52 -0
  100. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts.map +1 -0
  101. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts +35 -0
  102. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts.map +1 -0
  103. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts +11 -0
  104. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts.map +1 -0
  105. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts +31 -0
  106. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts.map +1 -0
  107. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts +65 -0
  108. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +1 -0
  109. package/dist/types/src/nanotdf/models/Signature.d.ts +33 -0
  110. package/dist/types/src/nanotdf/models/Signature.d.ts.map +1 -0
  111. package/dist/types/src/nanotdf-crypto/ciphers.d.ts.map +1 -0
  112. package/dist/types/src/nanotdf-crypto/decrypt.d.ts.map +1 -0
  113. package/dist/types/src/nanotdf-crypto/digest.d.ts.map +1 -0
  114. package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts.map +1 -0
  115. package/dist/types/src/nanotdf-crypto/encrypt.d.ts.map +1 -0
  116. package/dist/types/src/nanotdf-crypto/enums.d.ts.map +1 -0
  117. package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts.map +1 -0
  118. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +1 -0
  119. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +1 -0
  120. package/dist/types/src/nanotdf-crypto/index.d.ts.map +1 -0
  121. package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +1 -0
  122. package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +1 -0
  123. package/dist/types/src/opentdf.d.ts +65 -1
  124. package/dist/types/src/opentdf.d.ts.map +1 -1
  125. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +99 -0
  126. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +1 -0
  127. package/dist/types/src/types/index.d.ts +45 -0
  128. package/dist/types/src/types/index.d.ts.map +1 -0
  129. package/dist/types/tdf3/index.d.ts +3 -4
  130. package/dist/types/tdf3/index.d.ts.map +1 -1
  131. package/dist/web/src/nanoclients.js +287 -0
  132. package/dist/web/src/nanoindex.js +5 -0
  133. package/dist/web/src/nanotdf/Client.js +310 -0
  134. package/dist/web/src/nanotdf/NanoTDF.js +89 -0
  135. package/dist/web/src/nanotdf/browser-entry.js +14 -0
  136. package/dist/web/src/nanotdf/constants.js +2 -0
  137. package/dist/web/src/nanotdf/decrypt.js +14 -0
  138. package/dist/web/src/nanotdf/encrypt-dataset.js +32 -0
  139. package/dist/web/src/nanotdf/encrypt.js +126 -0
  140. package/dist/web/src/nanotdf/enum/CipherEnum.js +11 -0
  141. package/dist/web/src/nanotdf/enum/CurveNameEnum.js +13 -0
  142. package/dist/web/src/nanotdf/enum/EncodingEnum.js +6 -0
  143. package/dist/web/src/nanotdf/enum/PolicyTypeEnum.js +9 -0
  144. package/dist/web/src/nanotdf/enum/ProtocolEnum.js +8 -0
  145. package/dist/web/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +9 -0
  146. package/dist/web/src/nanotdf/helpers/calculateByCurve.js +24 -0
  147. package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +8 -0
  148. package/dist/web/src/nanotdf/index.js +11 -0
  149. package/dist/web/src/nanotdf/interfaces/PolicyInterface.js +2 -0
  150. package/dist/web/src/nanotdf/models/Ciphers.js +54 -0
  151. package/dist/web/src/nanotdf/models/DefaultParams.js +22 -0
  152. package/dist/web/src/nanotdf/models/EcCurves.js +32 -0
  153. package/dist/web/src/nanotdf/models/Header.js +250 -0
  154. package/dist/web/src/nanotdf/models/Payload.js +156 -0
  155. package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +71 -0
  156. package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +77 -0
  157. package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +33 -0
  158. package/dist/web/src/nanotdf/models/Policy/RemotePolicy.js +57 -0
  159. package/dist/web/src/nanotdf/models/ResourceLocator.js +206 -0
  160. package/dist/web/src/nanotdf/models/Signature.js +74 -0
  161. package/dist/web/src/nanotdf-crypto/ciphers.js +14 -0
  162. package/dist/web/src/{crypto → nanotdf-crypto}/decrypt.js +1 -1
  163. package/dist/web/src/nanotdf-crypto/digest.js +4 -0
  164. package/dist/web/src/{crypto → nanotdf-crypto}/ecdsaSignature.js +2 -2
  165. package/dist/web/src/{crypto → nanotdf-crypto}/encrypt.js +1 -1
  166. package/dist/web/src/{crypto → nanotdf-crypto}/enums.js +1 -1
  167. package/dist/web/src/nanotdf-crypto/exportCryptoKey.js +17 -0
  168. package/dist/web/src/nanotdf-crypto/generateKeyPair.js +10 -0
  169. package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +9 -0
  170. package/dist/web/src/nanotdf-crypto/index.js +11 -0
  171. package/dist/web/src/{crypto → nanotdf-crypto}/keyAgreement.js +1 -1
  172. package/dist/web/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.js +1 -1
  173. package/dist/web/src/opentdf.js +255 -8
  174. package/dist/web/src/tdf/NanoTDF/NanoTDF.js +35 -0
  175. package/dist/web/src/types/index.js +2 -0
  176. package/dist/web/src/utils.js +2 -2
  177. package/dist/web/tdf3/index.js +3 -4
  178. package/dist/web/tdf3/src/models/key-access.js +4 -4
  179. package/dist/web/tdf3/src/tdf.js +4 -4
  180. package/package.json +6 -1
  181. package/src/nanoclients.ts +406 -0
  182. package/src/nanoindex.ts +4 -0
  183. package/src/nanotdf/Client.ts +425 -0
  184. package/src/nanotdf/NanoTDF.ts +120 -0
  185. package/src/nanotdf/browser-entry.ts +20 -0
  186. package/src/nanotdf/constants.ts +1 -0
  187. package/src/nanotdf/decrypt.ts +19 -0
  188. package/src/nanotdf/encrypt-dataset.ts +51 -0
  189. package/src/nanotdf/encrypt.ts +196 -0
  190. package/src/nanotdf/enum/CipherEnum.ts +10 -0
  191. package/src/nanotdf/enum/CurveNameEnum.ts +12 -0
  192. package/src/nanotdf/enum/EncodingEnum.ts +5 -0
  193. package/src/nanotdf/enum/PolicyTypeEnum.ts +8 -0
  194. package/src/nanotdf/enum/ProtocolEnum.ts +7 -0
  195. package/src/nanotdf/enum/ResourceLocatorIdentifierEnum.ts +8 -0
  196. package/src/nanotdf/helpers/calculateByCurve.ts +26 -0
  197. package/src/nanotdf/helpers/getHkdfSalt.ts +13 -0
  198. package/src/nanotdf/index.ts +10 -0
  199. package/src/nanotdf/interfaces/PolicyInterface.ts +27 -0
  200. package/src/nanotdf/models/Ciphers.ts +67 -0
  201. package/src/nanotdf/models/DefaultParams.ts +24 -0
  202. package/src/nanotdf/models/EcCurves.ts +40 -0
  203. package/src/nanotdf/models/Header.ts +322 -0
  204. package/src/nanotdf/models/Payload.ts +196 -0
  205. package/src/nanotdf/models/Policy/AbstractPolicy.ts +90 -0
  206. package/src/nanotdf/models/Policy/EmbeddedPolicy.ts +101 -0
  207. package/src/nanotdf/models/Policy/PolicyFactory.ts +48 -0
  208. package/src/nanotdf/models/Policy/RemotePolicy.ts +74 -0
  209. package/src/nanotdf/models/ResourceLocator.ts +212 -0
  210. package/src/nanotdf/models/Signature.ts +85 -0
  211. package/src/{crypto → nanotdf-crypto}/ecdsaSignature.ts +1 -1
  212. package/src/opentdf.ts +343 -6
  213. package/src/tdf/NanoTDF/NanoTDF.ts +120 -0
  214. package/src/types/index.ts +55 -0
  215. package/src/utils.ts +1 -1
  216. package/tdf3/index.ts +12 -2
  217. package/tdf3/src/models/key-access.ts +3 -3
  218. package/tdf3/src/tdf.ts +3 -3
  219. package/dist/cjs/src/crypto/exportCryptoKey.js +0 -20
  220. package/dist/types/src/crypto/ciphers.d.ts.map +0 -1
  221. package/dist/types/src/crypto/decrypt.d.ts.map +0 -1
  222. package/dist/types/src/crypto/digest.d.ts.map +0 -1
  223. package/dist/types/src/crypto/ecdsaSignature.d.ts.map +0 -1
  224. package/dist/types/src/crypto/encrypt.d.ts.map +0 -1
  225. package/dist/types/src/crypto/enums.d.ts.map +0 -1
  226. package/dist/types/src/crypto/exportCryptoKey.d.ts.map +0 -1
  227. package/dist/types/src/crypto/generateKeyPair.d.ts.map +0 -1
  228. package/dist/types/src/crypto/generateRandomNumber.d.ts.map +0 -1
  229. package/dist/types/src/crypto/index.d.ts.map +0 -1
  230. package/dist/types/src/crypto/keyAgreement.d.ts.map +0 -1
  231. package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +0 -1
  232. package/dist/web/src/crypto/ciphers.js +0 -14
  233. package/dist/web/src/crypto/digest.js +0 -4
  234. package/dist/web/src/crypto/exportCryptoKey.js +0 -17
  235. package/dist/web/src/crypto/generateKeyPair.js +0 -10
  236. package/dist/web/src/crypto/generateRandomNumber.js +0 -9
  237. package/dist/web/src/crypto/index.js +0 -11
  238. /package/dist/types/src/{crypto → nanotdf-crypto}/ciphers.d.ts +0 -0
  239. /package/dist/types/src/{crypto → nanotdf-crypto}/decrypt.d.ts +0 -0
  240. /package/dist/types/src/{crypto → nanotdf-crypto}/digest.d.ts +0 -0
  241. /package/dist/types/src/{crypto → nanotdf-crypto}/ecdsaSignature.d.ts +0 -0
  242. /package/dist/types/src/{crypto → nanotdf-crypto}/encrypt.d.ts +0 -0
  243. /package/dist/types/src/{crypto → nanotdf-crypto}/enums.d.ts +0 -0
  244. /package/dist/types/src/{crypto → nanotdf-crypto}/exportCryptoKey.d.ts +0 -0
  245. /package/dist/types/src/{crypto → nanotdf-crypto}/generateKeyPair.d.ts +0 -0
  246. /package/dist/types/src/{crypto → nanotdf-crypto}/generateRandomNumber.d.ts +0 -0
  247. /package/dist/types/src/{crypto → nanotdf-crypto}/index.d.ts +0 -0
  248. /package/dist/types/src/{crypto → nanotdf-crypto}/keyAgreement.d.ts +0 -0
  249. /package/dist/types/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.d.ts +0 -0
  250. /package/src/{crypto → nanotdf-crypto}/ciphers.ts +0 -0
  251. /package/src/{crypto → nanotdf-crypto}/decrypt.ts +0 -0
  252. /package/src/{crypto → nanotdf-crypto}/digest.ts +0 -0
  253. /package/src/{crypto → nanotdf-crypto}/encrypt.ts +0 -0
  254. /package/src/{crypto → nanotdf-crypto}/enums.ts +0 -0
  255. /package/src/{crypto → nanotdf-crypto}/exportCryptoKey.ts +0 -0
  256. /package/src/{crypto → nanotdf-crypto}/generateKeyPair.ts +0 -0
  257. /package/src/{crypto → nanotdf-crypto}/generateRandomNumber.ts +0 -0
  258. /package/src/{crypto → nanotdf-crypto}/index.ts +0 -0
  259. /package/src/{crypto → nanotdf-crypto}/keyAgreement.ts +0 -0
  260. /package/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.ts +0 -0
@@ -1,5 +1,6 @@
1
1
  import { type AuthProvider } from './auth/providers.js';
2
2
  export { Client as TDF3Client } from '../tdf3/src/client/index.js';
3
+ import Header from './nanotdf/models/Header.js';
3
4
  import { type Source } from './seekable.js';
4
5
  import { Client as TDF3Client } from '../tdf3/src/client/index.js';
5
6
  import { type Assertion, AssertionConfig, AssertionVerificationKeys } from '../tdf3/src/assertions.js';
@@ -37,6 +38,25 @@ export type CreateOptions = {
37
38
  /** Source of plaintext data. */
38
39
  source: Source;
39
40
  };
41
+ /** Options for creating a NanoTDF. */
42
+ export type CreateNanoTDFOptions = CreateOptions & {
43
+ /** The type of binding to use for the NanoTDF. */
44
+ bindingType?: 'ecdsa' | 'gmac';
45
+ /** When creating a new collection, use ECDSA binding with this key id from the signers, instead of the DEK. */
46
+ ecdsaBindingKeyID?: string;
47
+ /**
48
+ * When creating a new collection, use the key in the `signers` list with this id
49
+ * to generate a signature for each element. When absent, the nanotdf is unsigned.
50
+ */
51
+ signingKeyID?: string;
52
+ };
53
+ /** Options for creating a NanoTDF collection. */
54
+ export type CreateNanoTDFCollectionOptions = CreateNanoTDFOptions & {
55
+ /** The platform URL. */
56
+ platformUrl: string;
57
+ /** The maximum number of key iterations to use for a single DEK. */
58
+ maxKeyIterations?: number;
59
+ };
40
60
  /** Metadata for a TDF object. */
41
61
  export type Metadata = object;
42
62
  /** MIME type of the decrypted content. */
@@ -112,6 +132,8 @@ export type OpenTDFOptions = {
112
132
  * which is out of the scope of this library.
113
133
  */
114
134
  dpopKeys?: Promise<CryptoKeyPair>;
135
+ /** Configuration options for the collection header cache. */
136
+ rewrapCacheOptions?: RewrapCacheOptions;
115
137
  };
116
138
  /** A decorated readable stream. */
117
139
  export type DecoratedStream = ReadableStream<Uint8Array> & {
@@ -119,7 +141,33 @@ export type DecoratedStream = ReadableStream<Uint8Array> & {
119
141
  metadata?: Promise<unknown>;
120
142
  /** The TDF manifest. */
121
143
  manifest?: Promise<Manifest>;
144
+ /** If the source is a NanoTDF, this will be set. */
145
+ header?: Header;
146
+ };
147
+ /** Configuration options for the collection header cache. */
148
+ export type RewrapCacheOptions = {
149
+ /** If we should disable (bypass) the cache. */
150
+ bypass?: boolean;
151
+ /** Evict keys after this many milliseconds. */
152
+ maxAge?: number;
153
+ /** Check for expired keys once every this many milliseconds. */
154
+ pollInterval?: number;
122
155
  };
156
+ /**
157
+ * Cache for headers of nanotdf collections, to quickly open multiple entries of the same collection.
158
+ * It has a demon that removes all keys that have not been accessed in the last 5 minutes.
159
+ * To cancel the demon, and clear the cache, call `close()`.
160
+ * */
161
+ export declare class RewrapCache {
162
+ private cache?;
163
+ private closer?;
164
+ constructor(opts?: RewrapCacheOptions);
165
+ get(key: Uint8Array): CryptoKey | undefined;
166
+ /** Set a key in the cache. */
167
+ set(key: Uint8Array, value: CryptoKey): void;
168
+ /** Close the cache and release any resources. */
169
+ close(): void;
170
+ }
123
171
  /**
124
172
  * A TDF reader that can decrypt and inspect a TDF file.
125
173
  */
@@ -147,6 +195,7 @@ export type TDFReader = {
147
195
  };
148
196
  /**
149
197
  * The main OpenTDF class that provides methods for creating and reading TDF files.
198
+ * It supports both NanoTDF and ZTDF formats.
150
199
  * It can be used to create new TDF files and read existing ones.
151
200
  * This class is the entry point for using the OpenTDF SDK.
152
201
  * It requires an authentication provider to be passed in the constructor.
@@ -191,9 +240,17 @@ export declare class OpenTDF {
191
240
  defaultReadOptions: Omit<ReadOptions, 'source'>;
192
241
  /** The DPoP keys for this instance, if any. */
193
242
  readonly dpopKeys: Promise<CryptoKeyPair>;
243
+ /** Cache for rewrapped keys */
244
+ private readonly rewrapCache;
194
245
  /** The TDF3 client for encrypting and decrypting ZTDF files. */
195
246
  readonly tdf3Client: TDF3Client;
196
- constructor({ authProvider, dpopKeys, defaultCreateOptions, defaultReadOptions, disableDPoP, policyEndpoint, platformUrl, }: OpenTDFOptions);
247
+ constructor({ authProvider, dpopKeys, defaultCreateOptions, defaultReadOptions, disableDPoP, policyEndpoint, rewrapCacheOptions, platformUrl, }: OpenTDFOptions);
248
+ /** Creates a new NanoTDF stream. */
249
+ createNanoTDF(opts: CreateNanoTDFOptions): Promise<DecoratedStream>;
250
+ /**
251
+ * Creates a new collection object, which can be used to encrypt a series of data with the same policy.
252
+ */
253
+ createNanoTDFCollection(opts: CreateNanoTDFCollectionOptions): Promise<NanoTDFCollectionWriter>;
197
254
  /** Creates a new ZTDF stream. */
198
255
  createZTDF(opts: CreateZTDFOptions): Promise<DecoratedStream>;
199
256
  /** Opens a TDF file for inspection and decryption. */
@@ -203,4 +260,11 @@ export declare class OpenTDF {
203
260
  /** Closes the OpenTDF instance and releases any resources. */
204
261
  close(): void;
205
262
  }
263
+ /** A writer for NanoTDF collections. */
264
+ export type NanoTDFCollectionWriter = {
265
+ /** The NanoTDF client used for encrypting data in this collection. */
266
+ encrypt: (source: Source) => Promise<ReadableStream<Uint8Array>>;
267
+ /** Closes the collection and releases any resources. */
268
+ close: () => Promise<void>;
269
+ };
206
270
  //# sourceMappingURL=opentdf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opentdf.d.ts","sourceRoot":"","sources":["../../../src/opentdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opentdf.d.ts","sourceRoot":"","sources":["../../../src/opentdf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ declare enum CipherType {
2
+ Aes256Gcm64 = 0,// Default cipher
3
+ Aes256Gcm96 = 1,
4
+ Aes256Gcm104 = 2,
5
+ Aes256Gcm112 = 3,
6
+ Aes256Gcm120 = 4,
7
+ Aes256Gcm128 = 5
8
+ }
9
+ /**
10
+ * The Signature ECC Mode is used to determine the length of the signature at the end of a nanotdf. This, in
11
+ * combination with the previous HAS_SIGNATURE section, describe the signature of the nanotdf. The following table
12
+ * describes the valid values and the associated ECC Params.
13
+ */
14
+ declare enum CurveName {
15
+ Secp256R1 = 0,
16
+ Secp384R1 = 1,
17
+ Secp521R1 = 2
18
+ }
19
+ export declare enum ResourceLocatorProtocol {
20
+ Http = 0,
21
+ Https = 1,
22
+ Unreserverd = 2,
23
+ SharedResourceDirectory = 255
24
+ }
25
+ export declare enum PolicyType {
26
+ Remote = 0,
27
+ EmbeddedText = 1,
28
+ EmbeddedEncrypted = 2,// Default policy
29
+ EmbeddedEncryptedPKA = 3
30
+ }
31
+ /**
32
+ * Resource Locator interface
33
+ */
34
+ export interface ResourceLocator {
35
+ protocol: ResourceLocatorProtocol;
36
+ length: number;
37
+ body: string;
38
+ }
39
+ /**
40
+ * Policy interface
41
+ */
42
+ export interface Policy {
43
+ type: PolicyType;
44
+ binding: Uint8Array;
45
+ }
46
+ /**
47
+ * Remote policy interface
48
+ */
49
+ export interface RemotePolicy extends Policy {
50
+ protocol: ResourceLocatorProtocol;
51
+ urn: string;
52
+ }
53
+ /**
54
+ * Embedded policy interface
55
+ */
56
+ export interface EmbeddedPolicy extends Policy {
57
+ content: Uint8Array;
58
+ }
59
+ /**
60
+ * Header interface
61
+ */
62
+ export interface Header {
63
+ magicNumberVersion: Uint8Array;
64
+ kas: ResourceLocator;
65
+ useECDSABinding: boolean;
66
+ ephemeralCurveName: CurveName;
67
+ hasSignature: boolean;
68
+ signatureCurveName: CurveName;
69
+ symmetricCipher: CipherType;
70
+ authTagLength: number;
71
+ policy: RemotePolicy | EmbeddedPolicy;
72
+ ephemeralPublicKey: Uint8Array;
73
+ }
74
+ /**
75
+ * Payload interface
76
+ */
77
+ export interface Payload {
78
+ iv: Uint8Array;
79
+ ciphertext: Uint8Array;
80
+ authTag: Uint8Array;
81
+ ciphertextAuthTag: Uint8Array;
82
+ }
83
+ /**
84
+ * Signature interface
85
+ */
86
+ export interface Signature {
87
+ publicKey: Uint8Array;
88
+ signature: Uint8Array;
89
+ }
90
+ /**
91
+ * NanoTDF interface
92
+ */
93
+ export interface NanoTDF {
94
+ header: Header;
95
+ payload: Payload;
96
+ signature: Signature;
97
+ }
98
+ export {};
99
+ //# sourceMappingURL=NanoTDF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NanoTDF.d.ts","sourceRoot":"","sources":["../../../../../src/tdf/NanoTDF/NanoTDF.ts"],"names":[],"mappings":"AAAA,aAAK,UAAU;IACb,WAAW,IAAA,CAAE,iBAAiB;IAC9B,WAAW,IAAA;IACX,YAAY,IAAA;IACZ,YAAY,IAAA;IACZ,YAAY,IAAA;IACZ,YAAY,IAAA;CACb;AAED;;;;GAIG;AACH,aAAK,SAAS;IACZ,SAAS,IAAA;IACT,SAAS,IAAA;IACT,SAAS,IAAA;CACV;AAED,oBAAY,uBAAuB;IACjC,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,WAAW,IAAA;IACX,uBAAuB,MAAO;CAC/B;AAED,oBAAY,UAAU;IACpB,MAAM,IAAA;IACN,YAAY,IAAA;IACZ,iBAAiB,IAAA,CAAE,iBAAiB;IACpC,oBAAoB,IAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,QAAQ,EAAE,uBAAuB,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,MAAM;IAC5C,OAAO,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IAErB,kBAAkB,EAAE,UAAU,CAAC;IAG/B,GAAG,EAAE,eAAe,CAAC;IAGrB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,SAAS,CAAC;IAG9B,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,SAAS,CAAC;IAC9B,eAAe,EAAE,UAAU,CAAC;IAE5B,aAAa,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,YAAY,GAAG,cAAc,CAAC;IAGtC,kBAAkB,EAAE,UAAU,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,UAAU,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;IACpB,iBAAiB,EAAE,UAAU,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;CACtB"}
@@ -0,0 +1,45 @@
1
+ import PolicyTypeEnum from '../nanotdf/enum/PolicyTypeEnum.js';
2
+ export type InputSource = ReadableStream<Uint8Array> | Uint8Array | string | ArrayBuffer | Promise<ReadableStream<Uint8Array>>;
3
+ type Header = {
4
+ magicNumberVersion: string[];
5
+ kas: {
6
+ protocol: number;
7
+ length: number;
8
+ body: string;
9
+ };
10
+ eccBindingMode: {
11
+ useECDSABinding: boolean;
12
+ ephemeralCurveName: number;
13
+ };
14
+ symmetricPayloadConfig: {
15
+ hasSignature: boolean;
16
+ signatureCurveName: number;
17
+ symmetricCipher: number;
18
+ };
19
+ ephemeralPublicKey: string[];
20
+ };
21
+ type HeaderPolicy = {
22
+ type: PolicyTypeEnum;
23
+ content: string[];
24
+ binding: string[];
25
+ };
26
+ type RemotePolicy = {
27
+ protocol: number;
28
+ length: number;
29
+ body: string;
30
+ };
31
+ export type PlainEmbeddedHeader = Header & {
32
+ policy: HeaderPolicy;
33
+ };
34
+ export type EmbeddedHeader = Header & {
35
+ policy: HeaderPolicy;
36
+ };
37
+ export type RemoteHeader = Header & {
38
+ policy: {
39
+ type: PolicyTypeEnum;
40
+ remotePolicy: RemotePolicy;
41
+ binding: string[];
42
+ };
43
+ };
44
+ export {};
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAE/D,MAAM,MAAM,WAAW,GACnB,cAAc,CAAC,UAAU,CAAC,GAC1B,UAAU,GACV,MAAM,GACN,WAAW,GACX,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;AAExC,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,GAAG,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,cAAc,EAAE;QACd,eAAe,EAAE,OAAO,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,sBAAsB,EAAE;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG;IACzC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG;IACpC,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAClC,MAAM,EAAE;QACN,IAAI,EAAE,cAAc,CAAC;QACrB,YAAY,EAAE,YAAY,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH,CAAC"}
@@ -7,12 +7,11 @@ import { Client, Errors, TDF3Client } from './src/index.js';
7
7
  import { type KeyInfo, SplitKey, type EncryptionInformation } from './src/models/encryption-information.js';
8
8
  import { AuthProvider, type HttpMethod, HttpRequest, withHeaders } from '../src/auth/auth.js';
9
9
  import { AesGcmCipher } from './src/ciphers/aes-gcm-cipher.js';
10
- import * as AuthProviders from '../src/auth/providers.js';
11
- import { version, clientType } from '../src/version.js';
10
+ import { NanoTDFClient, NanoTDFDatasetClient, AuthProviders, version, clientType } from '../src/nanoindex.js';
12
11
  import { Algorithms, type AlgorithmName, type AlgorithmUrn } from './src/ciphers/algorithms.js';
13
12
  import { type Chunker } from '../src/seekable.js';
14
13
  export type { AlgorithmName, AlgorithmUrn, AuthProvider, Chunker, CryptoService, DecryptResult, EncryptResult, HttpMethod, PemKeyPair, EncryptKeyMiddleware, EncryptStreamMiddleware, DecryptKeyMiddleware, DecryptStreamMiddleware, SplitStep, };
15
- export { AesGcmCipher, Algorithms, AuthProviders, Binary, Client, ClientConfig, DecoratedReadableStream, DecryptParams, DecryptParamsBuilder, DecryptSource, EncryptionInformation, EncryptParams, EncryptParamsBuilder, Errors, HttpRequest, KeyInfo, SplitKey, TDF3Client, clientType, createSessionKeys, withHeaders, version, };
14
+ export { AesGcmCipher, Algorithms, AuthProviders, Binary, Client, ClientConfig, DecoratedReadableStream, DecryptParams, DecryptParamsBuilder, DecryptSource, EncryptionInformation, EncryptParams, EncryptParamsBuilder, Errors, HttpRequest, KeyInfo, NanoTDFClient, NanoTDFDatasetClient, SplitKey, TDF3Client, clientType, createSessionKeys, withHeaders, version, };
16
15
  export * as WebCryptoService from './src/crypto/index.js';
17
- export { type CreateOptions, type CreateZTDFOptions, type DecoratedStream, type Keys, type OpenTDFOptions, type ReadOptions, type TDFReader, OpenTDF, } from '../src/opentdf.js';
16
+ export { type CreateNanoTDFCollectionOptions, type CreateNanoTDFOptions, type CreateOptions, type CreateZTDFOptions, type DecoratedStream, type Keys, type OpenTDFOptions, type NanoTDFCollectionWriter, type ReadOptions, type TDFReader, OpenTDF, } from '../src/opentdf.js';
18
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../tdf3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EACL,KAAK,aAAa,EAClB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,KAAK,OAAO,EACZ,QAAQ,EACR,KAAK,qBAAqB,EAC3B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,SAAS,GACV,CAAC;AAEF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,MAAM,EACN,MAAM,EACN,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,OAAO,GACR,CAAC;AAEF,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,OAAO,GACR,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../tdf3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EACL,KAAK,aAAa,EAClB,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,KAAK,OAAO,EACZ,QAAQ,EACR,KAAK,qBAAqB,EAC3B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,OAAO,EACP,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,SAAS,GACV,CAAC;AAEF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,MAAM,EACN,MAAM,EACN,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,OAAO,EACP,aAAa,EACb,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,OAAO,GACR,CAAC;AAEF,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,OAAO,GACR,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,287 @@
1
+ import { Client, NanoTDF, encrypt, decrypt, encryptDataset, getHkdfSalt, DefaultParams, } from './nanotdf/index.js';
2
+ import { keyAgreement } from './nanotdf-crypto/index.js';
3
+ import { PolicyBuilder } from './tdf/Policy.js';
4
+ import { fetchECKasPubKey } from './access.js';
5
+ import { ConfigurationError } from './errors.js';
6
+ // Define default options
7
+ const defaultOptions = {
8
+ ecdsaBinding: false,
9
+ };
10
+ /**
11
+ * NanoTDF SDK Client. Deprecated in favor of OpenTDF.
12
+ *
13
+ */
14
+ export class NanoTDFClient extends Client {
15
+ /**
16
+ * Decrypt ciphertext
17
+ *
18
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
19
+ *
20
+ * @param ciphertext Ciphertext to decrypt
21
+ */
22
+ async decrypt(ciphertext) {
23
+ // Parse ciphertext
24
+ const nanotdf = NanoTDF.from(ciphertext);
25
+ // TODO: The version number should be fetched from the API
26
+ const version = '0.0.1';
27
+ const kasUrl = nanotdf.header.getKasRewrapUrl();
28
+ // Rewrap key on every request
29
+ const { unwrappedKey: ukey } = await this.rewrapKey(nanotdf.header.toBuffer(), kasUrl, nanotdf.header.magicNumberVersion, version);
30
+ if (!ukey) {
31
+ throw new Error('internal: key rewrap failure');
32
+ }
33
+ // Return decrypt promise
34
+ return decrypt(ukey, nanotdf);
35
+ }
36
+ /**
37
+ * Decrypt ciphertext of the legacy TDF, with the older, smaller i.v. calculation.
38
+ *
39
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
40
+ *
41
+ * @param ciphertext Ciphertext to decrypt
42
+ */
43
+ async decryptLegacyTDF(ciphertext) {
44
+ // Parse ciphertext
45
+ const nanotdf = NanoTDF.from(ciphertext, undefined, true);
46
+ const legacyVersion = '0.0.0';
47
+ // Rewrap key on every request
48
+ const { unwrappedKey: key } = await this.rewrapKey(nanotdf.header.toBuffer(), nanotdf.header.getKasRewrapUrl(), nanotdf.header.magicNumberVersion, legacyVersion);
49
+ if (!key) {
50
+ throw new Error('internal: failed unwrap');
51
+ }
52
+ // Return decrypt promise
53
+ return decrypt(key, nanotdf);
54
+ }
55
+ /**
56
+ * Encrypts the given data using the NanoTDF encryption scheme.
57
+ *
58
+ * @param data The data to be encrypted.
59
+ * @param options The encryption options (currently unused).
60
+ * @returns A promise that resolves to the encrypted data as an ArrayBuffer.
61
+ * @throws If the initialization vector is not a number.
62
+ */
63
+ async encrypt(data, options) {
64
+ // For encrypt always generate the client ephemeralKeyPair
65
+ const ephemeralKeyPair = await this.ephemeralKeyPair;
66
+ const initializationVector = this.iv;
67
+ if (typeof initializationVector !== 'number') {
68
+ throw new ConfigurationError('NanoTDF clients are single use. Please generate a new client and keypair.');
69
+ }
70
+ delete this.iv;
71
+ if (!this.kasPubKey) {
72
+ this.kasPubKey = await fetchECKasPubKey(this.kasUrl);
73
+ }
74
+ // Create a policy for the tdf
75
+ const policy = new PolicyBuilder();
76
+ // Add data attributes.
77
+ for (const dataAttribute of this.dataAttributes) {
78
+ const attribute = {
79
+ attribute: dataAttribute,
80
+ pubKey: this.kasPubKey.publicKey,
81
+ kasUrl: this.kasUrl,
82
+ };
83
+ policy.addAttribute(attribute);
84
+ }
85
+ if (this.dissems.length == 0 && this.dataAttributes.length == 0) {
86
+ console.warn('This policy has an empty attributes list and an empty dissemination list. This will allow any entity with a valid Entity Object to access this TDF.');
87
+ }
88
+ // Encrypt the policy.
89
+ const policyObjectAsStr = policy.toJSON();
90
+ // IV is always '1', since the new keypair is generated on encrypt
91
+ // using the same key is fine.
92
+ const lengthAsUint32 = new Uint32Array(1);
93
+ lengthAsUint32[0] = initializationVector;
94
+ const lengthAsUint24 = new Uint8Array(lengthAsUint32.buffer);
95
+ // NOTE: We are only interested in only first 3 bytes.
96
+ const payloadIV = new Uint8Array(12).fill(0);
97
+ payloadIV[9] = lengthAsUint24[2];
98
+ payloadIV[10] = lengthAsUint24[1];
99
+ payloadIV[11] = lengthAsUint24[0];
100
+ const mergedOptions = { ...defaultOptions, ...options };
101
+ return encrypt(policyObjectAsStr, this.kasPubKey, ephemeralKeyPair, payloadIV, data, mergedOptions.ecdsaBinding);
102
+ }
103
+ }
104
+ /**
105
+ * NanoTDF Dataset SDK Client
106
+ *
107
+ *
108
+ * @example
109
+ * ```
110
+ * import { clientSecretAuthProvider, NanoTDFDatasetClient } from '@opentdf/sdk';
111
+ *
112
+ * const OIDC_ENDPOINT = 'http://localhost:65432/auth/realms/opentdf';
113
+ * const KAS_URL = 'http://localhost:65432/api/kas/';
114
+ *
115
+ * const ciphertext = '...';
116
+ * const client = new NanoTDFDatasetClient({
117
+ * authProvider: await clientSecretAuthProvider({
118
+ * clientId: 'tdf-client',
119
+ * clientSecret: '123-456',
120
+ * exchange: 'client',
121
+ * oidcOrigin: OIDC_ENDPOINT,
122
+ * }),
123
+ * kasEndpoint: KAS_URL,
124
+ * });
125
+ * const plaintext = client.decrypt(ciphertext);
126
+ * console.log('Plaintext', plaintext);
127
+ * ```
128
+ */
129
+ export class NanoTDFDatasetClient extends Client {
130
+ /**
131
+ * Create new NanoTDF Dataset Client
132
+ *
133
+ * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
134
+ * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
135
+ * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
136
+ *
137
+ * @param clientConfig OIDC client credentials
138
+ * @param kasUrl Key access service URL
139
+ * @param ephemeralKeyPair (optional) ephemeral key pair to use
140
+ * @param maxKeyIterations Max iteration to performe without a key rotation
141
+ */
142
+ constructor(opts) {
143
+ if (opts.maxKeyIterations &&
144
+ opts.maxKeyIterations > NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS) {
145
+ throw new ConfigurationError(`key iteration exceeds max iterations(${NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS})`);
146
+ }
147
+ super(opts);
148
+ this.maxKeyIteration = opts.maxKeyIterations || NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS;
149
+ this.keyIterationCount = 0;
150
+ }
151
+ /**
152
+ * Encrypt data
153
+ *
154
+ * Pass a string, TypedArray, or ArrayBuffer data and get a promise which resolves ciphertext
155
+ *
156
+ * @param data to decrypt
157
+ */
158
+ async encrypt(data, options) {
159
+ // Intial encrypt
160
+ if (this.keyIterationCount == 0) {
161
+ const mergedOptions = { ...defaultOptions, ...options };
162
+ this.ecdsaBinding = mergedOptions.ecdsaBinding;
163
+ // For encrypt always generate the client ephemeralKeyPair
164
+ const ephemeralKeyPair = await this.ephemeralKeyPair;
165
+ if (!this.kasPubKey) {
166
+ this.kasPubKey = await fetchECKasPubKey(this.kasUrl);
167
+ }
168
+ // Create a policy for the tdf
169
+ const policy = new PolicyBuilder();
170
+ // Add data attributes.
171
+ for (const dataAttribute of this.dataAttributes) {
172
+ const attribute = {
173
+ attribute: dataAttribute,
174
+ kasPubKey: this.kasPubKey.publicKey,
175
+ kasUrl: this.kasUrl,
176
+ };
177
+ policy.addAttribute(attribute);
178
+ }
179
+ if (this.dissems.length == 0 || this.dataAttributes.length == 0) {
180
+ console.warn('This policy has an empty attributes list and an empty dissemination list. This will allow any entity with a valid Entity Object to access this TDF.');
181
+ }
182
+ // Encrypt the policy.
183
+ const policyObjectAsStr = policy.toJSON();
184
+ const ivVector = this.generateIV();
185
+ // Generate a symmetric key.
186
+ this.symmetricKey = await keyAgreement(ephemeralKeyPair.privateKey, await this.kasPubKey.key, await getHkdfSalt(DefaultParams.magicNumberVersion));
187
+ const nanoTDFBuffer = await encrypt(policyObjectAsStr, this.kasPubKey, ephemeralKeyPair, ivVector, data, this.ecdsaBinding);
188
+ // Cache the header and increment the key iteration
189
+ if (!this.cachedHeader) {
190
+ const nanoTDF = NanoTDF.from(nanoTDFBuffer);
191
+ this.cachedHeader = nanoTDF.header;
192
+ }
193
+ this.keyIterationCount += 1;
194
+ return nanoTDFBuffer;
195
+ }
196
+ this.keyIterationCount += 1;
197
+ if (!this.cachedHeader) {
198
+ throw new ConfigurationError('invalid dataset client: empty nanoTDF header');
199
+ }
200
+ if (!this.symmetricKey) {
201
+ throw new ConfigurationError('invalid dataset client: empty dek');
202
+ }
203
+ this.keyIterationCount += 1;
204
+ if (this.keyIterationCount == this.maxKeyIteration) {
205
+ // reset the key iteration
206
+ this.keyIterationCount = 0;
207
+ }
208
+ const ivVector = this.generateIV();
209
+ return encryptDataset(this.symmetricKey, this.cachedHeader, ivVector, data);
210
+ }
211
+ /**
212
+ * Decrypt ciphertext
213
+ *
214
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
215
+ *
216
+ * @param ciphertext Ciphertext to decrypt
217
+ */
218
+ async decrypt(ciphertext) {
219
+ // Parse ciphertext
220
+ const nanotdf = NanoTDF.from(ciphertext);
221
+ if (!this.cachedEphemeralKey) {
222
+ // First decrypt
223
+ return this.rewrapAndDecrypt(nanotdf);
224
+ }
225
+ // Other encrypts
226
+ if (this.cachedEphemeralKey.toString() == nanotdf.header.ephemeralPublicKey.toString()) {
227
+ const ukey = this.unwrappedKey;
228
+ if (!ukey) {
229
+ // These should have thrown already.
230
+ throw new Error('internal: key rewrap failure');
231
+ }
232
+ // Return decrypt promise
233
+ return decrypt(ukey, nanotdf);
234
+ }
235
+ else {
236
+ return this.rewrapAndDecrypt(nanotdf);
237
+ }
238
+ }
239
+ async rewrapAndDecrypt(nanotdf) {
240
+ // TODO: The version number should be fetched from the API
241
+ const version = '0.0.1';
242
+ // Rewrap key on every request
243
+ const { unwrappedKey: ukey } = await this.rewrapKey(nanotdf.header.toBuffer(), nanotdf.header.getKasRewrapUrl(), nanotdf.header.magicNumberVersion, version);
244
+ if (!ukey) {
245
+ // These should have thrown already.
246
+ throw new Error('internal: key rewrap failure');
247
+ }
248
+ this.cachedEphemeralKey = nanotdf.header.ephemeralPublicKey;
249
+ this.unwrappedKey = ukey;
250
+ // Return decrypt promise
251
+ return decrypt(ukey, nanotdf);
252
+ }
253
+ generateIV() {
254
+ const iv = this.iv;
255
+ if (iv === undefined) {
256
+ // iv has passed the maximum iteration count for this dek
257
+ throw new ConfigurationError('dataset full');
258
+ }
259
+ // assert iv ∈ ℤ ∩ (0, 2^24)
260
+ if (!Number.isInteger(iv) || iv <= 0 || 0xff_ffff < iv) {
261
+ // Something has fiddled with the iv outside of the expected behavior
262
+ // could indicate a race condition, e.g. if two workers or handlers are
263
+ // processing the file at once, for example.
264
+ throw new Error('internal: invalid state');
265
+ }
266
+ const lengthAsUint32 = new Uint32Array(1);
267
+ lengthAsUint32[0] = iv;
268
+ const lengthAsUint24 = new Uint8Array(lengthAsUint32.buffer);
269
+ // NOTE: We are only interested in only first 3 bytes.
270
+ const ivVector = new Uint8Array(Client.IV_SIZE).fill(0);
271
+ ivVector[9] = lengthAsUint24[2];
272
+ ivVector[10] = lengthAsUint24[1];
273
+ ivVector[11] = lengthAsUint24[0];
274
+ // Increment the IV
275
+ if (iv == 0xff_ffff) {
276
+ delete this.iv;
277
+ }
278
+ else {
279
+ this.iv = iv + 1;
280
+ }
281
+ return ivVector;
282
+ }
283
+ }
284
+ // Total unique IVs(2^24 -1) used for encrypting the nano tdf payloads
285
+ // IV starts from 1 since the 0 IV is reserved for policy encryption
286
+ NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS = 8388606;
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFub2NsaWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmFub2NsaWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBRVAsT0FBTyxFQUNQLE9BQU8sRUFDUCxjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsR0FDZCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVFqRCx5QkFBeUI7QUFDekIsTUFBTSxjQUFjLEdBQW1CO0lBQ3JDLFlBQVksRUFBRSxLQUFLO0NBQ3BCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLE1BQU07SUFDdkM7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFvQztRQUNoRCxtQkFBbUI7UUFDbkIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6QywwREFBMEQ7UUFDMUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFaEQsOEJBQThCO1FBQzlCLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUN6QixNQUFNLEVBQ04sT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFDakMsT0FBTyxDQUNSLENBQUM7UUFFRixJQUFJ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
@@ -0,0 +1,5 @@
1
+ export * as AuthProviders from './auth/providers.js';
2
+ export { attributeFQNsAsValues } from './policy/api.js';
3
+ export * from './nanoclients.js';
4
+ export { version, clientType } from './version.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFub2luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25hbm9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssYUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUMifQ==