@lindorm/aegis 0.4.3 → 0.5.0

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 (481) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/__tests__/jwt-interop.test.ts +13 -10
  3. package/dist/classes/Aegis.d.ts +13 -20
  4. package/dist/classes/Aegis.d.ts.map +1 -1
  5. package/dist/classes/Aegis.js +34 -120
  6. package/dist/classes/Aegis.js.map +1 -1
  7. package/dist/classes/JweKit.d.ts +1 -0
  8. package/dist/classes/JweKit.d.ts.map +1 -1
  9. package/dist/classes/JweKit.js +66 -18
  10. package/dist/classes/JweKit.js.map +1 -1
  11. package/dist/classes/JwsKit.d.ts +1 -0
  12. package/dist/classes/JwsKit.d.ts.map +1 -1
  13. package/dist/classes/JwsKit.js +60 -18
  14. package/dist/classes/JwsKit.js.map +1 -1
  15. package/dist/classes/JwtKit.d.ts +2 -0
  16. package/dist/classes/JwtKit.d.ts.map +1 -1
  17. package/dist/classes/JwtKit.js +101 -22
  18. package/dist/classes/JwtKit.js.map +1 -1
  19. package/dist/classes/index.d.ts +0 -3
  20. package/dist/classes/index.d.ts.map +1 -1
  21. package/dist/classes/index.js +0 -3
  22. package/dist/classes/index.js.map +1 -1
  23. package/dist/constants/token-type.d.ts +6 -0
  24. package/dist/constants/token-type.d.ts.map +1 -0
  25. package/dist/constants/token-type.js +20 -0
  26. package/dist/constants/token-type.js.map +1 -0
  27. package/dist/errors/index.d.ts +0 -3
  28. package/dist/errors/index.d.ts.map +1 -1
  29. package/dist/errors/index.js +0 -3
  30. package/dist/errors/index.js.map +1 -1
  31. package/dist/guards/index.d.ts +3 -0
  32. package/dist/guards/index.d.ts.map +1 -0
  33. package/dist/{utils/private/cose → guards}/index.js +2 -2
  34. package/dist/guards/index.js.map +1 -0
  35. package/dist/guards/is-parsed-jws.d.ts +3 -0
  36. package/dist/guards/is-parsed-jws.d.ts.map +1 -0
  37. package/dist/guards/is-parsed-jws.js +6 -0
  38. package/dist/guards/is-parsed-jws.js.map +1 -0
  39. package/dist/guards/is-parsed-jwt.d.ts +3 -0
  40. package/dist/guards/is-parsed-jwt.d.ts.map +1 -0
  41. package/dist/guards/is-parsed-jwt.js +6 -0
  42. package/dist/guards/is-parsed-jwt.js.map +1 -0
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/interfaces/Aegis.d.ts +8 -22
  48. package/dist/interfaces/Aegis.d.ts.map +1 -1
  49. package/dist/interfaces/index.d.ts +0 -3
  50. package/dist/interfaces/index.d.ts.map +1 -1
  51. package/dist/interfaces/index.js +0 -3
  52. package/dist/interfaces/index.js.map +1 -1
  53. package/dist/internal/constants/aegis-profile-keys.d.ts +2 -0
  54. package/dist/internal/constants/aegis-profile-keys.d.ts.map +1 -0
  55. package/dist/internal/constants/aegis-profile-keys.js +37 -0
  56. package/dist/internal/constants/aegis-profile-keys.js.map +1 -0
  57. package/dist/internal/constants/format.d.ts.map +1 -0
  58. package/dist/internal/constants/format.js.map +1 -0
  59. package/dist/{constants/private → internal/constants}/header.d.ts +1 -1
  60. package/dist/internal/constants/header.d.ts.map +1 -0
  61. package/dist/{constants/private → internal/constants}/header.js +0 -4
  62. package/dist/internal/constants/header.js.map +1 -0
  63. package/dist/internal/utils/compute-jwk-thumbprint.d.ts +4 -0
  64. package/dist/internal/utils/compute-jwk-thumbprint.d.ts.map +1 -0
  65. package/dist/internal/utils/compute-jwk-thumbprint.js +25 -0
  66. package/dist/internal/utils/compute-jwk-thumbprint.js.map +1 -0
  67. package/dist/internal/utils/compute-typ-header.d.ts +7 -0
  68. package/dist/internal/utils/compute-typ-header.d.ts.map +1 -0
  69. package/dist/internal/utils/compute-typ-header.js +68 -0
  70. package/dist/internal/utils/compute-typ-header.js.map +1 -0
  71. package/dist/internal/utils/create-hash.d.ts.map +1 -0
  72. package/dist/{utils/private → internal/utils}/create-hash.js +2 -2
  73. package/dist/internal/utils/create-hash.js.map +1 -0
  74. package/dist/internal/utils/extract-aegis-profile.d.ts +7 -0
  75. package/dist/internal/utils/extract-aegis-profile.d.ts.map +1 -0
  76. package/dist/internal/utils/extract-aegis-profile.js +34 -0
  77. package/dist/internal/utils/extract-aegis-profile.js.map +1 -0
  78. package/dist/internal/utils/extract-claims.d.ts +15 -0
  79. package/dist/internal/utils/extract-claims.d.ts.map +1 -0
  80. package/dist/internal/utils/extract-claims.js +201 -0
  81. package/dist/internal/utils/extract-claims.js.map +1 -0
  82. package/dist/internal/utils/extract-token-delegation.d.ts +6 -0
  83. package/dist/internal/utils/extract-token-delegation.d.ts.map +1 -0
  84. package/dist/internal/utils/extract-token-delegation.js +28 -0
  85. package/dist/internal/utils/extract-token-delegation.js.map +1 -0
  86. package/dist/internal/utils/generate-token-id.d.ts +2 -0
  87. package/dist/internal/utils/generate-token-id.d.ts.map +1 -0
  88. package/dist/internal/utils/generate-token-id.js +9 -0
  89. package/dist/internal/utils/generate-token-id.js.map +1 -0
  90. package/dist/internal/utils/jose-header.d.ts +4 -0
  91. package/dist/internal/utils/jose-header.d.ts.map +1 -0
  92. package/dist/{utils/private → internal/utils}/jose-header.js +12 -11
  93. package/dist/internal/utils/jose-header.js.map +1 -0
  94. package/dist/internal/utils/jose-signature.d.ts.map +1 -0
  95. package/dist/{utils/private → internal/utils}/jose-signature.js +3 -3
  96. package/dist/internal/utils/jose-signature.js.map +1 -0
  97. package/dist/internal/utils/jwt-payload.d.ts.map +1 -0
  98. package/dist/{utils/private → internal/utils}/jwt-payload.js +51 -44
  99. package/dist/internal/utils/jwt-payload.js.map +1 -0
  100. package/dist/internal/utils/jwt-validate.d.ts.map +1 -0
  101. package/dist/internal/utils/jwt-validate.js.map +1 -0
  102. package/dist/internal/utils/jwt-verify.d.ts.map +1 -0
  103. package/dist/{utils/private → internal/utils}/jwt-verify.js +30 -6
  104. package/dist/internal/utils/jwt-verify.js.map +1 -0
  105. package/dist/internal/utils/parse-introspection.d.ts +7 -0
  106. package/dist/internal/utils/parse-introspection.d.ts.map +1 -0
  107. package/dist/internal/utils/parse-introspection.js +28 -0
  108. package/dist/internal/utils/parse-introspection.js.map +1 -0
  109. package/dist/internal/utils/parse-userinfo.d.ts +5 -0
  110. package/dist/internal/utils/parse-userinfo.d.ts.map +1 -0
  111. package/dist/internal/utils/parse-userinfo.js +26 -0
  112. package/dist/internal/utils/parse-userinfo.js.map +1 -0
  113. package/dist/internal/utils/resolve-cert-binding.d.ts +4 -0
  114. package/dist/internal/utils/resolve-cert-binding.d.ts.map +1 -0
  115. package/dist/internal/utils/resolve-cert-binding.js +30 -0
  116. package/dist/internal/utils/resolve-cert-binding.js.map +1 -0
  117. package/dist/internal/utils/token-header.d.ts +4 -0
  118. package/dist/internal/utils/token-header.d.ts.map +1 -0
  119. package/dist/{utils/private → internal/utils}/token-header.js +5 -16
  120. package/dist/internal/utils/token-header.js.map +1 -0
  121. package/dist/internal/utils/validate-actor.d.ts +3 -0
  122. package/dist/internal/utils/validate-actor.d.ts.map +1 -0
  123. package/dist/internal/utils/validate-actor.js +27 -0
  124. package/dist/internal/utils/validate-actor.js.map +1 -0
  125. package/dist/internal/utils/validate-crit.d.ts +4 -0
  126. package/dist/internal/utils/validate-crit.d.ts.map +1 -0
  127. package/dist/internal/utils/validate-crit.js +55 -0
  128. package/dist/internal/utils/validate-crit.js.map +1 -0
  129. package/dist/internal/utils/validate.d.ts.map +1 -0
  130. package/dist/internal/utils/validate.js.map +1 -0
  131. package/dist/internal/utils/verify-cert-binding.d.ts +14 -0
  132. package/dist/internal/utils/verify-cert-binding.d.ts.map +1 -0
  133. package/dist/internal/utils/verify-cert-binding.js +25 -0
  134. package/dist/internal/utils/verify-cert-binding.js.map +1 -0
  135. package/dist/internal/utils/verify-dpop-proof.d.ts +10 -0
  136. package/dist/internal/utils/verify-dpop-proof.d.ts.map +1 -0
  137. package/dist/internal/utils/verify-dpop-proof.js +76 -0
  138. package/dist/internal/utils/verify-dpop-proof.js.map +1 -0
  139. package/dist/mocks/create-mock-aegis.d.ts +2 -1
  140. package/dist/mocks/create-mock-aegis.d.ts.map +1 -1
  141. package/dist/mocks/create-mock-aegis.js +49 -75
  142. package/dist/mocks/create-mock-aegis.js.map +1 -1
  143. package/dist/mocks/index.d.ts +1 -1
  144. package/dist/mocks/index.d.ts.map +1 -1
  145. package/dist/mocks/index.js +3 -15
  146. package/dist/mocks/index.js.map +1 -1
  147. package/dist/types/aegis.d.ts +3 -0
  148. package/dist/types/aegis.d.ts.map +1 -1
  149. package/dist/types/claims/act-claim.d.ts +8 -0
  150. package/dist/types/claims/act-claim.d.ts.map +1 -0
  151. package/dist/{interfaces/CwsKit.js → types/claims/act-claim.js} +1 -1
  152. package/dist/types/claims/act-claim.js.map +1 -0
  153. package/dist/types/claims/aegis-introspection.d.ts +16 -0
  154. package/dist/types/claims/aegis-introspection.d.ts.map +1 -0
  155. package/dist/types/claims/aegis-introspection.js +3 -0
  156. package/dist/types/claims/aegis-introspection.js.map +1 -0
  157. package/dist/types/claims/aegis-profile.d.ts +44 -0
  158. package/dist/types/claims/aegis-profile.d.ts.map +1 -0
  159. package/dist/types/claims/aegis-profile.js +3 -0
  160. package/dist/types/claims/aegis-profile.js.map +1 -0
  161. package/dist/types/claims/aegis-userinfo.d.ts +5 -0
  162. package/dist/types/claims/aegis-userinfo.d.ts.map +1 -0
  163. package/dist/types/claims/aegis-userinfo.js +3 -0
  164. package/dist/types/claims/aegis-userinfo.js.map +1 -0
  165. package/dist/types/claims/confirmation-claim.d.ts +9 -0
  166. package/dist/types/claims/confirmation-claim.d.ts.map +1 -0
  167. package/dist/types/claims/confirmation-claim.js +3 -0
  168. package/dist/types/claims/confirmation-claim.js.map +1 -0
  169. package/dist/types/claims/delegation-claims.d.ts +6 -0
  170. package/dist/types/claims/delegation-claims.d.ts.map +1 -0
  171. package/dist/types/claims/delegation-claims.js +3 -0
  172. package/dist/types/claims/delegation-claims.js.map +1 -0
  173. package/dist/types/claims/index.d.ts +13 -0
  174. package/dist/types/claims/index.d.ts.map +1 -0
  175. package/dist/types/{cws → claims}/index.js +12 -4
  176. package/dist/types/claims/index.js.map +1 -0
  177. package/dist/types/claims/jwt/act-claim-wire.d.ts +8 -0
  178. package/dist/types/claims/jwt/act-claim-wire.d.ts.map +1 -0
  179. package/dist/types/claims/jwt/act-claim-wire.js +3 -0
  180. package/dist/types/claims/jwt/act-claim-wire.js.map +1 -0
  181. package/dist/types/claims/jwt/confirmation-claim-wire.d.ts +9 -0
  182. package/dist/types/claims/jwt/confirmation-claim-wire.d.ts.map +1 -0
  183. package/dist/types/claims/jwt/confirmation-claim-wire.js +3 -0
  184. package/dist/types/claims/jwt/confirmation-claim-wire.js.map +1 -0
  185. package/dist/types/claims/jwt/delegation-claims-wire.d.ts +6 -0
  186. package/dist/types/claims/jwt/delegation-claims-wire.d.ts.map +1 -0
  187. package/dist/types/claims/jwt/delegation-claims-wire.js +3 -0
  188. package/dist/types/claims/jwt/delegation-claims-wire.js.map +1 -0
  189. package/dist/types/claims/jwt/index.d.ts +10 -0
  190. package/dist/types/claims/jwt/index.d.ts.map +1 -0
  191. package/dist/types/{cwe → claims/jwt}/index.js +9 -4
  192. package/dist/types/claims/jwt/index.js.map +1 -0
  193. package/dist/types/claims/jwt/jwt-claims.d.ts +8 -0
  194. package/dist/types/claims/jwt/jwt-claims.d.ts.map +1 -0
  195. package/dist/types/claims/jwt/jwt-claims.js.map +1 -0
  196. package/dist/types/claims/jwt/lindorm-claims-wire.d.ts +16 -0
  197. package/dist/types/claims/jwt/lindorm-claims-wire.d.ts.map +1 -0
  198. package/dist/types/claims/jwt/lindorm-claims-wire.js +3 -0
  199. package/dist/types/claims/jwt/lindorm-claims-wire.js.map +1 -0
  200. package/dist/types/claims/jwt/oauth-claims-wire.d.ts +6 -0
  201. package/dist/types/claims/jwt/oauth-claims-wire.d.ts.map +1 -0
  202. package/dist/types/claims/jwt/oauth-claims-wire.js +3 -0
  203. package/dist/types/claims/jwt/oauth-claims-wire.js.map +1 -0
  204. package/dist/types/claims/jwt/oidc-claims-wire.d.ts +11 -0
  205. package/dist/types/claims/jwt/oidc-claims-wire.d.ts.map +1 -0
  206. package/dist/types/claims/jwt/oidc-claims-wire.js +3 -0
  207. package/dist/types/claims/jwt/oidc-claims-wire.js.map +1 -0
  208. package/dist/types/claims/jwt/pop-claims-wire.d.ts +5 -0
  209. package/dist/types/claims/jwt/pop-claims-wire.d.ts.map +1 -0
  210. package/dist/types/claims/jwt/pop-claims-wire.js +3 -0
  211. package/dist/types/claims/jwt/pop-claims-wire.js.map +1 -0
  212. package/dist/types/claims/jwt/std-claims-wire.d.ts +10 -0
  213. package/dist/types/claims/jwt/std-claims-wire.d.ts.map +1 -0
  214. package/dist/types/claims/jwt/std-claims-wire.js +3 -0
  215. package/dist/types/claims/jwt/std-claims-wire.js.map +1 -0
  216. package/dist/types/claims/lindorm-claims.d.ts +18 -0
  217. package/dist/types/claims/lindorm-claims.d.ts.map +1 -0
  218. package/dist/types/claims/lindorm-claims.js +3 -0
  219. package/dist/types/claims/lindorm-claims.js.map +1 -0
  220. package/dist/types/claims/oauth-claims.d.ts +6 -0
  221. package/dist/types/claims/oauth-claims.d.ts.map +1 -0
  222. package/dist/types/claims/oauth-claims.js +3 -0
  223. package/dist/types/claims/oauth-claims.js.map +1 -0
  224. package/dist/types/claims/oidc-claims.d.ts +11 -0
  225. package/dist/types/claims/oidc-claims.d.ts.map +1 -0
  226. package/dist/types/{cose-target.js → claims/oidc-claims.js} +1 -1
  227. package/dist/types/claims/oidc-claims.js.map +1 -0
  228. package/dist/types/claims/pop-claims.d.ts +5 -0
  229. package/dist/types/claims/pop-claims.d.ts.map +1 -0
  230. package/dist/types/{cwe/cwe-decode.js → claims/pop-claims.js} +1 -1
  231. package/dist/types/claims/pop-claims.js.map +1 -0
  232. package/dist/types/claims/std-claims.d.ts +10 -0
  233. package/dist/types/claims/std-claims.d.ts.map +1 -0
  234. package/dist/{interfaces/CwtKit.js → types/claims/std-claims.js} +1 -1
  235. package/dist/types/claims/std-claims.js.map +1 -0
  236. package/dist/types/header.d.ts +15 -8
  237. package/dist/types/header.d.ts.map +1 -1
  238. package/dist/types/index.d.ts +2 -4
  239. package/dist/types/index.d.ts.map +1 -1
  240. package/dist/types/index.js +2 -4
  241. package/dist/types/index.js.map +1 -1
  242. package/dist/types/jwe/jwe-decrypt.d.ts +2 -4
  243. package/dist/types/jwe/jwe-decrypt.d.ts.map +1 -1
  244. package/dist/types/jwe/jwe-encrypt.d.ts +4 -1
  245. package/dist/types/jwe/jwe-encrypt.d.ts.map +1 -1
  246. package/dist/types/jwe/jwe-kit.d.ts +2 -7
  247. package/dist/types/jwe/jwe-kit.d.ts.map +1 -1
  248. package/dist/types/jws/jws-kit.d.ts +2 -6
  249. package/dist/types/jws/jws-kit.d.ts.map +1 -1
  250. package/dist/types/jws/jws-parse.d.ts +2 -5
  251. package/dist/types/jws/jws-parse.d.ts.map +1 -1
  252. package/dist/types/jws/jws-sign.d.ts +5 -2
  253. package/dist/types/jws/jws-sign.d.ts.map +1 -1
  254. package/dist/types/jwt/index.d.ts +3 -1
  255. package/dist/types/jwt/index.d.ts.map +1 -1
  256. package/dist/types/jwt/index.js +3 -1
  257. package/dist/types/jwt/index.js.map +1 -1
  258. package/dist/types/jwt/jwt-claim-matchers.d.ts +28 -0
  259. package/dist/types/jwt/jwt-claim-matchers.d.ts.map +1 -0
  260. package/dist/types/jwt/jwt-claim-matchers.js +3 -0
  261. package/dist/types/jwt/jwt-claim-matchers.js.map +1 -0
  262. package/dist/types/jwt/jwt-decode.d.ts +1 -1
  263. package/dist/types/jwt/jwt-decode.d.ts.map +1 -1
  264. package/dist/types/jwt/jwt-delegation.d.ts +7 -0
  265. package/dist/types/jwt/jwt-delegation.d.ts.map +1 -0
  266. package/dist/types/jwt/jwt-delegation.js +3 -0
  267. package/dist/types/jwt/jwt-delegation.js.map +1 -0
  268. package/dist/types/jwt/jwt-dpop.d.ts +10 -0
  269. package/dist/types/jwt/jwt-dpop.d.ts.map +1 -0
  270. package/dist/types/{cwe/cwe-kit.js → jwt/jwt-dpop.js} +1 -1
  271. package/dist/types/jwt/jwt-dpop.js.map +1 -0
  272. package/dist/types/jwt/jwt-kit.d.ts +3 -5
  273. package/dist/types/jwt/jwt-kit.d.ts.map +1 -1
  274. package/dist/types/jwt/jwt-parse.d.ts +11 -27
  275. package/dist/types/jwt/jwt-parse.d.ts.map +1 -1
  276. package/dist/types/jwt/jwt-sign.d.ts +6 -23
  277. package/dist/types/jwt/jwt-sign.d.ts.map +1 -1
  278. package/dist/types/jwt/jwt-validate.d.ts +2 -23
  279. package/dist/types/jwt/jwt-validate.d.ts.map +1 -1
  280. package/dist/types/jwt/jwt-verify.d.ts +13 -25
  281. package/dist/types/jwt/jwt-verify.d.ts.map +1 -1
  282. package/dist/types/kit.d.ts +12 -0
  283. package/dist/types/kit.d.ts.map +1 -0
  284. package/dist/{interfaces/CweKit.js → types/kit.js} +1 -1
  285. package/dist/types/kit.js.map +1 -0
  286. package/dist/types/level-of-assurance.d.ts +1 -1
  287. package/dist/types/level-of-assurance.d.ts.map +1 -1
  288. package/package.json +39 -18
  289. package/tsconfig.interop.json +5 -1
  290. package/__tests__/cose-interop.test.ts +0 -1127
  291. package/dist/classes/CweKit.d.ts +0 -14
  292. package/dist/classes/CweKit.d.ts.map +0 -1
  293. package/dist/classes/CweKit.js +0 -149
  294. package/dist/classes/CweKit.js.map +0 -1
  295. package/dist/classes/CwsKit.d.ts +0 -13
  296. package/dist/classes/CwsKit.d.ts.map +0 -1
  297. package/dist/classes/CwsKit.js +0 -136
  298. package/dist/classes/CwsKit.js.map +0 -1
  299. package/dist/classes/CwtKit.d.ts +0 -17
  300. package/dist/classes/CwtKit.d.ts.map +0 -1
  301. package/dist/classes/CwtKit.js +0 -158
  302. package/dist/classes/CwtKit.js.map +0 -1
  303. package/dist/constants/private/cose.d.ts +0 -19
  304. package/dist/constants/private/cose.d.ts.map +0 -1
  305. package/dist/constants/private/cose.js +0 -116
  306. package/dist/constants/private/cose.js.map +0 -1
  307. package/dist/constants/private/format.d.ts.map +0 -1
  308. package/dist/constants/private/format.js.map +0 -1
  309. package/dist/constants/private/header.d.ts.map +0 -1
  310. package/dist/constants/private/header.js.map +0 -1
  311. package/dist/constants/private/index.d.ts +0 -4
  312. package/dist/constants/private/index.d.ts.map +0 -1
  313. package/dist/constants/private/index.js +0 -20
  314. package/dist/constants/private/index.js.map +0 -1
  315. package/dist/errors/CoseEncryptError.d.ts +0 -4
  316. package/dist/errors/CoseEncryptError.d.ts.map +0 -1
  317. package/dist/errors/CoseEncryptError.js +0 -8
  318. package/dist/errors/CoseEncryptError.js.map +0 -1
  319. package/dist/errors/CoseSignError.d.ts +0 -4
  320. package/dist/errors/CoseSignError.d.ts.map +0 -1
  321. package/dist/errors/CoseSignError.js +0 -8
  322. package/dist/errors/CoseSignError.js.map +0 -1
  323. package/dist/errors/CwtError.d.ts +0 -4
  324. package/dist/errors/CwtError.d.ts.map +0 -1
  325. package/dist/errors/CwtError.js +0 -8
  326. package/dist/errors/CwtError.js.map +0 -1
  327. package/dist/interfaces/CweKit.d.ts +0 -6
  328. package/dist/interfaces/CweKit.d.ts.map +0 -1
  329. package/dist/interfaces/CweKit.js.map +0 -1
  330. package/dist/interfaces/CwsKit.d.ts +0 -6
  331. package/dist/interfaces/CwsKit.d.ts.map +0 -1
  332. package/dist/interfaces/CwsKit.js.map +0 -1
  333. package/dist/interfaces/CwtKit.d.ts +0 -7
  334. package/dist/interfaces/CwtKit.d.ts.map +0 -1
  335. package/dist/interfaces/CwtKit.js.map +0 -1
  336. package/dist/types/cose-target.d.ts +0 -2
  337. package/dist/types/cose-target.d.ts.map +0 -1
  338. package/dist/types/cose-target.js.map +0 -1
  339. package/dist/types/cwe/cwe-decode.d.ts +0 -18
  340. package/dist/types/cwe/cwe-decode.d.ts.map +0 -1
  341. package/dist/types/cwe/cwe-decode.js.map +0 -1
  342. package/dist/types/cwe/cwe-decrypt.d.ts +0 -15
  343. package/dist/types/cwe/cwe-decrypt.d.ts.map +0 -1
  344. package/dist/types/cwe/cwe-decrypt.js +0 -3
  345. package/dist/types/cwe/cwe-decrypt.js.map +0 -1
  346. package/dist/types/cwe/cwe-encrypt.d.ts +0 -12
  347. package/dist/types/cwe/cwe-encrypt.d.ts.map +0 -1
  348. package/dist/types/cwe/cwe-encrypt.js +0 -3
  349. package/dist/types/cwe/cwe-encrypt.js.map +0 -1
  350. package/dist/types/cwe/cwe-kit.d.ts +0 -9
  351. package/dist/types/cwe/cwe-kit.d.ts.map +0 -1
  352. package/dist/types/cwe/cwe-kit.js.map +0 -1
  353. package/dist/types/cwe/index.d.ts +0 -5
  354. package/dist/types/cwe/index.d.ts.map +0 -1
  355. package/dist/types/cwe/index.js.map +0 -1
  356. package/dist/types/cws/cws-decode.d.ts +0 -9
  357. package/dist/types/cws/cws-decode.d.ts.map +0 -1
  358. package/dist/types/cws/cws-decode.js +0 -3
  359. package/dist/types/cws/cws-decode.js.map +0 -1
  360. package/dist/types/cws/cws-kit.d.ts +0 -8
  361. package/dist/types/cws/cws-kit.d.ts.map +0 -1
  362. package/dist/types/cws/cws-kit.js +0 -3
  363. package/dist/types/cws/cws-kit.js.map +0 -1
  364. package/dist/types/cws/cws-parse.d.ts +0 -14
  365. package/dist/types/cws/cws-parse.d.ts.map +0 -1
  366. package/dist/types/cws/cws-parse.js +0 -3
  367. package/dist/types/cws/cws-parse.js.map +0 -1
  368. package/dist/types/cws/cws-sign.d.ts +0 -14
  369. package/dist/types/cws/cws-sign.d.ts.map +0 -1
  370. package/dist/types/cws/cws-sign.js +0 -3
  371. package/dist/types/cws/cws-sign.js.map +0 -1
  372. package/dist/types/cws/index.d.ts +0 -5
  373. package/dist/types/cws/index.d.ts.map +0 -1
  374. package/dist/types/cws/index.js.map +0 -1
  375. package/dist/types/cwt/cwt-claims.d.ts +0 -3
  376. package/dist/types/cwt/cwt-claims.d.ts.map +0 -1
  377. package/dist/types/cwt/cwt-claims.js +0 -3
  378. package/dist/types/cwt/cwt-claims.js.map +0 -1
  379. package/dist/types/cwt/cwt-decode.d.ts +0 -10
  380. package/dist/types/cwt/cwt-decode.d.ts.map +0 -1
  381. package/dist/types/cwt/cwt-decode.js +0 -3
  382. package/dist/types/cwt/cwt-decode.js.map +0 -1
  383. package/dist/types/cwt/cwt-kit.d.ts +0 -3
  384. package/dist/types/cwt/cwt-kit.d.ts.map +0 -1
  385. package/dist/types/cwt/cwt-kit.js +0 -3
  386. package/dist/types/cwt/cwt-kit.js.map +0 -1
  387. package/dist/types/cwt/cwt-parse.d.ts +0 -15
  388. package/dist/types/cwt/cwt-parse.d.ts.map +0 -1
  389. package/dist/types/cwt/cwt-parse.js +0 -3
  390. package/dist/types/cwt/cwt-parse.js.map +0 -1
  391. package/dist/types/cwt/cwt-sign.d.ts +0 -17
  392. package/dist/types/cwt/cwt-sign.d.ts.map +0 -1
  393. package/dist/types/cwt/cwt-sign.js +0 -3
  394. package/dist/types/cwt/cwt-sign.js.map +0 -1
  395. package/dist/types/cwt/cwt-validate.d.ts +0 -3
  396. package/dist/types/cwt/cwt-validate.d.ts.map +0 -1
  397. package/dist/types/cwt/cwt-validate.js +0 -3
  398. package/dist/types/cwt/cwt-validate.js.map +0 -1
  399. package/dist/types/cwt/cwt-verify.d.ts +0 -3
  400. package/dist/types/cwt/cwt-verify.d.ts.map +0 -1
  401. package/dist/types/cwt/cwt-verify.js +0 -3
  402. package/dist/types/cwt/cwt-verify.js.map +0 -1
  403. package/dist/types/cwt/index.d.ts +0 -8
  404. package/dist/types/cwt/index.d.ts.map +0 -1
  405. package/dist/types/cwt/index.js +0 -24
  406. package/dist/types/cwt/index.js.map +0 -1
  407. package/dist/types/jwt/jwt-claims.d.ts +0 -38
  408. package/dist/types/jwt/jwt-claims.d.ts.map +0 -1
  409. package/dist/types/jwt/jwt-claims.js.map +0 -1
  410. package/dist/utils/private/auth-tag-length.d.ts +0 -3
  411. package/dist/utils/private/auth-tag-length.d.ts.map +0 -1
  412. package/dist/utils/private/auth-tag-length.js +0 -21
  413. package/dist/utils/private/auth-tag-length.js.map +0 -1
  414. package/dist/utils/private/cose/bstr.d.ts +0 -4
  415. package/dist/utils/private/cose/bstr.d.ts.map +0 -1
  416. package/dist/utils/private/cose/bstr.js +0 -18
  417. package/dist/utils/private/cose/bstr.js.map +0 -1
  418. package/dist/utils/private/cose/claims.d.ts +0 -5
  419. package/dist/utils/private/cose/claims.d.ts.map +0 -1
  420. package/dist/utils/private/cose/claims.js +0 -57
  421. package/dist/utils/private/cose/claims.js.map +0 -1
  422. package/dist/utils/private/cose/crit.d.ts +0 -3
  423. package/dist/utils/private/cose/crit.d.ts.map +0 -1
  424. package/dist/utils/private/cose/crit.js +0 -43
  425. package/dist/utils/private/cose/crit.js.map +0 -1
  426. package/dist/utils/private/cose/find.d.ts +0 -5
  427. package/dist/utils/private/cose/find.d.ts.map +0 -1
  428. package/dist/utils/private/cose/find.js +0 -37
  429. package/dist/utils/private/cose/find.js.map +0 -1
  430. package/dist/utils/private/cose/header.d.ts +0 -5
  431. package/dist/utils/private/cose/header.d.ts.map +0 -1
  432. package/dist/utils/private/cose/header.js +0 -81
  433. package/dist/utils/private/cose/header.js.map +0 -1
  434. package/dist/utils/private/cose/index.d.ts +0 -3
  435. package/dist/utils/private/cose/index.d.ts.map +0 -1
  436. package/dist/utils/private/cose/index.js.map +0 -1
  437. package/dist/utils/private/cose/key.d.ts +0 -4
  438. package/dist/utils/private/cose/key.d.ts.map +0 -1
  439. package/dist/utils/private/cose/key.js +0 -86
  440. package/dist/utils/private/cose/key.js.map +0 -1
  441. package/dist/utils/private/cose-sign-token.d.ts +0 -9
  442. package/dist/utils/private/cose-sign-token.d.ts.map +0 -1
  443. package/dist/utils/private/cose-sign-token.js +0 -12
  444. package/dist/utils/private/cose-sign-token.js.map +0 -1
  445. package/dist/utils/private/cose-signature.d.ts +0 -16
  446. package/dist/utils/private/cose-signature.d.ts.map +0 -1
  447. package/dist/utils/private/cose-signature.js +0 -17
  448. package/dist/utils/private/cose-signature.js.map +0 -1
  449. package/dist/utils/private/create-hash.d.ts.map +0 -1
  450. package/dist/utils/private/create-hash.js.map +0 -1
  451. package/dist/utils/private/index.d.ts +0 -13
  452. package/dist/utils/private/index.d.ts.map +0 -1
  453. package/dist/utils/private/index.js +0 -29
  454. package/dist/utils/private/index.js.map +0 -1
  455. package/dist/utils/private/jose-header.d.ts +0 -4
  456. package/dist/utils/private/jose-header.d.ts.map +0 -1
  457. package/dist/utils/private/jose-header.js.map +0 -1
  458. package/dist/utils/private/jose-signature.d.ts.map +0 -1
  459. package/dist/utils/private/jose-signature.js.map +0 -1
  460. package/dist/utils/private/jwt-payload.d.ts.map +0 -1
  461. package/dist/utils/private/jwt-payload.js.map +0 -1
  462. package/dist/utils/private/jwt-validate.d.ts.map +0 -1
  463. package/dist/utils/private/jwt-validate.js.map +0 -1
  464. package/dist/utils/private/jwt-verify.d.ts.map +0 -1
  465. package/dist/utils/private/jwt-verify.js.map +0 -1
  466. package/dist/utils/private/token-header.d.ts +0 -4
  467. package/dist/utils/private/token-header.d.ts.map +0 -1
  468. package/dist/utils/private/token-header.js.map +0 -1
  469. package/dist/utils/private/validate.d.ts.map +0 -1
  470. package/dist/utils/private/validate.js.map +0 -1
  471. /package/dist/{constants/private → internal/constants}/format.d.ts +0 -0
  472. /package/dist/{constants/private → internal/constants}/format.js +0 -0
  473. /package/dist/{utils/private → internal/utils}/create-hash.d.ts +0 -0
  474. /package/dist/{utils/private → internal/utils}/jose-signature.d.ts +0 -0
  475. /package/dist/{utils/private → internal/utils}/jwt-payload.d.ts +0 -0
  476. /package/dist/{utils/private → internal/utils}/jwt-validate.d.ts +0 -0
  477. /package/dist/{utils/private → internal/utils}/jwt-validate.js +0 -0
  478. /package/dist/{utils/private → internal/utils}/jwt-verify.d.ts +0 -0
  479. /package/dist/{utils/private → internal/utils}/validate.d.ts +0 -0
  480. /package/dist/{utils/private → internal/utils}/validate.js +0 -0
  481. /package/dist/types/{jwt → claims/jwt}/jwt-claims.js +0 -0
@@ -4,11 +4,18 @@ exports.JweKit = void 0;
4
4
  const aes_1 = require("@lindorm/aes");
5
5
  const b64_1 = require("@lindorm/b64");
6
6
  const is_1 = require("@lindorm/is");
7
- const crypto_1 = require("crypto");
8
- const private_1 = require("../constants/private");
7
+ const format_1 = require("#internal/constants/format");
9
8
  const errors_1 = require("../errors");
10
- const private_2 = require("../utils/private");
9
+ const compute_typ_header_1 = require("#internal/utils/compute-typ-header");
10
+ const jose_header_1 = require("#internal/utils/jose-header");
11
+ const token_header_1 = require("#internal/utils/token-header");
12
+ const resolve_cert_binding_1 = require("#internal/utils/resolve-cert-binding");
13
+ const verify_cert_binding_1 = require("#internal/utils/verify-cert-binding");
14
+ const validate_crit_1 = require("#internal/utils/validate-crit");
15
+ const JwsKit_1 = require("./JwsKit");
16
+ const JwtKit_1 = require("./JwtKit");
11
17
  class JweKit {
18
+ certBindingMode;
12
19
  encryption;
13
20
  kryptos;
14
21
  logger;
@@ -16,11 +23,12 @@ class JweKit {
16
23
  this.logger = options.logger.child(["JweKit"]);
17
24
  this.kryptos = options.kryptos;
18
25
  this.encryption = options.encryption ?? options.kryptos.encryption ?? "A256GCM";
26
+ this.certBindingMode = options.certBindingMode ?? "strict";
19
27
  }
20
28
  encrypt(data, options = {}) {
21
29
  const kit = new aes_1.AesKit({ encryption: this.encryption, kryptos: this.kryptos });
22
30
  this.logger.debug("Encrypting token", { options });
23
- const objectId = options.objectId ?? (0, crypto_1.randomUUID)();
31
+ const objectId = options.objectId;
24
32
  const prepared = kit.prepareEncryption();
25
33
  const critical = [];
26
34
  const headerOptions = {
@@ -29,7 +37,7 @@ class JweKit {
29
37
  contentType: this.contentType(data),
30
38
  ...(critical.length ? { critical } : {}),
31
39
  encryption: this.encryption,
32
- headerType: "JWE",
40
+ headerType: (0, compute_typ_header_1.computeTypHeader)(options.tokenType, "jwe"),
33
41
  initialisationVector: prepared.headerParams.publicEncryptionIv,
34
42
  jwksUri: this.kryptos.jwksUri ?? undefined,
35
43
  keyId: this.kryptos.id,
@@ -39,7 +47,8 @@ class JweKit {
39
47
  publicEncryptionJwk: prepared.headerParams.publicEncryptionJwk,
40
48
  publicEncryptionTag: prepared.headerParams.publicEncryptionTag,
41
49
  };
42
- const header = (0, private_2.encodeJoseHeader)(headerOptions);
50
+ const cert = (0, resolve_cert_binding_1.resolveCertBinding)(this.kryptos, options.bindCertificate);
51
+ const header = (0, jose_header_1.encodeJoseHeader)(headerOptions, cert);
43
52
  const aad = Buffer.from(header, "ascii");
44
53
  const { authTag, content, initialisationVector } = prepared.encrypt(data, { aad });
45
54
  if (!authTag) {
@@ -47,10 +56,10 @@ class JweKit {
47
56
  }
48
57
  const token = [
49
58
  header,
50
- prepared.publicEncryptionKey ? b64_1.B64.encode(prepared.publicEncryptionKey, private_1.B64U) : "",
51
- b64_1.B64.encode(initialisationVector, private_1.B64U),
52
- b64_1.B64.encode(content, private_1.B64U),
53
- b64_1.B64.encode(authTag, private_1.B64U),
59
+ prepared.publicEncryptionKey ? b64_1.B64.encode(prepared.publicEncryptionKey, format_1.B64U) : "",
60
+ b64_1.B64.encode(initialisationVector, format_1.B64U),
61
+ b64_1.B64.encode(content, format_1.B64U),
62
+ b64_1.B64.encode(authTag, format_1.B64U),
54
63
  ].join(".");
55
64
  this.logger.debug("Token encrypted", { token });
56
65
  return { token };
@@ -59,9 +68,21 @@ class JweKit {
59
68
  const kit = new aes_1.AesKit({ encryption: this.encryption, kryptos: this.kryptos });
60
69
  this.logger.debug("Decrypting token", { token });
61
70
  const decoded = JweKit.decode(token);
62
- if (decoded.header.typ !== "JWE") {
71
+ const typ = decoded.header.typ;
72
+ if (typ !== "JWE" && !(typeof typ === "string" && typ.endsWith("+jwe"))) {
63
73
  throw new errors_1.JweError("Invalid token", {
64
- data: { typ: decoded.header.typ },
74
+ data: { typ },
75
+ });
76
+ }
77
+ if (decoded.header.zip !== undefined) {
78
+ throw new errors_1.JweError("Compressed JWE payloads are not supported", {
79
+ data: { zip: decoded.header.zip },
80
+ });
81
+ }
82
+ const critError = (0, validate_crit_1.validateCrit)(decoded.header);
83
+ if (critError) {
84
+ throw new errors_1.JweError(`Invalid crit header: ${critError}`, {
85
+ data: { crit: decoded.header.crit },
65
86
  });
66
87
  }
67
88
  if (this.kryptos.algorithm !== decoded.header.alg) {
@@ -70,7 +91,8 @@ class JweKit {
70
91
  debug: { expected: this.kryptos.algorithm },
71
92
  });
72
93
  }
73
- const header = (0, private_2.parseTokenHeader)(decoded.header);
94
+ const header = (0, token_header_1.parseTokenHeader)(decoded.header);
95
+ header.tokenType = (0, compute_typ_header_1.decodeTokenTypeFromTyp)(typ, "jwe");
74
96
  if (header.encryption !== this.encryption) {
75
97
  throw new errors_1.JweError("Unexpected encryption", {
76
98
  debug: { actual: header.encryption, encryption: this.encryption },
@@ -87,7 +109,7 @@ class JweKit {
87
109
  const content = b64_1.B64.toBuffer(decoded.content);
88
110
  const initialisationVector = b64_1.B64.toBuffer(decoded.initialisationVector);
89
111
  const pbkdfIterations = header.pbkdfIterations;
90
- const pbkdfSalt = header.pbkdfSalt ? b64_1.B64.toBuffer(header.pbkdfSalt, private_1.B64U) : undefined;
112
+ const pbkdfSalt = header.pbkdfSalt ? b64_1.B64.toBuffer(header.pbkdfSalt, format_1.B64U) : undefined;
91
113
  const publicEncryptionIv = header.initialisationVector
92
114
  ? b64_1.B64.toBuffer(header.initialisationVector)
93
115
  : undefined;
@@ -99,22 +121,48 @@ class JweKit {
99
121
  ? b64_1.B64.toBuffer(header.publicEncryptionTag)
100
122
  : undefined;
101
123
  const payload = kit.decrypt({
124
+ algorithm: header.algorithm,
102
125
  authTag,
103
126
  content,
127
+ contentType: "text/plain",
104
128
  encryption: this.encryption,
105
129
  initialisationVector,
130
+ keyId: header.keyId ?? this.kryptos.id,
106
131
  pbkdfIterations,
107
132
  pbkdfSalt,
108
133
  publicEncryptionIv,
109
134
  publicEncryptionJwk,
110
135
  publicEncryptionKey,
111
136
  publicEncryptionTag,
137
+ version: "1.0",
112
138
  }, { aad });
139
+ (0, verify_cert_binding_1.verifyCertBinding)({
140
+ header: {
141
+ x5tS256: header.x5tS256,
142
+ },
143
+ kryptos: this.kryptos,
144
+ logger: this.logger,
145
+ mode: this.certBindingMode,
146
+ });
113
147
  this.logger.debug("Token decrypted");
114
148
  return { header, payload, decoded, token };
115
149
  }
116
150
  static isJwe(jwe) {
117
- return (0, is_1.isJwe)(jwe);
151
+ if (typeof jwe !== "string")
152
+ return false;
153
+ const parts = jwe.split(".");
154
+ if (parts.length !== 5)
155
+ return false;
156
+ try {
157
+ const header = (0, jose_header_1.decodeJoseHeader)(parts[0]);
158
+ if (typeof header.alg !== "string")
159
+ return false;
160
+ const typ = header.typ;
161
+ return typ === "JWE" || (typeof typ === "string" && typ.endsWith("+jwe"));
162
+ }
163
+ catch {
164
+ return false;
165
+ }
118
166
  }
119
167
  static decode(jwe) {
120
168
  const parts = jwe.split(".");
@@ -123,7 +171,7 @@ class JweKit {
123
171
  }
124
172
  const [header, publicEncryptionKey, initialisationVector, content, authTag] = parts;
125
173
  return {
126
- header: (0, private_2.decodeJoseHeader)(header),
174
+ header: (0, jose_header_1.decodeJoseHeader)(header),
127
175
  publicEncryptionKey: publicEncryptionKey?.length ? publicEncryptionKey : undefined,
128
176
  initialisationVector,
129
177
  content,
@@ -131,10 +179,10 @@ class JweKit {
131
179
  };
132
180
  }
133
181
  contentType(input) {
134
- if ((0, is_1.isJws)(input)) {
182
+ if (JwsKit_1.JwsKit.isJws(input)) {
135
183
  return "application/jws";
136
184
  }
137
- if ((0, is_1.isJwt)(input)) {
185
+ if (JwtKit_1.JwtKit.isJwt(input)) {
138
186
  return "application/jwt";
139
187
  }
140
188
  if (input.startsWith("{") && input.endsWith("}")) {
@@ -1 +1 @@
1
- {"version":3,"file":"JweKit.js","sourceRoot":"","sources":["../../src/classes/JweKit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JweKit.js","sourceRoot":"","sources":["../../src/classes/JweKit.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { IJwsKit } from "../interfaces";
2
2
  import { DecodedJws, JwsKitOptions, ParsedJws, SignJwsOptions, SignedJws } from "../types";
3
3
  export declare class JwsKit implements IJwsKit {
4
+ private readonly certBindingMode;
4
5
  private readonly logger;
5
6
  private readonly kryptos;
6
7
  constructor(options: JwsKitOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"JwsKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,UAAU,EACV,aAAa,EACb,SAAS,EAET,cAAc,EACd,SAAS,EAEV,MAAM,UAAU,CAAC;AASlB,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEhB,OAAO,EAAE,aAAa;IAKlC,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACnC,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,cAAmB,GAC3B,SAAS;IAoCL,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;WAkCvD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAI3B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;WAc/B,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAuB5E"}
1
+ {"version":3,"file":"JwsKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAEL,UAAU,EACV,aAAa,EACb,SAAS,EAET,cAAc,EACd,SAAS,EAEV,MAAM,UAAU,CAAC;AAYlB,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEhB,OAAO,EAAE,aAAa;IAMlC,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACnC,IAAI,EAAE,CAAC,EACP,OAAO,GAAE,cAAmB,GAC3B,SAAS;IAsCL,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;WA+CvD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAkB3B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;WAc/B,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAkC5E"}
@@ -3,20 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.JwsKit = void 0;
4
4
  const b64_1 = require("@lindorm/b64");
5
5
  const is_1 = require("@lindorm/is");
6
- const crypto_1 = require("crypto");
7
- const private_1 = require("../constants/private");
6
+ const format_1 = require("#internal/constants/format");
8
7
  const errors_1 = require("../errors");
9
- const private_2 = require("../utils/private");
8
+ const compute_typ_header_1 = require("#internal/utils/compute-typ-header");
9
+ const jose_header_1 = require("#internal/utils/jose-header");
10
+ const jose_signature_1 = require("#internal/utils/jose-signature");
11
+ const token_header_1 = require("#internal/utils/token-header");
12
+ const resolve_cert_binding_1 = require("#internal/utils/resolve-cert-binding");
13
+ const verify_cert_binding_1 = require("#internal/utils/verify-cert-binding");
14
+ const validate_crit_1 = require("#internal/utils/validate-crit");
10
15
  class JwsKit {
16
+ certBindingMode;
11
17
  logger;
12
18
  kryptos;
13
19
  constructor(options) {
14
20
  this.logger = options.logger.child(["JwsKit"]);
15
21
  this.kryptos = options.kryptos;
22
+ this.certBindingMode = options.certBindingMode ?? "strict";
16
23
  }
17
24
  sign(data, options = {}) {
18
25
  this.logger.debug("Signing token", { options });
19
- const objectId = options.objectId ?? (0, crypto_1.randomUUID)();
26
+ const objectId = options.objectId;
20
27
  const headerOptions = {
21
28
  ...(options.header ?? {}),
22
29
  algorithm: this.kryptos.algorithm,
@@ -25,14 +32,15 @@ class JwsKit {
25
32
  : (0, is_1.isString)(data)
26
33
  ? "text/plain; charset=utf-8"
27
34
  : "application/octet-stream",
28
- headerType: "JWS",
35
+ headerType: (0, compute_typ_header_1.computeTypHeader)(options.tokenType, "jws"),
29
36
  jwksUri: this.kryptos.jwksUri ?? undefined,
30
37
  keyId: this.kryptos.id,
31
38
  objectId,
32
39
  };
33
- const header = (0, private_2.encodeJoseHeader)(headerOptions);
34
- const payload = (0, is_1.isBuffer)(data) ? data.toString(private_1.B64U) : b64_1.B64.encode(data, private_1.B64U);
35
- const signature = (0, private_2.createJoseSignature)({
40
+ const cert = (0, resolve_cert_binding_1.resolveCertBinding)(this.kryptos, options.bindCertificate);
41
+ const header = (0, jose_header_1.encodeJoseHeader)(headerOptions, cert);
42
+ const payload = (0, is_1.isBuffer)(data) ? data.toString(format_1.B64U) : b64_1.B64.encode(data, format_1.B64U);
43
+ const signature = (0, jose_signature_1.createJoseSignature)({
36
44
  header,
37
45
  payload,
38
46
  kryptos: this.kryptos,
@@ -55,21 +63,45 @@ class JwsKit {
55
63
  debug: { expected: this.kryptos.algorithm },
56
64
  });
57
65
  }
58
- const verified = (0, private_2.verifyJoseSignature)(this.kryptos, token);
66
+ const verified = (0, jose_signature_1.verifyJoseSignature)(this.kryptos, token);
59
67
  if (!verified) {
60
68
  throw new errors_1.JwsError("Invalid token", {
61
69
  data: { verified, token: token },
62
70
  });
63
71
  }
72
+ (0, verify_cert_binding_1.verifyCertBinding)({
73
+ header: {
74
+ x5tS256: parsed.header.x5tS256,
75
+ },
76
+ kryptos: this.kryptos,
77
+ logger: this.logger,
78
+ mode: this.certBindingMode,
79
+ });
64
80
  this.logger.debug("Token verified");
65
81
  return parsed;
66
82
  }
67
83
  static isJws(jws) {
68
- return (0, is_1.isJws)(jws);
84
+ if (typeof jws !== "string")
85
+ return false;
86
+ const parts = jws.split(".");
87
+ if (parts.length !== 3)
88
+ return false;
89
+ try {
90
+ const header = (0, jose_header_1.decodeJoseHeader)(parts[0]);
91
+ if (typeof header.alg !== "string")
92
+ return false;
93
+ const typ = header.typ;
94
+ return (typ === "JWS" ||
95
+ typ === "JOSE" ||
96
+ (typeof typ === "string" && typ.endsWith("+jws")));
97
+ }
98
+ catch {
99
+ return false;
100
+ }
69
101
  }
70
102
  static decode(jws) {
71
103
  const [header, payload, signature] = jws.split(".");
72
- const decodedHeader = (0, private_2.decodeJoseHeader)(header);
104
+ const decodedHeader = (0, jose_header_1.decodeJoseHeader)(header);
73
105
  return {
74
106
  header: decodedHeader,
75
107
  payload: decodedHeader.cty === "text/plain; charset=utf-8"
@@ -80,18 +112,28 @@ class JwsKit {
80
112
  }
81
113
  static parse(token) {
82
114
  const decoded = JwsKit.decode(token);
83
- if (decoded.header.typ !== undefined &&
84
- decoded.header.typ !== "JWS" &&
85
- decoded.header.typ !== "JOSE") {
115
+ const typ = decoded.header.typ;
116
+ if (typ !== undefined &&
117
+ typ !== "JWS" &&
118
+ typ !== "JOSE" &&
119
+ !(typeof typ === "string" && typ.endsWith("+jws"))) {
86
120
  throw new errors_1.JwsError("Invalid token", {
87
- data: { typ: decoded.header.typ },
88
- details: "Header type must be JWS, JOSE, or undefined",
121
+ data: { typ },
122
+ details: "Header type must be JWS, JOSE, <type>+jws, or undefined",
123
+ });
124
+ }
125
+ const critError = (0, validate_crit_1.validateCrit)(decoded.header);
126
+ if (critError) {
127
+ throw new errors_1.JwsError(`Invalid crit header: ${critError}`, {
128
+ data: { crit: decoded.header.crit },
89
129
  });
90
130
  }
91
- const header = (0, private_2.parseTokenHeader)(decoded.header);
131
+ const header = (0, token_header_1.parseTokenHeader)(decoded.header);
132
+ header.tokenType = (0, compute_typ_header_1.decodeTokenTypeFromTyp)(typ, "jws");
133
+ header.baseFormat = "JWS";
92
134
  const payload = header.contentType === "text/plain; charset=utf-8"
93
135
  ? decoded.payload
94
- : b64_1.B64.toBuffer(decoded.payload, private_1.B64U);
136
+ : b64_1.B64.toBuffer(decoded.payload, format_1.B64U);
95
137
  return { decoded, header, payload, token };
96
138
  }
97
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JwsKit.js","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":";;;AAAA,sCAAmC;AACnC,oCAAwD;AAGxD,mCAAoC;AACpC,kDAA4C;AAC5C,sCAAqC;AAWrC,8CAM0B;AAE1B,MAAa,MAAM;IACA,MAAM,CAAU;IAChB,OAAO,CAAW;IAEnC,YAAmB,OAAsB;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAEM,IAAI,CACT,IAAO,EACP,UAA0B,EAAE;QAE5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAA,mBAAU,GAAE,CAAC;QAElD,MAAM,aAAa,GAAuB;YACxC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACzB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAC9B,CAAC,CAAC,OAAO,CAAC,WAAW;gBACrB,CAAC,CAAC,IAAA,aAAQ,EAAC,IAAI,CAAC;oBACd,CAAC,CAAC,2BAA2B;oBAC7B,CAAC,CAAC,0BAA0B;YAChC,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS;YAC1C,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACtB,QAAQ;SACT,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,aAAa,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,IAAA,aAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,CAAC,CAAC,CAAC,SAAG,CAAC,MAAM,CAAC,IAAI,EAAE,cAAI,CAAC,CAAC;QAE9E,MAAM,SAAS,GAAG,IAAA,6BAAmB,EAAC;YACpC,MAAM;YACN,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,GAAG,MAAM,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAA4B,KAAa;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAI,KAAK,CAAC,CAAC;QAGtC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,iBAAQ,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACvD,MAAM,IAAI,iBAAQ,CAAC,eAAe,EAAE;gBAClC,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC5C,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,6BAAmB,EAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,iBAAQ,CAAC,eAAe,EAAE;gBAClC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAIM,MAAM,CAAC,KAAK,CAAC,GAAW;QAC7B,OAAO,IAAA,UAAK,EAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAW;QAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAA,0BAAgB,EAAC,MAAM,CAAC,CAAC;QAE/C,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,OAAO,EACL,aAAa,CAAC,GAAG,KAAK,2BAA2B;gBAC/C,CAAC,CAAC,SAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACvB,CAAC,CAAC,OAAO;YACb,SAAS;SACV,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,KAAK,CAA4B,KAAa;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,IACE,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAChC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK;YAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,EAC7B,CAAC;YACD,MAAM,IAAI,iBAAQ,CAAC,eAAe,EAAE;gBAClC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjC,OAAO,EAAE,6CAA6C;aACvD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAkB,OAAO,CAAC,MAAM,CAAC,CAAC;QAEjE,MAAM,OAAO,GACX,MAAM,CAAC,WAAW,KAAK,2BAA2B;YAChD,CAAC,CAAE,OAAO,CAAC,OAAa;YACxB,CAAC,CAAE,SAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAI,CAAO,CAAC;QAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;CACF;AA3HD,wBA2HC"}
1
+ {"version":3,"file":"JwsKit.js","sourceRoot":"","sources":["../../src/classes/JwsKit.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,9 @@ import { Dict } from "@lindorm/types";
2
2
  import { IJwtKit } from "../interfaces";
3
3
  import { DecodedJwt, JwtKitOptions, ParsedJwt, ParsedJwtPayload, SignJwtContent, SignJwtOptions, SignedJwt, ValidateJwtOptions, VerifyJwtOptions } from "../types";
4
4
  export declare class JwtKit implements IJwtKit {
5
+ private readonly certBindingMode;
5
6
  private readonly clockTolerance;
7
+ private readonly dpopMaxSkew;
6
8
  private readonly issuer;
7
9
  private readonly logger;
8
10
  private readonly kryptos;
@@ -1 +1 @@
1
- {"version":3,"file":"JwtKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwtKit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,UAAU,EACV,aAAa,EACb,SAAS,EAET,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,SAAS,EAET,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAelB,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEhB,OAAO,EAAE,aAAa;IAQlC,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC/B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,cAAmB,GAC3B,SAAS;IAwCL,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EACjC,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,gBAAqB,GAC5B,SAAS,CAAC,CAAC,CAAC;WA0DD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAI3B,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;WAUzD,KAAK,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;WAwBzD,QAAQ,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC1C,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,kBAAkB,GAC1B,IAAI;CAKR"}
1
+ {"version":3,"file":"JwtKit.d.ts","sourceRoot":"","sources":["../../src/classes/JwtKit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAUtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAEL,UAAU,EACV,aAAa,EACb,SAAS,EAET,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,SAAS,EAET,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAiBlB,qBAAa,MAAO,YAAW,OAAO;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;gBAEhB,OAAO,EAAE,aAAa;IAUlC,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC/B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,cAAmB,GAC3B,SAAS;IA0CL,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EACjC,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,gBAAqB,GAC5B,SAAS,CAAC,CAAC,CAAC;WA0GD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;WAc3B,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;WAUzD,KAAK,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;WAoCzD,QAAQ,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC1C,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,kBAAkB,GAC1B,IAAI;CAKR"}
@@ -1,12 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.JwtKit = void 0;
4
- const is_1 = require("@lindorm/is");
5
- const crypto_1 = require("crypto");
6
4
  const errors_1 = require("../errors");
7
- const private_1 = require("../utils/private");
5
+ const compute_typ_header_1 = require("#internal/utils/compute-typ-header");
6
+ const extract_token_delegation_1 = require("#internal/utils/extract-token-delegation");
7
+ const validate_actor_1 = require("#internal/utils/validate-actor");
8
+ const validate_crit_1 = require("#internal/utils/validate-crit");
9
+ const verify_dpop_proof_1 = require("#internal/utils/verify-dpop-proof");
10
+ const jose_header_1 = require("#internal/utils/jose-header");
11
+ const jose_signature_1 = require("#internal/utils/jose-signature");
12
+ const jwt_validate_1 = require("#internal/utils/jwt-validate");
13
+ const jwt_payload_1 = require("#internal/utils/jwt-payload");
14
+ const jwt_verify_1 = require("#internal/utils/jwt-verify");
15
+ const token_header_1 = require("#internal/utils/token-header");
16
+ const resolve_cert_binding_1 = require("#internal/utils/resolve-cert-binding");
17
+ const verify_cert_binding_1 = require("#internal/utils/verify-cert-binding");
18
+ const validate_1 = require("#internal/utils/validate");
19
+ const DEFAULT_DPOP_MAX_SKEW = 60;
8
20
  class JwtKit {
21
+ certBindingMode;
9
22
  clockTolerance;
23
+ dpopMaxSkew;
10
24
  issuer;
11
25
  logger;
12
26
  kryptos;
@@ -14,26 +28,29 @@ class JwtKit {
14
28
  this.logger = options.logger.child(["JwtKit"]);
15
29
  this.kryptos = options.kryptos;
16
30
  this.issuer = options.issuer ?? null;
31
+ this.certBindingMode = options.certBindingMode ?? "strict";
17
32
  this.clockTolerance = options.clockTolerance ?? 0;
33
+ this.dpopMaxSkew = options.dpopMaxSkew ?? DEFAULT_DPOP_MAX_SKEW;
18
34
  }
19
35
  sign(content, options = {}) {
20
36
  this.logger.debug("Signing token", { content, options });
21
37
  if (!this.issuer) {
22
38
  throw new errors_1.JwtError("Issuer is required to sign JWT");
23
39
  }
24
- const objectId = options.objectId ?? content.subject ?? (0, crypto_1.randomUUID)();
40
+ const objectId = options.objectId;
25
41
  const headerOptions = {
26
42
  ...(options.header ?? {}),
27
43
  algorithm: this.kryptos.algorithm,
28
44
  contentType: "application/json",
29
- headerType: "JWT",
45
+ headerType: (0, compute_typ_header_1.computeTypHeader)(content.tokenType, "jwt"),
30
46
  jwksUri: this.kryptos.jwksUri ?? undefined,
31
47
  keyId: this.kryptos.id,
32
48
  objectId,
33
49
  };
34
- const header = (0, private_1.encodeJoseHeader)(headerOptions);
35
- const { expiresAt, expiresIn, expiresOn, payload, tokenId } = (0, private_1.encodeJwtPayload)({ algorithm: this.kryptos.algorithm, issuer: this.issuer }, content, options);
36
- const signature = (0, private_1.createJoseSignature)({
50
+ const cert = (0, resolve_cert_binding_1.resolveCertBinding)(this.kryptos, options.bindCertificate);
51
+ const header = (0, jose_header_1.encodeJoseHeader)(headerOptions, cert);
52
+ const { expiresAt, expiresIn, expiresOn, payload, tokenId } = (0, jwt_payload_1.encodeJwtPayload)({ algorithm: this.kryptos.algorithm, issuer: this.issuer }, content, options);
53
+ const signature = (0, jose_signature_1.createJoseSignature)({
37
54
  header,
38
55
  payload,
39
56
  kryptos: this.kryptos,
@@ -56,13 +73,30 @@ class JwtKit {
56
73
  debug: { expected: this.kryptos.algorithm },
57
74
  });
58
75
  }
59
- const verified = (0, private_1.verifyJoseSignature)(this.kryptos, token);
76
+ if (verify.tokenType !== undefined) {
77
+ const expectedTyp = (0, compute_typ_header_1.computeTypHeader)(verify.tokenType, "jwt");
78
+ if (parsed.decoded.header.typ !== expectedTyp) {
79
+ throw new errors_1.JwtError("Invalid token", {
80
+ data: { typ: parsed.decoded.header.typ },
81
+ debug: { expected: expectedTyp },
82
+ });
83
+ }
84
+ }
85
+ const verified = (0, jose_signature_1.verifyJoseSignature)(this.kryptos, token);
60
86
  if (!verified) {
61
87
  throw new errors_1.JwtError("Invalid token", {
62
88
  data: { verified, token: token },
63
89
  });
64
90
  }
65
- const predicate = (0, private_1.createJwtVerify)(this.kryptos.algorithm, verify, this.clockTolerance);
91
+ (0, verify_cert_binding_1.verifyCertBinding)({
92
+ header: {
93
+ x5tS256: parsed.header.x5tS256,
94
+ },
95
+ kryptos: this.kryptos,
96
+ logger: this.logger,
97
+ mode: this.certBindingMode,
98
+ });
99
+ const predicate = (0, jwt_verify_1.createJwtVerify)(this.kryptos.algorithm, verify, this.clockTolerance);
66
100
  const { decoded: { payload }, } = parsed;
67
101
  const withDates = {
68
102
  ...payload,
@@ -72,31 +106,73 @@ class JwtKit {
72
106
  auth_time: payload.auth_time ? new Date(payload.auth_time * 1000) : undefined,
73
107
  };
74
108
  try {
75
- (0, private_1.validate)(withDates, predicate);
109
+ (0, validate_1.validate)(withDates, predicate);
76
110
  }
77
111
  catch (err) {
78
112
  throw new errors_1.JwtError("Invalid token", { data: err.data });
79
113
  }
114
+ const actorError = (0, validate_actor_1.validateActor)(parsed.delegation, verify.actor);
115
+ if (actorError) {
116
+ throw new errors_1.JwtError(actorError);
117
+ }
118
+ const boundThumbprint = parsed.payload.confirmation?.thumbprint;
119
+ if (verify.dpopProof !== undefined) {
120
+ if (!boundThumbprint) {
121
+ throw new errors_1.JwtError("Invalid token: DPoP proof provided but token is not bound", {
122
+ debug: { confirmation: parsed.payload.confirmation },
123
+ });
124
+ }
125
+ parsed.dpop = (0, verify_dpop_proof_1.verifyDpopProof)({
126
+ proof: verify.dpopProof,
127
+ accessToken: token,
128
+ expectedThumbprint: boundThumbprint,
129
+ dpopMaxSkew: this.dpopMaxSkew,
130
+ });
131
+ }
132
+ else if (boundThumbprint && !verify.trustBoundThumbprint) {
133
+ throw new errors_1.JwtError("Invalid token: token is DPoP-bound but no DPoP proof was provided");
134
+ }
80
135
  this.logger.debug("Token verified");
81
136
  return parsed;
82
137
  }
83
138
  static isJwt(jwt) {
84
- return (0, is_1.isJwt)(jwt);
139
+ if (typeof jwt !== "string")
140
+ return false;
141
+ const parts = jwt.split(".");
142
+ if (parts.length !== 3)
143
+ return false;
144
+ try {
145
+ const header = (0, jose_header_1.decodeJoseHeader)(parts[0]);
146
+ if (typeof header.alg !== "string")
147
+ return false;
148
+ const typ = header.typ;
149
+ return typ === "JWT" || (typeof typ === "string" && typ.endsWith("+jwt"));
150
+ }
151
+ catch {
152
+ return false;
153
+ }
85
154
  }
86
155
  static decode(jwt) {
87
156
  const [header, payload, signature] = jwt.split(".");
88
157
  return {
89
- header: (0, private_1.decodeJoseHeader)(header),
90
- payload: (0, private_1.decodeJwtPayload)(payload),
158
+ header: (0, jose_header_1.decodeJoseHeader)(header),
159
+ payload: (0, jwt_payload_1.decodeJwtPayload)(payload),
91
160
  signature,
92
161
  };
93
162
  }
94
163
  static parse(token) {
95
164
  const decoded = JwtKit.decode(token);
96
- if (decoded.header.typ !== "JWT") {
165
+ const typ = decoded.header.typ;
166
+ if (typ !== "JWT" && !(typeof typ === "string" && typ.endsWith("+jwt"))) {
97
167
  throw new errors_1.JwtError("Invalid token", {
98
- data: { typ: decoded.header.typ },
99
- details: "Header type must be JWT",
168
+ data: { typ },
169
+ details: "Header type must be JWT or <type>+jwt",
170
+ });
171
+ }
172
+ const critError = (0, validate_crit_1.validateCrit)(decoded.header);
173
+ if (critError) {
174
+ throw new errors_1.JwtError(`Invalid crit header: ${critError}`, {
175
+ data: { crit: decoded.header.crit },
100
176
  });
101
177
  }
102
178
  if (!decoded.payload.iss) {
@@ -105,13 +181,16 @@ class JwtKit {
105
181
  details: "Issuer is required to decode JWT",
106
182
  });
107
183
  }
108
- const header = (0, private_1.parseTokenHeader)(decoded.header);
109
- const payload = (0, private_1.parseTokenPayload)(decoded.payload);
110
- return { decoded, header, payload, token };
184
+ const header = (0, token_header_1.parseTokenHeader)(decoded.header);
185
+ header.tokenType = (0, compute_typ_header_1.decodeTokenTypeFromTyp)(typ, "jwt");
186
+ header.baseFormat = "JWT";
187
+ const payload = (0, jwt_payload_1.parseTokenPayload)(decoded.payload);
188
+ const delegation = (0, extract_token_delegation_1.extractTokenDelegation)(decoded.payload);
189
+ return { decoded, delegation, header, payload, token };
111
190
  }
112
191
  static validate(payload, options) {
113
- const operators = (0, private_1.createJwtValidate)(options);
114
- (0, private_1.validate)(payload, operators);
192
+ const operators = (0, jwt_validate_1.createJwtValidate)(options);
193
+ (0, validate_1.validate)(payload, operators);
115
194
  }
116
195
  }
117
196
  exports.JwtKit = JwtKit;