mbed TLS v2.26.0
Data Structures | Macros | Typedefs | Enumerations | Functions
crypto_struct.h File Reference

PSA cryptography module: Mbed TLS structured type implementations. More...

#include "mbedtls/config.h"
#include "mbedtls/cipher.h"
#include "mbedtls/cmac.h"
#include "mbedtls/gcm.h"
#include "mbedtls/md.h"
#include "mbedtls/md2.h"
#include "mbedtls/md4.h"
#include "mbedtls/md5.h"
#include "mbedtls/ripemd160.h"
#include "mbedtls/sha1.h"
#include "mbedtls/sha256.h"
#include "mbedtls/sha512.h"
Include dependency graph for crypto_struct.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  psa_operation_driver_context_t
 
struct  psa_hash_operation_s
 
struct  psa_hmac_internal_data
 
struct  psa_mac_operation_s
 
struct  psa_cipher_operation_s
 
struct  psa_aead_operation_s
 
struct  psa_hkdf_key_derivation_t
 
struct  psa_tls12_prf_key_derivation_s
 
struct  psa_key_derivation_s
 
struct  psa_key_policy_s
 
struct  psa_core_key_attributes_t
 
struct  psa_key_attributes_s
 

Macros

#define PSA_HASH_OPERATION_INIT   {0, {0}}
 
#define PSA_MAC_OPERATION_INIT   {0, 0, 0, 0, 0, 0, 0, {0}}
 
#define PSA_CIPHER_OPERATION_INIT   {0, 0, 0, 0, 0, 0, 0, {0}}
 
#define PSA_AEAD_OPERATION_INIT   {0, 0, 0, 0, 0, {0}}
 
#define PSA_KEY_DERIVATION_OPERATION_INIT   {0, 0, 0, {0}}
 
#define PSA_KEY_POLICY_INIT   {0, 0, 0}
 
#define PSA_KEY_BITS_TOO_LARGE   ( (psa_key_bits_t) ( -1 ) )
 
#define PSA_MAX_KEY_BITS   0xfff8
 
#define MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER   ( (psa_key_attributes_flag_t) 0x0001 )
 
#define MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY
 
#define MBEDTLS_PSA_KA_MASK_DUAL_USE
 
#define PSA_CORE_KEY_ATTRIBUTES_INIT   {PSA_KEY_TYPE_NONE, 0, PSA_KEY_LIFETIME_VOLATILE, MBEDTLS_SVC_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0}
 
#define PSA_KEY_ATTRIBUTES_INIT   {PSA_CORE_KEY_ATTRIBUTES_INIT, NULL, 0}
 

Typedefs

typedef struct psa_tls12_prf_key_derivation_s psa_tls12_prf_key_derivation_t
 
typedef struct psa_key_policy_s psa_key_policy_t
 
typedef uint16_t psa_key_bits_t
 
typedef uint16_t psa_key_attributes_flag_t
 

Enumerations

enum  psa_tls12_prf_key_derivation_state_t {
  PSA_TLS12_PRF_STATE_INIT, PSA_TLS12_PRF_STATE_SEED_SET, PSA_TLS12_PRF_STATE_KEY_SET, PSA_TLS12_PRF_STATE_LABEL_SET,
  PSA_TLS12_PRF_STATE_OUTPUT
}
 

Functions

static struct psa_hash_operation_s psa_hash_operation_init (void)
 
static struct psa_mac_operation_s psa_mac_operation_init (void)
 
static struct psa_cipher_operation_s psa_cipher_operation_init (void)
 
static struct psa_aead_operation_s psa_aead_operation_init (void)
 
static struct psa_key_derivation_s psa_key_derivation_operation_init (void)
 
static struct psa_key_policy_s psa_key_policy_init (void)
 
static struct psa_key_attributes_s psa_key_attributes_init (void)
 
static void psa_set_key_id (psa_key_attributes_t *attributes, mbedtls_svc_key_id_t key)
 
static mbedtls_svc_key_id_t psa_get_key_id (const psa_key_attributes_t *attributes)
 
static void psa_set_key_lifetime (psa_key_attributes_t *attributes, psa_key_lifetime_t lifetime)
 
static psa_key_lifetime_t psa_get_key_lifetime (const psa_key_attributes_t *attributes)
 
static void psa_set_key_usage_flags (psa_key_attributes_t *attributes, psa_key_usage_t usage_flags)
 
static psa_key_usage_t psa_get_key_usage_flags (const psa_key_attributes_t *attributes)
 
static void psa_set_key_algorithm (psa_key_attributes_t *attributes, psa_algorithm_t alg)
 
static psa_algorithm_t psa_get_key_algorithm (const psa_key_attributes_t *attributes)
 
psa_status_t psa_set_key_domain_parameters (psa_key_attributes_t *attributes, psa_key_type_t type, const uint8_t *data, size_t data_length)
 
static void psa_set_key_type (psa_key_attributes_t *attributes, psa_key_type_t type)
 
static psa_key_type_t psa_get_key_type (const psa_key_attributes_t *attributes)
 
static void psa_set_key_bits (psa_key_attributes_t *attributes, size_t bits)
 
static size_t psa_get_key_bits (const psa_key_attributes_t *attributes)
 

Detailed Description

PSA cryptography module: Mbed TLS structured type implementations.

Note
This file may not be included directly. Applications must include psa/crypto.h.

This file contains the definitions of some data structures with implementation-specific definitions.

In implementations with isolation between the application and the cryptography module, it is expected that the front-end and the back-end would have different versions of this file.

Design notes about multipart operation structures

Each multipart operation structure contains a psa_algorithm_t alg field which indicates which specific algorithm the structure is for. When the structure is not in use, alg is 0. Most of the structure consists of a union which is discriminated by alg.

Note that when alg is 0, the content of other fields is undefined. In particular, it is not guaranteed that a freshly-initialized structure is all-zero: we initialize structures to something like {0, 0}, which is only guaranteed to initializes the first member of the union; GCC and Clang initialize the whole structure to 0 (at the time of writing), but MSVC and CompCert don't.

In Mbed Crypto, multipart operation structures live independently from the key. This allows Mbed Crypto to free the key objects when destroying a key slot. If a multipart operation needs to remember the key after the setup function returns, the operation structure needs to contain a copy of the key.

Definition in file crypto_struct.h.

Macro Definition Documentation

#define MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER   ( (psa_key_attributes_flag_t) 0x0001 )

Definition at line 326 of file crypto_struct.h.

#define MBEDTLS_PSA_KA_MASK_DUAL_USE
Value:
( \
0 )

Definition at line 337 of file crypto_struct.h.

#define MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY
Value:
( \
MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER | \
0 )

Definition at line 331 of file crypto_struct.h.

#define PSA_CORE_KEY_ATTRIBUTES_INIT   {PSA_KEY_TYPE_NONE, 0, PSA_KEY_LIFETIME_VOLATILE, MBEDTLS_SVC_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0}

Definition at line 350 of file crypto_struct.h.

#define PSA_KEY_BITS_TOO_LARGE   ( (psa_key_bits_t) ( -1 ) )

Definition at line 309 of file crypto_struct.h.

Referenced by psa_set_key_bits().

#define PSA_KEY_POLICY_INIT   {0, 0, 0}

Definition at line 297 of file crypto_struct.h.

Referenced by psa_key_policy_init().

#define PSA_MAX_KEY_BITS   0xfff8

Definition at line 315 of file crypto_struct.h.

Referenced by psa_set_key_bits().

Typedef Documentation

typedef uint16_t psa_key_attributes_flag_t

A mask of flags that can be stored in key attributes.

This type is also used internally to store flags in slots. Internal flags are defined in library/psa_crypto_core.h. Internal flags may have the same value as external flags if they are properly handled during key creation and in psa_get_key_attributes.

Definition at line 324 of file crypto_struct.h.

typedef uint16_t psa_key_bits_t

Definition at line 306 of file crypto_struct.h.

Definition at line 295 of file crypto_struct.h.

Enumeration Type Documentation

Enumerator
PSA_TLS12_PRF_STATE_INIT 
PSA_TLS12_PRF_STATE_SEED_SET 
PSA_TLS12_PRF_STATE_KEY_SET 
PSA_TLS12_PRF_STATE_LABEL_SET 
PSA_TLS12_PRF_STATE_OUTPUT 

Definition at line 229 of file crypto_struct.h.

Function Documentation

static struct psa_aead_operation_s psa_aead_operation_init ( void  )
static

Definition at line 204 of file crypto_struct.h.

References PSA_AEAD_OPERATION_INIT.

static struct psa_cipher_operation_s psa_cipher_operation_init ( void  )
static

Definition at line 183 of file crypto_struct.h.

References PSA_CIPHER_OPERATION_INIT.

static psa_algorithm_t psa_get_key_algorithm ( const psa_key_attributes_t attributes)
inlinestatic
static size_t psa_get_key_bits ( const psa_key_attributes_t attributes)
inlinestatic

Definition at line 488 of file crypto_struct.h.

References psa_core_key_attributes_t::bits, and psa_key_attributes_s::core.

static mbedtls_svc_key_id_t psa_get_key_id ( const psa_key_attributes_t attributes)
inlinestatic

Definition at line 390 of file crypto_struct.h.

References psa_key_attributes_s::core, and psa_core_key_attributes_t::id.

static psa_key_lifetime_t psa_get_key_lifetime ( const psa_key_attributes_t attributes)
inlinestatic
static psa_key_type_t psa_get_key_type ( const psa_key_attributes_t attributes)
inlinestatic

Definition at line 473 of file crypto_struct.h.

References psa_key_attributes_s::core, and psa_core_key_attributes_t::type.

static psa_key_usage_t psa_get_key_usage_flags ( const psa_key_attributes_t attributes)
inlinestatic
static struct psa_hash_operation_s psa_hash_operation_init ( void  )
static

Definition at line 121 of file crypto_struct.h.

References PSA_HASH_OPERATION_INIT.

static struct psa_key_attributes_s psa_key_attributes_init ( void  )
static

Definition at line 368 of file crypto_struct.h.

References PSA_KEY_ATTRIBUTES_INIT.

static struct psa_key_derivation_s psa_key_derivation_operation_init ( void  )
static

Definition at line 283 of file crypto_struct.h.

References PSA_KEY_DERIVATION_OPERATION_INIT.

static struct psa_key_policy_s psa_key_policy_init ( void  )
static

Definition at line 298 of file crypto_struct.h.

References PSA_KEY_POLICY_INIT.

static struct psa_mac_operation_s psa_mac_operation_init ( void  )
static

Definition at line 159 of file crypto_struct.h.

References PSA_MAC_OPERATION_INIT.

static void psa_set_key_algorithm ( psa_key_attributes_t attributes,
psa_algorithm_t  alg 
)
inlinestatic
static void psa_set_key_bits ( psa_key_attributes_t attributes,
size_t  bits 
)
inlinestatic
psa_status_t psa_set_key_domain_parameters ( psa_key_attributes_t attributes,
psa_key_type_t  type,
const uint8_t *  data,
size_t  data_length 
)

Referenced by psa_set_key_type().

static void psa_set_key_id ( psa_key_attributes_t attributes,
mbedtls_svc_key_id_t  key 
)
inlinestatic
static void psa_set_key_lifetime ( psa_key_attributes_t attributes,
psa_key_lifetime_t  lifetime 
)
inlinestatic
static void psa_set_key_type ( psa_key_attributes_t attributes,
psa_key_type_t  type 
)
inlinestatic
static void psa_set_key_usage_flags ( psa_key_attributes_t attributes,
psa_key_usage_t  usage_flags 
)
inlinestatic