@@ -7,9 +7,15 @@ import at.asitplus.wallet.lib.agent.Verifier.VerifyCredentialResult.*
77import at.asitplus.wallet.lib.agent.Verifier.VerifyPresentationResult
88import at.asitplus.wallet.lib.agent.validation.vcJws.VcJwsInputValidationResult
99import at.asitplus.wallet.lib.agent.validation.vcJws.VcJwsInputValidator
10- import at.asitplus.wallet.lib.data.*
1110import at.asitplus.wallet.lib.data.VcDataModelConstants.VERIFIABLE_PRESENTATION
12- import at.asitplus.wallet.lib.jws.*
11+ import at.asitplus.wallet.lib.data.VcJwsVerificationResultWrapper
12+ import at.asitplus.wallet.lib.data.VerifiableCredentialJws
13+ import at.asitplus.wallet.lib.data.VerifiablePresentationJws
14+ import at.asitplus.wallet.lib.data.VerifiablePresentationParsed
15+ import at.asitplus.wallet.lib.jws.VerifyJwsObject
16+ import at.asitplus.wallet.lib.jws.VerifyJwsObjectFun
17+ import at.asitplus.wallet.lib.jws.VerifyJwsSignature
18+ import at.asitplus.wallet.lib.jws.VerifyJwsSignatureFun
1319import io.github.aakira.napier.Napier
1420import kotlin.coroutines.cancellation.CancellationException
1521
@@ -55,7 +61,7 @@ class ValidatorVcJws(
5561 }
5662 val vpJws = input.payload.validate(challenge, clientId)
5763 val vcValidationResults = vpJws.vp.verifiableCredential
58- .map { it to verifyVcJws(it, null ) }
64+ .map { it to verifyVcJws(it, null , input ) }
5965
6066 val invalidVcList = vcValidationResults.filter {
6167 it.second !is SuccessJwt
@@ -121,24 +127,28 @@ class ValidatorVcJws(
121127 *
122128 * @param input JWS in compact representation
123129 * @param publicKey Optionally, the local key, to verify VC was issued to the correct subject
130+ * @param vpJws Optionally, the VP enclosing the VC
124131 */
125132 suspend fun verifyVcJws (
126133 input : JwsSigned <VerifiableCredentialJws >,
127134 publicKey : CryptoPublicKey ? ,
128- ) = verifyVcJws(input.serialize(), publicKey)
135+ vpJws : JwsSigned <VerifiablePresentationJws >? = null
136+ ) = verifyVcJws(input.serialize(), publicKey, vpJws)
129137
130138 /* *
131139 * Validates the content of a JWS, expected to contain a Verifiable Credential.
132140 *
133141 * @param input JWS in compact representation
134142 * @param publicKey Optionally, the local key, to verify VC was issued to the correct subject
143+ * @param vpJws Optionally, the VP enclosing the VC
135144 */
136145 suspend fun verifyVcJws (
137146 input : String ,
138147 publicKey : CryptoPublicKey ? ,
148+ vpJws : JwsSigned <VerifiablePresentationJws >? = null
139149 ): VerifyCredentialResult {
140150 Napier .d(" Validating VC-JWS $input " )
141- val validationSummary = vcJwsInputValidator(input, publicKey)
151+ val validationSummary = vcJwsInputValidator(input, publicKey, vpJws )
142152 return when {
143153 validationSummary !is VcJwsInputValidationResult .ContentValidationSummary -> InvalidStructure (
144154 input = input,
0 commit comments