@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
package/README.md CHANGED
@@ -1,9 +1,12 @@
1
1
  # An OpenTDF Library for Browser Applications
2
2
 
3
- This project presents client code to write and read OpenTDF data formats (ZTDF).
3
+ This project presents client code to write and read a OpenTDF data formats. This included NanoTDF
4
+ and collections and Base TDF3.
4
5
 
5
6
  ## Usage
6
7
 
8
+ ### NanoTDF
9
+
7
10
  ```typescript
8
11
  import { type Chunker, OpenTDF } from '@opentdf/sdk';
9
12
 
@@ -21,14 +24,36 @@ const client = new OpenTDF({
21
24
  },
22
25
  dpopKeys: authProvider.getSigningKey(),
23
26
  });
27
+ const cipherText = await client.createNanoTDF({
28
+ source: { type: 'stream', location: source },
29
+ });
30
+
31
+ const clearText = await client.read({ type: 'stream', location: cipherText });
32
+ ```
33
+
34
+ ### ZTDF
24
35
 
25
- // Encrypt
36
+ ```typescript
37
+ import { type Chunker, OpenTDF } from '@opentdf/sdk';
38
+
39
+ const oidcCredentials: RefreshTokenCredentials = {
40
+ clientId: keycloakClientId,
41
+ exchange: 'refresh',
42
+ refreshToken: refreshToken,
43
+ oidcOrigin: keycloakUrl,
44
+ };
45
+ const authProvider = await AuthProviders.refreshAuthProvider(oidcCredentials);
46
+ const client = new OpenTDF({
47
+ authProvider,
48
+ defaultCreateOptions: {
49
+ defaultKASEndpoint: kasEndpoint, // Server used for Key Access Control
50
+ },
51
+ dpopKeys: authProvider.getSigningKey(),
52
+ });
26
53
  const cipherText = await client.createZTDF({
27
54
  source: { type: 'stream', location: source },
28
55
  autoconfigure: false,
29
56
  });
30
57
 
31
- // Decrypt
32
- const reader = client.open({ source: { type: 'stream', location: cipherText } });
33
- const clearText = await reader.decrypt();
58
+ const clearText = await client.read({ type: 'stream', location: cipherText });
34
59
  ```
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NanoTDFDatasetClient = exports.NanoTDFClient = void 0;
4
+ const index_js_1 = require("./nanotdf/index.js");
5
+ const index_js_2 = require("./nanotdf-crypto/index.js");
6
+ const Policy_js_1 = require("./tdf/Policy.js");
7
+ const access_js_1 = require("./access.js");
8
+ const errors_js_1 = require("./errors.js");
9
+ // Define default options
10
+ const defaultOptions = {
11
+ ecdsaBinding: false,
12
+ };
13
+ /**
14
+ * NanoTDF SDK Client. Deprecated in favor of OpenTDF.
15
+ *
16
+ */
17
+ class NanoTDFClient extends index_js_1.Client {
18
+ /**
19
+ * Decrypt ciphertext
20
+ *
21
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
22
+ *
23
+ * @param ciphertext Ciphertext to decrypt
24
+ */
25
+ async decrypt(ciphertext) {
26
+ // Parse ciphertext
27
+ const nanotdf = index_js_1.NanoTDF.from(ciphertext);
28
+ // TODO: The version number should be fetched from the API
29
+ const version = '0.0.1';
30
+ const kasUrl = nanotdf.header.getKasRewrapUrl();
31
+ // Rewrap key on every request
32
+ const { unwrappedKey: ukey } = await this.rewrapKey(nanotdf.header.toBuffer(), kasUrl, nanotdf.header.magicNumberVersion, version);
33
+ if (!ukey) {
34
+ throw new Error('internal: key rewrap failure');
35
+ }
36
+ // Return decrypt promise
37
+ return (0, index_js_1.decrypt)(ukey, nanotdf);
38
+ }
39
+ /**
40
+ * Decrypt ciphertext of the legacy TDF, with the older, smaller i.v. calculation.
41
+ *
42
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
43
+ *
44
+ * @param ciphertext Ciphertext to decrypt
45
+ */
46
+ async decryptLegacyTDF(ciphertext) {
47
+ // Parse ciphertext
48
+ const nanotdf = index_js_1.NanoTDF.from(ciphertext, undefined, true);
49
+ const legacyVersion = '0.0.0';
50
+ // Rewrap key on every request
51
+ const { unwrappedKey: key } = await this.rewrapKey(nanotdf.header.toBuffer(), nanotdf.header.getKasRewrapUrl(), nanotdf.header.magicNumberVersion, legacyVersion);
52
+ if (!key) {
53
+ throw new Error('internal: failed unwrap');
54
+ }
55
+ // Return decrypt promise
56
+ return (0, index_js_1.decrypt)(key, nanotdf);
57
+ }
58
+ /**
59
+ * Encrypts the given data using the NanoTDF encryption scheme.
60
+ *
61
+ * @param data The data to be encrypted.
62
+ * @param options The encryption options (currently unused).
63
+ * @returns A promise that resolves to the encrypted data as an ArrayBuffer.
64
+ * @throws If the initialization vector is not a number.
65
+ */
66
+ async encrypt(data, options) {
67
+ // For encrypt always generate the client ephemeralKeyPair
68
+ const ephemeralKeyPair = await this.ephemeralKeyPair;
69
+ const initializationVector = this.iv;
70
+ if (typeof initializationVector !== 'number') {
71
+ throw new errors_js_1.ConfigurationError('NanoTDF clients are single use. Please generate a new client and keypair.');
72
+ }
73
+ delete this.iv;
74
+ if (!this.kasPubKey) {
75
+ this.kasPubKey = await (0, access_js_1.fetchECKasPubKey)(this.kasUrl);
76
+ }
77
+ // Create a policy for the tdf
78
+ const policy = new Policy_js_1.PolicyBuilder();
79
+ // Add data attributes.
80
+ for (const dataAttribute of this.dataAttributes) {
81
+ const attribute = {
82
+ attribute: dataAttribute,
83
+ pubKey: this.kasPubKey.publicKey,
84
+ kasUrl: this.kasUrl,
85
+ };
86
+ policy.addAttribute(attribute);
87
+ }
88
+ if (this.dissems.length == 0 && this.dataAttributes.length == 0) {
89
+ 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.');
90
+ }
91
+ // Encrypt the policy.
92
+ const policyObjectAsStr = policy.toJSON();
93
+ // IV is always '1', since the new keypair is generated on encrypt
94
+ // using the same key is fine.
95
+ const lengthAsUint32 = new Uint32Array(1);
96
+ lengthAsUint32[0] = initializationVector;
97
+ const lengthAsUint24 = new Uint8Array(lengthAsUint32.buffer);
98
+ // NOTE: We are only interested in only first 3 bytes.
99
+ const payloadIV = new Uint8Array(12).fill(0);
100
+ payloadIV[9] = lengthAsUint24[2];
101
+ payloadIV[10] = lengthAsUint24[1];
102
+ payloadIV[11] = lengthAsUint24[0];
103
+ const mergedOptions = { ...defaultOptions, ...options };
104
+ return (0, index_js_1.encrypt)(policyObjectAsStr, this.kasPubKey, ephemeralKeyPair, payloadIV, data, mergedOptions.ecdsaBinding);
105
+ }
106
+ }
107
+ exports.NanoTDFClient = NanoTDFClient;
108
+ /**
109
+ * NanoTDF Dataset SDK Client
110
+ *
111
+ *
112
+ * @example
113
+ * ```
114
+ * import { clientSecretAuthProvider, NanoTDFDatasetClient } from '@opentdf/sdk';
115
+ *
116
+ * const OIDC_ENDPOINT = 'http://localhost:65432/auth/realms/opentdf';
117
+ * const KAS_URL = 'http://localhost:65432/api/kas/';
118
+ *
119
+ * const ciphertext = '...';
120
+ * const client = new NanoTDFDatasetClient({
121
+ * authProvider: await clientSecretAuthProvider({
122
+ * clientId: 'tdf-client',
123
+ * clientSecret: '123-456',
124
+ * exchange: 'client',
125
+ * oidcOrigin: OIDC_ENDPOINT,
126
+ * }),
127
+ * kasEndpoint: KAS_URL,
128
+ * });
129
+ * const plaintext = client.decrypt(ciphertext);
130
+ * console.log('Plaintext', plaintext);
131
+ * ```
132
+ */
133
+ class NanoTDFDatasetClient extends index_js_1.Client {
134
+ /**
135
+ * Create new NanoTDF Dataset Client
136
+ *
137
+ * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
138
+ * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
139
+ * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
140
+ *
141
+ * @param clientConfig OIDC client credentials
142
+ * @param kasUrl Key access service URL
143
+ * @param ephemeralKeyPair (optional) ephemeral key pair to use
144
+ * @param maxKeyIterations Max iteration to performe without a key rotation
145
+ */
146
+ constructor(opts) {
147
+ if (opts.maxKeyIterations &&
148
+ opts.maxKeyIterations > NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS) {
149
+ throw new errors_js_1.ConfigurationError(`key iteration exceeds max iterations(${NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS})`);
150
+ }
151
+ super(opts);
152
+ this.maxKeyIteration = opts.maxKeyIterations || NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS;
153
+ this.keyIterationCount = 0;
154
+ }
155
+ /**
156
+ * Encrypt data
157
+ *
158
+ * Pass a string, TypedArray, or ArrayBuffer data and get a promise which resolves ciphertext
159
+ *
160
+ * @param data to decrypt
161
+ */
162
+ async encrypt(data, options) {
163
+ // Intial encrypt
164
+ if (this.keyIterationCount == 0) {
165
+ const mergedOptions = { ...defaultOptions, ...options };
166
+ this.ecdsaBinding = mergedOptions.ecdsaBinding;
167
+ // For encrypt always generate the client ephemeralKeyPair
168
+ const ephemeralKeyPair = await this.ephemeralKeyPair;
169
+ if (!this.kasPubKey) {
170
+ this.kasPubKey = await (0, access_js_1.fetchECKasPubKey)(this.kasUrl);
171
+ }
172
+ // Create a policy for the tdf
173
+ const policy = new Policy_js_1.PolicyBuilder();
174
+ // Add data attributes.
175
+ for (const dataAttribute of this.dataAttributes) {
176
+ const attribute = {
177
+ attribute: dataAttribute,
178
+ kasPubKey: this.kasPubKey.publicKey,
179
+ kasUrl: this.kasUrl,
180
+ };
181
+ policy.addAttribute(attribute);
182
+ }
183
+ if (this.dissems.length == 0 || this.dataAttributes.length == 0) {
184
+ 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.');
185
+ }
186
+ // Encrypt the policy.
187
+ const policyObjectAsStr = policy.toJSON();
188
+ const ivVector = this.generateIV();
189
+ // Generate a symmetric key.
190
+ this.symmetricKey = await (0, index_js_2.keyAgreement)(ephemeralKeyPair.privateKey, await this.kasPubKey.key, await (0, index_js_1.getHkdfSalt)(index_js_1.DefaultParams.magicNumberVersion));
191
+ const nanoTDFBuffer = await (0, index_js_1.encrypt)(policyObjectAsStr, this.kasPubKey, ephemeralKeyPair, ivVector, data, this.ecdsaBinding);
192
+ // Cache the header and increment the key iteration
193
+ if (!this.cachedHeader) {
194
+ const nanoTDF = index_js_1.NanoTDF.from(nanoTDFBuffer);
195
+ this.cachedHeader = nanoTDF.header;
196
+ }
197
+ this.keyIterationCount += 1;
198
+ return nanoTDFBuffer;
199
+ }
200
+ this.keyIterationCount += 1;
201
+ if (!this.cachedHeader) {
202
+ throw new errors_js_1.ConfigurationError('invalid dataset client: empty nanoTDF header');
203
+ }
204
+ if (!this.symmetricKey) {
205
+ throw new errors_js_1.ConfigurationError('invalid dataset client: empty dek');
206
+ }
207
+ this.keyIterationCount += 1;
208
+ if (this.keyIterationCount == this.maxKeyIteration) {
209
+ // reset the key iteration
210
+ this.keyIterationCount = 0;
211
+ }
212
+ const ivVector = this.generateIV();
213
+ return (0, index_js_1.encryptDataset)(this.symmetricKey, this.cachedHeader, ivVector, data);
214
+ }
215
+ /**
216
+ * Decrypt ciphertext
217
+ *
218
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
219
+ *
220
+ * @param ciphertext Ciphertext to decrypt
221
+ */
222
+ async decrypt(ciphertext) {
223
+ // Parse ciphertext
224
+ const nanotdf = index_js_1.NanoTDF.from(ciphertext);
225
+ if (!this.cachedEphemeralKey) {
226
+ // First decrypt
227
+ return this.rewrapAndDecrypt(nanotdf);
228
+ }
229
+ // Other encrypts
230
+ if (this.cachedEphemeralKey.toString() == nanotdf.header.ephemeralPublicKey.toString()) {
231
+ const ukey = this.unwrappedKey;
232
+ if (!ukey) {
233
+ // These should have thrown already.
234
+ throw new Error('internal: key rewrap failure');
235
+ }
236
+ // Return decrypt promise
237
+ return (0, index_js_1.decrypt)(ukey, nanotdf);
238
+ }
239
+ else {
240
+ return this.rewrapAndDecrypt(nanotdf);
241
+ }
242
+ }
243
+ async rewrapAndDecrypt(nanotdf) {
244
+ // TODO: The version number should be fetched from the API
245
+ const version = '0.0.1';
246
+ // Rewrap key on every request
247
+ const { unwrappedKey: ukey } = await this.rewrapKey(nanotdf.header.toBuffer(), nanotdf.header.getKasRewrapUrl(), nanotdf.header.magicNumberVersion, version);
248
+ if (!ukey) {
249
+ // These should have thrown already.
250
+ throw new Error('internal: key rewrap failure');
251
+ }
252
+ this.cachedEphemeralKey = nanotdf.header.ephemeralPublicKey;
253
+ this.unwrappedKey = ukey;
254
+ // Return decrypt promise
255
+ return (0, index_js_1.decrypt)(ukey, nanotdf);
256
+ }
257
+ generateIV() {
258
+ const iv = this.iv;
259
+ if (iv === undefined) {
260
+ // iv has passed the maximum iteration count for this dek
261
+ throw new errors_js_1.ConfigurationError('dataset full');
262
+ }
263
+ // assert iv ∈ ℤ ∩ (0, 2^24)
264
+ if (!Number.isInteger(iv) || iv <= 0 || 0xff_ffff < iv) {
265
+ // Something has fiddled with the iv outside of the expected behavior
266
+ // could indicate a race condition, e.g. if two workers or handlers are
267
+ // processing the file at once, for example.
268
+ throw new Error('internal: invalid state');
269
+ }
270
+ const lengthAsUint32 = new Uint32Array(1);
271
+ lengthAsUint32[0] = iv;
272
+ const lengthAsUint24 = new Uint8Array(lengthAsUint32.buffer);
273
+ // NOTE: We are only interested in only first 3 bytes.
274
+ const ivVector = new Uint8Array(index_js_1.Client.IV_SIZE).fill(0);
275
+ ivVector[9] = lengthAsUint24[2];
276
+ ivVector[10] = lengthAsUint24[1];
277
+ ivVector[11] = lengthAsUint24[0];
278
+ // Increment the IV
279
+ if (iv == 0xff_ffff) {
280
+ delete this.iv;
281
+ }
282
+ else {
283
+ this.iv = iv + 1;
284
+ }
285
+ return ivVector;
286
+ }
287
+ }
288
+ exports.NanoTDFDatasetClient = NanoTDFDatasetClient;
289
+ // Total unique IVs(2^24 -1) used for encrypting the nano tdf payloads
290
+ // IV starts from 1 since the 0 IV is reserved for policy encryption
291
+ NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS = 8388606;
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFub2NsaWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmFub2NsaWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBUzRCO0FBQzVCLHdEQUF5RDtBQUN6RCwrQ0FBZ0Q7QUFDaEQsMkNBQStDO0FBRS9DLDJDQUFpRDtBQVFqRCx5QkFBeUI7QUFDekIsTUFBTSxjQUFjLEdBQW1CO0lBQ3JDLFlBQVksRUFBRSxLQUFLO0NBQ3BCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFhLGFBQWMsU0FBUSxpQkFBTTtJQUN2Qzs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQW9DO1FBQ2hELG1CQUFtQjtRQUNuQixNQUFNLE9BQU8sR0FBRyxrQkFBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6QywwREFBMEQ7UUFDMUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFaEQsOEJBQThCO1FBQzlCLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUN6QixNQUFNLEVBQ04sT0FBTyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFDakMsT0FBTyxDQUNSLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELHlCQUF5QjtRQUN6QixPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFvQztRQUN6RCxtQkFBbUI7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
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.clientType = exports.version = exports.attributeFQNsAsValues = exports.AuthProviders = void 0;
40
+ exports.AuthProviders = __importStar(require("./auth/providers.js"));
41
+ var api_js_1 = require("./policy/api.js");
42
+ Object.defineProperty(exports, "attributeFQNsAsValues", { enumerable: true, get: function () { return api_js_1.attributeFQNsAsValues; } });
43
+ __exportStar(require("./nanoclients.js"), exports);
44
+ var version_js_1 = require("./version.js");
45
+ Object.defineProperty(exports, "version", { enumerable: true, get: function () { return version_js_1.version; } });
46
+ Object.defineProperty(exports, "clientType", { enumerable: true, get: function () { return version_js_1.clientType; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFub2luZGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25hbm9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxRUFBcUQ7QUFDckQsMENBQXdEO0FBQS9DLCtHQUFBLHFCQUFxQixPQUFBO0FBQzlCLG1EQUFpQztBQUNqQywyQ0FBbUQ7QUFBMUMscUdBQUEsT0FBTyxPQUFBO0FBQUUsd0dBQUEsVUFBVSxPQUFBIn0=