Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-dev by
targets/TARGET_Analog_Devices/TARGET_ADUCM4X50/TARGET_ADUCM4050/bsp/drivers/crypto/adi_crypto.h@178:79309dc6340a, 2017-11-23 (annotated)
- Committer:
- AnnaBridge
- Date:
- Thu Nov 23 11:57:25 2017 +0000
- Revision:
- 178:79309dc6340a
mbed-dev library. Release version 156
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 178:79309dc6340a | 1 | /*! ***************************************************************************** |
AnnaBridge | 178:79309dc6340a | 2 | * @file adi_crypto.h |
AnnaBridge | 178:79309dc6340a | 3 | * @brief Main include file for CRYPTO Device driver definitions |
AnnaBridge | 178:79309dc6340a | 4 | ----------------------------------------------------------------------------- |
AnnaBridge | 178:79309dc6340a | 5 | Copyright (c) 2010-2016 Analog Devices, Inc. |
AnnaBridge | 178:79309dc6340a | 6 | |
AnnaBridge | 178:79309dc6340a | 7 | All rights reserved. |
AnnaBridge | 178:79309dc6340a | 8 | |
AnnaBridge | 178:79309dc6340a | 9 | Redistribution and use in source and binary forms, with or without modification, |
AnnaBridge | 178:79309dc6340a | 10 | are permitted provided that the following conditions are met: |
AnnaBridge | 178:79309dc6340a | 11 | - Redistributions of source code must retain the above copyright notice, |
AnnaBridge | 178:79309dc6340a | 12 | this list of conditions and the following disclaimer. |
AnnaBridge | 178:79309dc6340a | 13 | - Redistributions in binary form must reproduce the above copyright notice, |
AnnaBridge | 178:79309dc6340a | 14 | this list of conditions and the following disclaimer in the documentation |
AnnaBridge | 178:79309dc6340a | 15 | and/or other materials provided with the distribution. |
AnnaBridge | 178:79309dc6340a | 16 | - Modified versions of the software must be conspicuously marked as such. |
AnnaBridge | 178:79309dc6340a | 17 | - This software is licensed solely and exclusively for use with processors |
AnnaBridge | 178:79309dc6340a | 18 | manufactured by or for Analog Devices, Inc. |
AnnaBridge | 178:79309dc6340a | 19 | - This software may not be combined or merged with other code in any manner |
AnnaBridge | 178:79309dc6340a | 20 | that would cause the software to become subject to terms and conditions |
AnnaBridge | 178:79309dc6340a | 21 | which differ from those listed here. |
AnnaBridge | 178:79309dc6340a | 22 | - Neither the name of Analog Devices, Inc. nor the names of its |
AnnaBridge | 178:79309dc6340a | 23 | contributors may be used to endorse or promote products derived |
AnnaBridge | 178:79309dc6340a | 24 | from this software without specific prior written permission. |
AnnaBridge | 178:79309dc6340a | 25 | - The use of this software may or may not infringe the patent rights of one |
AnnaBridge | 178:79309dc6340a | 26 | or more patent holders. This license does not release you from the |
AnnaBridge | 178:79309dc6340a | 27 | requirement that you obtain separate licenses from these patent holders |
AnnaBridge | 178:79309dc6340a | 28 | to use this software. |
AnnaBridge | 178:79309dc6340a | 29 | |
AnnaBridge | 178:79309dc6340a | 30 | THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. AND CONTRIBUTORS "AS IS" |
AnnaBridge | 178:79309dc6340a | 31 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, NON- |
AnnaBridge | 178:79309dc6340a | 32 | INFRINGEMENT, TITLE, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
AnnaBridge | 178:79309dc6340a | 33 | DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES, INC. OR CONTRIBUTORS BE LIABLE |
AnnaBridge | 178:79309dc6340a | 34 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR |
AnnaBridge | 178:79309dc6340a | 35 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, DAMAGES ARISING OUT OF |
AnnaBridge | 178:79309dc6340a | 36 | CLAIMS OF INTELLECTUAL PROPERTY RIGHTS INFRINGEMENT; PROCUREMENT OF |
AnnaBridge | 178:79309dc6340a | 37 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
AnnaBridge | 178:79309dc6340a | 38 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
AnnaBridge | 178:79309dc6340a | 39 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
AnnaBridge | 178:79309dc6340a | 40 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
AnnaBridge | 178:79309dc6340a | 41 | POSSIBILITY OF SUCH DAMAGE. |
AnnaBridge | 178:79309dc6340a | 42 | |
AnnaBridge | 178:79309dc6340a | 43 | *****************************************************************************/ |
AnnaBridge | 178:79309dc6340a | 44 | |
AnnaBridge | 178:79309dc6340a | 45 | |
AnnaBridge | 178:79309dc6340a | 46 | /** @addtogroup Crypto_Driver Crypto Driver |
AnnaBridge | 178:79309dc6340a | 47 | * @{ |
AnnaBridge | 178:79309dc6340a | 48 | */ |
AnnaBridge | 178:79309dc6340a | 49 | |
AnnaBridge | 178:79309dc6340a | 50 | #ifndef ADI_CRYPTO_H |
AnnaBridge | 178:79309dc6340a | 51 | #define ADI_CRYPTO_H |
AnnaBridge | 178:79309dc6340a | 52 | |
AnnaBridge | 178:79309dc6340a | 53 | /*! \cond PRIVATE */ |
AnnaBridge | 178:79309dc6340a | 54 | #include <adi_processor.h> |
AnnaBridge | 178:79309dc6340a | 55 | #include <adi_callback.h> |
AnnaBridge | 178:79309dc6340a | 56 | #include <rtos_map/adi_rtos_map.h> /* for ADI_SEM_SIZE */ |
AnnaBridge | 178:79309dc6340a | 57 | /*! \endcond */ |
AnnaBridge | 178:79309dc6340a | 58 | #include <adi_crypto_config.h> |
AnnaBridge | 178:79309dc6340a | 59 | |
AnnaBridge | 178:79309dc6340a | 60 | #ifdef __cplusplus |
AnnaBridge | 178:79309dc6340a | 61 | extern "C" { |
AnnaBridge | 178:79309dc6340a | 62 | #endif /* __cplusplus */ |
AnnaBridge | 178:79309dc6340a | 63 | |
AnnaBridge | 178:79309dc6340a | 64 | /*! |
AnnaBridge | 178:79309dc6340a | 65 | * \enum ADI_CRYPTO_RESULT |
AnnaBridge | 178:79309dc6340a | 66 | * Crypto API return codes |
AnnaBridge | 178:79309dc6340a | 67 | */ |
AnnaBridge | 178:79309dc6340a | 68 | typedef enum |
AnnaBridge | 178:79309dc6340a | 69 | { |
AnnaBridge | 178:79309dc6340a | 70 | ADI_CRYPTO_SUCCESS = 0, /*!< No Error, API suceeded. */ |
AnnaBridge | 178:79309dc6340a | 71 | ADI_CRYPTO_ERR_ALREADY_INITIALIZED, /*!< Crypto is already initialized. */ |
AnnaBridge | 178:79309dc6340a | 72 | ADI_CRYPTO_ERR_BAD_BUFFER, /*!< Invalid buffer parameters. */ |
AnnaBridge | 178:79309dc6340a | 73 | ADI_CRYPTO_ERR_BAD_CONFIG, /*!< Invalid device config parameters passed. */ |
AnnaBridge | 178:79309dc6340a | 74 | ADI_CRYPTO_ERR_BAD_DEVICE_NUM, /*!< Invalid device instance number. */ |
AnnaBridge | 178:79309dc6340a | 75 | ADI_CRYPTO_ERR_BAD_DEV_HANDLE, /*!< Invalid device handle passed. */ |
AnnaBridge | 178:79309dc6340a | 76 | ADI_CRYPTO_ERR_COMPUTE_ACTIVE, /*!< Computation underway. */ |
AnnaBridge | 178:79309dc6340a | 77 | ADI_CRYPTO_ERR_DMA_BUS_FAULT, /*!< Runtime DMA bus fault detected. */ |
AnnaBridge | 178:79309dc6340a | 78 | ADI_CRYPTO_ERR_DMA_INVALID_DESCR, /*!< Runtime DMA invalid descriptor detected. */ |
AnnaBridge | 178:79309dc6340a | 79 | ADI_CRYPTO_ERR_DMA_REGISTER, /*!< Error registering DMA error callback function. */ |
AnnaBridge | 178:79309dc6340a | 80 | ADI_CRYPTO_ERR_DMA_UNKNOWN_ERROR, /*!< Unknown runtime DMA error detected. */ |
AnnaBridge | 178:79309dc6340a | 81 | ADI_CRYPTO_ERR_INSUFFICIENT_MEM, /*!< Insufficient memory passed to the driver. */ |
AnnaBridge | 178:79309dc6340a | 82 | ADI_CRYPTO_ERR_INVALID_PARAM, /*!< Invalid function parameter. */ |
AnnaBridge | 178:79309dc6340a | 83 | ADI_CRYPTO_ERR_INVALID_STATE, /*!< Operation failed since the device is in an invalid state. */ |
AnnaBridge | 178:79309dc6340a | 84 | ADI_CRYPTO_ERR_SEMAPHORE_FAILED, /*!< Failure in semaphore functions. */ |
AnnaBridge | 178:79309dc6340a | 85 | } ADI_CRYPTO_RESULT; |
AnnaBridge | 178:79309dc6340a | 86 | |
AnnaBridge | 178:79309dc6340a | 87 | /*! |
AnnaBridge | 178:79309dc6340a | 88 | * \enum ADI_CRYPTO_EVENT |
AnnaBridge | 178:79309dc6340a | 89 | * Crypto callback events |
AnnaBridge | 178:79309dc6340a | 90 | */ |
AnnaBridge | 178:79309dc6340a | 91 | typedef enum |
AnnaBridge | 178:79309dc6340a | 92 | { |
AnnaBridge | 178:79309dc6340a | 93 | /* successful buffer completion events */ |
AnnaBridge | 178:79309dc6340a | 94 | ADI_CRYPTO_EVENT_STATUS_CBC_DONE, /*!< CBC operation is complete. */ |
AnnaBridge | 178:79309dc6340a | 95 | ADI_CRYPTO_EVENT_STATUS_CCM_DONE, /*!< CCM operation is complete. */ |
AnnaBridge | 178:79309dc6340a | 96 | ADI_CRYPTO_EVENT_STATUS_CMAC_DONE, /*!< CMAC operation is complete. */ |
AnnaBridge | 178:79309dc6340a | 97 | ADI_CRYPTO_EVENT_STATUS_CTR_DONE, /*!< CTR operation is complete. */ |
AnnaBridge | 178:79309dc6340a | 98 | ADI_CRYPTO_EVENT_STATUS_ECB_DONE, /*!< ECB operation is complete. */ |
AnnaBridge | 178:79309dc6340a | 99 | ADI_CRYPTO_EVENT_STATUS_HMAC_DONE, /*!< HMAC operation is complete. */ |
AnnaBridge | 178:79309dc6340a | 100 | ADI_CRYPTO_EVENT_STATUS_SHA_DONE, /*!< SHA operation is complete. */ |
AnnaBridge | 178:79309dc6340a | 101 | |
AnnaBridge | 178:79309dc6340a | 102 | /* other events */ |
AnnaBridge | 178:79309dc6340a | 103 | ADI_CRYPTO_EVENT_DMA_BUS_ERROR, /*!< DMA bus error encountered. */ |
AnnaBridge | 178:79309dc6340a | 104 | ADI_CRYPTO_EVENT_DMA_DESCRIPTOR_ERROR, /*!< DMA descriptor error encountered. */ |
AnnaBridge | 178:79309dc6340a | 105 | ADI_CRYPTO_EVENT_DMA_UNKNOWN_ERROR, /*!< DMA unknown error encountered. */ |
AnnaBridge | 178:79309dc6340a | 106 | ADI_CRYPTO_EVENT_STATUS_INPUT_OVERFLOW, /*!< Input overflow error encountered. */ |
AnnaBridge | 178:79309dc6340a | 107 | ADI_CRYPTO_EVENT_STATUS_UNKNOWN, /*!< Unknown error encountered. */ |
AnnaBridge | 178:79309dc6340a | 108 | } ADI_CRYPTO_EVENT; |
AnnaBridge | 178:79309dc6340a | 109 | |
AnnaBridge | 178:79309dc6340a | 110 | /*! The amount of application supplied memory used by the CRYPTO driver to store internal state. */ |
AnnaBridge | 178:79309dc6340a | 111 | #define ADI_CRYPTO_MEMORY_SIZE (88u + ADI_SEM_SIZE) |
AnnaBridge | 178:79309dc6340a | 112 | |
AnnaBridge | 178:79309dc6340a | 113 | /*! A device handle used in all API functions to identify the flash device. */ |
AnnaBridge | 178:79309dc6340a | 114 | typedef struct __ADI_CRYPTO_DEV_DATA_TYPE* ADI_CRYPTO_HANDLE; |
AnnaBridge | 178:79309dc6340a | 115 | |
AnnaBridge | 178:79309dc6340a | 116 | /*! Number of bytes to allocate for SHA256 hash outputs */ |
AnnaBridge | 178:79309dc6340a | 117 | #define ADI_CRYPTO_SHA_HASH_BYTES (256u/8u) |
AnnaBridge | 178:79309dc6340a | 118 | |
AnnaBridge | 178:79309dc6340a | 119 | /*! Computation mode(Encryption/Decryption) for given buffers */ |
AnnaBridge | 178:79309dc6340a | 120 | typedef enum |
AnnaBridge | 178:79309dc6340a | 121 | { |
AnnaBridge | 178:79309dc6340a | 122 | ADI_CRYPTO_DECODE = (0u << BITP_CRYPT_CFG_ENCR), /*!< Encoding mode is decryption. */ |
AnnaBridge | 178:79309dc6340a | 123 | ADI_CRYPTO_ENCODE = (1u << BITP_CRYPT_CFG_ENCR), /*!< Encoding mode is encryption. */ |
AnnaBridge | 178:79309dc6340a | 124 | } ADI_CRYPTO_CODING_MODE; |
AnnaBridge | 178:79309dc6340a | 125 | |
AnnaBridge | 178:79309dc6340a | 126 | /*! Enum for the AES KEY Length */ |
AnnaBridge | 178:79309dc6340a | 127 | typedef enum |
AnnaBridge | 178:79309dc6340a | 128 | { |
AnnaBridge | 178:79309dc6340a | 129 | ADI_CRYPTO_AES_KEY_LEN_128_BIT = (0u << BITP_CRYPT_CFG_AESKEYLEN), /*!< KEY length is 128 bits. */ |
AnnaBridge | 178:79309dc6340a | 130 | ADI_CRYPTO_AES_KEY_LEN_256_BIT = (2u << BITP_CRYPT_CFG_AESKEYLEN), /*!< KEY length is 256 bits. */ |
AnnaBridge | 178:79309dc6340a | 131 | } ADI_CRYPTO_AES_KEY_LEN; |
AnnaBridge | 178:79309dc6340a | 132 | |
AnnaBridge | 178:79309dc6340a | 133 | /*! Enable byte swapping for KEY writes */ |
AnnaBridge | 178:79309dc6340a | 134 | typedef enum |
AnnaBridge | 178:79309dc6340a | 135 | { |
AnnaBridge | 178:79309dc6340a | 136 | ADI_CRYPTO_KEY_LITTLE_ENDIAN = (0u << BITP_CRYPT_CFG_KEY_BYTESWAP), /*!< Do not apply KEY write byte swaps. */ |
AnnaBridge | 178:79309dc6340a | 137 | ADI_CRYPTO_KEY_BIG_ENDIAN = (1u << BITP_CRYPT_CFG_KEY_BYTESWAP), /*!< Apply KEY write byte swaps. */ |
AnnaBridge | 178:79309dc6340a | 138 | } ADI_CRYPTO_KEY_BYTE_SWAP; |
AnnaBridge | 178:79309dc6340a | 139 | |
AnnaBridge | 178:79309dc6340a | 140 | /*! Byte-swap the SHA Input Data */ |
AnnaBridge | 178:79309dc6340a | 141 | typedef enum |
AnnaBridge | 178:79309dc6340a | 142 | { |
AnnaBridge | 178:79309dc6340a | 143 | ADI_CRYPTO_SHA_LITTLE_ENDIAN = (0u << BITP_CRYPT_CFG_SHA_BYTESWAP), /*!< Do not apply SHA data write byte swaps. */ |
AnnaBridge | 178:79309dc6340a | 144 | ADI_CRYPTO_SHA_BIG_ENDIAN = (1u << BITP_CRYPT_CFG_SHA_BYTESWAP), /*!< Apply SHA data write byte swaps. */ |
AnnaBridge | 178:79309dc6340a | 145 | } ADI_CRYPTO_SHA_BYTE_SWAP; |
AnnaBridge | 178:79309dc6340a | 146 | |
AnnaBridge | 178:79309dc6340a | 147 | /*! Byte-swap the AES Input Data */ |
AnnaBridge | 178:79309dc6340a | 148 | typedef enum |
AnnaBridge | 178:79309dc6340a | 149 | { |
AnnaBridge | 178:79309dc6340a | 150 | ADI_CRYPTO_AES_LITTLE_ENDIAN = (0u << BITP_CRYPT_CFG_AES_BYTESWAP), /*!< Do not apply AES data write byte swaps. */ |
AnnaBridge | 178:79309dc6340a | 151 | ADI_CRYPTO_AES_BIG_ENDIAN = (1u << BITP_CRYPT_CFG_AES_BYTESWAP), /*!< Apply AES data write byte swaps. */ |
AnnaBridge | 178:79309dc6340a | 152 | } ADI_CRYPTO_AES_BYTE_SWAP; |
AnnaBridge | 178:79309dc6340a | 153 | |
AnnaBridge | 178:79309dc6340a | 154 | /*! |
AnnaBridge | 178:79309dc6340a | 155 | * \enum ADI_CRYPTO_CIPHER_MODE |
AnnaBridge | 178:79309dc6340a | 156 | * Enum for the cipher modes. |
AnnaBridge | 178:79309dc6340a | 157 | */ |
AnnaBridge | 178:79309dc6340a | 158 | typedef enum { |
AnnaBridge | 178:79309dc6340a | 159 | ADI_CRYPTO_MODE_CBC = BITM_CRYPT_CFG_CBCEN, /*!< Select CBC cipher mode. */ |
AnnaBridge | 178:79309dc6340a | 160 | ADI_CRYPTO_MODE_CCM = BITM_CRYPT_CFG_CCMEN, /*!< Select CCM cipher mode. */ |
AnnaBridge | 178:79309dc6340a | 161 | ADI_CRYPTO_MODE_CMAC = BITM_CRYPT_CFG_CMACEN, /*!< Select CMAC cipher mode. */ |
AnnaBridge | 178:79309dc6340a | 162 | ADI_CRYPTO_MODE_CTR = BITM_CRYPT_CFG_CTREN, /*!< Select CTR cipher mode. */ |
AnnaBridge | 178:79309dc6340a | 163 | ADI_CRYPTO_MODE_ECB = BITM_CRYPT_CFG_ECBEN, /*!< Select ECB cipher mode. */ |
AnnaBridge | 178:79309dc6340a | 164 | ADI_CRYPTO_MODE_HMAC = BITM_CRYPT_CFG_HMACEN, /*!< Select HMAC cipher mode. */ |
AnnaBridge | 178:79309dc6340a | 165 | ADI_CRYPTO_MODE_SHA = BITM_CRYPT_CFG_SHA256EN, /*!< Select SHA cipher mode. */ |
AnnaBridge | 178:79309dc6340a | 166 | } ADI_CRYPTO_CIPHER_MODE; |
AnnaBridge | 178:79309dc6340a | 167 | |
AnnaBridge | 178:79309dc6340a | 168 | /*! superset user Crypto transaction structure (different elements used for different modes) */ |
AnnaBridge | 178:79309dc6340a | 169 | typedef struct |
AnnaBridge | 178:79309dc6340a | 170 | { |
AnnaBridge | 178:79309dc6340a | 171 | ADI_CRYPTO_CIPHER_MODE eCipherMode; /*!< Cipher mode to use */ |
AnnaBridge | 178:79309dc6340a | 172 | ADI_CRYPTO_CODING_MODE eCodingMode; /*!< Coding Mode (Encryption or Decryption) */ |
AnnaBridge | 178:79309dc6340a | 173 | |
AnnaBridge | 178:79309dc6340a | 174 | ADI_CRYPTO_KEY_BYTE_SWAP eKeyByteSwap; /*!< KEY endianness */ |
AnnaBridge | 178:79309dc6340a | 175 | ADI_CRYPTO_SHA_BYTE_SWAP eShaByteSwap; /*!< SHA endianness */ |
AnnaBridge | 178:79309dc6340a | 176 | ADI_CRYPTO_AES_BYTE_SWAP eAesByteSwap; /*!< AES endianness */ |
AnnaBridge | 178:79309dc6340a | 177 | |
AnnaBridge | 178:79309dc6340a | 178 | uint8_t *pKey; /*!< Pointer to the KEY data: pre-formatted as a byte array, according to eAesKeyLen. */ |
AnnaBridge | 178:79309dc6340a | 179 | ADI_CRYPTO_AES_KEY_LEN eAesKeyLen; /*!< The length of the AES KEY */ |
AnnaBridge | 178:79309dc6340a | 180 | |
AnnaBridge | 178:79309dc6340a | 181 | uint32_t *pAuthData; /*!< CCM mode: pointer to user prefix buffer */ |
AnnaBridge | 178:79309dc6340a | 182 | uint32_t numAuthBytes; /*!< Length of the prefix buffer in bytes (should be a multiple of 16 bytes) */ |
AnnaBridge | 178:79309dc6340a | 183 | |
AnnaBridge | 178:79309dc6340a | 184 | uint32_t *pInputData; /*!< Pointer to user input data buffer */ |
AnnaBridge | 178:79309dc6340a | 185 | uint32_t numInputBytes; /*!< Length of the data buffer in bytes (should be a multiple of 16bytes) */ |
AnnaBridge | 178:79309dc6340a | 186 | |
AnnaBridge | 178:79309dc6340a | 187 | uint32_t *pOutputData; /*!< Pointer to user output buffer */ |
AnnaBridge | 178:79309dc6340a | 188 | uint32_t numOutputBytes; /*!< Length of the output buffer in bytes (should be a multiple of 16bytes) */ |
AnnaBridge | 178:79309dc6340a | 189 | |
AnnaBridge | 178:79309dc6340a | 190 | uint8_t *pNonceIV; /*!< Pointer to user 16-byte array containing one of three values, depending on cipher mode:\n |
AnnaBridge | 178:79309dc6340a | 191 | - CTR mode = 108-bit NONCE\n |
AnnaBridge | 178:79309dc6340a | 192 | - CCM mode = 112-bit NONCE\n |
AnnaBridge | 178:79309dc6340a | 193 | - CBC mode = 128-bit IV (Initialization Vector)\n\n |
AnnaBridge | 178:79309dc6340a | 194 | NONCE and IV assume little endian format, for example: CTR NONCE packing is:\n |
AnnaBridge | 178:79309dc6340a | 195 | - NONCE[0] -> 7:0\n |
AnnaBridge | 178:79309dc6340a | 196 | - NONCE[1] -> 15:8\n |
AnnaBridge | 178:79309dc6340a | 197 | - ...\n |
AnnaBridge | 178:79309dc6340a | 198 | - NONCE[13] -> 103:96\n |
AnnaBridge | 178:79309dc6340a | 199 | - NONCE[14](Bits 3:0) -> 107:104\n |
AnnaBridge | 178:79309dc6340a | 200 | */ |
AnnaBridge | 178:79309dc6340a | 201 | uint32_t CounterInit; /*!< CTR/CCM mode: Counter Initialization Value (CTR=20-bit, CCM=16-bit) */ |
AnnaBridge | 178:79309dc6340a | 202 | uint32_t numValidBytes; /*!< CCM mode: Number of valid bytes in the last (padding) block (1-16) */ |
AnnaBridge | 178:79309dc6340a | 203 | uint32_t numShaBits; /*!< SHA mode: Number of bits in the SHA payload, which may be odd-sized */ |
AnnaBridge | 178:79309dc6340a | 204 | } ADI_CRYPTO_TRANSACTION; |
AnnaBridge | 178:79309dc6340a | 205 | |
AnnaBridge | 178:79309dc6340a | 206 | |
AnnaBridge | 178:79309dc6340a | 207 | /*================ PUBLIC API ==================*/ |
AnnaBridge | 178:79309dc6340a | 208 | |
AnnaBridge | 178:79309dc6340a | 209 | |
AnnaBridge | 178:79309dc6340a | 210 | ADI_CRYPTO_RESULT adi_crypto_Open (uint32_t const nDeviceNum, void * const pMemory, uint32_t const nMemorySize, ADI_CRYPTO_HANDLE * const phDevice); |
AnnaBridge | 178:79309dc6340a | 211 | ADI_CRYPTO_RESULT adi_crypto_Close (ADI_CRYPTO_HANDLE const hDevice); |
AnnaBridge | 178:79309dc6340a | 212 | ADI_CRYPTO_RESULT adi_crypto_RegisterCallback (ADI_CRYPTO_HANDLE const hDevice, ADI_CALLBACK const pfCallback, void * const pCBParam); |
AnnaBridge | 178:79309dc6340a | 213 | ADI_CRYPTO_RESULT adi_crypto_Enable (ADI_CRYPTO_HANDLE const hDevice, bool const bEnable); |
AnnaBridge | 178:79309dc6340a | 214 | |
AnnaBridge | 178:79309dc6340a | 215 | ADI_CRYPTO_RESULT adi_crypto_SubmitBuffer (ADI_CRYPTO_HANDLE const hDevice, ADI_CRYPTO_TRANSACTION * const pBuffer); |
AnnaBridge | 178:79309dc6340a | 216 | ADI_CRYPTO_RESULT adi_crypto_GetBuffer (ADI_CRYPTO_HANDLE const hDevice, ADI_CRYPTO_TRANSACTION ** const ppBuffer); |
AnnaBridge | 178:79309dc6340a | 217 | ADI_CRYPTO_RESULT adi_crypto_IsBufferAvailable (ADI_CRYPTO_HANDLE const hDevice, bool * const pbAvailable); |
AnnaBridge | 178:79309dc6340a | 218 | |
AnnaBridge | 178:79309dc6340a | 219 | #if (ADI_CRYPTO_ENABLE_DMA_SUPPORT == 1) |
AnnaBridge | 178:79309dc6340a | 220 | ADI_CRYPTO_RESULT adi_crypto_EnableDmaMode (ADI_CRYPTO_HANDLE const hDevice, bool const bEnable); |
AnnaBridge | 178:79309dc6340a | 221 | #endif |
AnnaBridge | 178:79309dc6340a | 222 | |
AnnaBridge | 178:79309dc6340a | 223 | |
AnnaBridge | 178:79309dc6340a | 224 | #ifdef __cplusplus |
AnnaBridge | 178:79309dc6340a | 225 | } |
AnnaBridge | 178:79309dc6340a | 226 | #endif |
AnnaBridge | 178:79309dc6340a | 227 | |
AnnaBridge | 178:79309dc6340a | 228 | #endif /* include guard */ |
AnnaBridge | 178:79309dc6340a | 229 | |
AnnaBridge | 178:79309dc6340a | 230 | /* |
AnnaBridge | 178:79309dc6340a | 231 | ** EOF |
AnnaBridge | 178:79309dc6340a | 232 | */ |
AnnaBridge | 178:79309dc6340a | 233 | |
AnnaBridge | 178:79309dc6340a | 234 | /*@}*/ |
AnnaBridge | 178:79309dc6340a | 235 |