@credo-ts/openid4vc 0.6.1-pr-2091-20241119140918 → 0.6.2-alpha-20251210145840

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 (409) hide show
  1. package/build/OpenId4VcApi.d.mts +24 -0
  2. package/build/OpenId4VcApi.d.mts.map +1 -0
  3. package/build/OpenId4VcApi.mjs +35 -0
  4. package/build/OpenId4VcApi.mjs.map +1 -0
  5. package/build/OpenId4VcModule.d.mts +30 -0
  6. package/build/OpenId4VcModule.d.mts.map +1 -0
  7. package/build/OpenId4VcModule.mjs +42 -0
  8. package/build/OpenId4VcModule.mjs.map +1 -0
  9. package/build/OpenId4VcModuleConfig.d.mts +44 -0
  10. package/build/OpenId4VcModuleConfig.d.mts.map +1 -0
  11. package/build/OpenId4VcModuleConfig.mjs +24 -0
  12. package/build/OpenId4VcModuleConfig.mjs.map +1 -0
  13. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs +10 -0
  14. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs +7 -0
  15. package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateParam.mjs +9 -0
  16. package/build/index.d.mts +42 -0
  17. package/build/index.mjs +37 -0
  18. package/build/openid4vc-holder/OpenId4VcHolderApi.d.mts +238 -0
  19. package/build/openid4vc-holder/OpenId4VcHolderApi.d.mts.map +1 -0
  20. package/build/openid4vc-holder/OpenId4VcHolderApi.mjs +174 -0
  21. package/build/openid4vc-holder/OpenId4VcHolderApi.mjs.map +1 -0
  22. package/build/openid4vc-holder/OpenId4VcHolderModule.d.mts +17 -0
  23. package/build/openid4vc-holder/OpenId4VcHolderModule.d.mts.map +1 -0
  24. package/build/openid4vc-holder/OpenId4VcHolderModule.mjs +23 -0
  25. package/build/openid4vc-holder/OpenId4VcHolderModule.mjs.map +1 -0
  26. package/build/openid4vc-holder/OpenId4VciHolderService.d.mts +69 -0
  27. package/build/openid4vc-holder/OpenId4VciHolderService.d.mts.map +1 -0
  28. package/build/openid4vc-holder/OpenId4VciHolderService.mjs +751 -0
  29. package/build/openid4vc-holder/OpenId4VciHolderService.mjs.map +1 -0
  30. package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.d.mts +398 -0
  31. package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.d.mts.map +1 -0
  32. package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.mjs +16 -0
  33. package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.mjs.map +1 -0
  34. package/build/openid4vc-holder/OpenId4vpHolderService.d.mts +130 -0
  35. package/build/openid4vc-holder/OpenId4vpHolderService.d.mts.map +1 -0
  36. package/build/openid4vc-holder/OpenId4vpHolderService.mjs +278 -0
  37. package/build/openid4vc-holder/OpenId4vpHolderService.mjs.map +1 -0
  38. package/build/openid4vc-holder/OpenId4vpHolderServiceOptions.d.mts +112 -0
  39. package/build/openid4vc-holder/OpenId4vpHolderServiceOptions.d.mts.map +1 -0
  40. package/build/openid4vc-holder/index.d.mts +6 -0
  41. package/build/openid4vc-holder/index.mjs +5 -0
  42. package/build/openid4vc-issuer/OpenId4VcIssuanceSessionState.d.mts +16 -0
  43. package/build/openid4vc-issuer/OpenId4VcIssuanceSessionState.d.mts.map +1 -0
  44. package/build/openid4vc-issuer/OpenId4VcIssuanceSessionState.mjs +18 -0
  45. package/build/openid4vc-issuer/OpenId4VcIssuanceSessionState.mjs.map +1 -0
  46. package/build/openid4vc-issuer/OpenId4VcIssuerApi.d.mts +137 -0
  47. package/build/openid4vc-issuer/OpenId4VcIssuerApi.d.mts.map +1 -0
  48. package/build/openid4vc-issuer/OpenId4VcIssuerApi.mjs +108 -0
  49. package/build/openid4vc-issuer/OpenId4VcIssuerApi.mjs.map +1 -0
  50. package/build/openid4vc-issuer/OpenId4VcIssuerEvents.d.mts +19 -0
  51. package/build/openid4vc-issuer/OpenId4VcIssuerEvents.d.mts.map +1 -0
  52. package/build/openid4vc-issuer/OpenId4VcIssuerEvents.mjs +9 -0
  53. package/build/openid4vc-issuer/OpenId4VcIssuerEvents.mjs.map +1 -0
  54. package/build/openid4vc-issuer/OpenId4VcIssuerModule.d.mts +27 -0
  55. package/build/openid4vc-issuer/OpenId4VcIssuerModule.d.mts.map +1 -0
  56. package/build/openid4vc-issuer/OpenId4VcIssuerModule.mjs +150 -0
  57. package/build/openid4vc-issuer/OpenId4VcIssuerModule.mjs.map +1 -0
  58. package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.d.mts +279 -0
  59. package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.d.mts.map +1 -0
  60. package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.mjs +179 -0
  61. package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.mjs.map +1 -0
  62. package/build/openid4vc-issuer/OpenId4VcIssuerService.d.mts +182 -0
  63. package/build/openid4vc-issuer/OpenId4VcIssuerService.d.mts.map +1 -0
  64. package/build/openid4vc-issuer/OpenId4VcIssuerService.mjs +881 -0
  65. package/build/openid4vc-issuer/OpenId4VcIssuerService.mjs.map +1 -0
  66. package/build/openid4vc-issuer/OpenId4VcIssuerServiceOptions.d.mts +340 -0
  67. package/build/openid4vc-issuer/OpenId4VcIssuerServiceOptions.d.mts.map +1 -0
  68. package/build/openid4vc-issuer/OpenId4VcIssuerServiceOptions.mjs +1 -0
  69. package/build/openid4vc-issuer/index.d.mts +11 -0
  70. package/build/openid4vc-issuer/index.mjs +11 -0
  71. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.d.mts +300 -0
  72. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.d.mts.map +1 -0
  73. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.mjs +102 -0
  74. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.mjs.map +1 -0
  75. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRepository.d.mts +10 -0
  76. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRepository.d.mts.map +1 -0
  77. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRepository.mjs +22 -0
  78. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRepository.mjs.map +1 -0
  79. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.d.mts +84 -0
  80. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.d.mts.map +1 -0
  81. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.mjs +89 -0
  82. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.mjs.map +1 -0
  83. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRepository.d.mts +12 -0
  84. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRepository.d.mts.map +1 -0
  85. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRepository.mjs +28 -0
  86. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRepository.mjs.map +1 -0
  87. package/build/openid4vc-issuer/repository/index.d.mts +4 -0
  88. package/build/openid4vc-issuer/repository/index.mjs +4 -0
  89. package/build/openid4vc-issuer/router/accessTokenEndpoint.mjs +199 -0
  90. package/build/openid4vc-issuer/router/accessTokenEndpoint.mjs.map +1 -0
  91. package/build/openid4vc-issuer/router/authorizationChallengeEndpoint.mjs +241 -0
  92. package/build/openid4vc-issuer/router/authorizationChallengeEndpoint.mjs.map +1 -0
  93. package/build/openid4vc-issuer/router/authorizationEndpoint.mjs +51 -0
  94. package/build/openid4vc-issuer/router/authorizationEndpoint.mjs.map +1 -0
  95. package/build/openid4vc-issuer/router/authorizationServerMetadataEndpoint.mjs +25 -0
  96. package/build/openid4vc-issuer/router/authorizationServerMetadataEndpoint.mjs.map +1 -0
  97. package/build/openid4vc-issuer/router/credentialEndpoint.mjs +142 -0
  98. package/build/openid4vc-issuer/router/credentialEndpoint.mjs.map +1 -0
  99. package/build/openid4vc-issuer/router/credentialOfferEndpoint.mjs +38 -0
  100. package/build/openid4vc-issuer/router/credentialOfferEndpoint.mjs.map +1 -0
  101. package/build/openid4vc-issuer/router/deferredCredentialEndpoint.mjs +84 -0
  102. package/build/openid4vc-issuer/router/deferredCredentialEndpoint.mjs.map +1 -0
  103. package/build/openid4vc-issuer/router/index.mjs +12 -0
  104. package/build/openid4vc-issuer/router/issuerMetadataEndpoint.mjs +43 -0
  105. package/build/openid4vc-issuer/router/issuerMetadataEndpoint.mjs.map +1 -0
  106. package/build/openid4vc-issuer/router/jwksEndpoint.mjs +18 -0
  107. package/build/openid4vc-issuer/router/jwksEndpoint.mjs.map +1 -0
  108. package/build/openid4vc-issuer/router/nonceEndpoint.mjs +29 -0
  109. package/build/openid4vc-issuer/router/nonceEndpoint.mjs.map +1 -0
  110. package/build/openid4vc-issuer/router/pushedAuthorizationRequestEndpoint.mjs +164 -0
  111. package/build/openid4vc-issuer/router/pushedAuthorizationRequestEndpoint.mjs.map +1 -0
  112. package/build/openid4vc-issuer/router/redirectEndpoint.mjs +124 -0
  113. package/build/openid4vc-issuer/router/redirectEndpoint.mjs.map +1 -0
  114. package/build/openid4vc-issuer/util/txCode.mjs +18 -0
  115. package/build/openid4vc-issuer/util/txCode.mjs.map +1 -0
  116. package/build/openid4vc-verifier/OpenId4VcVerificationSessionState.d.mts +10 -0
  117. package/build/openid4vc-verifier/OpenId4VcVerificationSessionState.d.mts.map +1 -0
  118. package/build/openid4vc-verifier/OpenId4VcVerificationSessionState.mjs +12 -0
  119. package/build/openid4vc-verifier/OpenId4VcVerificationSessionState.mjs.map +1 -0
  120. package/build/openid4vc-verifier/OpenId4VcVerifierApi.d.mts +60 -0
  121. package/build/openid4vc-verifier/OpenId4VcVerifierApi.d.mts.map +1 -0
  122. package/build/openid4vc-verifier/OpenId4VcVerifierApi.mjs +83 -0
  123. package/build/openid4vc-verifier/OpenId4VcVerifierApi.mjs.map +1 -0
  124. package/build/openid4vc-verifier/OpenId4VcVerifierEvents.d.mts +19 -0
  125. package/build/openid4vc-verifier/OpenId4VcVerifierEvents.d.mts.map +1 -0
  126. package/build/openid4vc-verifier/OpenId4VcVerifierEvents.mjs +9 -0
  127. package/build/openid4vc-verifier/OpenId4VcVerifierEvents.mjs.map +1 -0
  128. package/build/openid4vc-verifier/OpenId4VcVerifierModule.d.mts +25 -0
  129. package/build/openid4vc-verifier/OpenId4VcVerifierModule.d.mts.map +1 -0
  130. package/build/openid4vc-verifier/OpenId4VcVerifierModule.mjs +91 -0
  131. package/build/openid4vc-verifier/OpenId4VcVerifierModule.mjs.map +1 -0
  132. package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.d.mts +55 -0
  133. package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.d.mts.map +1 -0
  134. package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.mjs +36 -0
  135. package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.mjs.map +1 -0
  136. package/build/openid4vc-verifier/OpenId4VpVerifierService.d.mts +60 -0
  137. package/build/openid4vc-verifier/OpenId4VpVerifierService.d.mts.map +1 -0
  138. package/build/openid4vc-verifier/OpenId4VpVerifierService.mjs +714 -0
  139. package/build/openid4vc-verifier/OpenId4VpVerifierService.mjs.map +1 -0
  140. package/build/openid4vc-verifier/OpenId4VpVerifierServiceOptions.d.mts +194 -0
  141. package/build/openid4vc-verifier/OpenId4VpVerifierServiceOptions.d.mts.map +1 -0
  142. package/build/openid4vc-verifier/index.d.mts +12 -0
  143. package/build/openid4vc-verifier/index.mjs +11 -0
  144. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.d.mts +129 -0
  145. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.d.mts.map +1 -0
  146. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.mjs +64 -0
  147. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.mjs.map +1 -0
  148. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRepository.d.mts +10 -0
  149. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRepository.d.mts.map +1 -0
  150. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRepository.mjs +22 -0
  151. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRepository.mjs.map +1 -0
  152. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.d.mts +33 -0
  153. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.d.mts.map +1 -0
  154. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.mjs +32 -0
  155. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.mjs.map +1 -0
  156. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRepository.d.mts +12 -0
  157. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRepository.d.mts.map +1 -0
  158. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRepository.mjs +28 -0
  159. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRepository.mjs.map +1 -0
  160. package/build/openid4vc-verifier/repository/index.d.mts +4 -0
  161. package/build/openid4vc-verifier/repository/index.mjs +4 -0
  162. package/build/openid4vc-verifier/router/authorizationEndpoint.mjs +117 -0
  163. package/build/openid4vc-verifier/router/authorizationEndpoint.mjs.map +1 -0
  164. package/build/openid4vc-verifier/router/authorizationRequestEndpoint.mjs +39 -0
  165. package/build/openid4vc-verifier/router/authorizationRequestEndpoint.mjs.map +1 -0
  166. package/build/openid4vc-verifier/router/index.mjs +1 -0
  167. package/build/shared/callbacks.d.mts +47 -0
  168. package/build/shared/callbacks.d.mts.map +1 -0
  169. package/build/shared/callbacks.mjs +279 -0
  170. package/build/shared/callbacks.mjs.map +1 -0
  171. package/build/shared/index.d.mts +7 -0
  172. package/build/shared/index.mjs +4 -0
  173. package/build/shared/issuerMetadataUtils.d.mts +22 -0
  174. package/build/shared/issuerMetadataUtils.d.mts.map +1 -0
  175. package/build/shared/issuerMetadataUtils.mjs +30 -0
  176. package/build/shared/issuerMetadataUtils.mjs.map +1 -0
  177. package/build/shared/models/CredentialHolderBinding.d.mts +71 -0
  178. package/build/shared/models/CredentialHolderBinding.d.mts.map +1 -0
  179. package/build/shared/models/CredentialHolderBinding.mjs +1 -0
  180. package/build/shared/models/OpenId4VcJwtIssuer.d.mts +46 -0
  181. package/build/shared/models/OpenId4VcJwtIssuer.d.mts.map +1 -0
  182. package/build/shared/models/OpenId4VcJwtIssuer.mjs +1 -0
  183. package/build/shared/models/OpenId4VciAuthorizationServerConfig.d.mts +71 -0
  184. package/build/shared/models/OpenId4VciAuthorizationServerConfig.d.mts.map +1 -0
  185. package/build/shared/models/OpenId4VciCredentialFormatProfile.d.mts +12 -0
  186. package/build/shared/models/OpenId4VciCredentialFormatProfile.d.mts.map +1 -0
  187. package/build/shared/models/OpenId4VciCredentialFormatProfile.mjs +14 -0
  188. package/build/shared/models/OpenId4VciCredentialFormatProfile.mjs.map +1 -0
  189. package/build/shared/models/index.d.mts +30 -0
  190. package/build/shared/models/index.d.mts.map +1 -0
  191. package/build/shared/models/index.mjs +6 -0
  192. package/build/shared/router/context.mjs +52 -0
  193. package/build/shared/router/context.mjs.map +1 -0
  194. package/build/shared/router/express.browser.d.mts +5 -0
  195. package/build/shared/router/express.browser.d.mts.map +1 -0
  196. package/build/shared/router/express.browser.mjs +8 -0
  197. package/build/shared/router/express.browser.mjs.map +1 -0
  198. package/build/shared/router/express.mjs +10 -0
  199. package/build/shared/router/express.mjs.map +1 -0
  200. package/build/shared/router/express.native.d.mts +5 -0
  201. package/build/shared/router/express.native.d.mts.map +1 -0
  202. package/build/shared/router/express.native.mjs +8 -0
  203. package/build/shared/router/express.native.mjs.map +1 -0
  204. package/build/shared/router/index.mjs +3 -0
  205. package/build/shared/router/tenants.mjs +36 -0
  206. package/build/shared/router/tenants.mjs.map +1 -0
  207. package/build/shared/transactionData.mjs +19 -0
  208. package/build/shared/transactionData.mjs.map +1 -0
  209. package/build/shared/utils.mjs +90 -0
  210. package/build/shared/utils.mjs.map +1 -0
  211. package/package.json +30 -23
  212. package/build/index.d.ts +0 -4
  213. package/build/index.js +0 -21
  214. package/build/index.js.map +0 -1
  215. package/build/openid4vc-holder/OpenId4VcHolderApi.d.ts +0 -124
  216. package/build/openid4vc-holder/OpenId4VcHolderApi.js +0 -155
  217. package/build/openid4vc-holder/OpenId4VcHolderApi.js.map +0 -1
  218. package/build/openid4vc-holder/OpenId4VcHolderModule.d.ts +0 -13
  219. package/build/openid4vc-holder/OpenId4VcHolderModule.js +0 -35
  220. package/build/openid4vc-holder/OpenId4VcHolderModule.js.map +0 -1
  221. package/build/openid4vc-holder/OpenId4VciHolderService.d.ts +0 -72
  222. package/build/openid4vc-holder/OpenId4VciHolderService.js +0 -569
  223. package/build/openid4vc-holder/OpenId4VciHolderService.js.map +0 -1
  224. package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.d.ts +0 -238
  225. package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.js +0 -14
  226. package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.js.map +0 -1
  227. package/build/openid4vc-holder/OpenId4vcSiopHolderService.d.ts +0 -32
  228. package/build/openid4vc-holder/OpenId4vcSiopHolderService.js +0 -302
  229. package/build/openid4vc-holder/OpenId4vcSiopHolderService.js.map +0 -1
  230. package/build/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.d.ts +0 -38
  231. package/build/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.js +0 -3
  232. package/build/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.js.map +0 -1
  233. package/build/openid4vc-holder/index.d.ts +0 -6
  234. package/build/openid4vc-holder/index.js +0 -23
  235. package/build/openid4vc-holder/index.js.map +0 -1
  236. package/build/openid4vc-issuer/OpenId4VcIssuanceSessionState.d.ts +0 -12
  237. package/build/openid4vc-issuer/OpenId4VcIssuanceSessionState.js +0 -19
  238. package/build/openid4vc-issuer/OpenId4VcIssuanceSessionState.js.map +0 -1
  239. package/build/openid4vc-issuer/OpenId4VcIssuerApi.d.ts +0 -101
  240. package/build/openid4vc-issuer/OpenId4VcIssuerApi.js +0 -110
  241. package/build/openid4vc-issuer/OpenId4VcIssuerApi.js.map +0 -1
  242. package/build/openid4vc-issuer/OpenId4VcIssuerEvents.d.ts +0 -13
  243. package/build/openid4vc-issuer/OpenId4VcIssuerEvents.js +0 -8
  244. package/build/openid4vc-issuer/OpenId4VcIssuerEvents.js.map +0 -1
  245. package/build/openid4vc-issuer/OpenId4VcIssuerModule.d.ts +0 -21
  246. package/build/openid4vc-issuer/OpenId4VcIssuerModule.js +0 -121
  247. package/build/openid4vc-issuer/OpenId4VcIssuerModule.js.map +0 -1
  248. package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.d.ts +0 -190
  249. package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.js +0 -141
  250. package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.js.map +0 -1
  251. package/build/openid4vc-issuer/OpenId4VcIssuerService.d.ts +0 -116
  252. package/build/openid4vc-issuer/OpenId4VcIssuerService.js +0 -698
  253. package/build/openid4vc-issuer/OpenId4VcIssuerService.js.map +0 -1
  254. package/build/openid4vc-issuer/OpenId4VcIssuerServiceOptions.d.ts +0 -229
  255. package/build/openid4vc-issuer/OpenId4VcIssuerServiceOptions.js +0 -3
  256. package/build/openid4vc-issuer/OpenId4VcIssuerServiceOptions.js.map +0 -1
  257. package/build/openid4vc-issuer/index.d.ts +0 -8
  258. package/build/openid4vc-issuer/index.js +0 -27
  259. package/build/openid4vc-issuer/index.js.map +0 -1
  260. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.d.ts +0 -160
  261. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.js +0 -88
  262. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.js.map +0 -1
  263. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRepository.d.ts +0 -5
  264. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRepository.js +0 -29
  265. package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRepository.js.map +0 -1
  266. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.d.ts +0 -56
  267. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.js +0 -83
  268. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.js.map +0 -1
  269. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRepository.d.ts +0 -8
  270. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRepository.js +0 -35
  271. package/build/openid4vc-issuer/repository/OpenId4VcIssuerRepository.js.map +0 -1
  272. package/build/openid4vc-issuer/repository/index.d.ts +0 -4
  273. package/build/openid4vc-issuer/repository/index.js +0 -21
  274. package/build/openid4vc-issuer/repository/index.js.map +0 -1
  275. package/build/openid4vc-issuer/router/accessTokenEndpoint.d.ts +0 -5
  276. package/build/openid4vc-issuer/router/accessTokenEndpoint.js +0 -164
  277. package/build/openid4vc-issuer/router/accessTokenEndpoint.js.map +0 -1
  278. package/build/openid4vc-issuer/router/authorizationChallengeEndpoint.d.ts +0 -3
  279. package/build/openid4vc-issuer/router/authorizationChallengeEndpoint.js +0 -213
  280. package/build/openid4vc-issuer/router/authorizationChallengeEndpoint.js.map +0 -1
  281. package/build/openid4vc-issuer/router/authorizationServerMetadataEndpoint.d.ts +0 -6
  282. package/build/openid4vc-issuer/router/authorizationServerMetadataEndpoint.js +0 -25
  283. package/build/openid4vc-issuer/router/authorizationServerMetadataEndpoint.js.map +0 -1
  284. package/build/openid4vc-issuer/router/credentialEndpoint.d.ts +0 -3
  285. package/build/openid4vc-issuer/router/credentialEndpoint.js +0 -176
  286. package/build/openid4vc-issuer/router/credentialEndpoint.js.map +0 -1
  287. package/build/openid4vc-issuer/router/credentialOfferEndpoint.d.ts +0 -3
  288. package/build/openid4vc-issuer/router/credentialOfferEndpoint.js +0 -45
  289. package/build/openid4vc-issuer/router/credentialOfferEndpoint.js.map +0 -1
  290. package/build/openid4vc-issuer/router/index.d.ts +0 -9
  291. package/build/openid4vc-issuer/router/index.js +0 -20
  292. package/build/openid4vc-issuer/router/index.js.map +0 -1
  293. package/build/openid4vc-issuer/router/issuerMetadataEndpoint.d.ts +0 -2
  294. package/build/openid4vc-issuer/router/issuerMetadataEndpoint.js +0 -26
  295. package/build/openid4vc-issuer/router/issuerMetadataEndpoint.js.map +0 -1
  296. package/build/openid4vc-issuer/router/jwksEndpoint.d.ts +0 -3
  297. package/build/openid4vc-issuer/router/jwksEndpoint.js +0 -20
  298. package/build/openid4vc-issuer/router/jwksEndpoint.js.map +0 -1
  299. package/build/openid4vc-issuer/router/nonceEndpoint.d.ts +0 -3
  300. package/build/openid4vc-issuer/router/nonceEndpoint.js +0 -26
  301. package/build/openid4vc-issuer/router/nonceEndpoint.js.map +0 -1
  302. package/build/openid4vc-issuer/router/requestContext.d.ts +0 -5
  303. package/build/openid4vc-issuer/router/requestContext.js +0 -3
  304. package/build/openid4vc-issuer/router/requestContext.js.map +0 -1
  305. package/build/openid4vc-issuer/util/txCode.d.ts +0 -3
  306. package/build/openid4vc-issuer/util/txCode.js +0 -18
  307. package/build/openid4vc-issuer/util/txCode.js.map +0 -1
  308. package/build/openid4vc-verifier/OpenId4VcSiopVerifierService.d.ts +0 -55
  309. package/build/openid4vc-verifier/OpenId4VcSiopVerifierService.js +0 -498
  310. package/build/openid4vc-verifier/OpenId4VcSiopVerifierService.js.map +0 -1
  311. package/build/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.d.ts +0 -77
  312. package/build/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.js +0 -3
  313. package/build/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.js.map +0 -1
  314. package/build/openid4vc-verifier/OpenId4VcVerificationSessionState.d.ts +0 -6
  315. package/build/openid4vc-verifier/OpenId4VcVerificationSessionState.js +0 -11
  316. package/build/openid4vc-verifier/OpenId4VcVerificationSessionState.js.map +0 -1
  317. package/build/openid4vc-verifier/OpenId4VcVerifierApi.d.ts +0 -61
  318. package/build/openid4vc-verifier/OpenId4VcVerifierApi.js +0 -108
  319. package/build/openid4vc-verifier/OpenId4VcVerifierApi.js.map +0 -1
  320. package/build/openid4vc-verifier/OpenId4VcVerifierEvents.d.ts +0 -13
  321. package/build/openid4vc-verifier/OpenId4VcVerifierEvents.js +0 -8
  322. package/build/openid4vc-verifier/OpenId4VcVerifierEvents.js.map +0 -1
  323. package/build/openid4vc-verifier/OpenId4VcVerifierModule.d.ts +0 -21
  324. package/build/openid4vc-verifier/OpenId4VcVerifierModule.js +0 -109
  325. package/build/openid4vc-verifier/OpenId4VcVerifierModule.js.map +0 -1
  326. package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.d.ts +0 -31
  327. package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.js +0 -28
  328. package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.js.map +0 -1
  329. package/build/openid4vc-verifier/index.d.ts +0 -8
  330. package/build/openid4vc-verifier/index.js +0 -25
  331. package/build/openid4vc-verifier/index.js.map +0 -1
  332. package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartyEventEmitter.d.ts +0 -49
  333. package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartyEventEmitter.js +0 -234
  334. package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartyEventEmitter.js.map +0 -1
  335. package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartySessionManager.d.ts +0 -19
  336. package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartySessionManager.js +0 -146
  337. package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartySessionManager.js.map +0 -1
  338. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.d.ts +0 -71
  339. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.js +0 -46
  340. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.js.map +0 -1
  341. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRepository.d.ts +0 -5
  342. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRepository.js +0 -29
  343. package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRepository.js.map +0 -1
  344. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.d.ts +0 -29
  345. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.js +0 -29
  346. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.js.map +0 -1
  347. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRepository.d.ts +0 -8
  348. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRepository.js +0 -35
  349. package/build/openid4vc-verifier/repository/OpenId4VcVerifierRepository.js.map +0 -1
  350. package/build/openid4vc-verifier/repository/index.d.ts +0 -4
  351. package/build/openid4vc-verifier/repository/index.js +0 -21
  352. package/build/openid4vc-verifier/repository/index.js.map +0 -1
  353. package/build/openid4vc-verifier/router/authorizationEndpoint.d.ts +0 -11
  354. package/build/openid4vc-verifier/router/authorizationEndpoint.js +0 -102
  355. package/build/openid4vc-verifier/router/authorizationEndpoint.js.map +0 -1
  356. package/build/openid4vc-verifier/router/authorizationRequestEndpoint.d.ts +0 -11
  357. package/build/openid4vc-verifier/router/authorizationRequestEndpoint.js +0 -63
  358. package/build/openid4vc-verifier/router/authorizationRequestEndpoint.js.map +0 -1
  359. package/build/openid4vc-verifier/router/index.d.ts +0 -2
  360. package/build/openid4vc-verifier/router/index.js +0 -6
  361. package/build/openid4vc-verifier/router/index.js.map +0 -1
  362. package/build/openid4vc-verifier/router/requestContext.d.ts +0 -5
  363. package/build/openid4vc-verifier/router/requestContext.js +0 -3
  364. package/build/openid4vc-verifier/router/requestContext.js.map +0 -1
  365. package/build/shared/callbacks.d.ts +0 -18
  366. package/build/shared/callbacks.js +0 -81
  367. package/build/shared/callbacks.js.map +0 -1
  368. package/build/shared/index.d.ts +0 -2
  369. package/build/shared/index.js +0 -19
  370. package/build/shared/index.js.map +0 -1
  371. package/build/shared/issuerMetadataUtils.d.ts +0 -158
  372. package/build/shared/issuerMetadataUtils.js +0 -38
  373. package/build/shared/issuerMetadataUtils.js.map +0 -1
  374. package/build/shared/models/CredentialHolderBinding.d.ts +0 -13
  375. package/build/shared/models/CredentialHolderBinding.js +0 -3
  376. package/build/shared/models/CredentialHolderBinding.js.map +0 -1
  377. package/build/shared/models/OpenId4VcJwtIssuer.d.ts +0 -28
  378. package/build/shared/models/OpenId4VcJwtIssuer.js +0 -3
  379. package/build/shared/models/OpenId4VcJwtIssuer.js.map +0 -1
  380. package/build/shared/models/OpenId4VciAuthorizationServerConfig.d.ts +0 -10
  381. package/build/shared/models/OpenId4VciAuthorizationServerConfig.js +0 -3
  382. package/build/shared/models/OpenId4VciAuthorizationServerConfig.js.map +0 -1
  383. package/build/shared/models/OpenId4VciCredentialFormatProfile.d.ts +0 -7
  384. package/build/shared/models/OpenId4VciCredentialFormatProfile.js +0 -12
  385. package/build/shared/models/OpenId4VciCredentialFormatProfile.js.map +0 -1
  386. package/build/shared/models/index.d.ts +0 -24
  387. package/build/shared/models/index.js +0 -25
  388. package/build/shared/models/index.js.map +0 -1
  389. package/build/shared/router/context.d.ts +0 -17
  390. package/build/shared/router/context.js +0 -76
  391. package/build/shared/router/context.js.map +0 -1
  392. package/build/shared/router/express.d.ts +0 -2
  393. package/build/shared/router/express.js +0 -15
  394. package/build/shared/router/express.js.map +0 -1
  395. package/build/shared/router/express.native.d.ts +0 -1
  396. package/build/shared/router/express.native.js +0 -7
  397. package/build/shared/router/express.native.js.map +0 -1
  398. package/build/shared/router/index.d.ts +0 -3
  399. package/build/shared/router/index.js +0 -20
  400. package/build/shared/router/index.js.map +0 -1
  401. package/build/shared/router/tenants.d.ts +0 -13
  402. package/build/shared/router/tenants.js +0 -49
  403. package/build/shared/router/tenants.js.map +0 -1
  404. package/build/shared/transform.d.ts +0 -5
  405. package/build/shared/transform.js +0 -73
  406. package/build/shared/transform.js.map +0 -1
  407. package/build/shared/utils.d.ts +0 -22
  408. package/build/shared/utils.js +0 -154
  409. package/build/shared/utils.js.map +0 -1
@@ -0,0 +1,714 @@
1
+ import { OpenId4VcVerifierModuleConfig } from "./OpenId4VcVerifierModuleConfig.mjs";
2
+ import { storeActorIdForContextCorrelationId } from "../shared/router/tenants.mjs";
3
+ import "../shared/router/index.mjs";
4
+ import { credoJwtIssuerToOpenId4VcJwtIssuer, dcqlCredentialQueryToPresentationFormat, getSupportedJwaSignatureAlgorithms } from "../shared/utils.mjs";
5
+ import { getOid4vcCallbacks } from "../shared/callbacks.mjs";
6
+ import { __decorateMetadata } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs";
7
+ import { __decorateParam } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateParam.mjs";
8
+ import { __decorate } from "../_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs";
9
+ import { OpenId4VcVerificationSessionState } from "./OpenId4VcVerificationSessionState.mjs";
10
+ import { getSdJwtVcTransactionDataHashes } from "../shared/transactionData.mjs";
11
+ import { OpenId4VcVerifierEvents } from "./OpenId4VcVerifierEvents.mjs";
12
+ import { OpenId4VcVerificationSessionRecord } from "./repository/OpenId4VcVerificationSessionRecord.mjs";
13
+ import { OpenId4VcVerificationSessionRepository } from "./repository/OpenId4VcVerificationSessionRepository.mjs";
14
+ import { OpenId4VcVerifierRecord } from "./repository/OpenId4VcVerifierRecord.mjs";
15
+ import { OpenId4VcVerifierRepository } from "./repository/OpenId4VcVerifierRepository.mjs";
16
+ import "./repository/index.mjs";
17
+ import { AgentContext, ClaimFormat, CredoError, DcqlService, DifPresentationExchangeService, EventEmitter, Hasher, InjectionSymbols, JsonEncoder, JsonTransformer, Jwt, Kms, MdocDeviceResponse, SdJwtVcApi, SignatureSuiteRegistry, TypedArrayEncoder, W3cCredentialService, W3cJsonLdVerifiablePresentation, W3cJwtVerifiablePresentation, W3cV2CredentialService, W3cV2SdJwtVerifiablePresentation, X509Certificate, X509ModuleConfig, X509Service, extractPresentationsWithDescriptorsFromSubmission, extractX509CertificatesFromJwt, getDomainFromUrl, inject, injectable, isMdocSupportedSignatureAlgorithm, joinUriParts, mapNonEmptyArray, utils } from "@credo-ts/core";
18
+ import { Oauth2ErrorCodes, Oauth2ServerErrorResponseError } from "@openid4vc/oauth2";
19
+ import { JarmMode, Openid4vpVerifier, calculateX509HashClientIdPrefixValue, getOpenid4vpClientId, isJarmResponseMode, isOpenid4vpAuthorizationRequestDcApi, zOpenid4vpAuthorizationResponse } from "@openid4vc/openid4vp";
20
+
21
+ //#region src/openid4vc-verifier/OpenId4VpVerifierService.ts
22
+ var _ref, _ref2, _ref3, _ref4, _ref5;
23
+ let OpenId4VpVerifierService = class OpenId4VpVerifierService$1 {
24
+ constructor(logger, w3cCredentialService, w3cV2CredentialService, openId4VcVerifierRepository, config, openId4VcVerificationSessionRepository) {
25
+ this.logger = logger;
26
+ this.w3cCredentialService = w3cCredentialService;
27
+ this.w3cV2CredentialService = w3cV2CredentialService;
28
+ this.openId4VcVerifierRepository = openId4VcVerifierRepository;
29
+ this.config = config;
30
+ this.openId4VcVerificationSessionRepository = openId4VcVerificationSessionRepository;
31
+ }
32
+ getOpenid4vpVerifier(agentContext) {
33
+ return new Openid4vpVerifier({ callbacks: getOid4vcCallbacks(agentContext) });
34
+ }
35
+ async createAuthorizationRequest(agentContext, options) {
36
+ const kms = agentContext.resolve(Kms.KeyManagementApi);
37
+ const nonce = TypedArrayEncoder.toBase64URL(kms.randomBytes({ length: 32 }));
38
+ const state = TypedArrayEncoder.toBase64URL(kms.randomBytes({ length: 32 }));
39
+ const responseMode = options.responseMode ?? "direct_post.jwt";
40
+ const isDcApiRequest = responseMode === "dc_api" || responseMode === "dc_api.jwt";
41
+ const version = options.version ?? "v1";
42
+ if (version === "v1.draft21" && isDcApiRequest) throw new CredoError(`OpenID4VP version '${version}' cannot be used with responseMode '${options.responseMode}'. Use version 'v1' or 'v1.draft24' instead.`);
43
+ if (version === "v1.draft21" && options.transactionData) throw new CredoError(`OpenID4VP version '${version}' cannot be used with transactionData. Use version 'v1' or 'v1.draft24' instead.`);
44
+ if (version === "v1.draft21" && options.dcql) throw new CredoError(`OpenID4VP version '${version}' cannot be used with dcql. Use version 'v1' or 'v1.draft24' instead.`);
45
+ if (version !== "v1" && options.verifierInfo) throw new CredoError(`OpenID4VP version '${version}' cannot be used with verifierInfo. Use version 'v1' instead.`);
46
+ if (version === "v1" && options.presentationExchange) throw new CredoError(`OpenID4VP version '${version}' cannot be used with presentationExchange. Use dcql instead (recommended), or use older versions 'v1.draft24' and 'v1.draft21'.`);
47
+ if (options.dcql?.query.credentials.some((c) => c.require_cryptographic_holder_binding === false)) throw new CredoError(`Setting 'require_cryptographic_holder_binding' to false in DCQL Query is not supported by Credo at the moment. Only presentations with cryptographic holder binding are supported.`);
48
+ if (isDcApiRequest && options.authorizationResponseRedirectUri) throw new CredoError("'authorizationResponseRedirectUri' cannot be be used with response mode 'dc_api' and 'dc_api.jwt'.");
49
+ const hasMdocRequest = options.presentationExchange?.definition.input_descriptors.some((i) => i.format?.mso_mdoc) || options.dcql?.query.credentials.some((c) => c.format === "mso_mdoc");
50
+ if ((version === "v1.draft21" || version === "v1.draft24") && responseMode === "direct_post" && hasMdocRequest) throw new CredoError("Unable to create authorization request with response mode 'direct_post' containing mDOC credentials. ISO 18013-7 requires the usage of response mode 'direct_post.jwt', and needs parameters from the encrypted response header to verify the mDOC sigature. Either use version 'v1', or update the response mode to 'direct_post.jwt'");
51
+ if (options.verifierInfo) {
52
+ const queryIds = options?.dcql?.query.credentials.map(({ id }) => id) ?? options?.presentationExchange?.definition.input_descriptors.map(({ id }) => id) ?? [];
53
+ if (!options.verifierInfo.every((vi) => !vi.credential_ids || vi.credential_ids.every((credentialId) => queryIds.includes(credentialId)))) throw new CredoError("Verifier info (attestations) were provided, but the verifier info used credential ids that are not present in the query");
54
+ }
55
+ const authorizationRequestId = utils.uuid();
56
+ const authorizationResponseUrl = `${joinUriParts(this.config.baseUrl, [options.verifier.verifierId, this.config.authorizationEndpoint])}?session=${authorizationRequestId}`;
57
+ const jwtIssuer = options.requestSigner.method !== "none" ? await credoJwtIssuerToOpenId4VcJwtIssuer(agentContext, options.requestSigner) : void 0;
58
+ let clientIdPrefix;
59
+ let clientId;
60
+ if (!jwtIssuer) if (isDcApiRequest) {
61
+ clientIdPrefix = version === "v1" ? "origin" : "web-origin";
62
+ clientId = void 0;
63
+ } else {
64
+ clientIdPrefix = "redirect_uri";
65
+ clientId = authorizationResponseUrl;
66
+ }
67
+ else if (jwtIssuer?.method === "x5c") {
68
+ const leafCertificate = X509Service.getLeafCertificate(agentContext, { certificateChain: jwtIssuer.x5c });
69
+ if (!authorizationResponseUrl.startsWith("https://") && !(authorizationResponseUrl.startsWith("http://") && agentContext.config.allowInsecureHttpUrls)) throw new CredoError("The X509 certificate issuer must be a HTTPS URI.");
70
+ if (options.requestSigner.method === "x5c" && options.requestSigner.clientIdPrefix === "x509_hash") {
71
+ clientIdPrefix = "x509_hash";
72
+ clientId = await calculateX509HashClientIdPrefixValue({
73
+ x509Certificate: leafCertificate.rawCertificate,
74
+ hash: Hasher.hash
75
+ });
76
+ } else {
77
+ if (!leafCertificate.sanDnsNames.includes(getDomainFromUrl(authorizationResponseUrl))) {
78
+ const sanDnsMessage = leafCertificate.sanDnsNames.length > 0 ? `SAN-DNS names are ${leafCertificate.sanDnsNames.join(", ")}` : "there are no SAN-DNS names";
79
+ throw new CredoError(`The domain of the OpenID4VCI issuer does not match a SAN DNS name in the x5c certificate. The OpenID4VCI domain is '${getDomainFromUrl(authorizationResponseUrl)}', $${sanDnsMessage}`);
80
+ }
81
+ clientIdPrefix = "x509_san_dns";
82
+ clientId = getDomainFromUrl(authorizationResponseUrl);
83
+ }
84
+ } else if (jwtIssuer?.method === "did") {
85
+ clientId = jwtIssuer.didUrl.split("#")[0];
86
+ clientIdPrefix = version === "v1" ? "decentralized_identifier" : "did";
87
+ } else throw new CredoError(`Unsupported jwt issuer method '${options.requestSigner.method}'. Only 'did' and 'x5c' are supported.`);
88
+ const hostedAuthorizationRequestUri = !isDcApiRequest && jwtIssuer ? joinUriParts(this.config.baseUrl, [
89
+ options.verifier.verifierId,
90
+ this.config.authorizationRequestEndpoint,
91
+ authorizationRequestId
92
+ ]) : void 0;
93
+ const client_id = clientIdPrefix === "did" || clientIdPrefix === "https" || version === "v1.draft21" ? clientId : `${clientIdPrefix}:${clientId}`;
94
+ const legacyClientIdScheme = version === "v1.draft21" && clientIdPrefix !== "web-origin" && clientIdPrefix !== "origin" && clientIdPrefix !== "decentralized_identifier" ? clientIdPrefix : void 0;
95
+ const client_metadata = await this.getClientMetadata(agentContext, {
96
+ responseMode,
97
+ verifier: options.verifier,
98
+ authorizationResponseUrl,
99
+ version,
100
+ dcqlQuery: options.dcql?.query
101
+ });
102
+ const requestParamsBase = {
103
+ nonce,
104
+ presentation_definition: options.presentationExchange?.definition,
105
+ dcql_query: options.dcql?.query,
106
+ transaction_data: options.transactionData?.map((entry) => JsonEncoder.toBase64URL(entry)),
107
+ response_mode: responseMode,
108
+ response_type: "vp_token",
109
+ client_metadata,
110
+ verifier_info: options.verifierInfo
111
+ };
112
+ const authorizationRequest = await this.getOpenid4vpVerifier(agentContext).createOpenId4vpAuthorizationRequest({
113
+ jar: jwtIssuer ? {
114
+ jwtSigner: jwtIssuer,
115
+ requestUri: hostedAuthorizationRequestUri,
116
+ expiresInSeconds: this.config.authorizationRequestExpiresInSeconds
117
+ } : void 0,
118
+ authorizationRequestPayload: requestParamsBase.response_mode === "dc_api.jwt" || requestParamsBase.response_mode === "dc_api" ? {
119
+ ...requestParamsBase,
120
+ client_id: jwtIssuer ? client_id : void 0,
121
+ response_mode: requestParamsBase.response_mode,
122
+ expected_origins: options.expectedOrigins
123
+ } : {
124
+ ...requestParamsBase,
125
+ response_mode: requestParamsBase.response_mode,
126
+ client_id,
127
+ state,
128
+ response_uri: authorizationResponseUrl,
129
+ client_id_scheme: legacyClientIdScheme
130
+ }
131
+ });
132
+ const verificationSession = new OpenId4VcVerificationSessionRecord({
133
+ authorizationResponseRedirectUri: options.authorizationResponseRedirectUri,
134
+ authorizationRequestPayload: authorizationRequest.jar ? void 0 : authorizationRequest.authorizationRequestPayload,
135
+ authorizationRequestJwt: authorizationRequest.jar?.authorizationRequestJwt,
136
+ authorizationRequestUri: hostedAuthorizationRequestUri,
137
+ authorizationRequestId,
138
+ state: OpenId4VcVerificationSessionState.RequestCreated,
139
+ verifierId: options.verifier.verifierId,
140
+ expiresAt: utils.addSecondsToDate(/* @__PURE__ */ new Date(), this.config.authorizationRequestExpiresInSeconds),
141
+ openId4VpVersion: version
142
+ });
143
+ await this.openId4VcVerificationSessionRepository.save(agentContext, verificationSession);
144
+ this.emitStateChangedEvent(agentContext, verificationSession, null);
145
+ return {
146
+ authorizationRequest: authorizationRequest.authorizationRequest,
147
+ verificationSession,
148
+ authorizationRequestObject: authorizationRequest.authorizationRequestObject
149
+ };
150
+ }
151
+ async getDcqlVerifiedResponse(agentContext, _dcqlQuery, presentations) {
152
+ const dcqlService = agentContext.dependencyManager.resolve(DcqlService);
153
+ const dcqlQuery = dcqlService.validateDcqlQuery(_dcqlQuery);
154
+ const dcqlPresentationEntries = Object.entries(presentations);
155
+ const dcqlPresentation = Object.fromEntries(dcqlPresentationEntries.map(([credentialId, presentations$1]) => {
156
+ const queryCredential = dcqlQuery.credentials.find((c) => c.id === credentialId);
157
+ if (!queryCredential) throw new CredoError(`vp_token contains presentation for credential query id '${credentialId}', but this credential is not present in the dcql query.`);
158
+ return [credentialId, mapNonEmptyArray(presentations$1, (presentation) => this.decodePresentation(agentContext, {
159
+ presentation,
160
+ format: dcqlCredentialQueryToPresentationFormat(queryCredential)
161
+ }))];
162
+ }));
163
+ return {
164
+ query: dcqlQuery,
165
+ presentations: dcqlPresentation,
166
+ presentationResult: await dcqlService.assertValidDcqlPresentation(agentContext, dcqlPresentation, dcqlQuery)
167
+ };
168
+ }
169
+ async parseAuthorizationResponse(agentContext, options) {
170
+ const openid4vpVerifier = this.getOpenid4vpVerifier(agentContext);
171
+ const { authorizationResponse, verificationSession, origin } = options;
172
+ let parsedAuthorizationResponse;
173
+ try {
174
+ parsedAuthorizationResponse = await openid4vpVerifier.parseOpenid4vpAuthorizationResponse({
175
+ authorizationResponse,
176
+ origin,
177
+ authorizationRequestPayload: verificationSession.requestPayload,
178
+ callbacks: getOid4vcCallbacks(agentContext)
179
+ });
180
+ if (parsedAuthorizationResponse.jarm && parsedAuthorizationResponse.jarm.type !== JarmMode.Encrypted) throw new Oauth2ServerErrorResponseError({
181
+ error: Oauth2ErrorCodes.InvalidRequest,
182
+ error_description: `Only encrypted JARM responses are supported, received '${parsedAuthorizationResponse.jarm.type}'.`
183
+ });
184
+ return {
185
+ ...parsedAuthorizationResponse,
186
+ verificationSession
187
+ };
188
+ } catch (error) {
189
+ if (verificationSession?.state === OpenId4VcVerificationSessionState.RequestUriRetrieved || verificationSession?.state === OpenId4VcVerificationSessionState.RequestCreated) {
190
+ const parsed = zOpenid4vpAuthorizationResponse.safeParse(parsedAuthorizationResponse?.authorizationResponsePayload);
191
+ verificationSession.authorizationResponsePayload = parsed.success ? parsed.data : void 0;
192
+ verificationSession.errorMessage = error.message;
193
+ await this.updateState(agentContext, verificationSession, OpenId4VcVerificationSessionState.Error);
194
+ }
195
+ throw error;
196
+ }
197
+ }
198
+ async verifyAuthorizationResponse(agentContext, options) {
199
+ const { verificationSession, authorizationResponse, origin } = options;
200
+ const authorizationRequest = verificationSession.requestPayload;
201
+ const openid4vpVersion = verificationSession.openId4VpVersion ?? (authorizationRequest.client_id_scheme !== void 0 ? "v1.draft21" : "v1.draft24");
202
+ if (verificationSession.state !== OpenId4VcVerificationSessionState.RequestUriRetrieved && verificationSession.state !== OpenId4VcVerificationSessionState.RequestCreated) throw new Oauth2ServerErrorResponseError({
203
+ error: Oauth2ErrorCodes.InvalidRequest,
204
+ error_description: "Invalid session"
205
+ });
206
+ if (verificationSession.expiresAt && Date.now() > verificationSession.expiresAt.getTime()) {
207
+ verificationSession.errorMessage = "session expired";
208
+ await this.updateState(agentContext, verificationSession, OpenId4VcVerificationSessionState.Error);
209
+ throw new Oauth2ServerErrorResponseError({
210
+ error: Oauth2ErrorCodes.InvalidRequest,
211
+ error_description: "session expired"
212
+ });
213
+ }
214
+ const result = await this.parseAuthorizationResponse(agentContext, {
215
+ verificationSession,
216
+ authorizationResponse,
217
+ origin
218
+ });
219
+ const encryptionJwk = authorizationRequest.client_metadata?.jwks?.keys.find((key) => key.use === "enc");
220
+ const encryptionPublicJwk = encryptionJwk ? Kms.PublicJwk.fromUnknown(encryptionJwk) : void 0;
221
+ let dcqlResponse;
222
+ let pexResponse;
223
+ let transactionData;
224
+ try {
225
+ const clientId = getOpenid4vpClientId({
226
+ responseMode: authorizationRequest.response_mode,
227
+ clientId: authorizationRequest.client_id,
228
+ legacyClientIdScheme: authorizationRequest.client_id_scheme,
229
+ origin: options.origin,
230
+ version: openid4vpVersion === "v1" ? 100 : openid4vpVersion === "v1.draft24" ? 24 : 21
231
+ }).effectiveClientId;
232
+ const isDcApiRequest = isOpenid4vpAuthorizationRequestDcApi(authorizationRequest);
233
+ const audience = openid4vpVersion === "v1" && isDcApiRequest ? `origin:${options.origin}` : clientId;
234
+ const responseUri = isOpenid4vpAuthorizationRequestDcApi(authorizationRequest) ? void 0 : authorizationRequest.response_uri;
235
+ const mdocGeneratedNonce = result.jarm?.jarmHeader.apu ? TypedArrayEncoder.toUtf8String(TypedArrayEncoder.fromBase64(result.jarm?.jarmHeader.apu)) : void 0;
236
+ if (result.type === "dcql") {
237
+ const dcqlPresentationEntries = Object.entries(result.dcql.presentations);
238
+ if (!authorizationRequest.dcql_query) throw new Oauth2ServerErrorResponseError({
239
+ error: Oauth2ErrorCodes.InvalidRequest,
240
+ error_description: "DCQL response provided but no dcql_query found in the authorization request."
241
+ });
242
+ const dcql = agentContext.dependencyManager.resolve(DcqlService);
243
+ const dcqlQuery = dcql.validateDcqlQuery(authorizationRequest.dcql_query);
244
+ const presentationVerificationResults = await Promise.all(dcqlPresentationEntries.map(async ([credentialId, presentations$1]) => {
245
+ const queryCredential = dcqlQuery.credentials.find((c) => c.id === credentialId);
246
+ if (!queryCredential) throw new Oauth2ServerErrorResponseError({
247
+ error: Oauth2ErrorCodes.InvalidRequest,
248
+ error_description: `vp_token contains presentation for credential query id '${credentialId}', but this credential is not present in the dcql query.`
249
+ });
250
+ return [credentialId, await Promise.all(mapNonEmptyArray(presentations$1, (presentation) => this.verifyPresentation(agentContext, {
251
+ format: dcqlCredentialQueryToPresentationFormat(queryCredential),
252
+ nonce: authorizationRequest.nonce,
253
+ audience,
254
+ version: openid4vpVersion,
255
+ clientId,
256
+ encryptionJwk: encryptionPublicJwk,
257
+ origin: options.origin,
258
+ responseUri,
259
+ mdocGeneratedNonce,
260
+ verificationSessionId: result.verificationSession.id,
261
+ presentation
262
+ })))];
263
+ }));
264
+ const errorMessages = presentationVerificationResults.flatMap(([credentialId, presentations$1], index) => presentations$1.map((result$1) => !result$1.verified ? `\t- ${credentialId}[${index}]: ${result$1.reason}` : void 0)).filter((i) => i !== void 0);
265
+ if (errorMessages.length > 0) throw new Oauth2ServerErrorResponseError({
266
+ error: Oauth2ErrorCodes.InvalidRequest,
267
+ error_description: "One or more presentations failed verification."
268
+ }, { internalMessage: errorMessages.join("\n") });
269
+ const presentations = Object.fromEntries(presentationVerificationResults.map(([credentialId, presentations$1]) => [credentialId, presentations$1.map((p) => p.verified ? p.presentation : void 0).filter((p) => p !== void 0)]));
270
+ try {
271
+ dcqlResponse = {
272
+ presentations,
273
+ presentationResult: await dcql.assertValidDcqlPresentation(agentContext, presentations, dcqlQuery),
274
+ query: dcqlQuery
275
+ };
276
+ } catch (error) {
277
+ throw new Oauth2ServerErrorResponseError({
278
+ error: Oauth2ErrorCodes.InvalidRequest,
279
+ error_description: "Presentation submission does not satisfy presentation request."
280
+ }, { cause: error });
281
+ }
282
+ }
283
+ if (result.type === "pex") {
284
+ const pex = agentContext.dependencyManager.resolve(DifPresentationExchangeService);
285
+ const encodedPresentations = result.pex.presentations;
286
+ const submission = result.pex.presentationSubmission;
287
+ const definition = result.pex.presentationDefinition;
288
+ pex.validatePresentationDefinition(definition);
289
+ try {
290
+ pex.validatePresentationSubmission(submission);
291
+ } catch (error) {
292
+ throw new Oauth2ServerErrorResponseError({
293
+ error: Oauth2ErrorCodes.InvalidRequest,
294
+ error_description: "Invalid presentation submission."
295
+ }, { cause: error });
296
+ }
297
+ const presentationsArray = Array.isArray(encodedPresentations) ? encodedPresentations : [encodedPresentations];
298
+ const presentationVerificationResults = await Promise.all(presentationsArray.map((presentation) => {
299
+ return this.verifyPresentation(agentContext, {
300
+ nonce: authorizationRequest.nonce,
301
+ audience,
302
+ clientId,
303
+ version: openid4vpVersion,
304
+ encryptionJwk: encryptionPublicJwk,
305
+ responseUri,
306
+ mdocGeneratedNonce,
307
+ verificationSessionId: result.verificationSession.id,
308
+ presentation,
309
+ format: this.claimFormatFromEncodedPresentation(presentation),
310
+ origin: options.origin
311
+ });
312
+ }));
313
+ const errorMessages = presentationVerificationResults.map((result$1, index) => !result$1.verified ? `\t- [${index}]: ${result$1.reason}` : void 0).filter((i) => i !== void 0);
314
+ if (errorMessages.length > 0) throw new Oauth2ServerErrorResponseError({
315
+ error: Oauth2ErrorCodes.InvalidRequest,
316
+ error_description: "One or more presentations failed verification."
317
+ }, { internalMessage: errorMessages.join("\n") });
318
+ const verifiablePresentations = presentationVerificationResults.map((p) => p.verified ? p.presentation : void 0).filter((p) => p !== void 0);
319
+ try {
320
+ pex.validatePresentation(definition, verifiablePresentations.length === 1 ? verifiablePresentations[0] : verifiablePresentations, submission);
321
+ } catch (error) {
322
+ throw new Oauth2ServerErrorResponseError({
323
+ error: Oauth2ErrorCodes.InvalidRequest,
324
+ error_description: "Presentation submission does not satisfy presentation request."
325
+ }, { cause: error });
326
+ }
327
+ pexResponse = {
328
+ definition,
329
+ descriptors: extractPresentationsWithDescriptorsFromSubmission(verifiablePresentations.length === 1 ? verifiablePresentations[0] : verifiablePresentations, submission, definition),
330
+ presentations: verifiablePresentations,
331
+ submission
332
+ };
333
+ }
334
+ transactionData = await this.getVerifiedTransactionData(agentContext, {
335
+ authorizationRequest,
336
+ dcql: dcqlResponse,
337
+ presentationExchange: pexResponse
338
+ });
339
+ } catch (error) {
340
+ result.verificationSession.errorMessage = error.message;
341
+ await this.updateState(agentContext, result.verificationSession, OpenId4VcVerificationSessionState.Error);
342
+ throw error;
343
+ }
344
+ result.verificationSession.authorizationResponsePayload = result.authorizationResponsePayload;
345
+ await this.updateState(agentContext, result.verificationSession, OpenId4VcVerificationSessionState.ResponseVerified);
346
+ return {
347
+ presentationExchange: pexResponse,
348
+ dcql: dcqlResponse,
349
+ transactionData,
350
+ verificationSession: result.verificationSession
351
+ };
352
+ }
353
+ /**
354
+ * Get the format based on an encoded presentation. This is mostly leveraged for
355
+ * PEX where it's not known based on the request which format to expect
356
+ */
357
+ claimFormatFromEncodedPresentation(presentation) {
358
+ if (typeof presentation === "object") return ClaimFormat.LdpVp;
359
+ if (presentation.includes("~")) return ClaimFormat.SdJwtDc;
360
+ if (Jwt.format.test(presentation)) return ClaimFormat.JwtVp;
361
+ return ClaimFormat.MsoMdoc;
362
+ }
363
+ async getVerifiedAuthorizationResponse(agentContext, verificationSession) {
364
+ verificationSession.assertState(OpenId4VcVerificationSessionState.ResponseVerified);
365
+ if (!verificationSession.authorizationResponsePayload) throw new CredoError("No authorization response payload found in the verification session.");
366
+ const authorizationRequestPayload = verificationSession.requestPayload;
367
+ const openid4vpAuthorizationResponsePayload = verificationSession.authorizationResponsePayload;
368
+ const result = this.getOpenid4vpVerifier(agentContext).validateOpenid4vpAuthorizationResponsePayload({
369
+ authorizationRequestPayload: verificationSession.requestPayload,
370
+ authorizationResponsePayload: openid4vpAuthorizationResponsePayload
371
+ });
372
+ let presentationExchange;
373
+ const dcql = result.type === "dcql" ? await this.getDcqlVerifiedResponse(agentContext, authorizationRequestPayload.dcql_query, result.dcql.presentations) : void 0;
374
+ if (result.type === "pex") {
375
+ const presentationDefinition = authorizationRequestPayload.presentation_definition;
376
+ const submission = openid4vpAuthorizationResponsePayload.presentation_submission;
377
+ if (!submission) throw new CredoError("Unable to extract submission from the response.");
378
+ const verifiablePresentations = result.pex.presentations.map((presentation) => this.decodePresentation(agentContext, {
379
+ presentation,
380
+ format: this.claimFormatFromEncodedPresentation(presentation)
381
+ }));
382
+ presentationExchange = {
383
+ definition: presentationDefinition,
384
+ submission,
385
+ presentations: verifiablePresentations,
386
+ descriptors: extractPresentationsWithDescriptorsFromSubmission(verifiablePresentations.length === 1 ? verifiablePresentations[0] : verifiablePresentations, submission, presentationDefinition)
387
+ };
388
+ }
389
+ if (!presentationExchange && !dcql) throw new CredoError("No presentationExchange or dcql found in the response.");
390
+ const transactionData = await this.getVerifiedTransactionData(agentContext, {
391
+ authorizationRequest: authorizationRequestPayload,
392
+ dcql,
393
+ presentationExchange
394
+ });
395
+ return {
396
+ presentationExchange,
397
+ dcql,
398
+ transactionData,
399
+ verificationSession
400
+ };
401
+ }
402
+ async getVerifiedTransactionData(agentContext, { authorizationRequest, presentationExchange, dcql }) {
403
+ if (!authorizationRequest.transaction_data) return void 0;
404
+ const openid4vpVerifier = this.getOpenid4vpVerifier(agentContext);
405
+ const transactionDataHashesCredentials = {};
406
+ const idToCredential = dcql ? Object.entries(dcql.presentations) : presentationExchange?.descriptors.map((descriptor) => [descriptor.descriptor.id, [descriptor.presentation]]) ?? [];
407
+ for (const [credentialId, presentations] of idToCredential) {
408
+ const transactionDataHashes = presentations.map((presentation) => presentation.claimFormat === ClaimFormat.SdJwtDc ? getSdJwtVcTransactionDataHashes(presentation) : void 0);
409
+ const firstHasHash = transactionDataHashes[0] !== void 0;
410
+ if (!transactionDataHashes.every((hash) => firstHasHash ? hash !== void 0 : hash === void 0)) throw new Oauth2ServerErrorResponseError({
411
+ error: Oauth2ErrorCodes.InvalidTransactionData,
412
+ error_description: `Multipe presentations were submitted for credential query ${credentialId} but not all presentations includes a transaction data hash. Either all or none of the presentations for a credential query id should include a transaction data hash.`
413
+ });
414
+ if (!firstHasHash) continue;
415
+ transactionDataHashesCredentials[credentialId] = transactionDataHashes;
416
+ }
417
+ return (await openid4vpVerifier.verifyTransactionData({
418
+ credentials: transactionDataHashesCredentials,
419
+ transactionData: authorizationRequest.transaction_data
420
+ })).map(({ credentialId, transactionDataEntry, presentations }) => ({
421
+ credentialId,
422
+ encoded: transactionDataEntry.encoded,
423
+ decoded: transactionDataEntry.transactionData,
424
+ transactionDataIndex: transactionDataEntry.transactionDataIndex,
425
+ presentations: presentations.map((presentation) => ({
426
+ presentationHashIndex: presentation.credentialHashIndex,
427
+ hash: presentation.hash,
428
+ hashAlg: presentation.hashAlg
429
+ }))
430
+ }));
431
+ }
432
+ async getAllVerifiers(agentContext) {
433
+ return this.openId4VcVerifierRepository.getAll(agentContext);
434
+ }
435
+ async getVerifierByVerifierId(agentContext, verifierId) {
436
+ return this.openId4VcVerifierRepository.getByVerifierId(agentContext, verifierId);
437
+ }
438
+ async updateVerifier(agentContext, verifier) {
439
+ return this.openId4VcVerifierRepository.update(agentContext, verifier);
440
+ }
441
+ async createVerifier(agentContext, options) {
442
+ const openId4VcVerifier = new OpenId4VcVerifierRecord({
443
+ verifierId: options?.verifierId ?? utils.uuid(),
444
+ clientMetadata: options?.clientMetadata
445
+ });
446
+ await this.openId4VcVerifierRepository.save(agentContext, openId4VcVerifier);
447
+ await storeActorIdForContextCorrelationId(agentContext, openId4VcVerifier.verifierId);
448
+ return openId4VcVerifier;
449
+ }
450
+ async findVerificationSessionsByQuery(agentContext, query, queryOptions) {
451
+ return this.openId4VcVerificationSessionRepository.findByQuery(agentContext, query, queryOptions);
452
+ }
453
+ async getVerificationSessionById(agentContext, verificationSessionId) {
454
+ return this.openId4VcVerificationSessionRepository.getById(agentContext, verificationSessionId);
455
+ }
456
+ async getClientMetadata(agentContext, options) {
457
+ const { responseMode, verifier } = options;
458
+ const signatureSuiteRegistry = agentContext.resolve(SignatureSuiteRegistry);
459
+ const kms = agentContext.resolve(Kms.KeyManagementApi);
460
+ const supportedAlgs = getSupportedJwaSignatureAlgorithms(agentContext);
461
+ const supportedMdocAlgs = supportedAlgs.filter(isMdocSupportedSignatureAlgorithm);
462
+ const supportedProofTypes = signatureSuiteRegistry.supportedProofTypes;
463
+ let jarmEncryptionJwk;
464
+ if (isJarmResponseMode(responseMode)) jarmEncryptionJwk = {
465
+ ...(await kms.createKey({ type: {
466
+ crv: "P-256",
467
+ kty: "EC"
468
+ } })).publicJwk,
469
+ use: "enc"
470
+ };
471
+ const jarmClientMetadata = jarmEncryptionJwk ? {
472
+ jwks: { keys: [jarmEncryptionJwk] },
473
+ ...options.version === "v1" ? { encrypted_response_enc_values_supported: [
474
+ "A128GCM",
475
+ "A256GCM",
476
+ "A128CBC-HS256"
477
+ ] } : {
478
+ authorization_encrypted_response_alg: "ECDH-ES",
479
+ authorization_encrypted_response_enc: options.version === "v1.draft24" ? "A128GCM" : "A256GCM"
480
+ }
481
+ } : void 0;
482
+ const dclqQueryFormats = new Set(options.dcqlQuery?.credentials.map((c) => c.format));
483
+ return {
484
+ ...jarmClientMetadata,
485
+ ...verifier.clientMetadata,
486
+ response_types_supported: ["vp_token"],
487
+ ...options.version === "v1" ? { vp_formats_supported: {
488
+ ...dclqQueryFormats.has("dc+sd-jwt") ? { "dc+sd-jwt": {
489
+ "kb-jwt_alg_values": supportedAlgs,
490
+ "sd-jwt_alg_values": supportedAlgs
491
+ } } : {},
492
+ ...dclqQueryFormats.has("mso_mdoc") ? { mso_mdoc: {
493
+ deviceauth_alg_values: [
494
+ -9,
495
+ -51,
496
+ -19
497
+ ],
498
+ issuerauth_alg_values: [
499
+ -9,
500
+ -51,
501
+ -19
502
+ ]
503
+ } } : {},
504
+ ...dclqQueryFormats.has("jwt_vc_json") ? { jwt_vc_json: { alg_values: supportedAlgs } } : {},
505
+ ...dclqQueryFormats.has("ldp_vc") ? { ldp_vc: { proof_type_values: supportedProofTypes } } : {}
506
+ } } : { vp_formats: {
507
+ mso_mdoc: { alg: supportedMdocAlgs },
508
+ jwt_vc: { alg: supportedAlgs },
509
+ jwt_vc_json: { alg: supportedAlgs },
510
+ jwt_vp_json: { alg: supportedAlgs },
511
+ jwt_vp: { alg: supportedAlgs },
512
+ ldp_vc: { proof_type: supportedProofTypes },
513
+ ldp_vp: { proof_type: supportedProofTypes },
514
+ "vc+sd-jwt": {
515
+ "kb-jwt_alg_values": supportedAlgs,
516
+ "sd-jwt_alg_values": supportedAlgs
517
+ },
518
+ "dc+sd-jwt": {
519
+ "kb-jwt_alg_values": supportedAlgs,
520
+ "sd-jwt_alg_values": supportedAlgs
521
+ }
522
+ } }
523
+ };
524
+ }
525
+ decodePresentation(agentContext, options) {
526
+ const { presentation, format } = options;
527
+ if (format === ClaimFormat.SdJwtDc) {
528
+ if (typeof presentation !== "string") throw new CredoError(`Expected vp_token entry for format ${format} to be of type string`);
529
+ return agentContext.dependencyManager.resolve(SdJwtVcApi).fromCompact(presentation);
530
+ }
531
+ if (format === ClaimFormat.MsoMdoc) {
532
+ if (typeof presentation !== "string") throw new CredoError(`Expected vp_token entry for format ${format} to be of type string`);
533
+ return MdocDeviceResponse.fromBase64Url(presentation);
534
+ }
535
+ if (format === ClaimFormat.JwtVp) {
536
+ if (typeof presentation !== "string") throw new CredoError(`Expected vp_token entry for format ${format} to be of type string`);
537
+ return W3cJwtVerifiablePresentation.fromSerializedJwt(presentation);
538
+ }
539
+ if (format === ClaimFormat.SdJwtW3cVp) {
540
+ if (typeof presentation !== "string") throw new CredoError(`Expected vp_token entry for format ${format} to be of type string`);
541
+ return W3cV2SdJwtVerifiablePresentation.fromCompact(presentation);
542
+ }
543
+ return JsonTransformer.fromJSON(presentation, W3cJsonLdVerifiablePresentation);
544
+ }
545
+ async verifyPresentation(agentContext, options) {
546
+ const x509Config = agentContext.dependencyManager.resolve(X509ModuleConfig);
547
+ const sdJwtVcApi = agentContext.dependencyManager.resolve(SdJwtVcApi);
548
+ const { presentation, format } = options;
549
+ try {
550
+ this.logger.trace("Presentation response", JsonTransformer.toJSON(presentation));
551
+ let isValid;
552
+ let cause;
553
+ let verifiablePresentation;
554
+ if (format === ClaimFormat.SdJwtDc) {
555
+ if (typeof presentation !== "string") throw new CredoError(`Expected vp_token entry for format ${format} to be of type string`);
556
+ const sdJwtVc = sdJwtVcApi.fromCompact(presentation);
557
+ const certificateChain = extractX509CertificatesFromJwt(Jwt.fromSerializedJwt(presentation.split("~")[0]));
558
+ let trustedCertificates;
559
+ if (certificateChain && x509Config.getTrustedCertificatesForVerification) trustedCertificates = await x509Config.getTrustedCertificatesForVerification(agentContext, {
560
+ certificateChain,
561
+ verification: {
562
+ type: "credential",
563
+ credential: sdJwtVc,
564
+ openId4VcVerificationSessionId: options.verificationSessionId
565
+ }
566
+ });
567
+ if (!trustedCertificates) trustedCertificates = x509Config.trustedCertificates ?? [];
568
+ const verificationResult = await sdJwtVcApi.verify({
569
+ compactSdJwtVc: presentation,
570
+ keyBinding: {
571
+ audience: options.audience,
572
+ nonce: options.nonce
573
+ },
574
+ trustedCertificates
575
+ });
576
+ isValid = verificationResult.isValid;
577
+ cause = verificationResult.isValid ? void 0 : verificationResult.error;
578
+ verifiablePresentation = sdJwtVc;
579
+ } else if (format === ClaimFormat.MsoMdoc) {
580
+ if (typeof presentation !== "string") throw new CredoError("Expected vp_token entry for format mso_mdoc to be of type string");
581
+ const mdocDeviceResponse = MdocDeviceResponse.fromBase64Url(presentation);
582
+ if (mdocDeviceResponse.documents.length === 0) throw new CredoError("mdoc device response does not contain any mdocs");
583
+ const deviceResponses = mdocDeviceResponse.splitIntoSingleDocumentResponses();
584
+ for (const deviceResponseIndex of deviceResponses.keys()) {
585
+ const mdocDeviceResponse$1 = deviceResponses[deviceResponseIndex];
586
+ const document = mdocDeviceResponse$1.documents[0];
587
+ const certificateChain = document.issuerSignedCertificateChain.map((cert) => X509Certificate.fromRawCertificate(cert));
588
+ const trustedCertificates = await x509Config.getTrustedCertificatesForVerification?.(agentContext, {
589
+ certificateChain,
590
+ verification: {
591
+ type: "credential",
592
+ credential: document,
593
+ openId4VcVerificationSessionId: options.verificationSessionId
594
+ }
595
+ });
596
+ let sessionTranscriptOptions;
597
+ if (options.origin && options.version === "v1") sessionTranscriptOptions = {
598
+ type: "openId4VpDcApi",
599
+ verifierGeneratedNonce: options.nonce,
600
+ origin: options.origin,
601
+ encryptionJwk: options.encryptionJwk
602
+ };
603
+ else if (options.origin) sessionTranscriptOptions = {
604
+ type: "openId4VpDcApiDraft24",
605
+ clientId: options.clientId,
606
+ verifierGeneratedNonce: options.nonce,
607
+ origin: options.origin
608
+ };
609
+ else if (options.version === "v1") {
610
+ if (!options.responseUri) throw new CredoError("responseUri is required for mdoc openid4vp session transcript calculation");
611
+ sessionTranscriptOptions = {
612
+ type: "openId4Vp",
613
+ clientId: options.clientId,
614
+ responseUri: options.responseUri,
615
+ verifierGeneratedNonce: options.nonce,
616
+ encryptionJwk: options.encryptionJwk
617
+ };
618
+ } else {
619
+ if (!options.mdocGeneratedNonce || !options.responseUri) throw new CredoError("mdocGeneratedNonce and responseUri are required for mdoc openid4vp session transcript calculation");
620
+ sessionTranscriptOptions = {
621
+ type: "openId4VpDraft18",
622
+ clientId: options.clientId,
623
+ mdocGeneratedNonce: options.mdocGeneratedNonce,
624
+ responseUri: options.responseUri,
625
+ verifierGeneratedNonce: options.nonce
626
+ };
627
+ }
628
+ await mdocDeviceResponse$1.verify(agentContext, {
629
+ sessionTranscriptOptions,
630
+ trustedCertificates
631
+ });
632
+ }
633
+ isValid = true;
634
+ verifiablePresentation = mdocDeviceResponse;
635
+ } else if (format === ClaimFormat.JwtVp) {
636
+ if (typeof presentation !== "string") throw new CredoError(`Expected vp_token entry for format ${format} to be of type string`);
637
+ verifiablePresentation = W3cJwtVerifiablePresentation.fromSerializedJwt(presentation);
638
+ const verificationResult = await this.w3cCredentialService.verifyPresentation(agentContext, {
639
+ presentation,
640
+ challenge: options.nonce,
641
+ domain: options.audience
642
+ });
643
+ isValid = verificationResult.isValid;
644
+ cause = verificationResult.error;
645
+ } else if (format === ClaimFormat.SdJwtW3cVp) {
646
+ if (typeof presentation !== "string") throw new CredoError(`Expected vp_token entry for format ${format} to be of type string`);
647
+ verifiablePresentation = W3cV2SdJwtVerifiablePresentation.fromCompact(presentation);
648
+ const verificationResult = await this.w3cV2CredentialService.verifyPresentation(agentContext, {
649
+ presentation: verifiablePresentation,
650
+ challenge: options.nonce,
651
+ domain: options.audience
652
+ });
653
+ isValid = verificationResult.isValid;
654
+ cause = verificationResult.error;
655
+ } else {
656
+ verifiablePresentation = JsonTransformer.fromJSON(presentation, W3cJsonLdVerifiablePresentation);
657
+ const verificationResult = await this.w3cCredentialService.verifyPresentation(agentContext, {
658
+ presentation: verifiablePresentation,
659
+ challenge: options.nonce,
660
+ domain: options.audience
661
+ });
662
+ isValid = verificationResult.isValid;
663
+ cause = verificationResult.error;
664
+ }
665
+ if (!isValid) throw new CredoError(`Error occured during verification of presentation.${cause ? ` ${cause.message}` : ""}`, { cause });
666
+ return {
667
+ verified: true,
668
+ presentation: verifiablePresentation
669
+ };
670
+ } catch (error) {
671
+ agentContext.config.logger.warn("Error occurred during verification of presentation", { error });
672
+ return {
673
+ verified: false,
674
+ reason: error.message
675
+ };
676
+ }
677
+ }
678
+ /**
679
+ * Update the record to a new state and emit an state changed event. Also updates the record
680
+ * in storage.
681
+ */
682
+ async updateState(agentContext, verificationSession, newState) {
683
+ agentContext.config.logger.debug(`Updating openid4vc verification session record ${verificationSession.id} to state ${newState} (previous=${verificationSession.state})`);
684
+ const previousState = verificationSession.state;
685
+ verificationSession.state = newState;
686
+ await this.openId4VcVerificationSessionRepository.update(agentContext, verificationSession);
687
+ this.emitStateChangedEvent(agentContext, verificationSession, previousState);
688
+ }
689
+ emitStateChangedEvent(agentContext, verificationSession, previousState) {
690
+ agentContext.dependencyManager.resolve(EventEmitter).emit(agentContext, {
691
+ type: OpenId4VcVerifierEvents.VerificationSessionStateChanged,
692
+ payload: {
693
+ verificationSession: verificationSession.clone(),
694
+ previousState
695
+ }
696
+ });
697
+ }
698
+ };
699
+ OpenId4VpVerifierService = __decorate([
700
+ injectable(),
701
+ __decorateParam(0, inject(InjectionSymbols.Logger)),
702
+ __decorateMetadata("design:paramtypes", [
703
+ Object,
704
+ typeof (_ref = typeof W3cCredentialService !== "undefined" && W3cCredentialService) === "function" ? _ref : Object,
705
+ typeof (_ref2 = typeof W3cV2CredentialService !== "undefined" && W3cV2CredentialService) === "function" ? _ref2 : Object,
706
+ typeof (_ref3 = typeof OpenId4VcVerifierRepository !== "undefined" && OpenId4VcVerifierRepository) === "function" ? _ref3 : Object,
707
+ typeof (_ref4 = typeof OpenId4VcVerifierModuleConfig !== "undefined" && OpenId4VcVerifierModuleConfig) === "function" ? _ref4 : Object,
708
+ typeof (_ref5 = typeof OpenId4VcVerificationSessionRepository !== "undefined" && OpenId4VcVerificationSessionRepository) === "function" ? _ref5 : Object
709
+ ])
710
+ ], OpenId4VpVerifierService);
711
+
712
+ //#endregion
713
+ export { OpenId4VpVerifierService };
714
+ //# sourceMappingURL=OpenId4VpVerifierService.mjs.map