@@ -3205,10 +3205,14 @@ psa_status_t psa_asymmetric_sign( psa_key_handle_t handle,
3205
3205
{
3206
3206
psa_key_slot_t * slot ;
3207
3207
psa_status_t status ;
3208
+ #if defined(MBEDTLS_PSA_CRYPTO_SE_C )
3209
+ const psa_drv_se_t * drv ;
3210
+ psa_drv_se_context_t * drv_context ;
3211
+ #endif /* MBEDTLS_PSA_CRYPTO_SE_C */
3208
3212
3209
3213
* signature_length = signature_size ;
3210
3214
3211
- status = psa_get_transparent_key ( handle , & slot , PSA_KEY_USAGE_SIGN , alg );
3215
+ status = psa_get_key_from_slot ( handle , & slot , PSA_KEY_USAGE_SIGN , alg );
3212
3216
if ( status != PSA_SUCCESS )
3213
3217
goto exit ;
3214
3218
if ( ! PSA_KEY_TYPE_IS_KEY_PAIR ( slot -> attr .type ) )
@@ -3217,6 +3221,24 @@ psa_status_t psa_asymmetric_sign( psa_key_handle_t handle,
3217
3221
goto exit ;
3218
3222
}
3219
3223
3224
+ #if defined(MBEDTLS_PSA_CRYPTO_SE_C )
3225
+ if ( psa_get_se_driver ( slot -> attr .lifetime , & drv , & drv_context ) )
3226
+ {
3227
+ if ( drv -> asymmetric == NULL ||
3228
+ drv -> asymmetric -> p_sign == NULL )
3229
+ {
3230
+ status = PSA_ERROR_NOT_SUPPORTED ;
3231
+ goto exit ;
3232
+ }
3233
+ status = drv -> asymmetric -> p_sign ( drv_context ,
3234
+ slot -> data .se .slot_number ,
3235
+ alg ,
3236
+ hash , hash_length ,
3237
+ signature , signature_size ,
3238
+ signature_length );
3239
+ }
3240
+ else
3241
+ #endif /* MBEDTLS_PSA_CRYPTO_SE_C */
3220
3242
#if defined(MBEDTLS_RSA_C )
3221
3243
if ( slot -> attr .type == PSA_KEY_TYPE_RSA_KEY_PAIR )
3222
3244
{
@@ -3280,11 +3302,29 @@ psa_status_t psa_asymmetric_verify( psa_key_handle_t handle,
3280
3302
{
3281
3303
psa_key_slot_t * slot ;
3282
3304
psa_status_t status ;
3305
+ #if defined(MBEDTLS_PSA_CRYPTO_SE_C )
3306
+ const psa_drv_se_t * drv ;
3307
+ psa_drv_se_context_t * drv_context ;
3308
+ #endif /* MBEDTLS_PSA_CRYPTO_SE_C */
3283
3309
3284
- status = psa_get_transparent_key ( handle , & slot , PSA_KEY_USAGE_VERIFY , alg );
3310
+ status = psa_get_key_from_slot ( handle , & slot , PSA_KEY_USAGE_VERIFY , alg );
3285
3311
if ( status != PSA_SUCCESS )
3286
3312
return ( status );
3287
3313
3314
+ #if defined(MBEDTLS_PSA_CRYPTO_SE_C )
3315
+ if ( psa_get_se_driver ( slot -> attr .lifetime , & drv , & drv_context ) )
3316
+ {
3317
+ if ( drv -> asymmetric == NULL ||
3318
+ drv -> asymmetric -> p_verify == NULL )
3319
+ return ( PSA_ERROR_NOT_SUPPORTED );
3320
+ return ( drv -> asymmetric -> p_verify ( drv_context ,
3321
+ slot -> data .se .slot_number ,
3322
+ alg ,
3323
+ hash , hash_length ,
3324
+ signature , signature_length ) );
3325
+ }
3326
+ else
3327
+ #endif /* MBEDTLS_PSA_CRYPTO_SE_C */
3288
3328
#if defined(MBEDTLS_RSA_C )
3289
3329
if ( PSA_KEY_TYPE_IS_RSA ( slot -> attr .type ) )
3290
3330
{
0 commit comments