00001
00002
00003
00007 #ifndef _AES_H
00008 #define _AES_H
00009
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013
00017 typedef struct
00018 {
00019 unsigned long erk[64];
00020 unsigned long drk[64];
00021 int nr;
00022 }
00023 aes_context;
00024
00032 void aes_set_key( aes_context *ctx, unsigned char *key, int keysize );
00033
00041 void aes_encrypt( aes_context *ctx,
00042 unsigned char input[16],
00043 unsigned char output[16] );
00044
00052 void aes_decrypt( aes_context *ctx,
00053 unsigned char input[16],
00054 unsigned char output[16] );
00055
00065 void aes_cbc_encrypt( aes_context *ctx,
00066 unsigned char iv[16],
00067 unsigned char *input,
00068 unsigned char *output,
00069 int len );
00070
00080 void aes_cbc_decrypt( aes_context *ctx,
00081 unsigned char iv[16],
00082 unsigned char *input,
00083 unsigned char *output,
00084 int len );
00085
00091 int aes_self_test( int verbose );
00092
00093 #ifdef __cplusplus
00094 }
00095 #endif
00096
00097 #endif