48 #ifndef PSA_CRYPTO_VALUES_H 49 #define PSA_CRYPTO_VALUES_H 54 #if (TFM_ENABLED == 0) || defined(TFM_BUILD) 55 #ifndef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER 56 #define MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER 88 #define PSA_SUCCESS ((psa_status_t)0) 92 #define PSA_OPERATION_COMPLETE ((psa_status_t)1) 99 #define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) 108 #define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) 121 #define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) 133 #define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) 139 #define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) 145 #define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) 161 #define PSA_ERROR_BAD_STATE ((psa_status_t)-137) 172 #define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) 178 #define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) 187 #define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) 204 #define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) 229 #define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) 235 #define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) 266 #define PSA_ERROR_CORRUPTION_DETECTED ((psa_status_t)-151) 285 #define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)-148) 295 #define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) 311 #define PSA_ERROR_INVALID_PADDING ((psa_status_t)-150) 315 #define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) 319 #define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) 343 #define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) 359 #define PSA_ERROR_DATA_INVALID ((psa_status_t)-153) 370 #define PSA_ERROR_KEY_IN_USE ((psa_status_t)-154) 381 #define PSA_ERROR_HUK_NOT_PROVISIONED ((psa_status_t)-155) 389 #define PSA_ERROR_ASSET_STORE_FULL ((psa_status_t)-158) 396 #define PSA_OPERATION_INCOMPLETE ((psa_status_t)-248) 416 #define PSA_KEY_TYPE_NONE ((psa_key_type_t) 0x0000) 425 #define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t) 0x8000) 427 #define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t) 0x7000) 428 #define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t) 0x1000) 429 #define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t) 0x2000) 430 #define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t) 0x4000) 431 #define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t) 0x7000) 433 #define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t) 0x3000) 439 #define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ 440 (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) 446 #define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ 447 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_RAW || \ 448 ((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC) 451 #define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ 452 (((type) & PSA_KEY_TYPE_CATEGORY_MASK \ 453 & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \ 454 PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) 456 #define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ 457 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) 460 #define PSA_KEY_TYPE_IS_KEY_PAIR(type) \ 461 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR) 472 #define PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY(type) \ 473 ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) 484 #define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) \ 485 ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) 491 #define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t) 0x1001) 501 #define PSA_KEY_TYPE_HMAC ((psa_key_type_t) 0x1100) 514 #define PSA_KEY_TYPE_DERIVE ((psa_key_type_t) 0x1200) 537 #define PSA_KEY_TYPE_PASSWORD ((psa_key_type_t) 0x1203) 545 #define PSA_KEY_TYPE_PASSWORD_HASH ((psa_key_type_t) 0x1205) 552 #define PSA_KEY_TYPE_PEPPER ((psa_key_type_t) 0x1206) 559 #define PSA_KEY_TYPE_AES ((psa_key_type_t) 0x2400) 563 #define PSA_KEY_TYPE_ARIA ((psa_key_type_t) 0x2406) 574 #define PSA_KEY_TYPE_DES ((psa_key_type_t) 0x2301) 578 #define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t) 0x2403) 591 #define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t) 0x2004) 597 #define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t) 0x4001) 602 #define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t) 0x7001) 604 #define PSA_KEY_TYPE_IS_RSA(type) \ 605 (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) 607 #define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t) 0x4100) 608 #define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t) 0x7100) 609 #define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t) 0x00ff) 619 #define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \ 620 (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve)) 630 #define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ 631 (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) 634 #define PSA_KEY_TYPE_IS_ECC(type) \ 635 ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ 636 ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) 638 #define PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type) \ 639 (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ 640 PSA_KEY_TYPE_ECC_KEY_PAIR_BASE) 642 #define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ 643 (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ 644 PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) 647 #define PSA_KEY_TYPE_ECC_GET_FAMILY(type) \ 648 ((psa_ecc_family_t) (PSA_KEY_TYPE_IS_ECC(type) ? \ 649 ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ 653 #define PSA_ECC_FAMILY_IS_WEIERSTRASS(family) ((family & 0xc0) == 0) 663 #define PSA_ECC_FAMILY_SECP_K1 ((psa_ecc_family_t) 0x17) 673 #define PSA_ECC_FAMILY_SECP_R1 ((psa_ecc_family_t) 0x12) 675 #define PSA_ECC_FAMILY_SECP_R2 ((psa_ecc_family_t) 0x1b) 685 #define PSA_ECC_FAMILY_SECT_K1 ((psa_ecc_family_t) 0x27) 695 #define PSA_ECC_FAMILY_SECT_R1 ((psa_ecc_family_t) 0x22) 705 #define PSA_ECC_FAMILY_SECT_R2 ((psa_ecc_family_t) 0x2b) 714 #define PSA_ECC_FAMILY_BRAINPOOL_P_R1 ((psa_ecc_family_t) 0x30) 726 #define PSA_ECC_FAMILY_MONTGOMERY ((psa_ecc_family_t) 0x41) 742 #define PSA_ECC_FAMILY_TWISTED_EDWARDS ((psa_ecc_family_t) 0x42) 744 #define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t) 0x4200) 745 #define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t) 0x7200) 746 #define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t) 0x00ff) 752 #define PSA_KEY_TYPE_DH_KEY_PAIR(group) \ 753 (PSA_KEY_TYPE_DH_KEY_PAIR_BASE | (group)) 759 #define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \ 760 (PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE | (group)) 763 #define PSA_KEY_TYPE_IS_DH(type) \ 764 ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ 765 ~PSA_KEY_TYPE_DH_GROUP_MASK) == PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) 767 #define PSA_KEY_TYPE_IS_DH_KEY_PAIR(type) \ 768 (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ 769 PSA_KEY_TYPE_DH_KEY_PAIR_BASE) 771 #define PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type) \ 772 (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ 773 PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) 776 #define PSA_KEY_TYPE_DH_GET_FAMILY(type) \ 777 ((psa_dh_family_t) (PSA_KEY_TYPE_IS_DH(type) ? \ 778 ((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \ 787 #define PSA_DH_FAMILY_RFC7919 ((psa_dh_family_t) 0x03) 789 #define PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) \ 809 #define PSA_BLOCK_CIPHER_BLOCK_LENGTH(type) \ 810 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \ 811 1u << PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) : \ 826 #define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t) 0x80000000) 828 #define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t) 0x7f000000) 829 #define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t) 0x02000000) 830 #define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t) 0x03000000) 831 #define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t) 0x04000000) 832 #define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t) 0x05000000) 833 #define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t) 0x06000000) 834 #define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t) 0x07000000) 835 #define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t) 0x08000000) 836 #define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t) 0x09000000) 842 #define PSA_ALG_IS_VENDOR_DEFINED(alg) \ 843 (((alg) & PSA_ALG_VENDOR_FLAG) != 0) 853 #define PSA_ALG_IS_HASH(alg) \ 854 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) 864 #define PSA_ALG_IS_MAC(alg) \ 865 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) 875 #define PSA_ALG_IS_CIPHER(alg) \ 876 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) 887 #define PSA_ALG_IS_AEAD(alg) \ 888 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) 899 #define PSA_ALG_IS_SIGN(alg) \ 900 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) 911 #define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \ 912 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) 922 #define PSA_ALG_IS_KEY_AGREEMENT(alg) \ 923 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT) 933 #define PSA_ALG_IS_KEY_DERIVATION(alg) \ 934 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) 950 #define PSA_ALG_IS_KEY_DERIVATION_STRETCHING(alg) \ 951 (PSA_ALG_IS_KEY_DERIVATION(alg) && \ 952 (alg) & PSA_ALG_KEY_DERIVATION_STRETCHING_FLAG) 956 #define PSA_ALG_NONE ((psa_algorithm_t)0) 959 #define PSA_ALG_HASH_MASK ((psa_algorithm_t) 0x000000ff) 961 #define PSA_ALG_MD5 ((psa_algorithm_t) 0x02000003) 963 #define PSA_ALG_RIPEMD160 ((psa_algorithm_t) 0x02000004) 965 #define PSA_ALG_SHA_1 ((psa_algorithm_t) 0x02000005) 967 #define PSA_ALG_SHA_224 ((psa_algorithm_t) 0x02000008) 969 #define PSA_ALG_SHA_256 ((psa_algorithm_t) 0x02000009) 971 #define PSA_ALG_SHA_384 ((psa_algorithm_t) 0x0200000a) 973 #define PSA_ALG_SHA_512 ((psa_algorithm_t) 0x0200000b) 975 #define PSA_ALG_SHA_512_224 ((psa_algorithm_t) 0x0200000c) 977 #define PSA_ALG_SHA_512_256 ((psa_algorithm_t) 0x0200000d) 979 #define PSA_ALG_SHA3_224 ((psa_algorithm_t) 0x02000010) 981 #define PSA_ALG_SHA3_256 ((psa_algorithm_t) 0x02000011) 983 #define PSA_ALG_SHA3_384 ((psa_algorithm_t) 0x02000012) 985 #define PSA_ALG_SHA3_512 ((psa_algorithm_t) 0x02000013) 992 #define PSA_ALG_SHAKE256_512 ((psa_algorithm_t) 0x02000015) 1027 #define PSA_ALG_ANY_HASH ((psa_algorithm_t) 0x020000ff) 1029 #define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t) 0x00c00000) 1030 #define PSA_ALG_HMAC_BASE ((psa_algorithm_t) 0x03800000) 1042 #define PSA_ALG_HMAC(hash_alg) \ 1043 (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1045 #define PSA_ALG_HMAC_GET_HASH(hmac_alg) \ 1046 (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) 1058 #define PSA_ALG_IS_HMAC(alg) \ 1059 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ 1069 #define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t) 0x003f0000) 1070 #define PSA_MAC_TRUNCATION_OFFSET 16 1078 #define PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t) 0x00008000) 1113 #define PSA_ALG_TRUNCATED_MAC(mac_alg, mac_length) \ 1114 (((mac_alg) & ~(PSA_ALG_MAC_TRUNCATION_MASK | \ 1115 PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG)) | \ 1116 ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK)) 1130 #define PSA_ALG_FULL_LENGTH_MAC(mac_alg) \ 1131 ((mac_alg) & ~(PSA_ALG_MAC_TRUNCATION_MASK | \ 1132 PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG)) 1145 #define PSA_MAC_TRUNCATED_LENGTH(mac_alg) \ 1146 (((mac_alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET) 1172 #define PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(mac_alg, min_mac_length) \ 1173 (PSA_ALG_TRUNCATED_MAC(mac_alg, min_mac_length) | \ 1174 PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG) 1176 #define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t) 0x03c00000) 1182 #define PSA_ALG_CBC_MAC ((psa_algorithm_t) 0x03c00100) 1184 #define PSA_ALG_CMAC ((psa_algorithm_t) 0x03c00200) 1194 #define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \ 1195 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ 1196 PSA_ALG_CIPHER_MAC_BASE) 1198 #define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t) 0x00800000) 1199 #define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t) 0x00400000) 1213 #define PSA_ALG_IS_STREAM_CIPHER(alg) \ 1214 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \ 1215 (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG)) 1222 #define PSA_ALG_STREAM_CIPHER ((psa_algorithm_t) 0x04800100) 1231 #define PSA_ALG_CTR ((psa_algorithm_t) 0x04c01000) 1237 #define PSA_ALG_CFB ((psa_algorithm_t) 0x04c01100) 1243 #define PSA_ALG_OFB ((psa_algorithm_t) 0x04c01200) 1251 #define PSA_ALG_XTS ((psa_algorithm_t) 0x0440ff00) 1271 #define PSA_ALG_ECB_NO_PADDING ((psa_algorithm_t) 0x04404400) 1280 #define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t) 0x04404000) 1288 #define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t) 0x04404100) 1290 #define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t) 0x00400000) 1301 #define PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) \ 1302 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) == \ 1303 (PSA_ALG_CATEGORY_AEAD | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) 1309 #define PSA_ALG_CCM ((psa_algorithm_t) 0x05500100) 1320 #define PSA_ALG_CCM_STAR_NO_TAG ((psa_algorithm_t) 0x04c01300) 1326 #define PSA_ALG_GCM ((psa_algorithm_t) 0x05500200) 1337 #define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t) 0x05100500) 1343 #define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t) 0x003f0000) 1344 #define PSA_AEAD_TAG_LENGTH_OFFSET 16 1352 #define PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t) 0x00008000) 1372 #define PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, tag_length) \ 1373 (((aead_alg) & ~(PSA_ALG_AEAD_TAG_LENGTH_MASK | \ 1374 PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG)) | \ 1375 ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \ 1376 PSA_ALG_AEAD_TAG_LENGTH_MASK)) 1388 #define PSA_ALG_AEAD_GET_TAG_LENGTH(aead_alg) \ 1389 (((aead_alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> \ 1390 PSA_AEAD_TAG_LENGTH_OFFSET) 1400 #define PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg) \ 1402 PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_CCM) \ 1403 PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_GCM) \ 1404 PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_CHACHA20_POLY1305) \ 1406 #define PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, ref) \ 1407 PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, 0) == \ 1408 PSA_ALG_AEAD_WITH_SHORTENED_TAG(ref, 0) ? \ 1435 #define PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG(aead_alg, min_tag_length) \ 1436 (PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, min_tag_length) | \ 1437 PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG) 1439 #define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t) 0x06000200) 1455 #define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \ 1456 (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1463 #define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE 1464 #define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \ 1465 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) 1467 #define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t) 0x06000300) 1468 #define PSA_ALG_RSA_PSS_ANY_SALT_BASE ((psa_algorithm_t) 0x06001300) 1489 #define PSA_ALG_RSA_PSS(hash_alg) \ 1490 (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1507 #define PSA_ALG_RSA_PSS_ANY_SALT(hash_alg) \ 1508 (PSA_ALG_RSA_PSS_ANY_SALT_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1521 #define PSA_ALG_IS_RSA_PSS_STANDARD_SALT(alg) \ 1522 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) 1535 #define PSA_ALG_IS_RSA_PSS_ANY_SALT(alg) \ 1536 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_ANY_SALT_BASE) 1553 #define PSA_ALG_IS_RSA_PSS(alg) \ 1554 (PSA_ALG_IS_RSA_PSS_STANDARD_SALT(alg) || \ 1555 PSA_ALG_IS_RSA_PSS_ANY_SALT(alg)) 1557 #define PSA_ALG_ECDSA_BASE ((psa_algorithm_t) 0x06000600) 1578 #define PSA_ALG_ECDSA(hash_alg) \ 1579 (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1589 #define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE 1590 #define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t) 0x06000700) 1613 #define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ 1614 (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1615 #define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t) 0x00000100) 1616 #define PSA_ALG_IS_ECDSA(alg) \ 1617 (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \ 1619 #define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ 1620 (((alg) & PSA_ALG_ECDSA_DETERMINISTIC_FLAG) != 0) 1621 #define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ 1622 (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) 1623 #define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ 1624 (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) 1654 #define PSA_ALG_PURE_EDDSA ((psa_algorithm_t) 0x06000800) 1656 #define PSA_ALG_HASH_EDDSA_BASE ((psa_algorithm_t) 0x06000900) 1657 #define PSA_ALG_IS_HASH_EDDSA(alg) \ 1658 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HASH_EDDSA_BASE) 1681 #define PSA_ALG_ED25519PH \ 1682 (PSA_ALG_HASH_EDDSA_BASE | (PSA_ALG_SHA_512 & PSA_ALG_HASH_MASK)) 1706 #define PSA_ALG_ED448PH \ 1707 (PSA_ALG_HASH_EDDSA_BASE | (PSA_ALG_SHAKE256_512 & PSA_ALG_HASH_MASK)) 1712 #define PSA_ALG_IS_VENDOR_HASH_AND_SIGN(alg) 0 1731 #define PSA_ALG_IS_SIGN_HASH(alg) \ 1732 (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ 1733 PSA_ALG_IS_ECDSA(alg) || PSA_ALG_IS_HASH_EDDSA(alg) || \ 1734 PSA_ALG_IS_VENDOR_HASH_AND_SIGN(alg)) 1747 #define PSA_ALG_IS_SIGN_MESSAGE(alg) \ 1748 (PSA_ALG_IS_SIGN_HASH(alg) || (alg) == PSA_ALG_PURE_EDDSA) 1776 #define PSA_ALG_IS_HASH_AND_SIGN(alg) \ 1777 (PSA_ALG_IS_SIGN_HASH(alg) && \ 1778 ((alg) & PSA_ALG_HASH_MASK) != 0) 1798 #define PSA_ALG_SIGN_GET_HASH(alg) \ 1799 (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ 1800 ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ 1805 #define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t) 0x07000200) 1807 #define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t) 0x07000300) 1822 #define PSA_ALG_RSA_OAEP(hash_alg) \ 1823 (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1824 #define PSA_ALG_IS_RSA_OAEP(alg) \ 1825 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) 1826 #define PSA_ALG_RSA_OAEP_GET_HASH(alg) \ 1827 (PSA_ALG_IS_RSA_OAEP(alg) ? \ 1828 ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ 1831 #define PSA_ALG_HKDF_BASE ((psa_algorithm_t) 0x08000100) 1858 #define PSA_ALG_HKDF(hash_alg) \ 1859 (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1871 #define PSA_ALG_IS_HKDF(alg) \ 1872 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) 1873 #define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \ 1874 (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) 1876 #define PSA_ALG_HKDF_EXTRACT_BASE ((psa_algorithm_t) 0x08000400) 1909 #define PSA_ALG_HKDF_EXTRACT(hash_alg) \ 1910 (PSA_ALG_HKDF_EXTRACT_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1922 #define PSA_ALG_IS_HKDF_EXTRACT(alg) \ 1923 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_EXTRACT_BASE) 1925 #define PSA_ALG_HKDF_EXPAND_BASE ((psa_algorithm_t) 0x08000500) 1951 #define PSA_ALG_HKDF_EXPAND(hash_alg) \ 1952 (PSA_ALG_HKDF_EXPAND_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1964 #define PSA_ALG_IS_HKDF_EXPAND(alg) \ 1965 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_EXPAND_BASE) 1977 #define PSA_ALG_IS_ANY_HKDF(alg) \ 1978 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE || \ 1979 ((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_EXTRACT_BASE || \ 1980 ((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_EXPAND_BASE) 1982 #define PSA_ALG_SP800_108_COUNTER_MAC_BASE ((psa_algorithm_t)0x08000400U) 2004 #define PSA_ALG_SP800_108_COUNTER_CMAC \ 2005 (PSA_ALG_SP800_108_COUNTER_MAC_BASE | (0x01)) 2021 #define PSA_ALG_SP800_108_COUNTER_HMAC(hash_alg) \ 2022 (PSA_ALG_SP800_108_COUNTER_MAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 2032 #define PSA_ALG_IS_SP800_108_COUNTER_MAC(alg) \ 2033 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_SP800_108_COUNTER_MAC_BASE) 2035 #define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t) 0x08000200) 2062 #define PSA_ALG_TLS12_PRF(hash_alg) \ 2063 (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 2073 #define PSA_ALG_IS_TLS12_PRF(alg) \ 2074 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE) 2075 #define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \ 2076 (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) 2078 #define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t) 0x08000300) 2132 #define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \ 2133 (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 2143 #define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \ 2144 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE) 2145 #define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \ 2146 (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) 2160 #define PSA_ALG_TLS12_ECJPAKE_TO_PMS ((psa_algorithm_t) 0x08000609) 2169 #define PSA_ALG_KEY_DERIVATION_STRETCHING_FLAG ((psa_algorithm_t) 0x00800000) 2171 #define PSA_ALG_PBKDF2_HMAC_BASE ((psa_algorithm_t) 0x08800100) 2198 #define PSA_ALG_PBKDF2_HMAC(hash_alg) \ 2199 (PSA_ALG_PBKDF2_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 2209 #define PSA_ALG_IS_PBKDF2_HMAC(alg) \ 2210 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_PBKDF2_HMAC_BASE) 2211 #define PSA_ALG_PBKDF2_HMAC_GET_HASH(pbkdf2_alg) \ 2212 (PSA_ALG_CATEGORY_HASH | ((pbkdf2_alg) & PSA_ALG_HASH_MASK)) 2222 #define PSA_ALG_PBKDF2_AES_CMAC_PRF_128 ((psa_algorithm_t) 0x08800200) 2224 #define PSA_ALG_IS_PBKDF2(kdf_alg) \ 2225 (PSA_ALG_IS_PBKDF2_HMAC(kdf_alg) || \ 2226 ((kdf_alg) == PSA_ALG_PBKDF2_AES_CMAC_PRF_128)) 2228 #define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t) 0xfe00ffff) 2229 #define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t) 0xffff0000) 2245 #define PSA_ALG_KEY_AGREEMENT(ka_alg, kdf_alg) \ 2246 ((ka_alg) | (kdf_alg)) 2248 #define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \ 2249 (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION) 2251 #define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \ 2252 (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT) 2268 #define PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) \ 2269 (PSA_ALG_IS_KEY_AGREEMENT(alg) && \ 2270 PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION) 2272 #define PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT(alg) \ 2273 ((PSA_ALG_IS_KEY_DERIVATION(alg) || PSA_ALG_IS_KEY_AGREEMENT(alg))) 2282 #define PSA_ALG_FFDH ((psa_algorithm_t) 0x09010000) 2296 #define PSA_ALG_IS_FFDH(alg) \ 2297 (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH) 2324 #define PSA_ALG_ECDH ((psa_algorithm_t) 0x09020000) 2340 #define PSA_ALG_IS_ECDH(alg) \ 2341 (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH) 2356 #define PSA_ALG_IS_WILDCARD(alg) \ 2357 (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ 2358 PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \ 2359 PSA_ALG_IS_MAC(alg) ? \ 2360 (alg & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG) != 0 : \ 2361 PSA_ALG_IS_AEAD(alg) ? \ 2362 (alg & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG) != 0 : \ 2363 (alg) == PSA_ALG_ANY_HASH) 2374 #define PSA_ALG_GET_HASH(alg) \ 2375 (((alg) & 0x000000ff) == 0 ? ((psa_algorithm_t) 0) : 0x02000000 | ((alg) & 0x000000ff)) 2399 #define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t) 0x00000000) 2413 #define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t) 0x00000001) 2419 #define PSA_KEY_PERSISTENCE_VOLATILE ((psa_key_persistence_t) 0x00) 2425 #define PSA_KEY_PERSISTENCE_DEFAULT ((psa_key_persistence_t) 0x01) 2435 #define PSA_KEY_PERSISTENCE_HSM_ASSET_STORE ((psa_key_persistence_t) 0x80) 2441 #define PSA_KEY_PERSISTENCE_READ_ONLY ((psa_key_persistence_t) 0xff) 2443 #define PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) \ 2444 ((psa_key_persistence_t) ((lifetime) & 0x000000ff)) 2446 #define PSA_KEY_LIFETIME_GET_LOCATION(lifetime) \ 2447 ((psa_key_location_t) ((lifetime) >> 8)) 2465 #define PSA_KEY_LIFETIME_IS_VOLATILE(lifetime) \ 2466 (PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \ 2467 PSA_KEY_PERSISTENCE_VOLATILE) 2486 #define PSA_KEY_LIFETIME_IS_READ_ONLY(lifetime) \ 2487 (PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \ 2488 PSA_KEY_PERSISTENCE_READ_ONLY) 2499 #define PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(persistence, location) \ 2500 ((location) << 8 | (persistence)) 2509 #define PSA_KEY_LOCATION_LOCAL_STORAGE ((psa_key_location_t) 0x000000) 2521 #define PSA_KEY_LOCATION_HSM_ASSET_STORE ((psa_key_location_t) 0x000001) 2523 #define PSA_KEY_LOCATION_VENDOR_FLAG ((psa_key_location_t) 0x800000) 2533 #define PSA_KEY_ID_NULL ((psa_key_id_t)0) 2537 #define PSA_KEY_ID_USER_MIN ((psa_key_id_t) 0x00000001) 2540 #define PSA_KEY_ID_USER_MAX ((psa_key_id_t) 0x3fffffff) 2543 #define PSA_KEY_ID_VENDOR_MIN ((psa_key_id_t) 0x40000000) 2546 #define PSA_KEY_ID_VENDOR_MAX ((psa_key_id_t) 0x7fffffff) 2549 #define PSA_KEY_ID_HSM_HUK ((psa_key_id_t)(PSA_KEY_ID_USER_MAX)) 2552 #define PSA_KEY_ID_HSM_TKDK ((psa_key_id_t)(PSA_KEY_ID_USER_MAX - 1)) 2556 #define PSA_KEY_ID_IAK ((psa_key_id_t) 0x7fff815d) 2558 #if !defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) 2560 #define MBEDTLS_SVC_KEY_ID_INIT ((psa_key_id_t) 0) 2561 #define MBEDTLS_SVC_KEY_ID_GET_KEY_ID(id) (id) 2562 #define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID(id) (0) 2603 #define MBEDTLS_SVC_KEY_ID_INIT ((mbedtls_svc_key_id_t){ 0, 0 }) 2604 #define MBEDTLS_SVC_KEY_ID_GET_KEY_ID(id) (id.key_id) 2605 #define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID(id) (id.owner) 2616 .owner = owner_id };
2668 #define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t) 0x00000001) 2684 #define PSA_KEY_USAGE_COPY ((psa_key_usage_t) 0x00000002) 2695 #define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t) 0x00000100) 2706 #define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t) 0x00000200) 2716 #define PSA_KEY_USAGE_SIGN_MESSAGE ((psa_key_usage_t) 0x00000400) 2726 #define PSA_KEY_USAGE_VERIFY_MESSAGE ((psa_key_usage_t) 0x00000800) 2736 #define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t) 0x00001000) 2746 #define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t) 0x00002000) 2760 #define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t) 0x00004000) 2775 #define PSA_KEY_USAGE_VERIFY_DERIVATION ((psa_key_usage_t) 0x00008000) 2801 #define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t) 0x0101) 2819 #define PSA_KEY_DERIVATION_INPUT_PASSWORD ((psa_key_derivation_step_t) 0x0102) 2828 #define PSA_KEY_DERIVATION_INPUT_OTHER_SECRET \ 2829 ((psa_key_derivation_step_t) 0x0103) 2836 #define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t) 0x0201) 2844 #define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t) 0x0202) 2851 #define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t) 0x0203) 2858 #define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t) 0x0204) 2864 #define PSA_KEY_DERIVATION_INPUT_COST ((psa_key_derivation_step_t) 0x0205) 2871 #define PSA_KEY_DERIVATION_INPUT_CONTEXT ((psa_key_derivation_step_t)0x0206U) 2892 #define MBEDTLS_PSA_ALG_AEAD_EQUAL(aead_alg_1, aead_alg_2) \ 2893 (!(((aead_alg_1) ^ (aead_alg_2)) & \ 2894 ~(PSA_ALG_AEAD_TAG_LENGTH_MASK | PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG))) 2908 #define PSA_INTERRUPTIBLE_MAX_OPS_UNLIMITED UINT32_MAX psa_key_id_t key_id
Definition: crypto_types.h:355
uint32_t psa_key_id_t
Definition: crypto_types.h:298
static int mbedtls_key_owner_id_equal(mbedtls_key_owner_id_t id1, mbedtls_key_owner_id_t id2)
Definition: crypto_types.h:342
Definition: crypto_types.h:353
static mbedtls_svc_key_id_t mbedtls_svc_key_id_make(mbedtls_key_owner_id_t owner_id, psa_key_id_t key_id)
Definition: crypto_values.h:2612
static int mbedtls_svc_key_id_equal(mbedtls_svc_key_id_t id1, mbedtls_svc_key_id_t id2)
Definition: crypto_values.h:2626
mbedtls_key_owner_id_t owner
Definition: crypto_types.h:356
static int mbedtls_svc_key_id_is_null(mbedtls_svc_key_id_t key)
Definition: crypto_values.h:2639
int32_t mbedtls_key_owner_id_t
Definition: crypto_types.h:333