Lines Matching refs:operation
2108 psa_status_t psa_hash_abort( psa_hash_operation_t *operation ) in psa_hash_abort() argument
2111 if( operation->id == 0 ) in psa_hash_abort()
2114 psa_status_t status = psa_driver_wrapper_hash_abort( operation ); in psa_hash_abort()
2115 operation->id = 0; in psa_hash_abort()
2120 psa_status_t psa_hash_setup( psa_hash_operation_t *operation, in psa_hash_setup() argument
2126 if( operation->id != 0 ) in psa_hash_setup()
2140 memset( &operation->ctx, 0, sizeof( operation->ctx ) ); in psa_hash_setup()
2142 status = psa_driver_wrapper_hash_setup( operation, alg ); in psa_hash_setup()
2146 psa_hash_abort( operation ); in psa_hash_setup()
2151 psa_status_t psa_hash_update( psa_hash_operation_t *operation, in psa_hash_update() argument
2157 if( operation->id == 0 ) in psa_hash_update()
2168 status = psa_driver_wrapper_hash_update( operation, input, input_length ); in psa_hash_update()
2172 psa_hash_abort( operation ); in psa_hash_update()
2177 psa_status_t psa_hash_finish( psa_hash_operation_t *operation, in psa_hash_finish() argument
2183 if( operation->id == 0 ) in psa_hash_finish()
2187 operation, hash, hash_size, hash_length ); in psa_hash_finish()
2188 psa_hash_abort( operation ); in psa_hash_finish()
2192 psa_status_t psa_hash_verify( psa_hash_operation_t *operation, in psa_hash_verify() argument
2199 operation, in psa_hash_verify()
2217 psa_hash_abort(operation); in psa_hash_verify()
2280 psa_status_t psa_mac_abort( psa_mac_operation_t *operation ) in psa_mac_abort() argument
2283 if( operation->id == 0 ) in psa_mac_abort()
2286 psa_status_t status = psa_driver_wrapper_mac_abort( operation ); in psa_mac_abort()
2287 operation->mac_size = 0; in psa_mac_abort()
2288 operation->is_sign = 0; in psa_mac_abort()
2289 operation->id = 0; in psa_mac_abort()
2334 static psa_status_t psa_mac_setup( psa_mac_operation_t *operation, in psa_mac_setup() argument
2344 if( operation->id != 0 ) in psa_mac_setup()
2363 &operation->mac_size ); in psa_mac_setup()
2367 operation->is_sign = is_sign; in psa_mac_setup()
2371 status = psa_driver_wrapper_mac_sign_setup( operation, in psa_mac_setup()
2379 status = psa_driver_wrapper_mac_verify_setup( operation, in psa_mac_setup()
2388 psa_mac_abort( operation ); in psa_mac_setup()
2395 psa_status_t psa_mac_sign_setup( psa_mac_operation_t *operation, in psa_mac_sign_setup() argument
2399 return( psa_mac_setup( operation, key, alg, 1 ) ); in psa_mac_sign_setup()
2402 psa_status_t psa_mac_verify_setup( psa_mac_operation_t *operation, in psa_mac_verify_setup() argument
2406 return( psa_mac_setup( operation, key, alg, 0 ) ); in psa_mac_verify_setup()
2409 psa_status_t psa_mac_update( psa_mac_operation_t *operation, in psa_mac_update() argument
2413 if( operation->id == 0 ) in psa_mac_update()
2421 psa_status_t status = psa_driver_wrapper_mac_update( operation, in psa_mac_update()
2424 psa_mac_abort( operation ); in psa_mac_update()
2429 psa_status_t psa_mac_sign_finish( psa_mac_operation_t *operation, in psa_mac_sign_finish() argument
2437 if( operation->id == 0 ) in psa_mac_sign_finish()
2443 if( ! operation->is_sign ) in psa_mac_sign_finish()
2451 if( operation->mac_size == 0 ) in psa_mac_sign_finish()
2457 if( mac_size < operation->mac_size ) in psa_mac_sign_finish()
2463 status = psa_driver_wrapper_mac_sign_finish( operation, in psa_mac_sign_finish()
2464 mac, operation->mac_size, in psa_mac_sign_finish()
2477 operation->mac_size = 0; in psa_mac_sign_finish()
2480 if( mac_size > operation->mac_size ) in psa_mac_sign_finish()
2481 memset( &mac[operation->mac_size], '!', in psa_mac_sign_finish()
2482 mac_size - operation->mac_size ); in psa_mac_sign_finish()
2484 abort_status = psa_mac_abort( operation ); in psa_mac_sign_finish()
2489 psa_status_t psa_mac_verify_finish( psa_mac_operation_t *operation, in psa_mac_verify_finish() argument
2496 if( operation->id == 0 ) in psa_mac_verify_finish()
2502 if( operation->is_sign ) in psa_mac_verify_finish()
2508 if( operation->mac_size != mac_length ) in psa_mac_verify_finish()
2514 status = psa_driver_wrapper_mac_verify_finish( operation, in psa_mac_verify_finish()
2518 abort_status = psa_mac_abort( operation ); in psa_mac_verify_finish()
3261 static psa_status_t psa_cipher_setup( psa_cipher_operation_t *operation, in psa_cipher_setup() argument
3274 if( operation->id != 0 ) in psa_cipher_setup()
3294 operation->iv_set = 0; in psa_cipher_setup()
3296 operation->iv_required = 0; in psa_cipher_setup()
3298 operation->iv_required = 1; in psa_cipher_setup()
3299 operation->default_iv_length = PSA_CIPHER_IV_LENGTH( slot->attr.type, alg ); in psa_cipher_setup()
3307 status = psa_driver_wrapper_cipher_encrypt_setup( operation, in psa_cipher_setup()
3313 status = psa_driver_wrapper_cipher_decrypt_setup( operation, in psa_cipher_setup()
3321 psa_cipher_abort( operation ); in psa_cipher_setup()
3328 psa_status_t psa_cipher_encrypt_setup( psa_cipher_operation_t *operation, in psa_cipher_encrypt_setup() argument
3332 return( psa_cipher_setup( operation, key, alg, MBEDTLS_ENCRYPT ) ); in psa_cipher_encrypt_setup()
3335 psa_status_t psa_cipher_decrypt_setup( psa_cipher_operation_t *operation, in psa_cipher_decrypt_setup() argument
3339 return( psa_cipher_setup( operation, key, alg, MBEDTLS_DECRYPT ) ); in psa_cipher_decrypt_setup()
3342 psa_status_t psa_cipher_generate_iv( psa_cipher_operation_t *operation, in psa_cipher_generate_iv() argument
3351 if( operation->id == 0 ) in psa_cipher_generate_iv()
3357 if( operation->iv_set || ! operation->iv_required ) in psa_cipher_generate_iv()
3363 if( iv_size < operation->default_iv_length ) in psa_cipher_generate_iv()
3369 status = psa_generate_random( iv, operation->default_iv_length ); in psa_cipher_generate_iv()
3373 status = psa_driver_wrapper_cipher_set_iv( operation, in psa_cipher_generate_iv()
3375 operation->default_iv_length ); in psa_cipher_generate_iv()
3380 operation->iv_set = 1; in psa_cipher_generate_iv()
3381 *iv_length = operation->default_iv_length; in psa_cipher_generate_iv()
3384 psa_cipher_abort( operation ); in psa_cipher_generate_iv()
3389 psa_status_t psa_cipher_set_iv( psa_cipher_operation_t *operation, in psa_cipher_set_iv() argument
3395 if( operation->id == 0 ) in psa_cipher_set_iv()
3401 if( operation->iv_set || ! operation->iv_required ) in psa_cipher_set_iv()
3413 status = psa_driver_wrapper_cipher_set_iv( operation, in psa_cipher_set_iv()
3419 operation->iv_set = 1; in psa_cipher_set_iv()
3421 psa_cipher_abort( operation ); in psa_cipher_set_iv()
3425 psa_status_t psa_cipher_update( psa_cipher_operation_t *operation, in psa_cipher_update() argument
3434 if( operation->id == 0 ) in psa_cipher_update()
3440 if( operation->iv_required && ! operation->iv_set ) in psa_cipher_update()
3446 status = psa_driver_wrapper_cipher_update( operation, in psa_cipher_update()
3455 psa_cipher_abort( operation ); in psa_cipher_update()
3460 psa_status_t psa_cipher_finish( psa_cipher_operation_t *operation, in psa_cipher_finish() argument
3467 if( operation->id == 0 ) in psa_cipher_finish()
3473 if( operation->iv_required && ! operation->iv_set ) in psa_cipher_finish()
3479 status = psa_driver_wrapper_cipher_finish( operation, in psa_cipher_finish()
3486 return( psa_cipher_abort( operation ) ); in psa_cipher_finish()
3490 (void) psa_cipher_abort( operation ); in psa_cipher_finish()
3496 psa_status_t psa_cipher_abort( psa_cipher_operation_t *operation ) in psa_cipher_abort() argument
3498 if( operation->id == 0 ) in psa_cipher_abort()
3506 psa_driver_wrapper_cipher_abort( operation ); in psa_cipher_abort()
3508 operation->id = 0; in psa_cipher_abort()
3509 operation->iv_set = 0; in psa_cipher_abort()
3510 operation->iv_required = 0; in psa_cipher_abort()
3771 static psa_status_t psa_aead_setup( psa_aead_operation_t *operation, in psa_aead_setup() argument
3787 if( operation->id != 0 ) in psa_aead_setup()
3793 if( operation->nonce_set || operation->lengths_set || in psa_aead_setup()
3794 operation->ad_started || operation->body_started ) in psa_aead_setup()
3815 status = psa_driver_wrapper_aead_encrypt_setup( operation, in psa_aead_setup()
3821 status = psa_driver_wrapper_aead_decrypt_setup( operation, in psa_aead_setup()
3829 operation->key_type = psa_get_key_type( &attributes ); in psa_aead_setup()
3837 operation->alg = psa_aead_get_base_algorithm( alg ); in psa_aead_setup()
3838 operation->is_encrypt = is_encrypt; in psa_aead_setup()
3841 psa_aead_abort( operation ); in psa_aead_setup()
3847 psa_status_t psa_aead_encrypt_setup( psa_aead_operation_t *operation, in psa_aead_encrypt_setup() argument
3851 return( psa_aead_setup( operation, 1, key, alg ) ); in psa_aead_encrypt_setup()
3855 psa_status_t psa_aead_decrypt_setup( psa_aead_operation_t *operation, in psa_aead_decrypt_setup() argument
3859 return( psa_aead_setup( operation, 0, key, alg ) ); in psa_aead_decrypt_setup()
3863 psa_status_t psa_aead_generate_nonce( psa_aead_operation_t *operation, in psa_aead_generate_nonce() argument
3873 if( operation->id == 0 ) in psa_aead_generate_nonce()
3879 if( operation->nonce_set || !operation->is_encrypt ) in psa_aead_generate_nonce()
3885 required_nonce_size = PSA_AEAD_NONCE_LENGTH( operation->key_type, in psa_aead_generate_nonce()
3886 operation->alg ); in psa_aead_generate_nonce()
3897 status = psa_aead_set_nonce( operation, nonce, required_nonce_size ); in psa_aead_generate_nonce()
3903 psa_aead_abort( operation ); in psa_aead_generate_nonce()
3910 psa_status_t psa_aead_set_nonce( psa_aead_operation_t *operation, in psa_aead_set_nonce() argument
3916 if( operation->id == 0 ) in psa_aead_set_nonce()
3922 if( operation->nonce_set ) in psa_aead_set_nonce()
3928 status = psa_aead_check_nonce_length( operation->alg, nonce_length ); in psa_aead_set_nonce()
3935 status = psa_driver_wrapper_aead_set_nonce( operation, nonce, in psa_aead_set_nonce()
3940 operation->nonce_set = 1; in psa_aead_set_nonce()
3942 psa_aead_abort( operation ); in psa_aead_set_nonce()
3948 psa_status_t psa_aead_set_lengths( psa_aead_operation_t *operation, in psa_aead_set_lengths() argument
3954 if( operation->id == 0 ) in psa_aead_set_lengths()
3960 if( operation->lengths_set || operation->ad_started || in psa_aead_set_lengths()
3961 operation->body_started ) in psa_aead_set_lengths()
3967 switch(operation->alg) in psa_aead_set_lengths()
4002 status = psa_driver_wrapper_aead_set_lengths( operation, ad_length, in psa_aead_set_lengths()
4008 operation->ad_remaining = ad_length; in psa_aead_set_lengths()
4009 operation->body_remaining = plaintext_length; in psa_aead_set_lengths()
4010 operation->lengths_set = 1; in psa_aead_set_lengths()
4013 psa_aead_abort( operation ); in psa_aead_set_lengths()
4019 psa_status_t psa_aead_update_ad( psa_aead_operation_t *operation, in psa_aead_update_ad() argument
4025 if( operation->id == 0 ) in psa_aead_update_ad()
4031 if( !operation->nonce_set || operation->body_started ) in psa_aead_update_ad()
4037 if( operation->lengths_set ) in psa_aead_update_ad()
4039 if( operation->ad_remaining < input_length ) in psa_aead_update_ad()
4045 operation->ad_remaining -= input_length; in psa_aead_update_ad()
4048 status = psa_driver_wrapper_aead_update_ad( operation, input, in psa_aead_update_ad()
4053 operation->ad_started = 1; in psa_aead_update_ad()
4055 psa_aead_abort( operation ); in psa_aead_update_ad()
4062 psa_status_t psa_aead_update( psa_aead_operation_t *operation, in psa_aead_update() argument
4073 if( operation->id == 0 ) in psa_aead_update()
4079 if( !operation->nonce_set ) in psa_aead_update()
4085 if( operation->lengths_set ) in psa_aead_update()
4089 if( operation->ad_remaining != 0 ) in psa_aead_update()
4096 if( operation->body_remaining < input_length ) in psa_aead_update()
4102 operation->body_remaining -= input_length; in psa_aead_update()
4105 status = psa_driver_wrapper_aead_update( operation, input, input_length, in psa_aead_update()
4111 operation->body_started = 1; in psa_aead_update()
4113 psa_aead_abort( operation ); in psa_aead_update()
4118 static psa_status_t psa_aead_final_checks( const psa_aead_operation_t *operation ) in psa_aead_final_checks() argument
4120 if( operation->id == 0 || !operation->nonce_set ) in psa_aead_final_checks()
4123 if( operation->lengths_set && ( operation->ad_remaining != 0 || in psa_aead_final_checks()
4124 operation->body_remaining != 0 ) ) in psa_aead_final_checks()
4131 psa_status_t psa_aead_finish( psa_aead_operation_t *operation, in psa_aead_finish() argument
4144 status = psa_aead_final_checks( operation ); in psa_aead_finish()
4148 if( !operation->is_encrypt ) in psa_aead_finish()
4154 status = psa_driver_wrapper_aead_finish( operation, ciphertext, in psa_aead_finish()
4173 psa_aead_abort( operation ); in psa_aead_finish()
4180 psa_status_t psa_aead_verify( psa_aead_operation_t *operation, in psa_aead_verify() argument
4191 status = psa_aead_final_checks( operation ); in psa_aead_verify()
4195 if( operation->is_encrypt ) in psa_aead_verify()
4201 status = psa_driver_wrapper_aead_verify( operation, plaintext, in psa_aead_verify()
4207 psa_aead_abort( operation ); in psa_aead_verify()
4213 psa_status_t psa_aead_abort( psa_aead_operation_t *operation ) in psa_aead_abort() argument
4217 if( operation->id == 0 ) in psa_aead_abort()
4225 status = psa_driver_wrapper_aead_abort( operation ); in psa_aead_abort()
4227 memset( operation, 0, sizeof( *operation ) ); in psa_aead_abort()
4246 psa_mac_operation_t *operation, in psa_key_derivation_start_hmac() argument
4257 operation->is_sign = 1; in psa_key_derivation_start_hmac()
4258 operation->mac_size = PSA_HASH_LENGTH( hash_alg ); in psa_key_derivation_start_hmac()
4260 status = psa_driver_wrapper_mac_sign_setup( operation, in psa_key_derivation_start_hmac()
4276 const psa_key_derivation_operation_t *operation ) in psa_key_derivation_get_kdf_alg() argument
4278 if ( PSA_ALG_IS_KEY_AGREEMENT( operation->alg ) ) in psa_key_derivation_get_kdf_alg()
4279 return( PSA_ALG_KEY_AGREEMENT_GET_KDF( operation->alg ) ); in psa_key_derivation_get_kdf_alg()
4281 return( operation->alg ); in psa_key_derivation_get_kdf_alg()
4284 psa_status_t psa_key_derivation_abort( psa_key_derivation_operation_t *operation ) in psa_key_derivation_abort() argument
4287 psa_algorithm_t kdf_alg = psa_key_derivation_get_kdf_alg( operation ); in psa_key_derivation_abort()
4298 mbedtls_free( operation->ctx.hkdf.info ); in psa_key_derivation_abort()
4299 status = psa_mac_abort( &operation->ctx.hkdf.hmac ); in psa_key_derivation_abort()
4309 if( operation->ctx.tls12_prf.secret != NULL ) in psa_key_derivation_abort()
4311 mbedtls_platform_zeroize( operation->ctx.tls12_prf.secret, in psa_key_derivation_abort()
4312 operation->ctx.tls12_prf.secret_length ); in psa_key_derivation_abort()
4313 mbedtls_free( operation->ctx.tls12_prf.secret ); in psa_key_derivation_abort()
4316 if( operation->ctx.tls12_prf.seed != NULL ) in psa_key_derivation_abort()
4318 mbedtls_platform_zeroize( operation->ctx.tls12_prf.seed, in psa_key_derivation_abort()
4319 operation->ctx.tls12_prf.seed_length ); in psa_key_derivation_abort()
4320 mbedtls_free( operation->ctx.tls12_prf.seed ); in psa_key_derivation_abort()
4323 if( operation->ctx.tls12_prf.label != NULL ) in psa_key_derivation_abort()
4325 mbedtls_platform_zeroize( operation->ctx.tls12_prf.label, in psa_key_derivation_abort()
4326 operation->ctx.tls12_prf.label_length ); in psa_key_derivation_abort()
4327 mbedtls_free( operation->ctx.tls12_prf.label ); in psa_key_derivation_abort()
4341 mbedtls_platform_zeroize( operation, sizeof( *operation ) ); in psa_key_derivation_abort()
4345 psa_status_t psa_key_derivation_get_capacity(const psa_key_derivation_operation_t *operation, in psa_key_derivation_get_capacity() argument
4348 if( operation->alg == 0 ) in psa_key_derivation_get_capacity()
4354 *capacity = operation->capacity; in psa_key_derivation_get_capacity()
4358 psa_status_t psa_key_derivation_set_capacity( psa_key_derivation_operation_t *operation, in psa_key_derivation_set_capacity() argument
4361 if( operation->alg == 0 ) in psa_key_derivation_set_capacity()
4363 if( capacity > operation->capacity ) in psa_key_derivation_set_capacity()
4365 operation->capacity = capacity; in psa_key_derivation_set_capacity()
4610 psa_key_derivation_operation_t *operation, in psa_key_derivation_output_bytes() argument
4615 psa_algorithm_t kdf_alg = psa_key_derivation_get_kdf_alg( operation ); in psa_key_derivation_output_bytes()
4617 if( operation->alg == 0 ) in psa_key_derivation_output_bytes()
4623 if( output_length > operation->capacity ) in psa_key_derivation_output_bytes()
4625 operation->capacity = 0; in psa_key_derivation_output_bytes()
4631 if( output_length == 0 && operation->capacity == 0 ) in psa_key_derivation_output_bytes()
4641 operation->capacity -= output_length; in psa_key_derivation_output_bytes()
4647 status = psa_key_derivation_hkdf_read( &operation->ctx.hkdf, hash_alg, in psa_key_derivation_output_bytes()
4657 status = psa_key_derivation_tls12_prf_read( &operation->ctx.tls12_prf, in psa_key_derivation_output_bytes()
4676 psa_algorithm_t alg = operation->alg; in psa_key_derivation_output_bytes()
4677 psa_key_derivation_abort( operation ); in psa_key_derivation_output_bytes()
4678 operation->alg = alg; in psa_key_derivation_output_bytes()
4699 psa_key_derivation_operation_t *operation ) in psa_generate_derived_key_internal() argument
4714 status = psa_key_derivation_output_bytes( operation, data, bytes ); in psa_generate_derived_key_internal()
4752 psa_key_derivation_operation_t *operation, in psa_key_derivation_output_key() argument
4766 if( ! operation->can_output_key ) in psa_key_derivation_output_key()
4782 operation ); in psa_key_derivation_output_key()
4800 psa_key_derivation_operation_t *operation, in psa_key_derivation_setup_kdf() argument
4807 memset( &operation->ctx, 0, sizeof( operation->ctx ) ); in psa_key_derivation_setup_kdf()
4839 operation->capacity = 255 * hash_size; in psa_key_derivation_setup_kdf()
4847 psa_status_t psa_key_derivation_setup( psa_key_derivation_operation_t *operation, in psa_key_derivation_setup() argument
4852 if( operation->alg != 0 ) in psa_key_derivation_setup()
4861 status = psa_key_derivation_setup_kdf( operation, kdf_alg ); in psa_key_derivation_setup()
4869 status = psa_key_derivation_setup_kdf( operation, alg ); in psa_key_derivation_setup()
4878 operation->alg = alg; in psa_key_derivation_setup()
5127 psa_key_derivation_operation_t *operation, in psa_key_derivation_input_internal() argument
5134 psa_algorithm_t kdf_alg = psa_key_derivation_get_kdf_alg( operation ); in psa_key_derivation_input_internal()
5143 status = psa_hkdf_input( &operation->ctx.hkdf, in psa_key_derivation_input_internal()
5152 status = psa_tls12_prf_input( &operation->ctx.tls12_prf, in psa_key_derivation_input_internal()
5160 status = psa_tls12_prf_psk_to_ms_input( &operation->ctx.tls12_prf, in psa_key_derivation_input_internal()
5175 psa_key_derivation_abort( operation ); in psa_key_derivation_input_internal()
5180 psa_key_derivation_operation_t *operation, in psa_key_derivation_input_bytes() argument
5185 return( psa_key_derivation_input_internal( operation, step, in psa_key_derivation_input_bytes()
5191 psa_key_derivation_operation_t *operation, in psa_key_derivation_input_key() argument
5200 key, &slot, PSA_KEY_USAGE_DERIVE, operation->alg ); in psa_key_derivation_input_key()
5203 psa_key_derivation_abort( operation ); in psa_key_derivation_input_key()
5210 operation->can_output_key = 1; in psa_key_derivation_input_key()
5212 status = psa_key_derivation_input_internal( operation, in psa_key_derivation_input_key()
5330 static psa_status_t psa_key_agreement_internal( psa_key_derivation_operation_t *operation, in psa_key_agreement_internal() argument
5339 psa_algorithm_t ka_alg = PSA_ALG_KEY_AGREEMENT_GET_BASE( operation->alg ); in psa_key_agreement_internal()
5355 status = psa_key_derivation_input_internal( operation, step, in psa_key_agreement_internal()
5364 psa_status_t psa_key_derivation_key_agreement( psa_key_derivation_operation_t *operation, in psa_key_derivation_key_agreement() argument
5374 if( ! PSA_ALG_IS_KEY_AGREEMENT( operation->alg ) ) in psa_key_derivation_key_agreement()
5377 private_key, &slot, PSA_KEY_USAGE_DERIVE, operation->alg ); in psa_key_derivation_key_agreement()
5380 status = psa_key_agreement_internal( operation, step, in psa_key_derivation_key_agreement()
5384 psa_key_derivation_abort( operation ); in psa_key_derivation_key_agreement()
5390 operation->can_output_key = 1; in psa_key_derivation_key_agreement()