22#ifndef PSA_CRYPTO_PSA_KEY_TYPE_H
23#define PSA_CRYPTO_PSA_KEY_TYPE_H
76#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x0000)
86#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x8000)
91#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x7000)
96#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x1000)
101#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x2000)
106#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x4000)
111#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x7000)
116#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x3000)
124#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \
125 (((type) & 0x7000) == 0x1000 || ((type) & 0x7000) == 0x2000)
124#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ …
132#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \
133 (((type) & 0x4000) == 0x4000)
132#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ …
140#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \
141 (((type) & 0x7000) == 0x4000)
140#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ …
148#define PSA_KEY_TYPE_IS_KEY_PAIR(type) \
149 (((type) & 0x7000) == 0x7000)
148#define PSA_KEY_TYPE_IS_KEY_PAIR(type) \ …
165#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x1001)
189#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x1100)
210#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x1200)
235#define PSA_KEY_TYPE_PASSWORD ((psa_key_type_t)0x1203)
247#define PSA_KEY_TYPE_PASSWORD_HASH ((psa_key_type_t)0x1205)
259#define PSA_KEY_TYPE_PEPPER ((psa_key_type_t)0x1206)
291#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x2400)
323#define PSA_KEY_TYPE_ARIA ((psa_key_type_t)0x2406)
352#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x2301)
386#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x2403)
415#define PSA_KEY_TYPE_SM4 ((psa_key_type_t)0x2405)
428#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x2002)
445#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x2004)
460#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x7001)
475#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x4001)
482#define PSA_KEY_TYPE_IS_RSA(type) \
483 (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == 0x4001)
482#define PSA_KEY_TYPE_IS_RSA(type) \ …
488#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x7100)
505#define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \
506 (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve))
505#define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \ …
511#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x4100)
516#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x00ff)
533#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \
534 (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve))
533#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ …
553#define PSA_ECC_FAMILY_SECP_K1 ((psa_ecc_family_t)0x17)
573#define PSA_ECC_FAMILY_SECP_R1 ((psa_ecc_family_t)0x12)
590#define PSA_ECC_FAMILY_SECP_R2 ((psa_ecc_family_t)0x1b)
614#define PSA_ECC_FAMILY_SECT_K1 ((psa_ecc_family_t)0x27)
637#define PSA_ECC_FAMILY_SECT_R1 ((psa_ecc_family_t)0x22)
656#define PSA_ECC_FAMILY_SECT_R2 ((psa_ecc_family_t)0x2b)
682#define PSA_ECC_FAMILY_BRAINPOOL_P_R1 ((psa_ecc_family_t)0x30)
701#define PSA_ECC_FAMILY_FRP ((psa_ecc_family_t)0x33)
718#define PSA_ECC_FAMILY_MONTGOMERY ((psa_ecc_family_t)0x41)
737#define PSA_ECC_FAMILY_TWISTED_EDWARDS ((psa_ecc_family_t)0x42)
744#define PSA_KEY_TYPE_IS_ECC(type) \
745 ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & 0xff00) == 0x4100)
744#define PSA_KEY_TYPE_IS_ECC(type) \ …
752#define PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type) \
753 (((type) & 0xff00) == 0x7100)
752#define PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type) \ …
760#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \
761 (((type) & 0xff00) == 0x4100)
760#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ …
772#define PSA_KEY_TYPE_ECC_GET_FAMILY(type) \
773 ((psa_ecc_family_t)((type) & 0x00ff))
772#define PSA_KEY_TYPE_ECC_GET_FAMILY(type) \ …
784#define PSA_KEY_TYPE_DH_KEY_PAIR(group) \
785 ((psa_key_type_t)(0x7200 | (group)))
784#define PSA_KEY_TYPE_DH_KEY_PAIR(group) \ …
798#define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \
799 ((psa_key_type_t)(0x4200 | (group)))
798#define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \ …
813#define PSA_DH_FAMILY_RFC7919 ((psa_dh_family_t)0x03)
825#define PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY(type) \
826 ((psa_key_type_t)((type) | 0x3000))
825#define PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY(type) \ …
837#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) \
838 ((psa_key_type_t)((type) & ~0x3000))
837#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) \ …
845#define PSA_KEY_TYPE_IS_DH(type) \
846 ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & 0xff00) == 0x4200)
845#define PSA_KEY_TYPE_IS_DH(type) \ …
853#define PSA_KEY_TYPE_IS_DH_KEY_PAIR(type) \
854 (((type) & 0xff00) == 0x7200)
853#define PSA_KEY_TYPE_IS_DH_KEY_PAIR(type) \ …
861#define PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type) \
862 (((type) & 0xff00) == 0x4200)
861#define PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type) \ …
873#define PSA_KEY_TYPE_DH_GET_FAMILY(type) \
874 ((psa_dh_family_t)((type) & 0x00ff))
873#define PSA_KEY_TYPE_DH_GET_FAMILY(type) \ …
uint16_t psa_key_type_t
Encoding of a key type.
uint8_t psa_ecc_family_t
The type of PSA elliptic curve family identifiers.
uint8_t psa_dh_family_t
The type of PSA finite-field Diffie-Hellman group family identifiers.