@opentdf/sdk 0.1.0-beta.1701

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 (566) hide show
  1. package/README.md +52 -0
  2. package/dist/cjs/package.json +3 -0
  3. package/dist/cjs/src/access.js +155 -0
  4. package/dist/cjs/src/auth/Eas.js +60 -0
  5. package/dist/cjs/src/auth/auth.js +79 -0
  6. package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +26 -0
  7. package/dist/cjs/src/auth/oidc-externaljwt-provider.js +33 -0
  8. package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +34 -0
  9. package/dist/cjs/src/auth/oidc.js +222 -0
  10. package/dist/cjs/src/auth/providers.js +143 -0
  11. package/dist/cjs/src/encodings/base64.js +154 -0
  12. package/dist/cjs/src/encodings/hex.js +70 -0
  13. package/dist/cjs/src/encodings/index.js +29 -0
  14. package/dist/cjs/src/errors.js +138 -0
  15. package/dist/cjs/src/index.js +344 -0
  16. package/dist/cjs/src/nanotdf/Client.js +296 -0
  17. package/dist/cjs/src/nanotdf/NanoTDF.js +94 -0
  18. package/dist/cjs/src/nanotdf/browser-entry.js +19 -0
  19. package/dist/cjs/src/nanotdf/constants.js +5 -0
  20. package/dist/cjs/src/nanotdf/decrypt.js +17 -0
  21. package/dist/cjs/src/nanotdf/encrypt-dataset.js +38 -0
  22. package/dist/cjs/src/nanotdf/encrypt.js +132 -0
  23. package/dist/cjs/src/nanotdf/enum/CipherEnum.js +13 -0
  24. package/dist/cjs/src/nanotdf/enum/CurveNameEnum.js +15 -0
  25. package/dist/cjs/src/nanotdf/enum/EncodingEnum.js +8 -0
  26. package/dist/cjs/src/nanotdf/enum/PolicyTypeEnum.js +11 -0
  27. package/dist/cjs/src/nanotdf/enum/ProtocolEnum.js +10 -0
  28. package/dist/cjs/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +11 -0
  29. package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +29 -0
  30. package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +11 -0
  31. package/dist/cjs/src/nanotdf/index.js +25 -0
  32. package/dist/cjs/src/nanotdf/interfaces/PolicyInterface.js +3 -0
  33. package/dist/cjs/src/nanotdf/models/Ciphers.js +61 -0
  34. package/dist/cjs/src/nanotdf/models/DefaultParams.js +27 -0
  35. package/dist/cjs/src/nanotdf/models/EcCurves.js +39 -0
  36. package/dist/cjs/src/nanotdf/models/Header.js +255 -0
  37. package/dist/cjs/src/nanotdf/models/Payload.js +158 -0
  38. package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +73 -0
  39. package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +82 -0
  40. package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +38 -0
  41. package/dist/cjs/src/nanotdf/models/Policy/RemotePolicy.js +62 -0
  42. package/dist/cjs/src/nanotdf/models/ResourceLocator.js +211 -0
  43. package/dist/cjs/src/nanotdf/models/Signature.js +77 -0
  44. package/dist/cjs/src/nanotdf-crypto/ciphers.js +17 -0
  45. package/dist/cjs/src/nanotdf-crypto/decrypt.js +24 -0
  46. package/dist/cjs/src/nanotdf-crypto/digest.js +7 -0
  47. package/dist/cjs/src/nanotdf-crypto/ecdsaSignature.js +83 -0
  48. package/dist/cjs/src/nanotdf-crypto/encrypt.js +24 -0
  49. package/dist/cjs/src/nanotdf-crypto/enums.js +52 -0
  50. package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +20 -0
  51. package/dist/cjs/src/nanotdf-crypto/generateKeyPair.js +13 -0
  52. package/dist/cjs/src/nanotdf-crypto/generateRandomNumber.js +12 -0
  53. package/dist/cjs/src/nanotdf-crypto/importRawKey.js +18 -0
  54. package/dist/cjs/src/nanotdf-crypto/index.js +52 -0
  55. package/dist/cjs/src/nanotdf-crypto/keyAgreement.js +91 -0
  56. package/dist/cjs/src/nanotdf-crypto/pemPublicToCrypto.js +225 -0
  57. package/dist/cjs/src/policy/api.js +58 -0
  58. package/dist/cjs/src/policy/attributes.js +3 -0
  59. package/dist/cjs/src/policy/granter.js +146 -0
  60. package/dist/cjs/src/tdf/AttributeObject.js +15 -0
  61. package/dist/cjs/src/tdf/AttributeObjectJwt.js +3 -0
  62. package/dist/cjs/src/tdf/Crypto.js +47 -0
  63. package/dist/cjs/src/tdf/EntityObject.js +3 -0
  64. package/dist/cjs/src/tdf/NanoTDF/NanoTDF.js +38 -0
  65. package/dist/cjs/src/tdf/Policy.js +50 -0
  66. package/dist/cjs/src/tdf/PolicyObject.js +3 -0
  67. package/dist/cjs/src/tdf/TypedArray.js +3 -0
  68. package/dist/cjs/src/tdf/index.js +35 -0
  69. package/dist/cjs/src/types/index.js +3 -0
  70. package/dist/cjs/src/utils.js +147 -0
  71. package/dist/cjs/src/version.js +12 -0
  72. package/dist/cjs/tdf3/index.js +57 -0
  73. package/dist/cjs/tdf3/src/assertions.js +118 -0
  74. package/dist/cjs/tdf3/src/binary.js +153 -0
  75. package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +56 -0
  76. package/dist/cjs/tdf3/src/ciphers/algorithms.js +8 -0
  77. package/dist/cjs/tdf3/src/ciphers/index.js +8 -0
  78. package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +22 -0
  79. package/dist/cjs/tdf3/src/client/DecoratedReadableStream.js +116 -0
  80. package/dist/cjs/tdf3/src/client/builders.js +561 -0
  81. package/dist/cjs/tdf3/src/client/index.js +460 -0
  82. package/dist/cjs/tdf3/src/client/validation.js +63 -0
  83. package/dist/cjs/tdf3/src/crypto/crypto-utils.js +116 -0
  84. package/dist/cjs/tdf3/src/crypto/declarations.js +8 -0
  85. package/dist/cjs/tdf3/src/crypto/index.js +315 -0
  86. package/dist/cjs/tdf3/src/index.js +34 -0
  87. package/dist/cjs/tdf3/src/models/attribute-set.js +122 -0
  88. package/dist/cjs/tdf3/src/models/encryption-information.js +90 -0
  89. package/dist/cjs/tdf3/src/models/index.js +25 -0
  90. package/dist/cjs/tdf3/src/models/key-access.js +103 -0
  91. package/dist/cjs/tdf3/src/models/manifest.js +3 -0
  92. package/dist/cjs/tdf3/src/models/payload.js +3 -0
  93. package/dist/cjs/tdf3/src/models/policy.js +24 -0
  94. package/dist/cjs/tdf3/src/models/upsert-response.js +3 -0
  95. package/dist/cjs/tdf3/src/tdf.js +907 -0
  96. package/dist/cjs/tdf3/src/templates/default.html.js +98 -0
  97. package/dist/cjs/tdf3/src/templates/escaper.js +15 -0
  98. package/dist/cjs/tdf3/src/templates/index.js +12 -0
  99. package/dist/cjs/tdf3/src/utils/buffer-crc32.js +48 -0
  100. package/dist/cjs/tdf3/src/utils/chunkers.js +106 -0
  101. package/dist/cjs/tdf3/src/utils/index.js +296 -0
  102. package/dist/cjs/tdf3/src/utils/keysplit.js +61 -0
  103. package/dist/cjs/tdf3/src/utils/zip-reader.js +253 -0
  104. package/dist/cjs/tdf3/src/utils/zip-writer.js +308 -0
  105. package/dist/cjs/tdf3/src/version.js +6 -0
  106. package/dist/types/src/access.d.ts +47 -0
  107. package/dist/types/src/access.d.ts.map +1 -0
  108. package/dist/types/src/auth/Eas.d.ts +34 -0
  109. package/dist/types/src/auth/Eas.d.ts.map +1 -0
  110. package/dist/types/src/auth/auth.d.ts +86 -0
  111. package/dist/types/src/auth/auth.d.ts.map +1 -0
  112. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +9 -0
  113. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -0
  114. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +10 -0
  115. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -0
  116. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +10 -0
  117. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -0
  118. package/dist/types/src/auth/oidc.d.ts +104 -0
  119. package/dist/types/src/auth/oidc.d.ts.map +1 -0
  120. package/dist/types/src/auth/providers.d.ts +67 -0
  121. package/dist/types/src/auth/providers.d.ts.map +1 -0
  122. package/dist/types/src/encodings/base64.d.ts +18 -0
  123. package/dist/types/src/encodings/base64.d.ts.map +1 -0
  124. package/dist/types/src/encodings/hex.d.ts +5 -0
  125. package/dist/types/src/encodings/hex.d.ts.map +1 -0
  126. package/dist/types/src/encodings/index.d.ts +3 -0
  127. package/dist/types/src/encodings/index.d.ts.map +1 -0
  128. package/dist/types/src/errors.d.ts +72 -0
  129. package/dist/types/src/errors.d.ts.map +1 -0
  130. package/dist/types/src/index.d.ts +138 -0
  131. package/dist/types/src/index.d.ts.map +1 -0
  132. package/dist/types/src/nanotdf/Client.d.ts +95 -0
  133. package/dist/types/src/nanotdf/Client.d.ts.map +1 -0
  134. package/dist/types/src/nanotdf/NanoTDF.d.ts +25 -0
  135. package/dist/types/src/nanotdf/NanoTDF.d.ts.map +1 -0
  136. package/dist/types/src/nanotdf/browser-entry.d.ts +17 -0
  137. package/dist/types/src/nanotdf/browser-entry.d.ts.map +1 -0
  138. package/dist/types/src/nanotdf/constants.d.ts +2 -0
  139. package/dist/types/src/nanotdf/constants.d.ts.map +1 -0
  140. package/dist/types/src/nanotdf/decrypt.d.ts +9 -0
  141. package/dist/types/src/nanotdf/decrypt.d.ts.map +1 -0
  142. package/dist/types/src/nanotdf/encrypt-dataset.d.ts +12 -0
  143. package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +1 -0
  144. package/dist/types/src/nanotdf/encrypt.d.ts +14 -0
  145. package/dist/types/src/nanotdf/encrypt.d.ts.map +1 -0
  146. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +10 -0
  147. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +1 -0
  148. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts +12 -0
  149. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts.map +1 -0
  150. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts +5 -0
  151. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts.map +1 -0
  152. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +8 -0
  153. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +1 -0
  154. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts +7 -0
  155. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts.map +1 -0
  156. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts +8 -0
  157. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts.map +1 -0
  158. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts +20 -0
  159. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts.map +1 -0
  160. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +9 -0
  161. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +1 -0
  162. package/dist/types/src/nanotdf/index.d.ts +9 -0
  163. package/dist/types/src/nanotdf/index.d.ts.map +1 -0
  164. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts +17 -0
  165. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts.map +1 -0
  166. package/dist/types/src/nanotdf/models/Ciphers.d.ts +14 -0
  167. package/dist/types/src/nanotdf/models/Ciphers.d.ts.map +1 -0
  168. package/dist/types/src/nanotdf/models/DefaultParams.d.ts +21 -0
  169. package/dist/types/src/nanotdf/models/DefaultParams.d.ts.map +1 -0
  170. package/dist/types/src/nanotdf/models/EcCurves.d.ts +15 -0
  171. package/dist/types/src/nanotdf/models/EcCurves.d.ts.map +1 -0
  172. package/dist/types/src/nanotdf/models/Header.d.ts +73 -0
  173. package/dist/types/src/nanotdf/models/Header.d.ts.map +1 -0
  174. package/dist/types/src/nanotdf/models/Payload.d.ts +47 -0
  175. package/dist/types/src/nanotdf/models/Payload.d.ts.map +1 -0
  176. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts +52 -0
  177. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts.map +1 -0
  178. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts +35 -0
  179. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts.map +1 -0
  180. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts +11 -0
  181. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts.map +1 -0
  182. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts +31 -0
  183. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts.map +1 -0
  184. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts +65 -0
  185. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +1 -0
  186. package/dist/types/src/nanotdf/models/Signature.d.ts +33 -0
  187. package/dist/types/src/nanotdf/models/Signature.d.ts.map +1 -0
  188. package/dist/types/src/nanotdf-crypto/ciphers.d.ts +8 -0
  189. package/dist/types/src/nanotdf-crypto/ciphers.d.ts.map +1 -0
  190. package/dist/types/src/nanotdf-crypto/decrypt.d.ts +14 -0
  191. package/dist/types/src/nanotdf-crypto/decrypt.d.ts.map +1 -0
  192. package/dist/types/src/nanotdf-crypto/digest.d.ts +3 -0
  193. package/dist/types/src/nanotdf-crypto/digest.d.ts.map +1 -0
  194. package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts +35 -0
  195. package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts.map +1 -0
  196. package/dist/types/src/nanotdf-crypto/encrypt.d.ts +14 -0
  197. package/dist/types/src/nanotdf-crypto/encrypt.d.ts.map +1 -0
  198. package/dist/types/src/nanotdf-crypto/enums.d.ts +42 -0
  199. package/dist/types/src/nanotdf-crypto/enums.d.ts.map +1 -0
  200. package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts +7 -0
  201. package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts.map +1 -0
  202. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts +10 -0
  203. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +1 -0
  204. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts +5 -0
  205. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +1 -0
  206. package/dist/types/src/nanotdf-crypto/importRawKey.d.ts +13 -0
  207. package/dist/types/src/nanotdf-crypto/importRawKey.d.ts.map +1 -0
  208. package/dist/types/src/nanotdf-crypto/index.d.ts +12 -0
  209. package/dist/types/src/nanotdf-crypto/index.d.ts.map +1 -0
  210. package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts +28 -0
  211. package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +1 -0
  212. package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts +28 -0
  213. package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +1 -0
  214. package/dist/types/src/policy/api.d.ts +4 -0
  215. package/dist/types/src/policy/api.d.ts.map +1 -0
  216. package/dist/types/src/policy/attributes.d.ts +95 -0
  217. package/dist/types/src/policy/attributes.d.ts.map +1 -0
  218. package/dist/types/src/policy/granter.d.ts +23 -0
  219. package/dist/types/src/policy/granter.d.ts.map +1 -0
  220. package/dist/types/src/tdf/AttributeObject.d.ts +13 -0
  221. package/dist/types/src/tdf/AttributeObject.d.ts.map +1 -0
  222. package/dist/types/src/tdf/AttributeObjectJwt.d.ts +4 -0
  223. package/dist/types/src/tdf/AttributeObjectJwt.d.ts.map +1 -0
  224. package/dist/types/src/tdf/Crypto.d.ts +37 -0
  225. package/dist/types/src/tdf/Crypto.d.ts.map +1 -0
  226. package/dist/types/src/tdf/EntityObject.d.ts +18 -0
  227. package/dist/types/src/tdf/EntityObject.d.ts.map +1 -0
  228. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +99 -0
  229. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +1 -0
  230. package/dist/types/src/tdf/Policy.d.ts +28 -0
  231. package/dist/types/src/tdf/Policy.d.ts.map +1 -0
  232. package/dist/types/src/tdf/PolicyObject.d.ts +11 -0
  233. package/dist/types/src/tdf/PolicyObject.d.ts.map +1 -0
  234. package/dist/types/src/tdf/TypedArray.d.ts +3 -0
  235. package/dist/types/src/tdf/TypedArray.d.ts.map +1 -0
  236. package/dist/types/src/tdf/index.d.ts +7 -0
  237. package/dist/types/src/tdf/index.d.ts.map +1 -0
  238. package/dist/types/src/types/index.d.ts +45 -0
  239. package/dist/types/src/types/index.d.ts.map +1 -0
  240. package/dist/types/src/utils.d.ts +45 -0
  241. package/dist/types/src/utils.d.ts.map +1 -0
  242. package/dist/types/src/version.d.ts +9 -0
  243. package/dist/types/src/version.d.ts.map +1 -0
  244. package/dist/types/tdf3/index.d.ts +16 -0
  245. package/dist/types/tdf3/index.d.ts.map +1 -0
  246. package/dist/types/tdf3/src/assertions.d.ts +63 -0
  247. package/dist/types/tdf3/src/assertions.d.ts.map +1 -0
  248. package/dist/types/tdf3/src/binary.d.ts +38 -0
  249. package/dist/types/tdf3/src/binary.d.ts.map +1 -0
  250. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts +18 -0
  251. package/dist/types/tdf3/src/ciphers/aes-gcm-cipher.d.ts.map +1 -0
  252. package/dist/types/tdf3/src/ciphers/algorithms.d.ts +4 -0
  253. package/dist/types/tdf3/src/ciphers/algorithms.d.ts.map +1 -0
  254. package/dist/types/tdf3/src/ciphers/index.d.ts +3 -0
  255. package/dist/types/tdf3/src/ciphers/index.d.ts.map +1 -0
  256. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts +14 -0
  257. package/dist/types/tdf3/src/ciphers/symmetric-cipher-base.d.ts.map +1 -0
  258. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts +53 -0
  259. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts.map +1 -0
  260. package/dist/types/tdf3/src/client/builders.d.ts +436 -0
  261. package/dist/types/tdf3/src/client/builders.d.ts.map +1 -0
  262. package/dist/types/tdf3/src/client/index.d.ts +139 -0
  263. package/dist/types/tdf3/src/client/index.d.ts.map +1 -0
  264. package/dist/types/tdf3/src/client/validation.d.ts +8 -0
  265. package/dist/types/tdf3/src/client/validation.d.ts.map +1 -0
  266. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts +34 -0
  267. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -0
  268. package/dist/types/tdf3/src/crypto/declarations.d.ts +60 -0
  269. package/dist/types/tdf3/src/crypto/declarations.d.ts.map +1 -0
  270. package/dist/types/tdf3/src/crypto/index.d.ts +103 -0
  271. package/dist/types/tdf3/src/crypto/index.d.ts.map +1 -0
  272. package/dist/types/tdf3/src/index.d.ts +5 -0
  273. package/dist/types/tdf3/src/index.d.ts.map +1 -0
  274. package/dist/types/tdf3/src/models/attribute-set.d.ts +65 -0
  275. package/dist/types/tdf3/src/models/attribute-set.d.ts.map +1 -0
  276. package/dist/types/tdf3/src/models/encryption-information.d.ts +49 -0
  277. package/dist/types/tdf3/src/models/encryption-information.d.ts.map +1 -0
  278. package/dist/types/tdf3/src/models/index.d.ts +9 -0
  279. package/dist/types/tdf3/src/models/index.d.ts.map +1 -0
  280. package/dist/types/tdf3/src/models/key-access.d.ts +42 -0
  281. package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -0
  282. package/dist/types/tdf3/src/models/manifest.d.ts +9 -0
  283. package/dist/types/tdf3/src/models/manifest.d.ts.map +1 -0
  284. package/dist/types/tdf3/src/models/payload.d.ts +7 -0
  285. package/dist/types/tdf3/src/models/payload.d.ts.map +1 -0
  286. package/dist/types/tdf3/src/models/policy.d.ts +13 -0
  287. package/dist/types/tdf3/src/models/policy.d.ts.map +1 -0
  288. package/dist/types/tdf3/src/models/upsert-response.d.ts +16 -0
  289. package/dist/types/tdf3/src/models/upsert-response.d.ts.map +1 -0
  290. package/dist/types/tdf3/src/tdf.d.ts +152 -0
  291. package/dist/types/tdf3/src/tdf.d.ts.map +1 -0
  292. package/dist/types/tdf3/src/templates/default.html.d.ts +8 -0
  293. package/dist/types/tdf3/src/templates/default.html.d.ts.map +1 -0
  294. package/dist/types/tdf3/src/templates/escaper.d.ts +6 -0
  295. package/dist/types/tdf3/src/templates/escaper.d.ts.map +1 -0
  296. package/dist/types/tdf3/src/templates/index.d.ts +3 -0
  297. package/dist/types/tdf3/src/templates/index.d.ts.map +1 -0
  298. package/dist/types/tdf3/src/utils/buffer-crc32.d.ts +2 -0
  299. package/dist/types/tdf3/src/utils/buffer-crc32.d.ts.map +1 -0
  300. package/dist/types/tdf3/src/utils/chunkers.d.ts +29 -0
  301. package/dist/types/tdf3/src/utils/chunkers.d.ts.map +1 -0
  302. package/dist/types/tdf3/src/utils/index.d.ts +36 -0
  303. package/dist/types/tdf3/src/utils/index.d.ts.map +1 -0
  304. package/dist/types/tdf3/src/utils/keysplit.d.ts +19 -0
  305. package/dist/types/tdf3/src/utils/keysplit.d.ts.map +1 -0
  306. package/dist/types/tdf3/src/utils/zip-reader.d.ts +63 -0
  307. package/dist/types/tdf3/src/utils/zip-reader.d.ts.map +1 -0
  308. package/dist/types/tdf3/src/utils/zip-writer.d.ts +35 -0
  309. package/dist/types/tdf3/src/utils/zip-writer.d.ts.map +1 -0
  310. package/dist/types/tdf3/src/version.d.ts +3 -0
  311. package/dist/types/tdf3/src/version.d.ts.map +1 -0
  312. package/dist/web/package.json +3 -0
  313. package/dist/web/src/access.js +147 -0
  314. package/dist/web/src/auth/Eas.js +55 -0
  315. package/dist/web/src/auth/auth.js +71 -0
  316. package/dist/web/src/auth/oidc-clientcredentials-provider.js +22 -0
  317. package/dist/web/src/auth/oidc-externaljwt-provider.js +29 -0
  318. package/dist/web/src/auth/oidc-refreshtoken-provider.js +30 -0
  319. package/dist/web/src/auth/oidc.js +215 -0
  320. package/dist/web/src/auth/providers.js +119 -0
  321. package/dist/web/src/encodings/base64.js +147 -0
  322. package/dist/web/src/encodings/hex.js +63 -0
  323. package/dist/web/src/encodings/index.js +3 -0
  324. package/dist/web/src/errors.js +123 -0
  325. package/dist/web/src/index.js +313 -0
  326. package/dist/web/src/nanotdf/Client.js +268 -0
  327. package/dist/web/src/nanotdf/NanoTDF.js +89 -0
  328. package/dist/web/src/nanotdf/browser-entry.js +14 -0
  329. package/dist/web/src/nanotdf/constants.js +2 -0
  330. package/dist/web/src/nanotdf/decrypt.js +14 -0
  331. package/dist/web/src/nanotdf/encrypt-dataset.js +32 -0
  332. package/dist/web/src/nanotdf/encrypt.js +126 -0
  333. package/dist/web/src/nanotdf/enum/CipherEnum.js +11 -0
  334. package/dist/web/src/nanotdf/enum/CurveNameEnum.js +13 -0
  335. package/dist/web/src/nanotdf/enum/EncodingEnum.js +6 -0
  336. package/dist/web/src/nanotdf/enum/PolicyTypeEnum.js +9 -0
  337. package/dist/web/src/nanotdf/enum/ProtocolEnum.js +8 -0
  338. package/dist/web/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +9 -0
  339. package/dist/web/src/nanotdf/helpers/calculateByCurve.js +24 -0
  340. package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +8 -0
  341. package/dist/web/src/nanotdf/index.js +11 -0
  342. package/dist/web/src/nanotdf/interfaces/PolicyInterface.js +2 -0
  343. package/dist/web/src/nanotdf/models/Ciphers.js +54 -0
  344. package/dist/web/src/nanotdf/models/DefaultParams.js +22 -0
  345. package/dist/web/src/nanotdf/models/EcCurves.js +32 -0
  346. package/dist/web/src/nanotdf/models/Header.js +250 -0
  347. package/dist/web/src/nanotdf/models/Payload.js +156 -0
  348. package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +71 -0
  349. package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +77 -0
  350. package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +33 -0
  351. package/dist/web/src/nanotdf/models/Policy/RemotePolicy.js +57 -0
  352. package/dist/web/src/nanotdf/models/ResourceLocator.js +206 -0
  353. package/dist/web/src/nanotdf/models/Signature.js +74 -0
  354. package/dist/web/src/nanotdf-crypto/ciphers.js +14 -0
  355. package/dist/web/src/nanotdf-crypto/decrypt.js +21 -0
  356. package/dist/web/src/nanotdf-crypto/digest.js +4 -0
  357. package/dist/web/src/nanotdf-crypto/ecdsaSignature.js +77 -0
  358. package/dist/web/src/nanotdf-crypto/encrypt.js +21 -0
  359. package/dist/web/src/nanotdf-crypto/enums.js +49 -0
  360. package/dist/web/src/nanotdf-crypto/exportCryptoKey.js +17 -0
  361. package/dist/web/src/nanotdf-crypto/generateKeyPair.js +10 -0
  362. package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +9 -0
  363. package/dist/web/src/nanotdf-crypto/importRawKey.js +15 -0
  364. package/dist/web/src/nanotdf-crypto/index.js +12 -0
  365. package/dist/web/src/nanotdf-crypto/keyAgreement.js +87 -0
  366. package/dist/web/src/nanotdf-crypto/pemPublicToCrypto.js +197 -0
  367. package/dist/web/src/policy/api.js +54 -0
  368. package/dist/web/src/policy/attributes.js +2 -0
  369. package/dist/web/src/policy/granter.js +141 -0
  370. package/dist/web/src/tdf/AttributeObject.js +11 -0
  371. package/dist/web/src/tdf/AttributeObjectJwt.js +2 -0
  372. package/dist/web/src/tdf/Crypto.js +44 -0
  373. package/dist/web/src/tdf/EntityObject.js +2 -0
  374. package/dist/web/src/tdf/NanoTDF/NanoTDF.js +35 -0
  375. package/dist/web/src/tdf/Policy.js +48 -0
  376. package/dist/web/src/tdf/PolicyObject.js +2 -0
  377. package/dist/web/src/tdf/TypedArray.js +2 -0
  378. package/dist/web/src/tdf/index.js +4 -0
  379. package/dist/web/src/types/index.js +2 -0
  380. package/dist/web/src/utils.js +133 -0
  381. package/dist/web/src/version.js +9 -0
  382. package/dist/web/tdf3/index.js +13 -0
  383. package/dist/web/tdf3/src/assertions.js +111 -0
  384. package/dist/web/tdf3/src/binary.js +149 -0
  385. package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +52 -0
  386. package/dist/web/tdf3/src/ciphers/algorithms.js +5 -0
  387. package/dist/web/tdf3/src/ciphers/index.js +3 -0
  388. package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +18 -0
  389. package/dist/web/tdf3/src/client/DecoratedReadableStream.js +107 -0
  390. package/dist/web/tdf3/src/client/builders.js +557 -0
  391. package/dist/web/tdf3/src/client/index.js +423 -0
  392. package/dist/web/tdf3/src/client/validation.js +58 -0
  393. package/dist/web/tdf3/src/crypto/crypto-utils.js +107 -0
  394. package/dist/web/tdf3/src/crypto/declarations.js +5 -0
  395. package/dist/web/tdf3/src/crypto/index.js +296 -0
  396. package/dist/web/tdf3/src/index.js +5 -0
  397. package/dist/web/tdf3/src/models/attribute-set.js +118 -0
  398. package/dist/web/tdf3/src/models/encryption-information.js +86 -0
  399. package/dist/web/tdf3/src/models/index.js +9 -0
  400. package/dist/web/tdf3/src/models/key-access.js +74 -0
  401. package/dist/web/tdf3/src/models/manifest.js +2 -0
  402. package/dist/web/tdf3/src/models/payload.js +2 -0
  403. package/dist/web/tdf3/src/models/policy.js +20 -0
  404. package/dist/web/tdf3/src/models/upsert-response.js +2 -0
  405. package/dist/web/tdf3/src/tdf.js +866 -0
  406. package/dist/web/tdf3/src/templates/default.html.js +96 -0
  407. package/dist/web/tdf3/src/templates/escaper.js +10 -0
  408. package/dist/web/tdf3/src/templates/index.js +3 -0
  409. package/dist/web/tdf3/src/utils/buffer-crc32.js +44 -0
  410. package/dist/web/tdf3/src/utils/chunkers.js +96 -0
  411. package/dist/web/tdf3/src/utils/index.js +248 -0
  412. package/dist/web/tdf3/src/utils/keysplit.js +55 -0
  413. package/dist/web/tdf3/src/utils/zip-reader.js +247 -0
  414. package/dist/web/tdf3/src/utils/zip-writer.js +302 -0
  415. package/dist/web/tdf3/src/version.js +3 -0
  416. package/package.json +126 -0
  417. package/src/access.ts +198 -0
  418. package/src/auth/Eas.ts +79 -0
  419. package/src/auth/auth.ts +141 -0
  420. package/src/auth/oidc-clientcredentials-provider.ts +32 -0
  421. package/src/auth/oidc-externaljwt-provider.ts +41 -0
  422. package/src/auth/oidc-refreshtoken-provider.ts +41 -0
  423. package/src/auth/oidc.ts +307 -0
  424. package/src/auth/providers.ts +139 -0
  425. package/src/encodings/base64.ts +160 -0
  426. package/src/encodings/hex.ts +69 -0
  427. package/src/encodings/index.ts +2 -0
  428. package/src/errors.ts +113 -0
  429. package/src/index.ts +441 -0
  430. package/src/nanotdf/Client.ts +349 -0
  431. package/src/nanotdf/NanoTDF.ts +121 -0
  432. package/src/nanotdf/browser-entry.ts +20 -0
  433. package/src/nanotdf/constants.ts +1 -0
  434. package/src/nanotdf/decrypt.ts +19 -0
  435. package/src/nanotdf/encrypt-dataset.ts +52 -0
  436. package/src/nanotdf/encrypt.ts +197 -0
  437. package/src/nanotdf/enum/CipherEnum.ts +10 -0
  438. package/src/nanotdf/enum/CurveNameEnum.ts +12 -0
  439. package/src/nanotdf/enum/EncodingEnum.ts +5 -0
  440. package/src/nanotdf/enum/PolicyTypeEnum.ts +8 -0
  441. package/src/nanotdf/enum/ProtocolEnum.ts +7 -0
  442. package/src/nanotdf/enum/ResourceLocatorIdentifierEnum.ts +8 -0
  443. package/src/nanotdf/helpers/calculateByCurve.ts +26 -0
  444. package/src/nanotdf/helpers/getHkdfSalt.ts +15 -0
  445. package/src/nanotdf/index.ts +10 -0
  446. package/src/nanotdf/interfaces/PolicyInterface.ts +27 -0
  447. package/src/nanotdf/models/Ciphers.ts +67 -0
  448. package/src/nanotdf/models/DefaultParams.ts +24 -0
  449. package/src/nanotdf/models/EcCurves.ts +40 -0
  450. package/src/nanotdf/models/Header.ts +322 -0
  451. package/src/nanotdf/models/Payload.ts +196 -0
  452. package/src/nanotdf/models/Policy/AbstractPolicy.ts +90 -0
  453. package/src/nanotdf/models/Policy/EmbeddedPolicy.ts +101 -0
  454. package/src/nanotdf/models/Policy/PolicyFactory.ts +48 -0
  455. package/src/nanotdf/models/Policy/RemotePolicy.ts +74 -0
  456. package/src/nanotdf/models/ResourceLocator.ts +212 -0
  457. package/src/nanotdf/models/Signature.ts +85 -0
  458. package/src/nanotdf-crypto/ciphers.ts +13 -0
  459. package/src/nanotdf-crypto/decrypt.ts +30 -0
  460. package/src/nanotdf-crypto/digest.ts +8 -0
  461. package/src/nanotdf-crypto/ecdsaSignature.ts +109 -0
  462. package/src/nanotdf-crypto/encrypt.ts +30 -0
  463. package/src/nanotdf-crypto/enums.ts +47 -0
  464. package/src/nanotdf-crypto/exportCryptoKey.ts +17 -0
  465. package/src/nanotdf-crypto/generateKeyPair.ts +19 -0
  466. package/src/nanotdf-crypto/generateRandomNumber.ts +8 -0
  467. package/src/nanotdf-crypto/importRawKey.ts +19 -0
  468. package/src/nanotdf-crypto/index.ts +11 -0
  469. package/src/nanotdf-crypto/keyAgreement.ts +139 -0
  470. package/src/nanotdf-crypto/pemPublicToCrypto.ts +232 -0
  471. package/src/package-lock.json +6 -0
  472. package/src/package.json +3 -0
  473. package/src/platform/authorization/authorization_connect.d.ts +44 -0
  474. package/src/platform/authorization/authorization_connect.js +44 -0
  475. package/src/platform/authorization/authorization_pb.d.ts +707 -0
  476. package/src/platform/authorization/authorization_pb.js +372 -0
  477. package/src/platform/common/common_pb.d.ts +129 -0
  478. package/src/platform/common/common_pb.js +58 -0
  479. package/src/platform/entityresolution/entity_resolution_connect.d.ts +35 -0
  480. package/src/platform/entityresolution/entity_resolution_connect.js +35 -0
  481. package/src/platform/entityresolution/entity_resolution_pb.d.ts +242 -0
  482. package/src/platform/entityresolution/entity_resolution_pb.js +139 -0
  483. package/src/platform/kas/kas_connect.d.ts +59 -0
  484. package/src/platform/kas/kas_connect.js +59 -0
  485. package/src/platform/kas/kas_pb.d.ts +200 -0
  486. package/src/platform/kas/kas_pb.js +84 -0
  487. package/src/platform/policy/attributes/attributes_connect.d.ts +168 -0
  488. package/src/platform/policy/attributes/attributes_connect.js +168 -0
  489. package/src/platform/policy/attributes/attributes_pb.d.ts +929 -0
  490. package/src/platform/policy/attributes/attributes_pb.js +363 -0
  491. package/src/platform/policy/kasregistry/key_access_server_registry_connect.d.ts +62 -0
  492. package/src/platform/policy/kasregistry/key_access_server_registry_connect.js +62 -0
  493. package/src/platform/policy/kasregistry/key_access_server_registry_pb.d.ts +283 -0
  494. package/src/platform/policy/kasregistry/key_access_server_registry_pb.js +113 -0
  495. package/src/platform/policy/namespaces/namespaces_connect.d.ts +62 -0
  496. package/src/platform/policy/namespaces/namespaces_connect.js +62 -0
  497. package/src/platform/policy/namespaces/namespaces_pb.d.ts +270 -0
  498. package/src/platform/policy/namespaces/namespaces_pb.js +110 -0
  499. package/src/platform/policy/objects_pb.d.ts +725 -0
  500. package/src/platform/policy/objects_pb.js +288 -0
  501. package/src/platform/policy/resourcemapping/resource_mapping_connect.d.ts +259 -0
  502. package/src/platform/policy/resourcemapping/resource_mapping_connect.js +259 -0
  503. package/src/platform/policy/resourcemapping/resource_mapping_pb.d.ts +314 -0
  504. package/src/platform/policy/resourcemapping/resource_mapping_pb.js +142 -0
  505. package/src/platform/policy/selectors_pb.d.ts +269 -0
  506. package/src/platform/policy/selectors_pb.js +110 -0
  507. package/src/platform/policy/subjectmapping/subject_mapping_connect.d.ts +118 -0
  508. package/src/platform/policy/subjectmapping/subject_mapping_connect.js +118 -0
  509. package/src/platform/policy/subjectmapping/subject_mapping_pb.d.ts +672 -0
  510. package/src/platform/policy/subjectmapping/subject_mapping_pb.js +260 -0
  511. package/src/platform/wellknownconfiguration/wellknown_configuration_connect.d.ts +26 -0
  512. package/src/platform/wellknownconfiguration/wellknown_configuration_connect.js +26 -0
  513. package/src/platform/wellknownconfiguration/wellknown_configuration_pb.d.ts +75 -0
  514. package/src/platform/wellknownconfiguration/wellknown_configuration_pb.js +35 -0
  515. package/src/policy/api.ts +61 -0
  516. package/src/policy/attributes.ts +117 -0
  517. package/src/policy/granter.ts +181 -0
  518. package/src/tdf/AttributeObject.ts +27 -0
  519. package/src/tdf/AttributeObjectJwt.ts +3 -0
  520. package/src/tdf/Crypto.ts +42 -0
  521. package/src/tdf/EntityObject.ts +18 -0
  522. package/src/tdf/NanoTDF/NanoTDF.ts +120 -0
  523. package/src/tdf/Policy.ts +51 -0
  524. package/src/tdf/PolicyObject.ts +12 -0
  525. package/src/tdf/TypedArray.ts +12 -0
  526. package/src/tdf/index.ts +6 -0
  527. package/src/types/index.ts +55 -0
  528. package/src/utils.ts +149 -0
  529. package/src/version.ts +9 -0
  530. package/tdf3/index.ts +91 -0
  531. package/tdf3/package-lock.json +6 -0
  532. package/tdf3/package.json +3 -0
  533. package/tdf3/src/assertions.ts +191 -0
  534. package/tdf3/src/binary.ts +195 -0
  535. package/tdf3/src/ciphers/aes-gcm-cipher.ts +76 -0
  536. package/tdf3/src/ciphers/algorithms.ts +9 -0
  537. package/tdf3/src/ciphers/index.ts +2 -0
  538. package/tdf3/src/ciphers/symmetric-cipher-base.ts +38 -0
  539. package/tdf3/src/client/DecoratedReadableStream.ts +148 -0
  540. package/tdf3/src/client/builders.ts +701 -0
  541. package/tdf3/src/client/index.ts +637 -0
  542. package/tdf3/src/client/validation.ts +79 -0
  543. package/tdf3/src/crypto/crypto-utils.ts +119 -0
  544. package/tdf3/src/crypto/declarations.ts +89 -0
  545. package/tdf3/src/crypto/index.ts +394 -0
  546. package/tdf3/src/index.ts +4 -0
  547. package/tdf3/src/models/attribute-set.ts +142 -0
  548. package/tdf3/src/models/encryption-information.ts +172 -0
  549. package/tdf3/src/models/index.ts +8 -0
  550. package/tdf3/src/models/key-access.ts +128 -0
  551. package/tdf3/src/models/manifest.ts +9 -0
  552. package/tdf3/src/models/payload.ts +6 -0
  553. package/tdf3/src/models/policy.ts +35 -0
  554. package/tdf3/src/models/upsert-response.ts +17 -0
  555. package/tdf3/src/tdf.ts +1351 -0
  556. package/tdf3/src/templates/default.html.ts +105 -0
  557. package/tdf3/src/templates/escaper.ts +10 -0
  558. package/tdf3/src/templates/index.ts +2 -0
  559. package/tdf3/src/utils/buffer-crc32.ts +46 -0
  560. package/tdf3/src/utils/chunkers.ts +118 -0
  561. package/tdf3/src/utils/index.ts +309 -0
  562. package/tdf3/src/utils/keysplit.ts +63 -0
  563. package/tdf3/src/utils/zip-reader.ts +341 -0
  564. package/tdf3/src/utils/zip-writer.ts +375 -0
  565. package/tdf3/src/version.ts +2 -0
  566. package/tdf3/types.d.ts +14 -0
@@ -0,0 +1,104 @@
1
+ import { HttpRequest } from './auth.js';
2
+ /**
3
+ * Common fields used by all OIDC credentialing flows.
4
+ */
5
+ export type CommonCredentials = {
6
+ /** The OIDC client ID used for token issuance and exchange flows */
7
+ clientId: string;
8
+ /** The endpoint of the OIDC IdP to authenticate against, ex. 'https://virtru.com/auth' */
9
+ oidcOrigin: string;
10
+ /** Whether or not DPoP is enabled. */
11
+ dpopEnabled?: boolean;
12
+ /** the client's public key, base64 encoded. Will be bound to the OIDC token. Deprecated. If not set in the constructor, */
13
+ signingKey?: CryptoKeyPair;
14
+ };
15
+ /**
16
+ * Information needed for Client Secret OIDC credentialing flow
17
+ */
18
+ export type ClientSecretCredentials = CommonCredentials & {
19
+ exchange: 'client';
20
+ /** The OIDC client secret, used for token issuance and exchange flows */
21
+ clientSecret: string;
22
+ };
23
+ /**
24
+ * Information needed for getting new access tokens with a refresh token
25
+ */
26
+ export type RefreshTokenCredentials = CommonCredentials & {
27
+ exchange: 'refresh';
28
+ /** The OIDC refresh token content */
29
+ refreshToken: string;
30
+ };
31
+ /**
32
+ * Information needed to exchange a standard or external JWT for a TDF claims
33
+ * annotated JWT
34
+ */
35
+ export type ExternalJwtCredentials = CommonCredentials & {
36
+ exchange: 'external';
37
+ /** The external JWT used for exchange */
38
+ externalJwt: string;
39
+ };
40
+ export type OIDCCredentials = ClientSecretCredentials | ExternalJwtCredentials | RefreshTokenCredentials;
41
+ export type AccessTokenResponse = {
42
+ access_token: string;
43
+ refresh_token?: string;
44
+ };
45
+ /**
46
+ * Class that provides OIDC functionality to auth providers, assuming 'enhanced'
47
+ * tokens and sessions with tdf_claims and either one or both of signing keys
48
+ * or DPoP.
49
+ *
50
+ * Note that this class itself is not a provider - providers implement
51
+ * `AuthProvider` and make use of this class.
52
+ *
53
+ * Both browser and non-browser flows use OIDC, but the supported OIDC auth
54
+ * mechanisms differ between public (e.g. browser) clients, and confidential
55
+ * (e.g. Node) clients.
56
+ *
57
+ * The non-browser flow just expects a `clientId` and `clientSecret` to be
58
+ * provided in the `clientConfig`, and will use that
59
+ * to grant tokens via the OIDC `clientCredentials` flow.
60
+ *
61
+ * For either kind of client, the client's public key must be set in all OIDC
62
+ * token requests in order to recieve a token with valid TDF claims. The public
63
+ * key may be passed to this provider's constructor, or supplied
64
+ * post-construction by calling @see updateClientPublicKey, which forces an
65
+ * explicit token refresh
66
+ */
67
+ export declare class AccessToken {
68
+ config: OIDCCredentials;
69
+ request?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
70
+ data?: AccessTokenResponse;
71
+ baseUrl: string;
72
+ signingKey?: CryptoKeyPair;
73
+ extraHeaders: Record<string, string>;
74
+ currentAccessToken?: string;
75
+ constructor(cfg: OIDCCredentials, request?: typeof fetch);
76
+ /**
77
+ * https://connect2id.com/products/server/docs/api/userinfo
78
+ * @param accessToken the current access_token or code
79
+ * @returns
80
+ */
81
+ info(accessToken: string): Promise<unknown>;
82
+ doPost(url: string, o: Record<string, string>): Promise<Response>;
83
+ accessTokenLookup(cfg: OIDCCredentials): Promise<any>;
84
+ /**
85
+ * Gets an access token; operates lazily/cached, with an optional check for freshness.
86
+ * @param validate if we should run a inline check against the OIDC 'userinfo' endpoint to make sure any cached access token is still valid
87
+ * @returns
88
+ */
89
+ get(validate?: boolean): Promise<string>;
90
+ /**
91
+ * A TDF client MUST call this method whenever the client wants to use a new
92
+ * ephemeral key set. This updates the keys used to:
93
+ * or wishes to set the keypair after creating the object.
94
+ *
95
+ * Calling this function will trigger a forcible token refresh using the cached refresh token, and contact the auth server.
96
+ */
97
+ refreshTokenClaimsWithClientPubkeyIfNeeded(signingKey: CryptoKeyPair): Promise<void>;
98
+ /**
99
+ * Converts included refresh token or external JWT for a new one.
100
+ */
101
+ exchangeForRefreshToken(): Promise<string>;
102
+ withCreds(httpReq: HttpRequest): Promise<HttpRequest>;
103
+ }
104
+ //# sourceMappingURL=oidc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../../../../src/auth/oidc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAe,MAAM,WAAW,CAAC;AAKrD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,2HAA2H;IAC3H,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD,QAAQ,EAAE,QAAQ,CAAC;IACnB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,GAAG;IACxD,QAAQ,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG;IACvD,QAAQ,EAAE,UAAU,CAAC;IACrB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,uBAAuB,CAAC;AAI5B,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,WAAW;IACtB,MAAM,EAAE,eAAe,CAAC;IAExB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExE,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAE3B,OAAO,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,aAAa,CAAC;IAE3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;gBAEhB,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK;IA0BxD;;;;OAIG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB3C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAqB7C,iBAAiB,CAAC,GAAG,EAAE,eAAe;IAsC5C;;;;OAIG;IACG,GAAG,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B3C;;;;;;OAMG;IACG,0CAA0C,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1F;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAwB1C,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAoB5D"}
@@ -0,0 +1,67 @@
1
+ import { ClientSecretCredentials, ExternalJwtCredentials, OIDCCredentials, RefreshTokenCredentials } from './oidc.js';
2
+ import { OIDCClientCredentialsProvider } from './oidc-clientcredentials-provider.js';
3
+ import { OIDCExternalJwtProvider } from './oidc-externaljwt-provider.js';
4
+ import { type AuthProvider } from './auth.js';
5
+ import { OIDCRefreshTokenProvider } from './oidc-refreshtoken-provider.js';
6
+ /**
7
+ * Creates an OIDC Client Credentials Provider for non-browser contexts.
8
+ *
9
+ * Both browser and non-browser flows use OIDC, but the supported OIDC auth mechanisms differ between
10
+ * public (e.g. browser) clients, and confidential (e.g. Node) clients.
11
+ *
12
+ * This provider supports Client Credentials auth, where the client has previously been issued a ClientID and ClientSecret.
13
+ * Browser contexts should *never* use Client Credentials auth, as ClientSecrets are not secure for public client flows,
14
+ * and should use one of the other Authorization Code-based OIDC auth mechanisms instead.
15
+ *
16
+ * This just expects a clientId and clientSecret to be provided in the clientConfig, and will use that
17
+ * to grant tokens via the OIDC clientCredentials flow.
18
+ *
19
+ * The client's public key must be set in all OIDC token requests in order to recieve a token with valid
20
+ * Virtru claims. The public key may be passed to this provider's constructor, or supplied post-construction by calling
21
+ * {@link updateClientPublicKey} which will force an explicit token refresh
22
+ *
23
+ */
24
+ export declare const clientSecretAuthProvider: (clientConfig: ClientSecretCredentials) => Promise<OIDCClientCredentialsProvider>;
25
+ /**
26
+ * Create an OIDC External JWT Provider for browser contexts.
27
+ *
28
+ * Both browser and non-browser flows use OIDC, but the supported OIDC auth mechanisms differ between
29
+ * public (e.g. browser) clients, and confidential (e.g. Node) clients.
30
+ *
31
+ * This provider supports External JWT token exchange auth. This flow assumes that the client has previously authenticated
32
+ * with an external 3rd-party IdP that oidcOrigin has been configured to trust.
33
+ *
34
+ * The client can supply this provider with a JWT issued by that trusted 3rd-party IdP, and that JWT will be exchanged
35
+ * for a tokenset with TDF claims.
36
+ *
37
+ * The client's public key must be set in all OIDC token requests in order to recieve a token with valid
38
+ * Virtru claims. The public key may be passed to this provider's constructor, or supplied post-construction by calling
39
+ * {@link updateClientPublicKey}, which will force an explicit token refresh.
40
+ */
41
+ export declare const externalAuthProvider: (clientConfig: ExternalJwtCredentials) => Promise<OIDCExternalJwtProvider>;
42
+ /**
43
+ * Creates an OIDC Refresh Token Provider for browser and non-browser contexts.
44
+ *
45
+ * Both browser and non-browser flows use OIDC, but the supported OIDC auth mechanisms differ between
46
+ * public (e.g. browser) clients, and confidential (e.g. Node) clients.
47
+ *
48
+ * This provider supports Refresh Token auth. This flow assumes the client has already authenticated with the OIDC
49
+ * IdP using the OIDC flow fo their choice, and can provide a Refresh Token which will be exchanged (along with the client pubkey)
50
+ * for a new tokenset containing valid TDF claims.
51
+ *
52
+ * The client's public key must be set in all OIDC token requests in order to recieve a token with valid
53
+ * Virtru claims. The public key may be passed to this provider's constructor, or supplied post-construction by calling
54
+ * {@link updateClientPublicKey} which will force an explicit token refresh
55
+ */
56
+ export declare const refreshAuthProvider: (clientConfig: RefreshTokenCredentials) => Promise<OIDCRefreshTokenProvider>;
57
+ /**
58
+ * Generate an auth provder.
59
+ * @param clientConfig OIDC client credentials
60
+ * @returns a promise for a new auth provider with the requested excahnge type
61
+ */
62
+ export declare const clientAuthProvider: (clientConfig: OIDCCredentials) => Promise<AuthProvider>;
63
+ export * from './auth.js';
64
+ export { OIDCClientCredentialsProvider } from './oidc-clientcredentials-provider.js';
65
+ export { OIDCExternalJwtProvider } from './oidc-externaljwt-provider.js';
66
+ export { OIDCRefreshTokenProvider } from './oidc-refreshtoken-provider.js';
67
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAI3E;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,wBAAwB,iBACrB,uBAAuB,KACpC,QAAQ,6BAA6B,CAMvC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,iBACjB,sBAAsB,KACnC,QAAQ,uBAAuB,CAMjC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,iBAChB,uBAAuB,KACpC,QAAQ,wBAAwB,CAMlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,iBAAwB,eAAe,KAAG,QAAQ,YAAY,CAqC5F,CAAC;AAEF,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,18 @@
1
+ declare class InvalidCharacterError extends Error {
2
+ constructor(message?: string);
3
+ }
4
+ declare function encodeFallback(input: string, urlSafe?: boolean): string;
5
+ /**
6
+ * Encode array buffer to base64 string
7
+ *
8
+ * GitHub @niklasvh
9
+ * Copyright (c) 2012 Niklas von Hertzen
10
+ * MIT License
11
+ */
12
+ declare function encodeArrayBuffer(arrayBuffer: ArrayBuffer, urlSafe?: boolean): string;
13
+ declare function decodeFallback(input: string): string;
14
+ declare function decodeArrayBuffer(base64: string): ArrayBuffer;
15
+ declare const decode: typeof decodeFallback;
16
+ declare const encode: typeof encodeFallback;
17
+ export { decode, decodeArrayBuffer, encode, encodeArrayBuffer, InvalidCharacterError };
18
+ //# sourceMappingURL=base64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../../../../src/encodings/base64.ts"],"names":[],"mappings":"AA6BA,cAAM,qBAAsB,SAAQ,KAAK;gBAC3B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAID,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CA6BhE;AAED;;;;;;GAMG;AACH,iBAAS,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CA4B9E;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwB7C;AAED,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAsBtD;AAED,QAAA,MAAM,MAAM,uBAAiB,CAAC;AAC9B,QAAA,MAAM,MAAM,uBAAiB,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function encode(str: string): string;
2
+ export declare function decode(hex: string): string;
3
+ export declare function decodeArrayBuffer(hex: string): ArrayBuffer | never;
4
+ export declare function encodeArrayBuffer(arrayBuffer: ArrayBuffer): string | never;
5
+ //# sourceMappingURL=hex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../../../src/encodings/hex.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAa1C;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAa1C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK,CAclE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,GAAG,KAAK,CAoB1E"}
@@ -0,0 +1,3 @@
1
+ export * as base64 from './base64.js';
2
+ export * as hex from './hex.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/encodings/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Root class for all errors thrown by this library.
3
+ * This should not be thrown directly, but rather one of its subclasses.
4
+ */
5
+ export declare class TdfError extends Error {
6
+ name: string;
7
+ constructor(message?: string, cause?: Error);
8
+ }
9
+ /**
10
+ * Errors that indicate the client or method does not have valid options.
11
+ */
12
+ export declare class ConfigurationError extends TdfError {
13
+ name: string;
14
+ }
15
+ /**
16
+ * The assigned data attribute is not in the correct form.
17
+ */
18
+ export declare class AttributeValidationError extends ConfigurationError {
19
+ name: string;
20
+ attribute: unknown;
21
+ constructor(message: string, attribute: unknown, cause?: Error);
22
+ }
23
+ /**
24
+ * Errors that indicate the TDF object is corrupt, invalid, or fails validation or decrypt.
25
+ */
26
+ export declare class InvalidFileError extends TdfError {
27
+ }
28
+ /**
29
+ * Indicates a decrypt failure, either due to an incorrect key, corrupt ciphertext, or inappropriate key parameters.
30
+ */
31
+ export declare class DecryptError extends InvalidFileError {
32
+ name: string;
33
+ }
34
+ export declare class IntegrityError extends InvalidFileError {
35
+ name: string;
36
+ }
37
+ /**
38
+ * Thrown when a KAS URL found in one or more required key access objects are not in the list of known and allowed KASes in the client.
39
+ * This may indicate a malicious file - e.g. an attempt to DDoS a server by listing it as the KAS for many files, or to siphon credentials using a lookalike URL.
40
+ */
41
+ export declare class UnsafeUrlError extends InvalidFileError {
42
+ name: string;
43
+ readonly url: string[];
44
+ constructor(message: string, ...url: string[]);
45
+ }
46
+ /**
47
+ * A network error (no response) from rewrap or other endpoint, Possibly fixed by retrying or adjusting your network settings; could indicate network failure.
48
+ */
49
+ export declare class NetworkError extends TdfError {
50
+ name: string;
51
+ }
52
+ /**
53
+ * The service reports an unexpected error on its behalf, or a subcomponent (5xx).
54
+ */
55
+ export declare class ServiceError extends TdfError {
56
+ name: string;
57
+ }
58
+ /** Authentication failure (401) */
59
+ export declare class UnauthenticatedError extends TdfError {
60
+ name: string;
61
+ }
62
+ /** Authorization failure (403) */
63
+ export declare class PermissionDeniedError extends TdfError {
64
+ name: string;
65
+ }
66
+ /**
67
+ * Version of file is unsupported, or file uses a feature that is not supported by this version of the library.
68
+ */
69
+ export declare class UnsupportedFeatureError extends TdfError {
70
+ name: string;
71
+ }
72
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/errors.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACxB,IAAI,SAAc;gBAEf,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAO5C;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IACrC,IAAI,SAAwB;CACtC;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,kBAAkB;IACrD,IAAI,SAA8B;IAC3C,SAAS,EAAE,OAAO,CAAC;gBACP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK;CAI/D;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;CAAG;AAEjD;;GAEG;AACH,qBAAa,YAAa,SAAQ,gBAAgB;IACvC,IAAI,SAAkB;CAChC;AAED,qBAAa,cAAe,SAAQ,gBAAgB;IACzC,IAAI,SAAoB;CAClC;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IACzC,IAAI,SAAoB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE;CAK9C;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IAC/B,IAAI,SAAkB;CAChC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IAC/B,IAAI,SAAkB;CAChC;AAED,mCAAmC;AACnC,qBAAa,oBAAqB,SAAQ,QAAQ;IACvC,IAAI,SAA0B;CACxC;AAED,kCAAkC;AAClC,qBAAa,qBAAsB,SAAQ,QAAQ;IACxC,IAAI,SAA2B;CACzC;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,QAAQ;IAC1C,IAAI,SAA6B;CAC3C"}
@@ -0,0 +1,138 @@
1
+ import { Client, NanoTDF } from './nanotdf/index.js';
2
+ import { TypedArray } from './tdf/index.js';
3
+ import { ClientConfig } from './nanotdf/Client.js';
4
+ export { attributeFQNsAsValues } from './policy/api.js';
5
+ export type EncryptOptions = {
6
+ ecdsaBinding: boolean;
7
+ };
8
+ /**
9
+ * NanoTDF SDK Client
10
+ *
11
+ * @example
12
+ * ```
13
+ * import { clientSecretAuthProvider, NanoTDFClient } from '@opentdf/sdk';
14
+ *
15
+ * const OIDC_ENDPOINT = 'http://localhost:65432/auth/realms/opentdf-demo';
16
+ * const KAS_URL = 'http://localhost:65432/api/kas/';
17
+ *
18
+ * const ciphertext = '...';
19
+ * const client = new NanoTDFClient({
20
+ * authProvider: await clientSecretAuthProvider({
21
+ * clientId: 'tdf-client',
22
+ * clientSecret: '123-456',
23
+ * oidcOrigin: OIDC_ENDPOINT,
24
+ * }),
25
+ * kasEndpoint: KAS_URL
26
+ * }
27
+ * );
28
+ * client.decrypt(ciphertext)
29
+ * .then(plaintext => {
30
+ * console.log('Plaintext', plaintext);
31
+ * })
32
+ * .catch(err => {
33
+ * console.error('Some error occurred', err);
34
+ * })
35
+ */
36
+ export declare class NanoTDFClient extends Client {
37
+ /**
38
+ * Decrypt ciphertext
39
+ *
40
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
41
+ *
42
+ * @param ciphertext Ciphertext to decrypt
43
+ */
44
+ decrypt(ciphertext: string | TypedArray | ArrayBuffer): Promise<ArrayBuffer>;
45
+ /**
46
+ * Decrypt ciphertext of the legacy TDF, with the older, smaller i.v. calculation.
47
+ *
48
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
49
+ *
50
+ * @param ciphertext Ciphertext to decrypt
51
+ */
52
+ decryptLegacyTDF(ciphertext: string | TypedArray | ArrayBuffer): Promise<ArrayBuffer>;
53
+ /**
54
+ * Encrypts the given data using the NanoTDF encryption scheme.
55
+ *
56
+ * @param {string | TypedArray | ArrayBuffer} data - The data to be encrypted.
57
+ * @param {EncryptOptions} [options=defaultOptions] - The encryption options (currently unused).
58
+ * @returns {Promise<ArrayBuffer>} A promise that resolves to the encrypted data as an ArrayBuffer.
59
+ * @throws {Error} If the initialization vector is not a number.
60
+ */
61
+ encrypt(data: string | TypedArray | ArrayBuffer, options?: EncryptOptions): Promise<ArrayBuffer>;
62
+ }
63
+ export type DatasetConfig = ClientConfig & {
64
+ maxKeyIterations?: number;
65
+ };
66
+ /**
67
+ * NanoTDF Dataset SDK Client
68
+ *
69
+ *
70
+ * @example
71
+ * ```
72
+ * import { clientSecretAuthProvider, NanoTDFDatasetClient } from '@opentdf/sdk';
73
+ *
74
+ * const OIDC_ENDPOINT = 'http://localhost:65432/auth/realms/tdf';
75
+ * const KAS_URL = 'http://localhost:65432/api/kas/';
76
+ *
77
+ * const ciphertext = '...';
78
+ * const client = new NanoTDFDatasetClient({
79
+ * authProvider: await clientSecretAuthProvider({
80
+ * clientId: 'tdf-client',
81
+ * clientSecret: '123-456',
82
+ * exchange: 'client',
83
+ * oidcOrigin: OIDC_ENDPOINT,
84
+ * }),
85
+ * kasEndpoint: KAS_URL,
86
+ * });
87
+ * const plaintext = client.decrypt(ciphertext);
88
+ * console.log('Plaintext', plaintext);
89
+ * ```
90
+ */
91
+ export declare class NanoTDFDatasetClient extends Client {
92
+ static readonly NTDF_MAX_KEY_ITERATIONS = 8388606;
93
+ private maxKeyIteration;
94
+ private keyIterationCount;
95
+ private cachedEphemeralKey?;
96
+ private unwrappedKey?;
97
+ private symmetricKey?;
98
+ private cachedHeader?;
99
+ private ecdsaBinding;
100
+ /**
101
+ * Create new NanoTDF Dataset Client
102
+ *
103
+ * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
104
+ * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
105
+ * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
106
+ *
107
+ * @param clientConfig OIDC client credentials
108
+ * @param kasUrl Key access service URL
109
+ * @param ephemeralKeyPair (optional) ephemeral key pair to use
110
+ * @param maxKeyIterations Max iteration to performe without a key rotation
111
+ */
112
+ constructor(opts: DatasetConfig);
113
+ /**
114
+ * Encrypt data
115
+ *
116
+ * Pass a string, TypedArray, or ArrayBuffer data and get a promise which resolves ciphertext
117
+ *
118
+ * @param data to decrypt
119
+ */
120
+ encrypt(data: string | TypedArray | ArrayBuffer, options?: EncryptOptions): Promise<ArrayBuffer>;
121
+ /**
122
+ * Decrypt ciphertext
123
+ *
124
+ * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
125
+ *
126
+ * @param ciphertext Ciphertext to decrypt
127
+ */
128
+ decrypt(ciphertext: string | TypedArray | ArrayBuffer): Promise<ArrayBuffer>;
129
+ rewrapAndDecrypt(nanotdf: NanoTDF): Promise<ArrayBuffer>;
130
+ generateIV(): Uint8Array;
131
+ }
132
+ /**
133
+ * Authorization for connecting authZ tokens to
134
+ * remote requests.
135
+ */
136
+ export * as AuthProviders from './auth/providers.js';
137
+ export { version, clientType } from './version.js';
138
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,OAAO,EAOR,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAOF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,aAAc,SAAQ,MAAM;IACvC;;;;;;OAMG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBlF;;;;;;OAMG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAsB3F;;;;;;;OAOG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,EACvC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC;CAyDxB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,oBAAqB,SAAQ,MAAM;IAG9C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,WAAW;IAElD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAU;IAE9B;;;;;;;;;;;OAWG;gBACS,IAAI,EAAE,aAAa;IAe/B;;;;;;OAMG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,EACvC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC;IA+EvB;;;;;;OAMG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAuB5E,gBAAgB,CAAC,OAAO,EAAE,OAAO;IAwBvC,UAAU,IAAI,UAAU;CAkCzB;AAED;;;GAGG;AACH,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { type TypedArray } from '../tdf/index.js';
2
+ import { KasPublicKeyInfo, OriginAllowList } from '../access.js';
3
+ import { AuthProvider } from '../auth/providers.js';
4
+ export interface ClientConfig {
5
+ allowedKases?: string[];
6
+ ignoreAllowList?: boolean;
7
+ authProvider: AuthProvider;
8
+ dpopEnabled?: boolean;
9
+ dpopKeys?: Promise<CryptoKeyPair>;
10
+ ephemeralKeyPair?: Promise<CryptoKeyPair>;
11
+ kasEndpoint: string;
12
+ }
13
+ /**
14
+ * A Client encapsulates sessions interacting with TDF3 and nanoTDF backends, KAS and any
15
+ * plugin-based sessions like identity and further attribute control. Most importantly, it is responsible
16
+ * for local key and token management, including the ephemeral public/private keypairs
17
+ * used for encrypting and decrypting information.
18
+ *
19
+ * @link https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair
20
+ *
21
+ * @example
22
+ * import { Client, clientAuthProvider, decrypt, encrypt } from '@opentdf/sdk/nanotdf`
23
+ *
24
+ * const OIDC_ENDPOINT = 'http://localhost:65432/auth/';
25
+ * const KAS_URL = 'http://localhost:65432/kas';
26
+ *
27
+ * let client = new Client(
28
+ * await clientAuthProvider({
29
+ * clientId: 'tdf-client',
30
+ * clientSecret: '123-456',
31
+ * oidcOrigin: OIDC_ENDPOINT,
32
+ * }),
33
+ * KAS_URL
34
+ * );
35
+ *
36
+ * // t=1
37
+ * let nanoTDFEncrypted = await encrypt('some string', client.unwrappedKey);
38
+ * let nanoTDFDecrypted = await decrypt(nanoTDFEncrypted, client.unwrappedKey);
39
+ * nanoTDFDecrypted.toString() // 'some string'
40
+ *
41
+ */
42
+ export default class Client {
43
+ static readonly KEY_ACCESS_REMOTE = "remote";
44
+ static readonly KAS_PROTOCOL = "kas";
45
+ static readonly SDK_INITIAL_RELEASE = "0.0.0";
46
+ static readonly INITIAL_RELEASE_IV_SIZE = 3;
47
+ static readonly IV_SIZE = 12;
48
+ allowedKases: OriginAllowList;
49
+ protected kasUrl: string;
50
+ kasPubKey?: KasPublicKeyInfo;
51
+ readonly authProvider: AuthProvider;
52
+ readonly dpopEnabled: boolean;
53
+ dissems: string[];
54
+ dataAttributes: string[];
55
+ protected ephemeralKeyPair: Promise<CryptoKeyPair>;
56
+ protected requestSignerKeyPair: Promise<CryptoKeyPair>;
57
+ protected iv?: number;
58
+ /**
59
+ * Create new NanoTDF Client
60
+ *
61
+ * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
62
+ * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
63
+ * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
64
+ */
65
+ constructor(optsOrOldAuthProvider: AuthProvider | ClientConfig, kasUrl?: string, ephemeralKeyPair?: CryptoKeyPair, dpopEnabled?: boolean);
66
+ /**
67
+ * Add attribute to the TDF file/data
68
+ *
69
+ * @param attribute The attribute that decides the access control of the TDF.
70
+ */
71
+ addAttribute(attribute: string): void;
72
+ /**
73
+ * Explicitly get a new Entity Object using the supplied EntityAttributeService.
74
+ *
75
+ * This method is expected to be called at least once per encrypt/decrypt cycle. If the entityObject is expired then
76
+ * this will need to be called again.
77
+ *
78
+ * @security the ephemeralKeyPair must be set in the constructor if desired to use here. If this is wished to be changed
79
+ * then a new client should be initialized.
80
+ * @performance key pair is generated when the entity object is fetched IFF the ephemeralKeyPair is not set. This will
81
+ * either be set on the first call or passed in the constructor.
82
+ */
83
+ fetchOIDCToken(): Promise<void>;
84
+ /**
85
+ * Rewrap key
86
+ *
87
+ * @important the `fetchEntityObject` method must be called prior to
88
+ * @param nanoTdfHeader the full header for the nanotdf
89
+ * @param kasRewrapUrl key access server's rewrap endpoint
90
+ * @param magicNumberVersion nanotdf container version
91
+ * @param clientVersion version of the client, as SemVer
92
+ */
93
+ rewrapKey(nanoTdfHeader: TypedArray | ArrayBuffer, kasRewrapUrl: string, magicNumberVersion: TypedArray | ArrayBuffer, clientVersion: string): Promise<CryptoKey>;
94
+ }
95
+ //# sourceMappingURL=Client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,OAAO,EAAmB,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,YAAY,EAAgC,MAAM,sBAAsB,CAAC;AAIlF,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;CACrB;AAgDD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,YAAY;IAC7C,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,WAAW;IAC9C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,KAAK;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAM;IAE7B,YAAY,EAAE,eAAe,CAAC;IAK9B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9B,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACnD,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;gBAED,qBAAqB,EAAE,YAAY,GAAG,YAAY,EAClD,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,aAAa,EAChC,WAAW,UAAQ;IAkDrB;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;;OAUG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IASrC;;;;;;;;OAQG;IACG,SAAS,CACb,aAAa,EAAE,UAAU,GAAG,WAAW,EACvC,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,UAAU,GAAG,WAAW,EAC5C,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,SAAS,CAAC;CA+HtB"}
@@ -0,0 +1,25 @@
1
+ import { TypedArray } from '../tdf/index.js';
2
+ import Header from './models/Header.js';
3
+ import Payload from './models/Payload.js';
4
+ import Signature from './models/Signature.js';
5
+ import EncodingEnum from './enum/EncodingEnum.js';
6
+ export default class NanoTDF {
7
+ static Encodings: typeof EncodingEnum;
8
+ static Header: typeof Header;
9
+ static Payload: typeof Payload;
10
+ static Signature: typeof Signature;
11
+ header: Header;
12
+ payload: Payload;
13
+ signature?: Signature;
14
+ static from(content: TypedArray | ArrayBuffer | string, encoding?: EncodingEnum, legacyTDF?: boolean): NanoTDF;
15
+ constructor(header: Header, payload: Payload, signature?: Signature);
16
+ /**
17
+ * Return the content of nano tdf as binary buffer
18
+ */
19
+ toBuffer(): ArrayBuffer;
20
+ /**
21
+ * Return the content of nano tdf as base64 string
22
+ */
23
+ toBase64(): string;
24
+ }
25
+ //# sourceMappingURL=NanoTDF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NanoTDF.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf/NanoTDF.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAKlD,MAAM,CAAC,OAAO,OAAO,OAAO;IAE1B,MAAM,CAAC,SAAS,EAAE,OAAO,YAAY,CAAgB;IACrD,MAAM,CAAC,MAAM,gBAAU;IACvB,MAAM,CAAC,OAAO,iBAAW;IACzB,MAAM,CAAC,SAAS,mBAAa;IAEtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IAGjB,SAAS,CAAC,EAAE,SAAS,CAAC;IAE7B,MAAM,CAAC,IAAI,CACT,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,EAC1C,QAAQ,CAAC,EAAE,YAAY,EACvB,SAAS,UAAQ,GAChB,OAAO;gBAkDE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,SAAS;IAMnE;;OAEG;IACH,QAAQ,IAAI,WAAW;IA2BvB;;OAEG;IACH,QAAQ,IAAI,MAAM;CAInB"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This file is used for:
3
+ *
4
+ * - es5 browser version of nanoTDF and add it to the window as NanoTDF
5
+ *
6
+ * This is not used for:
7
+ *
8
+ * - es6 web development (use node modules)
9
+ * - node applications
10
+ */
11
+ import NanoTDF from './NanoTDF.js';
12
+ declare global {
13
+ interface Window {
14
+ NanoTDF: typeof NanoTDF;
15
+ }
16
+ }
17
+ //# sourceMappingURL=browser-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-entry.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf/browser-entry.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AACH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,EAAE,OAAO,OAAO,CAAC;KACzB;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const GMAC_BINDING_LEN = 8;
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,IAAI,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type NanoTDF from './NanoTDF.js';
2
+ /**
3
+ * Decrypt nanotdf with a crypto key
4
+ *
5
+ * @param key Crypto key used to decrypt nanotdf
6
+ * @param nanotdf NanoTDF to decrypt
7
+ */
8
+ export default function decrypt(key: CryptoKey, nanotdf: NanoTDF): Promise<ArrayBuffer>;
9
+ //# sourceMappingURL=decrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrypt.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf/decrypt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC;;;;;GAKG;AACH,wBAA8B,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAS5F"}
@@ -0,0 +1,12 @@
1
+ import Header from './models/Header.js';
2
+ import TypedArray from '../tdf/TypedArray.js';
3
+ /**
4
+ * Encrypt the plain data into nanotdf buffer
5
+ *
6
+ * @param symmetricKey Key to encrypt the payload
7
+ * @param header NanoTDF header
8
+ * @param iv IV to be used for encrypting the payload
9
+ * @param data The data to be encrypted
10
+ */
11
+ export default function encryptDataset(symmetricKey: CryptoKey, header: Header, iv: Uint8Array, data: string | TypedArray | ArrayBuffer): Promise<ArrayBuffer>;
12
+ //# sourceMappingURL=encrypt-dataset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypt-dataset.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf/encrypt-dataset.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAIxC,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAG9C;;;;;;;GAOG;AACH,wBAA8B,cAAc,CAC1C,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GACtC,OAAO,CAAC,WAAW,CAAC,CA8BtB"}