The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 145:64910690c574 1 /*
AnnaBridge 145:64910690c574 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
AnnaBridge 145:64910690c574 3 * All rights reserved.
AnnaBridge 145:64910690c574 4 *
AnnaBridge 145:64910690c574 5 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 145:64910690c574 6 * are permitted provided that the following conditions are met:
AnnaBridge 145:64910690c574 7 *
AnnaBridge 145:64910690c574 8 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 145:64910690c574 9 * of conditions and the following disclaimer.
AnnaBridge 145:64910690c574 10 *
AnnaBridge 145:64910690c574 11 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 145:64910690c574 12 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 145:64910690c574 13 * other materials provided with the distribution.
AnnaBridge 145:64910690c574 14 *
AnnaBridge 145:64910690c574 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
AnnaBridge 145:64910690c574 16 * contributors may be used to endorse or promote products derived from this
AnnaBridge 145:64910690c574 17 * software without specific prior written permission.
AnnaBridge 145:64910690c574 18 *
AnnaBridge 145:64910690c574 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 145:64910690c574 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 145:64910690c574 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 145:64910690c574 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 145:64910690c574 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 145:64910690c574 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 145:64910690c574 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 145:64910690c574 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 145:64910690c574 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 145:64910690c574 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 145:64910690c574 29 */
AnnaBridge 145:64910690c574 30 #ifndef _FSL_LTC_EDMA_H_
AnnaBridge 145:64910690c574 31 #define _FSL_LTC_EDMA_H_
AnnaBridge 145:64910690c574 32
AnnaBridge 145:64910690c574 33 #include "fsl_common.h"
AnnaBridge 145:64910690c574 34
AnnaBridge 145:64910690c574 35 #include "fsl_ltc.h"
AnnaBridge 145:64910690c574 36 #include "fsl_dmamux.h"
AnnaBridge 145:64910690c574 37 #include "fsl_edma.h"
AnnaBridge 145:64910690c574 38
AnnaBridge 145:64910690c574 39 /*!
AnnaBridge 145:64910690c574 40 * @addtogroup ltc_edma_driver
AnnaBridge 145:64910690c574 41 * @{
AnnaBridge 145:64910690c574 42 */
AnnaBridge 145:64910690c574 43
AnnaBridge 145:64910690c574 44 /*******************************************************************************
AnnaBridge 145:64910690c574 45 * Definitions
AnnaBridge 145:64910690c574 46 ******************************************************************************/
AnnaBridge 145:64910690c574 47
AnnaBridge 145:64910690c574 48 /* @brief The LTC eDMA handle type. */
AnnaBridge 145:64910690c574 49 typedef struct _ltc_edma_handle ltc_edma_handle_t;
AnnaBridge 145:64910690c574 50
AnnaBridge 145:64910690c574 51 /*! @brief LTC eDMA callback function. */
AnnaBridge 145:64910690c574 52 typedef void (*ltc_edma_callback_t)(LTC_Type *base, ltc_edma_handle_t *handle, status_t status, void *userData);
AnnaBridge 145:64910690c574 53
AnnaBridge 145:64910690c574 54 /*! @brief LTC eDMA state machine function. It is defined only for private usage inside LTC eDMA driver. */
AnnaBridge 145:64910690c574 55 typedef status_t (*ltc_edma_state_machine_t)(LTC_Type *base, ltc_edma_handle_t *handle);
AnnaBridge 145:64910690c574 56
AnnaBridge 145:64910690c574 57 /*!
AnnaBridge 145:64910690c574 58 * @brief LTC eDMA handle. It is defined only for private usage inside LTC eDMA driver.
AnnaBridge 145:64910690c574 59 */
AnnaBridge 145:64910690c574 60 struct _ltc_edma_handle
AnnaBridge 145:64910690c574 61 {
AnnaBridge 145:64910690c574 62 ltc_edma_callback_t callback; /*!< Callback function. */
AnnaBridge 145:64910690c574 63 void *userData; /*!< LTC callback function parameter.*/
AnnaBridge 145:64910690c574 64
AnnaBridge 145:64910690c574 65 edma_handle_t *inputFifoEdmaHandle; /*!< The eDMA TX channel used. */
AnnaBridge 145:64910690c574 66 edma_handle_t *outputFifoEdmaHandle; /*!< The eDMA RX channel used. */
AnnaBridge 145:64910690c574 67
AnnaBridge 145:64910690c574 68 ltc_edma_state_machine_t state_machine; /*!< State machine. */
AnnaBridge 145:64910690c574 69 uint32_t state; /*!< Internal state. */
AnnaBridge 145:64910690c574 70 const uint8_t *inData; /*!< Input data. */
AnnaBridge 145:64910690c574 71 uint8_t *outData; /*!< Output data. */
AnnaBridge 145:64910690c574 72 uint32_t size; /*!< Size of input and output data in bytes.*/
AnnaBridge 145:64910690c574 73 uint32_t modeReg; /*!< LTC mode register.*/
AnnaBridge 145:64910690c574 74 /* Used by AES CTR*/
AnnaBridge 145:64910690c574 75 uint8_t *counter; /*!< Input counter (updates on return)*/
AnnaBridge 145:64910690c574 76 const uint8_t *key; /*!< Input key to use for forward AES cipher*/
AnnaBridge 145:64910690c574 77 uint32_t keySize; /*!< Size of the input key, in bytes. Must be 16, 24, or 32.*/
AnnaBridge 145:64910690c574 78 uint8_t
AnnaBridge 145:64910690c574 79 *counterlast; /*!< Output cipher of last counter, for chained CTR calls. NULL can be passed if chained calls are
AnnaBridge 145:64910690c574 80 not used.*/
AnnaBridge 145:64910690c574 81 uint32_t *szLeft; /*!< Output number of bytes in left unused in counterlast block. NULL can be passed if chained
AnnaBridge 145:64910690c574 82 calls are not used.*/
AnnaBridge 145:64910690c574 83 uint32_t lastSize; /*!< Last size.*/
AnnaBridge 145:64910690c574 84 };
AnnaBridge 145:64910690c574 85
AnnaBridge 145:64910690c574 86 /*******************************************************************************
AnnaBridge 145:64910690c574 87 * API
AnnaBridge 145:64910690c574 88 ******************************************************************************/
AnnaBridge 145:64910690c574 89
AnnaBridge 145:64910690c574 90 #if defined(__cplusplus)
AnnaBridge 145:64910690c574 91 extern "C" {
AnnaBridge 145:64910690c574 92 #endif
AnnaBridge 145:64910690c574 93
AnnaBridge 145:64910690c574 94 /*!
AnnaBridge 145:64910690c574 95 * @brief Init the LTC eDMA handle which is used in transcational functions
AnnaBridge 145:64910690c574 96 * @param base LTC module base address
AnnaBridge 145:64910690c574 97 * @param handle Pointer to ltc_edma_handle_t structure
AnnaBridge 145:64910690c574 98 * @param callback Callback function, NULL means no callback.
AnnaBridge 145:64910690c574 99 * @param userData Callback function parameter.
AnnaBridge 145:64910690c574 100 * @param inputFifoEdmaHandle User requested eDMA handle for Input FIFO eDMA.
AnnaBridge 145:64910690c574 101 * @param outputFifoEdmaHandle User requested eDMA handle for Output FIFO eDMA.
AnnaBridge 145:64910690c574 102 */
AnnaBridge 145:64910690c574 103 void LTC_CreateHandleEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 104 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 105 ltc_edma_callback_t callback,
AnnaBridge 145:64910690c574 106 void *userData,
AnnaBridge 145:64910690c574 107 edma_handle_t *inputFifoEdmaHandle,
AnnaBridge 145:64910690c574 108 edma_handle_t *outputFifoEdmaHandle);
AnnaBridge 145:64910690c574 109
AnnaBridge 145:64910690c574 110 /*! @}*/
AnnaBridge 145:64910690c574 111
AnnaBridge 145:64910690c574 112 /*******************************************************************************
AnnaBridge 145:64910690c574 113 * AES API
AnnaBridge 145:64910690c574 114 ******************************************************************************/
AnnaBridge 145:64910690c574 115
AnnaBridge 145:64910690c574 116 /*!
AnnaBridge 145:64910690c574 117 * @addtogroup ltc_edma_driver_aes
AnnaBridge 145:64910690c574 118 * @{
AnnaBridge 145:64910690c574 119 */
AnnaBridge 145:64910690c574 120
AnnaBridge 145:64910690c574 121 /*!
AnnaBridge 145:64910690c574 122 * @brief Encrypts AES using the ECB block mode.
AnnaBridge 145:64910690c574 123 *
AnnaBridge 145:64910690c574 124 * Encrypts AES using the ECB block mode.
AnnaBridge 145:64910690c574 125 *
AnnaBridge 145:64910690c574 126 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 127 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 128 * @param plaintext Input plain text to encrypt
AnnaBridge 145:64910690c574 129 * @param[out] ciphertext Output cipher text
AnnaBridge 145:64910690c574 130 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 145:64910690c574 131 * @param key Input key to use for encryption
AnnaBridge 145:64910690c574 132 * @param keySize Size of the input key, in bytes. Must be 16, 24, or 32.
AnnaBridge 145:64910690c574 133 * @return Status from encrypt operation
AnnaBridge 145:64910690c574 134 */
AnnaBridge 145:64910690c574 135 status_t LTC_AES_EncryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 136 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 137 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 138 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 139 uint32_t size,
AnnaBridge 145:64910690c574 140 const uint8_t *key,
AnnaBridge 145:64910690c574 141 uint32_t keySize);
AnnaBridge 145:64910690c574 142
AnnaBridge 145:64910690c574 143 /*!
AnnaBridge 145:64910690c574 144 * @brief Decrypts AES using ECB block mode.
AnnaBridge 145:64910690c574 145 *
AnnaBridge 145:64910690c574 146 * Decrypts AES using ECB block mode.
AnnaBridge 145:64910690c574 147 *
AnnaBridge 145:64910690c574 148 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 149 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 150 * @param ciphertext Input cipher text to decrypt
AnnaBridge 145:64910690c574 151 * @param[out] plaintext Output plain text
AnnaBridge 145:64910690c574 152 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 145:64910690c574 153 * @param key Input key.
AnnaBridge 145:64910690c574 154 * @param keySize Size of the input key, in bytes. Must be 16, 24, or 32.
AnnaBridge 145:64910690c574 155 * @param keyType Input type of the key (allows to directly load decrypt key for AES ECB decrypt operation.)
AnnaBridge 145:64910690c574 156 * @return Status from decrypt operation
AnnaBridge 145:64910690c574 157 */
AnnaBridge 145:64910690c574 158 status_t LTC_AES_DecryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 159 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 160 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 161 uint8_t *plaintext,
AnnaBridge 145:64910690c574 162 uint32_t size,
AnnaBridge 145:64910690c574 163 const uint8_t *key,
AnnaBridge 145:64910690c574 164 uint32_t keySize,
AnnaBridge 145:64910690c574 165 ltc_aes_key_t keyType);
AnnaBridge 145:64910690c574 166
AnnaBridge 145:64910690c574 167 /*!
AnnaBridge 145:64910690c574 168 * @brief Encrypts AES using CBC block mode.
AnnaBridge 145:64910690c574 169 *
AnnaBridge 145:64910690c574 170 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 171 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 172 * @param plaintext Input plain text to encrypt
AnnaBridge 145:64910690c574 173 * @param[out] ciphertext Output cipher text
AnnaBridge 145:64910690c574 174 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 145:64910690c574 175 * @param iv Input initial vector to combine with the first input block.
AnnaBridge 145:64910690c574 176 * @param key Input key to use for encryption
AnnaBridge 145:64910690c574 177 * @param keySize Size of the input key, in bytes. Must be 16, 24, or 32.
AnnaBridge 145:64910690c574 178 * @return Status from encrypt operation
AnnaBridge 145:64910690c574 179 */
AnnaBridge 145:64910690c574 180 status_t LTC_AES_EncryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 181 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 182 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 183 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 184 uint32_t size,
AnnaBridge 145:64910690c574 185 const uint8_t iv[LTC_AES_IV_SIZE],
AnnaBridge 145:64910690c574 186 const uint8_t *key,
AnnaBridge 145:64910690c574 187 uint32_t keySize);
AnnaBridge 145:64910690c574 188
AnnaBridge 145:64910690c574 189 /*!
AnnaBridge 145:64910690c574 190 * @brief Decrypts AES using CBC block mode.
AnnaBridge 145:64910690c574 191 *
AnnaBridge 145:64910690c574 192 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 193 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 194 * @param ciphertext Input cipher text to decrypt
AnnaBridge 145:64910690c574 195 * @param[out] plaintext Output plain text
AnnaBridge 145:64910690c574 196 * @param size Size of input and output data in bytes. Must be multiple of 16 bytes.
AnnaBridge 145:64910690c574 197 * @param iv Input initial vector to combine with the first input block.
AnnaBridge 145:64910690c574 198 * @param key Input key to use for decryption
AnnaBridge 145:64910690c574 199 * @param keySize Size of the input key, in bytes. Must be 16, 24, or 32.
AnnaBridge 145:64910690c574 200 * @param keyType Input type of the key (allows to directly load decrypt key for AES CBC decrypt operation.)
AnnaBridge 145:64910690c574 201 * @return Status from decrypt operation
AnnaBridge 145:64910690c574 202 */
AnnaBridge 145:64910690c574 203 status_t LTC_AES_DecryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 204 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 205 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 206 uint8_t *plaintext,
AnnaBridge 145:64910690c574 207 uint32_t size,
AnnaBridge 145:64910690c574 208 const uint8_t iv[LTC_AES_IV_SIZE],
AnnaBridge 145:64910690c574 209 const uint8_t *key,
AnnaBridge 145:64910690c574 210 uint32_t keySize,
AnnaBridge 145:64910690c574 211 ltc_aes_key_t keyType);
AnnaBridge 145:64910690c574 212
AnnaBridge 145:64910690c574 213 /*!
AnnaBridge 145:64910690c574 214 * @brief Encrypts or decrypts AES using CTR block mode.
AnnaBridge 145:64910690c574 215 *
AnnaBridge 145:64910690c574 216 * Encrypts or decrypts AES using CTR block mode.
AnnaBridge 145:64910690c574 217 * AES CTR mode uses only forward AES cipher and same algorithm for encryption and decryption.
AnnaBridge 145:64910690c574 218 * The only difference between encryption and decryption is that, for encryption, the input argument
AnnaBridge 145:64910690c574 219 * is plain text and the output argument is cipher text. For decryption, the input argument is cipher text
AnnaBridge 145:64910690c574 220 * and the output argument is plain text.
AnnaBridge 145:64910690c574 221 *
AnnaBridge 145:64910690c574 222 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 223 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 224 * @param input Input data for CTR block mode
AnnaBridge 145:64910690c574 225 * @param[out] output Output data for CTR block mode
AnnaBridge 145:64910690c574 226 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 227 * @param[in,out] counter Input counter (updates on return)
AnnaBridge 145:64910690c574 228 * @param key Input key to use for forward AES cipher
AnnaBridge 145:64910690c574 229 * @param keySize Size of the input key, in bytes. Must be 16, 24, or 32.
AnnaBridge 145:64910690c574 230 * @param[out] counterlast Output cipher of last counter, for chained CTR calls. NULL can be passed if chained calls are
AnnaBridge 145:64910690c574 231 * not used.
AnnaBridge 145:64910690c574 232 * @param[out] szLeft Output number of bytes in left unused in counterlast block. NULL can be passed if chained calls
AnnaBridge 145:64910690c574 233 * are not used.
AnnaBridge 145:64910690c574 234 * @return Status from encrypt operation
AnnaBridge 145:64910690c574 235 */
AnnaBridge 145:64910690c574 236 status_t LTC_AES_CryptCtrEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 237 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 238 const uint8_t *input,
AnnaBridge 145:64910690c574 239 uint8_t *output,
AnnaBridge 145:64910690c574 240 uint32_t size,
AnnaBridge 145:64910690c574 241 uint8_t counter[LTC_AES_BLOCK_SIZE],
AnnaBridge 145:64910690c574 242 const uint8_t *key,
AnnaBridge 145:64910690c574 243 uint32_t keySize,
AnnaBridge 145:64910690c574 244 uint8_t counterlast[LTC_AES_BLOCK_SIZE],
AnnaBridge 145:64910690c574 245 uint32_t *szLeft);
AnnaBridge 145:64910690c574 246
AnnaBridge 145:64910690c574 247 /*! AES CTR decrypt is mapped to the AES CTR generic operation */
AnnaBridge 145:64910690c574 248 #define LTC_AES_DecryptCtrEDMA(base, handle, input, output, size, counter, key, keySize, counterlast, szLeft) \
AnnaBridge 145:64910690c574 249 LTC_AES_CryptCtrEDMA(base, handle, input, output, size, counter, key, keySize, counterlast, szLeft)
AnnaBridge 145:64910690c574 250
AnnaBridge 145:64910690c574 251 /*! AES CTR encrypt is mapped to the AES CTR generic operation */
AnnaBridge 145:64910690c574 252 #define LTC_AES_EncryptCtrEDMA(base, handle, input, output, size, counter, key, keySize, counterlast, szLeft) \
AnnaBridge 145:64910690c574 253 LTC_AES_CryptCtrEDMA(base, handle, input, output, size, counter, key, keySize, counterlast, szLeft)
AnnaBridge 145:64910690c574 254
AnnaBridge 145:64910690c574 255 /*!
AnnaBridge 145:64910690c574 256 *@}
AnnaBridge 145:64910690c574 257 */
AnnaBridge 145:64910690c574 258
AnnaBridge 145:64910690c574 259 /*******************************************************************************
AnnaBridge 145:64910690c574 260 * DES API
AnnaBridge 145:64910690c574 261 ******************************************************************************/
AnnaBridge 145:64910690c574 262 /*!
AnnaBridge 145:64910690c574 263 * @addtogroup ltc_edma_driver_des
AnnaBridge 145:64910690c574 264 * @{
AnnaBridge 145:64910690c574 265 */
AnnaBridge 145:64910690c574 266 /*!
AnnaBridge 145:64910690c574 267 * @brief Encrypts DES using ECB block mode.
AnnaBridge 145:64910690c574 268 *
AnnaBridge 145:64910690c574 269 * Encrypts DES using ECB block mode.
AnnaBridge 145:64910690c574 270 *
AnnaBridge 145:64910690c574 271 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 272 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 273 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 274 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 275 * @param size Size of input and output data in bytes. Must be multiple of 8 bytes.
AnnaBridge 145:64910690c574 276 * @param key Input key to use for encryption
AnnaBridge 145:64910690c574 277 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 278 */
AnnaBridge 145:64910690c574 279 status_t LTC_DES_EncryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 280 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 281 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 282 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 283 uint32_t size,
AnnaBridge 145:64910690c574 284 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 285
AnnaBridge 145:64910690c574 286 /*!
AnnaBridge 145:64910690c574 287 * @brief Decrypts DES using ECB block mode.
AnnaBridge 145:64910690c574 288 *
AnnaBridge 145:64910690c574 289 * Decrypts DES using ECB block mode.
AnnaBridge 145:64910690c574 290 *
AnnaBridge 145:64910690c574 291 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 292 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 293 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 294 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 295 * @param size Size of input and output data in bytes. Must be multiple of 8 bytes.
AnnaBridge 145:64910690c574 296 * @param key Input key to use for decryption
AnnaBridge 145:64910690c574 297 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 298 */
AnnaBridge 145:64910690c574 299 status_t LTC_DES_DecryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 300 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 301 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 302 uint8_t *plaintext,
AnnaBridge 145:64910690c574 303 uint32_t size,
AnnaBridge 145:64910690c574 304 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 305
AnnaBridge 145:64910690c574 306 /*!
AnnaBridge 145:64910690c574 307 * @brief Encrypts DES using CBC block mode.
AnnaBridge 145:64910690c574 308 *
AnnaBridge 145:64910690c574 309 * Encrypts DES using CBC block mode.
AnnaBridge 145:64910690c574 310 *
AnnaBridge 145:64910690c574 311 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 312 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 313 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 314 * @param[out] ciphertext Ouput ciphertext
AnnaBridge 145:64910690c574 315 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 316 * @param iv Input initial vector to combine with the first plaintext block.
AnnaBridge 145:64910690c574 317 * The iv does not need to be secret, but it must be unpredictable.
AnnaBridge 145:64910690c574 318 * @param key Input key to use for encryption
AnnaBridge 145:64910690c574 319 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 320 */
AnnaBridge 145:64910690c574 321 status_t LTC_DES_EncryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 322 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 323 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 324 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 325 uint32_t size,
AnnaBridge 145:64910690c574 326 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 327 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 328
AnnaBridge 145:64910690c574 329 /*!
AnnaBridge 145:64910690c574 330 * @brief Decrypts DES using CBC block mode.
AnnaBridge 145:64910690c574 331 *
AnnaBridge 145:64910690c574 332 * Decrypts DES using CBC block mode.
AnnaBridge 145:64910690c574 333 *
AnnaBridge 145:64910690c574 334 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 335 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 336 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 337 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 338 * @param size Size of input data in bytes
AnnaBridge 145:64910690c574 339 * @param iv Input initial vector to combine with the first plaintext block.
AnnaBridge 145:64910690c574 340 * The iv does not need to be secret, but it must be unpredictable.
AnnaBridge 145:64910690c574 341 * @param key Input key to use for decryption
AnnaBridge 145:64910690c574 342 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 343 */
AnnaBridge 145:64910690c574 344 status_t LTC_DES_DecryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 345 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 346 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 347 uint8_t *plaintext,
AnnaBridge 145:64910690c574 348 uint32_t size,
AnnaBridge 145:64910690c574 349 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 350 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 351
AnnaBridge 145:64910690c574 352 /*!
AnnaBridge 145:64910690c574 353 * @brief Encrypts DES using CFB block mode.
AnnaBridge 145:64910690c574 354 *
AnnaBridge 145:64910690c574 355 * Encrypts DES using CFB block mode.
AnnaBridge 145:64910690c574 356 *
AnnaBridge 145:64910690c574 357 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 358 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 359 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 360 * @param size Size of input data in bytes
AnnaBridge 145:64910690c574 361 * @param iv Input initial block.
AnnaBridge 145:64910690c574 362 * @param key Input key to use for encryption
AnnaBridge 145:64910690c574 363 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 364 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 365 */
AnnaBridge 145:64910690c574 366 status_t LTC_DES_EncryptCfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 367 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 368 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 369 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 370 uint32_t size,
AnnaBridge 145:64910690c574 371 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 372 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 373
AnnaBridge 145:64910690c574 374 /*!
AnnaBridge 145:64910690c574 375 * @brief Decrypts DES using CFB block mode.
AnnaBridge 145:64910690c574 376 *
AnnaBridge 145:64910690c574 377 * Decrypts DES using CFB block mode.
AnnaBridge 145:64910690c574 378 *
AnnaBridge 145:64910690c574 379 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 380 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 381 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 382 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 383 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 384 * @param iv Input initial block.
AnnaBridge 145:64910690c574 385 * @param key Input key to use for decryption
AnnaBridge 145:64910690c574 386 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 387 */
AnnaBridge 145:64910690c574 388 status_t LTC_DES_DecryptCfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 389 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 390 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 391 uint8_t *plaintext,
AnnaBridge 145:64910690c574 392 uint32_t size,
AnnaBridge 145:64910690c574 393 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 394 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 395
AnnaBridge 145:64910690c574 396 /*!
AnnaBridge 145:64910690c574 397 * @brief Encrypts DES using OFB block mode.
AnnaBridge 145:64910690c574 398 *
AnnaBridge 145:64910690c574 399 * Encrypts DES using OFB block mode.
AnnaBridge 145:64910690c574 400 *
AnnaBridge 145:64910690c574 401 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 402 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 403 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 404 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 405 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 406 * @param iv Input unique input vector. The OFB mode requires that the IV be unique
AnnaBridge 145:64910690c574 407 * for each execution of the mode under the given key.
AnnaBridge 145:64910690c574 408 * @param key Input key to use for encryption
AnnaBridge 145:64910690c574 409 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 410 */
AnnaBridge 145:64910690c574 411 status_t LTC_DES_EncryptOfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 412 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 413 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 414 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 415 uint32_t size,
AnnaBridge 145:64910690c574 416 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 417 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 418
AnnaBridge 145:64910690c574 419 /*!
AnnaBridge 145:64910690c574 420 * @brief Decrypts DES using OFB block mode.
AnnaBridge 145:64910690c574 421 *
AnnaBridge 145:64910690c574 422 * Decrypts DES using OFB block mode.
AnnaBridge 145:64910690c574 423 *
AnnaBridge 145:64910690c574 424 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 425 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 426 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 427 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 428 * @param size Size of input and output data in bytes. Must be multiple of 8 bytes.
AnnaBridge 145:64910690c574 429 * @param iv Input unique input vector. The OFB mode requires that the IV be unique
AnnaBridge 145:64910690c574 430 * for each execution of the mode under the given key.
AnnaBridge 145:64910690c574 431 * @param key Input key to use for decryption
AnnaBridge 145:64910690c574 432 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 433 */
AnnaBridge 145:64910690c574 434 status_t LTC_DES_DecryptOfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 435 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 436 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 437 uint8_t *plaintext,
AnnaBridge 145:64910690c574 438 uint32_t size,
AnnaBridge 145:64910690c574 439 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 440 const uint8_t key[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 441
AnnaBridge 145:64910690c574 442 /*!
AnnaBridge 145:64910690c574 443 * @brief Encrypts triple DES using ECB block mode with two keys.
AnnaBridge 145:64910690c574 444 *
AnnaBridge 145:64910690c574 445 * Encrypts triple DES using ECB block mode with two keys.
AnnaBridge 145:64910690c574 446 *
AnnaBridge 145:64910690c574 447 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 448 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 449 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 450 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 451 * @param size Size of input and output data in bytes. Must be multiple of 8 bytes.
AnnaBridge 145:64910690c574 452 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 453 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 454 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 455 */
AnnaBridge 145:64910690c574 456 status_t LTC_DES2_EncryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 457 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 458 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 459 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 460 uint32_t size,
AnnaBridge 145:64910690c574 461 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 462 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 463
AnnaBridge 145:64910690c574 464 /*!
AnnaBridge 145:64910690c574 465 * @brief Decrypts triple DES using ECB block mode with two keys.
AnnaBridge 145:64910690c574 466 *
AnnaBridge 145:64910690c574 467 * Decrypts triple DES using ECB block mode with two keys.
AnnaBridge 145:64910690c574 468 *
AnnaBridge 145:64910690c574 469 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 470 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 471 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 472 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 473 * @param size Size of input and output data in bytes. Must be multiple of 8 bytes.
AnnaBridge 145:64910690c574 474 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 475 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 476 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 477 */
AnnaBridge 145:64910690c574 478 status_t LTC_DES2_DecryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 479 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 480 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 481 uint8_t *plaintext,
AnnaBridge 145:64910690c574 482 uint32_t size,
AnnaBridge 145:64910690c574 483 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 484 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 485
AnnaBridge 145:64910690c574 486 /*!
AnnaBridge 145:64910690c574 487 * @brief Encrypts triple DES using CBC block mode with two keys.
AnnaBridge 145:64910690c574 488 *
AnnaBridge 145:64910690c574 489 * Encrypts triple DES using CBC block mode with two keys.
AnnaBridge 145:64910690c574 490 *
AnnaBridge 145:64910690c574 491 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 492 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 493 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 494 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 495 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 496 * @param iv Input initial vector to combine with the first plaintext block.
AnnaBridge 145:64910690c574 497 * The iv does not need to be secret, but it must be unpredictable.
AnnaBridge 145:64910690c574 498 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 499 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 500 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 501 */
AnnaBridge 145:64910690c574 502 status_t LTC_DES2_EncryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 503 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 504 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 505 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 506 uint32_t size,
AnnaBridge 145:64910690c574 507 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 508 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 509 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 510
AnnaBridge 145:64910690c574 511 /*!
AnnaBridge 145:64910690c574 512 * @brief Decrypts triple DES using CBC block mode with two keys.
AnnaBridge 145:64910690c574 513 *
AnnaBridge 145:64910690c574 514 * Decrypts triple DES using CBC block mode with two keys.
AnnaBridge 145:64910690c574 515 *
AnnaBridge 145:64910690c574 516 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 517 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 518 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 519 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 520 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 521 * @param iv Input initial vector to combine with the first plaintext block.
AnnaBridge 145:64910690c574 522 * The iv does not need to be secret, but it must be unpredictable.
AnnaBridge 145:64910690c574 523 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 524 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 525 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 526 */
AnnaBridge 145:64910690c574 527 status_t LTC_DES2_DecryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 528 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 529 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 530 uint8_t *plaintext,
AnnaBridge 145:64910690c574 531 uint32_t size,
AnnaBridge 145:64910690c574 532 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 533 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 534 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 535
AnnaBridge 145:64910690c574 536 /*!
AnnaBridge 145:64910690c574 537 * @brief Encrypts triple DES using CFB block mode with two keys.
AnnaBridge 145:64910690c574 538 *
AnnaBridge 145:64910690c574 539 * Encrypts triple DES using CFB block mode with two keys.
AnnaBridge 145:64910690c574 540 *
AnnaBridge 145:64910690c574 541 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 542 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 543 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 544 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 545 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 546 * @param iv Input initial block.
AnnaBridge 145:64910690c574 547 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 548 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 549 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 550 */
AnnaBridge 145:64910690c574 551 status_t LTC_DES2_EncryptCfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 552 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 553 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 554 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 555 uint32_t size,
AnnaBridge 145:64910690c574 556 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 557 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 558 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 559
AnnaBridge 145:64910690c574 560 /*!
AnnaBridge 145:64910690c574 561 * @brief Decrypts triple DES using CFB block mode with two keys.
AnnaBridge 145:64910690c574 562 *
AnnaBridge 145:64910690c574 563 * Decrypts triple DES using CFB block mode with two keys.
AnnaBridge 145:64910690c574 564 *
AnnaBridge 145:64910690c574 565 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 566 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 567 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 568 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 569 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 570 * @param iv Input initial block.
AnnaBridge 145:64910690c574 571 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 572 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 573 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 574 */
AnnaBridge 145:64910690c574 575 status_t LTC_DES2_DecryptCfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 576 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 577 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 578 uint8_t *plaintext,
AnnaBridge 145:64910690c574 579 uint32_t size,
AnnaBridge 145:64910690c574 580 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 581 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 582 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 583
AnnaBridge 145:64910690c574 584 /*!
AnnaBridge 145:64910690c574 585 * @brief Encrypts triple DES using OFB block mode with two keys.
AnnaBridge 145:64910690c574 586 *
AnnaBridge 145:64910690c574 587 * Encrypts triple DES using OFB block mode with two keys.
AnnaBridge 145:64910690c574 588 *
AnnaBridge 145:64910690c574 589 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 590 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 591 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 592 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 593 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 594 * @param iv Input unique input vector. The OFB mode requires that the IV be unique
AnnaBridge 145:64910690c574 595 * for each execution of the mode under the given key.
AnnaBridge 145:64910690c574 596 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 597 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 598 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 599 */
AnnaBridge 145:64910690c574 600 status_t LTC_DES2_EncryptOfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 601 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 602 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 603 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 604 uint32_t size,
AnnaBridge 145:64910690c574 605 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 606 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 607 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 608
AnnaBridge 145:64910690c574 609 /*!
AnnaBridge 145:64910690c574 610 * @brief Decrypts triple DES using OFB block mode with two keys.
AnnaBridge 145:64910690c574 611 *
AnnaBridge 145:64910690c574 612 * Decrypts triple DES using OFB block mode with two keys.
AnnaBridge 145:64910690c574 613 *
AnnaBridge 145:64910690c574 614 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 615 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 616 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 617 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 618 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 619 * @param iv Input unique input vector. The OFB mode requires that the IV be unique
AnnaBridge 145:64910690c574 620 * for each execution of the mode under the given key.
AnnaBridge 145:64910690c574 621 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 622 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 623 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 624 */
AnnaBridge 145:64910690c574 625 status_t LTC_DES2_DecryptOfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 626 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 627 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 628 uint8_t *plaintext,
AnnaBridge 145:64910690c574 629 uint32_t size,
AnnaBridge 145:64910690c574 630 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 631 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 632 const uint8_t key2[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 633
AnnaBridge 145:64910690c574 634 /*!
AnnaBridge 145:64910690c574 635 * @brief Encrypts triple DES using ECB block mode with three keys.
AnnaBridge 145:64910690c574 636 *
AnnaBridge 145:64910690c574 637 * Encrypts triple DES using ECB block mode with three keys.
AnnaBridge 145:64910690c574 638 *
AnnaBridge 145:64910690c574 639 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 640 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 641 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 642 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 643 * @param size Size of input and output data in bytes. Must be multiple of 8 bytes.
AnnaBridge 145:64910690c574 644 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 645 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 646 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 647 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 648 */
AnnaBridge 145:64910690c574 649 status_t LTC_DES3_EncryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 650 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 651 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 652 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 653 uint32_t size,
AnnaBridge 145:64910690c574 654 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 655 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 656 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 657
AnnaBridge 145:64910690c574 658 /*!
AnnaBridge 145:64910690c574 659 * @brief Decrypts triple DES using ECB block mode with three keys.
AnnaBridge 145:64910690c574 660 *
AnnaBridge 145:64910690c574 661 * Decrypts triple DES using ECB block mode with three keys.
AnnaBridge 145:64910690c574 662 *
AnnaBridge 145:64910690c574 663 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 664 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 665 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 666 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 667 * @param size Size of input and output data in bytes. Must be multiple of 8 bytes.
AnnaBridge 145:64910690c574 668 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 669 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 670 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 671 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 672 */
AnnaBridge 145:64910690c574 673 status_t LTC_DES3_DecryptEcbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 674 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 675 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 676 uint8_t *plaintext,
AnnaBridge 145:64910690c574 677 uint32_t size,
AnnaBridge 145:64910690c574 678 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 679 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 680 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 681
AnnaBridge 145:64910690c574 682 /*!
AnnaBridge 145:64910690c574 683 * @brief Encrypts triple DES using CBC block mode with three keys.
AnnaBridge 145:64910690c574 684 *
AnnaBridge 145:64910690c574 685 * Encrypts triple DES using CBC block mode with three keys.
AnnaBridge 145:64910690c574 686 *
AnnaBridge 145:64910690c574 687 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 688 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 689 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 690 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 691 * @param size Size of input data in bytes
AnnaBridge 145:64910690c574 692 * @param iv Input initial vector to combine with the first plaintext block.
AnnaBridge 145:64910690c574 693 * The iv does not need to be secret, but it must be unpredictable.
AnnaBridge 145:64910690c574 694 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 695 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 696 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 697 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 698 */
AnnaBridge 145:64910690c574 699 status_t LTC_DES3_EncryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 700 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 701 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 702 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 703 uint32_t size,
AnnaBridge 145:64910690c574 704 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 705 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 706 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 707 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 708
AnnaBridge 145:64910690c574 709 /*!
AnnaBridge 145:64910690c574 710 * @brief Decrypts triple DES using CBC block mode with three keys.
AnnaBridge 145:64910690c574 711 *
AnnaBridge 145:64910690c574 712 * Decrypts triple DES using CBC block mode with three keys.
AnnaBridge 145:64910690c574 713 *
AnnaBridge 145:64910690c574 714 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 715 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 716 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 717 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 718 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 719 * @param iv Input initial vector to combine with the first plaintext block.
AnnaBridge 145:64910690c574 720 * The iv does not need to be secret, but it must be unpredictable.
AnnaBridge 145:64910690c574 721 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 722 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 723 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 724 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 725 */
AnnaBridge 145:64910690c574 726 status_t LTC_DES3_DecryptCbcEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 727 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 728 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 729 uint8_t *plaintext,
AnnaBridge 145:64910690c574 730 uint32_t size,
AnnaBridge 145:64910690c574 731 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 732 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 733 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 734 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 735
AnnaBridge 145:64910690c574 736 /*!
AnnaBridge 145:64910690c574 737 * @brief Encrypts triple DES using CFB block mode with three keys.
AnnaBridge 145:64910690c574 738 *
AnnaBridge 145:64910690c574 739 * Encrypts triple DES using CFB block mode with three keys.
AnnaBridge 145:64910690c574 740 *
AnnaBridge 145:64910690c574 741 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 742 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 743 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 744 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 745 * @param size Size of input and ouput data in bytes
AnnaBridge 145:64910690c574 746 * @param iv Input initial block.
AnnaBridge 145:64910690c574 747 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 748 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 749 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 750 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 751 */
AnnaBridge 145:64910690c574 752 status_t LTC_DES3_EncryptCfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 753 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 754 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 755 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 756 uint32_t size,
AnnaBridge 145:64910690c574 757 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 758 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 759 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 760 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 761
AnnaBridge 145:64910690c574 762 /*!
AnnaBridge 145:64910690c574 763 * @brief Decrypts triple DES using CFB block mode with three keys.
AnnaBridge 145:64910690c574 764 *
AnnaBridge 145:64910690c574 765 * Decrypts triple DES using CFB block mode with three keys.
AnnaBridge 145:64910690c574 766 *
AnnaBridge 145:64910690c574 767 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 768 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 769 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 770 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 771 * @param size Size of input data in bytes
AnnaBridge 145:64910690c574 772 * @param iv Input initial block.
AnnaBridge 145:64910690c574 773 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 774 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 775 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 776 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 777 */
AnnaBridge 145:64910690c574 778 status_t LTC_DES3_DecryptCfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 779 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 780 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 781 uint8_t *plaintext,
AnnaBridge 145:64910690c574 782 uint32_t size,
AnnaBridge 145:64910690c574 783 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 784 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 785 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 786 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 787
AnnaBridge 145:64910690c574 788 /*!
AnnaBridge 145:64910690c574 789 * @brief Encrypts triple DES using OFB block mode with three keys.
AnnaBridge 145:64910690c574 790 *
AnnaBridge 145:64910690c574 791 * Encrypts triple DES using OFB block mode with three keys.
AnnaBridge 145:64910690c574 792 *
AnnaBridge 145:64910690c574 793 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 794 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 795 * @param plaintext Input plaintext to encrypt
AnnaBridge 145:64910690c574 796 * @param[out] ciphertext Output ciphertext
AnnaBridge 145:64910690c574 797 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 798 * @param iv Input unique input vector. The OFB mode requires that the IV be unique
AnnaBridge 145:64910690c574 799 * for each execution of the mode under the given key.
AnnaBridge 145:64910690c574 800 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 801 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 802 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 803 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 804 */
AnnaBridge 145:64910690c574 805 status_t LTC_DES3_EncryptOfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 806 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 807 const uint8_t *plaintext,
AnnaBridge 145:64910690c574 808 uint8_t *ciphertext,
AnnaBridge 145:64910690c574 809 uint32_t size,
AnnaBridge 145:64910690c574 810 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 811 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 812 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 813 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 814
AnnaBridge 145:64910690c574 815 /*!
AnnaBridge 145:64910690c574 816 * @brief Decrypts triple DES using OFB block mode with three keys.
AnnaBridge 145:64910690c574 817 *
AnnaBridge 145:64910690c574 818 * Decrypts triple DES using OFB block mode with three keys.
AnnaBridge 145:64910690c574 819 *
AnnaBridge 145:64910690c574 820 * @param base LTC peripheral base address
AnnaBridge 145:64910690c574 821 * @param handle pointer to ltc_edma_handle_t structure which stores the transaction state.
AnnaBridge 145:64910690c574 822 * @param ciphertext Input ciphertext to decrypt
AnnaBridge 145:64910690c574 823 * @param[out] plaintext Output plaintext
AnnaBridge 145:64910690c574 824 * @param size Size of input and output data in bytes
AnnaBridge 145:64910690c574 825 * @param iv Input unique input vector. The OFB mode requires that the IV be unique
AnnaBridge 145:64910690c574 826 * for each execution of the mode under the given key.
AnnaBridge 145:64910690c574 827 * @param key1 First input key for key bundle
AnnaBridge 145:64910690c574 828 * @param key2 Second input key for key bundle
AnnaBridge 145:64910690c574 829 * @param key3 Third input key for key bundle
AnnaBridge 145:64910690c574 830 * @return Status from encrypt/decrypt operation
AnnaBridge 145:64910690c574 831 */
AnnaBridge 145:64910690c574 832 status_t LTC_DES3_DecryptOfbEDMA(LTC_Type *base,
AnnaBridge 145:64910690c574 833 ltc_edma_handle_t *handle,
AnnaBridge 145:64910690c574 834 const uint8_t *ciphertext,
AnnaBridge 145:64910690c574 835 uint8_t *plaintext,
AnnaBridge 145:64910690c574 836 uint32_t size,
AnnaBridge 145:64910690c574 837 const uint8_t iv[LTC_DES_IV_SIZE],
AnnaBridge 145:64910690c574 838 const uint8_t key1[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 839 const uint8_t key2[LTC_DES_KEY_SIZE],
AnnaBridge 145:64910690c574 840 const uint8_t key3[LTC_DES_KEY_SIZE]);
AnnaBridge 145:64910690c574 841
AnnaBridge 145:64910690c574 842 /*!
AnnaBridge 145:64910690c574 843 *@}
AnnaBridge 145:64910690c574 844 */
AnnaBridge 145:64910690c574 845
AnnaBridge 145:64910690c574 846 #if defined(__cplusplus)
AnnaBridge 145:64910690c574 847 }
AnnaBridge 145:64910690c574 848 #endif
AnnaBridge 145:64910690c574 849
AnnaBridge 145:64910690c574 850 #endif /* _FSL_LTC_EDMA_H_ */