fholin fholin / Mbed 2 deprecated MiniMousetest

Dependencies:   mbed

Committer:
fholin
Date:
Fri Dec 15 13:15:04 2017 +0000
Revision:
0:2325d1d28df3
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fholin 0:2325d1d28df3 1 /*!
fholin 0:2325d1d28df3 2 * \file LoRaMacCrypto.h
fholin 0:2325d1d28df3 3 *
fholin 0:2325d1d28df3 4 * \brief LoRa MAC layer cryptography implementation
fholin 0:2325d1d28df3 5 *
fholin 0:2325d1d28df3 6 * \copyright Revised BSD License, see section \ref LICENSE.
fholin 0:2325d1d28df3 7 *
fholin 0:2325d1d28df3 8 * \code
fholin 0:2325d1d28df3 9 * ______ _
fholin 0:2325d1d28df3 10 * / _____) _ | |
fholin 0:2325d1d28df3 11 * ( (____ _____ ____ _| |_ _____ ____| |__
fholin 0:2325d1d28df3 12 * \____ \| ___ | (_ _) ___ |/ ___) _ \
fholin 0:2325d1d28df3 13 * _____) ) ____| | | || |_| ____( (___| | | |
fholin 0:2325d1d28df3 14 * (______/|_____)_|_|_| \__)_____)\____)_| |_|
fholin 0:2325d1d28df3 15 * (C)2013 Semtech
fholin 0:2325d1d28df3 16 *
fholin 0:2325d1d28df3 17 * ___ _____ _ ___ _ _____ ___ ___ ___ ___
fholin 0:2325d1d28df3 18 * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
fholin 0:2325d1d28df3 19 * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
fholin 0:2325d1d28df3 20 * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
fholin 0:2325d1d28df3 21 * embedded.connectivity.solutions===============
fholin 0:2325d1d28df3 22 *
fholin 0:2325d1d28df3 23 * \endcode
fholin 0:2325d1d28df3 24 *
fholin 0:2325d1d28df3 25 * \author Miguel Luis ( Semtech )
fholin 0:2325d1d28df3 26 *
fholin 0:2325d1d28df3 27 * \author Gregory Cristian ( Semtech )
fholin 0:2325d1d28df3 28 *
fholin 0:2325d1d28df3 29 * \author Daniel Jaeckle ( STACKFORCE )
fholin 0:2325d1d28df3 30 *
fholin 0:2325d1d28df3 31 * \defgroup LORAMAC_CRYPTO LoRa MAC layer cryptography implementation
fholin 0:2325d1d28df3 32 * This module covers the implementation of cryptographic functions
fholin 0:2325d1d28df3 33 * of the LoRaMAC layer.
fholin 0:2325d1d28df3 34 * \{
fholin 0:2325d1d28df3 35 */
fholin 0:2325d1d28df3 36 #ifndef __LORAMAC_CRYPTO_H__
fholin 0:2325d1d28df3 37 #define __LORAMAC_CRYPTO_H__
fholin 0:2325d1d28df3 38
fholin 0:2325d1d28df3 39 /*!
fholin 0:2325d1d28df3 40 * Computes the LoRaMAC frame MIC field
fholin 0:2325d1d28df3 41 *
fholin 0:2325d1d28df3 42 * \param [IN] buffer - Data buffer
fholin 0:2325d1d28df3 43 * \param [IN] size - Data buffer size
fholin 0:2325d1d28df3 44 * \param [IN] key - AES key to be used
fholin 0:2325d1d28df3 45 * \param [IN] address - Frame address
fholin 0:2325d1d28df3 46 * \param [IN] dir - Frame direction [0: uplink, 1: downlink]
fholin 0:2325d1d28df3 47 * \param [IN] sequenceCounter - Frame sequence counter
fholin 0:2325d1d28df3 48 * \param [OUT] mic - Computed MIC field
fholin 0:2325d1d28df3 49 */
fholin 0:2325d1d28df3 50 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 );
fholin 0:2325d1d28df3 51
fholin 0:2325d1d28df3 52 /*!
fholin 0:2325d1d28df3 53 * Computes the LoRaMAC payload encryption
fholin 0:2325d1d28df3 54 *
fholin 0:2325d1d28df3 55 * \param [IN] buffer - Data buffer
fholin 0:2325d1d28df3 56 * \param [IN] size - Data buffer size
fholin 0:2325d1d28df3 57 * \param [IN] key - AES key to be used
fholin 0:2325d1d28df3 58 * \param [IN] address - Frame address
fholin 0:2325d1d28df3 59 * \param [IN] dir - Frame direction [0: uplink, 1: downlink]
fholin 0:2325d1d28df3 60 * \param [IN] sequenceCounter - Frame sequence counter
fholin 0:2325d1d28df3 61 * \param [OUT] encBuffer - Encrypted buffer
fholin 0:2325d1d28df3 62 */
fholin 0:2325d1d28df3 63 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 );
fholin 0:2325d1d28df3 64
fholin 0:2325d1d28df3 65 /*!
fholin 0:2325d1d28df3 66 * Computes the LoRaMAC payload decryption
fholin 0:2325d1d28df3 67 *
fholin 0:2325d1d28df3 68 * \param [IN] buffer - Data buffer
fholin 0:2325d1d28df3 69 * \param [IN] size - Data buffer size
fholin 0:2325d1d28df3 70 * \param [IN] key - AES key to be used
fholin 0:2325d1d28df3 71 * \param [IN] address - Frame address
fholin 0:2325d1d28df3 72 * \param [IN] dir - Frame direction [0: uplink, 1: downlink]
fholin 0:2325d1d28df3 73 * \param [IN] sequenceCounter - Frame sequence counter
fholin 0:2325d1d28df3 74 * \param [OUT] decBuffer - Decrypted buffer
fholin 0:2325d1d28df3 75 */
fholin 0:2325d1d28df3 76 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 );
fholin 0:2325d1d28df3 77
fholin 0:2325d1d28df3 78 /*!
fholin 0:2325d1d28df3 79 * Computes the LoRaMAC Join Request frame MIC field
fholin 0:2325d1d28df3 80 *
fholin 0:2325d1d28df3 81 * \param [IN] buffer - Data buffer
fholin 0:2325d1d28df3 82 * \param [IN] size - Data buffer size
fholin 0:2325d1d28df3 83 * \param [IN] key - AES key to be used
fholin 0:2325d1d28df3 84 * \param [OUT] mic - Computed MIC field
fholin 0:2325d1d28df3 85 */
fholin 0:2325d1d28df3 86 void LoRaMacJoinComputeMic( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t *mic );
fholin 0:2325d1d28df3 87
fholin 0:2325d1d28df3 88 /*!
fholin 0:2325d1d28df3 89 * Computes the LoRaMAC join frame decryption
fholin 0:2325d1d28df3 90 *
fholin 0:2325d1d28df3 91 * \param [IN] buffer - Data buffer
fholin 0:2325d1d28df3 92 * \param [IN] size - Data buffer size
fholin 0:2325d1d28df3 93 * \param [IN] key - AES key to be used
fholin 0:2325d1d28df3 94 * \param [OUT] decBuffer - Decrypted buffer
fholin 0:2325d1d28df3 95 */
fholin 0:2325d1d28df3 96 void LoRaMacJoinDecrypt( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint8_t *decBuffer );
fholin 0:2325d1d28df3 97
fholin 0:2325d1d28df3 98 /*!
fholin 0:2325d1d28df3 99 * Computes the LoRaMAC join frame decryption
fholin 0:2325d1d28df3 100 *
fholin 0:2325d1d28df3 101 * \param [IN] key - AES key to be used
fholin 0:2325d1d28df3 102 * \param [IN] appNonce - Application nonce
fholin 0:2325d1d28df3 103 * \param [IN] devNonce - Device nonce
fholin 0:2325d1d28df3 104 * \param [OUT] nwkSKey - Network session key
fholin 0:2325d1d28df3 105 * \param [OUT] appSKey - Application session key
fholin 0:2325d1d28df3 106 */
fholin 0:2325d1d28df3 107 void LoRaMacJoinComputeSKeys( const uint8_t *key, const uint8_t *appNonce, uint16_t devNonce, uint8_t *nwkSKey, uint8_t *appSKey );
fholin 0:2325d1d28df3 108
fholin 0:2325d1d28df3 109 /*! \} defgroup LORAMAC */
fholin 0:2325d1d28df3 110
fholin 0:2325d1d28df3 111 void LoRaMacComputeAndAddMic( uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint8_t dir, uint32_t sequenceCounter );
fholin 0:2325d1d28df3 112 int LoRaMacCheckMic( uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t address, uint32_t sequenceCounter, uint32_t micIn );
fholin 0:2325d1d28df3 113 int LoRaMacCheckJoinMic( const uint8_t *buffer, uint16_t size, const uint8_t *key, uint32_t micIn);
fholin 0:2325d1d28df3 114 #endif // __LORAMAC_CRYPTO_H__