@@ -85,6 +85,7 @@ import id.waltid.openid4vci.wallet.*
8585import id.waltid.openid4vci.wallet.oauth.ClientConfiguration
8686import id.waltid.openid4vci.wallet.offer.*
8787import id.waltid.openid4vci.wallet.metadata.*
88+ import id.waltid.openid4vci.wallet.nonce.NonceRequestBuilder
8889import id.waltid.openid4vci.wallet.token.*
8990import id.waltid.openid4vci.wallet.proof.*
9091import io.ktor.client.*
@@ -126,19 +127,18 @@ if (preAuthGrant != null) {
126127 txCode = null // or user-provided PIN
127128 )
128129
129- // 7. Obtain a fresh proof nonce from the issuer-advertised Nonce Endpoint
130- val nonceEndpoint = requireNotNull( issuerMetadata.nonceEndpoint) {
131- " A nonce_endpoint is required when the credential configuration requires proof "
130+ // 7. Obtain a fresh proof nonce when the issuer advertises a Nonce Endpoint
131+ val nonce = issuerMetadata.nonceEndpoint?. let { nonceEndpoint ->
132+ NonceRequestBuilder (httpClient).requestNonce(nonceEndpoint).cNonce
132133 }
133- val nonce = NonceRequestBuilder (httpClient).requestNonce(nonceEndpoint)
134134
135- // 8. Generate proof of possession
135+ // 8. Generate proof of possession, omitting the nonce claim when none was obtained
136136 val key = KeyManager .loadKey(" my-key-id" )
137137 val proofBuilder = JwtProofBuilder ()
138138 val proof = proofBuilder.buildProof(
139139 key = key,
140140 audience = offer.credentialIssuer,
141- nonce = nonce.cNonce
141+ nonce = nonce
142142 )
143143
144144 // 9. Request credential (Implementation coming soon)
0 commit comments