Declarations for security tool box.
Copyright (c) 2013-2018 Microchip Technology Inc. and its subsidiaries.
Macros | |
#define | ADATA (0x40) |
#define | ENCRYPTION_NOT_REQD (0x00) |
Macros for MIC Calculation and Security. More... | |
#define | ENCRYPTION_REQD (0x01) |
#define | LEN_FIELD (0x01) |
#define | LEN_MIC_00 (0x00) |
#define | LEN_MIC_128 (0x10) |
#define | LEN_MIC_32 (0x04) |
#define | LEN_MIC_64 (0x08) |
#define | PLAINTEXT_FLAG (0x01) |
Functions | |
stb_ccm_t | stb_ccm_secure (uint8_t *buffer, uint8_t nonce[AES_BLOCKSIZE], uint8_t *key, uint8_t hdr_len, uint8_t pld_len, uint8_t sec_level, uint8_t aes_dir) |
Secure one block with CCM*. More... | |
void | stb_init (void) |
STB Initialization. More... | |
#define ADATA (0x40) |
Referenced by stb_ccm_secure().
#define ENCRYPTION_NOT_REQD (0x00) |
Macros for MIC Calculation and Security.
Referenced by stb_ccm_secure().
#define ENCRYPTION_REQD (0x01) |
Referenced by stb_ccm_secure().
#define LEN_FIELD (0x01) |
Referenced by stb_ccm_secure().
#define LEN_MIC_00 (0x00) |
Referenced by stb_ccm_secure().
#define LEN_MIC_128 (0x10) |
Referenced by stb_ccm_secure().
#define LEN_MIC_32 (0x04) |
Referenced by stb_ccm_secure().
#define LEN_MIC_64 (0x08) |
Referenced by stb_ccm_secure().
#define PLAINTEXT_FLAG (0x01) |
Referenced by stb_ccm_secure().
enum SHORTENUM |
CCM status values.
Enumerator | |
---|---|
ASSOCIATIONREQUEST | |
ASSOCIATIONRESPONSE | |
DISASSOCIATIONNOTIFICATION | |
DATAREQUEST | |
PANIDCONFLICTNOTIFICAION | |
ORPHANNOTIFICATION | |
BEACONREQUEST | |
COORDINATORREALIGNMENT | |
GTSREQUEST | |
ORPHANREALIGNMENT | |
BEACON_MESSAGE | |
DATAREQUEST_IMPL_POLL | |
NULL_FRAME | |
MCPS_MESSAGE | |
STB_CCM_OK |
CCM en/decryption OK. |
STB_CCM_ILLPARM |
Illegal parameter value in stb_ccm_secure() |
STB_CCM_KEYMISS |
No previous key init in stb_ccm_secure() |
STB_CCM_MICERR |
MIC error detected in stb_ccm_secure() |
SECURITY_00_LEVEL |
Security Level 0. |
SECURITY_01_LEVEL |
Security Level 1. |
SECURITY_02_LEVEL |
Security Level 2. |
SECURITY_03_LEVEL |
Security Level 3. |
SECURITY_04_LEVEL |
Security Level 4. |
SECURITY_05_LEVEL |
Security Level 5. |
SECURITY_06_LEVEL |
Security Level 6. |
SECURITY_07_LEVEL |
Security Level 7. |
enum SHORTENUM |
Enumerator | |
---|---|
ASSOCIATIONREQUEST | |
ASSOCIATIONRESPONSE | |
DISASSOCIATIONNOTIFICATION | |
DATAREQUEST | |
PANIDCONFLICTNOTIFICAION | |
ORPHANNOTIFICATION | |
BEACONREQUEST | |
COORDINATORREALIGNMENT | |
GTSREQUEST | |
ORPHANREALIGNMENT | |
BEACON_MESSAGE | |
DATAREQUEST_IMPL_POLL | |
NULL_FRAME | |
MCPS_MESSAGE | |
STB_CCM_OK |
CCM en/decryption OK. |
STB_CCM_ILLPARM |
Illegal parameter value in stb_ccm_secure() |
STB_CCM_KEYMISS |
No previous key init in stb_ccm_secure() |
STB_CCM_MICERR |
MIC error detected in stb_ccm_secure() |
SECURITY_00_LEVEL |
Security Level 0. |
SECURITY_01_LEVEL |
Security Level 1. |
SECURITY_02_LEVEL |
Security Level 2. |
SECURITY_03_LEVEL |
Security Level 3. |
SECURITY_04_LEVEL |
Security Level 4. |
SECURITY_05_LEVEL |
Security Level 5. |
SECURITY_06_LEVEL |
Security Level 6. |
SECURITY_07_LEVEL |
Security Level 7. |
stb_ccm_t stb_ccm_secure | ( | uint8_t * | buffer, |
uint8_t | nonce[AES_BLOCKSIZE], | ||
uint8_t * | key, | ||
uint8_t | hdr_len, | ||
uint8_t | pld_len, | ||
uint8_t | sec_level, | ||
uint8_t | aes_dir | ||
) |
Secure one block with CCM*.
This functions secures one block with CCM* according to 802.15.4.
[in,out] | buffer | Input: plaintext header and payload concatenated; for encryption: MUST HAVE 'AES_BLOCKSIZE' BYTES SPACE AT THE END FOR THE MIC! Output: frame secured (with MIC at end)/unsecured |
[in] | nonce | The nonce: Initialization Vector (IV) as used in cryptography; the ZigBee nonce (13 bytes long) are the bytes 2...14 of this nonce |
[in] | key | The key to be used; if NULL, use the current key |
[in] | hdr_len | Length of plaintext header (will not be encrypted) |
[in] | pld_len | Length of payload to be encrypted; if 0, then only MIC authentication implies |
[in] | sec_level | Security level according to IEEE 802.15.4, 7.6.2.2.1, Table 95:
|
[in] | aes_dir | AES_DIR_ENCRYPT if secure, AES_DIR_DECRYPT if unsecure |
This functions secures one block with CCM* according to 802.15.4.
[in,out] | buffer | Input: plaintext header and payload concatenated; for encryption: MUST HAVE 'AES_BLOCKSIZE' BYTES SPACE AT THE END FOR THE MIC! Output: frame secured (with MIC at end)/unsecured |
[in] | nonce | The nonce: Initialization Vector (IV) as used in cryptography; the ZigBee nonce (13 bytes long) are the bytes 2...14 of this nonce |
[in] | key | The key to be used; if NULL, use the current key |
[in] | hdr_len | Length of plain text header (will not be encrypted) |
[in] | pld_len | Length of payload to be encrypted; if 0, then only MIC authentication implies |
[in] | sec_level | Security level according to IEEE 802.15.4, 7.6.2.2.1, Table 95:
|
[in] | aes_dir | AES_DIR_ENCRYPT if secure, AES_DIR_DECRYPT if unsecured |
References ADATA, AES_BLOCKSIZE, AES_DIR_ENCRYPT, AES_KEYSIZE, AES_MODE_ECB, aMaxPHYPacketSize, compute_mic(), encrypt_pldmic(), ENCRYPTION_NOT_REQD, ENCRYPTION_REQD, key_change, last_key, LEN_FIELD, LEN_MIC_00, LEN_MIC_128, LEN_MIC_32, LEN_MIC_64, PLAINTEXT_FLAG, prev_trx_status, sal_aes_clean_up, sal_aes_restart(), sal_aes_setup(), SECURITY_00_LEVEL, SECURITY_01_LEVEL, SECURITY_02_LEVEL, SECURITY_03_LEVEL, SECURITY_04_LEVEL, SECURITY_05_LEVEL, SECURITY_06_LEVEL, SECURITY_07_LEVEL, STB_CCM_ILLPARM, STB_CCM_KEYMISS, STB_CCM_MICERR, STB_CCM_OK, stb_restart_required, tal_trx_status, tal_trx_wakeup(), and TRX_SLEEP.
void stb_init | ( | void | ) |
STB Initialization.
This function initializes the STB.
References sal_init().
Referenced by mac_init().