@@ -133,7 +133,7 @@ public function credential(Request $request): Response
133133 ['accessTokenState ' => $ accessToken ->getState ()],
134134 );
135135 return $ this ->routes ->newJsonErrorResponse (
136- 'invalid_token ' ,
136+ 'invalid_credential_request ' ,
137137 'Issuer state missing in access token. ' ,
138138 401 ,
139139 );
@@ -145,8 +145,9 @@ public function credential(Request $request): Response
145145 ['issuerState ' => $ issuerState ],
146146 );
147147 return $ this ->routes ->newJsonErrorResponse (
148- 'invalid_token ' ,
148+ 'invalid_credential_request ' ,
149149 'Issuer state not valid. ' ,
150+ 401 ,
150151 );
151152 }
152153
@@ -163,6 +164,7 @@ public function credential(Request $request): Response
163164 return $ this ->routes ->newJsonErrorResponse (
164165 'invalid_credential_request ' ,
165166 'Credential configuration ID must not be used together with credential identifier. ' ,
167+ 400 ,
166168 );
167169 }
168170
@@ -182,6 +184,7 @@ public function credential(Request $request): Response
182184 return $ this ->routes ->newJsonErrorResponse (
183185 'invalid_credential_request ' ,
184186 'Can not resolve credential identifier. ' ,
187+ 400 ,
185188 );
186189 }
187190
@@ -224,6 +227,7 @@ public function credential(Request $request): Response
224227 return $ this ->routes ->newJsonErrorResponse (
225228 'invalid_credential_request ' ,
226229 'Credential identifier not used in flow. ' ,
230+ 400 ,
227231 );
228232 }
229233
@@ -282,6 +286,7 @@ public function credential(Request $request): Response
282286 return $ this ->routes ->newJsonErrorResponse (
283287 'invalid_credential_request ' ,
284288 'Can not resolve credential format. ' ,
289+ 400 ,
285290 );
286291 }
287292
@@ -299,6 +304,7 @@ public function credential(Request $request): Response
299304 return $ this ->routes ->newJsonErrorResponse (
300305 'unsupported_credential_type ' ,
301306 sprintf ('Credential format ID "%s" is not supported. ' , $ requestedCredentialFormatId ),
307+ 400 ,
302308 );
303309 }
304310
@@ -359,6 +365,7 @@ public function credential(Request $request): Response
359365 return $ this ->routes ->newJsonErrorResponse (
360366 'invalid_credential_request ' ,
361367 'Can not resolve credential configuration ID. ' ,
368+ 400 ,
362369 );
363370 }
364371
@@ -369,6 +376,7 @@ public function credential(Request $request): Response
369376 return $ this ->routes ->newJsonErrorResponse (
370377 'unsupported_credential_type ' ,
371378 sprintf ('Credential ID "%s" is not supported. ' , $ resolvedCredentialIdentifier ),
379+ 400 ,
372380 );
373381 }
374382
@@ -450,27 +458,26 @@ public function credential(Request $request): Response
450458
451459 $ this ->loggerService ->debug ('Proof verified successfully using did:key ' . $ didKey );
452460
453- // Verify nonce
461+ // Verify nonce
454462 $ nonce = $ proof ->getNonce ();
455- if ($ nonce === null ) {
456- return $ this ->routes ->newJsonErrorResponse (
457- 'invalid_proof ' ,
458- 'Proof MUST contain a c_nonce. ' ,
459- );
460- }
461-
462- if (!$ this ->nonceService ->validateNonce ($ nonce )) {
463- return $ this ->routes ->newJsonResponse (
464- [
465- 'error ' => 'invalid_nonce ' ,
466- 'error_description ' => 'c_nonce is invalid or expired. ' ,
467- 'c_nonce ' => $ this ->nonceService ->generateNonce (),
468- ],
469- 400 ,
470- );
463+ if (is_string ($ nonce ) && $ nonce !== '' ) {
464+ $ this ->loggerService ->debug ('Proof nonce: ' . $ nonce );
465+
466+ if (!$ this ->nonceService ->validateNonce ($ nonce )) {
467+ $ this ->loggerService ->warning ('Proof nonce is invalid or expired. Nonce was: ' . $ nonce );
468+ return $ this ->routes ->newJsonErrorResponse (
469+ error: 'invalid_nonce ' ,
470+ description: 'c_nonce is invalid or expired. ' ,
471+ httpCode: 400 ,
472+ );
473+ }
474+
475+ $ this ->loggerService ->debug ('Proof nonce validated successfully. ' );
476+ } else {
477+ $ this ->loggerService ->warning ('Nonce not present in proof, skipping nonce validation. ' );
471478 }
472479
473- // Set it as a subject identifier (bind it).
480+ // Set it as a subject identifier (bind it).
474481 $ sub = $ didKey ;
475482 } else {
476483 $ this ->loggerService ->warning (
@@ -507,6 +514,7 @@ public function credential(Request $request): Response
507514 return $ this ->routes ->newJsonErrorResponse (
508515 'invalid_proof ' ,
509516 $ message ,
517+ 400 ,
510518 );
511519 }
512520 }
0 commit comments