31 #if defined(MBEDTLS_PSA_CRYPTO_C)
33 #if defined(MBEDTLS_PSA_CRYPTO_DRIVERS)
36 #if defined(PSA_CRYPTO_DRIVER_TEST)
37 #ifndef PSA_CRYPTO_DRIVER_PRESENT
38 #define PSA_CRYPTO_DRIVER_PRESENT
40 #ifndef PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT
41 #define PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT
43 #include "test/drivers/test_driver.h"
52 #define PSA_CRYPTO_MBED_TLS_DRIVER_ID (1)
54 #if defined(PSA_CRYPTO_DRIVER_TEST)
55 #define PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID (2)
56 #define PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID (3)
60 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
63 #ifndef PSA_CRYPTO_DRIVER_PRESENT
64 #define PSA_CRYPTO_DRIVER_PRESENT
73 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
80 #if defined(PSA_CRYPTO_DRIVER_TEST)
81 status = mbedtls_test_transparent_init();
86 status = mbedtls_test_opaque_init();
98 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
104 #if defined(PSA_CRYPTO_DRIVER_TEST)
105 mbedtls_test_transparent_free();
106 mbedtls_test_opaque_free();
114 size_t key_buffer_size,
119 size_t signature_size,
120 size_t *signature_length)
130 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
131 #if defined(PSA_CRYPTO_DRIVER_TEST)
132 status = mbedtls_test_transparent_signature_sign_message(
151 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
152 #if defined(PSA_CRYPTO_DRIVER_TEST)
153 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
154 status = mbedtls_test_opaque_signature_sign_message(
190 size_t key_buffer_size,
195 size_t signature_length)
205 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
206 #if defined(PSA_CRYPTO_DRIVER_TEST)
207 status = mbedtls_test_transparent_signature_verify_message(
225 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
226 #if defined(PSA_CRYPTO_DRIVER_TEST)
227 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
228 return mbedtls_test_opaque_signature_verify_message(
261 const uint8_t *key_buffer,
size_t key_buffer_size,
263 uint8_t *signature,
size_t signature_size,
size_t *signature_length)
266 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
278 alg,
hash, hash_length,
279 signature, signature_size, signature_length);
291 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
292 #if defined(PSA_CRYPTO_DRIVER_TEST)
293 status = mbedtls_test_transparent_signature_sign_hash(
attributes,
320 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
321 #if defined(PSA_CRYPTO_DRIVER_TEST)
322 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
323 return mbedtls_test_opaque_signature_sign_hash(
attributes,
343 const uint8_t *key_buffer,
size_t key_buffer_size,
345 const uint8_t *signature,
size_t signature_length)
348 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
360 alg,
hash, hash_length,
361 signature, signature_length);
373 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
374 #if defined(PSA_CRYPTO_DRIVER_TEST)
375 status = mbedtls_test_transparent_signature_verify_hash(
401 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
402 #if defined(PSA_CRYPTO_DRIVER_TEST)
403 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
404 return mbedtls_test_opaque_signature_verify_hash(
attributes,
438 size_t *key_buffer_size)
444 *key_buffer_size = 0;
446 #if defined(PSA_CRYPTO_DRIVER_TEST)
447 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
448 #if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS)
450 if (psa_key_id_is_builtin(
457 *key_buffer_size = mbedtls_test_size_function(key_type, key_bits);
458 return (*key_buffer_size != 0) ?
471 uint8_t *key_buffer,
size_t key_buffer_size,
size_t *key_buffer_length)
478 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
483 size_t pubkey_length = 0;
498 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
502 #if defined(PSA_CRYPTO_DRIVER_TEST)
503 status = mbedtls_test_transparent_generate_key(
516 attributes, key_buffer, key_buffer_size, key_buffer_length);
520 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
521 #if defined(PSA_CRYPTO_DRIVER_TEST)
522 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
523 status = mbedtls_test_opaque_generate_key(
524 attributes, key_buffer, key_buffer_size, key_buffer_length);
543 size_t key_buffer_size,
544 size_t *key_buffer_length,
552 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
586 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
587 #if defined(PSA_CRYPTO_DRIVER_TEST)
588 status = mbedtls_test_transparent_import_key(
591 key_buffer, key_buffer_size,
592 key_buffer_length, bits);
602 key_buffer, key_buffer_size,
603 key_buffer_length, bits);
616 const uint8_t *key_buffer,
size_t key_buffer_size,
617 uint8_t *data,
size_t data_size,
size_t *data_length)
625 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
638 data, data_size, data_length);
652 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
653 #if defined(PSA_CRYPTO_DRIVER_TEST)
654 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
655 return mbedtls_test_opaque_export_key(
attributes,
671 const uint8_t *key_buffer,
size_t key_buffer_size,
672 uint8_t *data,
size_t data_size,
size_t *data_length)
680 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
693 data, data_size, data_length);
701 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
702 #if defined(PSA_CRYPTO_DRIVER_TEST)
703 status = mbedtls_test_transparent_export_public_key(
725 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
726 #if defined(PSA_CRYPTO_DRIVER_TEST)
727 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
728 return mbedtls_test_opaque_export_public_key(
attributes,
745 uint8_t *key_buffer,
size_t key_buffer_size,
size_t *key_buffer_length)
749 #if defined(PSA_CRYPTO_DRIVER_TEST)
750 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
751 return mbedtls_test_opaque_get_builtin_key(
754 key_buffer, key_buffer_size, key_buffer_length);
759 (void) key_buffer_size;
760 (void) key_buffer_length;
771 size_t key_buffer_size,
779 size_t *output_length)
789 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
790 #if defined(PSA_CRYPTO_DRIVER_TEST)
791 status = mbedtls_test_transparent_cipher_encrypt(
attributes,
809 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
826 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
827 #if defined(PSA_CRYPTO_DRIVER_TEST)
828 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
829 return mbedtls_test_opaque_cipher_encrypt(
attributes,
847 (void) key_buffer_size;
855 (void) output_length;
863 size_t key_buffer_size,
869 size_t *output_length)
879 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
880 #if defined(PSA_CRYPTO_DRIVER_TEST)
881 status = mbedtls_test_transparent_cipher_decrypt(
attributes,
897 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
912 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
913 #if defined(PSA_CRYPTO_DRIVER_TEST)
914 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
915 return mbedtls_test_opaque_cipher_decrypt(
attributes,
931 (void) key_buffer_size;
937 (void) output_length;
945 const uint8_t *key_buffer,
size_t key_buffer_size,
956 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
957 #if defined(PSA_CRYPTO_DRIVER_TEST)
958 status = mbedtls_test_transparent_cipher_encrypt_setup(
959 &
operation->ctx.transparent_test_driver_ctx,
966 operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
974 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
992 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
993 #if defined(PSA_CRYPTO_DRIVER_TEST)
994 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
995 status = mbedtls_test_opaque_cipher_encrypt_setup(
998 key_buffer, key_buffer_size,
1002 operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID;
1013 (void) key_buffer_size;
1022 const uint8_t *key_buffer,
size_t key_buffer_size,
1033 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1034 #if defined(PSA_CRYPTO_DRIVER_TEST)
1035 status = mbedtls_test_transparent_cipher_decrypt_setup(
1036 &
operation->ctx.transparent_test_driver_ctx,
1043 operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
1051 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
1068 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1069 #if defined(PSA_CRYPTO_DRIVER_TEST)
1070 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
1071 status = mbedtls_test_opaque_cipher_decrypt_setup(
1074 key_buffer, key_buffer_size,
1078 operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID;
1089 (void) key_buffer_size;
1101 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
1108 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1109 #if defined(PSA_CRYPTO_DRIVER_TEST)
1110 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1111 return mbedtls_test_transparent_cipher_set_iv(
1112 &
operation->ctx.transparent_test_driver_ctx,
1115 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1116 return mbedtls_test_opaque_cipher_set_iv(
1132 size_t input_length,
1135 size_t *output_length)
1138 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
1148 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1149 #if defined(PSA_CRYPTO_DRIVER_TEST)
1150 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1151 return mbedtls_test_transparent_cipher_update(
1152 &
operation->ctx.transparent_test_driver_ctx,
1153 input, input_length,
1154 output, output_size, output_length);
1156 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1157 return mbedtls_test_opaque_cipher_update(
1159 input, input_length,
1160 output, output_size, output_length);
1166 (void) input_length;
1169 (void) output_length;
1178 size_t *output_length)
1181 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
1189 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1190 #if defined(PSA_CRYPTO_DRIVER_TEST)
1191 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1192 return mbedtls_test_transparent_cipher_finish(
1193 &
operation->ctx.transparent_test_driver_ctx,
1194 output, output_size, output_length);
1196 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1197 return mbedtls_test_opaque_cipher_finish(
1199 output, output_size, output_length);
1206 (void) output_length;
1217 #if defined(MBEDTLS_PSA_BUILTIN_CIPHER)
1222 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1223 #if defined(PSA_CRYPTO_DRIVER_TEST)
1224 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1225 status = mbedtls_test_transparent_cipher_abort(
1226 &
operation->ctx.transparent_test_driver_ctx);
1228 &
operation->ctx.transparent_test_driver_ctx,
1229 sizeof(
operation->ctx.transparent_test_driver_ctx));
1232 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1233 status = mbedtls_test_opaque_cipher_abort(
1234 &
operation->ctx.opaque_test_driver_ctx);
1237 sizeof(
operation->ctx.opaque_test_driver_ctx));
1253 size_t input_length,
1256 size_t *hash_length)
1261 #if defined(PSA_CRYPTO_DRIVER_TEST)
1262 status = mbedtls_test_transparent_hash_compute(
1263 alg,
input, input_length,
hash, hash_size, hash_length);
1270 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
1272 hash, hash_size, hash_length);
1280 (void) input_length;
1295 #if defined(PSA_CRYPTO_DRIVER_TEST)
1296 status = mbedtls_test_transparent_hash_setup(
1299 operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
1308 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
1329 switch (source_operation->
id) {
1330 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
1336 #if defined(PSA_CRYPTO_DRIVER_TEST)
1337 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1338 target_operation->
id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
1339 return mbedtls_test_transparent_hash_clone(
1340 &source_operation->
ctx.test_driver_ctx,
1341 &target_operation->
ctx.test_driver_ctx);
1344 (void) target_operation;
1352 size_t input_length)
1355 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
1358 input, input_length);
1360 #if defined(PSA_CRYPTO_DRIVER_TEST)
1361 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1362 return mbedtls_test_transparent_hash_update(
1364 input, input_length);
1368 (void) input_length;
1377 size_t *hash_length)
1380 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
1383 hash, hash_size, hash_length);
1385 #if defined(PSA_CRYPTO_DRIVER_TEST)
1386 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1387 return mbedtls_test_transparent_hash_finish(
1389 hash, hash_size, hash_length);
1403 #if defined(MBEDTLS_PSA_BUILTIN_HASH)
1407 #if defined(PSA_CRYPTO_DRIVER_TEST)
1408 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1409 return mbedtls_test_transparent_hash_abort(
1419 const uint8_t *key_buffer,
size_t key_buffer_size,
1421 const uint8_t *nonce,
size_t nonce_length,
1422 const uint8_t *additional_data,
size_t additional_data_length,
1423 const uint8_t *plaintext,
size_t plaintext_length,
1424 uint8_t *ciphertext,
size_t ciphertext_size,
size_t *ciphertext_length)
1435 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1436 #if defined(PSA_CRYPTO_DRIVER_TEST)
1437 status = mbedtls_test_transparent_aead_encrypt(
1440 nonce, nonce_length,
1441 additional_data, additional_data_length,
1442 plaintext, plaintext_length,
1443 ciphertext, ciphertext_size, ciphertext_length);
1455 nonce, nonce_length,
1456 additional_data, additional_data_length,
1457 plaintext, plaintext_length,
1458 ciphertext, ciphertext_size, ciphertext_length);
1471 const uint8_t *key_buffer,
size_t key_buffer_size,
1473 const uint8_t *nonce,
size_t nonce_length,
1474 const uint8_t *additional_data,
size_t additional_data_length,
1475 const uint8_t *ciphertext,
size_t ciphertext_length,
1476 uint8_t *plaintext,
size_t plaintext_size,
size_t *plaintext_length)
1487 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1488 #if defined(PSA_CRYPTO_DRIVER_TEST)
1489 status = mbedtls_test_transparent_aead_decrypt(
1492 nonce, nonce_length,
1493 additional_data, additional_data_length,
1494 ciphertext, ciphertext_length,
1495 plaintext, plaintext_size, plaintext_length);
1507 nonce, nonce_length,
1508 additional_data, additional_data_length,
1509 ciphertext, ciphertext_length,
1510 plaintext, plaintext_size, plaintext_length);
1528 size_t key_buffer_size,
1531 size_t input_length,
1544 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1545 #if defined(PSA_CRYPTO_DRIVER_TEST)
1546 status = mbedtls_test_transparent_mac_compute(
1547 attributes, key_buffer, key_buffer_size, alg,
1548 input, input_length,
1549 mac, mac_size, mac_length);
1556 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
1559 attributes, key_buffer, key_buffer_size, alg,
1560 input, input_length,
1561 mac, mac_size, mac_length);
1569 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1570 #if defined(PSA_CRYPTO_DRIVER_TEST)
1571 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
1572 status = mbedtls_test_opaque_mac_compute(
1573 attributes, key_buffer, key_buffer_size, alg,
1574 input, input_length,
1575 mac, mac_size, mac_length);
1582 (void) key_buffer_size;
1585 (void) input_length;
1598 size_t key_buffer_size,
1609 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1610 #if defined(PSA_CRYPTO_DRIVER_TEST)
1611 status = mbedtls_test_transparent_mac_sign_setup(
1612 &
operation->ctx.transparent_test_driver_ctx,
1614 key_buffer, key_buffer_size,
1618 operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
1626 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
1630 key_buffer, key_buffer_size,
1643 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1644 #if defined(PSA_CRYPTO_DRIVER_TEST)
1645 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
1646 status = mbedtls_test_opaque_mac_sign_setup(
1649 key_buffer, key_buffer_size,
1653 operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID;
1664 (void) key_buffer_size;
1674 size_t key_buffer_size,
1685 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1686 #if defined(PSA_CRYPTO_DRIVER_TEST)
1687 status = mbedtls_test_transparent_mac_verify_setup(
1688 &
operation->ctx.transparent_test_driver_ctx,
1690 key_buffer, key_buffer_size,
1694 operation->id = PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID;
1702 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
1706 key_buffer, key_buffer_size,
1719 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1720 #if defined(PSA_CRYPTO_DRIVER_TEST)
1721 case PSA_CRYPTO_TEST_DRIVER_LOCATION:
1722 status = mbedtls_test_opaque_mac_verify_setup(
1725 key_buffer, key_buffer_size,
1729 operation->id = PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID;
1740 (void) key_buffer_size;
1749 size_t input_length)
1752 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
1755 input, input_length);
1758 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1759 #if defined(PSA_CRYPTO_DRIVER_TEST)
1760 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1761 return mbedtls_test_transparent_mac_update(
1762 &
operation->ctx.transparent_test_driver_ctx,
1763 input, input_length);
1765 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1766 return mbedtls_test_opaque_mac_update(
1768 input, input_length);
1773 (void) input_length;
1785 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
1788 mac, mac_size, mac_length);
1791 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1792 #if defined(PSA_CRYPTO_DRIVER_TEST)
1793 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1794 return mbedtls_test_transparent_mac_sign_finish(
1795 &
operation->ctx.transparent_test_driver_ctx,
1796 mac, mac_size, mac_length);
1798 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1799 return mbedtls_test_opaque_mac_sign_finish(
1801 mac, mac_size, mac_length);
1818 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
1824 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1825 #if defined(PSA_CRYPTO_DRIVER_TEST)
1826 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1827 return mbedtls_test_transparent_mac_verify_finish(
1828 &
operation->ctx.transparent_test_driver_ctx,
1831 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1832 return mbedtls_test_opaque_mac_verify_finish(
1848 #if defined(MBEDTLS_PSA_BUILTIN_MAC)
1853 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
1854 #if defined(PSA_CRYPTO_DRIVER_TEST)
1855 case PSA_CRYPTO_TRANSPARENT_TEST_DRIVER_ID:
1856 return mbedtls_test_transparent_mac_abort(
1857 &
operation->ctx.transparent_test_driver_ctx);
1858 case PSA_CRYPTO_OPAQUE_TEST_DRIVER_ID:
1859 return mbedtls_test_opaque_mac_abort(
1860 &
operation->ctx.opaque_test_driver_ctx);
static const struct attribute attributes[]
static const char location[]
static psa_key_lifetime_t psa_get_key_lifetime(const psa_key_attributes_t *attributes)
Retrieve the lifetime from key attributes.
static mbedtls_svc_key_id_t psa_get_key_id(const psa_key_attributes_t *attributes)
Retrieve the key identifier from key attributes.
uint16_t psa_key_type_t
Encoding of a key type.
#define PSA_KEY_TYPE_IS_ASYMMETRIC(type)
Whether a key type is asymmetric: either a key pair or a public key.
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
int32_t psa_status_t
Function return status.
#define PSA_ERROR_CORRUPTION_DETECTED
A tampering attempt was detected.
#define PSA_ERROR_DOES_NOT_EXIST
Asking for an item that doesn't exist.
#define PSA_ERROR_NOT_SUPPORTED
The requested operation or a parameter is not supported by this implementation.
#define PSA_SUCCESS
The action was completed successfully.
#define PSA_ERROR_INVALID_ARGUMENT
The parameters passed to the function are invalid.
#define PSA_ERROR_BAD_STATE
The requested action cannot be performed in the current state.
#define PSA_KEY_LOCATION_LOCAL_STORAGE
The local storage area for persistent keys.
#define PSA_KEY_LIFETIME_GET_LOCATION(lifetime)
uint32_t psa_key_location_t
Encoding of key location indicators.
#define MBEDTLS_SVC_KEY_ID_GET_KEY_ID(id)
uint64_t psa_drv_slot_number_t
A slot number identifying a key in a driver.
uint64_t psa_key_slot_number_t
An internal designation of a key slot between the core part of the PSA Crypto implementation and the ...
#define psa_sign_hash_builtin
#define psa_import_key_into_slot
#define psa_verify_hash_builtin
#define psa_verify_message_builtin
#define psa_export_public_key_internal
#define psa_sign_message_builtin
#define psa_export_key_internal
#define psa_generate_key_internal
static SQLCHAR output[256]
psa_status_t mbedtls_psa_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)
Process an authenticated encryption operation.
psa_status_t mbedtls_psa_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)
Process an authenticated decryption operation.
psa_status_t mbedtls_psa_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)
Decrypt a message using a symmetric cipher.
psa_status_t mbedtls_psa_cipher_decrypt_setup(mbedtls_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)
Set the key for a multipart symmetric decryption operation.
psa_status_t mbedtls_psa_cipher_update(mbedtls_psa_cipher_operation_t *operation, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
Encrypt or decrypt a message fragment in an active cipher operation.
psa_status_t mbedtls_psa_cipher_encrypt_setup(mbedtls_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)
Set the key for a multipart symmetric encryption operation.
psa_status_t mbedtls_psa_cipher_abort(mbedtls_psa_cipher_operation_t *operation)
Abort a cipher operation.
psa_status_t mbedtls_psa_cipher_finish(mbedtls_psa_cipher_operation_t *operation, uint8_t *output, size_t output_size, size_t *output_length)
Finish encrypting or decrypting a message in a cipher operation.
psa_status_t mbedtls_psa_cipher_set_iv(mbedtls_psa_cipher_operation_t *operation, const uint8_t *iv, size_t iv_length)
Set the IV for a symmetric encryption or decryption operation.
psa_status_t mbedtls_psa_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)
Encrypt a message using a symmetric cipher.
#define PSA_CRYPTO_MBED_TLS_DRIVER_ID
psa_status_t psa_driver_wrapper_cipher_abort(psa_cipher_operation_t *operation)
psa_status_t psa_driver_wrapper_hash_abort(psa_hash_operation_t *operation)
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_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_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_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_setup(psa_hash_operation_t *operation, psa_algorithm_t alg)
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_hash_clone(const psa_hash_operation_t *source_operation, psa_hash_operation_t *target_operation)
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_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_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_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_init(void)
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_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)
void psa_driver_wrapper_free(void)
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_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_key_buffer_size(const psa_key_attributes_t *attributes, size_t *key_buffer_size)
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_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_update(psa_mac_operation_t *operation, const uint8_t *input, size_t input_length)
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_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_mac_abort(psa_mac_operation_t *operation)
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_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)
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_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_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_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_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 mbedtls_psa_hash_clone(const mbedtls_psa_hash_operation_t *source_operation, mbedtls_psa_hash_operation_t *target_operation)
Clone an Mbed TLS hash operation.
psa_status_t mbedtls_psa_hash_setup(mbedtls_psa_hash_operation_t *operation, psa_algorithm_t alg)
Set up a multipart hash operation using Mbed TLS routines.
psa_status_t mbedtls_psa_hash_finish(mbedtls_psa_hash_operation_t *operation, uint8_t *hash, size_t hash_size, size_t *hash_length)
Finish the calculation of the Mbed TLS-calculated hash of a message.
psa_status_t mbedtls_psa_hash_abort(mbedtls_psa_hash_operation_t *operation)
Abort an Mbed TLS hash operation.
psa_status_t mbedtls_psa_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)
Calculate the hash (digest) of a message using Mbed TLS routines.
psa_status_t mbedtls_psa_hash_update(mbedtls_psa_hash_operation_t *operation, const uint8_t *input, size_t input_length)
Add a message fragment to a multipart Mbed TLS hash operation.
psa_status_t mbedtls_psa_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)
Calculate the MAC (message authentication code) of a message using Mbed TLS.
psa_status_t mbedtls_psa_mac_verify_finish(mbedtls_psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_length)
Finish the calculation of the MAC of a message and compare it with an expected value using Mbed TLS.
psa_status_t mbedtls_psa_mac_update(mbedtls_psa_mac_operation_t *operation, const uint8_t *input, size_t input_length)
Add a message fragment to a multipart MAC operation using Mbed TLS.
psa_status_t mbedtls_psa_mac_verify_setup(mbedtls_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)
Set up a multipart MAC verification operation using Mbed TLS.
psa_status_t mbedtls_psa_mac_abort(mbedtls_psa_mac_operation_t *operation)
Abort a MAC operation using Mbed TLS.
psa_status_t mbedtls_psa_mac_sign_finish(mbedtls_psa_mac_operation_t *operation, uint8_t *mac, size_t mac_size, size_t *mac_length)
Finish the calculation of the MAC of a message using Mbed TLS.
psa_status_t mbedtls_psa_mac_sign_setup(mbedtls_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)
Set up a multipart MAC calculation operation using Mbed TLS.
psa_status_t psa_init_all_se_drivers(void)
Initialize all secure element drivers.
int psa_get_se_driver(psa_key_lifetime_t lifetime, const psa_drv_se_t **p_methods, psa_drv_se_context_t **p_drv_context)
Return the secure element driver information for a lifetime value.
void psa_unregister_all_se_drivers(void)
Unregister all secure element drivers.
psa_drv_se_asymmetric_verify_t p_verify
Function that performs an asymmetric verify operation.
psa_drv_se_asymmetric_sign_t p_sign
Function that performs an asymmetric sign operation.
Driver context structure.
psa_drv_se_export_key_t p_export
Function that performs a key export operation.
psa_drv_se_import_key_t p_import
Function that performs a key import operation.
psa_drv_se_generate_key_t p_generate
Function that performs a generation.
psa_drv_se_export_key_t p_export_public
Function that performs a public key export operation.
A structure containing pointers to all the entry points of a secure element driver.
const psa_drv_se_key_management_t * key_management
const psa_drv_se_asymmetric_t * asymmetric
psa_driver_hash_context_t ctx
unsigned int id
Unique ID indicating which driver got assigned to do the operation.
mbedtls_psa_hash_operation_t mbedtls_ctx