mbed TLS v3.1.0
|
This file contains CMAC definitions and functions. More...
#include "mbedtls/private_access.h"
#include "mbedtls/build_info.h"
#include "mbedtls/cipher.h"
#include "cmac_alt.h"
Go to the source code of this file.
Macros | |
#define | MBEDTLS_AES_BLOCK_SIZE 16 |
#define | MBEDTLS_DES3_BLOCK_SIZE 8 |
#define | MBEDTLS_CIPHER_BLKSIZE_MAX 16 |
Functions | |
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 the input data. It must be called with an initialized cipher context. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
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 Advanced Encryption Standard-Cipher-based Message Authentication Code-Pseudo-Random Function-128 (AES-CMAC-PRF-128) Algorithm for the Internet Key Exchange Protocol (IKE). More... | |
int | mbedtls_cmac_self_test (int verbose) |
The CMAC checkup routine. More... | |
This file contains CMAC definitions and functions.
The Cipher-based Message Authentication Code (CMAC) Mode for Authentication is defined in RFC-4493: The AES-CMAC Algorithm.
Definition in file cmac.h.
#define MBEDTLS_CIPHER_BLKSIZE_MAX 16 |
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 Advanced Encryption Standard-Cipher-based Message Authentication Code-Pseudo-Random Function-128 (AES-CMAC-PRF-128) Algorithm for the Internet Key Exchange Protocol (IKE).
key | The key to use. |
key_len | The key length in Bytes. |
input | The buffer holding the input data. |
in_len | The length of the input data in Bytes. |
output | The buffer holding the generated 16 Bytes of pseudorandom output. |
0
on success. 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.
The function allocates the context, performs the calculation, and frees the context.
The CMAC result is calculated as output = generic CMAC(cmac key, input buffer).
cipher_info | The cipher information. |
key | The CMAC key. |
keylen | The length of the CMAC key in bits. |
input | The buffer holding the input data. |
ilen | The length of the input data. |
output | The buffer for the generic CMAC result. |
0
on success. 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.
It should be followed either by mbedtls_cipher_cmac_reset(), which starts another CMAC operation with the same key, or mbedtls_cipher_free(), which clears the cipher context.
ctx | The cipher context used for the CMAC operation. |
output | The output buffer for the CMAC checksum result. |
0
on success. 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.
It should be called after finishing the previous CMAC operation with mbedtls_cipher_cmac_finish(). After calling this function, call mbedtls_cipher_cmac_update() to supply the new CMAC operation with data.
ctx | The cipher context used for the CMAC operation. |
0
on success. 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 the input data. It must be called with an initialized cipher context.
Once this function has completed, data can be supplied to the CMAC computation by calling mbedtls_cipher_cmac_update().
To start a CMAC computation using the same key as a previous CMAC computation, use mbedtls_cipher_cmac_finish().
ctx | The cipher context used for the CMAC operation, initialized as one of the following types: MBEDTLS_CIPHER_AES_128_ECB, MBEDTLS_CIPHER_AES_192_ECB, MBEDTLS_CIPHER_AES_256_ECB, or MBEDTLS_CIPHER_DES_EDE3_ECB. |
key | The CMAC key. |
keybits | The length of the CMAC key in bits. Must be supported by the cipher. |
0
on success. 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.
The CMAC computation must have previously been started by calling mbedtls_cipher_cmac_starts() or mbedtls_cipher_cmac_reset().
Call this function as many times as needed to input the data to be authenticated. Once all of the required data has been input, call mbedtls_cipher_cmac_finish() to obtain the result of the CMAC operation.
ctx | The cipher context used for the CMAC operation. |
input | The buffer holding the input data. |
ilen | The length of the input data. |
0
on success. int mbedtls_cmac_self_test | ( | int | verbose | ) |
The CMAC checkup routine.
0
on success. 1
on failure.