39 #ifndef PSA_CRYPTO_VALUES_H 40 #define PSA_CRYPTO_VALUES_H 61 #define PSA_SUCCESS ((psa_status_t)0) 68 #define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) 77 #define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) 90 #define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) 102 #define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) 108 #define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) 114 #define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) 130 #define PSA_ERROR_BAD_STATE ((psa_status_t)-137) 141 #define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) 147 #define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) 156 #define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) 173 #define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) 198 #define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) 204 #define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) 235 #define PSA_ERROR_CORRUPTION_DETECTED ((psa_status_t)-151) 254 #define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)-148) 264 #define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) 280 #define PSA_ERROR_INVALID_PADDING ((psa_status_t)-150) 284 #define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) 288 #define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) 312 #define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) 328 #define PSA_ERROR_DATA_INVALID ((psa_status_t)-153) 346 #define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x0000) 355 #define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x8000) 357 #define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x7000) 358 #define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x1000) 359 #define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x2000) 360 #define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x4000) 361 #define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x7000) 363 #define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x3000) 369 #define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ 370 (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) 376 #define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ 377 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_RAW || \ 378 ((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC) 381 #define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ 382 (((type) & PSA_KEY_TYPE_CATEGORY_MASK \ 383 & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \ 384 PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) 386 #define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ 387 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) 390 #define PSA_KEY_TYPE_IS_KEY_PAIR(type) \ 391 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR) 402 #define PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY(type) \ 403 ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) 414 #define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) \ 415 ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) 421 #define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x1001) 431 #define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x1100) 438 #define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x1200) 445 #define PSA_KEY_TYPE_AES ((psa_key_type_t)0x2400) 449 #define PSA_KEY_TYPE_ARIA ((psa_key_type_t)0x2406) 460 #define PSA_KEY_TYPE_DES ((psa_key_type_t)0x2301) 464 #define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x2403) 470 #define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x2002) 479 #define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x2004) 485 #define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x4001) 490 #define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x7001) 492 #define PSA_KEY_TYPE_IS_RSA(type) \ 493 (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) 495 #define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x4100) 496 #define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x7100) 497 #define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x00ff) 507 #define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \ 508 (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve)) 518 #define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ 519 (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) 522 #define PSA_KEY_TYPE_IS_ECC(type) \ 523 ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ 524 ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) 526 #define PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type) \ 527 (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ 528 PSA_KEY_TYPE_ECC_KEY_PAIR_BASE) 530 #define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ 531 (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ 532 PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) 535 #define PSA_KEY_TYPE_ECC_GET_FAMILY(type) \ 536 ((psa_ecc_family_t) (PSA_KEY_TYPE_IS_ECC(type) ? \ 537 ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ 548 #define PSA_ECC_FAMILY_SECP_K1 ((psa_ecc_family_t) 0x17) 558 #define PSA_ECC_FAMILY_SECP_R1 ((psa_ecc_family_t) 0x12) 560 #define PSA_ECC_FAMILY_SECP_R2 ((psa_ecc_family_t) 0x1b) 570 #define PSA_ECC_FAMILY_SECT_K1 ((psa_ecc_family_t) 0x27) 580 #define PSA_ECC_FAMILY_SECT_R1 ((psa_ecc_family_t) 0x22) 590 #define PSA_ECC_FAMILY_SECT_R2 ((psa_ecc_family_t) 0x2b) 599 #define PSA_ECC_FAMILY_BRAINPOOL_P_R1 ((psa_ecc_family_t) 0x30) 611 #define PSA_ECC_FAMILY_MONTGOMERY ((psa_ecc_family_t) 0x41) 627 #define PSA_ECC_FAMILY_TWISTED_EDWARDS ((psa_ecc_family_t) 0x42) 629 #define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x4200) 630 #define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x7200) 631 #define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x00ff) 637 #define PSA_KEY_TYPE_DH_KEY_PAIR(group) \ 638 (PSA_KEY_TYPE_DH_KEY_PAIR_BASE | (group)) 644 #define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \ 645 (PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE | (group)) 648 #define PSA_KEY_TYPE_IS_DH(type) \ 649 ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ 650 ~PSA_KEY_TYPE_DH_GROUP_MASK) == PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) 652 #define PSA_KEY_TYPE_IS_DH_KEY_PAIR(type) \ 653 (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ 654 PSA_KEY_TYPE_DH_KEY_PAIR_BASE) 656 #define PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type) \ 657 (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ 658 PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) 661 #define PSA_KEY_TYPE_DH_GET_FAMILY(type) \ 662 ((psa_dh_family_t) (PSA_KEY_TYPE_IS_DH(type) ? \ 663 ((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \ 672 #define PSA_DH_FAMILY_RFC7919 ((psa_dh_family_t) 0x03) 674 #define PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) \ 694 #define PSA_BLOCK_CIPHER_BLOCK_LENGTH(type) \ 695 (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \ 696 1u << PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) : \ 711 #define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) 713 #define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) 714 #define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x02000000) 715 #define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x03000000) 716 #define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000) 717 #define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x05000000) 718 #define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x06000000) 719 #define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x07000000) 720 #define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x08000000) 721 #define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x09000000) 727 #define PSA_ALG_IS_VENDOR_DEFINED(alg) \ 728 (((alg) & PSA_ALG_VENDOR_FLAG) != 0) 738 #define PSA_ALG_IS_HASH(alg) \ 739 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) 749 #define PSA_ALG_IS_MAC(alg) \ 750 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) 760 #define PSA_ALG_IS_CIPHER(alg) \ 761 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) 772 #define PSA_ALG_IS_AEAD(alg) \ 773 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) 784 #define PSA_ALG_IS_SIGN(alg) \ 785 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) 796 #define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \ 797 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) 807 #define PSA_ALG_IS_KEY_AGREEMENT(alg) \ 808 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT) 818 #define PSA_ALG_IS_KEY_DERIVATION(alg) \ 819 (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) 822 #define PSA_ALG_NONE ((psa_algorithm_t)0) 824 #define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) 826 #define PSA_ALG_MD2 ((psa_algorithm_t)0x02000001) 828 #define PSA_ALG_MD4 ((psa_algorithm_t)0x02000002) 830 #define PSA_ALG_MD5 ((psa_algorithm_t)0x02000003) 832 #define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x02000004) 834 #define PSA_ALG_SHA_1 ((psa_algorithm_t)0x02000005) 836 #define PSA_ALG_SHA_224 ((psa_algorithm_t)0x02000008) 838 #define PSA_ALG_SHA_256 ((psa_algorithm_t)0x02000009) 840 #define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0200000a) 842 #define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0200000b) 844 #define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0200000c) 846 #define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0200000d) 848 #define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x02000010) 850 #define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x02000011) 852 #define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x02000012) 854 #define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x02000013) 861 #define PSA_ALG_SHAKE256_512 ((psa_algorithm_t)0x02000015) 896 #define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x020000ff) 898 #define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) 899 #define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x03800000) 911 #define PSA_ALG_HMAC(hash_alg) \ 912 (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 914 #define PSA_ALG_HMAC_GET_HASH(hmac_alg) \ 915 (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) 927 #define PSA_ALG_IS_HMAC(alg) \ 928 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ 938 #define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x003f0000) 939 #define PSA_MAC_TRUNCATION_OFFSET 16 947 #define PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t)0x00008000) 982 #define PSA_ALG_TRUNCATED_MAC(mac_alg, mac_length) \ 983 (((mac_alg) & ~(PSA_ALG_MAC_TRUNCATION_MASK | \ 984 PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG)) | \ 985 ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK)) 999 #define PSA_ALG_FULL_LENGTH_MAC(mac_alg) \ 1000 ((mac_alg) & ~(PSA_ALG_MAC_TRUNCATION_MASK | \ 1001 PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG)) 1014 #define PSA_MAC_TRUNCATED_LENGTH(mac_alg) \ 1015 (((mac_alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET) 1041 #define PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(mac_alg, min_mac_length) \ 1042 ( PSA_ALG_TRUNCATED_MAC(mac_alg, min_mac_length) | \ 1043 PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ) 1045 #define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x03c00000) 1051 #define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x03c00100) 1053 #define PSA_ALG_CMAC ((psa_algorithm_t)0x03c00200) 1063 #define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \ 1064 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ 1065 PSA_ALG_CIPHER_MAC_BASE) 1067 #define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000) 1068 #define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) 1082 #define PSA_ALG_IS_STREAM_CIPHER(alg) \ 1083 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \ 1084 (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG)) 1092 #define PSA_ALG_STREAM_CIPHER ((psa_algorithm_t)0x04800100) 1101 #define PSA_ALG_CTR ((psa_algorithm_t)0x04c01000) 1107 #define PSA_ALG_CFB ((psa_algorithm_t)0x04c01100) 1113 #define PSA_ALG_OFB ((psa_algorithm_t)0x04c01200) 1121 #define PSA_ALG_XTS ((psa_algorithm_t)0x0440ff00) 1141 #define PSA_ALG_ECB_NO_PADDING ((psa_algorithm_t)0x04404400) 1150 #define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04404000) 1158 #define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04404100) 1160 #define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) 1171 #define PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) \ 1172 (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) == \ 1173 (PSA_ALG_CATEGORY_AEAD | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) 1179 #define PSA_ALG_CCM ((psa_algorithm_t)0x05500100) 1185 #define PSA_ALG_GCM ((psa_algorithm_t)0x05500200) 1196 #define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t)0x05100500) 1202 #define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x003f0000) 1203 #define PSA_AEAD_TAG_LENGTH_OFFSET 16 1211 #define PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t)0x00008000) 1231 #define PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, tag_length) \ 1232 (((aead_alg) & ~(PSA_ALG_AEAD_TAG_LENGTH_MASK | \ 1233 PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG)) | \ 1234 ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \ 1235 PSA_ALG_AEAD_TAG_LENGTH_MASK)) 1247 #define PSA_ALG_AEAD_GET_TAG_LENGTH(aead_alg) \ 1248 (((aead_alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> \ 1249 PSA_AEAD_TAG_LENGTH_OFFSET ) 1259 #define PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG(aead_alg) \ 1261 PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_CCM) \ 1262 PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_GCM) \ 1263 PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, PSA_ALG_CHACHA20_POLY1305) \ 1265 #define PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG_CASE(aead_alg, ref) \ 1266 PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, 0) == \ 1267 PSA_ALG_AEAD_WITH_SHORTENED_TAG(ref, 0) ? \ 1294 #define PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG(aead_alg, min_tag_length) \ 1295 ( PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, min_tag_length) | \ 1296 PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ) 1298 #define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x06000200) 1314 #define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \ 1315 (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1322 #define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE 1323 #define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \ 1324 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) 1326 #define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x06000300) 1327 #define PSA_ALG_RSA_PSS_ANY_SALT_BASE ((psa_algorithm_t)0x06001300) 1348 #define PSA_ALG_RSA_PSS(hash_alg) \ 1349 (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1366 #define PSA_ALG_RSA_PSS_ANY_SALT(hash_alg) \ 1367 (PSA_ALG_RSA_PSS_ANY_SALT_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1380 #define PSA_ALG_IS_RSA_PSS_STANDARD_SALT(alg) \ 1381 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) 1394 #define PSA_ALG_IS_RSA_PSS_ANY_SALT(alg) \ 1395 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_ANY_SALT_BASE) 1412 #define PSA_ALG_IS_RSA_PSS(alg) \ 1413 (PSA_ALG_IS_RSA_PSS_STANDARD_SALT(alg) || \ 1414 PSA_ALG_IS_RSA_PSS_ANY_SALT(alg)) 1416 #define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x06000600) 1437 #define PSA_ALG_ECDSA(hash_alg) \ 1438 (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1448 #define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE 1449 #define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x06000700) 1472 #define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ 1473 (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1474 #define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00000100) 1475 #define PSA_ALG_IS_ECDSA(alg) \ 1476 (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \ 1478 #define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ 1479 (((alg) & PSA_ALG_ECDSA_DETERMINISTIC_FLAG) != 0) 1480 #define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ 1481 (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) 1482 #define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ 1483 (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) 1513 #define PSA_ALG_PURE_EDDSA ((psa_algorithm_t)0x06000800) 1515 #define PSA_ALG_HASH_EDDSA_BASE ((psa_algorithm_t)0x06000900) 1516 #define PSA_ALG_IS_HASH_EDDSA(alg) \ 1517 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HASH_EDDSA_BASE) 1540 #define PSA_ALG_ED25519PH \ 1541 (PSA_ALG_HASH_EDDSA_BASE | (PSA_ALG_SHA_512 & PSA_ALG_HASH_MASK)) 1565 #define PSA_ALG_ED448PH \ 1566 (PSA_ALG_HASH_EDDSA_BASE | (PSA_ALG_SHAKE256_512 & PSA_ALG_HASH_MASK)) 1571 #define PSA_ALG_IS_VENDOR_HASH_AND_SIGN(alg) 0 1590 #define PSA_ALG_IS_SIGN_HASH(alg) \ 1591 (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ 1592 PSA_ALG_IS_ECDSA(alg) || PSA_ALG_IS_HASH_EDDSA(alg) || \ 1593 PSA_ALG_IS_VENDOR_HASH_AND_SIGN(alg)) 1606 #define PSA_ALG_IS_SIGN_MESSAGE(alg) \ 1607 (PSA_ALG_IS_SIGN_HASH(alg) || (alg) == PSA_ALG_PURE_EDDSA ) 1635 #define PSA_ALG_IS_HASH_AND_SIGN(alg) \ 1636 (PSA_ALG_IS_SIGN_HASH(alg) && \ 1637 ((alg) & PSA_ALG_HASH_MASK) != 0) 1657 #define PSA_ALG_SIGN_GET_HASH(alg) \ 1658 (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ 1659 ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ 1664 #define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x07000200) 1666 #define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x07000300) 1681 #define PSA_ALG_RSA_OAEP(hash_alg) \ 1682 (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1683 #define PSA_ALG_IS_RSA_OAEP(alg) \ 1684 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) 1685 #define PSA_ALG_RSA_OAEP_GET_HASH(alg) \ 1686 (PSA_ALG_IS_RSA_OAEP(alg) ? \ 1687 ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ 1690 #define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x08000100) 1711 #define PSA_ALG_HKDF(hash_alg) \ 1712 (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1724 #define PSA_ALG_IS_HKDF(alg) \ 1725 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) 1726 #define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \ 1727 (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) 1729 #define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x08000200) 1756 #define PSA_ALG_TLS12_PRF(hash_alg) \ 1757 (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1767 #define PSA_ALG_IS_TLS12_PRF(alg) \ 1768 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE) 1769 #define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \ 1770 (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) 1772 #define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x08000300) 1802 #define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \ 1803 (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) 1813 #define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \ 1814 (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE) 1815 #define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \ 1816 (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) 1818 #define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0xfe00ffff) 1819 #define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t)0xffff0000) 1835 #define PSA_ALG_KEY_AGREEMENT(ka_alg, kdf_alg) \ 1836 ((ka_alg) | (kdf_alg)) 1838 #define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \ 1839 (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION) 1841 #define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \ 1842 (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT) 1858 #define PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) \ 1859 (PSA_ALG_IS_KEY_AGREEMENT(alg) && \ 1860 PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION) 1862 #define PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT(alg) \ 1863 ((PSA_ALG_IS_KEY_DERIVATION(alg) || PSA_ALG_IS_KEY_AGREEMENT(alg))) 1872 #define PSA_ALG_FFDH ((psa_algorithm_t)0x09010000) 1886 #define PSA_ALG_IS_FFDH(alg) \ 1887 (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH) 1914 #define PSA_ALG_ECDH ((psa_algorithm_t)0x09020000) 1930 #define PSA_ALG_IS_ECDH(alg) \ 1931 (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH) 1946 #define PSA_ALG_IS_WILDCARD(alg) \ 1947 (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ 1948 PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \ 1949 PSA_ALG_IS_MAC(alg) ? \ 1950 (alg & PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG) != 0 : \ 1951 PSA_ALG_IS_AEAD(alg) ? \ 1952 (alg & PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG) != 0 : \ 1953 (alg) == PSA_ALG_ANY_HASH) 1977 #define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000) 1991 #define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001) 1997 #define PSA_KEY_PERSISTENCE_VOLATILE ((psa_key_persistence_t)0x00) 2003 #define PSA_KEY_PERSISTENCE_DEFAULT ((psa_key_persistence_t)0x01) 2009 #define PSA_KEY_PERSISTENCE_READ_ONLY ((psa_key_persistence_t)0xff) 2011 #define PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) \ 2012 ((psa_key_persistence_t)((lifetime) & 0x000000ff)) 2014 #define PSA_KEY_LIFETIME_GET_LOCATION(lifetime) \ 2015 ((psa_key_location_t)((lifetime) >> 8)) 2033 #define PSA_KEY_LIFETIME_IS_VOLATILE(lifetime) \ 2034 (PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \ 2035 PSA_KEY_PERSISTENCE_VOLATILE) 2054 #define PSA_KEY_LIFETIME_IS_READ_ONLY(lifetime) \ 2055 (PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) == \ 2056 PSA_KEY_PERSISTENCE_READ_ONLY) 2067 #define PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(persistence, location) \ 2068 ((location) << 8 | (persistence)) 2077 #define PSA_KEY_LOCATION_LOCAL_STORAGE ((psa_key_location_t)0x000000) 2079 #define PSA_KEY_LOCATION_VENDOR_FLAG ((psa_key_location_t)0x800000) 2088 #define PSA_KEY_ID_NULL ((psa_key_id_t)0) 2091 #define PSA_KEY_ID_USER_MIN ((psa_key_id_t)0x00000001) 2094 #define PSA_KEY_ID_USER_MAX ((psa_key_id_t)0x3fffffff) 2097 #define PSA_KEY_ID_VENDOR_MIN ((psa_key_id_t)0x40000000) 2100 #define PSA_KEY_ID_VENDOR_MAX ((psa_key_id_t)0x7fffffff) 2103 #if !defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER) 2105 #define MBEDTLS_SVC_KEY_ID_INIT ( (psa_key_id_t)0 ) 2106 #define MBEDTLS_SVC_KEY_ID_GET_KEY_ID( id ) ( id ) 2107 #define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID( id ) ( 0 ) 2132 return( id1 == id2 );
2148 #define MBEDTLS_SVC_KEY_ID_INIT ( (mbedtls_svc_key_id_t){ 0, 0 } ) 2149 #define MBEDTLS_SVC_KEY_ID_GET_KEY_ID( id ) ( ( id ).key_id ) 2150 #define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID( id ) ( ( id ).owner ) 2161 .owner = owner_id } );
2174 return( ( id1.key_id == id2.key_id ) &&
2175 mbedtls_key_owner_id_equal( id1.owner, id2.owner ) );
2186 return( key.key_id == 0 );
2213 #define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001) 2229 #define PSA_KEY_USAGE_COPY ((psa_key_usage_t)0x00000002) 2240 #define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100) 2251 #define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200) 2261 #define PSA_KEY_USAGE_SIGN_MESSAGE ((psa_key_usage_t)0x00000400) 2271 #define PSA_KEY_USAGE_VERIFY_MESSAGE ((psa_key_usage_t)0x00000800) 2281 #define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t)0x00001000) 2291 #define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t)0x00002000) 2295 #define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00004000) 2318 #define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t)0x0101) 2325 #define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t)0x0201) 2332 #define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t)0x0202) 2339 #define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t)0x0203) 2346 #define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t)0x0204) 2367 #define MBEDTLS_PSA_ALG_AEAD_EQUAL(aead_alg_1, aead_alg_2) \ 2368 (!(((aead_alg_1) ^ (aead_alg_2)) & \ 2369 ~(PSA_ALG_AEAD_TAG_LENGTH_MASK | PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG)))
static mbedtls_svc_key_id_t mbedtls_svc_key_id_make(unsigned int unused, psa_key_id_t key_id)
psa_key_id_t mbedtls_svc_key_id_t
static int mbedtls_svc_key_id_equal(mbedtls_svc_key_id_t id1, mbedtls_svc_key_id_t id2)
static int mbedtls_svc_key_id_is_null(mbedtls_svc_key_id_t key)