Mbed TLS v4.0.0
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
crypto_builtin_primitives.h
Go to the documentation of this file.
1 
18 /*
19  * Copyright The Mbed TLS Contributors
20  * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
21  */
22 
23 #ifndef PSA_CRYPTO_BUILTIN_PRIMITIVES_H
24 #define PSA_CRYPTO_BUILTIN_PRIMITIVES_H
25 #include "mbedtls/private_access.h"
26 
28 
29 /*
30  * Hash multi-part operation definitions.
31  */
32 
33 #include "mbedtls/private/md5.h"
34 #include "mbedtls/private/ripemd160.h"
35 #include "mbedtls/private/sha1.h"
36 #include "mbedtls/private/sha256.h"
37 #include "mbedtls/private/sha512.h"
38 #include "mbedtls/private/sha3.h"
39 
40 #if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5) || \
41  defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160) || \
42  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1) || \
43  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224) || \
44  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \
45  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384) || \
46  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \
47  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_224) || \
48  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_256) || \
49  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_384) || \
50  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_512)
51 #define MBEDTLS_PSA_BUILTIN_HASH
52 #endif
53 
54 typedef struct {
55  psa_algorithm_t MBEDTLS_PRIVATE(alg);
56  union {
57  unsigned dummy; /* Make the union non-empty even with no supported algorithms. */
58 #if defined(MBEDTLS_PSA_BUILTIN_ALG_MD5)
59  mbedtls_md5_context md5;
60 #endif
61 #if defined(MBEDTLS_PSA_BUILTIN_ALG_RIPEMD160)
62  mbedtls_ripemd160_context ripemd160;
63 #endif
64 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_1)
65  mbedtls_sha1_context sha1;
66 #endif
67 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_256) || \
68  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_224)
69  mbedtls_sha256_context sha256;
70 #endif
71 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_512) || \
72  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA_384)
73  mbedtls_sha512_context sha512;
74 #endif
75 #if defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_224) || \
76  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_256) || \
77  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_384) || \
78  defined(MBEDTLS_PSA_BUILTIN_ALG_SHA3_512)
79  mbedtls_sha3_context sha3;
80 #endif
81  } MBEDTLS_PRIVATE(ctx);
83 
84 #define MBEDTLS_PSA_HASH_OPERATION_INIT { 0, { 0 } }
85 
86 /*
87  * Cipher multi-part operation definitions.
88  */
89 
90 #include "mbedtls/private/cipher.h"
91 
92 #if defined(MBEDTLS_PSA_BUILTIN_ALG_STREAM_CIPHER) || \
93  defined(MBEDTLS_PSA_BUILTIN_ALG_CTR) || \
94  defined(MBEDTLS_PSA_BUILTIN_ALG_CFB) || \
95  defined(MBEDTLS_PSA_BUILTIN_ALG_OFB) || \
96  defined(MBEDTLS_PSA_BUILTIN_ALG_ECB_NO_PADDING) || \
97  defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_NO_PADDING) || \
98  defined(MBEDTLS_PSA_BUILTIN_ALG_CBC_PKCS7) || \
99  defined(MBEDTLS_PSA_BUILTIN_ALG_CCM_STAR_NO_TAG)
100 #define MBEDTLS_PSA_BUILTIN_CIPHER 1
101 #endif
102 
103 typedef struct {
104  /* Context structure for the Mbed TLS cipher implementation. */
105  psa_algorithm_t MBEDTLS_PRIVATE(alg);
106  uint8_t MBEDTLS_PRIVATE(iv_length);
107  uint8_t MBEDTLS_PRIVATE(block_length);
108  union {
109  unsigned int MBEDTLS_PRIVATE(dummy);
110  mbedtls_cipher_context_t MBEDTLS_PRIVATE(cipher);
111  } MBEDTLS_PRIVATE(ctx);
113 
114 #define MBEDTLS_PSA_CIPHER_OPERATION_INIT { 0, 0, 0, { 0 } }
115 
116 #endif /* PSA_CRYPTO_BUILTIN_PRIMITIVES_H */
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: crypto_types.h:127
mbedtls_ripemd160_context ripemd160
Definitions for all PSA crypto drivers.