00001
00002
00003
00007 #ifndef _DES_H
00008 #define _DES_H
00009
00010 #ifdef __cplusplus
00011 extern "C" {
00012 #endif
00013
00017 typedef struct
00018 {
00019 unsigned long esk[32];
00020 unsigned long dsk[32];
00021 }
00022 des_context;
00023
00027 typedef struct
00028 {
00029 unsigned long esk[96];
00030 unsigned long dsk[96];
00031 }
00032 des3_context;
00033
00040 void des_set_key( des_context *ctx, unsigned char key[8] );
00041
00049 void des_encrypt( des_context *ctx,
00050 unsigned char input[8],
00051 unsigned char output[8] );
00052
00060 void des_decrypt( des_context *ctx,
00061 unsigned char input[8],
00062 unsigned char output[8] );
00063
00073 void des_cbc_encrypt( des_context *ctx,
00074 unsigned char iv[8],
00075 unsigned char *input,
00076 unsigned char *output,
00077 int len );
00078
00088 void des_cbc_decrypt( des_context *ctx,
00089 unsigned char iv[8],
00090 unsigned char *input,
00091 unsigned char *output,
00092 int len );
00093
00100 void des3_set_2keys( des3_context *ctx, unsigned char key[16] );
00101
00108 void des3_set_3keys( des3_context *ctx, unsigned char key[24] );
00109
00117 void des3_encrypt( des3_context *ctx,
00118 unsigned char input[8],
00119 unsigned char output[8] );
00120
00128 void des3_decrypt( des3_context *ctx,
00129 unsigned char input[8],
00130 unsigned char output[8] );
00131
00141 void des3_cbc_encrypt( des3_context *ctx,
00142 unsigned char iv[8],
00143 unsigned char *input,
00144 unsigned char *output,
00145 int len );
00146
00156 void des3_cbc_decrypt( des3_context *ctx,
00157 unsigned char iv[8],
00158 unsigned char *input,
00159 unsigned char *output,
00160 int len );
00161
00162
00163
00164
00165
00166
00167 int des_self_test( int verbose );
00168
00169 #ifdef __cplusplus
00170 }
00171 #endif
00172
00173 #endif