mirror of
https://github.com/thelsing/knx.git
synced 2025-10-12 11:15:54 +02:00
git-subtree-dir: examples/knx-cc1310/coresdk_cc13xx_cc26xx git-subtree-split: 0d78d3280357416a5c0388148cda13717c9ffaa5
148 lines
5.3 KiB
C
148 lines
5.3 KiB
C
/*
|
|
* Copyright (c) 2017, Texas Instruments Incorporated
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
*
|
|
* * Neither the name of Texas Instruments Incorporated nor the names of
|
|
* its contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
/** ============================================================================
|
|
* @file CryptoKeyPlaintext.h
|
|
*
|
|
* @warning This is a beta API. It may change in future releases.
|
|
*
|
|
* # Overview #
|
|
* This file contains the APIs to initialize and access plaintext CryptoKeys.
|
|
* Plaintext CryptoKeys point to keying material stored in flash or RAM and
|
|
* are not subject to enforced usage restrictions. That only means that calling
|
|
* a function that requires an assymmetric public key with a symmetric key will
|
|
* not return an error. It will likely not yield the desired results.
|
|
*
|
|
* # Usage #
|
|
*
|
|
* Plaintext keys are the simplest of the CryptoKeys. All they do is store the length
|
|
* of and a pointer to the keying material. Their use is hence simple as well. After
|
|
* calling the initialization function, the CryptoKey may be used in any of the
|
|
* crypto operation APIs that take a CryptoKey as an input.
|
|
*
|
|
* @code
|
|
*
|
|
* uint8_t keyingMaterial[16];
|
|
* CryptoKey cryptoKey;
|
|
*
|
|
* // Initialise the CryptoKey
|
|
* CryptoKeyPlaintext_initKey(&cryptoKey, keyingMaterial, sizeof(keyingMaterial));
|
|
*
|
|
* // Use the CryptoKey in another crypto operation
|
|
*
|
|
* @endcode
|
|
*
|
|
*/
|
|
|
|
#ifndef ti_drivers_cryptoutils_cyptokey_CryptoKeyPlaintext__include
|
|
#define ti_drivers_cryptoutils_cyptokey_CryptoKeyPlaintext__include
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
#include <ti/drivers/cryptoutils/cryptokey/CryptoKey.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*!
|
|
* @brief Initializes a CryptoKey type
|
|
*
|
|
* @param [in] keyHandle Pointer to a CryptoKey which will be initialized to type CryptoKey_PLAINTEXT
|
|
* and ready for use
|
|
* @param [in] key Pointer to keying material
|
|
*
|
|
* @param [in] keyLength Length of keying material in bytes
|
|
*
|
|
* @return Returns a status code from CryptoKey.h
|
|
*/
|
|
int_fast16_t CryptoKeyPlaintext_initKey(CryptoKey *keyHandle, uint8_t *key, size_t keyLength);
|
|
|
|
|
|
/*!
|
|
* @brief Initializes an empty plaintext CryptoKey type
|
|
*
|
|
* @param [in] keyHandle Pointer to a CryptoKey which will be initialized to type
|
|
* CryptoKey_BLANK_PLAINTEXT
|
|
*
|
|
* @param [in] keyLocation Pointer to location where plaintext keying material can be stored
|
|
*
|
|
* @param [in] keyLength Length of keying material, in bytes
|
|
*
|
|
* @return Returns a status code from CryptoKey.h
|
|
*/
|
|
int_fast16_t CryptoKeyPlaintext_initBlankKey(CryptoKey *keyHandle, uint8_t *keyLocation, size_t keyLength);
|
|
|
|
/*!
|
|
* @brief Gets the length of a plaintext key
|
|
*
|
|
* @param [in] keyHandle Pointer to a plaintext CryptoKey
|
|
*
|
|
* @param [out] length Length of the keying material, in bytes
|
|
*
|
|
* @return Returns a status code from CryptoKey.h
|
|
*/
|
|
int_fast16_t CryptoKeyPlaintext_getKeyLength(CryptoKey *keyHandle, size_t *length);
|
|
|
|
/*!
|
|
* @brief Sets the CryptoKey keyMaterial pointer
|
|
*
|
|
* Updates the key location for a plaintext CryptoKey.
|
|
* Does not modify data at the pointer location.
|
|
*
|
|
* @param [in] keyHandle Pointer to a plaintext CryptoKey who's key data pointer will be modified
|
|
*
|
|
* @param [in] location Pointer to key data location
|
|
*
|
|
* @return Returns a status code from CryptoKey.h
|
|
*/
|
|
int_fast16_t CryptoKeyPlaintext_setKeyLocation(CryptoKey *keyHandle, uint8_t *location);
|
|
|
|
|
|
/*!
|
|
* @brief Gets the length of a plaintext key
|
|
*
|
|
* @param [in] keyHandle Pointer to a CryptoKey
|
|
*
|
|
* @param [out] length Length value will be updated to CryptoKey length, in bytes
|
|
*
|
|
* @return Returns a status code from CryptoKey.h
|
|
*/
|
|
int_fast16_t CryptoKeyPlaintext_getKeyLength(CryptoKey *keyHandle, size_t *length);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ti_drivers_cryptoutils_cyptoKey_CryptoKeyPlaintext__include */
|