mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-06-19 13:17:47 +00:00
Change the driver calling logic for psa_sign/verify_messsage
The changed logic is to try a sign-message driver (opaque or transparent); if there isn't one, fallback to builtin sofware and do the hashing, then try a sign-hash driver. This will enable to the opaque driver to fallback to software. Signed-off-by: gabor-mezei-arm <gabor.mezei@arm.com>
This commit is contained in:
parent
f3c5c86db7
commit
a7b9b202b2
|
@ -101,7 +101,33 @@ psa_status_t psa_driver_wrapper_sign_message(
|
||||||
return( status );
|
return( status );
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
||||||
/* Fell through, meaning no accelerator supports this operation */
|
break;
|
||||||
|
|
||||||
|
/* Add cases for opaque driver here */
|
||||||
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
|
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
||||||
|
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
||||||
|
status = mbedtls_test_opaque_signature_sign_message(
|
||||||
|
attributes,
|
||||||
|
key_buffer,
|
||||||
|
key_buffer_size,
|
||||||
|
alg,
|
||||||
|
input,
|
||||||
|
input_length,
|
||||||
|
signature,
|
||||||
|
signature_size,
|
||||||
|
signature_length );
|
||||||
|
if( status != PSA_ERROR_NOT_SUPPORTED )
|
||||||
|
return( status );
|
||||||
|
break;
|
||||||
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
|
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
||||||
|
default:
|
||||||
|
/* Key is declared with a lifetime not known to us */
|
||||||
|
(void)status;
|
||||||
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
|
}
|
||||||
|
|
||||||
return( psa_sign_message_builtin( attributes,
|
return( psa_sign_message_builtin( attributes,
|
||||||
key_buffer,
|
key_buffer,
|
||||||
key_buffer_size,
|
key_buffer_size,
|
||||||
|
@ -111,28 +137,6 @@ psa_status_t psa_driver_wrapper_sign_message(
|
||||||
signature,
|
signature,
|
||||||
signature_size,
|
signature_size,
|
||||||
signature_length ) );
|
signature_length ) );
|
||||||
|
|
||||||
/* Add cases for opaque driver here */
|
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
|
||||||
#if defined(PSA_CRYPTO_DRIVER_TEST)
|
|
||||||
case PSA_CRYPTO_TEST_DRIVER_LOCATION:
|
|
||||||
return( mbedtls_test_opaque_signature_sign_message(
|
|
||||||
attributes,
|
|
||||||
key_buffer,
|
|
||||||
key_buffer_size,
|
|
||||||
alg,
|
|
||||||
input,
|
|
||||||
input_length,
|
|
||||||
signature,
|
|
||||||
signature_size,
|
|
||||||
signature_length ) );
|
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
|
||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
|
||||||
default:
|
|
||||||
/* Key is declared with a lifetime not known to us */
|
|
||||||
(void)status;
|
|
||||||
return( PSA_ERROR_INVALID_ARGUMENT );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t psa_driver_wrapper_verify_message(
|
psa_status_t psa_driver_wrapper_verify_message(
|
||||||
|
@ -170,15 +174,7 @@ psa_status_t psa_driver_wrapper_verify_message(
|
||||||
return( status );
|
return( status );
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
||||||
|
break;
|
||||||
return( psa_verify_message_builtin( attributes,
|
|
||||||
key_buffer,
|
|
||||||
key_buffer_size,
|
|
||||||
alg,
|
|
||||||
input,
|
|
||||||
input_length,
|
|
||||||
signature,
|
|
||||||
signature_length ) );
|
|
||||||
|
|
||||||
/* Add cases for opaque driver here */
|
/* Add cases for opaque driver here */
|
||||||
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
#if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
|
||||||
|
@ -193,6 +189,9 @@ psa_status_t psa_driver_wrapper_verify_message(
|
||||||
input_length,
|
input_length,
|
||||||
signature,
|
signature,
|
||||||
signature_length ) );
|
signature_length ) );
|
||||||
|
if( status != PSA_ERROR_NOT_SUPPORTED )
|
||||||
|
return( status );
|
||||||
|
break;
|
||||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||||
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
#endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
|
||||||
default:
|
default:
|
||||||
|
@ -200,6 +199,15 @@ psa_status_t psa_driver_wrapper_verify_message(
|
||||||
(void)status;
|
(void)status;
|
||||||
return( PSA_ERROR_INVALID_ARGUMENT );
|
return( PSA_ERROR_INVALID_ARGUMENT );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return( psa_verify_message_builtin( attributes,
|
||||||
|
key_buffer,
|
||||||
|
key_buffer_size,
|
||||||
|
alg,
|
||||||
|
input,
|
||||||
|
input_length,
|
||||||
|
signature,
|
||||||
|
signature_length ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
psa_status_t psa_driver_wrapper_sign_hash(
|
psa_status_t psa_driver_wrapper_sign_hash(
|
||||||
|
|
Loading…
Reference in a new issue