cipher.h (5045B)
1 /* 2 * Test driver for cipher functions 3 */ 4 /* Copyright The Mbed TLS Contributors 5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 6 */ 7 8 #ifndef PSA_CRYPTO_TEST_DRIVERS_CIPHER_H 9 #define PSA_CRYPTO_TEST_DRIVERS_CIPHER_H 10 11 #include "mbedtls/build_info.h" 12 13 #if defined(PSA_CRYPTO_DRIVER_TEST) 14 #include "test_driver_common.h" 15 16 #include <psa/crypto_driver_common.h> 17 #include <psa/crypto.h> 18 19 #include "mbedtls/cipher.h" 20 21 typedef struct { 22 /* If non-null, on success, copy this to the output. */ 23 void *forced_output; 24 size_t forced_output_length; 25 /* If not PSA_SUCCESS, return this error code instead of processing the 26 * function call. */ 27 psa_status_t forced_status; 28 psa_status_t forced_status_encrypt; 29 psa_status_t forced_status_set_iv; 30 /* Count the amount of times one of the cipher driver functions is called. */ 31 unsigned long hits; 32 unsigned long hits_encrypt; 33 unsigned long hits_set_iv; 34 } mbedtls_test_driver_cipher_hooks_t; 35 36 #define MBEDTLS_TEST_DRIVER_CIPHER_INIT { NULL, 0, \ 37 PSA_SUCCESS, PSA_SUCCESS, PSA_SUCCESS, \ 38 0, 0, 0 } 39 static inline mbedtls_test_driver_cipher_hooks_t 40 mbedtls_test_driver_cipher_hooks_init(void) 41 { 42 const mbedtls_test_driver_cipher_hooks_t v = MBEDTLS_TEST_DRIVER_CIPHER_INIT; 43 return v; 44 } 45 46 extern mbedtls_test_driver_cipher_hooks_t mbedtls_test_driver_cipher_hooks; 47 48 psa_status_t mbedtls_test_transparent_cipher_encrypt( 49 const psa_key_attributes_t *attributes, 50 const uint8_t *key, size_t key_length, 51 psa_algorithm_t alg, 52 const uint8_t *iv, size_t iv_length, 53 const uint8_t *input, size_t input_length, 54 uint8_t *output, size_t output_size, size_t *output_length); 55 56 psa_status_t mbedtls_test_transparent_cipher_decrypt( 57 const psa_key_attributes_t *attributes, 58 const uint8_t *key, size_t key_length, 59 psa_algorithm_t alg, 60 const uint8_t *input, size_t input_length, 61 uint8_t *output, size_t output_size, size_t *output_length); 62 63 psa_status_t mbedtls_test_transparent_cipher_encrypt_setup( 64 mbedtls_transparent_test_driver_cipher_operation_t *operation, 65 const psa_key_attributes_t *attributes, 66 const uint8_t *key, size_t key_length, 67 psa_algorithm_t alg); 68 69 psa_status_t mbedtls_test_transparent_cipher_decrypt_setup( 70 mbedtls_transparent_test_driver_cipher_operation_t *operation, 71 const psa_key_attributes_t *attributes, 72 const uint8_t *key, size_t key_length, 73 psa_algorithm_t alg); 74 75 psa_status_t mbedtls_test_transparent_cipher_abort( 76 mbedtls_transparent_test_driver_cipher_operation_t *operation); 77 78 psa_status_t mbedtls_test_transparent_cipher_set_iv( 79 mbedtls_transparent_test_driver_cipher_operation_t *operation, 80 const uint8_t *iv, size_t iv_length); 81 82 psa_status_t mbedtls_test_transparent_cipher_update( 83 mbedtls_transparent_test_driver_cipher_operation_t *operation, 84 const uint8_t *input, size_t input_length, 85 uint8_t *output, size_t output_size, size_t *output_length); 86 87 psa_status_t mbedtls_test_transparent_cipher_finish( 88 mbedtls_transparent_test_driver_cipher_operation_t *operation, 89 uint8_t *output, size_t output_size, size_t *output_length); 90 91 /* 92 * opaque versions 93 */ 94 psa_status_t mbedtls_test_opaque_cipher_encrypt( 95 const psa_key_attributes_t *attributes, 96 const uint8_t *key, size_t key_length, 97 psa_algorithm_t alg, 98 const uint8_t *iv, size_t iv_length, 99 const uint8_t *input, size_t input_length, 100 uint8_t *output, size_t output_size, size_t *output_length); 101 102 psa_status_t mbedtls_test_opaque_cipher_decrypt( 103 const psa_key_attributes_t *attributes, 104 const uint8_t *key, size_t key_length, 105 psa_algorithm_t alg, 106 const uint8_t *input, size_t input_length, 107 uint8_t *output, size_t output_size, size_t *output_length); 108 109 psa_status_t mbedtls_test_opaque_cipher_encrypt_setup( 110 mbedtls_opaque_test_driver_cipher_operation_t *operation, 111 const psa_key_attributes_t *attributes, 112 const uint8_t *key, size_t key_length, 113 psa_algorithm_t alg); 114 115 psa_status_t mbedtls_test_opaque_cipher_decrypt_setup( 116 mbedtls_opaque_test_driver_cipher_operation_t *operation, 117 const psa_key_attributes_t *attributes, 118 const uint8_t *key, size_t key_length, 119 psa_algorithm_t alg); 120 121 psa_status_t mbedtls_test_opaque_cipher_abort( 122 mbedtls_opaque_test_driver_cipher_operation_t *operation); 123 124 psa_status_t mbedtls_test_opaque_cipher_set_iv( 125 mbedtls_opaque_test_driver_cipher_operation_t *operation, 126 const uint8_t *iv, size_t iv_length); 127 128 psa_status_t mbedtls_test_opaque_cipher_update( 129 mbedtls_opaque_test_driver_cipher_operation_t *operation, 130 const uint8_t *input, size_t input_length, 131 uint8_t *output, size_t output_size, size_t *output_length); 132 133 psa_status_t mbedtls_test_opaque_cipher_finish( 134 mbedtls_opaque_test_driver_cipher_operation_t *operation, 135 uint8_t *output, size_t output_size, size_t *output_length); 136 137 #endif /* PSA_CRYPTO_DRIVER_TEST */ 138 #endif /* PSA_CRYPTO_TEST_DRIVERS_CIPHER_H */