00001
00027 #ifndef POLARSSL_XTEA_H
00028 #define POLARSSL_XTEA_H
00029
00030 #include "config.h"
00031
00032 #include <string.h>
00033
00034 #if defined(_MSC_VER) && !defined(EFIX64) && !defined(EFI32)
00035 #include <basetsd.h>
00036 typedef UINT32 uint32_t;
00037 #else
00038 #include <inttypes.h>
00039 #endif
00040
00041 #define XTEA_ENCRYPT 1
00042 #define XTEA_DECRYPT 0
00043
00044 #define POLARSSL_ERR_XTEA_INVALID_INPUT_LENGTH -0x0028
00046 #if !defined(POLARSSL_XTEA_ALT)
00047
00048
00049
00050 #ifdef __cplusplus
00051 extern "C" {
00052 #endif
00053
00057 typedef struct
00058 {
00059 uint32_t k[4];
00060 }
00061 xtea_context;
00062
00069 void xtea_setup( xtea_context *ctx, const unsigned char key[16] );
00070
00081 int xtea_crypt_ecb( xtea_context *ctx,
00082 int mode,
00083 const unsigned char input[8],
00084 unsigned char output[8] );
00085
00086 #if defined(POLARSSL_CIPHER_MODE_CBC)
00087
00100 int xtea_crypt_cbc( xtea_context *ctx,
00101 int mode,
00102 size_t length,
00103 unsigned char iv[8],
00104 const unsigned char *input,
00105 unsigned char *output);
00106 #endif
00107
00108 #ifdef __cplusplus
00109 }
00110 #endif
00111
00112 #else
00113 #include "xtea_alt.h"
00114 #endif
00115
00116 #ifdef __cplusplus
00117 extern "C" {
00118 #endif
00119
00125 int xtea_self_test( int verbose );
00126
00127 #ifdef __cplusplus
00128 }
00129 #endif
00130
00131 #endif