Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-08-27 09:43:22

0001 /*
0002  *  Context structure declaration of the Mbed TLS software-based PSA drivers
0003  *  called through the PSA Crypto driver dispatch layer.
0004  *  This file contains the context structures of those algorithms which do not
0005  *  rely on other algorithms, i.e. are 'primitive' algorithms.
0006  *
0007  * \note This file may not be included directly. Applications must
0008  * include psa/crypto.h.
0009  *
0010  * \note This header and its content are not part of the Mbed TLS API and
0011  * applications must not depend on it. Its main purpose is to define the
0012  * multi-part state objects of the Mbed TLS software-based PSA drivers. The
0013  * definitions of these objects are then used by crypto_struct.h to define the
0014  * implementation-defined types of PSA multi-part state objects.
0015  */
0016 /*
0017  *  Copyright The Mbed TLS Contributors
0018  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
0019  */
0020 
0021 #ifndef PSA_CRYPTO_BUILTIN_PRIMITIVES_H
0022 #define PSA_CRYPTO_BUILTIN_PRIMITIVES_H
0023 #include "mbedtls/private_access.h"
0024 
0025 #include <psa/crypto_driver_common.h>
0026 
0027 /*
0028  * Hash multi-part operation definitions.
0029  */
0030 
0031 #include "mbedtls/md5.h"
0032 #include "mbedtls/ripemd160.h"
0033 #include "mbedtls/sha1.h"
0034 #include "mbedtls/sha256.h"
0035 #include "mbedtls/sha512.h"
0036 #include "mbedtls/sha3.h"
0037 
0038 #if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) || \
0039     defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) || \
0040     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) || \
0041     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) || \
0042     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \
0043     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) || \
0044     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \
0045     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_224) || \
0046     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_256) || \
0047     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_384) || \
0048     defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_512)
0049 #define MBEDTLS_PSA_BUILTIN_HASH
0050 #endif
0051 
0052 typedef struct {
0053     psa_algorithm_t MBEDTLS_PRIVATE(alg);
0054     union {
0055         unsigned dummy; /* Make the union non-empty even with no supported algorithms. */
0056 #if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5)
0057         mbedtls_md5_context md5;
0058 #endif
0059 #if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160)
0060         mbedtls_ripemd160_context ripemd160;
0061 #endif
0062 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1)
0063         mbedtls_sha1_context sha1;
0064 #endif
0065 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \
0066         defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224)
0067         mbedtls_sha256_context sha256;
0068 #endif
0069 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \
0070         defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384)
0071         mbedtls_sha512_context sha512;
0072 #endif
0073 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_224) || \
0074         defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_256) || \
0075         defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_384) || \
0076         defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_512)
0077         mbedtls_sha3_context sha3;
0078 #endif
0079     } MBEDTLS_PRIVATE(ctx);
0080 } mbedtls_psa_hash_operation_t;
0081 
0082 #define MBEDTLS_PSA_HASH_OPERATION_INIT { 0, { 0 } }
0083 
0084 /*
0085  * Cipher multi-part operation definitions.
0086  */
0087 
0088 #include "mbedtls/cipher.h"
0089 
0090 #if defined(MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER) || \
0091     defined(MBEDTLS_PSA_BUILTIN_ALG_CTR) || \
0092     defined(MBEDTLS_PSA_BUILTIN_ALG_CFB) || \
0093     defined(MBEDTLS_PSA_BUILTIN_ALG_OFB) || \
0094     defined(MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING) || \
0095     defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING) || \
0096     defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7) || \
0097     defined(MBEDTLS_PSA_BUILTIN_ALG_CCM_STAR_NO_TAG)
0098 #define MBEDTLS_PSA_BUILTIN_CIPHER  1
0099 #endif
0100 
0101 typedef struct {
0102     /* Context structure for the Mbed TLS cipher implementation. */
0103     psa_algorithm_t MBEDTLS_PRIVATE(alg);
0104     uint8_t MBEDTLS_PRIVATE(iv_length);
0105     uint8_t MBEDTLS_PRIVATE(block_length);
0106     union {
0107         unsigned int MBEDTLS_PRIVATE(dummy);
0108         mbedtls_cipher_context_t MBEDTLS_PRIVATE(cipher);
0109     } MBEDTLS_PRIVATE(ctx);
0110 } mbedtls_psa_cipher_operation_t;
0111 
0112 #define MBEDTLS_PSA_CIPHER_OPERATION_INIT { 0, 0, 0, { 0 } }
0113 
0114 #endif /* PSA_CRYPTO_BUILTIN_PRIMITIVES_H */