/*! @defgroup mmcau MMCAU Peripheral Driver @details The mmCAU software library uses the mmCAU co-processor that is connected to the ARM Cortex-M4/M0+ Private Peripheral Bus (PPB). In this chapter, CAU refers to both CAU and mmCAU unless explicitly noted. # Purpose {#MMCAUPurpose} The following chapter describes how to use the mmCAU software library in any application to integrate a cryptographic algorithm or hashing function supported by the software library. NXP products supported by the software library are MCU/MPUs. Check the specific Freescale product for CAU availability. # Library Features {#MMCAULF} The library is as compact and generic as possible to simplify the integration with existing cryptographic software. The library has a standard header file with ANSI C prototypes for all functions: "cau_api.h". This software library is thread safe only if CAU registers are saved on a context switch. The mmCAU software library is also compatible to ARM C compiler conventions (EABI). All pointers passed to mmCAU API functions (input and output data blocks, keys, key schedules, and so on) are aligned to 0-modulo-4 addresses.
For applications that don't need to deal with the aligned addresses, a simple wrapper layer is provided. The wrapper layer consists of the "fsl_mmcau.h" header file and "fsl_mmcau.c" source code file. The only function of the wrapper layer is that it supports unaligned addresses
. The CAU library supports the following encryption/decryption algorithms and hashing functions: Note: 3DES crypto algorithms are supported by calling the corresponding DES crypto function three times. Hardware support for SHA256 is only present in the CAU version 2. See the appropriate MCU/MPU reference manual for details about availability. Additionally, the cau_sha256_initialize_output() function checks the hardware revision and returns a (-1) value if the CAU lacks SHA256 support. # CAU and mmCAU software library overview {#MMCAUSLO} Table 1 shows the crypto algorithms and hashing functions included in the software library:
Crypto Algorithms AES128
AES192
AES256
cau_aes_set_key
cau_aes_encrypt
cau_aes_decrypt
DES/3DES cau_des_chk_parity
cau_des_encrypt
cau_des_decrypt
Hashing Functions MD5 cau_md5_initialize_output
cau_md5_hash_n
cau_md5_update
cau_md5_hash
SHA1 cau_sha1_initialize_output
cau_sha1_hash_n
cau_sha1_update
cau_sha1_hash
SHA256 cau_sha256_initialize_output
cau_sha256_hash_n
cau_sha256_update
cau_sha256_hash
Table 1: Library Overview # mmCAU software library usage {#MMCAUSLU} The software library contains the following files:
File Description
cau_api.h CAU and mmCAU header file
lib_mmcau.a mmCAU library
Table 2: File Description

The header file and lib_mmcau.a must always be included in the project.

*/