mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-04-30 07:18:16 +02:00
Switch to the new code style
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
@@ -137,8 +137,8 @@ static psa_key_attributes_t psa_key_attributes_init(void);
|
||||
* \param[out] attributes The attribute structure to write to.
|
||||
* \param key The persistent identifier for the key.
|
||||
*/
|
||||
static void psa_set_key_id( psa_key_attributes_t *attributes,
|
||||
mbedtls_svc_key_id_t key );
|
||||
static void psa_set_key_id(psa_key_attributes_t *attributes,
|
||||
mbedtls_svc_key_id_t key);
|
||||
|
||||
#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
|
||||
/** Set the owner identifier of a key.
|
||||
@@ -155,8 +155,8 @@ static void psa_set_key_id( psa_key_attributes_t *attributes,
|
||||
* \param[out] attributes The attribute structure to write to.
|
||||
* \param owner The key owner identifier.
|
||||
*/
|
||||
static void mbedtls_set_key_owner_id( psa_key_attributes_t *attributes,
|
||||
mbedtls_key_owner_id_t owner );
|
||||
static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
|
||||
mbedtls_key_owner_id_t owner);
|
||||
#endif
|
||||
|
||||
/** Set the location of a persistent key.
|
||||
@@ -2884,13 +2884,13 @@ psa_status_t psa_aead_abort(psa_aead_operation_t *operation);
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_sign_message( mbedtls_svc_key_id_t key,
|
||||
psa_algorithm_t alg,
|
||||
const uint8_t * input,
|
||||
size_t input_length,
|
||||
uint8_t * signature,
|
||||
size_t signature_size,
|
||||
size_t * signature_length );
|
||||
psa_status_t psa_sign_message(mbedtls_svc_key_id_t key,
|
||||
psa_algorithm_t alg,
|
||||
const uint8_t *input,
|
||||
size_t input_length,
|
||||
uint8_t *signature,
|
||||
size_t signature_size,
|
||||
size_t *signature_length);
|
||||
|
||||
/** \brief Verify the signature of a message with a public key, using
|
||||
* a hash-and-sign verification algorithm.
|
||||
@@ -2936,12 +2936,12 @@ psa_status_t psa_sign_message( mbedtls_svc_key_id_t key,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_verify_message( mbedtls_svc_key_id_t key,
|
||||
psa_algorithm_t alg,
|
||||
const uint8_t * input,
|
||||
size_t input_length,
|
||||
const uint8_t * signature,
|
||||
size_t signature_length );
|
||||
psa_status_t psa_verify_message(mbedtls_svc_key_id_t key,
|
||||
psa_algorithm_t alg,
|
||||
const uint8_t *input,
|
||||
size_t input_length,
|
||||
const uint8_t *signature,
|
||||
size_t signature_length);
|
||||
|
||||
/**
|
||||
* \brief Sign a hash or short message with a private key.
|
||||
@@ -3336,7 +3336,7 @@ psa_status_t psa_key_derivation_set_capacity(
|
||||
* The value of the maximum possible capacity depends on the key derivation
|
||||
* algorithm.
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t)(-1))
|
||||
#define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t) (-1))
|
||||
|
||||
/** Provide an input for key derivation or key agreement.
|
||||
*
|
||||
|
||||
@@ -45,8 +45,7 @@
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) || defined(PSA_CRYPTO_DRIVER_TEST)
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
/** The HMAC algorithm in use */
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg);
|
||||
/** The hash context. */
|
||||
@@ -55,16 +54,14 @@ typedef struct
|
||||
uint8_t MBEDTLS_PRIVATE(opad)[PSA_HMAC_MAX_HASH_BLOCK_SIZE];
|
||||
} mbedtls_psa_hmac_operation_t;
|
||||
|
||||
#define MBEDTLS_PSA_HMAC_OPERATION_INIT {0, PSA_HASH_OPERATION_INIT, {0}}
|
||||
#define MBEDTLS_PSA_HMAC_OPERATION_INIT { 0, PSA_HASH_OPERATION_INIT, { 0 } }
|
||||
#endif /* MBEDTLS_PSA_BUILTIN_ALG_HMAC */
|
||||
|
||||
#include "mbedtls/cmac.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg);
|
||||
union
|
||||
{
|
||||
union {
|
||||
unsigned MBEDTLS_PRIVATE(dummy); /* Make the union non-empty even with no supported algorithms. */
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_HMAC) || defined(PSA_CRYPTO_DRIVER_TEST)
|
||||
mbedtls_psa_hmac_operation_t MBEDTLS_PRIVATE(hmac);
|
||||
@@ -75,7 +72,7 @@ typedef struct
|
||||
} MBEDTLS_PRIVATE(ctx);
|
||||
} mbedtls_psa_mac_operation_t;
|
||||
|
||||
#define MBEDTLS_PSA_MAC_OPERATION_INIT {0, {0}}
|
||||
#define MBEDTLS_PSA_MAC_OPERATION_INIT { 0, { 0 } }
|
||||
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_GCM) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_CCM) || \
|
||||
@@ -84,8 +81,7 @@ typedef struct
|
||||
#endif
|
||||
|
||||
/* Context structure for the Mbed TLS AEAD implementation. */
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg);
|
||||
psa_key_type_t MBEDTLS_PRIVATE(key_type);
|
||||
|
||||
@@ -93,8 +89,7 @@ typedef struct
|
||||
|
||||
uint8_t MBEDTLS_PRIVATE(tag_length);
|
||||
|
||||
union
|
||||
{
|
||||
union {
|
||||
unsigned dummy; /* Enable easier initializing of the union. */
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_CCM)
|
||||
mbedtls_ccm_context MBEDTLS_PRIVATE(ccm);
|
||||
@@ -110,6 +105,6 @@ typedef struct
|
||||
|
||||
} mbedtls_psa_aead_operation_t;
|
||||
|
||||
#define MBEDTLS_PSA_AEAD_OPERATION_INIT {0, 0, 0, 0, {0}}
|
||||
#define MBEDTLS_PSA_AEAD_OPERATION_INIT { 0, 0, 0, 0, { 0 } }
|
||||
|
||||
#endif /* PSA_CRYPTO_BUILTIN_COMPOSITES_H */
|
||||
|
||||
@@ -56,11 +56,9 @@
|
||||
#define MBEDTLS_PSA_BUILTIN_HASH
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg);
|
||||
union
|
||||
{
|
||||
union {
|
||||
unsigned dummy; /* Make the union non-empty even with no supported algorithms. */
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5)
|
||||
mbedtls_md5_context md5;
|
||||
@@ -72,17 +70,17 @@ typedef struct
|
||||
mbedtls_sha1_context sha1;
|
||||
#endif
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224)
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224)
|
||||
mbedtls_sha256_context sha256;
|
||||
#endif
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384)
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384)
|
||||
mbedtls_sha512_context sha512;
|
||||
#endif
|
||||
} MBEDTLS_PRIVATE(ctx);
|
||||
} mbedtls_psa_hash_operation_t;
|
||||
|
||||
#define MBEDTLS_PSA_HASH_OPERATION_INIT {0, {0}}
|
||||
#define MBEDTLS_PSA_HASH_OPERATION_INIT { 0, { 0 } }
|
||||
|
||||
/*
|
||||
* Cipher multi-part operation definitions.
|
||||
@@ -111,6 +109,6 @@ typedef struct {
|
||||
} MBEDTLS_PRIVATE(ctx);
|
||||
} mbedtls_psa_cipher_operation_t;
|
||||
|
||||
#define MBEDTLS_PSA_CIPHER_OPERATION_INIT {0, 0, 0, {0}}
|
||||
#define MBEDTLS_PSA_CIPHER_OPERATION_INIT { 0, 0, 0, { 0 } }
|
||||
|
||||
#endif /* PSA_CRYPTO_BUILTIN_PRIMITIVES_H */
|
||||
|
||||
@@ -50,9 +50,9 @@ typedef mbedtls_svc_key_id_t psa_key_handle_t;
|
||||
*
|
||||
* \return Non-zero if the handle is null, zero otherwise.
|
||||
*/
|
||||
static inline int psa_key_handle_is_null( psa_key_handle_t handle )
|
||||
static inline int psa_key_handle_is_null(psa_key_handle_t handle)
|
||||
{
|
||||
return( mbedtls_svc_key_id_is_null( handle ) );
|
||||
return mbedtls_svc_key_id_is_null(handle);
|
||||
}
|
||||
|
||||
/** Open a handle to an existing persistent key.
|
||||
@@ -115,8 +115,8 @@ static inline int psa_key_handle_is_null( psa_key_handle_t handle )
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_open_key( mbedtls_svc_key_id_t key,
|
||||
psa_key_handle_t *handle );
|
||||
psa_status_t psa_open_key(mbedtls_svc_key_id_t key,
|
||||
psa_key_handle_t *handle);
|
||||
|
||||
/** Close a key handle.
|
||||
*
|
||||
|
||||
@@ -50,41 +50,41 @@
|
||||
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
|
||||
defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
|
||||
typedef libtestdriver1_mbedtls_psa_mac_operation_t
|
||||
mbedtls_transparent_test_driver_mac_operation_t;
|
||||
mbedtls_transparent_test_driver_mac_operation_t;
|
||||
typedef libtestdriver1_mbedtls_psa_mac_operation_t
|
||||
mbedtls_opaque_test_driver_mac_operation_t;
|
||||
mbedtls_opaque_test_driver_mac_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_MAC_OPERATION_INIT \
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
#define MBEDTLS_OPAQUE_TEST_DRIVER_MAC_OPERATION_INIT \
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
|
||||
#else
|
||||
typedef mbedtls_psa_mac_operation_t
|
||||
mbedtls_transparent_test_driver_mac_operation_t;
|
||||
mbedtls_transparent_test_driver_mac_operation_t;
|
||||
typedef mbedtls_psa_mac_operation_t
|
||||
mbedtls_opaque_test_driver_mac_operation_t;
|
||||
mbedtls_opaque_test_driver_mac_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_MAC_OPERATION_INIT \
|
||||
MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
#define MBEDTLS_OPAQUE_TEST_DRIVER_MAC_OPERATION_INIT \
|
||||
MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
MBEDTLS_PSA_MAC_OPERATION_INIT
|
||||
|
||||
#endif /* MBEDTLS_TEST_LIBTESTDRIVER1 && LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC */
|
||||
|
||||
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
|
||||
defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_AEAD)
|
||||
typedef libtestdriver1_mbedtls_psa_aead_operation_t
|
||||
mbedtls_transparent_test_driver_aead_operation_t;
|
||||
mbedtls_transparent_test_driver_aead_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_AEAD_OPERATION_INIT \
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_AEAD_OPERATION_INIT
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_AEAD_OPERATION_INIT
|
||||
#else
|
||||
typedef mbedtls_psa_aead_operation_t
|
||||
mbedtls_transparent_test_driver_aead_operation_t;
|
||||
mbedtls_transparent_test_driver_aead_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_AEAD_OPERATION_INIT \
|
||||
MBEDTLS_PSA_AEAD_OPERATION_INIT
|
||||
MBEDTLS_PSA_AEAD_OPERATION_INIT
|
||||
|
||||
#endif /* MBEDTLS_TEST_LIBTESTDRIVER1 && LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_AEAD */
|
||||
|
||||
|
||||
@@ -50,32 +50,32 @@
|
||||
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
|
||||
defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_CIPHER)
|
||||
typedef libtestdriver1_mbedtls_psa_cipher_operation_t
|
||||
mbedtls_transparent_test_driver_cipher_operation_t;
|
||||
mbedtls_transparent_test_driver_cipher_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_CIPHER_OPERATION_INIT \
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_CIPHER_OPERATION_INIT
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_CIPHER_OPERATION_INIT
|
||||
#else
|
||||
typedef mbedtls_psa_cipher_operation_t
|
||||
mbedtls_transparent_test_driver_cipher_operation_t;
|
||||
mbedtls_transparent_test_driver_cipher_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_CIPHER_OPERATION_INIT \
|
||||
MBEDTLS_PSA_CIPHER_OPERATION_INIT
|
||||
MBEDTLS_PSA_CIPHER_OPERATION_INIT
|
||||
#endif /* MBEDTLS_TEST_LIBTESTDRIVER1 &&
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_CIPHER */
|
||||
|
||||
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
|
||||
defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
|
||||
typedef libtestdriver1_mbedtls_psa_hash_operation_t
|
||||
mbedtls_transparent_test_driver_hash_operation_t;
|
||||
mbedtls_transparent_test_driver_hash_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_HASH_OPERATION_INIT \
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_HASH_OPERATION_INIT
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_HASH_OPERATION_INIT
|
||||
#else
|
||||
typedef mbedtls_psa_hash_operation_t
|
||||
mbedtls_transparent_test_driver_hash_operation_t;
|
||||
mbedtls_transparent_test_driver_hash_operation_t;
|
||||
|
||||
#define MBEDTLS_TRANSPARENT_TEST_DRIVER_HASH_OPERATION_INIT \
|
||||
MBEDTLS_PSA_HASH_OPERATION_INIT
|
||||
MBEDTLS_PSA_HASH_OPERATION_INIT
|
||||
#endif /* MBEDTLS_TEST_LIBTESTDRIVER1 &&
|
||||
LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH */
|
||||
|
||||
@@ -85,7 +85,7 @@ typedef struct {
|
||||
} mbedtls_opaque_test_driver_cipher_operation_t;
|
||||
|
||||
#define MBEDTLS_OPAQUE_TEST_DRIVER_CIPHER_OPERATION_INIT \
|
||||
{ 0, MBEDTLS_TRANSPARENT_TEST_DRIVER_CIPHER_OPERATION_INIT }
|
||||
{ 0, MBEDTLS_TRANSPARENT_TEST_DRIVER_CIPHER_OPERATION_INIT }
|
||||
|
||||
#endif /* PSA_CRYPTO_DRIVER_TEST */
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ static inline void psa_set_key_enrollment_algorithm(
|
||||
static inline psa_algorithm_t psa_get_key_enrollment_algorithm(
|
||||
const psa_key_attributes_t *attributes)
|
||||
{
|
||||
return( attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg2) );
|
||||
return attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg2);
|
||||
}
|
||||
|
||||
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
||||
@@ -114,7 +114,7 @@ static inline psa_algorithm_t psa_get_key_enrollment_algorithm(
|
||||
*/
|
||||
psa_status_t psa_get_key_slot_number(
|
||||
const psa_key_attributes_t *attributes,
|
||||
psa_key_slot_number_t *slot_number );
|
||||
psa_key_slot_number_t *slot_number);
|
||||
|
||||
/** Choose the slot number where a key is stored.
|
||||
*
|
||||
@@ -141,7 +141,7 @@ psa_status_t psa_get_key_slot_number(
|
||||
*/
|
||||
static inline void psa_set_key_slot_number(
|
||||
psa_key_attributes_t *attributes,
|
||||
psa_key_slot_number_t slot_number )
|
||||
psa_key_slot_number_t slot_number)
|
||||
{
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(flags) |= MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER;
|
||||
attributes->MBEDTLS_PRIVATE(slot_number) = slot_number;
|
||||
@@ -154,9 +154,10 @@ static inline void psa_set_key_slot_number(
|
||||
* \param[out] attributes The attribute structure to write to.
|
||||
*/
|
||||
static inline void psa_clear_key_slot_number(
|
||||
psa_key_attributes_t *attributes )
|
||||
psa_key_attributes_t *attributes)
|
||||
{
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(flags) &= ~MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER;
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(flags) &=
|
||||
~MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER;
|
||||
}
|
||||
|
||||
/** Register a key that is already present in a secure element.
|
||||
@@ -214,7 +215,7 @@ psa_status_t mbedtls_psa_register_se_key(
|
||||
*
|
||||
* This is an Mbed TLS extension.
|
||||
*/
|
||||
void mbedtls_psa_crypto_free( void );
|
||||
void mbedtls_psa_crypto_free(void);
|
||||
|
||||
/** \brief Statistics about
|
||||
* resource consumption related to the PSA keystore.
|
||||
@@ -222,8 +223,7 @@ void mbedtls_psa_crypto_free( void );
|
||||
* \note The content of this structure is not part of the stable API and ABI
|
||||
* of Mbed Crypto and may change arbitrarily from version to version.
|
||||
*/
|
||||
typedef struct mbedtls_psa_stats_s
|
||||
{
|
||||
typedef struct mbedtls_psa_stats_s {
|
||||
/** Number of slots containing key material for a volatile key. */
|
||||
size_t MBEDTLS_PRIVATE(volatile_slots);
|
||||
/** Number of slots containing key material for a key which is in
|
||||
@@ -254,7 +254,7 @@ typedef struct mbedtls_psa_stats_s
|
||||
* between the application and the keystore, the service may or
|
||||
* may not expose this function.
|
||||
*/
|
||||
void mbedtls_psa_get_stats( mbedtls_psa_stats_t *stats );
|
||||
void mbedtls_psa_get_stats(mbedtls_psa_stats_t *stats);
|
||||
|
||||
/**
|
||||
* \brief Inject an initial entropy seed for the random generator into
|
||||
@@ -339,7 +339,7 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed,
|
||||
* string. The length of the byte string is the length of the base prime `p`
|
||||
* in bytes.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x4002)
|
||||
#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t) 0x4002)
|
||||
|
||||
/** DSA key pair (private and public key).
|
||||
*
|
||||
@@ -357,13 +357,13 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed,
|
||||
* Add 1 to the resulting integer and use this as the private key *x*.
|
||||
*
|
||||
*/
|
||||
#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t)0x7002)
|
||||
#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t) 0x7002)
|
||||
|
||||
/** Whether a key type is a DSA key (pair or public-only). */
|
||||
#define PSA_KEY_TYPE_IS_DSA(type) \
|
||||
(PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY)
|
||||
|
||||
#define PSA_ALG_DSA_BASE ((psa_algorithm_t)0x06000400)
|
||||
#define PSA_ALG_DSA_BASE ((psa_algorithm_t) 0x06000400)
|
||||
/** DSA signature with hashing.
|
||||
*
|
||||
* This is the signature scheme defined by FIPS 186-4,
|
||||
@@ -380,7 +380,7 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed,
|
||||
*/
|
||||
#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)0x06000500)
|
||||
#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t) 0x06000500)
|
||||
#define PSA_ALG_DSA_DETERMINISTIC_FLAG PSA_ALG_ECDSA_DETERMINISTIC_FLAG
|
||||
/** Deterministic DSA signature with hashing.
|
||||
*
|
||||
@@ -587,53 +587,52 @@ psa_status_t psa_get_key_domain_parameters(
|
||||
* (`PSA_ECC_FAMILY_xxx`).
|
||||
* \return \c 0 on failure (\p grpid is not recognized).
|
||||
*/
|
||||
static inline psa_ecc_family_t mbedtls_ecc_group_to_psa( mbedtls_ecp_group_id grpid,
|
||||
size_t *bits )
|
||||
static inline psa_ecc_family_t mbedtls_ecc_group_to_psa(mbedtls_ecp_group_id grpid,
|
||||
size_t *bits)
|
||||
{
|
||||
switch( grpid )
|
||||
{
|
||||
switch (grpid) {
|
||||
case MBEDTLS_ECP_DP_SECP192R1:
|
||||
*bits = 192;
|
||||
return( PSA_ECC_FAMILY_SECP_R1 );
|
||||
return PSA_ECC_FAMILY_SECP_R1;
|
||||
case MBEDTLS_ECP_DP_SECP224R1:
|
||||
*bits = 224;
|
||||
return( PSA_ECC_FAMILY_SECP_R1 );
|
||||
return PSA_ECC_FAMILY_SECP_R1;
|
||||
case MBEDTLS_ECP_DP_SECP256R1:
|
||||
*bits = 256;
|
||||
return( PSA_ECC_FAMILY_SECP_R1 );
|
||||
return PSA_ECC_FAMILY_SECP_R1;
|
||||
case MBEDTLS_ECP_DP_SECP384R1:
|
||||
*bits = 384;
|
||||
return( PSA_ECC_FAMILY_SECP_R1 );
|
||||
return PSA_ECC_FAMILY_SECP_R1;
|
||||
case MBEDTLS_ECP_DP_SECP521R1:
|
||||
*bits = 521;
|
||||
return( PSA_ECC_FAMILY_SECP_R1 );
|
||||
return PSA_ECC_FAMILY_SECP_R1;
|
||||
case MBEDTLS_ECP_DP_BP256R1:
|
||||
*bits = 256;
|
||||
return( PSA_ECC_FAMILY_BRAINPOOL_P_R1 );
|
||||
return PSA_ECC_FAMILY_BRAINPOOL_P_R1;
|
||||
case MBEDTLS_ECP_DP_BP384R1:
|
||||
*bits = 384;
|
||||
return( PSA_ECC_FAMILY_BRAINPOOL_P_R1 );
|
||||
return PSA_ECC_FAMILY_BRAINPOOL_P_R1;
|
||||
case MBEDTLS_ECP_DP_BP512R1:
|
||||
*bits = 512;
|
||||
return( PSA_ECC_FAMILY_BRAINPOOL_P_R1 );
|
||||
return PSA_ECC_FAMILY_BRAINPOOL_P_R1;
|
||||
case MBEDTLS_ECP_DP_CURVE25519:
|
||||
*bits = 255;
|
||||
return( PSA_ECC_FAMILY_MONTGOMERY );
|
||||
return PSA_ECC_FAMILY_MONTGOMERY;
|
||||
case MBEDTLS_ECP_DP_SECP192K1:
|
||||
*bits = 192;
|
||||
return( PSA_ECC_FAMILY_SECP_K1 );
|
||||
return PSA_ECC_FAMILY_SECP_K1;
|
||||
case MBEDTLS_ECP_DP_SECP224K1:
|
||||
*bits = 224;
|
||||
return( PSA_ECC_FAMILY_SECP_K1 );
|
||||
return PSA_ECC_FAMILY_SECP_K1;
|
||||
case MBEDTLS_ECP_DP_SECP256K1:
|
||||
*bits = 256;
|
||||
return( PSA_ECC_FAMILY_SECP_K1 );
|
||||
return PSA_ECC_FAMILY_SECP_K1;
|
||||
case MBEDTLS_ECP_DP_CURVE448:
|
||||
*bits = 448;
|
||||
return( PSA_ECC_FAMILY_MONTGOMERY );
|
||||
return PSA_ECC_FAMILY_MONTGOMERY;
|
||||
default:
|
||||
*bits = 0;
|
||||
return( 0 );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -656,9 +655,9 @@ static inline psa_ecc_family_t mbedtls_ecc_group_to_psa( mbedtls_ecp_group_id gr
|
||||
* \return #MBEDTLS_ECP_DP_NONE if \p bits is not
|
||||
* correct for \p curve.
|
||||
*/
|
||||
mbedtls_ecp_group_id mbedtls_ecc_group_of_psa( psa_ecc_family_t curve,
|
||||
size_t bits,
|
||||
int bits_is_sloppy );
|
||||
mbedtls_ecp_group_id mbedtls_ecc_group_of_psa(psa_ecc_family_t curve,
|
||||
size_t bits,
|
||||
int bits_is_sloppy);
|
||||
#endif /* MBEDTLS_ECP_C */
|
||||
|
||||
/**@}*/
|
||||
@@ -709,7 +708,7 @@ mbedtls_ecp_group_id mbedtls_ecc_group_of_psa( psa_ecc_family_t curve,
|
||||
*/
|
||||
psa_status_t mbedtls_psa_external_get_random(
|
||||
mbedtls_psa_external_random_context_t *context,
|
||||
uint8_t *output, size_t output_size, size_t *output_length );
|
||||
uint8_t *output, size_t output_size, size_t *output_length);
|
||||
#endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */
|
||||
|
||||
/**@}*/
|
||||
@@ -729,14 +728,14 @@ psa_status_t mbedtls_psa_external_get_random(
|
||||
* This value is part of the library's ABI since changing it would invalidate
|
||||
* the values of built-in key identifiers in applications.
|
||||
*/
|
||||
#define MBEDTLS_PSA_KEY_ID_BUILTIN_MIN ((psa_key_id_t)0x7fff0000)
|
||||
#define MBEDTLS_PSA_KEY_ID_BUILTIN_MIN ((psa_key_id_t) 0x7fff0000)
|
||||
|
||||
/** The maximum value for a key identifier that is built into the
|
||||
* implementation.
|
||||
*
|
||||
* See #MBEDTLS_PSA_KEY_ID_BUILTIN_MIN for more information.
|
||||
*/
|
||||
#define MBEDTLS_PSA_KEY_ID_BUILTIN_MAX ((psa_key_id_t)0x7fffefff)
|
||||
#define MBEDTLS_PSA_KEY_ID_BUILTIN_MAX ((psa_key_id_t) 0x7fffefff)
|
||||
|
||||
/** A slot number identifying a key in a driver.
|
||||
*
|
||||
@@ -754,10 +753,10 @@ typedef uint64_t psa_drv_slot_number_t;
|
||||
* \retval 0
|
||||
* The key identifier is not a builtin key identifier.
|
||||
*/
|
||||
static inline int psa_key_id_is_builtin( psa_key_id_t key_id )
|
||||
static inline int psa_key_id_is_builtin(psa_key_id_t key_id)
|
||||
{
|
||||
return( ( key_id >= MBEDTLS_PSA_KEY_ID_BUILTIN_MIN ) &&
|
||||
( key_id <= MBEDTLS_PSA_KEY_ID_BUILTIN_MAX ) );
|
||||
return (key_id >= MBEDTLS_PSA_KEY_ID_BUILTIN_MIN) &&
|
||||
(key_id <= MBEDTLS_PSA_KEY_ID_BUILTIN_MAX);
|
||||
}
|
||||
|
||||
/** Platform function to obtain the location and slot number of a built-in key.
|
||||
@@ -807,7 +806,7 @@ static inline int psa_key_id_is_builtin( psa_key_id_t key_id )
|
||||
psa_status_t mbedtls_psa_platform_get_builtin_key(
|
||||
mbedtls_svc_key_id_t key_id,
|
||||
psa_key_lifetime_t *lifetime,
|
||||
psa_drv_slot_number_t *slot_number );
|
||||
psa_drv_slot_number_t *slot_number);
|
||||
#endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */
|
||||
|
||||
/** @} */
|
||||
@@ -816,7 +815,7 @@ psa_status_t mbedtls_psa_platform_get_builtin_key(
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define PSA_ALG_CATEGORY_PAKE ((psa_algorithm_t)0x0a000000)
|
||||
#define PSA_ALG_CATEGORY_PAKE ((psa_algorithm_t) 0x0a000000)
|
||||
|
||||
/** Whether the specified algorithm is a password-authenticated key exchange.
|
||||
*
|
||||
@@ -945,7 +944,7 @@ psa_status_t mbedtls_psa_platform_get_builtin_key(
|
||||
* of RFC 8236 for two examples.
|
||||
*
|
||||
*/
|
||||
#define PSA_ALG_JPAKE ((psa_algorithm_t)0x0a000100)
|
||||
#define PSA_ALG_JPAKE ((psa_algorithm_t) 0x0a000100)
|
||||
|
||||
/** @} */
|
||||
|
||||
@@ -1004,7 +1003,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* This value can be used in a call to psa_pake_set_role() for symmetric PAKE
|
||||
* algorithms which do not assign roles.
|
||||
*/
|
||||
#define PSA_PAKE_ROLE_NONE ((psa_pake_role_t)0x00)
|
||||
#define PSA_PAKE_ROLE_NONE ((psa_pake_role_t) 0x00)
|
||||
|
||||
/** The first peer in a balanced PAKE.
|
||||
*
|
||||
@@ -1013,7 +1012,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* need this, both #PSA_PAKE_ROLE_FIRST and #PSA_PAKE_ROLE_SECOND are
|
||||
* accepted.
|
||||
*/
|
||||
#define PSA_PAKE_ROLE_FIRST ((psa_pake_role_t)0x01)
|
||||
#define PSA_PAKE_ROLE_FIRST ((psa_pake_role_t) 0x01)
|
||||
|
||||
/** The second peer in a balanced PAKE.
|
||||
*
|
||||
@@ -1022,19 +1021,19 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* need this, either #PSA_PAKE_ROLE_FIRST or #PSA_PAKE_ROLE_SECOND are
|
||||
* accepted.
|
||||
*/
|
||||
#define PSA_PAKE_ROLE_SECOND ((psa_pake_role_t)0x02)
|
||||
#define PSA_PAKE_ROLE_SECOND ((psa_pake_role_t) 0x02)
|
||||
|
||||
/** The client in an augmented PAKE.
|
||||
*
|
||||
* Augmented PAKE algorithms need to differentiate between client and server.
|
||||
*/
|
||||
#define PSA_PAKE_ROLE_CLIENT ((psa_pake_role_t)0x11)
|
||||
#define PSA_PAKE_ROLE_CLIENT ((psa_pake_role_t) 0x11)
|
||||
|
||||
/** The server in an augmented PAKE.
|
||||
*
|
||||
* Augmented PAKE algorithms need to differentiate between client and server.
|
||||
*/
|
||||
#define PSA_PAKE_ROLE_SERVER ((psa_pake_role_t)0x12)
|
||||
#define PSA_PAKE_ROLE_SERVER ((psa_pake_role_t) 0x12)
|
||||
|
||||
/** The PAKE primitive type indicating the use of elliptic curves.
|
||||
*
|
||||
@@ -1054,7 +1053,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* curve would be. For more information, consult the documentation of
|
||||
* psa_export_key().
|
||||
*/
|
||||
#define PSA_PAKE_PRIMITIVE_TYPE_ECC ((psa_pake_primitive_type_t)0x01)
|
||||
#define PSA_PAKE_PRIMITIVE_TYPE_ECC ((psa_pake_primitive_type_t) 0x01)
|
||||
|
||||
/** The PAKE primitive type indicating the use of Diffie-Hellman groups.
|
||||
*
|
||||
@@ -1074,7 +1073,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* group would be. For more information, consult the documentation of
|
||||
* psa_export_key().
|
||||
*/
|
||||
#define PSA_PAKE_PRIMITIVE_TYPE_DH ((psa_pake_primitive_type_t)0x02)
|
||||
#define PSA_PAKE_PRIMITIVE_TYPE_DH ((psa_pake_primitive_type_t) 0x02)
|
||||
|
||||
/** Construct a PAKE primitive from type, family and bit-size.
|
||||
*
|
||||
@@ -1098,7 +1097,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
#define PSA_PAKE_PRIMITIVE(pake_type, pake_family, pake_bits) \
|
||||
((pake_bits & 0xFFFF) != pake_bits) ? 0 : \
|
||||
((psa_pake_primitive_t) (((pake_type) << 24 | \
|
||||
(pake_family) << 16) | (pake_bits)))
|
||||
(pake_family) << 16) | (pake_bits)))
|
||||
|
||||
/** The key share being sent to or received from the peer.
|
||||
*
|
||||
@@ -1112,7 +1111,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* For information regarding how the group is determined, consult the
|
||||
* documentation #PSA_PAKE_PRIMITIVE.
|
||||
*/
|
||||
#define PSA_PAKE_STEP_KEY_SHARE ((psa_pake_step_t)0x01)
|
||||
#define PSA_PAKE_STEP_KEY_SHARE ((psa_pake_step_t) 0x01)
|
||||
|
||||
/** A Schnorr NIZKP public key.
|
||||
*
|
||||
@@ -1129,7 +1128,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* For information regarding how the group is determined, consult the
|
||||
* documentation #PSA_PAKE_PRIMITIVE.
|
||||
*/
|
||||
#define PSA_PAKE_STEP_ZK_PUBLIC ((psa_pake_step_t)0x02)
|
||||
#define PSA_PAKE_STEP_ZK_PUBLIC ((psa_pake_step_t) 0x02)
|
||||
|
||||
/** A Schnorr NIZKP proof.
|
||||
*
|
||||
@@ -1150,7 +1149,7 @@ typedef uint32_t psa_pake_primitive_t;
|
||||
* For information regarding how the group is determined, consult the
|
||||
* documentation #PSA_PAKE_PRIMITIVE.
|
||||
*/
|
||||
#define PSA_PAKE_STEP_ZK_PROOF ((psa_pake_step_t)0x03)
|
||||
#define PSA_PAKE_STEP_ZK_PROOF ((psa_pake_step_t) 0x03)
|
||||
|
||||
/** The type of the data structure for PAKE cipher suites.
|
||||
*
|
||||
@@ -1162,7 +1161,7 @@ typedef struct psa_pake_cipher_suite_s psa_pake_cipher_suite_t;
|
||||
|
||||
/** Return an initial value for a PAKE cipher suite object.
|
||||
*/
|
||||
static psa_pake_cipher_suite_t psa_pake_cipher_suite_init( void );
|
||||
static psa_pake_cipher_suite_t psa_pake_cipher_suite_init(void);
|
||||
|
||||
/** Retrieve the PAKE algorithm from a PAKE cipher suite.
|
||||
*
|
||||
@@ -1171,7 +1170,7 @@ static psa_pake_cipher_suite_t psa_pake_cipher_suite_init( void );
|
||||
* \return The PAKE algorithm stored in the cipher suite structure.
|
||||
*/
|
||||
static psa_algorithm_t psa_pake_cs_get_algorithm(
|
||||
const psa_pake_cipher_suite_t *cipher_suite );
|
||||
const psa_pake_cipher_suite_t *cipher_suite);
|
||||
|
||||
/** Declare the PAKE algorithm for the cipher suite.
|
||||
*
|
||||
@@ -1185,8 +1184,8 @@ static psa_algorithm_t psa_pake_cs_get_algorithm(
|
||||
* If this is 0, the PAKE algorithm in
|
||||
* \p cipher_suite becomes unspecified.
|
||||
*/
|
||||
static void psa_pake_cs_set_algorithm( psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_algorithm_t algorithm );
|
||||
static void psa_pake_cs_set_algorithm(psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_algorithm_t algorithm);
|
||||
|
||||
/** Retrieve the primitive from a PAKE cipher suite.
|
||||
*
|
||||
@@ -1195,7 +1194,7 @@ static void psa_pake_cs_set_algorithm( psa_pake_cipher_suite_t *cipher_suite,
|
||||
* \return The primitive stored in the cipher suite structure.
|
||||
*/
|
||||
static psa_pake_primitive_t psa_pake_cs_get_primitive(
|
||||
const psa_pake_cipher_suite_t *cipher_suite );
|
||||
const psa_pake_cipher_suite_t *cipher_suite);
|
||||
|
||||
/** Declare the primitive for a PAKE cipher suite.
|
||||
*
|
||||
@@ -1206,8 +1205,8 @@ static psa_pake_primitive_t psa_pake_cs_get_primitive(
|
||||
* primitive type in \p cipher_suite becomes
|
||||
* unspecified.
|
||||
*/
|
||||
static void psa_pake_cs_set_primitive( psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_pake_primitive_t primitive );
|
||||
static void psa_pake_cs_set_primitive(psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_pake_primitive_t primitive);
|
||||
|
||||
/** Retrieve the PAKE family from a PAKE cipher suite.
|
||||
*
|
||||
@@ -1216,7 +1215,7 @@ static void psa_pake_cs_set_primitive( psa_pake_cipher_suite_t *cipher_suite,
|
||||
* \return The PAKE family stored in the cipher suite structure.
|
||||
*/
|
||||
static psa_pake_family_t psa_pake_cs_get_family(
|
||||
const psa_pake_cipher_suite_t *cipher_suite );
|
||||
const psa_pake_cipher_suite_t *cipher_suite);
|
||||
|
||||
/** Retrieve the PAKE primitive bit-size from a PAKE cipher suite.
|
||||
*
|
||||
@@ -1225,7 +1224,7 @@ static psa_pake_family_t psa_pake_cs_get_family(
|
||||
* \return The PAKE primitive bit-size stored in the cipher suite structure.
|
||||
*/
|
||||
static uint16_t psa_pake_cs_get_bits(
|
||||
const psa_pake_cipher_suite_t *cipher_suite );
|
||||
const psa_pake_cipher_suite_t *cipher_suite);
|
||||
|
||||
/** Retrieve the hash algorithm from a PAKE cipher suite.
|
||||
*
|
||||
@@ -1236,7 +1235,7 @@ static uint16_t psa_pake_cs_get_bits(
|
||||
* the hash algorithm is not set.
|
||||
*/
|
||||
static psa_algorithm_t psa_pake_cs_get_hash(
|
||||
const psa_pake_cipher_suite_t *cipher_suite );
|
||||
const psa_pake_cipher_suite_t *cipher_suite);
|
||||
|
||||
/** Declare the hash algorithm for a PAKE cipher suite.
|
||||
*
|
||||
@@ -1254,8 +1253,8 @@ static psa_algorithm_t psa_pake_cs_get_hash(
|
||||
* If this is 0, the hash algorithm in
|
||||
* \p cipher_suite becomes unspecified.
|
||||
*/
|
||||
static void psa_pake_cs_set_hash( psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_algorithm_t hash );
|
||||
static void psa_pake_cs_set_hash(psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_algorithm_t hash);
|
||||
|
||||
/** The type of the state data structure for PAKE operations.
|
||||
*
|
||||
@@ -1289,7 +1288,7 @@ typedef struct psa_pake_operation_s psa_pake_operation_t;
|
||||
|
||||
/** Return an initial value for a PAKE operation object.
|
||||
*/
|
||||
static psa_pake_operation_t psa_pake_operation_init( void );
|
||||
static psa_pake_operation_t psa_pake_operation_init(void);
|
||||
|
||||
/** Set the session information for a password-authenticated key exchange.
|
||||
*
|
||||
@@ -1361,8 +1360,8 @@ static psa_pake_operation_t psa_pake_operation_init( void );
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_setup( psa_pake_operation_t *operation,
|
||||
const psa_pake_cipher_suite_t *cipher_suite );
|
||||
psa_status_t psa_pake_setup(psa_pake_operation_t *operation,
|
||||
const psa_pake_cipher_suite_t *cipher_suite);
|
||||
|
||||
/** Set the password for a password-authenticated key exchange from key ID.
|
||||
*
|
||||
@@ -1409,8 +1408,8 @@ psa_status_t psa_pake_setup( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_set_password_key( psa_pake_operation_t *operation,
|
||||
mbedtls_svc_key_id_t password );
|
||||
psa_status_t psa_pake_set_password_key(psa_pake_operation_t *operation,
|
||||
mbedtls_svc_key_id_t password);
|
||||
|
||||
/** Set the user ID for a password-authenticated key exchange.
|
||||
*
|
||||
@@ -1449,9 +1448,9 @@ psa_status_t psa_pake_set_password_key( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_set_user( psa_pake_operation_t *operation,
|
||||
const uint8_t *user_id,
|
||||
size_t user_id_len );
|
||||
psa_status_t psa_pake_set_user(psa_pake_operation_t *operation,
|
||||
const uint8_t *user_id,
|
||||
size_t user_id_len);
|
||||
|
||||
/** Set the peer ID for a password-authenticated key exchange.
|
||||
*
|
||||
@@ -1491,9 +1490,9 @@ psa_status_t psa_pake_set_user( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_set_peer( psa_pake_operation_t *operation,
|
||||
const uint8_t *peer_id,
|
||||
size_t peer_id_len );
|
||||
psa_status_t psa_pake_set_peer(psa_pake_operation_t *operation,
|
||||
const uint8_t *peer_id,
|
||||
size_t peer_id_len);
|
||||
|
||||
/** Set the application role for a password-authenticated key exchange.
|
||||
*
|
||||
@@ -1533,8 +1532,8 @@ psa_status_t psa_pake_set_peer( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_set_role( psa_pake_operation_t *operation,
|
||||
psa_pake_role_t role );
|
||||
psa_status_t psa_pake_set_role(psa_pake_operation_t *operation,
|
||||
psa_pake_role_t role);
|
||||
|
||||
/** Get output for a step of a password-authenticated key exchange.
|
||||
*
|
||||
@@ -1591,11 +1590,11 @@ psa_status_t psa_pake_set_role( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_output( psa_pake_operation_t *operation,
|
||||
psa_pake_step_t step,
|
||||
uint8_t *output,
|
||||
size_t output_size,
|
||||
size_t *output_length );
|
||||
psa_status_t psa_pake_output(psa_pake_operation_t *operation,
|
||||
psa_pake_step_t step,
|
||||
uint8_t *output,
|
||||
size_t output_size,
|
||||
size_t *output_length);
|
||||
|
||||
/** Provide input for a step of a password-authenticated key exchange.
|
||||
*
|
||||
@@ -1646,10 +1645,10 @@ psa_status_t psa_pake_output( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_input( psa_pake_operation_t *operation,
|
||||
psa_pake_step_t step,
|
||||
const uint8_t *input,
|
||||
size_t input_length );
|
||||
psa_status_t psa_pake_input(psa_pake_operation_t *operation,
|
||||
psa_pake_step_t step,
|
||||
const uint8_t *input,
|
||||
size_t input_length);
|
||||
|
||||
/** Get implicitly confirmed shared secret from a PAKE.
|
||||
*
|
||||
@@ -1709,8 +1708,8 @@ psa_status_t psa_pake_input( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_get_implicit_key( psa_pake_operation_t *operation,
|
||||
psa_key_derivation_operation_t *output );
|
||||
psa_status_t psa_pake_get_implicit_key(psa_pake_operation_t *operation,
|
||||
psa_key_derivation_operation_t *output);
|
||||
|
||||
/** Abort a PAKE operation.
|
||||
*
|
||||
@@ -1736,7 +1735,7 @@ psa_status_t psa_pake_get_implicit_key( psa_pake_operation_t *operation,
|
||||
* It is implementation-dependent whether a failure to initialize
|
||||
* results in this error code.
|
||||
*/
|
||||
psa_status_t psa_pake_abort( psa_pake_operation_t * operation );
|
||||
psa_status_t psa_pake_abort(psa_pake_operation_t *operation);
|
||||
|
||||
/**@}*/
|
||||
|
||||
@@ -1761,15 +1760,15 @@ psa_status_t psa_pake_abort( psa_pake_operation_t * operation );
|
||||
* return 0.
|
||||
*/
|
||||
#define PSA_PAKE_OUTPUT_SIZE(alg, primitive, output_step) \
|
||||
( alg == PSA_ALG_JPAKE && \
|
||||
primitive == PSA_PAKE_PRIMITIVE(PSA_PAKE_PRIMITIVE_TYPE_ECC, \
|
||||
PSA_ECC_FAMILY_SECP_R1, 256) ? \
|
||||
( \
|
||||
output_step == PSA_PAKE_STEP_KEY_SHARE ? 65 : \
|
||||
output_step == PSA_PAKE_STEP_ZK_PUBLIC ? 65 : \
|
||||
32 \
|
||||
) : \
|
||||
0 )
|
||||
(alg == PSA_ALG_JPAKE && \
|
||||
primitive == PSA_PAKE_PRIMITIVE(PSA_PAKE_PRIMITIVE_TYPE_ECC, \
|
||||
PSA_ECC_FAMILY_SECP_R1, 256) ? \
|
||||
( \
|
||||
output_step == PSA_PAKE_STEP_KEY_SHARE ? 65 : \
|
||||
output_step == PSA_PAKE_STEP_ZK_PUBLIC ? 65 : \
|
||||
32 \
|
||||
) : \
|
||||
0)
|
||||
|
||||
/** A sufficient input buffer size for psa_pake_input().
|
||||
*
|
||||
@@ -1791,15 +1790,15 @@ psa_status_t psa_pake_abort( psa_pake_operation_t * operation );
|
||||
* the parameters are incompatible, return 0.
|
||||
*/
|
||||
#define PSA_PAKE_INPUT_SIZE(alg, primitive, input_step) \
|
||||
( alg == PSA_ALG_JPAKE && \
|
||||
primitive == PSA_PAKE_PRIMITIVE(PSA_PAKE_PRIMITIVE_TYPE_ECC, \
|
||||
PSA_ECC_FAMILY_SECP_R1, 256) ? \
|
||||
( \
|
||||
input_step == PSA_PAKE_STEP_KEY_SHARE ? 65 : \
|
||||
input_step == PSA_PAKE_STEP_ZK_PUBLIC ? 65 : \
|
||||
32 \
|
||||
) : \
|
||||
0 )
|
||||
(alg == PSA_ALG_JPAKE && \
|
||||
primitive == PSA_PAKE_PRIMITIVE(PSA_PAKE_PRIMITIVE_TYPE_ECC, \
|
||||
PSA_ECC_FAMILY_SECP_R1, 256) ? \
|
||||
( \
|
||||
input_step == PSA_PAKE_STEP_KEY_SHARE ? 65 : \
|
||||
input_step == PSA_PAKE_STEP_ZK_PUBLIC ? 65 : \
|
||||
32 \
|
||||
) : \
|
||||
0)
|
||||
|
||||
/** Output buffer size for psa_pake_output() for any of the supported PAKE
|
||||
* algorithm and primitive suites and output step.
|
||||
@@ -1822,22 +1821,21 @@ psa_status_t psa_pake_abort( psa_pake_operation_t * operation );
|
||||
/** Returns a suitable initializer for a PAKE cipher suite object of type
|
||||
* psa_pake_cipher_suite_t.
|
||||
*/
|
||||
#define PSA_PAKE_CIPHER_SUITE_INIT {PSA_ALG_NONE, 0, 0, 0, PSA_ALG_NONE}
|
||||
#define PSA_PAKE_CIPHER_SUITE_INIT { PSA_ALG_NONE, 0, 0, 0, PSA_ALG_NONE }
|
||||
|
||||
/** Returns a suitable initializer for a PAKE operation object of type
|
||||
* psa_pake_operation_t.
|
||||
*/
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_PAKE)
|
||||
#define PSA_PAKE_OPERATION_INIT {PSA_ALG_NONE, 0, 0, 0, 0, \
|
||||
NULL, 0 , \
|
||||
PSA_PAKE_ROLE_NONE, {0}, 0, 0, \
|
||||
{.dummy = 0}}
|
||||
#define PSA_PAKE_OPERATION_INIT { PSA_ALG_NONE, 0, 0, 0, 0, \
|
||||
NULL, 0, \
|
||||
PSA_PAKE_ROLE_NONE, { 0 }, 0, 0, \
|
||||
{ .dummy = 0 } }
|
||||
#else
|
||||
#define PSA_PAKE_OPERATION_INIT {PSA_ALG_NONE, 0, 0, {0}}
|
||||
#define PSA_PAKE_OPERATION_INIT { PSA_ALG_NONE, 0, 0, { 0 } }
|
||||
#endif
|
||||
|
||||
struct psa_pake_cipher_suite_s
|
||||
{
|
||||
struct psa_pake_cipher_suite_s {
|
||||
psa_algorithm_t algorithm;
|
||||
psa_pake_primitive_type_t type;
|
||||
psa_pake_family_t family;
|
||||
@@ -1846,31 +1844,32 @@ struct psa_pake_cipher_suite_s
|
||||
};
|
||||
|
||||
static inline psa_algorithm_t psa_pake_cs_get_algorithm(
|
||||
const psa_pake_cipher_suite_t *cipher_suite )
|
||||
const psa_pake_cipher_suite_t *cipher_suite)
|
||||
{
|
||||
return( cipher_suite->algorithm );
|
||||
return cipher_suite->algorithm;
|
||||
}
|
||||
|
||||
static inline void psa_pake_cs_set_algorithm(
|
||||
psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_algorithm_t algorithm)
|
||||
{
|
||||
if( !PSA_ALG_IS_PAKE( algorithm ) )
|
||||
if (!PSA_ALG_IS_PAKE(algorithm)) {
|
||||
cipher_suite->algorithm = 0;
|
||||
else
|
||||
} else {
|
||||
cipher_suite->algorithm = algorithm;
|
||||
}
|
||||
}
|
||||
|
||||
static inline psa_pake_primitive_t psa_pake_cs_get_primitive(
|
||||
const psa_pake_cipher_suite_t *cipher_suite )
|
||||
const psa_pake_cipher_suite_t *cipher_suite)
|
||||
{
|
||||
return( PSA_PAKE_PRIMITIVE( cipher_suite->type, cipher_suite->family,
|
||||
cipher_suite->bits ) );
|
||||
return PSA_PAKE_PRIMITIVE(cipher_suite->type, cipher_suite->family,
|
||||
cipher_suite->bits);
|
||||
}
|
||||
|
||||
static inline void psa_pake_cs_set_primitive(
|
||||
psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_pake_primitive_t primitive )
|
||||
psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_pake_primitive_t primitive)
|
||||
{
|
||||
cipher_suite->type = (psa_pake_primitive_type_t) (primitive >> 24);
|
||||
cipher_suite->family = (psa_pake_family_t) (0xFF & (primitive >> 16));
|
||||
@@ -1878,30 +1877,31 @@ static inline void psa_pake_cs_set_primitive(
|
||||
}
|
||||
|
||||
static inline psa_pake_family_t psa_pake_cs_get_family(
|
||||
const psa_pake_cipher_suite_t *cipher_suite )
|
||||
const psa_pake_cipher_suite_t *cipher_suite)
|
||||
{
|
||||
return( cipher_suite->family );
|
||||
return cipher_suite->family;
|
||||
}
|
||||
|
||||
static inline uint16_t psa_pake_cs_get_bits(
|
||||
const psa_pake_cipher_suite_t *cipher_suite )
|
||||
const psa_pake_cipher_suite_t *cipher_suite)
|
||||
{
|
||||
return( cipher_suite->bits );
|
||||
return cipher_suite->bits;
|
||||
}
|
||||
|
||||
static inline psa_algorithm_t psa_pake_cs_get_hash(
|
||||
const psa_pake_cipher_suite_t *cipher_suite )
|
||||
const psa_pake_cipher_suite_t *cipher_suite)
|
||||
{
|
||||
return( cipher_suite->hash );
|
||||
return cipher_suite->hash;
|
||||
}
|
||||
|
||||
static inline void psa_pake_cs_set_hash( psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_algorithm_t hash )
|
||||
static inline void psa_pake_cs_set_hash(psa_pake_cipher_suite_t *cipher_suite,
|
||||
psa_algorithm_t hash)
|
||||
{
|
||||
if( !PSA_ALG_IS_HASH( hash ) )
|
||||
if (!PSA_ALG_IS_HASH(hash)) {
|
||||
cipher_suite->hash = 0;
|
||||
else
|
||||
} else {
|
||||
cipher_suite->hash = hash;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
|
||||
@@ -1909,26 +1909,24 @@ static inline void psa_pake_cs_set_hash( psa_pake_cipher_suite_t *cipher_suite,
|
||||
/* Note: the format for mbedtls_ecjpake_read/write function has an extra
|
||||
* length byte for each step, plus an extra 3 bytes for ECParameters in the
|
||||
* server's 2nd round. */
|
||||
#define MBEDTLS_PSA_PAKE_BUFFER_SIZE ( ( 3 + 1 + 65 + 1 + 65 + 1 + 32 ) * 2 )
|
||||
#define MBEDTLS_PSA_PAKE_BUFFER_SIZE ((3 + 1 + 65 + 1 + 65 + 1 + 32) * 2)
|
||||
#endif
|
||||
|
||||
struct psa_pake_operation_s
|
||||
{
|
||||
struct psa_pake_operation_s {
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg);
|
||||
unsigned int MBEDTLS_PRIVATE(state);
|
||||
unsigned int MBEDTLS_PRIVATE(sequence);
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_PAKE)
|
||||
unsigned int MBEDTLS_PRIVATE(input_step);
|
||||
unsigned int MBEDTLS_PRIVATE(output_step);
|
||||
uint8_t* MBEDTLS_PRIVATE(password);
|
||||
uint8_t *MBEDTLS_PRIVATE(password);
|
||||
size_t MBEDTLS_PRIVATE(password_len);
|
||||
psa_pake_role_t MBEDTLS_PRIVATE(role);
|
||||
uint8_t MBEDTLS_PRIVATE(buffer[MBEDTLS_PSA_PAKE_BUFFER_SIZE]);
|
||||
size_t MBEDTLS_PRIVATE(buffer_length);
|
||||
size_t MBEDTLS_PRIVATE(buffer_offset);
|
||||
#endif
|
||||
union
|
||||
{
|
||||
union {
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_JPAKE)
|
||||
mbedtls_ecjpake_context ecjpake;
|
||||
#endif
|
||||
@@ -1937,16 +1935,16 @@ struct psa_pake_operation_s
|
||||
} MBEDTLS_PRIVATE(ctx);
|
||||
};
|
||||
|
||||
static inline struct psa_pake_cipher_suite_s psa_pake_cipher_suite_init( void )
|
||||
static inline struct psa_pake_cipher_suite_s psa_pake_cipher_suite_init(void)
|
||||
{
|
||||
const struct psa_pake_cipher_suite_s v = PSA_PAKE_CIPHER_SUITE_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline struct psa_pake_operation_s psa_pake_operation_init( void )
|
||||
static inline struct psa_pake_operation_s psa_pake_operation_init(void)
|
||||
{
|
||||
const struct psa_pake_operation_s v = PSA_PAKE_OPERATION_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -65,10 +65,10 @@ typedef int32_t mbedtls_key_owner_id_t;
|
||||
*
|
||||
* \return Non-zero if the two key owner identifiers are equal, zero otherwise.
|
||||
*/
|
||||
static inline int mbedtls_key_owner_id_equal( mbedtls_key_owner_id_t id1,
|
||||
mbedtls_key_owner_id_t id2 )
|
||||
static inline int mbedtls_key_owner_id_equal(mbedtls_key_owner_id_t id1,
|
||||
mbedtls_key_owner_id_t id2)
|
||||
{
|
||||
return( id1 == id2 );
|
||||
return id1 == id2;
|
||||
}
|
||||
|
||||
#endif /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */
|
||||
|
||||
@@ -323,7 +323,7 @@ typedef psa_status_t (*psa_drv_se_mac_verify_t)(psa_drv_se_context_t *drv_contex
|
||||
typedef struct {
|
||||
/**The size in bytes of the hardware-specific secure element MAC context
|
||||
* structure
|
||||
*/
|
||||
*/
|
||||
size_t MBEDTLS_PRIVATE(context_size);
|
||||
/** Function that performs a MAC setup operation
|
||||
*/
|
||||
@@ -815,8 +815,7 @@ typedef struct {
|
||||
|
||||
/** An enumeration indicating how a key is created.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
typedef enum {
|
||||
PSA_KEY_CREATION_IMPORT, /**< During psa_import_key() */
|
||||
PSA_KEY_CREATION_GENERATE, /**< During psa_generate_key() */
|
||||
PSA_KEY_CREATION_DERIVE, /**< During psa_key_derivation_output_key() */
|
||||
@@ -1235,7 +1234,7 @@ typedef psa_status_t (*psa_drv_se_key_derivation_collateral_t)(void *op_context,
|
||||
* \retval #PSA_SUCCESS
|
||||
*/
|
||||
typedef psa_status_t (*psa_drv_se_key_derivation_derive_t)(void *op_context,
|
||||
psa_key_slot_number_t dest_key);
|
||||
psa_key_slot_number_t dest_key);
|
||||
|
||||
/** \brief A function that performs the final step of a secure element key
|
||||
* agreement and place the generated key material in a buffer
|
||||
|
||||
@@ -276,7 +276,7 @@
|
||||
((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? PSA_MAC_TRUNCATED_LENGTH(alg) : \
|
||||
PSA_ALG_IS_HMAC(alg) ? PSA_HASH_LENGTH(PSA_ALG_HMAC_GET_HASH(alg)) : \
|
||||
PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
|
||||
((void)(key_type), (void)(key_bits), 0))
|
||||
((void) (key_type), (void) (key_bits), 0))
|
||||
|
||||
/** The maximum size of the output of psa_aead_encrypt(), in bytes.
|
||||
*
|
||||
@@ -359,8 +359,8 @@
|
||||
*/
|
||||
#define PSA_AEAD_DECRYPT_OUTPUT_SIZE(key_type, alg, ciphertext_length) \
|
||||
(PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \
|
||||
(ciphertext_length) > PSA_ALG_AEAD_GET_TAG_LENGTH(alg) ? \
|
||||
(ciphertext_length) - PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \
|
||||
(ciphertext_length) > PSA_ALG_AEAD_GET_TAG_LENGTH(alg) ? \
|
||||
(ciphertext_length) - PSA_ALG_AEAD_GET_TAG_LENGTH(alg) : \
|
||||
0)
|
||||
|
||||
/** A sufficient output buffer size for psa_aead_decrypt(), for any of the
|
||||
@@ -382,7 +382,7 @@
|
||||
*
|
||||
*/
|
||||
#define PSA_AEAD_DECRYPT_OUTPUT_MAX_SIZE(ciphertext_length) \
|
||||
(ciphertext_length)
|
||||
(ciphertext_length)
|
||||
|
||||
/** The default nonce size for an AEAD algorithm, in bytes.
|
||||
*
|
||||
@@ -411,11 +411,11 @@
|
||||
*/
|
||||
#define PSA_AEAD_NONCE_LENGTH(key_type, alg) \
|
||||
(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) == 16 ? \
|
||||
MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CCM) ? 13 : \
|
||||
MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_GCM) ? 12 : \
|
||||
0 : \
|
||||
MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CCM) ? 13 : \
|
||||
MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_GCM) ? 12 : \
|
||||
0 : \
|
||||
(key_type) == PSA_KEY_TYPE_CHACHA20 && \
|
||||
MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CHACHA20_POLY1305) ? 12 : \
|
||||
MBEDTLS_PSA_ALG_AEAD_EQUAL(alg, PSA_ALG_CHACHA20_POLY1305) ? 12 : \
|
||||
0)
|
||||
|
||||
/** The maximum default nonce size among all supported pairs of key types and
|
||||
@@ -463,9 +463,9 @@
|
||||
* implementation to delay the output until it has a full block. */
|
||||
#define PSA_AEAD_UPDATE_OUTPUT_SIZE(key_type, alg, input_length) \
|
||||
(PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 ? \
|
||||
PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \
|
||||
PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), (input_length)) : \
|
||||
(input_length) : \
|
||||
PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \
|
||||
PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), (input_length)) : \
|
||||
(input_length) : \
|
||||
0)
|
||||
|
||||
/** A sufficient output buffer size for psa_aead_update(), for any of the
|
||||
@@ -504,8 +504,8 @@
|
||||
*/
|
||||
#define PSA_AEAD_FINISH_OUTPUT_SIZE(key_type, alg) \
|
||||
(PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \
|
||||
PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \
|
||||
PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
|
||||
PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \
|
||||
PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
|
||||
0)
|
||||
|
||||
/** A sufficient ciphertext buffer size for psa_aead_finish(), for any of the
|
||||
@@ -538,8 +538,8 @@
|
||||
*/
|
||||
#define PSA_AEAD_VERIFY_OUTPUT_SIZE(key_type, alg) \
|
||||
(PSA_AEAD_NONCE_LENGTH(key_type, alg) != 0 && \
|
||||
PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \
|
||||
PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
|
||||
PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \
|
||||
PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
|
||||
0)
|
||||
|
||||
/** A sufficient plaintext buffer size for psa_aead_verify(), for any of the
|
||||
@@ -591,9 +591,9 @@
|
||||
* return value is unspecified.
|
||||
*/
|
||||
#define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \
|
||||
(PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \
|
||||
(PSA_KEY_TYPE_IS_RSA(key_type) ? ((void) alg, PSA_BITS_TO_BYTES(key_bits)) : \
|
||||
PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \
|
||||
((void)alg, 0))
|
||||
((void) alg, 0))
|
||||
|
||||
#define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \
|
||||
PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
||||
@@ -637,7 +637,7 @@
|
||||
*/
|
||||
#define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \
|
||||
(PSA_KEY_TYPE_IS_RSA(key_type) ? \
|
||||
((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \
|
||||
((void) alg, PSA_BITS_TO_BYTES(key_bits)) : \
|
||||
0)
|
||||
|
||||
/** A sufficient output buffer size for psa_asymmetric_encrypt(), for any
|
||||
@@ -992,16 +992,16 @@
|
||||
*/
|
||||
#define PSA_CIPHER_IV_LENGTH(key_type, alg) \
|
||||
(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) > 1 && \
|
||||
((alg) == PSA_ALG_CTR || \
|
||||
(alg) == PSA_ALG_CFB || \
|
||||
(alg) == PSA_ALG_OFB || \
|
||||
(alg) == PSA_ALG_XTS || \
|
||||
(alg) == PSA_ALG_CBC_NO_PADDING || \
|
||||
(alg) == PSA_ALG_CBC_PKCS7) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
|
||||
((alg) == PSA_ALG_CTR || \
|
||||
(alg) == PSA_ALG_CFB || \
|
||||
(alg) == PSA_ALG_OFB || \
|
||||
(alg) == PSA_ALG_XTS || \
|
||||
(alg) == PSA_ALG_CBC_NO_PADDING || \
|
||||
(alg) == PSA_ALG_CBC_PKCS7) ? PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) : \
|
||||
(key_type) == PSA_KEY_TYPE_CHACHA20 && \
|
||||
(alg) == PSA_ALG_STREAM_CIPHER ? 12 : \
|
||||
(alg) == PSA_ALG_CCM_STAR_NO_TAG ? 13 : \
|
||||
0)
|
||||
(alg) == PSA_ALG_STREAM_CIPHER ? 12 : \
|
||||
(alg) == PSA_ALG_CCM_STAR_NO_TAG ? 13 : \
|
||||
0)
|
||||
|
||||
/** The maximum IV size for all supported cipher algorithms, in bytes.
|
||||
*
|
||||
@@ -1035,12 +1035,12 @@
|
||||
#define PSA_CIPHER_ENCRYPT_OUTPUT_SIZE(key_type, alg, input_length) \
|
||||
(alg == PSA_ALG_CBC_PKCS7 ? \
|
||||
(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) != 0 ? \
|
||||
PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \
|
||||
(input_length) + 1) + \
|
||||
PSA_CIPHER_IV_LENGTH((key_type), (alg)) : 0) : \
|
||||
PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \
|
||||
(input_length) + 1) + \
|
||||
PSA_CIPHER_IV_LENGTH((key_type), (alg)) : 0) : \
|
||||
(PSA_ALG_IS_CIPHER(alg) ? \
|
||||
(input_length) + PSA_CIPHER_IV_LENGTH((key_type), (alg)) : \
|
||||
0))
|
||||
0))
|
||||
|
||||
/** A sufficient output buffer size for psa_cipher_encrypt(), for any of the
|
||||
* supported key types and cipher algorithms.
|
||||
@@ -1116,13 +1116,13 @@
|
||||
*/
|
||||
#define PSA_CIPHER_UPDATE_OUTPUT_SIZE(key_type, alg, input_length) \
|
||||
(PSA_ALG_IS_CIPHER(alg) ? \
|
||||
(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) != 0 ? \
|
||||
(((alg) == PSA_ALG_CBC_PKCS7 || \
|
||||
(alg) == PSA_ALG_CBC_NO_PADDING || \
|
||||
(alg) == PSA_ALG_ECB_NO_PADDING) ? \
|
||||
PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \
|
||||
(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type) != 0 ? \
|
||||
(((alg) == PSA_ALG_CBC_PKCS7 || \
|
||||
(alg) == PSA_ALG_CBC_NO_PADDING || \
|
||||
(alg) == PSA_ALG_ECB_NO_PADDING) ? \
|
||||
PSA_ROUND_UP_TO_MULTIPLE(PSA_BLOCK_CIPHER_BLOCK_LENGTH(key_type), \
|
||||
input_length) : \
|
||||
(input_length)) : 0) : \
|
||||
(input_length)) : 0) : \
|
||||
0)
|
||||
|
||||
/** A sufficient output buffer size for psa_cipher_update(), for any of the
|
||||
|
||||
@@ -79,8 +79,7 @@ extern "C" {
|
||||
* algorithms. */
|
||||
#include "psa/crypto_driver_contexts_primitives.h"
|
||||
|
||||
struct psa_hash_operation_s
|
||||
{
|
||||
struct psa_hash_operation_s {
|
||||
/** Unique ID indicating which driver got assigned to do the
|
||||
* operation. Since driver contexts are driver-specific, swapping
|
||||
* drivers halfway through the operation is not supported.
|
||||
@@ -92,14 +91,13 @@ struct psa_hash_operation_s
|
||||
};
|
||||
|
||||
#define PSA_HASH_OPERATION_INIT { 0, { 0 } }
|
||||
static inline struct psa_hash_operation_s psa_hash_operation_init( void )
|
||||
static inline struct psa_hash_operation_s psa_hash_operation_init(void)
|
||||
{
|
||||
const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
struct psa_cipher_operation_s
|
||||
{
|
||||
struct psa_cipher_operation_s {
|
||||
/** Unique ID indicating which driver got assigned to do the
|
||||
* operation. Since driver contexts are driver-specific, swapping
|
||||
* drivers halfway through the operation is not supported.
|
||||
@@ -117,18 +115,17 @@ struct psa_cipher_operation_s
|
||||
};
|
||||
|
||||
#define PSA_CIPHER_OPERATION_INIT { 0, 0, 0, 0, { 0 } }
|
||||
static inline struct psa_cipher_operation_s psa_cipher_operation_init( void )
|
||||
static inline struct psa_cipher_operation_s psa_cipher_operation_init(void)
|
||||
{
|
||||
const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
/* Include the context definition for the compiled-in drivers for the composite
|
||||
* algorithms. */
|
||||
#include "psa/crypto_driver_contexts_composites.h"
|
||||
|
||||
struct psa_mac_operation_s
|
||||
{
|
||||
struct psa_mac_operation_s {
|
||||
/** Unique ID indicating which driver got assigned to do the
|
||||
* operation. Since driver contexts are driver-specific, swapping
|
||||
* drivers halfway through the operation is not supported.
|
||||
@@ -142,14 +139,13 @@ struct psa_mac_operation_s
|
||||
};
|
||||
|
||||
#define PSA_MAC_OPERATION_INIT { 0, 0, 0, { 0 } }
|
||||
static inline struct psa_mac_operation_s psa_mac_operation_init( void )
|
||||
static inline struct psa_mac_operation_s psa_mac_operation_init(void)
|
||||
{
|
||||
const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
struct psa_aead_operation_s
|
||||
{
|
||||
struct psa_aead_operation_s {
|
||||
|
||||
/** Unique ID indicating which driver got assigned to do the
|
||||
* operation. Since driver contexts are driver-specific, swapping
|
||||
@@ -174,18 +170,17 @@ struct psa_aead_operation_s
|
||||
psa_driver_aead_context_t MBEDTLS_PRIVATE(ctx);
|
||||
};
|
||||
|
||||
#define PSA_AEAD_OPERATION_INIT {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0}}
|
||||
static inline struct psa_aead_operation_s psa_aead_operation_init( void )
|
||||
#define PSA_AEAD_OPERATION_INIT { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0 } }
|
||||
static inline struct psa_aead_operation_s psa_aead_operation_init(void)
|
||||
{
|
||||
const struct psa_aead_operation_s v = PSA_AEAD_OPERATION_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND)
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
uint8_t *MBEDTLS_PRIVATE(info);
|
||||
size_t MBEDTLS_PRIVATE(info_length);
|
||||
#if PSA_HASH_MAX_SIZE > 0xff
|
||||
@@ -203,16 +198,14 @@ typedef struct
|
||||
MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT ||
|
||||
MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND */
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_ECJPAKE_TO_PMS)
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
uint8_t MBEDTLS_PRIVATE(data)[PSA_TLS12_ECJPAKE_TO_PMS_DATA_SIZE];
|
||||
} psa_tls12_ecjpake_to_pms_t;
|
||||
#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_ECJPAKE_TO_PMS */
|
||||
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS)
|
||||
typedef enum
|
||||
{
|
||||
typedef enum {
|
||||
PSA_TLS12_PRF_STATE_INIT, /* no input provided */
|
||||
PSA_TLS12_PRF_STATE_SEED_SET, /* seed has been set */
|
||||
PSA_TLS12_PRF_STATE_OTHER_KEY_SET, /* other key has been set - optional */
|
||||
@@ -221,8 +214,7 @@ typedef enum
|
||||
PSA_TLS12_PRF_STATE_OUTPUT /* output has been started */
|
||||
} psa_tls12_prf_key_derivation_state_t;
|
||||
|
||||
typedef struct psa_tls12_prf_key_derivation_s
|
||||
{
|
||||
typedef struct psa_tls12_prf_key_derivation_s {
|
||||
#if PSA_HASH_MAX_SIZE > 0xff
|
||||
#error "PSA_HASH_MAX_SIZE does not fit in uint8_t"
|
||||
#endif
|
||||
@@ -255,22 +247,20 @@ typedef struct psa_tls12_prf_key_derivation_s
|
||||
#endif /* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) ||
|
||||
* MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS */
|
||||
|
||||
struct psa_key_derivation_s
|
||||
{
|
||||
struct psa_key_derivation_s {
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg);
|
||||
unsigned int MBEDTLS_PRIVATE(can_output_key) : 1;
|
||||
size_t MBEDTLS_PRIVATE(capacity);
|
||||
union
|
||||
{
|
||||
union {
|
||||
/* Make the union non-empty even with no supported algorithms. */
|
||||
uint8_t MBEDTLS_PRIVATE(dummy);
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND)
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXTRACT) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_HKDF_EXPAND)
|
||||
psa_hkdf_key_derivation_t MBEDTLS_PRIVATE(hkdf);
|
||||
#endif
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PRF) || \
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS)
|
||||
defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_PSK_TO_MS)
|
||||
psa_tls12_prf_key_derivation_t MBEDTLS_PRIVATE(tls12_prf);
|
||||
#endif
|
||||
#if defined(MBEDTLS_PSA_BUILTIN_ALG_TLS12_ECJPAKE_TO_PMS)
|
||||
@@ -282,14 +272,13 @@ struct psa_key_derivation_s
|
||||
/* This only zeroes out the first byte in the union, the rest is unspecified. */
|
||||
#define PSA_KEY_DERIVATION_OPERATION_INIT { 0, 0, 0, { 0 } }
|
||||
static inline struct psa_key_derivation_s psa_key_derivation_operation_init(
|
||||
void )
|
||||
void)
|
||||
{
|
||||
const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
struct psa_key_policy_s
|
||||
{
|
||||
struct psa_key_policy_s {
|
||||
psa_key_usage_t MBEDTLS_PRIVATE(usage);
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg);
|
||||
psa_algorithm_t MBEDTLS_PRIVATE(alg2);
|
||||
@@ -297,10 +286,10 @@ struct psa_key_policy_s
|
||||
typedef struct psa_key_policy_s psa_key_policy_t;
|
||||
|
||||
#define PSA_KEY_POLICY_INIT { 0, 0, 0 }
|
||||
static inline struct psa_key_policy_s psa_key_policy_init( void )
|
||||
static inline struct psa_key_policy_s psa_key_policy_init(void)
|
||||
{
|
||||
const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
/* The type used internally for key sizes.
|
||||
@@ -308,7 +297,7 @@ static inline struct psa_key_policy_s psa_key_policy_init( void )
|
||||
typedef uint16_t psa_key_bits_t;
|
||||
/* The maximum value of the type used to represent bit-sizes.
|
||||
* This is used to mark an invalid key size. */
|
||||
#define PSA_KEY_BITS_TOO_LARGE ( ( psa_key_bits_t ) -1 )
|
||||
#define PSA_KEY_BITS_TOO_LARGE ((psa_key_bits_t) -1)
|
||||
/* The maximum size of a key in bits.
|
||||
* Currently defined as the maximum that can be represented, rounded down
|
||||
* to a whole number of bytes.
|
||||
@@ -326,21 +315,20 @@ typedef uint16_t psa_key_bits_t;
|
||||
typedef uint16_t psa_key_attributes_flag_t;
|
||||
|
||||
#define MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER \
|
||||
( (psa_key_attributes_flag_t) 0x0001 )
|
||||
((psa_key_attributes_flag_t) 0x0001)
|
||||
|
||||
/* A mask of key attribute flags used externally only.
|
||||
* Only meant for internal checks inside the library. */
|
||||
#define MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY ( \
|
||||
MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER | \
|
||||
0 )
|
||||
0)
|
||||
|
||||
/* A mask of key attribute flags used both internally and externally.
|
||||
* Currently there aren't any. */
|
||||
#define MBEDTLS_PSA_KA_MASK_DUAL_USE ( \
|
||||
0 )
|
||||
0)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
psa_key_type_t MBEDTLS_PRIVATE(type);
|
||||
psa_key_bits_t MBEDTLS_PRIVATE(bits);
|
||||
psa_key_lifetime_t MBEDTLS_PRIVATE(lifetime);
|
||||
@@ -354,8 +342,7 @@ typedef struct
|
||||
MBEDTLS_SVC_KEY_ID_INIT, \
|
||||
PSA_KEY_POLICY_INIT, 0 }
|
||||
|
||||
struct psa_key_attributes_s
|
||||
{
|
||||
struct psa_key_attributes_s {
|
||||
psa_core_key_attributes_t MBEDTLS_PRIVATE(core);
|
||||
#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
|
||||
psa_key_slot_number_t MBEDTLS_PRIVATE(slot_number);
|
||||
@@ -370,48 +357,46 @@ struct psa_key_attributes_s
|
||||
#define PSA_KEY_ATTRIBUTES_INIT { PSA_CORE_KEY_ATTRIBUTES_INIT, NULL, 0 }
|
||||
#endif
|
||||
|
||||
static inline struct psa_key_attributes_s psa_key_attributes_init( void )
|
||||
static inline struct psa_key_attributes_s psa_key_attributes_init(void)
|
||||
{
|
||||
const struct psa_key_attributes_s v = PSA_KEY_ATTRIBUTES_INIT;
|
||||
return( v );
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline void psa_set_key_id( psa_key_attributes_t *attributes,
|
||||
mbedtls_svc_key_id_t key )
|
||||
static inline void psa_set_key_id(psa_key_attributes_t *attributes,
|
||||
mbedtls_svc_key_id_t key)
|
||||
{
|
||||
psa_key_lifetime_t lifetime = attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(lifetime);
|
||||
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(id) = key;
|
||||
|
||||
if( PSA_KEY_LIFETIME_IS_VOLATILE( lifetime ) )
|
||||
{
|
||||
if (PSA_KEY_LIFETIME_IS_VOLATILE(lifetime)) {
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(lifetime) =
|
||||
PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(
|
||||
PSA_KEY_LIFETIME_PERSISTENT,
|
||||
PSA_KEY_LIFETIME_GET_LOCATION( lifetime ) );
|
||||
PSA_KEY_LIFETIME_GET_LOCATION(lifetime));
|
||||
}
|
||||
}
|
||||
|
||||
static inline mbedtls_svc_key_id_t psa_get_key_id(
|
||||
const psa_key_attributes_t *attributes )
|
||||
const psa_key_attributes_t *attributes)
|
||||
{
|
||||
return( attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(id) );
|
||||
return attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(id);
|
||||
}
|
||||
|
||||
#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
|
||||
static inline void mbedtls_set_key_owner_id( psa_key_attributes_t *attributes,
|
||||
mbedtls_key_owner_id_t owner )
|
||||
static inline void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes,
|
||||
mbedtls_key_owner_id_t owner)
|
||||
{
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(id).MBEDTLS_PRIVATE(owner) = owner;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void psa_set_key_lifetime( psa_key_attributes_t *attributes,
|
||||
psa_key_lifetime_t lifetime )
|
||||
static inline void psa_set_key_lifetime(psa_key_attributes_t *attributes,
|
||||
psa_key_lifetime_t lifetime)
|
||||
{
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(lifetime) = lifetime;
|
||||
if( PSA_KEY_LIFETIME_IS_VOLATILE( lifetime ) )
|
||||
{
|
||||
if (PSA_KEY_LIFETIME_IS_VOLATILE(lifetime)) {
|
||||
#ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(id).MBEDTLS_PRIVATE(key_id) = 0;
|
||||
#else
|
||||
@@ -421,89 +406,89 @@ static inline void psa_set_key_lifetime( psa_key_attributes_t *attributes,
|
||||
}
|
||||
|
||||
static inline psa_key_lifetime_t psa_get_key_lifetime(
|
||||
const psa_key_attributes_t *attributes )
|
||||
const psa_key_attributes_t *attributes)
|
||||
{
|
||||
return( attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(lifetime) );
|
||||
return attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(lifetime);
|
||||
}
|
||||
|
||||
static inline void psa_extend_key_usage_flags( psa_key_usage_t *usage_flags )
|
||||
static inline void psa_extend_key_usage_flags(psa_key_usage_t *usage_flags)
|
||||
{
|
||||
if( *usage_flags & PSA_KEY_USAGE_SIGN_HASH )
|
||||
if (*usage_flags & PSA_KEY_USAGE_SIGN_HASH) {
|
||||
*usage_flags |= PSA_KEY_USAGE_SIGN_MESSAGE;
|
||||
}
|
||||
|
||||
if( *usage_flags & PSA_KEY_USAGE_VERIFY_HASH )
|
||||
if (*usage_flags & PSA_KEY_USAGE_VERIFY_HASH) {
|
||||
*usage_flags |= PSA_KEY_USAGE_VERIFY_MESSAGE;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void psa_set_key_usage_flags(psa_key_attributes_t *attributes,
|
||||
psa_key_usage_t usage_flags)
|
||||
{
|
||||
psa_extend_key_usage_flags( &usage_flags );
|
||||
psa_extend_key_usage_flags(&usage_flags);
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage) = usage_flags;
|
||||
}
|
||||
|
||||
static inline psa_key_usage_t psa_get_key_usage_flags(
|
||||
const psa_key_attributes_t *attributes )
|
||||
const psa_key_attributes_t *attributes)
|
||||
{
|
||||
return( attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage) );
|
||||
return attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage);
|
||||
}
|
||||
|
||||
static inline void psa_set_key_algorithm( psa_key_attributes_t *attributes,
|
||||
psa_algorithm_t alg )
|
||||
static inline void psa_set_key_algorithm(psa_key_attributes_t *attributes,
|
||||
psa_algorithm_t alg)
|
||||
{
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg) = alg;
|
||||
}
|
||||
|
||||
static inline psa_algorithm_t psa_get_key_algorithm(
|
||||
const psa_key_attributes_t *attributes )
|
||||
const psa_key_attributes_t *attributes)
|
||||
{
|
||||
return( attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg) );
|
||||
return attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg);
|
||||
}
|
||||
|
||||
/* This function is declared in crypto_extra.h, which comes after this
|
||||
* header file, but we need the function here, so repeat the declaration. */
|
||||
psa_status_t psa_set_key_domain_parameters( 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 );
|
||||
size_t data_length);
|
||||
|
||||
static inline void psa_set_key_type( psa_key_attributes_t *attributes,
|
||||
psa_key_type_t type )
|
||||
static inline void psa_set_key_type(psa_key_attributes_t *attributes,
|
||||
psa_key_type_t type)
|
||||
{
|
||||
if( attributes->MBEDTLS_PRIVATE(domain_parameters) == NULL )
|
||||
{
|
||||
if (attributes->MBEDTLS_PRIVATE(domain_parameters) == NULL) {
|
||||
/* Common case: quick path */
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(type) = type;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
/* Call the bigger function to free the old domain parameters.
|
||||
* Ignore any errors which may arise due to type requiring
|
||||
* non-default domain parameters, since this function can't
|
||||
* report errors. */
|
||||
(void) psa_set_key_domain_parameters( attributes, type, NULL, 0 );
|
||||
(void) psa_set_key_domain_parameters(attributes, type, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static inline psa_key_type_t psa_get_key_type(
|
||||
const psa_key_attributes_t *attributes )
|
||||
const psa_key_attributes_t *attributes)
|
||||
{
|
||||
return( attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(type) );
|
||||
return attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(type);
|
||||
}
|
||||
|
||||
static inline void psa_set_key_bits( psa_key_attributes_t *attributes,
|
||||
size_t bits )
|
||||
static inline void psa_set_key_bits(psa_key_attributes_t *attributes,
|
||||
size_t bits)
|
||||
{
|
||||
if( bits > PSA_MAX_KEY_BITS )
|
||||
if (bits > PSA_MAX_KEY_BITS) {
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(bits) = PSA_KEY_BITS_TOO_LARGE;
|
||||
else
|
||||
} else {
|
||||
attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(bits) = (psa_key_bits_t) bits;
|
||||
}
|
||||
}
|
||||
|
||||
static inline size_t psa_get_key_bits(
|
||||
const psa_key_attributes_t *attributes )
|
||||
const psa_key_attributes_t *attributes)
|
||||
{
|
||||
return( attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(bits) );
|
||||
return attributes->MBEDTLS_PRIVATE(core).MBEDTLS_PRIVATE(bits);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -291,7 +291,7 @@ typedef uint32_t psa_key_id_t;
|
||||
* Any changes to existing values will require bumping the storage
|
||||
* format version and providing a translation when reading the old
|
||||
* format.
|
||||
*/
|
||||
*/
|
||||
#if !defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER)
|
||||
typedef psa_key_id_t mbedtls_svc_key_id_t;
|
||||
|
||||
@@ -301,8 +301,7 @@ typedef psa_key_id_t mbedtls_svc_key_id_t;
|
||||
* client and encodes the client identity in the key identifier argument of
|
||||
* functions such as psa_open_key().
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
psa_key_id_t MBEDTLS_PRIVATE(key_id);
|
||||
mbedtls_key_owner_id_t MBEDTLS_PRIVATE(owner);
|
||||
} mbedtls_svc_key_id_t;
|
||||
|
||||
@@ -353,7 +353,7 @@
|
||||
*
|
||||
* Zero is not the encoding of any key type.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x0000)
|
||||
#define PSA_KEY_TYPE_NONE ((psa_key_type_t) 0x0000)
|
||||
|
||||
/** Vendor-defined key type flag.
|
||||
*
|
||||
@@ -362,15 +362,15 @@
|
||||
* must use an encoding with the #PSA_KEY_TYPE_VENDOR_FLAG bit set and should
|
||||
* respect the bitwise structure used by standard encodings whenever practical.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x8000)
|
||||
#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t) 0x8000)
|
||||
|
||||
#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x7000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x1000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x2000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x4000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x7000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t) 0x7000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t) 0x1000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t) 0x2000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t) 0x4000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t) 0x7000)
|
||||
|
||||
#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x3000)
|
||||
#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t) 0x3000)
|
||||
|
||||
/** Whether a key type is vendor-defined.
|
||||
*
|
||||
@@ -428,7 +428,7 @@
|
||||
*
|
||||
* A "key" of this type cannot be used for any cryptographic operation.
|
||||
* Applications may use this type to store arbitrary data in the keystore. */
|
||||
#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x1001)
|
||||
#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t) 0x1001)
|
||||
|
||||
/** HMAC key.
|
||||
*
|
||||
@@ -438,7 +438,7 @@
|
||||
* HMAC keys should generally have the same size as the underlying hash.
|
||||
* This size can be calculated with #PSA_HASH_LENGTH(\c alg) where
|
||||
* \c alg is the HMAC algorithm or the underlying hash algorithm. */
|
||||
#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x1100)
|
||||
#define PSA_KEY_TYPE_HMAC ((psa_key_type_t) 0x1100)
|
||||
|
||||
/** A secret for key derivation.
|
||||
*
|
||||
@@ -451,7 +451,7 @@
|
||||
* The key policy determines which key derivation algorithm the key
|
||||
* can be used for.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x1200)
|
||||
#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t) 0x1200)
|
||||
|
||||
/** A low-entropy secret for password hashing or key derivation.
|
||||
*
|
||||
@@ -474,7 +474,7 @@
|
||||
* The key policy determines which key derivation algorithm the key can be
|
||||
* used for, among the permissible subset defined above.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_PASSWORD ((psa_key_type_t)0x1203)
|
||||
#define PSA_KEY_TYPE_PASSWORD ((psa_key_type_t) 0x1203)
|
||||
|
||||
/** A secret value that can be used to verify a password hash.
|
||||
*
|
||||
@@ -482,25 +482,25 @@
|
||||
* can be used for, among the same permissible subset as for
|
||||
* #PSA_KEY_TYPE_PASSWORD.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_PASSWORD_HASH ((psa_key_type_t)0x1205)
|
||||
#define PSA_KEY_TYPE_PASSWORD_HASH ((psa_key_type_t) 0x1205)
|
||||
|
||||
/** A secret value that can be used in when computing a password hash.
|
||||
*
|
||||
* The key policy determines which key derivation algorithm the key
|
||||
* can be used for, among the subset of algorithms that can use pepper.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_PEPPER ((psa_key_type_t)0x1206)
|
||||
#define PSA_KEY_TYPE_PEPPER ((psa_key_type_t) 0x1206)
|
||||
|
||||
/** Key for a cipher, AEAD or MAC algorithm based on the AES block cipher.
|
||||
*
|
||||
* The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or
|
||||
* 32 bytes (AES-256).
|
||||
*/
|
||||
#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x2400)
|
||||
#define PSA_KEY_TYPE_AES ((psa_key_type_t) 0x2400)
|
||||
|
||||
/** Key for a cipher, AEAD or MAC algorithm based on the
|
||||
* ARIA block cipher. */
|
||||
#define PSA_KEY_TYPE_ARIA ((psa_key_type_t)0x2406)
|
||||
#define PSA_KEY_TYPE_ARIA ((psa_key_type_t) 0x2406)
|
||||
|
||||
/** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES).
|
||||
*
|
||||
@@ -511,11 +511,11 @@
|
||||
* deprecated and should only be used to decrypt legacy data. 3-key 3DES
|
||||
* is weak and deprecated and should only be used in legacy protocols.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x2301)
|
||||
#define PSA_KEY_TYPE_DES ((psa_key_type_t) 0x2301)
|
||||
|
||||
/** Key for a cipher, AEAD or MAC algorithm based on the
|
||||
* Camellia block cipher. */
|
||||
#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x2403)
|
||||
#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t) 0x2403)
|
||||
|
||||
/** Key for the ChaCha20 stream cipher or the Chacha20-Poly1305 AEAD algorithm.
|
||||
*
|
||||
@@ -528,25 +528,25 @@
|
||||
* with the initial counter value 1, you can process and discard a
|
||||
* 64-byte block before the real data.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x2004)
|
||||
#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t) 0x2004)
|
||||
|
||||
/** RSA public key.
|
||||
*
|
||||
* The size of an RSA key is the bit size of the modulus.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x4001)
|
||||
#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t) 0x4001)
|
||||
/** RSA key pair (private and public key).
|
||||
*
|
||||
* The size of an RSA key is the bit size of the modulus.
|
||||
*/
|
||||
#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x7001)
|
||||
#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t) 0x7001)
|
||||
/** Whether a key type is an RSA key (pair or public-only). */
|
||||
#define PSA_KEY_TYPE_IS_RSA(type) \
|
||||
(PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY)
|
||||
|
||||
#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x4100)
|
||||
#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x7100)
|
||||
#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x00ff)
|
||||
#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t) 0x4100)
|
||||
#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t) 0x7100)
|
||||
#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t) 0x00ff)
|
||||
/** Elliptic curve key pair.
|
||||
*
|
||||
* The size of an elliptic curve key is the bit size associated with the curve,
|
||||
@@ -586,8 +586,8 @@
|
||||
/** Extract the curve from an elliptic curve key type. */
|
||||
#define PSA_KEY_TYPE_ECC_GET_FAMILY(type) \
|
||||
((psa_ecc_family_t) (PSA_KEY_TYPE_IS_ECC(type) ? \
|
||||
((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \
|
||||
0))
|
||||
((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \
|
||||
0))
|
||||
|
||||
/** Check if the curve of given family is Weierstrass elliptic curve. */
|
||||
#define PSA_ECC_FAMILY_IS_WEIERSTRASS(family) ((family & 0xc0) == 0)
|
||||
@@ -681,9 +681,9 @@
|
||||
*/
|
||||
#define PSA_ECC_FAMILY_TWISTED_EDWARDS ((psa_ecc_family_t) 0x42)
|
||||
|
||||
#define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x4200)
|
||||
#define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x7200)
|
||||
#define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x00ff)
|
||||
#define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t) 0x4200)
|
||||
#define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t) 0x7200)
|
||||
#define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t) 0x00ff)
|
||||
/** Diffie-Hellman key pair.
|
||||
*
|
||||
* \param group A value of type ::psa_dh_family_t that identifies the
|
||||
@@ -715,8 +715,8 @@
|
||||
/** Extract the group from a Diffie-Hellman key type. */
|
||||
#define PSA_KEY_TYPE_DH_GET_FAMILY(type) \
|
||||
((psa_dh_family_t) (PSA_KEY_TYPE_IS_DH(type) ? \
|
||||
((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \
|
||||
0))
|
||||
((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \
|
||||
0))
|
||||
|
||||
/** Diffie-Hellman groups defined in RFC 7919 Appendix A.
|
||||
*
|
||||
@@ -749,7 +749,7 @@
|
||||
#define PSA_BLOCK_CIPHER_BLOCK_LENGTH(type) \
|
||||
(((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \
|
||||
1u << PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) : \
|
||||
0u)
|
||||
0u)
|
||||
|
||||
/* Note that algorithm values are embedded in the persistent key store,
|
||||
* as part of key metadata. As a consequence, they must not be changed
|
||||
@@ -763,17 +763,17 @@
|
||||
* the #PSA_ALG_VENDOR_FLAG bit set and should respect the bitwise structure
|
||||
* used by standard encodings whenever practical.
|
||||
*/
|
||||
#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000)
|
||||
#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)0x02000000)
|
||||
#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x03000000)
|
||||
#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000)
|
||||
#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x05000000)
|
||||
#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x06000000)
|
||||
#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x07000000)
|
||||
#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x08000000)
|
||||
#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x09000000)
|
||||
#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t) 0x7f000000)
|
||||
#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t) 0x02000000)
|
||||
#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t) 0x03000000)
|
||||
#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t) 0x04000000)
|
||||
#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t) 0x05000000)
|
||||
#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t) 0x06000000)
|
||||
#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t) 0x07000000)
|
||||
#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t) 0x08000000)
|
||||
#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t) 0x09000000)
|
||||
|
||||
/** Whether an algorithm is vendor-defined.
|
||||
*
|
||||
@@ -896,40 +896,40 @@
|
||||
#define PSA_ALG_NONE ((psa_algorithm_t)0)
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff)
|
||||
#define PSA_ALG_HASH_MASK ((psa_algorithm_t) 0x000000ff)
|
||||
/** MD5 */
|
||||
#define PSA_ALG_MD5 ((psa_algorithm_t)0x02000003)
|
||||
#define PSA_ALG_MD5 ((psa_algorithm_t) 0x02000003)
|
||||
/** PSA_ALG_RIPEMD160 */
|
||||
#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x02000004)
|
||||
#define PSA_ALG_RIPEMD160 ((psa_algorithm_t) 0x02000004)
|
||||
/** SHA1 */
|
||||
#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x02000005)
|
||||
#define PSA_ALG_SHA_1 ((psa_algorithm_t) 0x02000005)
|
||||
/** SHA2-224 */
|
||||
#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x02000008)
|
||||
#define PSA_ALG_SHA_224 ((psa_algorithm_t) 0x02000008)
|
||||
/** SHA2-256 */
|
||||
#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x02000009)
|
||||
#define PSA_ALG_SHA_256 ((psa_algorithm_t) 0x02000009)
|
||||
/** SHA2-384 */
|
||||
#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0200000a)
|
||||
#define PSA_ALG_SHA_384 ((psa_algorithm_t) 0x0200000a)
|
||||
/** SHA2-512 */
|
||||
#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0200000b)
|
||||
#define PSA_ALG_SHA_512 ((psa_algorithm_t) 0x0200000b)
|
||||
/** SHA2-512/224 */
|
||||
#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0200000c)
|
||||
#define PSA_ALG_SHA_512_224 ((psa_algorithm_t) 0x0200000c)
|
||||
/** SHA2-512/256 */
|
||||
#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0200000d)
|
||||
#define PSA_ALG_SHA_512_256 ((psa_algorithm_t) 0x0200000d)
|
||||
/** SHA3-224 */
|
||||
#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x02000010)
|
||||
#define PSA_ALG_SHA3_224 ((psa_algorithm_t) 0x02000010)
|
||||
/** SHA3-256 */
|
||||
#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x02000011)
|
||||
#define PSA_ALG_SHA3_256 ((psa_algorithm_t) 0x02000011)
|
||||
/** SHA3-384 */
|
||||
#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x02000012)
|
||||
#define PSA_ALG_SHA3_384 ((psa_algorithm_t) 0x02000012)
|
||||
/** SHA3-512 */
|
||||
#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x02000013)
|
||||
#define PSA_ALG_SHA3_512 ((psa_algorithm_t) 0x02000013)
|
||||
/** The first 512 bits (64 bytes) of the SHAKE256 output.
|
||||
*
|
||||
* This is the prehashing for Ed448ph (see #PSA_ALG_ED448PH). For other
|
||||
* scenarios where a hash function based on SHA3/SHAKE is desired, SHA3-512
|
||||
* has the same output size and a (theoretically) higher security strength.
|
||||
*/
|
||||
#define PSA_ALG_SHAKE256_512 ((psa_algorithm_t)0x02000015)
|
||||
#define PSA_ALG_SHAKE256_512 ((psa_algorithm_t) 0x02000015)
|
||||
|
||||
/** In a hash-and-sign algorithm policy, allow any hash algorithm.
|
||||
*
|
||||
@@ -964,10 +964,10 @@
|
||||
* This value may not be used to build an algorithm specification to
|
||||
* perform an operation. It is only valid to build policies.
|
||||
*/
|
||||
#define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x020000ff)
|
||||
#define PSA_ALG_ANY_HASH ((psa_algorithm_t) 0x020000ff)
|
||||
|
||||
#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000)
|
||||
#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x03800000)
|
||||
#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t) 0x00c00000)
|
||||
#define PSA_ALG_HMAC_BASE ((psa_algorithm_t) 0x03800000)
|
||||
/** Macro to build an HMAC algorithm.
|
||||
*
|
||||
* For example, #PSA_ALG_HMAC(#PSA_ALG_SHA_256) is HMAC-SHA-256.
|
||||
@@ -1006,7 +1006,7 @@
|
||||
* reach up to 63; the largest MAC is 64 bytes so its trivial truncation
|
||||
* to full length is correctly encoded as 0 and any non-trivial truncation
|
||||
* is correctly encoded as a value between 1 and 63. */
|
||||
#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x003f0000)
|
||||
#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t) 0x003f0000)
|
||||
#define PSA_MAC_TRUNCATION_OFFSET 16
|
||||
|
||||
/* In the encoding of a MAC algorithm, the bit corresponding to
|
||||
@@ -1015,7 +1015,7 @@
|
||||
* algorithm policy can be used with any algorithm corresponding to the
|
||||
* same base class and having a (potentially truncated) MAC length greater or
|
||||
* equal than the one encoded in #PSA_ALG_MAC_TRUNCATION_MASK. */
|
||||
#define PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t)0x00008000)
|
||||
#define PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t) 0x00008000)
|
||||
|
||||
/** Macro to build a truncated MAC algorithm.
|
||||
*
|
||||
@@ -1110,18 +1110,18 @@
|
||||
* too large for the specified MAC algorithm.
|
||||
*/
|
||||
#define PSA_ALG_AT_LEAST_THIS_LENGTH_MAC(mac_alg, min_mac_length) \
|
||||
( PSA_ALG_TRUNCATED_MAC(mac_alg, min_mac_length) | \
|
||||
PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG )
|
||||
(PSA_ALG_TRUNCATED_MAC(mac_alg, min_mac_length) | \
|
||||
PSA_ALG_MAC_AT_LEAST_THIS_LENGTH_FLAG)
|
||||
|
||||
#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x03c00000)
|
||||
#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t) 0x03c00000)
|
||||
/** The CBC-MAC construction over a block cipher
|
||||
*
|
||||
* \warning CBC-MAC is insecure in many cases.
|
||||
* A more secure mode, such as #PSA_ALG_CMAC, is recommended.
|
||||
*/
|
||||
#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x03c00100)
|
||||
#define PSA_ALG_CBC_MAC ((psa_algorithm_t) 0x03c00100)
|
||||
/** The CMAC construction over a block cipher */
|
||||
#define PSA_ALG_CMAC ((psa_algorithm_t)0x03c00200)
|
||||
#define PSA_ALG_CMAC ((psa_algorithm_t) 0x03c00200)
|
||||
|
||||
/** Whether the specified algorithm is a MAC algorithm based on a block cipher.
|
||||
*
|
||||
@@ -1135,8 +1135,8 @@
|
||||
(((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \
|
||||
PSA_ALG_CIPHER_MAC_BASE)
|
||||
|
||||
#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000)
|
||||
#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000)
|
||||
#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t) 0x00800000)
|
||||
#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t) 0x00400000)
|
||||
|
||||
/** Whether the specified algorithm is a stream cipher.
|
||||
*
|
||||
@@ -1152,14 +1152,14 @@
|
||||
*/
|
||||
#define PSA_ALG_IS_STREAM_CIPHER(alg) \
|
||||
(((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \
|
||||
(PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG))
|
||||
(PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG))
|
||||
|
||||
/** The stream cipher mode of a stream cipher algorithm.
|
||||
*
|
||||
* The underlying stream cipher is determined by the key type.
|
||||
* - To use ChaCha20, use a key type of #PSA_KEY_TYPE_CHACHA20.
|
||||
*/
|
||||
#define PSA_ALG_STREAM_CIPHER ((psa_algorithm_t)0x04800100)
|
||||
#define PSA_ALG_STREAM_CIPHER ((psa_algorithm_t) 0x04800100)
|
||||
|
||||
/** The CTR stream cipher mode.
|
||||
*
|
||||
@@ -1168,19 +1168,19 @@
|
||||
* For example, to use AES-128-CTR, use this algorithm with
|
||||
* a key of type #PSA_KEY_TYPE_AES and a length of 128 bits (16 bytes).
|
||||
*/
|
||||
#define PSA_ALG_CTR ((psa_algorithm_t)0x04c01000)
|
||||
#define PSA_ALG_CTR ((psa_algorithm_t) 0x04c01000)
|
||||
|
||||
/** The CFB stream cipher mode.
|
||||
*
|
||||
* The underlying block cipher is determined by the key type.
|
||||
*/
|
||||
#define PSA_ALG_CFB ((psa_algorithm_t)0x04c01100)
|
||||
#define PSA_ALG_CFB ((psa_algorithm_t) 0x04c01100)
|
||||
|
||||
/** The OFB stream cipher mode.
|
||||
*
|
||||
* The underlying block cipher is determined by the key type.
|
||||
*/
|
||||
#define PSA_ALG_OFB ((psa_algorithm_t)0x04c01200)
|
||||
#define PSA_ALG_OFB ((psa_algorithm_t) 0x04c01200)
|
||||
|
||||
/** The XTS cipher mode.
|
||||
*
|
||||
@@ -1188,7 +1188,7 @@
|
||||
* least one full block of input, but beyond this minimum the input
|
||||
* does not need to be a whole number of blocks.
|
||||
*/
|
||||
#define PSA_ALG_XTS ((psa_algorithm_t)0x0440ff00)
|
||||
#define PSA_ALG_XTS ((psa_algorithm_t) 0x0440ff00)
|
||||
|
||||
/** The Electronic Code Book (ECB) mode of a block cipher, with no padding.
|
||||
*
|
||||
@@ -1208,7 +1208,7 @@
|
||||
* multi-part cipher operation with this algorithm, psa_cipher_generate_iv()
|
||||
* and psa_cipher_set_iv() must not be called.
|
||||
*/
|
||||
#define PSA_ALG_ECB_NO_PADDING ((psa_algorithm_t)0x04404400)
|
||||
#define PSA_ALG_ECB_NO_PADDING ((psa_algorithm_t) 0x04404400)
|
||||
|
||||
/** The CBC block cipher chaining mode, with no padding.
|
||||
*
|
||||
@@ -1217,7 +1217,7 @@
|
||||
* This symmetric cipher mode can only be used with messages whose lengths
|
||||
* are whole number of blocks for the chosen block cipher.
|
||||
*/
|
||||
#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04404000)
|
||||
#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t) 0x04404000)
|
||||
|
||||
/** The CBC block cipher chaining mode with PKCS#7 padding.
|
||||
*
|
||||
@@ -1225,9 +1225,9 @@
|
||||
*
|
||||
* This is the padding method defined by PKCS#7 (RFC 2315) §10.3.
|
||||
*/
|
||||
#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04404100)
|
||||
#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t) 0x04404100)
|
||||
|
||||
#define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000)
|
||||
#define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t) 0x00400000)
|
||||
|
||||
/** Whether the specified algorithm is an AEAD mode on a block cipher.
|
||||
*
|
||||
@@ -1246,7 +1246,7 @@
|
||||
*
|
||||
* The underlying block cipher is determined by the key type.
|
||||
*/
|
||||
#define PSA_ALG_CCM ((psa_algorithm_t)0x05500100)
|
||||
#define PSA_ALG_CCM ((psa_algorithm_t) 0x05500100)
|
||||
|
||||
/** The CCM* cipher mode without authentication.
|
||||
*
|
||||
@@ -1257,13 +1257,13 @@
|
||||
*
|
||||
* Currently only 13-byte long IV's are supported.
|
||||
*/
|
||||
#define PSA_ALG_CCM_STAR_NO_TAG ((psa_algorithm_t)0x04c01300)
|
||||
#define PSA_ALG_CCM_STAR_NO_TAG ((psa_algorithm_t) 0x04c01300)
|
||||
|
||||
/** The GCM authenticated encryption algorithm.
|
||||
*
|
||||
* The underlying block cipher is determined by the key type.
|
||||
*/
|
||||
#define PSA_ALG_GCM ((psa_algorithm_t)0x05500200)
|
||||
#define PSA_ALG_GCM ((psa_algorithm_t) 0x05500200)
|
||||
|
||||
/** The Chacha20-Poly1305 AEAD algorithm.
|
||||
*
|
||||
@@ -1274,13 +1274,13 @@
|
||||
*
|
||||
* Implementations must support 16-byte tags and should reject other sizes.
|
||||
*/
|
||||
#define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t)0x05100500)
|
||||
#define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t) 0x05100500)
|
||||
|
||||
/* In the encoding of an AEAD algorithm, the bits corresponding to
|
||||
* PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag.
|
||||
* The constants for default lengths follow this encoding.
|
||||
*/
|
||||
#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x003f0000)
|
||||
#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t) 0x003f0000)
|
||||
#define PSA_AEAD_TAG_LENGTH_OFFSET 16
|
||||
|
||||
/* In the encoding of an AEAD algorithm, the bit corresponding to
|
||||
@@ -1289,7 +1289,7 @@
|
||||
* algorithm policy can be used with any algorithm corresponding to the
|
||||
* same base class and having a tag length greater than or equal to the one
|
||||
* encoded in #PSA_ALG_AEAD_TAG_LENGTH_MASK. */
|
||||
#define PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t)0x00008000)
|
||||
#define PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG ((psa_algorithm_t) 0x00008000)
|
||||
|
||||
/** Macro to build a shortened AEAD algorithm.
|
||||
*
|
||||
@@ -1313,7 +1313,7 @@
|
||||
(((aead_alg) & ~(PSA_ALG_AEAD_TAG_LENGTH_MASK | \
|
||||
PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG)) | \
|
||||
((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \
|
||||
PSA_ALG_AEAD_TAG_LENGTH_MASK))
|
||||
PSA_ALG_AEAD_TAG_LENGTH_MASK))
|
||||
|
||||
/** Retrieve the tag length of a specified AEAD algorithm
|
||||
*
|
||||
@@ -1327,7 +1327,7 @@
|
||||
*/
|
||||
#define PSA_ALG_AEAD_GET_TAG_LENGTH(aead_alg) \
|
||||
(((aead_alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> \
|
||||
PSA_AEAD_TAG_LENGTH_OFFSET )
|
||||
PSA_AEAD_TAG_LENGTH_OFFSET)
|
||||
|
||||
/** Calculate the corresponding AEAD algorithm with the default tag length.
|
||||
*
|
||||
@@ -1373,10 +1373,10 @@
|
||||
* or too large for the specified AEAD algorithm.
|
||||
*/
|
||||
#define PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG(aead_alg, min_tag_length) \
|
||||
( PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, min_tag_length) | \
|
||||
PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG )
|
||||
(PSA_ALG_AEAD_WITH_SHORTENED_TAG(aead_alg, min_tag_length) | \
|
||||
PSA_ALG_AEAD_AT_LEAST_THIS_LENGTH_FLAG)
|
||||
|
||||
#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x06000200)
|
||||
#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t) 0x06000200)
|
||||
/** RSA PKCS#1 v1.5 signature with hashing.
|
||||
*
|
||||
* This is the signature scheme defined by RFC 8017
|
||||
@@ -1404,8 +1404,8 @@
|
||||
#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)0x06000300)
|
||||
#define PSA_ALG_RSA_PSS_ANY_SALT_BASE ((psa_algorithm_t)0x06001300)
|
||||
#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t) 0x06000300)
|
||||
#define PSA_ALG_RSA_PSS_ANY_SALT_BASE ((psa_algorithm_t) 0x06001300)
|
||||
/** RSA PSS signature with hashing.
|
||||
*
|
||||
* This is the signature scheme defined by RFC 8017
|
||||
@@ -1494,7 +1494,7 @@
|
||||
(PSA_ALG_IS_RSA_PSS_STANDARD_SALT(alg) || \
|
||||
PSA_ALG_IS_RSA_PSS_ANY_SALT(alg))
|
||||
|
||||
#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x06000600)
|
||||
#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t) 0x06000600)
|
||||
/** ECDSA signature with hashing.
|
||||
*
|
||||
* This is the ECDSA signature scheme defined by ANSI X9.62,
|
||||
@@ -1527,7 +1527,7 @@
|
||||
* the curve size.
|
||||
*/
|
||||
#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE
|
||||
#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x06000700)
|
||||
#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t) 0x06000700)
|
||||
/** Deterministic ECDSA signature with hashing.
|
||||
*
|
||||
* This is the deterministic ECDSA signature scheme defined by RFC 6979.
|
||||
@@ -1552,7 +1552,7 @@
|
||||
*/
|
||||
#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \
|
||||
(PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK))
|
||||
#define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00000100)
|
||||
#define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t) 0x00000100)
|
||||
#define PSA_ALG_IS_ECDSA(alg) \
|
||||
(((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \
|
||||
PSA_ALG_ECDSA_BASE)
|
||||
@@ -1591,9 +1591,9 @@
|
||||
* RFC 8032 §5.1.6 and §5.2.6 (a 64-byte string for Ed25519, a 114-byte
|
||||
* string for Ed448).
|
||||
*/
|
||||
#define PSA_ALG_PURE_EDDSA ((psa_algorithm_t)0x06000800)
|
||||
#define PSA_ALG_PURE_EDDSA ((psa_algorithm_t) 0x06000800)
|
||||
|
||||
#define PSA_ALG_HASH_EDDSA_BASE ((psa_algorithm_t)0x06000900)
|
||||
#define PSA_ALG_HASH_EDDSA_BASE ((psa_algorithm_t) 0x06000900)
|
||||
#define PSA_ALG_IS_HASH_EDDSA(alg) \
|
||||
(((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HASH_EDDSA_BASE)
|
||||
|
||||
@@ -1685,7 +1685,7 @@
|
||||
* supported algorithm identifier.
|
||||
*/
|
||||
#define PSA_ALG_IS_SIGN_MESSAGE(alg) \
|
||||
(PSA_ALG_IS_SIGN_HASH(alg) || (alg) == PSA_ALG_PURE_EDDSA )
|
||||
(PSA_ALG_IS_SIGN_HASH(alg) || (alg) == PSA_ALG_PURE_EDDSA)
|
||||
|
||||
/** Whether the specified algorithm is a hash-and-sign algorithm.
|
||||
*
|
||||
@@ -1742,9 +1742,9 @@
|
||||
|
||||
/** RSA PKCS#1 v1.5 encryption.
|
||||
*/
|
||||
#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x07000200)
|
||||
#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t) 0x07000200)
|
||||
|
||||
#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x07000300)
|
||||
#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t) 0x07000300)
|
||||
/** RSA OAEP encryption.
|
||||
*
|
||||
* This is the encryption scheme defined by RFC 8017
|
||||
@@ -1768,7 +1768,7 @@
|
||||
((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \
|
||||
0)
|
||||
|
||||
#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x08000100)
|
||||
#define PSA_ALG_HKDF_BASE ((psa_algorithm_t) 0x08000100)
|
||||
/** Macro to build an HKDF algorithm.
|
||||
*
|
||||
* For example, `PSA_ALG_HKDF(PSA_ALG_SHA_256)` is HKDF using HMAC-SHA-256.
|
||||
@@ -1813,7 +1813,7 @@
|
||||
#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \
|
||||
(PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))
|
||||
|
||||
#define PSA_ALG_HKDF_EXTRACT_BASE ((psa_algorithm_t)0x08000400)
|
||||
#define PSA_ALG_HKDF_EXTRACT_BASE ((psa_algorithm_t) 0x08000400)
|
||||
/** Macro to build an HKDF-Extract algorithm.
|
||||
*
|
||||
* For example, `PSA_ALG_HKDF_EXTRACT(PSA_ALG_SHA_256)` is
|
||||
@@ -1862,7 +1862,7 @@
|
||||
#define PSA_ALG_IS_HKDF_EXTRACT(alg) \
|
||||
(((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_EXTRACT_BASE)
|
||||
|
||||
#define PSA_ALG_HKDF_EXPAND_BASE ((psa_algorithm_t)0x08000500)
|
||||
#define PSA_ALG_HKDF_EXPAND_BASE ((psa_algorithm_t) 0x08000500)
|
||||
/** Macro to build an HKDF-Expand algorithm.
|
||||
*
|
||||
* For example, `PSA_ALG_HKDF_EXPAND(PSA_ALG_SHA_256)` is
|
||||
@@ -1919,7 +1919,7 @@
|
||||
((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_EXTRACT_BASE || \
|
||||
((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_EXPAND_BASE)
|
||||
|
||||
#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x08000200)
|
||||
#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t) 0x08000200)
|
||||
/** Macro to build a TLS-1.2 PRF algorithm.
|
||||
*
|
||||
* TLS 1.2 uses a custom pseudorandom function (PRF) for key schedule,
|
||||
@@ -1962,7 +1962,7 @@
|
||||
#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \
|
||||
(PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK))
|
||||
|
||||
#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x08000300)
|
||||
#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t) 0x08000300)
|
||||
/** Macro to build a TLS-1.2 PSK-to-MasterSecret algorithm.
|
||||
*
|
||||
* In a pure-PSK handshake in TLS 1.2, the master secret is derived
|
||||
@@ -2044,7 +2044,7 @@
|
||||
* The output has to be read as a single chunk of 32 bytes, defined as
|
||||
* PSA_TLS12_ECJPAKE_TO_PMS_DATA_SIZE.
|
||||
*/
|
||||
#define PSA_ALG_TLS12_ECJPAKE_TO_PMS ((psa_algorithm_t)0x08000609)
|
||||
#define PSA_ALG_TLS12_ECJPAKE_TO_PMS ((psa_algorithm_t) 0x08000609)
|
||||
|
||||
/* This flag indicates whether the key derivation algorithm is suitable for
|
||||
* use on low-entropy secrets such as password - these algorithms are also
|
||||
@@ -2053,9 +2053,9 @@
|
||||
*
|
||||
* Those algorithms cannot be combined with a key agreement algorithm.
|
||||
*/
|
||||
#define PSA_ALG_KEY_DERIVATION_STRETCHING_FLAG ((psa_algorithm_t)0x00800000)
|
||||
#define PSA_ALG_KEY_DERIVATION_STRETCHING_FLAG ((psa_algorithm_t) 0x00800000)
|
||||
|
||||
#define PSA_ALG_PBKDF2_HMAC_BASE ((psa_algorithm_t)0x08800100)
|
||||
#define PSA_ALG_PBKDF2_HMAC_BASE ((psa_algorithm_t) 0x08800100)
|
||||
/** Macro to build a PBKDF2-HMAC password hashing / key stretching algorithm.
|
||||
*
|
||||
* PBKDF2 is defined by PKCS#5, republished as RFC 8018 (section 5.2).
|
||||
@@ -2105,10 +2105,10 @@
|
||||
* This key derivation algorithm uses the same inputs as
|
||||
* #PSA_ALG_PBKDF2_HMAC() with the same constraints.
|
||||
*/
|
||||
#define PSA_ALG_PBKDF2_AES_CMAC_PRF_128 ((psa_algorithm_t)0x08800200)
|
||||
#define PSA_ALG_PBKDF2_AES_CMAC_PRF_128 ((psa_algorithm_t) 0x08800200)
|
||||
|
||||
#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0xfe00ffff)
|
||||
#define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t)0xffff0000)
|
||||
#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t) 0xfe00ffff)
|
||||
#define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t) 0xffff0000)
|
||||
|
||||
/** Macro to build a combined algorithm that chains a key agreement with
|
||||
* a key derivation.
|
||||
@@ -2161,7 +2161,7 @@
|
||||
* It is `ceiling(m / 8)` bytes long where `m` is the size of the prime `p`
|
||||
* in bits.
|
||||
*/
|
||||
#define PSA_ALG_FFDH ((psa_algorithm_t)0x09010000)
|
||||
#define PSA_ALG_FFDH ((psa_algorithm_t) 0x09010000)
|
||||
|
||||
/** Whether the specified algorithm is a finite field Diffie-Hellman algorithm.
|
||||
*
|
||||
@@ -2203,7 +2203,7 @@
|
||||
* in big-endian byte order.
|
||||
* The bit size is `m` for the field `F_{2^m}`.
|
||||
*/
|
||||
#define PSA_ALG_ECDH ((psa_algorithm_t)0x09020000)
|
||||
#define PSA_ALG_ECDH ((psa_algorithm_t) 0x09020000)
|
||||
|
||||
/** Whether the specified algorithm is an elliptic curve Diffie-Hellman
|
||||
* algorithm.
|
||||
@@ -2254,7 +2254,7 @@
|
||||
* \return \c 0 if alg is not a composite algorithm that uses a hash.
|
||||
*/
|
||||
#define PSA_ALG_GET_HASH(alg) \
|
||||
(((alg) & 0x000000ff) == 0 ? ((psa_algorithm_t)0) : 0x02000000 | ((alg) & 0x000000ff))
|
||||
(((alg) & 0x000000ff) == 0 ? ((psa_algorithm_t) 0) : 0x02000000 | ((alg) & 0x000000ff))
|
||||
|
||||
/**@}*/
|
||||
|
||||
@@ -2278,7 +2278,7 @@
|
||||
* it must release all the resources associated with the key and erase the
|
||||
* key material if the calling application terminates.
|
||||
*/
|
||||
#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000)
|
||||
#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t) 0x00000000)
|
||||
|
||||
/** The default lifetime for persistent keys.
|
||||
*
|
||||
@@ -2292,31 +2292,31 @@
|
||||
* application. Integrations of Mbed TLS may support other persistent lifetimes.
|
||||
* See ::psa_key_lifetime_t for more information.
|
||||
*/
|
||||
#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001)
|
||||
#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t) 0x00000001)
|
||||
|
||||
/** The persistence level of volatile keys.
|
||||
*
|
||||
* See ::psa_key_persistence_t for more information.
|
||||
*/
|
||||
#define PSA_KEY_PERSISTENCE_VOLATILE ((psa_key_persistence_t)0x00)
|
||||
#define PSA_KEY_PERSISTENCE_VOLATILE ((psa_key_persistence_t) 0x00)
|
||||
|
||||
/** The default persistence level for persistent keys.
|
||||
*
|
||||
* See ::psa_key_persistence_t for more information.
|
||||
*/
|
||||
#define PSA_KEY_PERSISTENCE_DEFAULT ((psa_key_persistence_t)0x01)
|
||||
#define PSA_KEY_PERSISTENCE_DEFAULT ((psa_key_persistence_t) 0x01)
|
||||
|
||||
/** A persistence level indicating that a key is never destroyed.
|
||||
*
|
||||
* See ::psa_key_persistence_t for more information.
|
||||
*/
|
||||
#define PSA_KEY_PERSISTENCE_READ_ONLY ((psa_key_persistence_t)0xff)
|
||||
#define PSA_KEY_PERSISTENCE_READ_ONLY ((psa_key_persistence_t) 0xff)
|
||||
|
||||
#define PSA_KEY_LIFETIME_GET_PERSISTENCE(lifetime) \
|
||||
((psa_key_persistence_t)((lifetime) & 0x000000ff))
|
||||
((psa_key_persistence_t) ((lifetime) & 0x000000ff))
|
||||
|
||||
#define PSA_KEY_LIFETIME_GET_LOCATION(lifetime) \
|
||||
((psa_key_location_t)((lifetime) >> 8))
|
||||
((psa_key_location_t) ((lifetime) >> 8))
|
||||
|
||||
/** Whether a key lifetime indicates that the key is volatile.
|
||||
*
|
||||
@@ -2378,9 +2378,9 @@
|
||||
*
|
||||
* See ::psa_key_location_t for more information.
|
||||
*/
|
||||
#define PSA_KEY_LOCATION_LOCAL_STORAGE ((psa_key_location_t)0x000000)
|
||||
#define PSA_KEY_LOCATION_LOCAL_STORAGE ((psa_key_location_t) 0x000000)
|
||||
|
||||
#define PSA_KEY_LOCATION_VENDOR_FLAG ((psa_key_location_t)0x800000)
|
||||
#define PSA_KEY_LOCATION_VENDOR_FLAG ((psa_key_location_t) 0x800000)
|
||||
|
||||
/* Note that key identifier values are embedded in the
|
||||
* persistent key store, as part of key metadata. As a consequence, they
|
||||
@@ -2394,23 +2394,23 @@
|
||||
/* *INDENT-ON* */
|
||||
/** The minimum value for a key identifier chosen by the application.
|
||||
*/
|
||||
#define PSA_KEY_ID_USER_MIN ((psa_key_id_t)0x00000001)
|
||||
#define PSA_KEY_ID_USER_MIN ((psa_key_id_t) 0x00000001)
|
||||
/** The maximum value for a key identifier chosen by the application.
|
||||
*/
|
||||
#define PSA_KEY_ID_USER_MAX ((psa_key_id_t)0x3fffffff)
|
||||
#define PSA_KEY_ID_USER_MAX ((psa_key_id_t) 0x3fffffff)
|
||||
/** The minimum value for a key identifier chosen by the implementation.
|
||||
*/
|
||||
#define PSA_KEY_ID_VENDOR_MIN ((psa_key_id_t)0x40000000)
|
||||
#define PSA_KEY_ID_VENDOR_MIN ((psa_key_id_t) 0x40000000)
|
||||
/** The maximum value for a key identifier chosen by the implementation.
|
||||
*/
|
||||
#define PSA_KEY_ID_VENDOR_MAX ((psa_key_id_t)0x7fffffff)
|
||||
#define PSA_KEY_ID_VENDOR_MAX ((psa_key_id_t) 0x7fffffff)
|
||||
|
||||
|
||||
#if !defined(MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER)
|
||||
|
||||
#define MBEDTLS_SVC_KEY_ID_INIT ( (psa_key_id_t)0 )
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_KEY_ID( id ) ( id )
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID( id ) ( 0 )
|
||||
#define MBEDTLS_SVC_KEY_ID_INIT ((psa_key_id_t) 0)
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_KEY_ID(id) (id)
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID(id) (0)
|
||||
|
||||
/** Utility to initialize a key identifier at runtime.
|
||||
*
|
||||
@@ -2418,11 +2418,11 @@
|
||||
* \param key_id Identifier of the key.
|
||||
*/
|
||||
static inline mbedtls_svc_key_id_t mbedtls_svc_key_id_make(
|
||||
unsigned int unused, psa_key_id_t key_id )
|
||||
unsigned int unused, psa_key_id_t key_id)
|
||||
{
|
||||
(void)unused;
|
||||
(void) unused;
|
||||
|
||||
return( key_id );
|
||||
return key_id;
|
||||
}
|
||||
|
||||
/** Compare two key identifiers.
|
||||
@@ -2432,10 +2432,10 @@ static inline mbedtls_svc_key_id_t mbedtls_svc_key_id_make(
|
||||
*
|
||||
* \return Non-zero if the two key identifier are equal, zero otherwise.
|
||||
*/
|
||||
static inline int mbedtls_svc_key_id_equal( mbedtls_svc_key_id_t id1,
|
||||
mbedtls_svc_key_id_t id2 )
|
||||
static inline int mbedtls_svc_key_id_equal(mbedtls_svc_key_id_t id1,
|
||||
mbedtls_svc_key_id_t id2)
|
||||
{
|
||||
return( id1 == id2 );
|
||||
return id1 == id2;
|
||||
}
|
||||
|
||||
/** Check whether a key identifier is null.
|
||||
@@ -2444,16 +2444,16 @@ static inline int mbedtls_svc_key_id_equal( mbedtls_svc_key_id_t id1,
|
||||
*
|
||||
* \return Non-zero if the key identifier is null, zero otherwise.
|
||||
*/
|
||||
static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
static inline int mbedtls_svc_key_id_is_null(mbedtls_svc_key_id_t key)
|
||||
{
|
||||
return( key == 0 );
|
||||
return key == 0;
|
||||
}
|
||||
|
||||
#else /* MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */
|
||||
|
||||
#define MBEDTLS_SVC_KEY_ID_INIT ( (mbedtls_svc_key_id_t){ 0, 0 } )
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_KEY_ID( id ) ( ( id ).MBEDTLS_PRIVATE(key_id) )
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID( id ) ( ( id ).MBEDTLS_PRIVATE(owner) )
|
||||
#define MBEDTLS_SVC_KEY_ID_INIT ((mbedtls_svc_key_id_t){ 0, 0 })
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_KEY_ID(id) ((id).MBEDTLS_PRIVATE(key_id))
|
||||
#define MBEDTLS_SVC_KEY_ID_GET_OWNER_ID(id) ((id).MBEDTLS_PRIVATE(owner))
|
||||
|
||||
/** Utility to initialize a key identifier at runtime.
|
||||
*
|
||||
@@ -2461,10 +2461,10 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* \param key_id Identifier of the key.
|
||||
*/
|
||||
static inline mbedtls_svc_key_id_t mbedtls_svc_key_id_make(
|
||||
mbedtls_key_owner_id_t owner_id, psa_key_id_t key_id )
|
||||
mbedtls_key_owner_id_t owner_id, psa_key_id_t key_id)
|
||||
{
|
||||
return( (mbedtls_svc_key_id_t){ .MBEDTLS_PRIVATE(key_id) = key_id,
|
||||
.MBEDTLS_PRIVATE(owner) = owner_id } );
|
||||
return (mbedtls_svc_key_id_t){ .MBEDTLS_PRIVATE(key_id) = key_id,
|
||||
.MBEDTLS_PRIVATE(owner) = owner_id };
|
||||
}
|
||||
|
||||
/** Compare two key identifiers.
|
||||
@@ -2474,11 +2474,11 @@ static inline mbedtls_svc_key_id_t mbedtls_svc_key_id_make(
|
||||
*
|
||||
* \return Non-zero if the two key identifier are equal, zero otherwise.
|
||||
*/
|
||||
static inline int mbedtls_svc_key_id_equal( mbedtls_svc_key_id_t id1,
|
||||
mbedtls_svc_key_id_t id2 )
|
||||
static inline int mbedtls_svc_key_id_equal(mbedtls_svc_key_id_t id1,
|
||||
mbedtls_svc_key_id_t id2)
|
||||
{
|
||||
return( ( id1.MBEDTLS_PRIVATE(key_id) == id2.MBEDTLS_PRIVATE(key_id) ) &&
|
||||
mbedtls_key_owner_id_equal( id1.MBEDTLS_PRIVATE(owner), id2.MBEDTLS_PRIVATE(owner) ) );
|
||||
return (id1.MBEDTLS_PRIVATE(key_id) == id2.MBEDTLS_PRIVATE(key_id)) &&
|
||||
mbedtls_key_owner_id_equal(id1.MBEDTLS_PRIVATE(owner), id2.MBEDTLS_PRIVATE(owner));
|
||||
}
|
||||
|
||||
/** Check whether a key identifier is null.
|
||||
@@ -2487,9 +2487,9 @@ static inline int mbedtls_svc_key_id_equal( mbedtls_svc_key_id_t id1,
|
||||
*
|
||||
* \return Non-zero if the key identifier is null, zero otherwise.
|
||||
*/
|
||||
static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
static inline int mbedtls_svc_key_id_is_null(mbedtls_svc_key_id_t key)
|
||||
{
|
||||
return( key.MBEDTLS_PRIVATE(key_id) == 0 );
|
||||
return key.MBEDTLS_PRIVATE(key_id) == 0;
|
||||
}
|
||||
|
||||
#endif /* !MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER */
|
||||
@@ -2516,7 +2516,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* The key may however be exportable in a wrapped form, i.e. in a form
|
||||
* where it is encrypted by another key.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001)
|
||||
#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t) 0x00000001)
|
||||
|
||||
/** Whether the key may be copied.
|
||||
*
|
||||
@@ -2532,7 +2532,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* #PSA_KEY_LIFETIME_PERSISTENT, the usage flag #PSA_KEY_USAGE_COPY
|
||||
* is sufficient to permit the copy.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_COPY ((psa_key_usage_t)0x00000002)
|
||||
#define PSA_KEY_USAGE_COPY ((psa_key_usage_t) 0x00000002)
|
||||
|
||||
/** Whether the key may be used to encrypt a message.
|
||||
*
|
||||
@@ -2543,7 +2543,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
*
|
||||
* For a key pair, this concerns the public key.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100)
|
||||
#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t) 0x00000100)
|
||||
|
||||
/** Whether the key may be used to decrypt a message.
|
||||
*
|
||||
@@ -2554,7 +2554,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
*
|
||||
* For a key pair, this concerns the private key.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200)
|
||||
#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t) 0x00000200)
|
||||
|
||||
/** Whether the key may be used to sign a message.
|
||||
*
|
||||
@@ -2564,7 +2564,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
*
|
||||
* For a key pair, this concerns the private key.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_SIGN_MESSAGE ((psa_key_usage_t)0x00000400)
|
||||
#define PSA_KEY_USAGE_SIGN_MESSAGE ((psa_key_usage_t) 0x00000400)
|
||||
|
||||
/** Whether the key may be used to verify a message.
|
||||
*
|
||||
@@ -2574,7 +2574,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
*
|
||||
* For a key pair, this concerns the public key.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_VERIFY_MESSAGE ((psa_key_usage_t)0x00000800)
|
||||
#define PSA_KEY_USAGE_VERIFY_MESSAGE ((psa_key_usage_t) 0x00000800)
|
||||
|
||||
/** Whether the key may be used to sign a message.
|
||||
*
|
||||
@@ -2584,7 +2584,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
*
|
||||
* For a key pair, this concerns the private key.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t)0x00001000)
|
||||
#define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t) 0x00001000)
|
||||
|
||||
/** Whether the key may be used to verify a message signature.
|
||||
*
|
||||
@@ -2594,7 +2594,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
*
|
||||
* For a key pair, this concerns the public key.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t)0x00002000)
|
||||
#define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t) 0x00002000)
|
||||
|
||||
/** Whether the key may be used to derive other keys or produce a password
|
||||
* hash.
|
||||
@@ -2608,7 +2608,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* permits calling psa_key_derivation_output_bytes() or
|
||||
* psa_key_derivation_output_key() at the end of the operation.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00004000)
|
||||
#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t) 0x00004000)
|
||||
|
||||
/** Whether the key may be used to verify the result of a key derivation,
|
||||
* including password hashing.
|
||||
@@ -2623,7 +2623,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* permits calling psa_key_derivation_verify_bytes() or
|
||||
* psa_key_derivation_verify_key() at the end of the operation.
|
||||
*/
|
||||
#define PSA_KEY_USAGE_VERIFY_DERIVATION ((psa_key_usage_t)0x00008000)
|
||||
#define PSA_KEY_USAGE_VERIFY_DERIVATION ((psa_key_usage_t) 0x00008000)
|
||||
|
||||
/**@}*/
|
||||
|
||||
@@ -2649,7 +2649,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* psa_key_derivation_verify_key(), but not
|
||||
* psa_key_derivation_output_key().
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t)0x0101)
|
||||
#define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t) 0x0101)
|
||||
|
||||
/** A low-entropy secret input for password hashing / key stretching.
|
||||
*
|
||||
@@ -2667,7 +2667,7 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* psa_key_derivation_verify_key(), but not
|
||||
* psa_key_derivation_output_key().
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_PASSWORD ((psa_key_derivation_step_t)0x0102)
|
||||
#define PSA_KEY_DERIVATION_INPUT_PASSWORD ((psa_key_derivation_step_t) 0x0102)
|
||||
|
||||
/** A high-entropy additional secret input for key derivation.
|
||||
*
|
||||
@@ -2677,14 +2677,14 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* a direct input passed to `psa_key_derivation_input_bytes()`.
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_OTHER_SECRET \
|
||||
((psa_key_derivation_step_t)0x0103)
|
||||
((psa_key_derivation_step_t) 0x0103)
|
||||
|
||||
/** A label for key derivation.
|
||||
*
|
||||
* This should be a direct input.
|
||||
* It can also be a key of type #PSA_KEY_TYPE_RAW_DATA.
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t)0x0201)
|
||||
#define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t) 0x0201)
|
||||
|
||||
/** A salt for key derivation.
|
||||
*
|
||||
@@ -2692,27 +2692,27 @@ static inline int mbedtls_svc_key_id_is_null( mbedtls_svc_key_id_t key )
|
||||
* It can also be a key of type #PSA_KEY_TYPE_RAW_DATA or
|
||||
* #PSA_KEY_TYPE_PEPPER.
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t)0x0202)
|
||||
#define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t) 0x0202)
|
||||
|
||||
/** An information string for key derivation.
|
||||
*
|
||||
* This should be a direct input.
|
||||
* It can also be a key of type #PSA_KEY_TYPE_RAW_DATA.
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t)0x0203)
|
||||
#define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t) 0x0203)
|
||||
|
||||
/** A seed for key derivation.
|
||||
*
|
||||
* This should be a direct input.
|
||||
* It can also be a key of type #PSA_KEY_TYPE_RAW_DATA.
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t)0x0204)
|
||||
#define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t) 0x0204)
|
||||
|
||||
/** A cost parameter for password hashing / key stretching.
|
||||
*
|
||||
* This must be a direct input, passed to psa_key_derivation_input_integer().
|
||||
*/
|
||||
#define PSA_KEY_DERIVATION_INPUT_COST ((psa_key_derivation_step_t)0x0205)
|
||||
#define PSA_KEY_DERIVATION_INPUT_COST ((psa_key_derivation_step_t) 0x0205)
|
||||
|
||||
/**@}*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user