1 /* 2 * Test driver for AEAD driver entry points. 3 */ 4 /* Copyright The Mbed TLS Contributors 5 * SPDX-License-Identifier: Apache-2.0 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); you may 8 * not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 #ifndef PSA_CRYPTO_TEST_DRIVERS_AEAD_H 21 #define PSA_CRYPTO_TEST_DRIVERS_AEAD_H 22 23 #include "mbedtls/build_info.h" 24 25 #if defined(PSA_CRYPTO_DRIVER_TEST) 26 #include <psa/crypto_driver_common.h> 27 28 typedef struct { 29 /* If not PSA_SUCCESS, return this error code instead of processing the 30 * function call. */ 31 psa_status_t forced_status; 32 /* Count the amount of times AEAD driver functions are called. */ 33 unsigned long hits_encrypt; 34 unsigned long hits_decrypt; 35 unsigned long hits_encrypt_setup; 36 unsigned long hits_decrypt_setup; 37 unsigned long hits_set_nonce; 38 unsigned long hits_set_lengths; 39 unsigned long hits_update_ad; 40 unsigned long hits_update; 41 unsigned long hits_finish; 42 unsigned long hits_verify; 43 unsigned long hits_abort; 44 45 /* Status returned by the last AEAD driver function call. */ 46 psa_status_t driver_status; 47 } mbedtls_test_driver_aead_hooks_t; 48 49 #define MBEDTLS_TEST_DRIVER_AEAD_INIT { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 50 static inline mbedtls_test_driver_aead_hooks_t mbedtls_test_driver_aead_hooks_init(void)51 mbedtls_test_driver_aead_hooks_init( void ) 52 { 53 const mbedtls_test_driver_aead_hooks_t v = MBEDTLS_TEST_DRIVER_AEAD_INIT; 54 return( v ); 55 } 56 57 extern mbedtls_test_driver_aead_hooks_t mbedtls_test_driver_aead_hooks; 58 59 psa_status_t mbedtls_test_transparent_aead_encrypt( 60 const psa_key_attributes_t *attributes, 61 const uint8_t *key_buffer, size_t key_buffer_size, 62 psa_algorithm_t alg, 63 const uint8_t *nonce, size_t nonce_length, 64 const uint8_t *additional_data, size_t additional_data_length, 65 const uint8_t *plaintext, size_t plaintext_length, 66 uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length ); 67 68 psa_status_t mbedtls_test_transparent_aead_decrypt( 69 const psa_key_attributes_t *attributes, 70 const uint8_t *key_buffer, size_t key_buffer_size, 71 psa_algorithm_t alg, 72 const uint8_t *nonce, size_t nonce_length, 73 const uint8_t *additional_data, size_t additional_data_length, 74 const uint8_t *ciphertext, size_t ciphertext_length, 75 uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length ); 76 77 psa_status_t mbedtls_test_transparent_aead_encrypt_setup( 78 mbedtls_psa_aead_operation_t *operation, 79 const psa_key_attributes_t *attributes, 80 const uint8_t *key_buffer, size_t key_buffer_size, 81 psa_algorithm_t alg ); 82 83 psa_status_t mbedtls_test_transparent_aead_decrypt_setup( 84 mbedtls_psa_aead_operation_t *operation, 85 const psa_key_attributes_t *attributes, 86 const uint8_t *key_buffer, size_t key_buffer_size, 87 psa_algorithm_t alg ); 88 89 psa_status_t mbedtls_test_transparent_aead_set_nonce( 90 mbedtls_psa_aead_operation_t *operation, 91 const uint8_t *nonce, 92 size_t nonce_length ); 93 94 psa_status_t mbedtls_test_transparent_aead_set_lengths( 95 mbedtls_psa_aead_operation_t *operation, 96 size_t ad_length, 97 size_t plaintext_length ); 98 99 psa_status_t mbedtls_test_transparent_aead_update_ad( 100 mbedtls_psa_aead_operation_t *operation, 101 const uint8_t *input, 102 size_t input_length ); 103 104 psa_status_t mbedtls_test_transparent_aead_update( 105 mbedtls_psa_aead_operation_t *operation, 106 const uint8_t *input, 107 size_t input_length, 108 uint8_t *output, 109 size_t output_size, 110 size_t *output_length ); 111 112 psa_status_t mbedtls_test_transparent_aead_finish( 113 mbedtls_psa_aead_operation_t *operation, 114 uint8_t *ciphertext, 115 size_t ciphertext_size, 116 size_t *ciphertext_length, 117 uint8_t *tag, 118 size_t tag_size, 119 size_t *tag_length ); 120 121 psa_status_t mbedtls_test_transparent_aead_verify( 122 mbedtls_psa_aead_operation_t *operation, 123 uint8_t *plaintext, 124 size_t plaintext_size, 125 size_t *plaintext_length, 126 const uint8_t *tag, 127 size_t tag_length ); 128 129 psa_status_t mbedtls_test_transparent_aead_abort( 130 mbedtls_psa_aead_operation_t *operation ); 131 132 #endif /* PSA_CRYPTO_DRIVER_TEST */ 133 #endif /* PSA_CRYPTO_TEST_DRIVERS_AEAD_H */ 134