@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,30 @@
1
+ import { Ciphers, CipherTagLengths } from './ciphers.js';
2
+
3
+ /**
4
+ * Encrypt plaintext buffer to ciphertext buffer
5
+ *
6
+ * Only supports AES-GCM
7
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/decrypt
8
+ *
9
+ * @param key Encryption key
10
+ * @param plaintext Bytes to encrypt
11
+ * @param iv Initialization vector
12
+ * @param tagLength Size (bits) of authentication tag
13
+ * @returns Resolves ciphertext buffer
14
+ */
15
+ export default async function encrypt(
16
+ key: CryptoKey,
17
+ plaintext: Uint8Array,
18
+ iv: Uint8Array,
19
+ tagLength?: number
20
+ ): Promise<ArrayBuffer> {
21
+ return crypto.subtle.encrypt(
22
+ {
23
+ name: Ciphers.AesGcm,
24
+ iv,
25
+ tagLength: tagLength || CipherTagLengths.AesGcm,
26
+ },
27
+ key,
28
+ plaintext
29
+ );
30
+ }
@@ -0,0 +1,47 @@
1
+ export enum AlgorithmName {
2
+ ECDH = 'ECDH',
3
+ ECDSA = 'ECDSA',
4
+ ES256 = 'ES256',
5
+ HKDF = 'HKDF',
6
+ RSA_OAEP = 'RSA-OAEP',
7
+ RSA_PSS = 'RSA-PSS',
8
+ }
9
+
10
+ export enum NamedCurve {
11
+ P256 = 'P-256',
12
+ P384 = 'P-384',
13
+ P512 = 'P-512',
14
+ }
15
+
16
+ export enum CipherType {
17
+ AesGcm = 'AES-GCM',
18
+ }
19
+
20
+ export enum HashType {
21
+ Sha1 = 'SHA-1',
22
+ Sha256 = 'SHA-256',
23
+ Sha384 = 'SHA-384',
24
+ Sha512 = 'SHA-512',
25
+ }
26
+
27
+ export enum KeyFormat {
28
+ Raw = 'raw',
29
+ Pkcs8 = 'pkcs8',
30
+ Spki = 'spki',
31
+ }
32
+
33
+ export enum KeyType {
34
+ Private = 'private',
35
+ Public = 'public',
36
+ }
37
+
38
+ export enum KeyUsageType {
39
+ Encrypt = 'encrypt',
40
+ Decrypt = 'decrypt',
41
+ DeriveBits = 'deriveBits',
42
+ DeriveKey = 'deriveKey',
43
+ Verify = 'verify',
44
+ Sign = 'sign',
45
+ UnwrapKey = 'unwrapKey',
46
+ WrapKey = 'wrapKey',
47
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ *
3
+ * Export to PEM format to binary buffer
4
+ * - key {CryptoKey} default: "undefined" CryptoKey generated by WebCrypto API
5
+ */
6
+ export default async function exportCryptoKey(key: CryptoKey): Promise<ArrayBuffer> {
7
+ const exportedKey = await crypto.subtle.exportKey('raw', key);
8
+ const keyBuffer = new Uint8Array(exportedKey);
9
+ const len = keyBuffer.byteLength;
10
+ const xPoint = keyBuffer.slice(0, (1 + len) >>> 1); // drop `y`
11
+ xPoint[0] = 0x2 | (keyBuffer[len - 1] & 0x01); // encode sign of `y` in first bit
12
+
13
+ // Copy to Arraybuffer
14
+ const compressedPubKeyBuf = new ArrayBuffer(xPoint.byteLength);
15
+ new Uint8Array(compressedPubKeyBuf).set(new Uint8Array(xPoint));
16
+ return compressedPubKeyBuf;
17
+ }
@@ -0,0 +1,19 @@
1
+ import { AlgorithmName, NamedCurve, KeyUsageType } from './enums.js';
2
+
3
+ interface GenerateKeyPairOptions {
4
+ type: AlgorithmName.ECDH | AlgorithmName.ECDSA;
5
+ curve: NamedCurve;
6
+ keyUsages: Array<KeyUsageType>;
7
+ isExtractable: boolean;
8
+ }
9
+
10
+ export default async function generateKeyPair(
11
+ { type: name, curve: namedCurve, keyUsages, isExtractable }: GenerateKeyPairOptions = {
12
+ type: AlgorithmName.ECDH,
13
+ curve: NamedCurve.P256,
14
+ keyUsages: [KeyUsageType.DeriveBits, KeyUsageType.DeriveKey],
15
+ isExtractable: true,
16
+ }
17
+ ): Promise<CryptoKeyPair | never> {
18
+ return crypto.subtle.generateKey({ name, namedCurve }, isExtractable, keyUsages);
19
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Generate a random number of given length
3
+ */
4
+ export default function generateRandomNumber(length: number): Uint8Array {
5
+ const byteArray = new Uint8Array(length);
6
+ crypto.getRandomValues(byteArray);
7
+ return byteArray;
8
+ }
@@ -0,0 +1,19 @@
1
+ import { CipherType, KeyFormat, KeyUsageType } from './enums.js';
2
+
3
+ /**
4
+ * Import raw key
5
+ *
6
+ * A specific implementation of the importKey method to import raw keys. Specifies some defaults
7
+ * to ensure security.
8
+ *
9
+ * @param key Key which needs to be imported
10
+ * @param keyUsages How the key will be used
11
+ * @param isExtractable Whether key is extractable
12
+ */
13
+ export default async function importRawKey(
14
+ key: ArrayBuffer,
15
+ keyUsages: Array<KeyUsageType>,
16
+ isExtractable = false
17
+ ): Promise<CryptoKey> {
18
+ return crypto.subtle.importKey(KeyFormat.Raw, key, CipherType.AesGcm, isExtractable, keyUsages);
19
+ }
@@ -0,0 +1,11 @@
1
+ export { Ciphers } from './ciphers.js';
2
+ export { default as decrypt } from './decrypt.js';
3
+ export { default as digest } from './digest.js';
4
+ export { default as encrypt } from './encrypt.js';
5
+ export { default as generateKeyPair } from './generateKeyPair.js';
6
+ export { default as importRawKey } from './importRawKey.js';
7
+ export { keyAgreement } from './keyAgreement.js';
8
+ export { default as exportCryptoKey } from './exportCryptoKey.js';
9
+ export { default as generateRandomNumber } from './generateRandomNumber.js';
10
+ export { pemPublicToCrypto, pemCertToCrypto } from './pemPublicToCrypto.js';
11
+ export * as enums from './enums.js';
@@ -0,0 +1,139 @@
1
+ /**
2
+ *
3
+ * Copyright (c) 2016 SafeBash
4
+ * Cryptography consultant: Andrew Kozlik, Ph.D.
5
+ *
6
+ * @link https://github.com/safebash/opencrypto
7
+ *
8
+ */
9
+
10
+ /**
11
+ * MIT License
12
+ *
13
+ * Copyright (c) 2016 SafeBash
14
+ *
15
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
16
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights
17
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
18
+ * to whom the Software is furnished to do so, subject to the following conditions:
19
+ *
20
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
21
+ * Software.
22
+ *
23
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
24
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
26
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
+ */
29
+
30
+ import { ConfigurationError } from '../errors.js';
31
+ import { AlgorithmName, CipherType, HashType, KeyFormat, KeyType, KeyUsageType } from './enums.js';
32
+
33
+ const KEY_USAGE_DERIVE_KEY = 'deriveKey';
34
+
35
+ interface KeyAgreementOptions {
36
+ bitLength: number;
37
+ hkdfHash: HashAlgorithmIdentifier;
38
+ hkdfInfo: Uint8Array;
39
+ hkdfSalt: Uint8Array | ArrayBuffer;
40
+ keyCipher: string;
41
+ keyLength: number;
42
+ keyUsages: KeyUsage[];
43
+ isExtractable: boolean;
44
+ }
45
+
46
+ /**
47
+ *
48
+ * ECDH Key Agreement
49
+ * - publicKey {CryptoKey} default: "undefined"
50
+ * - privateKey {CryptoKey} default: "undefined"
51
+ * - options {Object} default: { bitLength: 256, hkdfHash: 'SHA-512', hkdfSalt: "new UInt8Array()", hkdfInfo: "new UInt8Array()", keyCipher: 'AES-GCM', keyLength: 256, keyUsages: ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'], isExtractable: true }
52
+ */
53
+ export async function keyAgreement(
54
+ privateKey: CryptoKey,
55
+ publicKey: CryptoKey,
56
+ options: Partial<KeyAgreementOptions> = {
57
+ bitLength: 256,
58
+ hkdfHash: HashType.Sha256,
59
+ hkdfInfo: new Uint8Array(),
60
+ hkdfSalt: new Uint8Array(),
61
+ keyCipher: CipherType.AesGcm,
62
+ keyLength: 256,
63
+ keyUsages: [
64
+ KeyUsageType.Encrypt,
65
+ KeyUsageType.Decrypt,
66
+ KeyUsageType.UnwrapKey,
67
+ KeyUsageType.WrapKey,
68
+ ],
69
+ isExtractable: true,
70
+ }
71
+ ): Promise<CryptoKey> {
72
+ if (
73
+ publicKey?.algorithm?.name !== AlgorithmName.ECDSA &&
74
+ publicKey?.algorithm?.name !== AlgorithmName.ECDH
75
+ ) {
76
+ throw new ConfigurationError('CryptoKey is expected to be of type ECDSA or ECDH');
77
+ }
78
+
79
+ if (privateKey.type !== KeyType.Private) {
80
+ throw new ConfigurationError('Expected input of privateKey to be a CryptoKey of type private');
81
+ }
82
+
83
+ if (publicKey.type !== KeyType.Public) {
84
+ throw new ConfigurationError('Expected input of publicKey to be a CryptoKey of type public');
85
+ }
86
+
87
+ const {
88
+ bitLength = 256,
89
+ hkdfHash = HashType.Sha256,
90
+ hkdfInfo = new Uint8Array(),
91
+ hkdfSalt = new Uint8Array(),
92
+ keyCipher = CipherType.AesGcm,
93
+ keyLength = 256,
94
+ isExtractable = true,
95
+ keyUsages = [
96
+ KeyUsageType.Encrypt,
97
+ KeyUsageType.Decrypt,
98
+ KeyUsageType.UnwrapKey,
99
+ KeyUsageType.WrapKey,
100
+ ],
101
+ } = options;
102
+
103
+ const derivedBits = await crypto.subtle.deriveBits(
104
+ {
105
+ name: AlgorithmName.ECDH,
106
+ public: publicKey,
107
+ },
108
+ privateKey,
109
+ bitLength
110
+ );
111
+
112
+ const derivedKey = await crypto.subtle.importKey(
113
+ KeyFormat.Raw,
114
+ derivedBits,
115
+ {
116
+ name: AlgorithmName.HKDF,
117
+ },
118
+ false,
119
+ [KEY_USAGE_DERIVE_KEY]
120
+ );
121
+
122
+ const symmetricKey = await crypto.subtle.deriveKey(
123
+ {
124
+ name: AlgorithmName.HKDF,
125
+ hash: hkdfHash,
126
+ salt: hkdfSalt,
127
+ info: hkdfInfo,
128
+ },
129
+ derivedKey,
130
+ {
131
+ name: keyCipher,
132
+ length: keyLength,
133
+ },
134
+ isExtractable,
135
+ keyUsages
136
+ );
137
+
138
+ return symmetricKey;
139
+ }
@@ -0,0 +1,232 @@
1
+ /**
2
+ *
3
+ * Copyright (c) 2016 SafeBash
4
+ * Cryptography consultant: Andrew Kozlik, Ph.D.
5
+ *
6
+ * @link https://github.com/safebash/opencrypto
7
+ *
8
+ */
9
+
10
+ /**
11
+ * MIT License
12
+ *
13
+ * Copyright (c) 2016 SafeBash
14
+ *
15
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
16
+ * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights
17
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
18
+ * to whom the Software is furnished to do so, subject to the following conditions:
19
+ *
20
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
21
+ * Software.
22
+ *
23
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
24
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
26
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
+ */
29
+
30
+ import * as base64 from '../encodings/base64.js';
31
+ import { importX509 } from 'jose';
32
+ import { type KeyObject } from 'crypto';
33
+ import { encodeArrayBuffer as hexEncodeArrayBuffer } from '../encodings/hex.js';
34
+ import { ConfigurationError, TdfError } from '../errors.js';
35
+
36
+ const RSA_OID = '06092a864886f70d010101';
37
+ const EC_OID = '06072a8648ce3d0201';
38
+ const P256_OID = '06082a8648ce3d030107';
39
+ const P384_OID = '06052b81040022';
40
+ const P521_OID = '06052b81040023';
41
+ const SHA_512 = 'SHA-512';
42
+ const SPKI = 'spki';
43
+ const CERT_BEGIN = '-----BEGIN CERTIFICATE-----';
44
+ const CERT_END = '-----END CERTIFICATE-----';
45
+
46
+ const P_256 = 'P-256';
47
+ const P_384 = 'P-384';
48
+ const P_512 = 'P-512';
49
+ type CurveName = typeof P_256 | typeof P_384 | typeof P_512;
50
+
51
+ const ECDH = 'ECDH';
52
+ const ECDSA = 'ECDSA';
53
+ const RSA_OAEP = 'RSA-OAEP';
54
+ const RSA_PSS = 'RSA-PSS';
55
+ type AlgorithmName = typeof ECDH | typeof ECDSA | typeof RSA_OAEP | typeof RSA_PSS;
56
+
57
+ interface PemPublicToCryptoOptions {
58
+ name?: string;
59
+ hash?: string;
60
+ usages?: KeyUsage[];
61
+ isExtractable: boolean;
62
+ }
63
+
64
+ function guessKeyUsages(algorithmName: AlgorithmName, usages?: KeyUsage[]): KeyUsage[] {
65
+ if (usages) return usages;
66
+ switch (algorithmName) {
67
+ case ECDSA:
68
+ return ['verify'];
69
+ case RSA_OAEP:
70
+ return ['encrypt', 'wrapKey'];
71
+ case RSA_PSS:
72
+ return ['verify'];
73
+ case ECDH:
74
+ default:
75
+ return [];
76
+ }
77
+ }
78
+
79
+ function guessAlgorithmName(hex: string, algorithmName?: string): AlgorithmName {
80
+ if (hex.includes(EC_OID)) {
81
+ if (!algorithmName || algorithmName === ECDH) {
82
+ return ECDH;
83
+ } else if (algorithmName === ECDSA) {
84
+ return ECDSA;
85
+ }
86
+ } else if (hex.includes(RSA_OID)) {
87
+ if (!algorithmName || algorithmName === RSA_OAEP) {
88
+ return RSA_OAEP;
89
+ } else if (algorithmName === RSA_PSS) {
90
+ return RSA_PSS;
91
+ }
92
+ }
93
+ throw new TypeError(`Invalid public key, ${algorithmName}`);
94
+ }
95
+
96
+ function guessCurveName(hex: string): CurveName {
97
+ if (hex.includes(P256_OID)) {
98
+ return P_256;
99
+ } else if (hex.includes(P384_OID)) {
100
+ return P_384;
101
+ } else if (hex.includes(P521_OID)) {
102
+ return P_512;
103
+ }
104
+ throw new TdfError('Unsupported curve name or invalid key');
105
+ }
106
+
107
+ /**
108
+ *
109
+ * Converts asymmetric public key from PEM to CryptoKey
110
+ * - publicKey {String} default: "undefined" PEM public key
111
+ * - options {Object} default: (depends on algorithm)
112
+ * -- ECDH: { name: 'ECDH', usages: [], isExtractable: true }
113
+ * -- ECDSA: { name: 'ECDSA', usages: ['verify'], isExtractable: true }
114
+ * -- RSA-OAEP: { name: 'RSA-OAEP', hash: { name: 'SHA-512' }, usages: ['encrypt', 'wrapKey'], isExtractable: true }
115
+ * -- RSA-PSS: { name: 'RSA-PSS', hash: { name: 'SHA-512' }, usages: ['verify'], isExtractable: true }
116
+ */
117
+ export async function pemPublicToCrypto(
118
+ pem: string,
119
+ options: PemPublicToCryptoOptions = {
120
+ isExtractable: true,
121
+ }
122
+ ): Promise<CryptoKey> {
123
+ pem = pem.replace('-----BEGIN PUBLIC KEY-----', '');
124
+ pem = pem.replace('-----END PUBLIC KEY-----', '');
125
+ const b64 = pem.replace(/\s/g, '');
126
+ const arrayBuffer = base64.decodeArrayBuffer(b64);
127
+ const hex = hexEncodeArrayBuffer(arrayBuffer);
128
+
129
+ const algorithmName = guessAlgorithmName(hex, options.name);
130
+ const keyUsages = guessKeyUsages(algorithmName, options.usages);
131
+
132
+ if (algorithmName === ECDH || algorithmName === ECDSA) {
133
+ const namedCurve = guessCurveName(hex);
134
+ return crypto.subtle.importKey(
135
+ SPKI,
136
+ arrayBuffer,
137
+ {
138
+ name: algorithmName,
139
+ namedCurve,
140
+ },
141
+ options.isExtractable,
142
+ keyUsages
143
+ );
144
+ } else if (algorithmName === RSA_OAEP || algorithmName === RSA_PSS) {
145
+ return crypto.subtle.importKey(
146
+ SPKI,
147
+ arrayBuffer,
148
+ {
149
+ name: algorithmName,
150
+ hash: {
151
+ name: options.hash || SHA_512,
152
+ },
153
+ },
154
+ options.isExtractable,
155
+ keyUsages
156
+ );
157
+ } else {
158
+ throw new TypeError('Invalid public key');
159
+ }
160
+ }
161
+
162
+ /**
163
+ * Look up JWK algorithm at https://github.com/panva/jose/issues/210
164
+ */
165
+ function toJwsAlg(hex: string) {
166
+ const a = guessAlgorithmName(hex);
167
+ if (a === ECDH) {
168
+ return 'ECDH-ES';
169
+ } else if (a === ECDSA) {
170
+ switch (guessCurveName(hex)) {
171
+ case 'P-256':
172
+ return 'ES256';
173
+ case 'P-384':
174
+ return 'ES384';
175
+ case 'P-512':
176
+ return 'ES512';
177
+ }
178
+ } else if (a === RSA_OAEP) {
179
+ return 'RS512';
180
+ } else {
181
+ return 'RSA-OAEP-512';
182
+ }
183
+ }
184
+ function toSubtleAlg(hex: string) {
185
+ const name = guessAlgorithmName(hex);
186
+ if (name === ECDH || name === ECDSA) {
187
+ return {
188
+ name,
189
+ namedCurve: guessCurveName(hex),
190
+ };
191
+ }
192
+ return {
193
+ name,
194
+ hash: { name: SHA_512 },
195
+ };
196
+ }
197
+
198
+ export async function pemCertToCrypto(
199
+ pem: string,
200
+ options: PemPublicToCryptoOptions = {
201
+ isExtractable: true,
202
+ }
203
+ ): Promise<CryptoKey> {
204
+ let crt = pem.replace(CERT_BEGIN, '');
205
+ crt = crt.replace(CERT_END, '');
206
+ const b64 = crt.replace(/\s/g, '');
207
+ const arrayBuffer = base64.decodeArrayBuffer(b64);
208
+ const hex = hexEncodeArrayBuffer(arrayBuffer);
209
+ const jwsAlg = toJwsAlg(hex);
210
+ const keylike = await importX509(pem, jwsAlg, { extractable: options.isExtractable });
211
+ const { type } = keylike;
212
+ if (type !== 'public') {
213
+ throw new ConfigurationError('unpublic');
214
+ }
215
+ // FIXME Jose workaround for node clients.
216
+ // jose returns a crypto key on node, but we expect a subtle-crypto key
217
+ // The below should convert it, I hope, by exporting to a JWK and back.
218
+ if ((keylike as KeyObject)?.export) {
219
+ const keyObject = keylike as KeyObject;
220
+ const subtleAlg = toSubtleAlg(hex);
221
+ const keyUsages = guessKeyUsages(subtleAlg.name, options.usages);
222
+ const subtleKey = await crypto.subtle.importKey(
223
+ 'jwk',
224
+ keyObject.export({ format: 'jwk' }),
225
+ subtleAlg,
226
+ options.isExtractable,
227
+ keyUsages
228
+ );
229
+ return subtleKey;
230
+ }
231
+ return keylike as CryptoKey;
232
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "src",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {}
6
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,44 @@
1
+ // @generated by protoc-gen-connect-es v1.4.0 with parameter "target=js+dts,import_extension=none"
2
+ // @generated from file authorization/authorization.proto (package authorization, syntax proto3)
3
+ /* eslint-disable */
4
+ // @ts-nocheck
5
+
6
+ import { GetDecisionsByTokenRequest, GetDecisionsByTokenResponse, GetDecisionsRequest, GetDecisionsResponse, GetEntitlementsRequest, GetEntitlementsResponse } from "./authorization_pb";
7
+ import { MethodKind } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * @generated from service authorization.AuthorizationService
11
+ */
12
+ export declare const AuthorizationService: {
13
+ readonly typeName: "authorization.AuthorizationService",
14
+ readonly methods: {
15
+ /**
16
+ * @generated from rpc authorization.AuthorizationService.GetDecisions
17
+ */
18
+ readonly getDecisions: {
19
+ readonly name: "GetDecisions",
20
+ readonly I: typeof GetDecisionsRequest,
21
+ readonly O: typeof GetDecisionsResponse,
22
+ readonly kind: MethodKind.Unary,
23
+ },
24
+ /**
25
+ * @generated from rpc authorization.AuthorizationService.GetDecisionsByToken
26
+ */
27
+ readonly getDecisionsByToken: {
28
+ readonly name: "GetDecisionsByToken",
29
+ readonly I: typeof GetDecisionsByTokenRequest,
30
+ readonly O: typeof GetDecisionsByTokenResponse,
31
+ readonly kind: MethodKind.Unary,
32
+ },
33
+ /**
34
+ * @generated from rpc authorization.AuthorizationService.GetEntitlements
35
+ */
36
+ readonly getEntitlements: {
37
+ readonly name: "GetEntitlements",
38
+ readonly I: typeof GetEntitlementsRequest,
39
+ readonly O: typeof GetEntitlementsResponse,
40
+ readonly kind: MethodKind.Unary,
41
+ },
42
+ }
43
+ };
44
+
@@ -0,0 +1,44 @@
1
+ // @generated by protoc-gen-connect-es v1.4.0 with parameter "target=js+dts,import_extension=none"
2
+ // @generated from file authorization/authorization.proto (package authorization, syntax proto3)
3
+ /* eslint-disable */
4
+ // @ts-nocheck
5
+
6
+ import { GetDecisionsByTokenRequest, GetDecisionsByTokenResponse, GetDecisionsRequest, GetDecisionsResponse, GetEntitlementsRequest, GetEntitlementsResponse } from "./authorization_pb";
7
+ import { MethodKind } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * @generated from service authorization.AuthorizationService
11
+ */
12
+ export const AuthorizationService = {
13
+ typeName: "authorization.AuthorizationService",
14
+ methods: {
15
+ /**
16
+ * @generated from rpc authorization.AuthorizationService.GetDecisions
17
+ */
18
+ getDecisions: {
19
+ name: "GetDecisions",
20
+ I: GetDecisionsRequest,
21
+ O: GetDecisionsResponse,
22
+ kind: MethodKind.Unary,
23
+ },
24
+ /**
25
+ * @generated from rpc authorization.AuthorizationService.GetDecisionsByToken
26
+ */
27
+ getDecisionsByToken: {
28
+ name: "GetDecisionsByToken",
29
+ I: GetDecisionsByTokenRequest,
30
+ O: GetDecisionsByTokenResponse,
31
+ kind: MethodKind.Unary,
32
+ },
33
+ /**
34
+ * @generated from rpc authorization.AuthorizationService.GetEntitlements
35
+ */
36
+ getEntitlements: {
37
+ name: "GetEntitlements",
38
+ I: GetEntitlementsRequest,
39
+ O: GetEntitlementsResponse,
40
+ kind: MethodKind.Unary,
41
+ },
42
+ }
43
+ };
44
+