Change the way driver context structures are used

Apparently there's a goal to make the PSA Crypto core free from
dynamic memory allocations. Therefore, all driver context structures
need to be known at compile time in order for the core to know their
final size.

This change defines & implements for hashing operations how the context
structures get defined.

Signed-off-by: Steven Cooreman <steven.cooreman@silabs.com>
This commit is contained in:
Steven Cooreman 2021-03-04 13:01:18 +01:00
parent 8e9e407fed
commit dbf8ceda54
6 changed files with 119 additions and 123 deletions

View file

@ -68,14 +68,9 @@ extern "C" {
#include "mbedtls/cipher.h"
#include "mbedtls/cmac.h"
#include "mbedtls/gcm.h"
#include "mbedtls/md.h"
#include "mbedtls/md2.h"
#include "mbedtls/md4.h"
#include "mbedtls/md5.h"
#include "mbedtls/ripemd160.h"
#include "mbedtls/sha1.h"
#include "mbedtls/sha256.h"
#include "mbedtls/sha512.h"
/* Include the context definition for the compiled-in drivers */
#include "../../library/psa_crypto_driver_wrappers_contexts.h"
typedef struct {
/** Unique ID indicating which driver got assigned to do the
@ -89,10 +84,17 @@ typedef struct {
struct psa_hash_operation_s
{
psa_operation_driver_context_t ctx;
/** 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.
* ID values are auto-generated in psa_driver_wrappers.h
* ID value zero means the context is not valid or not assigned to
* any driver (i.e. none of the driver contexts are active). */
unsigned int id;
union psa_driver_hash_context_u ctx;
};
#define PSA_HASH_OPERATION_INIT {{0, 0}}
#define PSA_HASH_OPERATION_INIT {0, {0}}
static inline struct psa_hash_operation_s psa_hash_operation_init( void )
{
const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT;