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.
Dependencies: nRF51_Vdd TextLCD BME280
xtea.h
00001 /** 00002 * \file xtea.h 00003 * 00004 * \brief XTEA block cipher (32-bit) 00005 */ 00006 /* 00007 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved 00008 * SPDX-License-Identifier: Apache-2.0 00009 * 00010 * Licensed under the Apache License, Version 2.0 (the "License"); you may 00011 * not use this file except in compliance with the License. 00012 * You may obtain a copy of the License at 00013 * 00014 * http://www.apache.org/licenses/LICENSE-2.0 00015 * 00016 * Unless required by applicable law or agreed to in writing, software 00017 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 00018 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00019 * See the License for the specific language governing permissions and 00020 * limitations under the License. 00021 * 00022 * This file is part of mbed TLS (https://tls.mbed.org) 00023 */ 00024 #ifndef MBEDTLS_XTEA_H 00025 #define MBEDTLS_XTEA_H 00026 00027 #if !defined(MBEDTLS_CONFIG_FILE) 00028 #include "config.h" 00029 #else 00030 #include MBEDTLS_CONFIG_FILE 00031 #endif 00032 00033 #include <stddef.h> 00034 #include <stdint.h> 00035 00036 #define MBEDTLS_XTEA_ENCRYPT 1 00037 #define MBEDTLS_XTEA_DECRYPT 0 00038 00039 #define MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH -0x0028 /**< The data input has an invalid length. */ 00040 #define MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED -0x0029 /**< XTEA hardware accelerator failed. */ 00041 00042 #ifdef __cplusplus 00043 extern "C" { 00044 #endif 00045 00046 #if !defined(MBEDTLS_XTEA_ALT) 00047 // Regular implementation 00048 // 00049 00050 /** 00051 * \brief XTEA context structure 00052 */ 00053 typedef struct mbedtls_xtea_context 00054 { 00055 uint32_t k [4]; /*!< key */ 00056 } 00057 mbedtls_xtea_context; 00058 00059 #else /* MBEDTLS_XTEA_ALT */ 00060 #include "xtea_alt.h" 00061 #endif /* MBEDTLS_XTEA_ALT */ 00062 00063 /** 00064 * \brief Initialize XTEA context 00065 * 00066 * \param ctx XTEA context to be initialized 00067 */ 00068 void mbedtls_xtea_init( mbedtls_xtea_context *ctx ); 00069 00070 /** 00071 * \brief Clear XTEA context 00072 * 00073 * \param ctx XTEA context to be cleared 00074 */ 00075 void mbedtls_xtea_free( mbedtls_xtea_context *ctx ); 00076 00077 /** 00078 * \brief XTEA key schedule 00079 * 00080 * \param ctx XTEA context to be initialized 00081 * \param key the secret key 00082 */ 00083 void mbedtls_xtea_setup( mbedtls_xtea_context *ctx, const unsigned char key[16] ); 00084 00085 /** 00086 * \brief XTEA cipher function 00087 * 00088 * \param ctx XTEA context 00089 * \param mode MBEDTLS_XTEA_ENCRYPT or MBEDTLS_XTEA_DECRYPT 00090 * \param input 8-byte input block 00091 * \param output 8-byte output block 00092 * 00093 * \return 0 if successful 00094 */ 00095 int mbedtls_xtea_crypt_ecb( mbedtls_xtea_context *ctx, 00096 int mode, 00097 const unsigned char input[8], 00098 unsigned char output[8] ); 00099 00100 #if defined(MBEDTLS_CIPHER_MODE_CBC) 00101 /** 00102 * \brief XTEA CBC cipher function 00103 * 00104 * \param ctx XTEA context 00105 * \param mode MBEDTLS_XTEA_ENCRYPT or MBEDTLS_XTEA_DECRYPT 00106 * \param length the length of input, multiple of 8 00107 * \param iv initialization vector for CBC mode 00108 * \param input input block 00109 * \param output output block 00110 * 00111 * \return 0 if successful, 00112 * MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH if the length % 8 != 0 00113 */ 00114 int mbedtls_xtea_crypt_cbc( mbedtls_xtea_context *ctx, 00115 int mode, 00116 size_t length, 00117 unsigned char iv[8], 00118 const unsigned char *input, 00119 unsigned char *output); 00120 #endif /* MBEDTLS_CIPHER_MODE_CBC */ 00121 00122 /** 00123 * \brief Checkup routine 00124 * 00125 * \return 0 if successful, or 1 if the test failed 00126 */ 00127 int mbedtls_xtea_self_test( int verbose ); 00128 00129 #ifdef __cplusplus 00130 } 00131 #endif 00132 00133 #endif /* xtea.h */
Generated on Tue Jul 12 2022 15:16:04 by
