test_driver_mac.c (14597B)
1 /* 2 * Test driver for MAC entry points. 3 */ 4 /* Copyright The Mbed TLS Contributors 5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 6 */ 7 8 #include <test/helpers.h> 9 10 #if defined(PSA_CRYPTO_DRIVER_TEST) 11 #include "psa_crypto_mac.h" 12 13 #include "test/drivers/mac.h" 14 15 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) 16 #if MBEDTLS_VERSION_MAJOR < 4 17 #include "libtestdriver1/library/psa_crypto_mac.h" 18 #else 19 #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_mac.h" 20 #endif 21 #endif 22 23 mbedtls_test_driver_mac_hooks_t mbedtls_test_driver_mac_hooks = 24 MBEDTLS_TEST_DRIVER_MAC_INIT; 25 26 psa_status_t mbedtls_test_transparent_mac_compute( 27 const psa_key_attributes_t *attributes, 28 const uint8_t *key_buffer, 29 size_t key_buffer_size, 30 psa_algorithm_t alg, 31 const uint8_t *input, 32 size_t input_length, 33 uint8_t *mac, 34 size_t mac_size, 35 size_t *mac_length) 36 { 37 mbedtls_test_driver_mac_hooks.hits++; 38 39 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 40 mbedtls_test_driver_mac_hooks.driver_status = 41 mbedtls_test_driver_mac_hooks.forced_status; 42 } else { 43 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 44 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) 45 mbedtls_test_driver_mac_hooks.driver_status = 46 libtestdriver1_mbedtls_psa_mac_compute( 47 (const libtestdriver1_psa_key_attributes_t *) attributes, 48 key_buffer, key_buffer_size, alg, 49 input, input_length, 50 mac, mac_size, mac_length); 51 #elif defined(MBEDTLS_PSA_BUILTIN_MAC) 52 mbedtls_test_driver_mac_hooks.driver_status = 53 mbedtls_psa_mac_compute( 54 attributes, key_buffer, key_buffer_size, alg, 55 input, input_length, 56 mac, mac_size, mac_length); 57 #else 58 (void) attributes; 59 (void) key_buffer; 60 (void) key_buffer_size; 61 (void) alg; 62 (void) input; 63 (void) input_length; 64 (void) mac; 65 (void) mac_size; 66 (void) mac_length; 67 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 68 #endif 69 } 70 71 return mbedtls_test_driver_mac_hooks.driver_status; 72 } 73 74 psa_status_t mbedtls_test_transparent_mac_sign_setup( 75 mbedtls_transparent_test_driver_mac_operation_t *operation, 76 const psa_key_attributes_t *attributes, 77 const uint8_t *key_buffer, 78 size_t key_buffer_size, 79 psa_algorithm_t alg) 80 { 81 mbedtls_test_driver_mac_hooks.hits++; 82 83 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 84 mbedtls_test_driver_mac_hooks.driver_status = 85 mbedtls_test_driver_mac_hooks.forced_status; 86 } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) { 87 mbedtls_test_driver_mac_hooks.driver_status = 88 PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION; 89 } else { 90 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 91 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) 92 mbedtls_test_driver_mac_hooks.driver_status = 93 libtestdriver1_mbedtls_psa_mac_sign_setup( 94 operation, 95 (const libtestdriver1_psa_key_attributes_t *) attributes, 96 key_buffer, key_buffer_size, alg); 97 #elif defined(MBEDTLS_PSA_BUILTIN_MAC) 98 mbedtls_test_driver_mac_hooks.driver_status = 99 mbedtls_psa_mac_sign_setup( 100 operation, attributes, key_buffer, key_buffer_size, alg); 101 #else 102 (void) operation; 103 (void) attributes; 104 (void) key_buffer; 105 (void) key_buffer_size; 106 (void) alg; 107 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 108 #endif 109 } 110 111 return mbedtls_test_driver_mac_hooks.driver_status; 112 } 113 114 psa_status_t mbedtls_test_transparent_mac_verify_setup( 115 mbedtls_transparent_test_driver_mac_operation_t *operation, 116 const psa_key_attributes_t *attributes, 117 const uint8_t *key_buffer, 118 size_t key_buffer_size, 119 psa_algorithm_t alg) 120 { 121 mbedtls_test_driver_mac_hooks.hits++; 122 123 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 124 mbedtls_test_driver_mac_hooks.driver_status = 125 mbedtls_test_driver_mac_hooks.forced_status; 126 } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) { 127 mbedtls_test_driver_mac_hooks.driver_status = 128 PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION; 129 } else { 130 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 131 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) 132 mbedtls_test_driver_mac_hooks.driver_status = 133 libtestdriver1_mbedtls_psa_mac_verify_setup( 134 operation, 135 (const libtestdriver1_psa_key_attributes_t *) attributes, 136 key_buffer, key_buffer_size, alg); 137 #elif defined(MBEDTLS_PSA_BUILTIN_MAC) 138 mbedtls_test_driver_mac_hooks.driver_status = 139 mbedtls_psa_mac_verify_setup( 140 operation, attributes, key_buffer, key_buffer_size, alg); 141 #else 142 (void) operation; 143 (void) attributes; 144 (void) key_buffer; 145 (void) key_buffer_size; 146 (void) alg; 147 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 148 #endif 149 } 150 151 return mbedtls_test_driver_mac_hooks.driver_status; 152 } 153 154 psa_status_t mbedtls_test_transparent_mac_update( 155 mbedtls_transparent_test_driver_mac_operation_t *operation, 156 const uint8_t *input, 157 size_t input_length) 158 { 159 mbedtls_test_driver_mac_hooks.hits++; 160 161 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 162 mbedtls_test_driver_mac_hooks.driver_status = 163 mbedtls_test_driver_mac_hooks.forced_status; 164 } else { 165 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 166 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) 167 mbedtls_test_driver_mac_hooks.driver_status = 168 libtestdriver1_mbedtls_psa_mac_update( 169 operation, input, input_length); 170 #elif defined(MBEDTLS_PSA_BUILTIN_MAC) 171 mbedtls_test_driver_mac_hooks.driver_status = 172 mbedtls_psa_mac_update( 173 operation, input, input_length); 174 #else 175 (void) operation; 176 (void) input; 177 (void) input_length; 178 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 179 #endif 180 } 181 182 return mbedtls_test_driver_mac_hooks.driver_status; 183 } 184 185 psa_status_t mbedtls_test_transparent_mac_sign_finish( 186 mbedtls_transparent_test_driver_mac_operation_t *operation, 187 uint8_t *mac, 188 size_t mac_size, 189 size_t *mac_length) 190 { 191 mbedtls_test_driver_mac_hooks.hits++; 192 193 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 194 mbedtls_test_driver_mac_hooks.driver_status = 195 mbedtls_test_driver_mac_hooks.forced_status; 196 } else { 197 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 198 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) 199 mbedtls_test_driver_mac_hooks.driver_status = 200 libtestdriver1_mbedtls_psa_mac_sign_finish( 201 operation, mac, mac_size, mac_length); 202 #elif defined(MBEDTLS_PSA_BUILTIN_MAC) 203 mbedtls_test_driver_mac_hooks.driver_status = 204 mbedtls_psa_mac_sign_finish( 205 operation, mac, mac_size, mac_length); 206 #else 207 (void) operation; 208 (void) mac; 209 (void) mac_size; 210 (void) mac_length; 211 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 212 #endif 213 } 214 215 return mbedtls_test_driver_mac_hooks.driver_status; 216 } 217 218 psa_status_t mbedtls_test_transparent_mac_verify_finish( 219 mbedtls_transparent_test_driver_mac_operation_t *operation, 220 const uint8_t *mac, 221 size_t mac_length) 222 { 223 mbedtls_test_driver_mac_hooks.hits++; 224 225 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 226 mbedtls_test_driver_mac_hooks.driver_status = 227 mbedtls_test_driver_mac_hooks.forced_status; 228 } else { 229 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 230 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) 231 mbedtls_test_driver_mac_hooks.driver_status = 232 libtestdriver1_mbedtls_psa_mac_verify_finish( 233 operation, mac, mac_length); 234 #elif defined(MBEDTLS_PSA_BUILTIN_MAC) 235 mbedtls_test_driver_mac_hooks.driver_status = 236 mbedtls_psa_mac_verify_finish( 237 operation, mac, mac_length); 238 #else 239 (void) operation; 240 (void) mac; 241 (void) mac_length; 242 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 243 #endif 244 } 245 246 return mbedtls_test_driver_mac_hooks.driver_status; 247 } 248 249 psa_status_t mbedtls_test_transparent_mac_abort( 250 mbedtls_transparent_test_driver_mac_operation_t *operation) 251 { 252 mbedtls_test_driver_mac_hooks.hits++; 253 254 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 255 mbedtls_test_driver_mac_hooks.driver_status = 256 mbedtls_test_driver_mac_hooks.forced_status; 257 } else { 258 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 259 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC) 260 mbedtls_test_driver_mac_hooks.driver_status = 261 libtestdriver1_mbedtls_psa_mac_abort(operation); 262 #elif defined(MBEDTLS_PSA_BUILTIN_MAC) 263 mbedtls_test_driver_mac_hooks.driver_status = 264 mbedtls_psa_mac_abort(operation); 265 #else 266 (void) operation; 267 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 268 #endif 269 } 270 271 return mbedtls_test_driver_mac_hooks.driver_status; 272 } 273 274 psa_status_t mbedtls_test_opaque_mac_compute( 275 const psa_key_attributes_t *attributes, 276 const uint8_t *key_buffer, 277 size_t key_buffer_size, 278 psa_algorithm_t alg, 279 const uint8_t *input, 280 size_t input_length, 281 uint8_t *mac, 282 size_t mac_size, 283 size_t *mac_length) 284 { 285 mbedtls_test_driver_mac_hooks.hits++; 286 287 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 288 mbedtls_test_driver_mac_hooks.driver_status = 289 mbedtls_test_driver_mac_hooks.forced_status; 290 } else { 291 (void) attributes; 292 (void) key_buffer; 293 (void) key_buffer_size; 294 (void) alg; 295 (void) input; 296 (void) input_length; 297 (void) mac; 298 (void) mac_size; 299 (void) mac_length; 300 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 301 } 302 303 return mbedtls_test_driver_mac_hooks.driver_status; 304 } 305 306 psa_status_t mbedtls_test_opaque_mac_sign_setup( 307 mbedtls_opaque_test_driver_mac_operation_t *operation, 308 const psa_key_attributes_t *attributes, 309 const uint8_t *key_buffer, 310 size_t key_buffer_size, 311 psa_algorithm_t alg) 312 { 313 mbedtls_test_driver_mac_hooks.hits++; 314 315 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 316 mbedtls_test_driver_mac_hooks.driver_status = 317 mbedtls_test_driver_mac_hooks.forced_status; 318 } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) { 319 mbedtls_test_driver_mac_hooks.driver_status = 320 PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION; 321 } else { 322 (void) operation; 323 (void) attributes; 324 (void) key_buffer; 325 (void) key_buffer_size; 326 (void) alg; 327 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 328 } 329 330 return mbedtls_test_driver_mac_hooks.driver_status; 331 } 332 333 psa_status_t mbedtls_test_opaque_mac_verify_setup( 334 mbedtls_opaque_test_driver_mac_operation_t *operation, 335 const psa_key_attributes_t *attributes, 336 const uint8_t *key_buffer, 337 size_t key_buffer_size, 338 psa_algorithm_t alg) 339 { 340 mbedtls_test_driver_mac_hooks.hits++; 341 342 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 343 mbedtls_test_driver_mac_hooks.driver_status = 344 mbedtls_test_driver_mac_hooks.forced_status; 345 } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) { 346 mbedtls_test_driver_mac_hooks.driver_status = 347 PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION; 348 } else { 349 (void) operation; 350 (void) attributes; 351 (void) key_buffer; 352 (void) key_buffer_size; 353 (void) alg; 354 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 355 } 356 357 return mbedtls_test_driver_mac_hooks.driver_status; 358 } 359 360 psa_status_t mbedtls_test_opaque_mac_update( 361 mbedtls_opaque_test_driver_mac_operation_t *operation, 362 const uint8_t *input, 363 size_t input_length) 364 { 365 mbedtls_test_driver_mac_hooks.hits++; 366 367 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 368 mbedtls_test_driver_mac_hooks.driver_status = 369 mbedtls_test_driver_mac_hooks.forced_status; 370 } else { 371 (void) operation; 372 (void) input; 373 (void) input_length; 374 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 375 } 376 377 return mbedtls_test_driver_mac_hooks.driver_status; 378 } 379 380 psa_status_t mbedtls_test_opaque_mac_sign_finish( 381 mbedtls_opaque_test_driver_mac_operation_t *operation, 382 uint8_t *mac, 383 size_t mac_size, 384 size_t *mac_length) 385 { 386 mbedtls_test_driver_mac_hooks.hits++; 387 388 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 389 mbedtls_test_driver_mac_hooks.driver_status = 390 mbedtls_test_driver_mac_hooks.forced_status; 391 } else { 392 (void) operation; 393 (void) mac; 394 (void) mac_size; 395 (void) mac_length; 396 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 397 } 398 399 return mbedtls_test_driver_mac_hooks.driver_status; 400 } 401 402 psa_status_t mbedtls_test_opaque_mac_verify_finish( 403 mbedtls_opaque_test_driver_mac_operation_t *operation, 404 const uint8_t *mac, 405 size_t mac_length) 406 { 407 mbedtls_test_driver_mac_hooks.hits++; 408 409 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 410 mbedtls_test_driver_mac_hooks.driver_status = 411 mbedtls_test_driver_mac_hooks.forced_status; 412 } else { 413 (void) operation; 414 (void) mac; 415 (void) mac_length; 416 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 417 } 418 419 return mbedtls_test_driver_mac_hooks.driver_status; 420 } 421 422 psa_status_t mbedtls_test_opaque_mac_abort( 423 mbedtls_opaque_test_driver_mac_operation_t *operation) 424 { 425 mbedtls_test_driver_mac_hooks.hits++; 426 427 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) { 428 mbedtls_test_driver_mac_hooks.driver_status = 429 mbedtls_test_driver_mac_hooks.forced_status; 430 } else { 431 (void) operation; 432 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 433 } 434 435 return mbedtls_test_driver_mac_hooks.driver_status; 436 } 437 438 #endif /* PSA_CRYPTO_DRIVER_TEST */