Defines | |
| #define | CBC_BUF_LEN 4096 |
| #define | COMPUTE_NIST_AUTH_LEN_SIZE(l) |
| #define | STORE_NIST_AUTH_LEN(l, p) |
Functions | |
| static fsl_shw_return_t | process_assoc_from_nist_params (sah_Link **link1, uint32_t *data_len, fsl_shw_uco_t *user_ctx, fsl_shw_acco_t *auth_ctx, const uint8_t *auth_data, uint32_t auth_data_length, uint8_t **temp_buf) |
| static fsl_shw_return_t | add_assoc_preamble (sah_Head_Desc **desc_chain, fsl_shw_uco_t *user_ctx, fsl_shw_acco_t *auth_ctx, int encrypt, const uint8_t *auth_data, uint32_t auth_data_length) |
| fsl_shw_return_t | fsl_shw_gen_encrypt (fsl_shw_uco_t *user_ctx, fsl_shw_acco_t *auth_ctx, fsl_shw_sko_t *cipher_key_info, fsl_shw_sko_t *auth_key_info, uint32_t auth_data_length, const uint8_t *auth_data, uint32_t payload_length, const uint8_t *payload, uint8_t *ct, uint8_t *auth_value) |
| fsl_shw_return_t | fsl_shw_auth_decrypt (fsl_shw_uco_t *user_ctx, fsl_shw_acco_t *auth_ctx, fsl_shw_sko_t *cipher_key_info, fsl_shw_sko_t *auth_key_info, uint32_t auth_data_length, const uint8_t *auth_data, uint32_t payload_length, const uint8_t *ct, const uint8_t *auth_value, uint8_t *payload) |
Variables | |
| static uint8_t | garbage_output [16] |
| static uint8_t | block_zeros [16] |
This file contains the routines which do the combined encrypt+authentication functions. For now, only AES-CCM is supported.
| #define CBC_BUF_LEN 4096 |
Size of buffer to repetively sink useless CBC output
Referenced by add_assoc_preamble().
| #define COMPUTE_NIST_AUTH_LEN_SIZE | ( | l | ) |
({ \
unsigned val; \
uint32_t len = l; \
if (len == 0) { \
val = 0; \
} else if (len < 65280) { \
val = 2; \
} else { /* cannot handle >= 2^32 */ \
val = 6; \
} \
val; \
})
Compute the size, in bytes, of the encoded auth length
| l | The actual associated data length |
Referenced by process_assoc_from_nist_params().
| #define STORE_NIST_AUTH_LEN | ( | l, | |||
| p | ) |
{ \
register uint32_t L = l; \
if ((uint32_t)(l) < 65280) { \
(p)[1] = L & 0xff; \
L >>= 8; \
(p)[0] = L & 0xff; \
} else { /* cannot handle >= 2^32 */ \
int i; \
for (i = 5; i > 1; i--) { \
(p)[i] = L & 0xff; \
L >>= 8; \
} \
(p)[1] = 0xfe; /* Markers */ \
(p)[0] = 0xff; \
} \
}
Store the encoded Auth Length into the Auth Data
| l | The actual Auth Length | |
| p | Location to store encoding (must be uint8_t*) |
Referenced by process_assoc_from_nist_params().
| static fsl_shw_return_t add_assoc_preamble | ( | sah_Head_Desc ** | desc_chain, | |
| fsl_shw_uco_t * | user_ctx, | |||
| fsl_shw_acco_t * | auth_ctx, | |||
| int | encrypt, | |||
| const uint8_t * | auth_data, | |||
| uint32_t | auth_data_length | |||
| ) | [inline, static] |
Add a Descriptor which will process with CBC the NIST preamble data
| desc_chain | Current chain | |
| user_ctx | User's context | |
| auth_ctx | Inf encrypt 0 => decrypt, non-zero => encrypt | |
| auth_data | Additional auth data for this call | |
| auth_data_length | Length in bytes of auth_data |
References CBC_BUF_LEN, fsl_shw_acco_t::CCM_ctx_info, fsl_shw_acco_t::flags, FSL_RETURN_NO_RESOURCE_S, FSL_RETURN_OK_S, fsl_shw_uco_t::mem_util, sah_Mem_Util::mu_malloc, sah_Mem_Util::mu_ref, process_assoc_from_nist_params(), SAH_HDR_SKHA_CBC_ICV, SAH_HDR_SKHA_ENC_DEC, SAH_OUTPUT_LINK, SAH_OWNS_LINK_DATA, and SAH_USES_LINK_DATA.
Referenced by fsl_shw_auth_decrypt(), and fsl_shw_gen_encrypt().
| static fsl_shw_return_t process_assoc_from_nist_params | ( | sah_Link ** | link1, | |
| uint32_t * | data_len, | |||
| fsl_shw_uco_t * | user_ctx, | |||
| fsl_shw_acco_t * | auth_ctx, | |||
| const uint8_t * | auth_data, | |||
| uint32_t | auth_data_length, | |||
| uint8_t ** | temp_buf | |||
| ) | [inline, static] |
Append a descriptor chain which will compute CBC over the formatted associated data blocks.
| [in,out] | link1 | Where to append the new link |
| [in,out] | data_len | Location of current/updated auth-only data length |
| user_ctx | Info for acquiring memory | |
| auth_ctx | Location of block0 value | |
| auth_data | Unformatted associated data | |
| auth_data_length | Length in octets of auth_data | |
| [in,out] | temp_buf | Location of in-process data. |
References block_zeros, fsl_shw_acco_t::CCM_ctx_info, COMPUTE_NIST_AUTH_LEN_SIZE, FSL_RETURN_OK_S, fsl_shw_uco_t::mem_util, SAH_OWNS_LINK_DATA, SAH_USES_LINK_DATA, and STORE_NIST_AUTH_LEN.
Referenced by add_assoc_preamble().
uint8_t block_zeros[16] [static] |
{
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
}
Block of zeroes which is maximum Symmetric block size, used for initializing context register, etc.
Referenced by fsl_shw_auth_decrypt(), fsl_shw_gen_encrypt(), and process_assoc_from_nist_params().
uint8_t garbage_output[16] [static] |
Place to store useless output (while bumping CTR0 to CTR1, for instance. Must be maximum Symmetric block size
Referenced by fsl_shw_gen_encrypt().
| © Freescale Semiconductor, Inc., 2007.
All rights reserved. Freescale Confidential Proprietary NDA Required |
|