|  | /* | 
|  | *  Function signatures for functionality that can be provided by | 
|  | *  cryptographic accelerators. | 
|  | */ | 
|  | /*  Copyright The Mbed TLS Contributors | 
|  | *  SPDX-License-Identifier: Apache-2.0 | 
|  | * | 
|  | *  Licensed under the Apache License, Version 2.0 (the "License"); you may | 
|  | *  not use this file except in compliance with the License. | 
|  | *  You may obtain a copy of the License at | 
|  | * | 
|  | *  http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | *  Unless required by applicable law or agreed to in writing, software | 
|  | *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | 
|  | *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | *  See the License for the specific language governing permissions and | 
|  | *  limitations under the License. | 
|  | */ | 
|  |  | 
|  | #ifndef PSA_CRYPTO_DRIVER_WRAPPERS_H | 
|  | #define PSA_CRYPTO_DRIVER_WRAPPERS_H | 
|  |  | 
|  | #include "psa/crypto.h" | 
|  | #include "psa/crypto_driver_common.h" | 
|  |  | 
|  | /* | 
|  | * Initialization and termination functions | 
|  | */ | 
|  | psa_status_t psa_driver_wrapper_init( void ); | 
|  | void psa_driver_wrapper_free( void ); | 
|  |  | 
|  | /* | 
|  | * Signature functions | 
|  | */ | 
|  | psa_status_t psa_driver_wrapper_sign_message( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | uint8_t *signature, | 
|  | size_t signature_size, | 
|  | size_t *signature_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_verify_message( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | const uint8_t *signature, | 
|  | size_t signature_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_sign_hash( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, | 
|  | uint8_t *signature, size_t signature_size, size_t *signature_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_verify_hash( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, | 
|  | const uint8_t *signature, size_t signature_length ); | 
|  |  | 
|  | /* | 
|  | * Key handling functions | 
|  | */ | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_import_key( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *data, size_t data_length, | 
|  | uint8_t *key_buffer, size_t key_buffer_size, | 
|  | size_t *key_buffer_length, size_t *bits ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_export_key( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | uint8_t *data, size_t data_size, size_t *data_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_export_public_key( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | uint8_t *data, size_t data_size, size_t *data_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_get_key_buffer_size( | 
|  | const psa_key_attributes_t *attributes, | 
|  | size_t *key_buffer_size ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_get_key_buffer_size_from_key_data( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *data, | 
|  | size_t data_length, | 
|  | size_t *key_buffer_size ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_generate_key( | 
|  | const psa_key_attributes_t *attributes, | 
|  | uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_get_builtin_key( | 
|  | psa_drv_slot_number_t slot_number, | 
|  | psa_key_attributes_t *attributes, | 
|  | uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_copy_key( | 
|  | psa_key_attributes_t *attributes, | 
|  | const uint8_t *source_key, size_t source_key_length, | 
|  | uint8_t *target_key_buffer, size_t target_key_buffer_size, | 
|  | size_t *target_key_buffer_length ); | 
|  | /* | 
|  | * Cipher functions | 
|  | */ | 
|  | psa_status_t psa_driver_wrapper_cipher_encrypt( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *iv, | 
|  | size_t iv_length, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | uint8_t *output, | 
|  | size_t output_size, | 
|  | size_t *output_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_cipher_decrypt( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | uint8_t *output, | 
|  | size_t output_size, | 
|  | size_t *output_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_cipher_encrypt_setup( | 
|  | psa_cipher_operation_t *operation, | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_cipher_decrypt_setup( | 
|  | psa_cipher_operation_t *operation, | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_cipher_set_iv( | 
|  | psa_cipher_operation_t *operation, | 
|  | const uint8_t *iv, | 
|  | size_t iv_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_cipher_update( | 
|  | psa_cipher_operation_t *operation, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | uint8_t *output, | 
|  | size_t output_size, | 
|  | size_t *output_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_cipher_finish( | 
|  | psa_cipher_operation_t *operation, | 
|  | uint8_t *output, | 
|  | size_t output_size, | 
|  | size_t *output_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_cipher_abort( | 
|  | psa_cipher_operation_t *operation ); | 
|  |  | 
|  | /* | 
|  | * Hashing functions | 
|  | */ | 
|  | psa_status_t psa_driver_wrapper_hash_compute( | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | uint8_t *hash, | 
|  | size_t hash_size, | 
|  | size_t *hash_length); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_hash_setup( | 
|  | psa_hash_operation_t *operation, | 
|  | psa_algorithm_t alg ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_hash_clone( | 
|  | const psa_hash_operation_t *source_operation, | 
|  | psa_hash_operation_t *target_operation ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_hash_update( | 
|  | psa_hash_operation_t *operation, | 
|  | const uint8_t *input, | 
|  | size_t input_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_hash_finish( | 
|  | psa_hash_operation_t *operation, | 
|  | uint8_t *hash, | 
|  | size_t hash_size, | 
|  | size_t *hash_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_hash_abort( | 
|  | psa_hash_operation_t *operation ); | 
|  |  | 
|  | /* | 
|  | * AEAD functions | 
|  | */ | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_encrypt( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *nonce, size_t nonce_length, | 
|  | const uint8_t *additional_data, size_t additional_data_length, | 
|  | const uint8_t *plaintext, size_t plaintext_length, | 
|  | uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_decrypt( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *nonce, size_t nonce_length, | 
|  | const uint8_t *additional_data, size_t additional_data_length, | 
|  | const uint8_t *ciphertext, size_t ciphertext_length, | 
|  | uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length ); | 
|  |  | 
|  | psa_status_t psa_driver_get_tag_len( | 
|  | psa_aead_operation_t *operation, | 
|  | uint8_t *tag_len ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_encrypt_setup( | 
|  | psa_aead_operation_t *operation, | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_decrypt_setup( | 
|  | psa_aead_operation_t *operation, | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, size_t key_buffer_size, | 
|  | psa_algorithm_t alg ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_set_nonce( | 
|  | psa_aead_operation_t *operation, | 
|  | const uint8_t *nonce, | 
|  | size_t nonce_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_set_lengths( | 
|  | psa_aead_operation_t *operation, | 
|  | size_t ad_length, | 
|  | size_t plaintext_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_update_ad( | 
|  | psa_aead_operation_t *operation, | 
|  | const uint8_t *input, | 
|  | size_t input_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_update( | 
|  | psa_aead_operation_t *operation, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | uint8_t *output, | 
|  | size_t output_size, | 
|  | size_t *output_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_finish( | 
|  | psa_aead_operation_t *operation, | 
|  | uint8_t *ciphertext, | 
|  | size_t ciphertext_size, | 
|  | size_t *ciphertext_length, | 
|  | uint8_t *tag, | 
|  | size_t tag_size, | 
|  | size_t *tag_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_verify( | 
|  | psa_aead_operation_t *operation, | 
|  | uint8_t *plaintext, | 
|  | size_t plaintext_size, | 
|  | size_t *plaintext_length, | 
|  | const uint8_t *tag, | 
|  | size_t tag_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_aead_abort( | 
|  | psa_aead_operation_t *operation ); | 
|  |  | 
|  | /* | 
|  | * MAC functions | 
|  | */ | 
|  | psa_status_t psa_driver_wrapper_mac_compute( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | uint8_t *mac, | 
|  | size_t mac_size, | 
|  | size_t *mac_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_mac_sign_setup( | 
|  | psa_mac_operation_t *operation, | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_mac_verify_setup( | 
|  | psa_mac_operation_t *operation, | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_mac_update( | 
|  | psa_mac_operation_t *operation, | 
|  | const uint8_t *input, | 
|  | size_t input_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_mac_sign_finish( | 
|  | psa_mac_operation_t *operation, | 
|  | uint8_t *mac, | 
|  | size_t mac_size, | 
|  | size_t *mac_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_mac_verify_finish( | 
|  | psa_mac_operation_t *operation, | 
|  | const uint8_t *mac, | 
|  | size_t mac_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_mac_abort( | 
|  | psa_mac_operation_t *operation ); | 
|  |  | 
|  | /* | 
|  | * Asymmetric cryptography | 
|  | */ | 
|  | psa_status_t psa_driver_wrapper_asymmetric_encrypt( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | const uint8_t *salt, | 
|  | size_t salt_length, | 
|  | uint8_t *output, | 
|  | size_t output_size, | 
|  | size_t *output_length ); | 
|  |  | 
|  | psa_status_t psa_driver_wrapper_asymmetric_decrypt( | 
|  | const psa_key_attributes_t *attributes, | 
|  | const uint8_t *key_buffer, | 
|  | size_t key_buffer_size, | 
|  | psa_algorithm_t alg, | 
|  | const uint8_t *input, | 
|  | size_t input_length, | 
|  | const uint8_t *salt, | 
|  | size_t salt_length, | 
|  | uint8_t *output, | 
|  | size_t output_size, | 
|  | size_t *output_length ); | 
|  |  | 
|  | #endif /* PSA_CRYPTO_DRIVER_WRAPPERS_H */ | 
|  |  | 
|  | /* End of automatically generated file. */ |