Algorithm - CMAC
Functions
Name | |
---|---|
int | wc_InitCmac(Cmac * cmac, const byte * key, word32 keySz, int type, void * unused) Initialize the Cmac structure with defaults. |
int | wc_InitCmac_ex(Cmac * cmac, const byte * key, word32 keySz, int type, void * unused, void * heap, int devId) Initialize the Cmac structure with defaults. |
int | wc_CmacUpdate(Cmac * cmac, const byte * in, word32 inSz) Add Cipher-based Message Authentication Code input data. |
int | wc_CmacFinalNoFree(Cmac * cmac, byte * out, word32 * outSz) Generate the final result using Cipher-based Message Authentication Code, deferring context cleanup. |
int | wc_CmacFinal(Cmac * cmac, byte * out, word32 * outSz) Generate the final result using Cipher_based Message Authentication Code, and clean up the context with wc_CmacFree(). |
int | wc_CmacFree(Cmac * cmac) Clean up allocations in a CMAC context. |
int | wc_AesCmacGenerate(byte * out, word32 * outSz, const byte * in, word32 inSz, const byte * key, word32 keySz) Single shot function for generating a CMAC. |
int | wc_AesCmacVerify(const byte * check, word32 checkSz, const byte * in, word32 inSz, const byte * key, word32 keySz) Single shot function for validating a CMAC. |
int | wc_CMAC_Grow(Cmac * cmac, const byte * in, int inSz) Only used with WOLFSSL_HASH_KEEP when hardware requires single-shot and the updates must be cached in memory. |
Functions Documentation
function wc_InitCmac
int wc_InitCmac(
Cmac * cmac,
const byte * key,
word32 keySz,
int type,
void * unused
)
Initialize the Cmac structure with defaults.
Parameters:
- cmac pointer to the Cmac structure
- key key pointer
- keySz size of the key pointer (16, 24 or 32)
- type Always WC_CMAC_AES = 1
- unused not used, exists for potential future use around compatibility
See:
Return: 0 on success
Example
Cmac cmac[1];
ret = wc_InitCmac(cmac, key, keySz, WC_CMAC_AES, NULL);
if (ret == 0) {
ret = wc_CmacUpdate(cmac, in, inSz);
}
if (ret == 0) {
ret = wc_CmacFinal(cmac, out, outSz);
}
function wc_InitCmac_ex
int wc_InitCmac_ex(
Cmac * cmac,
const byte * key,
word32 keySz,
int type,
void * unused,
void * heap,
int devId
)
Initialize the Cmac structure with defaults.
Parameters:
- cmac pointer to the Cmac structure
- key key pointer
- keySz size of the key pointer (16, 24 or 32)
- type Always WC_CMAC_AES = 1
- unused not used, exists for potential future use around compatibility
- heap pointer to the heap hint used for dynamic allocation. Typically used with our static memory option. Can be NULL.
- devId ID to use with crypto callbacks or async hardware. Set to INVALID_DEVID (-2) if not used
See:
Return: 0 on success
Example
Cmac cmac[1];
ret = wc_InitCmac_ex(cmac, key, keySz, WC_CMAC_AES, NULL, NULL, INVALID_DEVID);
if (ret == 0) {
ret = wc_CmacUpdate(cmac, in, inSz);
}
if (ret == 0) {
ret = wc_CmacFinal(cmac, out, &outSz);
}
function wc_CmacUpdate
int wc_CmacUpdate(
Cmac * cmac,
const byte * in,
word32 inSz
)
Add Cipher-based Message Authentication Code input data.
Parameters:
- cmac pointer to the Cmac structure
- in input data to process
- inSz size of input data
See:
Return: 0 on success
Example
ret = wc_CmacUpdate(cmac, in, inSz);
function wc_CmacFinalNoFree
int wc_CmacFinalNoFree(
Cmac * cmac,
byte * out,
word32 * outSz
)
Generate the final result using Cipher-based Message Authentication Code, deferring context cleanup.
Parameters:
- cmac pointer to the Cmac structure
- out pointer to return the result
- outSz pointer size of output (in/out)
See:
Return: 0 on success
Example
ret = wc_CmacFinalNoFree(cmac, out, &outSz);
(void)wc_CmacFree(cmac);
function wc_CmacFinal
int wc_CmacFinal(
Cmac * cmac,
byte * out,
word32 * outSz
)
Generate the final result using Cipher-based Message Authentication Code, and clean up the context with wc_CmacFree().
Parameters:
- cmac pointer to the Cmac structure
- out pointer to return the result
- outSz pointer size of output (in/out)
See:
Return: 0 on success
Example
ret = wc_CmacFinal(cmac, out, &outSz);
function wc_CmacFree
int wc_CmacFree(
Cmac * cmac
)
Clean up allocations in a CMAC context.
Parameters:
- cmac pointer to the Cmac structure
See:
Return: 0 on success
Example
ret = wc_CmacFinalNoFree(cmac, out, &outSz);
(void)wc_CmacFree(cmac);
function wc_AesCmacGenerate
int wc_AesCmacGenerate(
byte * out,
word32 * outSz,
const byte * in,
word32 inSz,
const byte * key,
word32 keySz
)
Single shot function for generating a CMAC.
Parameters:
- out pointer to return the result
- outSz pointer size of output (in/out)
- in input data to process
- inSz size of input data
- key key pointer
- keySz size of the key pointer (16, 24 or 32)
See: wc_AesCmacVerify
Return: 0 on success
Example
ret = wc_AesCmacGenerate(mac, &macSz, msg, msgSz, key, keySz);
function wc_AesCmacVerify
int wc_AesCmacVerify(
const byte * check,
word32 checkSz,
const byte * in,
word32 inSz,
const byte * key,
word32 keySz
)
Single shot function for validating a CMAC.
Parameters:
- check pointer to return the result
- checkSz size of checkout buffer
- in input data to process
- inSz size of input data
- key key pointer
- keySz size of the key pointer (16, 24 or 32)
See: wc_AesCmacGenerate
Return: 0 on success
Example
ret = wc_AesCmacVerify(mac, macSz, msg, msgSz, key, keySz);
function wc_CMAC_Grow
int wc_CMAC_Grow(
Cmac * cmac,
const byte * in,
int inSz
)
Only used with WOLFSSL_HASH_KEEP when hardware requires single-shot and the updates must be cached in memory.
Parameters:
- in input data to process
- inSz size of input data
Return: 0 on success
Example
ret = wc_CMAC_Grow(cmac, in, inSz)
Updated on 2024-12-20 at 01:22:24 +0000