@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,296 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const base64 = __importStar(require("../encodings/base64.js"));
30
+ const index_js_1 = require("../nanotdf-crypto/index.js");
31
+ const getHkdfSalt_js_1 = __importDefault(require("./helpers/getHkdfSalt.js"));
32
+ const DefaultParams_js_1 = __importDefault(require("./models/DefaultParams.js"));
33
+ const access_js_1 = require("../access.js");
34
+ const providers_js_1 = require("../auth/providers.js");
35
+ const errors_js_1 = require("../errors.js");
36
+ const utils_js_1 = require("../utils.js");
37
+ function toJWSAlg(c) {
38
+ const { algorithm } = c;
39
+ switch (algorithm.name) {
40
+ case 'RSASSA-PKCS1-v1_5':
41
+ case 'RSA-PSS':
42
+ case 'RSA-OAEP': {
43
+ const r = algorithm;
44
+ switch (r.modulusLength) {
45
+ case 2048:
46
+ return 'RS256';
47
+ case 3072:
48
+ return 'RS384';
49
+ case 4096:
50
+ return 'RS512';
51
+ }
52
+ break;
53
+ }
54
+ case 'ECDSA':
55
+ case 'ECDH': {
56
+ return 'ES256';
57
+ }
58
+ }
59
+ throw new errors_js_1.ConfigurationError(`unsupported key algorithm ${JSON.stringify(algorithm)}`);
60
+ }
61
+ async function generateEphemeralKeyPair() {
62
+ const { publicKey, privateKey } = await (0, index_js_1.generateKeyPair)();
63
+ if (!privateKey || !publicKey) {
64
+ throw Error('Key pair generation failed');
65
+ }
66
+ return { publicKey, privateKey };
67
+ }
68
+ async function generateSignerKeyPair() {
69
+ return crypto.subtle.generateKey({
70
+ name: 'RSASSA-PKCS1-v1_5',
71
+ hash: 'SHA-256',
72
+ modulusLength: 2048,
73
+ publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
74
+ }, true, ['sign', 'verify']);
75
+ }
76
+ /**
77
+ * A Client encapsulates sessions interacting with TDF3 and nanoTDF backends, KAS and any
78
+ * plugin-based sessions like identity and further attribute control. Most importantly, it is responsible
79
+ * for local key and token management, including the ephemeral public/private keypairs
80
+ * used for encrypting and decrypting information.
81
+ *
82
+ * @link https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair
83
+ *
84
+ * @example
85
+ * import { Client, clientAuthProvider, decrypt, encrypt } from '@opentdf/sdk/nanotdf`
86
+ *
87
+ * const OIDC_ENDPOINT = 'http://localhost:65432/auth/';
88
+ * const KAS_URL = 'http://localhost:65432/kas';
89
+ *
90
+ * let client = new Client(
91
+ * await clientAuthProvider({
92
+ * clientId: 'tdf-client',
93
+ * clientSecret: '123-456',
94
+ * oidcOrigin: OIDC_ENDPOINT,
95
+ * }),
96
+ * KAS_URL
97
+ * );
98
+ *
99
+ * // t=1
100
+ * let nanoTDFEncrypted = await encrypt('some string', client.unwrappedKey);
101
+ * let nanoTDFDecrypted = await decrypt(nanoTDFEncrypted, client.unwrappedKey);
102
+ * nanoTDFDecrypted.toString() // 'some string'
103
+ *
104
+ */
105
+ class Client {
106
+ /**
107
+ * Create new NanoTDF Client
108
+ *
109
+ * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
110
+ * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
111
+ * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
112
+ */
113
+ constructor(optsOrOldAuthProvider, kasUrl, ephemeralKeyPair, dpopEnabled = false) {
114
+ this.dissems = [];
115
+ this.dataAttributes = [];
116
+ if ((0, providers_js_1.isAuthProvider)(optsOrOldAuthProvider)) {
117
+ this.authProvider = optsOrOldAuthProvider;
118
+ if (!kasUrl) {
119
+ throw new errors_js_1.ConfigurationError('please specify kasEndpoint');
120
+ }
121
+ // TODO Disallow http KAS. For now just log as error
122
+ (0, utils_js_1.validateSecureUrl)(kasUrl);
123
+ this.kasUrl = kasUrl;
124
+ this.allowedKases = new access_js_1.OriginAllowList([kasUrl]);
125
+ this.dpopEnabled = dpopEnabled;
126
+ if (ephemeralKeyPair) {
127
+ this.ephemeralKeyPair = Promise.resolve(ephemeralKeyPair);
128
+ }
129
+ else {
130
+ this.ephemeralKeyPair = generateEphemeralKeyPair();
131
+ }
132
+ this.iv = 1;
133
+ }
134
+ else {
135
+ const { allowedKases, ignoreAllowList, authProvider, dpopEnabled, dpopKeys, ephemeralKeyPair, kasEndpoint, } = optsOrOldAuthProvider;
136
+ this.authProvider = authProvider;
137
+ // TODO Disallow http KAS. For now just log as error
138
+ (0, utils_js_1.validateSecureUrl)(kasEndpoint);
139
+ this.kasUrl = kasEndpoint;
140
+ this.allowedKases = new access_js_1.OriginAllowList(allowedKases || [kasEndpoint], !!ignoreAllowList);
141
+ this.dpopEnabled = !!dpopEnabled;
142
+ if (dpopKeys) {
143
+ this.requestSignerKeyPair = dpopKeys;
144
+ }
145
+ else {
146
+ this.requestSignerKeyPair = generateSignerKeyPair();
147
+ }
148
+ if (ephemeralKeyPair) {
149
+ this.ephemeralKeyPair = ephemeralKeyPair;
150
+ }
151
+ else {
152
+ this.ephemeralKeyPair = generateEphemeralKeyPair();
153
+ }
154
+ this.iv = 1;
155
+ }
156
+ }
157
+ /**
158
+ * Add attribute to the TDF file/data
159
+ *
160
+ * @param attribute The attribute that decides the access control of the TDF.
161
+ */
162
+ addAttribute(attribute) {
163
+ this.dataAttributes.push(attribute);
164
+ }
165
+ /**
166
+ * Explicitly get a new Entity Object using the supplied EntityAttributeService.
167
+ *
168
+ * This method is expected to be called at least once per encrypt/decrypt cycle. If the entityObject is expired then
169
+ * this will need to be called again.
170
+ *
171
+ * @security the ephemeralKeyPair must be set in the constructor if desired to use here. If this is wished to be changed
172
+ * then a new client should be initialized.
173
+ * @performance key pair is generated when the entity object is fetched IFF the ephemeralKeyPair is not set. This will
174
+ * either be set on the first call or passed in the constructor.
175
+ */
176
+ async fetchOIDCToken() {
177
+ const signer = await this.requestSignerKeyPair;
178
+ if (!signer) {
179
+ throw new errors_js_1.ConfigurationError('failed to find or generate signer session key');
180
+ }
181
+ await this.authProvider.updateClientPublicKey(signer);
182
+ }
183
+ /**
184
+ * Rewrap key
185
+ *
186
+ * @important the `fetchEntityObject` method must be called prior to
187
+ * @param nanoTdfHeader the full header for the nanotdf
188
+ * @param kasRewrapUrl key access server's rewrap endpoint
189
+ * @param magicNumberVersion nanotdf container version
190
+ * @param clientVersion version of the client, as SemVer
191
+ */
192
+ async rewrapKey(nanoTdfHeader, kasRewrapUrl, magicNumberVersion, clientVersion) {
193
+ if (!this.allowedKases.allows(kasRewrapUrl)) {
194
+ throw new errors_js_1.UnsafeUrlError(`request URL ∉ ${this.allowedKases.origins};`, kasRewrapUrl);
195
+ }
196
+ // Ensure the ephemeral key pair has been set or generated (see createOidcServiceProvider)
197
+ await this.fetchOIDCToken();
198
+ const ephemeralKeyPair = await this.ephemeralKeyPair;
199
+ const requestSignerKeyPair = await this.requestSignerKeyPair;
200
+ // Ensure the ephemeral key pair has been set or generated (see fetchEntityObject)
201
+ if (!ephemeralKeyPair?.privateKey) {
202
+ throw new errors_js_1.ConfigurationError('Ephemeral key has not been set or generated');
203
+ }
204
+ if (!requestSignerKeyPair?.privateKey) {
205
+ throw new errors_js_1.ConfigurationError('Signer key has not been set or generated');
206
+ }
207
+ const requestBodyStr = JSON.stringify({
208
+ algorithm: DefaultParams_js_1.default.defaultECAlgorithm,
209
+ // nano keyAccess minimum, header is used for nano
210
+ keyAccess: {
211
+ type: Client.KEY_ACCESS_REMOTE,
212
+ url: '',
213
+ protocol: Client.KAS_PROTOCOL,
214
+ header: base64.encodeArrayBuffer(nanoTdfHeader),
215
+ },
216
+ clientPublicKey: await (0, utils_js_1.cryptoPublicToPem)(ephemeralKeyPair.publicKey),
217
+ });
218
+ const jwtPayload = { requestBody: requestBodyStr };
219
+ const requestBody = {
220
+ signedRequestToken: await (0, providers_js_1.reqSignature)(jwtPayload, requestSignerKeyPair.privateKey, {
221
+ alg: toJWSAlg(requestSignerKeyPair.publicKey),
222
+ }),
223
+ };
224
+ // Wrapped
225
+ const wrappedKey = await (0, access_js_1.fetchWrappedKey)(kasRewrapUrl, requestBody, this.authProvider, clientVersion);
226
+ // Extract the iv and ciphertext
227
+ const entityWrappedKey = new Uint8Array(base64.decodeArrayBuffer(wrappedKey.entityWrappedKey));
228
+ const ivLength = clientVersion == Client.SDK_INITIAL_RELEASE ? Client.INITIAL_RELEASE_IV_SIZE : Client.IV_SIZE;
229
+ const iv = entityWrappedKey.subarray(0, ivLength);
230
+ const encryptedSharedKey = entityWrappedKey.subarray(ivLength);
231
+ let kasPublicKey;
232
+ try {
233
+ // Let us import public key as a cert or public key
234
+ kasPublicKey = await (0, utils_js_1.pemToCryptoPublicKey)(wrappedKey.sessionPublicKey);
235
+ }
236
+ catch (cause) {
237
+ throw new errors_js_1.ConfigurationError(`internal: [${kasRewrapUrl}] PEM Public Key to crypto public key failed. Is PEM formatted correctly?`, cause);
238
+ }
239
+ let hkdfSalt;
240
+ try {
241
+ // Get the hkdf salt params
242
+ hkdfSalt = await (0, getHkdfSalt_js_1.default)(magicNumberVersion);
243
+ }
244
+ catch (e) {
245
+ throw new errors_js_1.TdfError('salting hkdf failed', e);
246
+ }
247
+ const { privateKey } = await this.ephemeralKeyPair;
248
+ // Get the unwrapping key
249
+ let unwrappingKey;
250
+ try {
251
+ unwrappingKey = await (0, index_js_1.keyAgreement)(
252
+ // Ephemeral private key
253
+ privateKey, kasPublicKey, hkdfSalt);
254
+ }
255
+ catch (e) {
256
+ if (e.name == 'InvalidAccessError' || e.name == 'OperationError') {
257
+ throw new errors_js_1.DecryptError('unable to solve key agreement', e);
258
+ }
259
+ else if (e.name == 'NotSupported') {
260
+ throw new errors_js_1.ConfigurationError('unable to unwrap key from kas', e);
261
+ }
262
+ throw new errors_js_1.TdfError('unable to reach agreement', e);
263
+ }
264
+ const authTagLength = 8 * (encryptedSharedKey.byteLength - 32);
265
+ let decryptedKey;
266
+ try {
267
+ // Decrypt the wrapped key
268
+ decryptedKey = await crypto.subtle.decrypt({ name: 'AES-GCM', iv, tagLength: authTagLength }, unwrappingKey, encryptedSharedKey);
269
+ }
270
+ catch (cause) {
271
+ throw new errors_js_1.DecryptError(`unable to decrypt key. Are you using the right KAS? Is the salt correct?`, cause);
272
+ }
273
+ // UnwrappedKey
274
+ let unwrappedKey;
275
+ try {
276
+ unwrappedKey = await crypto.subtle.importKey('raw', decryptedKey, 'AES-GCM',
277
+ // @security This allows the key to be used in `exportKey` and `wrapKey`
278
+ // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey
279
+ // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/wrapKey
280
+ true,
281
+ // Want to use the key to encrypt and decrypt. Signing key will be used later.
282
+ ['encrypt', 'decrypt']);
283
+ }
284
+ catch (cause) {
285
+ throw new errors_js_1.DecryptError('Unable to import raw key.', cause);
286
+ }
287
+ return unwrappedKey;
288
+ }
289
+ }
290
+ Client.KEY_ACCESS_REMOTE = 'remote';
291
+ Client.KAS_PROTOCOL = 'kas';
292
+ Client.SDK_INITIAL_RELEASE = '0.0.0';
293
+ Client.INITIAL_RELEASE_IV_SIZE = 3;
294
+ Client.IV_SIZE = 12;
295
+ exports.default = Client;
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrREFBaUQ7QUFDakQseURBQTJFO0FBQzNFLDhFQUFtRDtBQUNuRCxpRkFBc0Q7QUFDdEQsNENBQWtGO0FBQ2xGLHVEQUFrRjtBQUNsRiw0Q0FBMEY7QUFDMUYsMENBQXlGO0FBWXpGLFNBQVMsUUFBUSxDQUFDLENBQVk7SUFDNUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4QixRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUU7UUFDdEIsS0FBSyxtQkFBbUIsQ0FBQztRQUN6QixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssVUFBVSxDQUFDLENBQUM7WUFDZixNQUFNLENBQUMsR0FBRyxTQUFrQyxDQUFDO1lBQzdDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBRTtnQkFDdkIsS0FBSyxJQUFJO29CQUNQLE9BQU8sT0FBTyxDQUFDO2dCQUNqQixLQUFLLElBQUk7b0JBQ1AsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUssSUFBSTtvQkFDUCxPQUFPLE9BQU8sQ0FBQzthQUNsQjtZQUNELE1BQU07U0FDUDtRQUNELEtBQUssT0FBTyxDQUFDO1FBQ2IsS0FBSyxNQUFNLENBQUMsQ0FBQztZQUNYLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO0tBQ0Y7SUFDRCxNQUFNLElBQUksOEJBQWtCLENBQUMsNkJBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUFFRCxLQUFLLFVBQVUsd0JBQXdCO0lBQ3JDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBCQUFlLEdBQUUsQ0FBQztJQUMxRCxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMs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
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const index_js_1 = require("../encodings/index.js");
7
+ const Header_js_1 = __importDefault(require("./models/Header.js"));
8
+ const Payload_js_1 = __importDefault(require("./models/Payload.js"));
9
+ const Signature_js_1 = __importDefault(require("./models/Signature.js"));
10
+ const EncodingEnum_js_1 = __importDefault(require("./enum/EncodingEnum.js"));
11
+ const errors_js_1 = require("../errors.js");
12
+ // Defaults when none set during encryption
13
+ class NanoTDF {
14
+ static from(content, encoding, legacyTDF = false) {
15
+ // If we don't assign an empty array buffer then TS reports buffer as unassigned
16
+ let buffer;
17
+ if (typeof content === 'string') {
18
+ if (!encoding || encoding === EncodingEnum_js_1.default.Base64) {
19
+ buffer = index_js_1.base64.decodeArrayBuffer(content);
20
+ }
21
+ else {
22
+ throw new errors_js_1.ConfigurationError(`Unsupported encoding: ${encoding}`);
23
+ }
24
+ }
25
+ // Handle Uint8Array types
26
+ else if (ArrayBuffer.isView(content) || content instanceof ArrayBuffer) {
27
+ buffer = content;
28
+ }
29
+ else {
30
+ throw new errors_js_1.ConfigurationError(`unsupported content type`);
31
+ }
32
+ const dataView = new Uint8Array(buffer);
33
+ let offset = 0;
34
+ // Header
35
+ const { header, offset: headerOffset } = Header_js_1.default.parse(dataView.subarray(offset));
36
+ offset += headerOffset;
37
+ // Payload
38
+ const { payload, offset: payloadOffset } = Payload_js_1.default.parse(header, dataView.subarray(offset), legacyTDF);
39
+ offset += payloadOffset;
40
+ // Signature
41
+ const { signature, offset: signatureOffset } = Signature_js_1.default.parse(header, dataView.subarray(offset));
42
+ offset += signatureOffset;
43
+ // Singature checking
44
+ if (!header.hasSignature && signature.length > 0) {
45
+ throw new errors_js_1.InvalidFileError("Found signature when there shouldn't be one");
46
+ }
47
+ if (header.hasSignature && signature.length === 0) {
48
+ throw new errors_js_1.InvalidFileError('Could not find signature');
49
+ }
50
+ return new NanoTDF(header, payload, signature);
51
+ }
52
+ constructor(header, payload, signature) {
53
+ this.header = header;
54
+ this.payload = payload;
55
+ this.signature = signature;
56
+ }
57
+ /**
58
+ * Return the content of nano tdf as binary buffer
59
+ */
60
+ toBuffer() {
61
+ let offset = 0;
62
+ const lengthOfSignature = this.signature && this.signature.length ? this.signature.length : 0;
63
+ const lengthOfTDF = this.header.length + this.payload.length + lengthOfSignature;
64
+ const buffer = new ArrayBuffer(lengthOfTDF);
65
+ // Write the header
66
+ const headerBufferView = new Uint8Array(buffer, 0, this.header.length);
67
+ this.header.copyToBuffer(headerBufferView);
68
+ offset += headerBufferView.length;
69
+ // Write the payload
70
+ const payloadBufferView = new Uint8Array(buffer, offset, this.payload.length);
71
+ this.payload.copyToBuffer(payloadBufferView);
72
+ offset += payloadBufferView.length;
73
+ // Write the signature
74
+ if (this.header.hasSignature && this.signature) {
75
+ const signatureBufferView = new Uint8Array(buffer, offset, lengthOfSignature);
76
+ this.signature.copyToBuffer(signatureBufferView);
77
+ }
78
+ return buffer;
79
+ }
80
+ /**
81
+ * Return the content of nano tdf as base64 string
82
+ */
83
+ toBase64() {
84
+ const arrayBuffer = this.toBuffer();
85
+ return index_js_1.base64.encodeArrayBuffer(arrayBuffer);
86
+ }
87
+ }
88
+ // Add encodings to the NanoTDF class for easy access
89
+ NanoTDF.Encodings = EncodingEnum_js_1.default;
90
+ NanoTDF.Header = Header_js_1.default;
91
+ NanoTDF.Payload = Payload_js_1.default;
92
+ NanoTDF.Signature = Signature_js_1.default;
93
+ exports.default = NanoTDF;
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFub1RERi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL05hbm9UREYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxvREFBK0M7QUFDL0MsbUVBQXdDO0FBQ3hDLHFFQUEwQztBQUMxQyx5RUFBOEM7QUFDOUMsNkVBQWtEO0FBQ2xELDRDQUFvRTtBQUVwRSwyQ0FBMkM7QUFFM0MsTUFBcUIsT0FBTztJQWExQixNQUFNLENBQUMsSUFBSSxDQUNULE9BQTBDLEVBQzFDLFFBQXVCLEVBQ3ZCLFNBQVMsR0FBRyxLQUFLO1FBRWpCLGdGQUFnRjtRQUNoRixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxLQUFLLHlCQUFZLENBQUMsTUFBTSxFQUFFO2dCQUNqRCxNQUFNLEdBQUcsaUJBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDTCxNQUFNLElBQUksOEJBQWtCLENBQUMseUJBQXlCLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDbkU7U0FDRjtRQUNELDBCQUEwQjthQUNyQixJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxZQUFZLFdBQVcsRUFBRTtZQUN0RSxNQUFNLEdBQUcsT0FBTyxDQUFDO1NBQ2xCO2FBQU07WUFDTCxNQUFNLElBQUksOEJBQWtCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUMxRDtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVmLFNBQVM7UUFDVCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxtQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxD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
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* globals window */
7
+ /**
8
+ * This file is used for:
9
+ *
10
+ * - es5 browser version of nanoTDF and add it to the window as NanoTDF
11
+ *
12
+ * This is not used for:
13
+ *
14
+ * - es6 web development (use node modules)
15
+ * - node applications
16
+ */
17
+ const NanoTDF_js_1 = __importDefault(require("./NanoTDF.js"));
18
+ window.NanoTDF = NanoTDF_js_1.default;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2Jyb3dzZXItZW50cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvQkFBb0I7QUFDcEI7Ozs7Ozs7OztHQVNHO0FBQ0gsOERBQW1DO0FBUW5DLE1BQU0sQ0FBQyxPQUFPLEdBQUcsb0JBQU8sQ0FBQyJ9
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GMAC_BINDING_LEN = void 0;
4
+ exports.GMAC_BINDING_LEN = 8;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_js_1 = require("../nanotdf-crypto/index.js");
4
+ /**
5
+ * Decrypt nanotdf with a crypto key
6
+ *
7
+ * @param key Crypto key used to decrypt nanotdf
8
+ * @param nanotdf NanoTDF to decrypt
9
+ */
10
+ async function decrypt(key, nanotdf) {
11
+ // console.log(`Decrypting for content: ${nanotdf}`, nanotdf.header.authTagLength);
12
+ return await (0, index_js_1.decrypt)(key, nanotdf.payload.ciphertextWithAuthTag, nanotdf.payload.iv,
13
+ // Auth tag length in bits
14
+ nanotdf.header.authTagLength);
15
+ }
16
+ exports.default = decrypt;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2RlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5REFBc0U7QUFHdEU7Ozs7O0dBS0c7QUFDWSxLQUFLLFVBQVUsT0FBTyxDQUFDLEdBQWMsRUFBRSxPQUFnQjtJQUNwRSxtRkFBbUY7SUFDbkYsT0FBTyxNQUFNLElBQUEsa0JBQWEsRUFDeEIsR0FBRyxFQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQ3JDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNsQiwwQkFBMEI7SUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQzdCLENBQUM7QUFDSixDQUFDO0FBVEQsMEJBU0MifQ==
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const NanoTDF_js_1 = __importDefault(require("./NanoTDF.js"));
7
+ const DefaultParams_js_1 = __importDefault(require("./models/DefaultParams.js"));
8
+ const Payload_js_1 = __importDefault(require("./models/Payload.js"));
9
+ const Ciphers_js_1 = require("./models/Ciphers.js");
10
+ const encrypt_js_1 = __importDefault(require("../nanotdf-crypto/encrypt.js"));
11
+ /**
12
+ * Encrypt the plain data into nanotdf buffer
13
+ *
14
+ * @param symmetricKey Key to encrypt the payload
15
+ * @param header NanoTDF header
16
+ * @param iv IV to be used for encrypting the payload
17
+ * @param data The data to be encrypted
18
+ */
19
+ async function encryptDataset(symmetricKey, header, iv, data) {
20
+ // Auth tag length for policy and payload
21
+ const authTagLengthInBytes = (0, Ciphers_js_1.getBitLength)(DefaultParams_js_1.default.symmetricCipher) / 8;
22
+ // Encrypt the payload
23
+ let payloadAsBuffer;
24
+ if (typeof data === 'string') {
25
+ payloadAsBuffer = new TextEncoder().encode(data);
26
+ }
27
+ else {
28
+ payloadAsBuffer = data;
29
+ }
30
+ const encryptedPayload = await (0, encrypt_js_1.default)(symmetricKey, new Uint8Array(payloadAsBuffer), iv, authTagLengthInBytes * 8);
31
+ // Create payload
32
+ const payload = new Payload_js_1.default(iv.slice(-3), new Uint8Array(encryptedPayload.slice(0, -authTagLengthInBytes)), new Uint8Array(encryptedPayload.slice(-authTagLengthInBytes)));
33
+ // Create a nanotdf.
34
+ const nanoTDF = new NanoTDF_js_1.default(header, payload);
35
+ return nanoTDF.toBuffer();
36
+ }
37
+ exports.default = encryptDataset;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvZW5jcnlwdC1kYXRhc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOERBQW1DO0FBRW5DLGlGQUFzRDtBQUN0RCxxRUFBMEM7QUFDMUMsb0RBQTZFO0FBRTdFLDhFQUFtRDtBQUVuRDs7Ozs7OztHQU9HO0FBQ1ksS0FBSyxVQUFVLGNBQWMsQ0FDMUMsWUFBdUIsRUFDdkIsTUFBYyxFQUNkLEVBQWMsRUFDZCxJQUF1QztJQUV2Qyx5Q0FBeUM7SUFDekMsTUFBTSxvQkFBb0IsR0FBRyxJQUFBLHlCQUFzQixFQUFDLDBCQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZGLHNCQUFzQjtJQUN0QixJQUFJLGVBQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixlQUFlLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEQ7U0FBTTtRQUNMLGVBQWUsR0FBRyxJQUFJLENBQUM7S0FDeEI7SUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBQSxvQkFBTyxFQUNwQyxZQUFZLEVBQ1osSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQy9CLEVBQUUsRUFDRixvQkFBb0IsR0FBRyxDQUFDLENBQ3pCLENBQUM7SUFFRixpQkFBaUI7SUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBTyxDQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ1osSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFDaEUsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUM5RCxDQUFDO0lBRUYsb0JBQW9CO0lBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFN0MsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQW5DRCxpQ0FtQ0MifQ==
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const NanoTDF_js_1 = __importDefault(require("./NanoTDF.js"));
7
+ const Header_js_1 = __importDefault(require("./models/Header.js"));
8
+ const ResourceLocator_js_1 = __importDefault(require("./models/ResourceLocator.js"));
9
+ const DefaultParams_js_1 = __importDefault(require("./models/DefaultParams.js"));
10
+ const EmbeddedPolicy_js_1 = __importDefault(require("./models/Policy/EmbeddedPolicy.js"));
11
+ const Payload_js_1 = __importDefault(require("./models/Payload.js"));
12
+ const getHkdfSalt_js_1 = __importDefault(require("./helpers/getHkdfSalt.js"));
13
+ const Ciphers_js_1 = require("./models/Ciphers.js");
14
+ const constants_js_1 = require("./constants.js");
15
+ const enums_js_1 = require("./../nanotdf-crypto/enums.js");
16
+ const index_js_1 = require("../nanotdf-crypto/index.js");
17
+ const ecdsaSignature_js_1 = require("../nanotdf-crypto/ecdsaSignature.js");
18
+ const errors_js_1 = require("../errors.js");
19
+ /**
20
+ * Encrypt the plain data into nanotdf buffer
21
+ *
22
+ * @param policy Policy that will added to the nanotdf
23
+ * @param kasInfo KAS url and public key data
24
+ * @param ephemeralKeyPair SDK ephemeral key pair to generate symmetric key
25
+ * @param iv
26
+ * @param data The data to be encrypted
27
+ * @param ecdsaBinding Flag to enable ECDSA binding
28
+ */
29
+ async function encrypt(policy, kasInfo, ephemeralKeyPair, iv, data, ecdsaBinding = DefaultParams_js_1.default.ecdsaBinding) {
30
+ // Generate a symmetric key.
31
+ if (!ephemeralKeyPair.privateKey) {
32
+ throw new errors_js_1.ConfigurationError('incomplete ephemeral key');
33
+ }
34
+ const symmetricKey = await (0, index_js_1.keyAgreement)(ephemeralKeyPair.privateKey, await kasInfo.key,
35
+ // Get the hkdf salt params
36
+ await (0, getHkdfSalt_js_1.default)(DefaultParams_js_1.default.magicNumberVersion));
37
+ // Construct the kas locator
38
+ const kasResourceLocator = ResourceLocator_js_1.default.fromURL(kasInfo.url, kasInfo.kid);
39
+ // Auth tag length for policy and payload
40
+ const authTagLengthInBytes = (0, Ciphers_js_1.getBitLength)(DefaultParams_js_1.default.symmetricCipher) / 8;
41
+ // Encrypt the policy
42
+ const policyIV = new Uint8Array(iv.length).fill(0);
43
+ const policyAsBuffer = new TextEncoder().encode(policy);
44
+ const encryptedPolicy = await (0, index_js_1.encrypt)(symmetricKey, policyAsBuffer, policyIV, authTagLengthInBytes * 8);
45
+ let policyBinding;
46
+ // Calculate the policy binding.
47
+ if (ecdsaBinding) {
48
+ const curveName = await getCurveNameFromPrivateKey(ephemeralKeyPair.privateKey);
49
+ const ecdsaPrivateKey = await convertECDHToECDSA(ephemeralKeyPair.privateKey, curveName);
50
+ const ecdsaSignature = await (0, ecdsaSignature_js_1.computeECDSASig)(ecdsaPrivateKey, new Uint8Array(encryptedPolicy));
51
+ const { r, s } = (0, ecdsaSignature_js_1.extractRSValuesFromSignature)(new Uint8Array(ecdsaSignature));
52
+ const rLength = r.length;
53
+ const sLength = s.length;
54
+ policyBinding = new Uint8Array(1 + rLength + 1 + sLength);
55
+ // Set the lengths and values of r and s in policyBinding
56
+ policyBinding[0] = rLength;
57
+ policyBinding.set(r, 1);
58
+ policyBinding[1 + rLength] = sLength;
59
+ policyBinding.set(s, 1 + rLength + 1);
60
+ }
61
+ else {
62
+ const signature = await (0, index_js_1.digest)('SHA-256', new Uint8Array(encryptedPolicy));
63
+ policyBinding = new Uint8Array(signature.slice(-constants_js_1.GMAC_BINDING_LEN));
64
+ }
65
+ // Create embedded policy
66
+ const embeddedPolicy = new EmbeddedPolicy_js_1.default(DefaultParams_js_1.default.policyType, policyBinding, new Uint8Array(encryptedPolicy));
67
+ if (!ephemeralKeyPair.publicKey) {
68
+ throw new errors_js_1.ConfigurationError('incomplete ephemeral key');
69
+ }
70
+ // Create a header
71
+ const pubKeyAsArrayBuffer = await (0, index_js_1.exportCryptoKey)(ephemeralKeyPair.publicKey);
72
+ const header = new Header_js_1.default(DefaultParams_js_1.default.magicNumberVersion, kasResourceLocator, ecdsaBinding, DefaultParams_js_1.default.signatureCurveName, DefaultParams_js_1.default.signature, DefaultParams_js_1.default.signatureCurveName, DefaultParams_js_1.default.symmetricCipher, embeddedPolicy, new Uint8Array(pubKeyAsArrayBuffer));
73
+ // Encrypt the payload
74
+ let payloadAsBuffer;
75
+ if (typeof data === 'string') {
76
+ payloadAsBuffer = new TextEncoder().encode(data);
77
+ }
78
+ else {
79
+ payloadAsBuffer = data;
80
+ }
81
+ const encryptedPayload = await (0, index_js_1.encrypt)(symmetricKey, new Uint8Array(payloadAsBuffer), iv, authTagLengthInBytes * 8);
82
+ // Create payload
83
+ const payload = new Payload_js_1.default(iv.slice(-3), new Uint8Array(encryptedPayload.slice(0, -authTagLengthInBytes)), new Uint8Array(encryptedPayload.slice(-authTagLengthInBytes)));
84
+ // Create a nanotdf.
85
+ const nanoTDF = new NanoTDF_js_1.default(header, payload);
86
+ return nanoTDF.toBuffer();
87
+ }
88
+ exports.default = encrypt;
89
+ /**
90
+ * Retrieves the curve name from a given ECDH private key.
91
+ *
92
+ * This function exports the provided ECDH private key in JWK format and extracts
93
+ * the curve name from the 'crv' property of the JWK.
94
+ *
95
+ * @param {CryptoKey} privateKey - The ECDH private key from which to retrieve the curve name.
96
+ * @returns {Promise<string>} - A promise that resolves to the curve name.
97
+ *
98
+ * @throws {Error} - Throws an error if the curve name is undefined.
99
+ *
100
+ */
101
+ async function getCurveNameFromPrivateKey(privateKey) {
102
+ // Export the private key
103
+ const keyData = await crypto.subtle.exportKey('jwk', privateKey);
104
+ // The curve name is stored in the 'crv' property of the JWK
105
+ if (!keyData.crv) {
106
+ throw new errors_js_1.ConfigurationError('curve name is undefined (bad private key)');
107
+ }
108
+ return keyData.crv;
109
+ }
110
+ /**
111
+ * Converts an ECDH private key to an ECDSA private key.
112
+ *
113
+ * This function exports the given ECDH private key in PKCS#8 format and then
114
+ * imports it as an ECDSA private key using the specified curve name.
115
+ *
116
+ * @param {CryptoKey} key - The ECDH private key to be converted.
117
+ * @param {string} curveName - The name of the elliptic curve to be used for the ECDSA key.
118
+ * @returns {Promise<CryptoKey>} - A promise that resolves to the converted ECDSA private key.
119
+ *
120
+ * @throws {Error} - Throws an error if the key export or import fails.
121
+ */
122
+ async function convertECDHToECDSA(key, curveName) {
123
+ // Export the ECDH private key
124
+ const ecdhPrivateKey = await crypto.subtle.exportKey('pkcs8', key);
125
+ // Import the ECDH private key as an ECDSA private key
126
+ const ecdsaPrivateKey = await crypto.subtle.importKey(enums_js_1.KeyFormat.Pkcs8, ecdhPrivateKey, {
127
+ name: enums_js_1.AlgorithmName.ECDSA,
128
+ namedCurve: curveName,
129
+ }, true, [enums_js_1.KeyUsageType.Sign]);
130
+ return ecdsaPrivateKey;
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2VuY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4REFBbUM7QUFDbkMsbUVBQXdDO0FBQ3hDLHFGQUEwRDtBQUMxRCxpRkFBc0Q7QUFDdEQsMEZBQStEO0FBQy9ELHFFQUEwQztBQUMxQyw4RUFBbUQ7QUFDbkQsb0RBQTZFO0FBRTdFLGlEQUFrRDtBQUNsRCwyREFBc0Y7QUFFdEYseURBS29DO0FBRXBDLDJFQUFvRztBQUNwRyw0Q0FBa0Q7QUFFbEQ7Ozs7Ozs7OztHQVNHO0FBQ1ksS0FBSyxVQUFVLE9BQU8sQ0FDbkMsTUFBYyxFQUNkLE9BQXlCLEVBQ3pCLGdCQUErQixFQUMvQixFQUFjLEVBQ2QsSUFBdUMsRUFDdkMsZUFBd0IsMEJBQWEsQ0FBQyxZQUFZO0lBRWxELDRCQUE0QjtJQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1FBQ2hDLE1BQU0sSUFBSSw4QkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQzFEO0lBQ0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLHVCQUFZLEVBQ3JDLGdCQUFnQixDQUFDLFVBQVUsRUFDM0IsTUFBTSxPQUFPLENBQUMsR0FBRztJQUNqQiwyQkFBMkI7SUFDM0IsTUFBTSxJQUFBLHdCQUFXLEVBQUMsMEJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUNwRCxDQUFDO0lBRUYsNEJBQTRCO0lBQzVCLE1BQU0sa0JBQWtCLEdBQUcsNEJBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0UseUNBQXlDO0lBQ3pDLE1BQU0sb0JBQW9CLEdBQUcsSUFBQSx5QkFBc0IsRUFBQywwQkFBYSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV2RixxQkFBcUI7SUFDckIsTUFBTSxRQUFRLEdB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
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var CipherEnum;
4
+ (function (CipherEnum) {
5
+ CipherEnum[CipherEnum["AES_256_GCM_64"] = 0] = "AES_256_GCM_64";
6
+ CipherEnum[CipherEnum["AES_256_GCM_96"] = 1] = "AES_256_GCM_96";
7
+ CipherEnum[CipherEnum["AES_256_GCM_104"] = 2] = "AES_256_GCM_104";
8
+ CipherEnum[CipherEnum["AES_256_GCM_112"] = 3] = "AES_256_GCM_112";
9
+ CipherEnum[CipherEnum["AES_256_GCM_120"] = 4] = "AES_256_GCM_120";
10
+ CipherEnum[CipherEnum["AES_256_GCM_128"] = 5] = "AES_256_GCM_128";
11
+ })(CipherEnum || (CipherEnum = {}));
12
+ exports.default = CipherEnum;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2lwaGVyRW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2VudW0vQ2lwaGVyRW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLElBQUssVUFPSjtBQVBELFdBQUssVUFBVTtJQUNiLCtEQUFjLENBQUE7SUFDZCwrREFBYyxDQUFBO0lBQ2QsaUVBQWUsQ0FBQTtJQUNmLGlFQUFlLENBQUE7SUFDZixpRUFBZSxDQUFBO0lBQ2YsaUVBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUEksVUFBVSxLQUFWLFVBQVUsUUFPZDtBQUVELGtCQUFlLFVBQVUsQ0FBQyJ9