Mbed TLS v2.28.8
cmac.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright The Mbed TLS Contributors
11  * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
12  */
13 
14 #ifndef MBEDTLS_CMAC_H
15 #define MBEDTLS_CMAC_H
16 
17 #if !defined(MBEDTLS_CONFIG_FILE)
18 #include "mbedtls/config.h"
19 #else
20 #include MBEDTLS_CONFIG_FILE
21 #endif
22 
23 #include "mbedtls/cipher.h"
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 /* MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED is deprecated and should not be used. */
31 #define MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED -0x007A
32 
33 #define MBEDTLS_AES_BLOCK_SIZE 16
34 #define MBEDTLS_DES3_BLOCK_SIZE 8
35 
36 
37 /* Although the CMAC module does not support ARIA or CAMELLIA, we adjust the value of
38  * MBEDTLS_CIPHER_BLKSIZE_MAX to reflect these ciphers.
39  * This is done to avoid confusion, given the general-purpose name of the macro. */
40 #if defined(MBEDTLS_AES_C) || defined(MBEDTLS_ARIA_C) || defined(MBEDTLS_CAMELLIA_C)
41 #define MBEDTLS_CIPHER_BLKSIZE_MAX 16
42 #else
43 #define MBEDTLS_CIPHER_BLKSIZE_MAX 8
44 #endif
45 
46 #if !defined(MBEDTLS_CMAC_ALT)
47 
54 
58 
61 };
62 
63 #else /* !MBEDTLS_CMAC_ALT */
64 #include "cmac_alt.h"
65 #endif /* !MBEDTLS_CMAC_ALT */
66 
98  const unsigned char *key, size_t keybits);
99 
123  const unsigned char *input, size_t ilen);
124 
142  unsigned char *output);
143 
161 
189 int mbedtls_cipher_cmac(const mbedtls_cipher_info_t *cipher_info,
190  const unsigned char *key, size_t keylen,
191  const unsigned char *input, size_t ilen,
192  unsigned char *output);
193 
194 #if defined(MBEDTLS_AES_C)
195 
212 int mbedtls_aes_cmac_prf_128(const unsigned char *key, size_t key_len,
213  const unsigned char *input, size_t in_len,
214  unsigned char output[16]);
215 #endif /* MBEDTLS_AES_C */
216 
217 #if defined(MBEDTLS_SELF_TEST) && (defined(MBEDTLS_AES_C) || defined(MBEDTLS_DES_C))
218 
231 int mbedtls_cmac_self_test(int verbose);
232 #endif /* MBEDTLS_SELF_TEST && ( MBEDTLS_AES_C || MBEDTLS_DES_C ) */
233 
234 #ifdef __cplusplus
235 }
236 #endif
237 
238 #endif /* MBEDTLS_CMAC_H */
mbedtls_cipher_cmac_starts
int mbedtls_cipher_cmac_starts(mbedtls_cipher_context_t *ctx, const unsigned char *key, size_t keybits)
This function starts a new CMAC computation by setting the CMAC key, and preparing to authenticate th...
mbedtls_cmac_context_t::state
unsigned char state[MBEDTLS_CIPHER_BLKSIZE_MAX]
Definition: cmac.h:53
mbedtls_cipher_cmac
int mbedtls_cipher_cmac(const mbedtls_cipher_info_t *cipher_info, const unsigned char *key, size_t keylen, const unsigned char *input, size_t ilen, unsigned char *output)
This function calculates the full generic CMAC on the input buffer with the provided key.
mbedtls_cmac_context_t::unprocessed_len
size_t unprocessed_len
Definition: cmac.h:60
MBEDTLS_CIPHER_BLKSIZE_MAX
#define MBEDTLS_CIPHER_BLKSIZE_MAX
Definition: cmac.h:41
mbedtls_cmac_context_t::unprocessed_block
unsigned char unprocessed_block[MBEDTLS_CIPHER_BLKSIZE_MAX]
Definition: cmac.h:57
mbedtls_cipher_info_t
Definition: cipher.h:264
mbedtls_cipher_cmac_reset
int mbedtls_cipher_cmac_reset(mbedtls_cipher_context_t *ctx)
This function starts a new CMAC operation with the same key as the previous one.
mbedtls_cmac_context_t
Definition: cmac.h:51
mbedtls_cipher_cmac_finish
int mbedtls_cipher_cmac_finish(mbedtls_cipher_context_t *ctx, unsigned char *output)
This function finishes an ongoing CMAC operation, and writes the result to the output buffer.
cipher.h
This file contains an abstraction interface for use with the cipher primitives provided by the librar...
mbedtls_aes_cmac_prf_128
int mbedtls_aes_cmac_prf_128(const unsigned char *key, size_t key_len, const unsigned char *input, size_t in_len, unsigned char output[16])
This function implements the AES-CMAC-PRF-128 pseudorandom function, as defined in RFC-4615: The Adva...
mbedtls_cmac_self_test
int mbedtls_cmac_self_test(int verbose)
The CMAC checkup routine.
mbedtls_cipher_context_t
Definition: cipher.h:305
config.h
Configuration options (set of defines)
mbedtls_cipher_cmac_update
int mbedtls_cipher_cmac_update(mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen)
This function feeds an input buffer into an ongoing CMAC computation.