@@ -246,16 +246,16 @@ static psa_status_t handle_ecdsa_sign(bool is_message, const uint8_t *key_buffer
246
246
const struct sxhashalg * hashalgpointer = & hashalg ;
247
247
248
248
privkey .d = key_buffer ;
249
- status = hash_get_algo (alg , & hashalgpointer );
250
- if (status != PSA_SUCCESS ) {
251
- return status ;
252
- }
253
249
254
250
* signature_length = 2 * ecurve -> sz ;
255
251
status = SX_ERR_INCOMPATIBLE_HW ;
256
252
257
253
if (PSA_ALG_IS_DETERMINISTIC_ECDSA (alg ) &&
258
254
IS_ENABLED (PSA_NEED_CRACEN_DETERMINISTIC_ECDSA )) {
255
+ status = hash_get_algo (alg , & hashalgpointer );
256
+ if (status != PSA_SUCCESS ) {
257
+ return status ;
258
+ }
259
259
if (is_message ) {
260
260
status = cracen_ecdsa_sign_message_deterministic (
261
261
& privkey , hashalgpointer , ecurve , input , input_length , signature );
@@ -266,6 +266,10 @@ static psa_status_t handle_ecdsa_sign(bool is_message, const uint8_t *key_buffer
266
266
} else if ((PSA_ALG_IS_ECDSA (alg ) && IS_ENABLED (PSA_NEED_CRACEN_ECDSA )) &&
267
267
!PSA_ALG_IS_DETERMINISTIC_ECDSA (alg )) {
268
268
if (is_message ) {
269
+ status = hash_get_algo (alg , & hashalgpointer );
270
+ if (status != PSA_SUCCESS ) {
271
+ return status ;
272
+ }
269
273
status = cracen_ecdsa_sign_message (& privkey , hashalgpointer , ecurve , input ,
270
274
input_length , signature );
271
275
} else {
@@ -402,19 +406,22 @@ static psa_status_t cracen_signature_ecc_verify(bool is_message,
402
406
const struct sxhashalg * hash_algorithm_ptr = & hashalg ;
403
407
404
408
psa_status = cracen_ecc_get_ecurve_from_psa (PSA_KEY_TYPE_ECC_GET_FAMILY (key_type ),
405
- psa_get_key_bits (attributes ), & curve );
409
+ psa_get_key_bits (attributes ), & curve );
406
410
if (psa_status != PSA_SUCCESS ) {
407
411
return psa_status ;
408
412
}
409
- psa_status = hash_get_algo (alg , & hash_algorithm_ptr );
410
- if (psa_status != PSA_SUCCESS ) {
411
- return psa_status ;
413
+ if (is_message ) {
414
+ psa_status = hash_get_algo (alg , & hash_algorithm_ptr );
415
+ if (psa_status != PSA_SUCCESS ) {
416
+ return psa_status ;
417
+ }
418
+ sx_status = cracen_ecdsa_verify_message (pubkey_buffer , hash_algorithm_ptr ,
419
+ input , input_length , curve ,
420
+ signature );
421
+ } else {
422
+ sx_status = cracen_ecdsa_verify_digest (pubkey_buffer , input , input_length ,
423
+ curve , signature );
412
424
}
413
- sx_status = is_message ? cracen_ecdsa_verify_message (pubkey_buffer ,
414
- hash_algorithm_ptr , input ,
415
- input_length , curve , signature )
416
- : cracen_ecdsa_verify_digest (pubkey_buffer , input ,
417
- input_length , curve , signature );
418
425
} else {
419
426
return PSA_ERROR_NOT_SUPPORTED ;
420
427
}
0 commit comments