mbed TLS v2.6.0
Data Structures | Macros | Functions
cmac.h File Reference

Cipher-based Message Authentication Code (CMAC) Mode for Authentication. More...

#include "mbedtls/cipher.h"
Include dependency graph for cmac.h:

Go to the source code of this file.

Data Structures

struct  mbedtls_cmac_context_t
 CMAC context structure - Contains internal state information only. More...
 

Macros

#define MBEDTLS_AES_BLOCK_SIZE   16
 
#define MBEDTLS_DES3_BLOCK_SIZE   8
 
#define MBEDTLS_CIPHER_BLKSIZE_MAX   8 /* longest used by CMAC is 3DES */
 

Functions

int mbedtls_cipher_cmac_starts (mbedtls_cipher_context_t *ctx, const unsigned char *key, size_t keybits)
 Set the CMAC key and prepare to authenticate the input data. More...
 
int mbedtls_cipher_cmac_update (mbedtls_cipher_context_t *ctx, const unsigned char *input, size_t ilen)
 Generic CMAC process buffer. More...
 
int mbedtls_cipher_cmac_finish (mbedtls_cipher_context_t *ctx, unsigned char *output)
 Output CMAC. More...
 
int mbedtls_cipher_cmac_reset (mbedtls_cipher_context_t *ctx)
 Prepare to authenticate a new message with the same key. 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)
 Output = Generic_CMAC( cmac key, input buffer ) More...
 

Detailed Description

Cipher-based Message Authentication Code (CMAC) Mode for Authentication.

Copyright (C) 2015-2016, ARM Limited, All Rights Reserved SPDX-License-Identifier: GPL-2.0

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

This file is part of mbed TLS (https://tls.mbed.org)

Definition in file cmac.h.

Macro Definition Documentation

#define MBEDTLS_AES_BLOCK_SIZE   16

Definition at line 35 of file cmac.h.

#define MBEDTLS_CIPHER_BLKSIZE_MAX   8 /* longest used by CMAC is 3DES */

Definition at line 41 of file cmac.h.

#define MBEDTLS_DES3_BLOCK_SIZE   8

Definition at line 36 of file cmac.h.

Function Documentation

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 
)

Output = Generic_CMAC( cmac key, input buffer )

Parameters
cipher_infomessage digest info
keyCMAC key
keylenlength of the CMAC key in bits
inputbuffer holding the data
ilenlength of the input data
outputGeneric CMAC-result
Returns
0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter verification fails.
int mbedtls_cipher_cmac_finish ( mbedtls_cipher_context_t ctx,
unsigned char *  output 
)

Output CMAC.

Called after mbedtls_cipher_cmac_update(). Usually followed by mbedtls_cipher_cmac_reset(), then mbedtls_cipher_cmac_starts(), or mbedtls_cipher_free().

Parameters
ctxCMAC context
outputGeneric CMAC checksum result
Returns
0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter verification fails.
int mbedtls_cipher_cmac_reset ( mbedtls_cipher_context_t ctx)

Prepare to authenticate a new message with the same key.

Called after mbedtls_cipher_cmac_finish() and before mbedtls_cipher_cmac_update().

Parameters
ctxCMAC context to be reset
Returns
0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter verification fails.
int mbedtls_cipher_cmac_starts ( mbedtls_cipher_context_t ctx,
const unsigned char *  key,
size_t  keybits 
)

Set the CMAC key and prepare to authenticate the input data.

Should be called with an initialized cipher context.

Parameters
ctxCipher context. This should be a cipher context, initialized to be 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.
keyCMAC key
keybitslength of the CMAC key in bits (must be acceptable by the cipher)
Returns
0 if successful, or a cipher specific error code
int mbedtls_cipher_cmac_update ( mbedtls_cipher_context_t ctx,
const unsigned char *  input,
size_t  ilen 
)

Generic CMAC process buffer.

Called between mbedtls_cipher_cmac_starts() or mbedtls_cipher_cmac_reset() and mbedtls_cipher_cmac_finish(). May be called repeatedly.

Parameters
ctxCMAC context
inputbuffer holding the data
ilenlength of the input data
Returns
0 on success, MBEDTLS_ERR_MD_BAD_INPUT_DATA if parameter verification fails.