|
Platform Security Architecture — cryptography and keystore interface
Working draft
|
Platform Security Architecture cryptography module. More...
#include "crypto_platform.h"#include <stddef.h>#include "crypto_sizes.h"#include "crypto_struct.h"#include "crypto_extra.h"
Go to the source code of this file.
Classes | |
| struct | psa_generate_key_extra_rsa |
Macros | |
| #define | PSA_SUCCESS ((psa_status_t)0) |
| #define | PSA_ERROR_UNKNOWN_ERROR ((psa_status_t)1) |
| #define | PSA_ERROR_NOT_SUPPORTED ((psa_status_t)2) |
| #define | PSA_ERROR_NOT_PERMITTED ((psa_status_t)3) |
| #define | PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)4) |
| #define | PSA_ERROR_OCCUPIED_SLOT ((psa_status_t)5) |
| #define | PSA_ERROR_EMPTY_SLOT ((psa_status_t)6) |
| #define | PSA_ERROR_BAD_STATE ((psa_status_t)7) |
| #define | PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)8) |
| #define | PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)9) |
| #define | PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)10) |
| #define | PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)11) |
| #define | PSA_ERROR_STORAGE_FAILURE ((psa_status_t)12) |
| #define | PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)13) |
| #define | PSA_ERROR_TAMPERING_DETECTED ((psa_status_t)14) |
| #define | PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)15) |
| #define | PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)16) |
| #define | PSA_ERROR_INVALID_PADDING ((psa_status_t)17) |
| #define | PSA_ERROR_INSUFFICIENT_CAPACITY ((psa_status_t)18) |
| #define | PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8) |
| #define | PSA_BYTES_TO_BITS(bytes) ((bytes) * 8) |
| #define | PSA_KEY_TYPE_NONE ((psa_key_type_t)0x00000000) |
| #define | PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x80000000) |
| #define | PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x7e000000) |
| #define | PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x02000000) |
| #define | PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x04000000) |
| #define | PSA_KEY_TYPE_CATEGORY_ASYMMETRIC ((psa_key_type_t)0x06000000) |
| #define | PSA_KEY_TYPE_PAIR_FLAG ((psa_key_type_t)0x01000000) |
| #define | PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x02000001) |
| #define | PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x02000101) |
| #define | PSA_KEY_TYPE_AES ((psa_key_type_t)0x04000001) |
| #define | PSA_KEY_TYPE_DES ((psa_key_type_t)0x04000002) |
| #define | PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x04000003) |
| #define | PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x04000004) |
| #define | PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x06010000) |
| #define | PSA_KEY_TYPE_RSA_KEYPAIR ((psa_key_type_t)0x07010000) |
| #define | PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x06020000) |
| #define | PSA_KEY_TYPE_DSA_KEYPAIR ((psa_key_type_t)0x07020000) |
| #define | PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x06030000) |
| #define | PSA_KEY_TYPE_ECC_KEYPAIR_BASE ((psa_key_type_t)0x07030000) |
| #define | PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x0000ffff) |
| #define | PSA_KEY_TYPE_ECC_KEYPAIR(curve) (PSA_KEY_TYPE_ECC_KEYPAIR_BASE | (curve)) |
| #define | PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) |
| #define | PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) |
| #define | PSA_KEY_TYPE_IS_ASYMMETRIC(type) (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_ASYMMETRIC) |
| #define | PSA_KEY_TYPE_IS_PUBLIC_KEY(type) |
| #define | PSA_KEY_TYPE_IS_KEYPAIR(type) |
| #define | PSA_KEY_TYPE_KEYPAIR_OF_PUBLIC_KEY(type) ((type) | PSA_KEY_TYPE_PAIR_FLAG) |
| #define | PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) ((type) & ~PSA_KEY_TYPE_PAIR_FLAG) |
| #define | PSA_KEY_TYPE_IS_RSA(type) (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEYPAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) |
| #define | PSA_KEY_TYPE_IS_ECC(type) |
| #define | PSA_KEY_TYPE_IS_ECC_KEYPAIR(type) |
| #define | PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) |
| #define | PSA_KEY_TYPE_GET_CURVE(type) |
| #define | PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x0001) |
| #define | PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x0002) |
| #define | PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x0003) |
| #define | PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x0004) |
| #define | PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x0005) |
| #define | PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x0006) |
| #define | PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x0007) |
| #define | PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x0008) |
| #define | PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x0009) |
| #define | PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x000a) |
| #define | PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x000b) |
| #define | PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x000c) |
| #define | PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x000d) |
| #define | PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x000e) |
| #define | PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x000f) |
| #define | PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x0010) |
| #define | PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x0011) |
| #define | PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x0012) |
| #define | PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x0013) |
| #define | PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x0014) |
| #define | PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x0015) |
| #define | PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x0016) |
| #define | PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x0017) |
| #define | PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x0018) |
| #define | PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x0019) |
| #define | PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x001a) |
| #define | PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x001b) |
| #define | PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x001c) |
| #define | PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x001d) |
| #define | PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x001e) |
| #define | PSA_ECC_CURVE_FFDHE_2048 ((psa_ecc_curve_t) 0x0100) |
| #define | PSA_ECC_CURVE_FFDHE_3072 ((psa_ecc_curve_t) 0x0101) |
| #define | PSA_ECC_CURVE_FFDHE_4096 ((psa_ecc_curve_t) 0x0102) |
| #define | PSA_ECC_CURVE_FFDHE_6144 ((psa_ecc_curve_t) 0x0103) |
| #define | PSA_ECC_CURVE_FFDHE_8192 ((psa_ecc_curve_t) 0x0104) |
| #define | PSA_BLOCK_CIPHER_BLOCK_SIZE(type) |
| #define | PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) |
| #define | PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) |
| #define | PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000) |
| #define | PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000) |
| #define | PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000) |
| #define | PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x06000000) |
| #define | PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x10000000) |
| #define | PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x12000000) |
| #define | PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x22000000) |
| #define | PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x30000000) |
| #define | PSA_ALG_IS_VENDOR_DEFINED(alg) (((alg) & PSA_ALG_VENDOR_FLAG) != 0) |
| #define | PSA_ALG_IS_HASH(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) |
| #define | PSA_ALG_IS_MAC(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) |
| #define | PSA_ALG_IS_CIPHER(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) |
| #define | PSA_ALG_IS_AEAD(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) |
| #define | PSA_ALG_IS_SIGN(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) |
| #define | PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) |
| #define | PSA_ALG_IS_KEY_AGREEMENT(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT) |
| #define | PSA_ALG_IS_KEY_DERIVATION(alg) (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) |
| #define | PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) |
| #define | PSA_ALG_MD2 ((psa_algorithm_t)0x01000001) |
| #define | PSA_ALG_MD4 ((psa_algorithm_t)0x01000002) |
| #define | PSA_ALG_MD5 ((psa_algorithm_t)0x01000003) |
| #define | PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004) |
| #define | PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005) |
| #define | PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008) |
| #define | PSA_ALG_SHA_256 ((psa_algorithm_t)0x01000009) |
| #define | PSA_ALG_SHA_384 ((psa_algorithm_t)0x0100000a) |
| #define | PSA_ALG_SHA_512 ((psa_algorithm_t)0x0100000b) |
| #define | PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0100000c) |
| #define | PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0100000d) |
| #define | PSA_ALG_SHA3_224 ((psa_algorithm_t)0x01000010) |
| #define | PSA_ALG_SHA3_256 ((psa_algorithm_t)0x01000011) |
| #define | PSA_ALG_SHA3_384 ((psa_algorithm_t)0x01000012) |
| #define | PSA_ALG_SHA3_512 ((psa_algorithm_t)0x01000013) |
| #define | PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) |
| #define | PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x02800000) |
| #define | PSA_ALG_HMAC(hash_alg) (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_HMAC_HASH(hmac_alg) (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_IS_HMAC(alg) |
| #define | PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x02c00000) |
| #define | PSA_ALG_CBC_MAC ((psa_algorithm_t)0x02c00001) |
| #define | PSA_ALG_CMAC ((psa_algorithm_t)0x02c00002) |
| #define | PSA_ALG_GMAC ((psa_algorithm_t)0x02c00003) |
| #define | PSA_ALG_IS_CIPHER_MAC(alg) |
| #define | PSA_ALG_CIPHER_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) |
| #define | PSA_ALG_BLOCK_CIPHER_BASE ((psa_algorithm_t)0x04000000) |
| #define | PSA_ALG_BLOCK_CIPHER_MODE_MASK ((psa_algorithm_t)0x000000ff) |
| #define | PSA_ALG_BLOCK_CIPHER_PADDING_MASK ((psa_algorithm_t)0x003f0000) |
| #define | PSA_ALG_BLOCK_CIPHER_PAD_NONE ((psa_algorithm_t)0x00000000) |
| #define | PSA_ALG_BLOCK_CIPHER_PAD_PKCS7 ((psa_algorithm_t)0x00010000) |
| #define | PSA_ALG_IS_BLOCK_CIPHER(alg) |
| #define | PSA_ALG_CBC_BASE ((psa_algorithm_t)0x04000001) |
| #define | PSA_ALG_CFB_BASE ((psa_algorithm_t)0x04000002) |
| #define | PSA_ALG_OFB_BASE ((psa_algorithm_t)0x04000003) |
| #define | PSA_ALG_XTS_BASE ((psa_algorithm_t)0x04000004) |
| #define | PSA_ALG_STREAM_CIPHER_BASE ((psa_algorithm_t)0x04800000) |
| #define | PSA_ALG_CTR ((psa_algorithm_t)0x04800001) |
| #define | PSA_ALG_ARC4 ((psa_algorithm_t)0x04800002) |
| #define | PSA_ALG_IS_STREAM_CIPHER(alg) |
| #define | PSA_ALG_CCM ((psa_algorithm_t)0x06000001) |
| #define | PSA_ALG_GCM ((psa_algorithm_t)0x06000002) |
| #define | PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x10020000) |
| #define | PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE |
| #define | PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) |
| #define | PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x10030000) |
| #define | PSA_ALG_RSA_PSS(hash_alg) (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_IS_RSA_PSS(alg) (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) |
| #define | PSA_ALG_DSA_BASE ((psa_algorithm_t)0x10040000) |
| #define | PSA_ALG_DSA(hash_alg) (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000) |
| #define | PSA_ALG_DSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000) |
| #define | PSA_ALG_DETERMINISTIC_DSA(hash_alg) (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_IS_DSA(alg) |
| #define | PSA_ALG_DSA_IS_DETERMINISTIC(alg) (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) |
| #define | PSA_ALG_IS_DETERMINISTIC_DSA(alg) (PSA_ALG_IS_DSA(alg) && PSA_ALG_DSA_IS_DETERMINISTIC(alg)) |
| #define | PSA_ALG_IS_RANDOMIZED_DSA(alg) (PSA_ALG_IS_DSA(alg) && !PSA_ALG_DSA_IS_DETERMINISTIC(alg)) |
| #define | PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x10060000) |
| #define | PSA_ALG_ECDSA(hash_alg) (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE |
| #define | PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x10070000) |
| #define | PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_IS_ECDSA(alg) |
| #define | PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) |
| #define | PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) |
| #define | PSA_ALG_IS_RANDOMIZED_ECDSA(alg) (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) |
| #define | PSA_ALG_SIGN_GET_HASH(alg) |
| #define | PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x12020000) |
| #define | PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x12030000) |
| #define | PSA_ALG_RSA_OAEP(hash_alg) (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_IS_RSA_OAEP(alg) (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) |
| #define | PSA_ALG_RSA_OAEP_GET_HASH(alg) |
| #define | PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x30000100) |
| #define | PSA_ALG_HKDF(hash_alg) (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_ALG_IS_HKDF(alg) (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) |
| #define | PSA_ALG_HKDF_GET_HASH(hkdf_alg) (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) |
| #define | PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001) |
| #define | PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100) |
| #define | PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200) |
| #define | PSA_KEY_USAGE_SIGN ((psa_key_usage_t)0x00000400) |
| #define | PSA_KEY_USAGE_VERIFY ((psa_key_usage_t)0x00000800) |
| #define | PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00001000) |
| #define | PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000) |
| #define | PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001) |
| #define | PSA_KEY_LIFETIME_WRITE_ONCE ((psa_key_lifetime_t)0x7fffffff) |
| #define | PSA_HASH_SIZE(alg) |
| #define | PSA_AEAD_TAG_SIZE(alg) |
| #define | PSA_ECDSA_SIGNATURE_SIZE(curve_bits) (PSA_BITS_TO_BYTES(curve_bits) * 2) |
| ECDSA signature size for a given curve bit size. More... | |
| #define | PSA_RSA_MINIMUM_PADDING_SIZE(alg) |
| #define | PSA_CRYPTO_GENERATOR_INIT {0} |
Typedefs | |
| typedef _unsigned_integral_type_ | psa_key_slot_t |
| Key slot number. More... | |
| typedef int32_t | psa_status_t |
| Function return status. More... | |
| typedef uint32_t | psa_key_type_t |
| Encoding of a key type. | |
| typedef uint16_t | psa_ecc_curve_t |
| typedef uint32_t | psa_algorithm_t |
| Encoding of a cryptographic algorithm. More... | |
| typedef uint32_t | psa_key_usage_t |
| Encoding of permitted usage on a key. | |
| typedef struct psa_key_policy_s | psa_key_policy_t |
| typedef uint32_t | psa_key_lifetime_t |
| typedef struct psa_hash_operation_s | psa_hash_operation_t |
| typedef struct psa_mac_operation_s | psa_mac_operation_t |
| typedef struct psa_cipher_operation_s | psa_cipher_operation_t |
| typedef struct psa_crypto_generator_s | psa_crypto_generator_t |
Functions | |
| psa_status_t | psa_crypto_init (void) |
| Library initialization. More... | |
| psa_status_t | psa_import_key (psa_key_slot_t key, psa_key_type_t type, const uint8_t *data, size_t data_length) |
| Import a key in binary format. More... | |
| psa_status_t | psa_destroy_key (psa_key_slot_t key) |
| Destroy a key and restore the slot to its default state. More... | |
| psa_status_t | psa_get_key_information (psa_key_slot_t key, psa_key_type_t *type, size_t *bits) |
| Get basic metadata about a key. More... | |
| psa_status_t | psa_export_key (psa_key_slot_t key, uint8_t *data, size_t data_size, size_t *data_length) |
| Export a key in binary format. More... | |
| psa_status_t | psa_export_public_key (psa_key_slot_t key, uint8_t *data, size_t data_size, size_t *data_length) |
| Export a public key or the public part of a key pair in binary format. More... | |
| void | psa_key_policy_init (psa_key_policy_t *policy) |
| Initialize a key policy structure to a default that forbids all usage of the key. More... | |
| void | psa_key_policy_set_usage (psa_key_policy_t *policy, psa_key_usage_t usage, psa_algorithm_t alg) |
| Set the standard fields of a policy structure. More... | |
| psa_key_usage_t | psa_key_policy_get_usage (const psa_key_policy_t *policy) |
| Retrieve the usage field of a policy structure. More... | |
| psa_algorithm_t | psa_key_policy_get_algorithm (const psa_key_policy_t *policy) |
| Retrieve the algorithm field of a policy structure. More... | |
| psa_status_t | psa_set_key_policy (psa_key_slot_t key, const psa_key_policy_t *policy) |
| Set the usage policy on a key slot. More... | |
| psa_status_t | psa_get_key_policy (psa_key_slot_t key, psa_key_policy_t *policy) |
| Get the usage policy for a key slot. More... | |
| psa_status_t | psa_get_key_lifetime (psa_key_slot_t key, psa_key_lifetime_t *lifetime) |
| Retrieve the lifetime of a key slot. More... | |
| psa_status_t | psa_set_key_lifetime (psa_key_slot_t key, psa_key_lifetime_t lifetime) |
| Change the lifetime of a key slot. More... | |
| psa_status_t | psa_hash_setup (psa_hash_operation_t *operation, psa_algorithm_t alg) |
| psa_status_t | psa_hash_update (psa_hash_operation_t *operation, const uint8_t *input, size_t input_length) |
| psa_status_t | psa_hash_finish (psa_hash_operation_t *operation, uint8_t *hash, size_t hash_size, size_t *hash_length) |
| psa_status_t | psa_hash_verify (psa_hash_operation_t *operation, const uint8_t *hash, size_t hash_length) |
| psa_status_t | psa_hash_abort (psa_hash_operation_t *operation) |
| psa_status_t | psa_mac_sign_setup (psa_mac_operation_t *operation, psa_key_slot_t key, psa_algorithm_t alg) |
| psa_status_t | psa_mac_verify_setup (psa_mac_operation_t *operation, psa_key_slot_t key, psa_algorithm_t alg) |
| psa_status_t | psa_mac_update (psa_mac_operation_t *operation, const uint8_t *input, size_t input_length) |
| psa_status_t | psa_mac_sign_finish (psa_mac_operation_t *operation, uint8_t *mac, size_t mac_size, size_t *mac_length) |
| psa_status_t | psa_mac_verify_finish (psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_length) |
| psa_status_t | psa_mac_abort (psa_mac_operation_t *operation) |
| psa_status_t | psa_cipher_encrypt_setup (psa_cipher_operation_t *operation, psa_key_slot_t key, psa_algorithm_t alg) |
| psa_status_t | psa_cipher_decrypt_setup (psa_cipher_operation_t *operation, psa_key_slot_t key, psa_algorithm_t alg) |
| psa_status_t | psa_cipher_generate_iv (psa_cipher_operation_t *operation, unsigned char *iv, size_t iv_size, size_t *iv_length) |
| psa_status_t | psa_cipher_set_iv (psa_cipher_operation_t *operation, const unsigned char *iv, size_t iv_length) |
| psa_status_t | psa_cipher_update (psa_cipher_operation_t *operation, const uint8_t *input, size_t input_length, unsigned char *output, size_t output_size, size_t *output_length) |
| psa_status_t | psa_cipher_finish (psa_cipher_operation_t *operation, uint8_t *output, size_t output_size, size_t *output_length) |
| psa_status_t | psa_cipher_abort (psa_cipher_operation_t *operation) |
| psa_status_t | psa_aead_encrypt (psa_key_slot_t key, 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_aead_decrypt (psa_key_slot_t key, 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) |
| psa_status_t | psa_asymmetric_sign (psa_key_slot_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length) |
| Sign a hash or short message with a private key. More... | |
| psa_status_t | psa_asymmetric_verify (psa_key_slot_t key, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length) |
| Verify the signature a hash or short message using a public key. More... | |
| psa_status_t | psa_asymmetric_encrypt (psa_key_slot_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *salt, size_t salt_length, uint8_t *output, size_t output_size, size_t *output_length) |
| Encrypt a short message with a public key. More... | |
| psa_status_t | psa_asymmetric_decrypt (psa_key_slot_t key, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *salt, size_t salt_length, uint8_t *output, size_t output_size, size_t *output_length) |
| Decrypt a short message with a private key. More... | |
| psa_status_t | psa_get_generator_capacity (const psa_crypto_generator_t *generator, size_t *capacity) |
| psa_status_t | psa_generator_read (psa_crypto_generator_t *generator, uint8_t *output, size_t output_length) |
| psa_status_t | psa_generator_import_key (psa_key_slot_t key, psa_key_type_t type, size_t bits, psa_crypto_generator_t *generator) |
| psa_status_t | psa_generator_abort (psa_crypto_generator_t *generator) |
| psa_status_t | psa_key_derivation (psa_crypto_generator_t *generator, psa_key_slot_t key, psa_algorithm_t alg, const uint8_t *salt, size_t salt_length, const uint8_t *label, size_t label_length, size_t capacity) |
| psa_status_t | psa_generate_random (uint8_t *output, size_t output_size) |
| Generate random bytes. More... | |
| psa_status_t | psa_generate_key (psa_key_slot_t key, psa_key_type_t type, size_t bits, const void *extra, size_t extra_size) |
| Generate a key or key pair. More... | |
Platform Security Architecture cryptography module.
1.8.13