| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | /** * \file xtea.h * * \brief XTEA block cipher (32-bit) * *  Copyright (C) 2006-2010, Brainspark B.V. * *  This file is part of PolarSSL (http://www.polarssl.org) *  Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org> * *  All rights reserved. * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License along *  with this program; if not, write to the Free Software Foundation, Inc., *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */#ifndef POLARSSL_XTEA_H#define POLARSSL_XTEA_H#include <string.h>#ifdef _MSC_VER#include <basetsd.h>typedef UINT32 uint32_t;#else#include <inttypes.h>#endif#define XTEA_ENCRYPT     1#define XTEA_DECRYPT     0#define POLARSSL_ERR_XTEA_INVALID_INPUT_LENGTH             -0x0028  /**< The data input has an invalid length. *//** * \brief          XTEA context structure */typedef struct{    uint32_t k[4];       /*!< key */}xtea_context;#ifdef __cplusplusextern "C" {#endif/** * \brief          XTEA key schedule * * \param ctx      XTEA context to be initialized * \param key      the secret key */void xtea_setup( xtea_context *ctx, unsigned char key[16] );/** * \brief          XTEA cipher function * * \param ctx      XTEA context * \param mode     XTEA_ENCRYPT or XTEA_DECRYPT * \param input    8-byte input block * \param output   8-byte output block * * \return         0 if successful */int xtea_crypt_ecb( xtea_context *ctx,                    int mode,                    unsigned char input[8],                    unsigned char output[8] );/** * \brief          XTEA CBC cipher function * * \param ctx      XTEA context * \param mode     XTEA_ENCRYPT or XTEA_DECRYPT * \param length   the length of input, multiple of 8 * \param iv       initialization vector for CBC mode * \param input    input block * \param output   output block * * \return         0 if successful, *                 POLARSSL_ERR_XTEA_INVALID_INPUT_LENGTH if the length % 8 != 0 */int xtea_crypt_cbc( xtea_context *ctx,                    int mode,                    size_t length,                    unsigned char iv[8],                    unsigned char *input,                    unsigned char *output);/* * \brief          Checkup routine * * \return         0 if successful, or 1 if the test failed */int xtea_self_test( int verbose );#ifdef __cplusplus}#endif#endif /* xtea.h */
 |