| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*!
- * \file LoRaMacCrypto.h
- *
- * \brief LoRa MAC layer cryptography implementation
- *
- * \copyright Revised BSD License, see section \ref LICENSE.
- *
- * \code
- * ______ _
- * / _____) _ | |
- * ( (____ _____ ____ _| |_ _____ ____| |__
- * \____ \| ___ | (_ _) ___ |/ ___) _ \
- * _____) ) ____| | | || |_| ____( (___| | | |
- * (______/|_____)_|_|_| \__)_____)\____)_| |_|
- * (C)2013 Semtech
- *
- * ___ _____ _ ___ _ _____ ___ ___ ___ ___
- * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
- * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
- * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
- * embedded.connectivity.solutions===============
- *
- * \endcode
- *
- * \author Miguel Luis ( Semtech )
- *
- * \author Gregory Cristian ( Semtech )
- *
- * \author Daniel Jäckle ( STACKFORCE )
- *
- * \defgroup LORAMAC_CRYPTO LoRa MAC layer cryptography implementation
- * This module covers the implementation of cryptographic functions
- * of the LoRaMAC layer.
- * \{
- */
- #ifndef __LORAMAC_CRYPTO_H__
- #define __LORAMAC_CRYPTO_H__
- /*!
- * Computes the LoRaMAC frame MIC field
- *
- * \param [IN] buffer - Data buffer
- * \param [IN] size - Data buffer size
- * \param [IN] key - AES key to be used
- * \param [IN] address - Frame address
- * \param [IN] dir - Frame direction [0: uplink, 1: downlink]
- * \param [IN] sequenceCounter - Frame sequence counter
- * \param [OUT] mic - Computed MIC field
- */
- void LoRaMacComputeMic( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint32_t *mic );
- /*!
- * Computes the LoRaMAC payload encryption
- *
- * \param [IN] buffer - Data buffer
- * \param [IN] size - Data buffer size
- * \param [IN] key - AES key to be used
- * \param [IN] address - Frame address
- * \param [IN] dir - Frame direction [0: uplink, 1: downlink]
- * \param [IN] sequenceCounter - Frame sequence counter
- * \param [OUT] encBuffer - Encrypted buffer
- */
- void LoRaMacPayloadEncrypt( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint8_t *encBuffer );
- /*!
- * Computes the LoRaMAC payload decryption
- *
- * \param [IN] buffer - Data buffer
- * \param [IN] size - Data buffer size
- * \param [IN] key - AES key to be used
- * \param [IN] address - Frame address
- * \param [IN] dir - Frame direction [0: uplink, 1: downlink]
- * \param [IN] sequenceCounter - Frame sequence counter
- * \param [OUT] decBuffer - Decrypted buffer
- */
- void LoRaMacPayloadDecrypt( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter, uint8_t *decBuffer );
- /*!
- * Computes the LoRaMAC Join Request frame MIC field
- *
- * \param [IN] buffer - Data buffer
- * \param [IN] size - Data buffer size
- * \param [IN] key - AES key to be used
- * \param [OUT] mic - Computed MIC field
- */
- void LoRaMacJoinComputeMic( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t *mic );
- /*!
- * Computes the LoRaMAC join frame decryption
- *
- * \param [IN] buffer - Data buffer
- * \param [IN] size - Data buffer size
- * \param [IN] key - AES key to be used
- * \param [OUT] decBuffer - Decrypted buffer
- */
- void LoRaMacJoinDecrypt( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint8_t *decBuffer );
- /*!
- * Computes the LoRaMAC join frame decryption
- *
- * \param [IN] key - AES key to be used
- * \param [IN] appNonce - Application nonce
- * \param [IN] devNonce - Device nonce
- * \param [OUT] nwkSKey - Network session key
- * \param [OUT] appSKey - Application session key
- */
- void LoRaMacJoinComputeSKeys( const uint8_t *key, const uint8_t *appNonce, uint16_t devNonce, uint8_t *nwkSKey, uint8_t *appSKey );
- /*! \} defgroup LORAMAC */
- #endif // __LORAMAC_CRYPTO_H__
|