@opentdf/sdk 0.8.0-aleph.72 → 0.8.0-beta.74

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 +5 -30
  2. package/dist/cjs/src/{nanotdf-crypto → crypto}/ciphers.js +1 -1
  3. package/dist/cjs/src/{nanotdf-crypto → crypto}/decrypt.js +1 -1
  4. package/dist/cjs/src/{nanotdf-crypto → crypto}/digest.js +1 -1
  5. package/dist/cjs/src/{nanotdf-crypto → crypto}/ecdsaSignature.js +2 -2
  6. package/dist/cjs/src/{nanotdf-crypto → crypto}/encrypt.js +1 -1
  7. package/dist/cjs/src/{nanotdf-crypto → crypto}/enums.js +1 -1
  8. package/dist/cjs/src/crypto/exportCryptoKey.js +20 -0
  9. package/dist/cjs/src/{nanotdf-crypto → crypto}/generateKeyPair.js +1 -1
  10. package/dist/cjs/src/{nanotdf-crypto → crypto}/generateRandomNumber.js +1 -1
  11. package/dist/cjs/src/{nanotdf-crypto → crypto}/index.js +1 -1
  12. package/dist/cjs/src/{nanotdf-crypto → crypto}/keyAgreement.js +1 -1
  13. package/dist/cjs/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.js +1 -1
  14. package/dist/cjs/src/opentdf.js +9 -260
  15. package/dist/cjs/src/utils.js +2 -2
  16. package/dist/cjs/tdf3/index.js +7 -8
  17. package/dist/cjs/tdf3/src/models/key-access.js +4 -4
  18. package/dist/cjs/tdf3/src/tdf.js +4 -4
  19. package/dist/types/src/crypto/ciphers.d.ts.map +1 -0
  20. package/dist/types/src/crypto/decrypt.d.ts.map +1 -0
  21. package/dist/types/src/crypto/digest.d.ts.map +1 -0
  22. package/dist/types/src/crypto/ecdsaSignature.d.ts.map +1 -0
  23. package/dist/types/src/crypto/encrypt.d.ts.map +1 -0
  24. package/dist/types/src/crypto/enums.d.ts.map +1 -0
  25. package/dist/types/src/crypto/exportCryptoKey.d.ts.map +1 -0
  26. package/dist/types/src/crypto/generateKeyPair.d.ts.map +1 -0
  27. package/dist/types/src/crypto/generateRandomNumber.d.ts.map +1 -0
  28. package/dist/types/src/crypto/index.d.ts.map +1 -0
  29. package/dist/types/src/crypto/keyAgreement.d.ts.map +1 -0
  30. package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +1 -0
  31. package/dist/types/src/opentdf.d.ts +1 -65
  32. package/dist/types/src/opentdf.d.ts.map +1 -1
  33. package/dist/types/tdf3/index.d.ts +4 -3
  34. package/dist/types/tdf3/index.d.ts.map +1 -1
  35. package/dist/web/src/crypto/ciphers.js +14 -0
  36. package/dist/web/src/{nanotdf-crypto → crypto}/decrypt.js +1 -1
  37. package/dist/web/src/crypto/digest.js +4 -0
  38. package/dist/web/src/{nanotdf-crypto → crypto}/ecdsaSignature.js +2 -2
  39. package/dist/web/src/{nanotdf-crypto → crypto}/encrypt.js +1 -1
  40. package/dist/web/src/{nanotdf-crypto → crypto}/enums.js +1 -1
  41. package/dist/web/src/crypto/exportCryptoKey.js +17 -0
  42. package/dist/web/src/crypto/generateKeyPair.js +10 -0
  43. package/dist/web/src/crypto/generateRandomNumber.js +9 -0
  44. package/dist/web/src/crypto/index.js +11 -0
  45. package/dist/web/src/{nanotdf-crypto → crypto}/keyAgreement.js +1 -1
  46. package/dist/web/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.js +1 -1
  47. package/dist/web/src/opentdf.js +8 -255
  48. package/dist/web/src/utils.js +2 -2
  49. package/dist/web/tdf3/index.js +4 -3
  50. package/dist/web/tdf3/src/models/key-access.js +4 -4
  51. package/dist/web/tdf3/src/tdf.js +4 -4
  52. package/package.json +1 -6
  53. package/src/{nanotdf-crypto → crypto}/ecdsaSignature.ts +1 -1
  54. package/src/opentdf.ts +6 -343
  55. package/src/utils.ts +1 -1
  56. package/tdf3/index.ts +2 -12
  57. package/tdf3/src/models/key-access.ts +3 -3
  58. package/tdf3/src/tdf.ts +3 -3
  59. package/dist/cjs/src/nanoclients.js +0 -292
  60. package/dist/cjs/src/nanoindex.js +0 -47
  61. package/dist/cjs/src/nanotdf/Client.js +0 -315
  62. package/dist/cjs/src/nanotdf/NanoTDF.js +0 -94
  63. package/dist/cjs/src/nanotdf/browser-entry.js +0 -19
  64. package/dist/cjs/src/nanotdf/constants.js +0 -5
  65. package/dist/cjs/src/nanotdf/decrypt.js +0 -17
  66. package/dist/cjs/src/nanotdf/encrypt-dataset.js +0 -38
  67. package/dist/cjs/src/nanotdf/encrypt.js +0 -132
  68. package/dist/cjs/src/nanotdf/enum/CipherEnum.js +0 -13
  69. package/dist/cjs/src/nanotdf/enum/CurveNameEnum.js +0 -15
  70. package/dist/cjs/src/nanotdf/enum/EncodingEnum.js +0 -8
  71. package/dist/cjs/src/nanotdf/enum/PolicyTypeEnum.js +0 -11
  72. package/dist/cjs/src/nanotdf/enum/ProtocolEnum.js +0 -10
  73. package/dist/cjs/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +0 -11
  74. package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +0 -28
  75. package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +0 -11
  76. package/dist/cjs/src/nanotdf/index.js +0 -25
  77. package/dist/cjs/src/nanotdf/interfaces/PolicyInterface.js +0 -3
  78. package/dist/cjs/src/nanotdf/models/Ciphers.js +0 -61
  79. package/dist/cjs/src/nanotdf/models/DefaultParams.js +0 -27
  80. package/dist/cjs/src/nanotdf/models/EcCurves.js +0 -39
  81. package/dist/cjs/src/nanotdf/models/Header.js +0 -255
  82. package/dist/cjs/src/nanotdf/models/Payload.js +0 -158
  83. package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +0 -73
  84. package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +0 -82
  85. package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +0 -38
  86. package/dist/cjs/src/nanotdf/models/Policy/RemotePolicy.js +0 -62
  87. package/dist/cjs/src/nanotdf/models/ResourceLocator.js +0 -211
  88. package/dist/cjs/src/nanotdf/models/Signature.js +0 -77
  89. package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +0 -20
  90. package/dist/cjs/src/tdf/NanoTDF/NanoTDF.js +0 -38
  91. package/dist/cjs/src/types/index.js +0 -3
  92. package/dist/types/src/nanoclients.d.ts +0 -106
  93. package/dist/types/src/nanoclients.d.ts.map +0 -1
  94. package/dist/types/src/nanoindex.d.ts +0 -5
  95. package/dist/types/src/nanoindex.d.ts.map +0 -1
  96. package/dist/types/src/nanotdf/Client.d.ts +0 -91
  97. package/dist/types/src/nanotdf/Client.d.ts.map +0 -1
  98. package/dist/types/src/nanotdf/NanoTDF.d.ts +0 -24
  99. package/dist/types/src/nanotdf/NanoTDF.d.ts.map +0 -1
  100. package/dist/types/src/nanotdf/browser-entry.d.ts +0 -17
  101. package/dist/types/src/nanotdf/browser-entry.d.ts.map +0 -1
  102. package/dist/types/src/nanotdf/constants.d.ts +0 -2
  103. package/dist/types/src/nanotdf/constants.d.ts.map +0 -1
  104. package/dist/types/src/nanotdf/decrypt.d.ts +0 -9
  105. package/dist/types/src/nanotdf/decrypt.d.ts.map +0 -1
  106. package/dist/types/src/nanotdf/encrypt-dataset.d.ts +0 -11
  107. package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +0 -1
  108. package/dist/types/src/nanotdf/encrypt.d.ts +0 -13
  109. package/dist/types/src/nanotdf/encrypt.d.ts.map +0 -1
  110. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +0 -10
  111. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +0 -1
  112. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts +0 -12
  113. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts.map +0 -1
  114. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts +0 -5
  115. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts.map +0 -1
  116. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +0 -8
  117. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +0 -1
  118. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts +0 -7
  119. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts.map +0 -1
  120. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts +0 -8
  121. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts.map +0 -1
  122. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts +0 -20
  123. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts.map +0 -1
  124. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +0 -8
  125. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +0 -1
  126. package/dist/types/src/nanotdf/index.d.ts +0 -9
  127. package/dist/types/src/nanotdf/index.d.ts.map +0 -1
  128. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts +0 -17
  129. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts.map +0 -1
  130. package/dist/types/src/nanotdf/models/Ciphers.d.ts +0 -14
  131. package/dist/types/src/nanotdf/models/Ciphers.d.ts.map +0 -1
  132. package/dist/types/src/nanotdf/models/DefaultParams.d.ts +0 -21
  133. package/dist/types/src/nanotdf/models/DefaultParams.d.ts.map +0 -1
  134. package/dist/types/src/nanotdf/models/EcCurves.d.ts +0 -15
  135. package/dist/types/src/nanotdf/models/EcCurves.d.ts.map +0 -1
  136. package/dist/types/src/nanotdf/models/Header.d.ts +0 -73
  137. package/dist/types/src/nanotdf/models/Header.d.ts.map +0 -1
  138. package/dist/types/src/nanotdf/models/Payload.d.ts +0 -47
  139. package/dist/types/src/nanotdf/models/Payload.d.ts.map +0 -1
  140. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts +0 -52
  141. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts.map +0 -1
  142. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts +0 -35
  143. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts.map +0 -1
  144. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts +0 -11
  145. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts.map +0 -1
  146. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts +0 -31
  147. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts.map +0 -1
  148. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts +0 -65
  149. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +0 -1
  150. package/dist/types/src/nanotdf/models/Signature.d.ts +0 -33
  151. package/dist/types/src/nanotdf/models/Signature.d.ts.map +0 -1
  152. package/dist/types/src/nanotdf-crypto/ciphers.d.ts.map +0 -1
  153. package/dist/types/src/nanotdf-crypto/decrypt.d.ts.map +0 -1
  154. package/dist/types/src/nanotdf-crypto/digest.d.ts.map +0 -1
  155. package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts.map +0 -1
  156. package/dist/types/src/nanotdf-crypto/encrypt.d.ts.map +0 -1
  157. package/dist/types/src/nanotdf-crypto/enums.d.ts.map +0 -1
  158. package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts.map +0 -1
  159. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +0 -1
  160. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +0 -1
  161. package/dist/types/src/nanotdf-crypto/index.d.ts.map +0 -1
  162. package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +0 -1
  163. package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +0 -1
  164. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +0 -99
  165. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +0 -1
  166. package/dist/types/src/types/index.d.ts +0 -45
  167. package/dist/types/src/types/index.d.ts.map +0 -1
  168. package/dist/web/src/nanoclients.js +0 -287
  169. package/dist/web/src/nanoindex.js +0 -5
  170. package/dist/web/src/nanotdf/Client.js +0 -310
  171. package/dist/web/src/nanotdf/NanoTDF.js +0 -89
  172. package/dist/web/src/nanotdf/browser-entry.js +0 -14
  173. package/dist/web/src/nanotdf/constants.js +0 -2
  174. package/dist/web/src/nanotdf/decrypt.js +0 -14
  175. package/dist/web/src/nanotdf/encrypt-dataset.js +0 -32
  176. package/dist/web/src/nanotdf/encrypt.js +0 -126
  177. package/dist/web/src/nanotdf/enum/CipherEnum.js +0 -11
  178. package/dist/web/src/nanotdf/enum/CurveNameEnum.js +0 -13
  179. package/dist/web/src/nanotdf/enum/EncodingEnum.js +0 -6
  180. package/dist/web/src/nanotdf/enum/PolicyTypeEnum.js +0 -9
  181. package/dist/web/src/nanotdf/enum/ProtocolEnum.js +0 -8
  182. package/dist/web/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +0 -9
  183. package/dist/web/src/nanotdf/helpers/calculateByCurve.js +0 -24
  184. package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +0 -8
  185. package/dist/web/src/nanotdf/index.js +0 -11
  186. package/dist/web/src/nanotdf/interfaces/PolicyInterface.js +0 -2
  187. package/dist/web/src/nanotdf/models/Ciphers.js +0 -54
  188. package/dist/web/src/nanotdf/models/DefaultParams.js +0 -22
  189. package/dist/web/src/nanotdf/models/EcCurves.js +0 -32
  190. package/dist/web/src/nanotdf/models/Header.js +0 -250
  191. package/dist/web/src/nanotdf/models/Payload.js +0 -156
  192. package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +0 -71
  193. package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +0 -77
  194. package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +0 -33
  195. package/dist/web/src/nanotdf/models/Policy/RemotePolicy.js +0 -57
  196. package/dist/web/src/nanotdf/models/ResourceLocator.js +0 -206
  197. package/dist/web/src/nanotdf/models/Signature.js +0 -74
  198. package/dist/web/src/nanotdf-crypto/ciphers.js +0 -14
  199. package/dist/web/src/nanotdf-crypto/digest.js +0 -4
  200. package/dist/web/src/nanotdf-crypto/exportCryptoKey.js +0 -17
  201. package/dist/web/src/nanotdf-crypto/generateKeyPair.js +0 -10
  202. package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +0 -9
  203. package/dist/web/src/nanotdf-crypto/index.js +0 -11
  204. package/dist/web/src/tdf/NanoTDF/NanoTDF.js +0 -35
  205. package/dist/web/src/types/index.js +0 -2
  206. package/src/nanoclients.ts +0 -406
  207. package/src/nanoindex.ts +0 -4
  208. package/src/nanotdf/Client.ts +0 -425
  209. package/src/nanotdf/NanoTDF.ts +0 -120
  210. package/src/nanotdf/browser-entry.ts +0 -20
  211. package/src/nanotdf/constants.ts +0 -1
  212. package/src/nanotdf/decrypt.ts +0 -19
  213. package/src/nanotdf/encrypt-dataset.ts +0 -51
  214. package/src/nanotdf/encrypt.ts +0 -196
  215. package/src/nanotdf/enum/CipherEnum.ts +0 -10
  216. package/src/nanotdf/enum/CurveNameEnum.ts +0 -12
  217. package/src/nanotdf/enum/EncodingEnum.ts +0 -5
  218. package/src/nanotdf/enum/PolicyTypeEnum.ts +0 -8
  219. package/src/nanotdf/enum/ProtocolEnum.ts +0 -7
  220. package/src/nanotdf/enum/ResourceLocatorIdentifierEnum.ts +0 -8
  221. package/src/nanotdf/helpers/calculateByCurve.ts +0 -26
  222. package/src/nanotdf/helpers/getHkdfSalt.ts +0 -13
  223. package/src/nanotdf/index.ts +0 -10
  224. package/src/nanotdf/interfaces/PolicyInterface.ts +0 -27
  225. package/src/nanotdf/models/Ciphers.ts +0 -67
  226. package/src/nanotdf/models/DefaultParams.ts +0 -24
  227. package/src/nanotdf/models/EcCurves.ts +0 -40
  228. package/src/nanotdf/models/Header.ts +0 -322
  229. package/src/nanotdf/models/Payload.ts +0 -196
  230. package/src/nanotdf/models/Policy/AbstractPolicy.ts +0 -90
  231. package/src/nanotdf/models/Policy/EmbeddedPolicy.ts +0 -101
  232. package/src/nanotdf/models/Policy/PolicyFactory.ts +0 -48
  233. package/src/nanotdf/models/Policy/RemotePolicy.ts +0 -74
  234. package/src/nanotdf/models/ResourceLocator.ts +0 -212
  235. package/src/nanotdf/models/Signature.ts +0 -85
  236. package/src/tdf/NanoTDF/NanoTDF.ts +0 -120
  237. package/src/types/index.ts +0 -55
  238. /package/dist/types/src/{nanotdf-crypto → crypto}/ciphers.d.ts +0 -0
  239. /package/dist/types/src/{nanotdf-crypto → crypto}/decrypt.d.ts +0 -0
  240. /package/dist/types/src/{nanotdf-crypto → crypto}/digest.d.ts +0 -0
  241. /package/dist/types/src/{nanotdf-crypto → crypto}/ecdsaSignature.d.ts +0 -0
  242. /package/dist/types/src/{nanotdf-crypto → crypto}/encrypt.d.ts +0 -0
  243. /package/dist/types/src/{nanotdf-crypto → crypto}/enums.d.ts +0 -0
  244. /package/dist/types/src/{nanotdf-crypto → crypto}/exportCryptoKey.d.ts +0 -0
  245. /package/dist/types/src/{nanotdf-crypto → crypto}/generateKeyPair.d.ts +0 -0
  246. /package/dist/types/src/{nanotdf-crypto → crypto}/generateRandomNumber.d.ts +0 -0
  247. /package/dist/types/src/{nanotdf-crypto → crypto}/index.d.ts +0 -0
  248. /package/dist/types/src/{nanotdf-crypto → crypto}/keyAgreement.d.ts +0 -0
  249. /package/dist/types/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.d.ts +0 -0
  250. /package/src/{nanotdf-crypto → crypto}/ciphers.ts +0 -0
  251. /package/src/{nanotdf-crypto → crypto}/decrypt.ts +0 -0
  252. /package/src/{nanotdf-crypto → crypto}/digest.ts +0 -0
  253. /package/src/{nanotdf-crypto → crypto}/encrypt.ts +0 -0
  254. /package/src/{nanotdf-crypto → crypto}/enums.ts +0 -0
  255. /package/src/{nanotdf-crypto → crypto}/exportCryptoKey.ts +0 -0
  256. /package/src/{nanotdf-crypto → crypto}/generateKeyPair.ts +0 -0
  257. /package/src/{nanotdf-crypto → crypto}/generateRandomNumber.ts +0 -0
  258. /package/src/{nanotdf-crypto → crypto}/index.ts +0 -0
  259. /package/src/{nanotdf-crypto → crypto}/keyAgreement.ts +0 -0
  260. /package/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.ts +0 -0
@@ -1,35 +0,0 @@
1
- var CipherType;
2
- (function (CipherType) {
3
- CipherType[CipherType["Aes256Gcm64"] = 0] = "Aes256Gcm64";
4
- CipherType[CipherType["Aes256Gcm96"] = 1] = "Aes256Gcm96";
5
- CipherType[CipherType["Aes256Gcm104"] = 2] = "Aes256Gcm104";
6
- CipherType[CipherType["Aes256Gcm112"] = 3] = "Aes256Gcm112";
7
- CipherType[CipherType["Aes256Gcm120"] = 4] = "Aes256Gcm120";
8
- CipherType[CipherType["Aes256Gcm128"] = 5] = "Aes256Gcm128";
9
- })(CipherType || (CipherType = {}));
10
- /**
11
- * The Signature ECC Mode is used to determine the length of the signature at the end of a nanotdf. This, in
12
- * combination with the previous HAS_SIGNATURE section, describe the signature of the nanotdf. The following table
13
- * describes the valid values and the associated ECC Params.
14
- */
15
- var CurveName;
16
- (function (CurveName) {
17
- CurveName[CurveName["Secp256R1"] = 0] = "Secp256R1";
18
- CurveName[CurveName["Secp384R1"] = 1] = "Secp384R1";
19
- CurveName[CurveName["Secp521R1"] = 2] = "Secp521R1";
20
- })(CurveName || (CurveName = {}));
21
- export var ResourceLocatorProtocol;
22
- (function (ResourceLocatorProtocol) {
23
- ResourceLocatorProtocol[ResourceLocatorProtocol["Http"] = 0] = "Http";
24
- ResourceLocatorProtocol[ResourceLocatorProtocol["Https"] = 1] = "Https";
25
- ResourceLocatorProtocol[ResourceLocatorProtocol["Unreserverd"] = 2] = "Unreserverd";
26
- ResourceLocatorProtocol[ResourceLocatorProtocol["SharedResourceDirectory"] = 255] = "SharedResourceDirectory";
27
- })(ResourceLocatorProtocol || (ResourceLocatorProtocol = {}));
28
- export var PolicyType;
29
- (function (PolicyType) {
30
- PolicyType[PolicyType["Remote"] = 0] = "Remote";
31
- PolicyType[PolicyType["EmbeddedText"] = 1] = "EmbeddedText";
32
- PolicyType[PolicyType["EmbeddedEncrypted"] = 2] = "EmbeddedEncrypted";
33
- PolicyType[PolicyType["EmbeddedEncryptedPKA"] = 3] = "EmbeddedEncryptedPKA";
34
- })(PolicyType || (PolicyType = {}));
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFub1RERi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90ZGYvTmFub1RERi9OYW5vVERGLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUssVUFPSjtBQVBELFdBQUssVUFBVTtJQUNiLHlEQUFXLENBQUE7SUFDWCx5REFBVyxDQUFBO0lBQ1gsMkRBQVksQ0FBQTtJQUNaLDJEQUFZLENBQUE7SUFDWiwyREFBWSxDQUFBO0lBQ1osMkRBQVksQ0FBQTtBQUNkLENBQUMsRUFQSSxVQUFVLEtBQVYsVUFBVSxRQU9kO0FBRUQ7Ozs7R0FJRztBQUNILElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNaLG1EQUFTLENBQUE7SUFDVCxtREFBUyxDQUFBO0lBQ1QsbURBQVMsQ0FBQTtBQUNYLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBRUQsTUFBTSxDQUFOLElBQVksdUJBS1g7QUFMRCxXQUFZLHVCQUF1QjtJQUNqQyxxRUFBSSxDQUFBO0lBQ0osdUVBQUssQ0FBQTtJQUNMLG1GQUFXLENBQUE7SUFDWCw2R0FBOEIsQ0FBQTtBQUNoQyxDQUFDLEVBTFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUtsQztBQUVELE1BQU0sQ0FBTixJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDcEIsK0NBQU0sQ0FBQTtJQUNOLDJEQUFZLENBQUE7SUFDWixxRUFBaUIsQ0FBQTtJQUNqQiwyRUFBb0IsQ0FBQTtBQUN0QixDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckIifQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,406 +0,0 @@
1
- import {
2
- Client,
3
- NanoTDF,
4
- Header,
5
- encrypt,
6
- decrypt,
7
- encryptDataset,
8
- getHkdfSalt,
9
- DefaultParams,
10
- } from './nanotdf/index.js';
11
- import { keyAgreement } from './nanotdf-crypto/index.js';
12
- import { PolicyBuilder } from './tdf/Policy.js';
13
- import { fetchECKasPubKey } from './access.js';
14
- import { type ClientConfig } from './nanotdf/Client.js';
15
- import { ConfigurationError } from './errors.js';
16
- import { type AttributeObject } from '../tdf3/src/models/attribute.js';
17
-
18
- // Define the EncryptOptions type
19
- export type EncryptOptions = {
20
- ecdsaBinding: boolean;
21
- };
22
-
23
- // Define default options
24
- const defaultOptions: EncryptOptions = {
25
- ecdsaBinding: false,
26
- };
27
-
28
- /**
29
- * NanoTDF SDK Client. Deprecated in favor of OpenTDF.
30
- *
31
- */
32
- export class NanoTDFClient extends Client {
33
- /**
34
- * Decrypt ciphertext
35
- *
36
- * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
37
- *
38
- * @param ciphertext Ciphertext to decrypt
39
- */
40
- async decrypt(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer> {
41
- // Parse ciphertext
42
- const nanotdf = NanoTDF.from(ciphertext);
43
-
44
- // TODO: The version number should be fetched from the API
45
- const version = '0.0.1';
46
- const kasUrl = nanotdf.header.getKasRewrapUrl();
47
-
48
- // Rewrap key on every request
49
- const { unwrappedKey: ukey } = await this.rewrapKey(
50
- nanotdf.header.toBuffer(),
51
- kasUrl,
52
- nanotdf.header.magicNumberVersion,
53
- version
54
- );
55
-
56
- if (!ukey) {
57
- throw new Error('internal: key rewrap failure');
58
- }
59
- // Return decrypt promise
60
- return decrypt(ukey, nanotdf);
61
- }
62
-
63
- /**
64
- * Decrypt ciphertext of the legacy TDF, with the older, smaller i.v. calculation.
65
- *
66
- * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
67
- *
68
- * @param ciphertext Ciphertext to decrypt
69
- */
70
- async decryptLegacyTDF(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer> {
71
- // Parse ciphertext
72
- const nanotdf = NanoTDF.from(ciphertext, undefined, true);
73
-
74
- const legacyVersion = '0.0.0';
75
- // Rewrap key on every request
76
- const { unwrappedKey: key } = await this.rewrapKey(
77
- nanotdf.header.toBuffer(),
78
- nanotdf.header.getKasRewrapUrl(),
79
- nanotdf.header.magicNumberVersion,
80
- legacyVersion
81
- );
82
-
83
- if (!key) {
84
- throw new Error('internal: failed unwrap');
85
- }
86
- // Return decrypt promise
87
- return decrypt(key, nanotdf);
88
- }
89
-
90
- /**
91
- * Encrypts the given data using the NanoTDF encryption scheme.
92
- *
93
- * @param data The data to be encrypted.
94
- * @param options The encryption options (currently unused).
95
- * @returns A promise that resolves to the encrypted data as an ArrayBuffer.
96
- * @throws If the initialization vector is not a number.
97
- */
98
- async encrypt(data: string | ArrayBufferLike, options?: EncryptOptions): Promise<ArrayBuffer> {
99
- // For encrypt always generate the client ephemeralKeyPair
100
- const ephemeralKeyPair = await this.ephemeralKeyPair;
101
- const initializationVector = this.iv;
102
-
103
- if (typeof initializationVector !== 'number') {
104
- throw new ConfigurationError(
105
- 'NanoTDF clients are single use. Please generate a new client and keypair.'
106
- );
107
- }
108
- delete this.iv;
109
-
110
- if (!this.kasPubKey) {
111
- this.kasPubKey = await fetchECKasPubKey(this.kasUrl);
112
- }
113
-
114
- // Create a policy for the tdf
115
- const policy = new PolicyBuilder();
116
-
117
- // Add data attributes.
118
- for (const dataAttribute of this.dataAttributes) {
119
- const attribute: AttributeObject = {
120
- attribute: dataAttribute,
121
- pubKey: this.kasPubKey.publicKey,
122
- kasUrl: this.kasUrl,
123
- };
124
- policy.addAttribute(attribute);
125
- }
126
-
127
- if (this.dissems.length == 0 && this.dataAttributes.length == 0) {
128
- console.warn(
129
- '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.'
130
- );
131
- }
132
-
133
- // Encrypt the policy.
134
- const policyObjectAsStr = policy.toJSON();
135
-
136
- // IV is always '1', since the new keypair is generated on encrypt
137
- // using the same key is fine.
138
- const lengthAsUint32 = new Uint32Array(1);
139
- lengthAsUint32[0] = initializationVector;
140
-
141
- const lengthAsUint24 = new Uint8Array(lengthAsUint32.buffer);
142
-
143
- // NOTE: We are only interested in only first 3 bytes.
144
- const payloadIV = new Uint8Array(12).fill(0);
145
- payloadIV[9] = lengthAsUint24[2];
146
- payloadIV[10] = lengthAsUint24[1];
147
- payloadIV[11] = lengthAsUint24[0];
148
-
149
- const mergedOptions: EncryptOptions = { ...defaultOptions, ...options };
150
- return encrypt(
151
- policyObjectAsStr,
152
- this.kasPubKey,
153
- ephemeralKeyPair,
154
- payloadIV,
155
- data,
156
- mergedOptions.ecdsaBinding
157
- );
158
- }
159
- }
160
-
161
- export type DatasetConfig = ClientConfig & {
162
- maxKeyIterations?: number;
163
- };
164
-
165
- /**
166
- * NanoTDF Dataset SDK Client
167
- *
168
- *
169
- * @example
170
- * ```
171
- * import { clientSecretAuthProvider, NanoTDFDatasetClient } from '@opentdf/sdk';
172
- *
173
- * const OIDC_ENDPOINT = 'http://localhost:65432/auth/realms/opentdf';
174
- * const KAS_URL = 'http://localhost:65432/api/kas/';
175
- *
176
- * const ciphertext = '...';
177
- * const client = new NanoTDFDatasetClient({
178
- * authProvider: await clientSecretAuthProvider({
179
- * clientId: 'tdf-client',
180
- * clientSecret: '123-456',
181
- * exchange: 'client',
182
- * oidcOrigin: OIDC_ENDPOINT,
183
- * }),
184
- * kasEndpoint: KAS_URL,
185
- * });
186
- * const plaintext = client.decrypt(ciphertext);
187
- * console.log('Plaintext', plaintext);
188
- * ```
189
- */
190
- export class NanoTDFDatasetClient extends Client {
191
- // Total unique IVs(2^24 -1) used for encrypting the nano tdf payloads
192
- // IV starts from 1 since the 0 IV is reserved for policy encryption
193
- static readonly NTDF_MAX_KEY_ITERATIONS = 8388606;
194
-
195
- private maxKeyIteration: number;
196
- private keyIterationCount: number;
197
- private cachedEphemeralKey?: Uint8Array;
198
- private unwrappedKey?: CryptoKey;
199
- private symmetricKey?: CryptoKey;
200
- private cachedHeader?: Header;
201
- private ecdsaBinding: boolean;
202
-
203
- /**
204
- * Create new NanoTDF Dataset Client
205
- *
206
- * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
207
- * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
208
- * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
209
- *
210
- * @param clientConfig OIDC client credentials
211
- * @param kasUrl Key access service URL
212
- * @param ephemeralKeyPair (optional) ephemeral key pair to use
213
- * @param maxKeyIterations Max iteration to performe without a key rotation
214
- */
215
- constructor(opts: DatasetConfig) {
216
- if (
217
- opts.maxKeyIterations &&
218
- opts.maxKeyIterations > NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS
219
- ) {
220
- throw new ConfigurationError(
221
- `key iteration exceeds max iterations(${NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS})`
222
- );
223
- }
224
- super(opts);
225
-
226
- this.maxKeyIteration = opts.maxKeyIterations || NanoTDFDatasetClient.NTDF_MAX_KEY_ITERATIONS;
227
- this.keyIterationCount = 0;
228
- }
229
-
230
- /**
231
- * Encrypt data
232
- *
233
- * Pass a string, TypedArray, or ArrayBuffer data and get a promise which resolves ciphertext
234
- *
235
- * @param data to decrypt
236
- */
237
- async encrypt(data: string | ArrayBufferLike, options?: EncryptOptions): Promise<ArrayBuffer> {
238
- // Intial encrypt
239
- if (this.keyIterationCount == 0) {
240
- const mergedOptions: EncryptOptions = { ...defaultOptions, ...options };
241
- this.ecdsaBinding = mergedOptions.ecdsaBinding;
242
- // For encrypt always generate the client ephemeralKeyPair
243
- const ephemeralKeyPair = await this.ephemeralKeyPair;
244
-
245
- if (!this.kasPubKey) {
246
- this.kasPubKey = await fetchECKasPubKey(this.kasUrl);
247
- }
248
-
249
- // Create a policy for the tdf
250
- const policy = new PolicyBuilder();
251
-
252
- // Add data attributes.
253
- for (const dataAttribute of this.dataAttributes) {
254
- const attribute = {
255
- attribute: dataAttribute,
256
- kasPubKey: this.kasPubKey.publicKey,
257
- kasUrl: this.kasUrl,
258
- };
259
- policy.addAttribute(attribute);
260
- }
261
-
262
- if (this.dissems.length == 0 || this.dataAttributes.length == 0) {
263
- console.warn(
264
- '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.'
265
- );
266
- }
267
-
268
- // Encrypt the policy.
269
- const policyObjectAsStr = policy.toJSON();
270
-
271
- const ivVector = this.generateIV();
272
-
273
- // Generate a symmetric key.
274
- this.symmetricKey = await keyAgreement(
275
- ephemeralKeyPair.privateKey,
276
- await this.kasPubKey.key,
277
- await getHkdfSalt(DefaultParams.magicNumberVersion)
278
- );
279
-
280
- const nanoTDFBuffer = await encrypt(
281
- policyObjectAsStr,
282
- this.kasPubKey,
283
- ephemeralKeyPair,
284
- ivVector,
285
- data,
286
- this.ecdsaBinding
287
- );
288
-
289
- // Cache the header and increment the key iteration
290
- if (!this.cachedHeader) {
291
- const nanoTDF = NanoTDF.from(nanoTDFBuffer);
292
- this.cachedHeader = nanoTDF.header;
293
- }
294
-
295
- this.keyIterationCount += 1;
296
-
297
- return nanoTDFBuffer;
298
- }
299
-
300
- this.keyIterationCount += 1;
301
-
302
- if (!this.cachedHeader) {
303
- throw new ConfigurationError('invalid dataset client: empty nanoTDF header');
304
- }
305
- if (!this.symmetricKey) {
306
- throw new ConfigurationError('invalid dataset client: empty dek');
307
- }
308
-
309
- this.keyIterationCount += 1;
310
- if (this.keyIterationCount == this.maxKeyIteration) {
311
- // reset the key iteration
312
- this.keyIterationCount = 0;
313
- }
314
-
315
- const ivVector = this.generateIV();
316
-
317
- return encryptDataset(this.symmetricKey, this.cachedHeader, ivVector, data);
318
- }
319
-
320
- /**
321
- * Decrypt ciphertext
322
- *
323
- * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
324
- *
325
- * @param ciphertext Ciphertext to decrypt
326
- */
327
- async decrypt(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer> {
328
- // Parse ciphertext
329
- const nanotdf = NanoTDF.from(ciphertext);
330
-
331
- if (!this.cachedEphemeralKey) {
332
- // First decrypt
333
- return this.rewrapAndDecrypt(nanotdf);
334
- }
335
-
336
- // Other encrypts
337
- if (this.cachedEphemeralKey.toString() == nanotdf.header.ephemeralPublicKey.toString()) {
338
- const ukey = this.unwrappedKey;
339
- if (!ukey) {
340
- // These should have thrown already.
341
- throw new Error('internal: key rewrap failure');
342
- }
343
- // Return decrypt promise
344
- return decrypt(ukey, nanotdf);
345
- } else {
346
- return this.rewrapAndDecrypt(nanotdf);
347
- }
348
- }
349
-
350
- async rewrapAndDecrypt(nanotdf: NanoTDF) {
351
- // TODO: The version number should be fetched from the API
352
- const version = '0.0.1';
353
- // Rewrap key on every request
354
- const { unwrappedKey: ukey } = await this.rewrapKey(
355
- nanotdf.header.toBuffer(),
356
- nanotdf.header.getKasRewrapUrl(),
357
- nanotdf.header.magicNumberVersion,
358
- version
359
- );
360
- if (!ukey) {
361
- // These should have thrown already.
362
- throw new Error('internal: key rewrap failure');
363
- }
364
-
365
- this.cachedEphemeralKey = nanotdf.header.ephemeralPublicKey;
366
- this.unwrappedKey = ukey;
367
-
368
- // Return decrypt promise
369
- return decrypt(ukey, nanotdf);
370
- }
371
-
372
- generateIV(): Uint8Array {
373
- const iv = this.iv;
374
- if (iv === undefined) {
375
- // iv has passed the maximum iteration count for this dek
376
- throw new ConfigurationError('dataset full');
377
- }
378
- // assert iv ∈ ℤ ∩ (0, 2^24)
379
- if (!Number.isInteger(iv) || iv <= 0 || 0xff_ffff < iv) {
380
- // Something has fiddled with the iv outside of the expected behavior
381
- // could indicate a race condition, e.g. if two workers or handlers are
382
- // processing the file at once, for example.
383
- throw new Error('internal: invalid state');
384
- }
385
-
386
- const lengthAsUint32 = new Uint32Array(1);
387
- lengthAsUint32[0] = iv;
388
-
389
- const lengthAsUint24 = new Uint8Array(lengthAsUint32.buffer);
390
-
391
- // NOTE: We are only interested in only first 3 bytes.
392
- const ivVector = new Uint8Array(Client.IV_SIZE).fill(0);
393
- ivVector[9] = lengthAsUint24[2];
394
- ivVector[10] = lengthAsUint24[1];
395
- ivVector[11] = lengthAsUint24[0];
396
-
397
- // Increment the IV
398
- if (iv == 0xff_ffff) {
399
- delete this.iv;
400
- } else {
401
- this.iv = iv + 1;
402
- }
403
-
404
- return ivVector;
405
- }
406
- }
package/src/nanoindex.ts DELETED
@@ -1,4 +0,0 @@
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';