00001 00004 #ifndef XYSSL_AES_H 00005 #define XYSSL_AES_H 00006 00007 #define AES_ENCRYPT 1 00008 #define AES_DECRYPT 0 00009 00013 typedef struct 00014 { 00015 int nr; 00016 unsigned long *rk; 00017 unsigned long buf[68]; 00018 } 00019 aes_context; 00020 00021 #ifdef __cplusplus 00022 extern "C" { 00023 #endif 00024 00032 void aes_setkey_enc( aes_context *ctx, unsigned char *key, int keysize ); 00033 00041 void aes_setkey_dec( aes_context *ctx, unsigned char *key, int keysize ); 00042 00051 void aes_crypt_ecb( aes_context *ctx, 00052 int mode, 00053 unsigned char input[16], 00054 unsigned char output[16] ); 00055 00066 void aes_crypt_cbc( aes_context *ctx, 00067 int mode, 00068 int length, 00069 unsigned char iv[16], 00070 unsigned char *input, 00071 unsigned char *output ); 00072 00084 void aes_crypt_cfb( aes_context *ctx, 00085 int mode, 00086 int length, 00087 int *iv_off, 00088 unsigned char iv[16], 00089 unsigned char *input, 00090 unsigned char *output ); 00091 00097 int aes_self_test( int verbose ); 00098 00099 #ifdef __cplusplus 00100 } 00101 #endif 00102 00103 #endif /* aes.h */