00001
00005 #ifndef DKUTIL_C_ARCFOUR_H
00006 #define DKUTIL_C_ARCFOUR_H
00007 #include "dkcOSIndependent.h"
00008
00009
00010
00011
00012
00013
00014
00015
00017 typedef struct dkc_Arcfour_State{
00018 unsigned char mi;
00019 unsigned char mj;
00020 unsigned char msbox[256];
00021 }DKC_ARCFOUR_STATE;
00022
00030 DKC_EXTERN DKC_ARCFOUR_STATE * WINAPI dkcAllocArcfour(const unsigned char *key,size_t keylen);
00031
00036 DKC_EXTERN int WINAPI dkcFreeArcfour(DKC_ARCFOUR_STATE **p);
00037
00042 DKC_EXTERN unsigned char WINAPI dkcArcfourByte(DKC_ARCFOUR_STATE *p);
00051 DKC_EXTERN int WINAPI dkcArcfourEncrypt(DKC_ARCFOUR_STATE *p,
00052 unsigned char *dest,size_t destsize,
00053 const unsigned char *src,size_t srcsize);
00054
00055 DKC_EXTERN void WINAPI dkcArcfourEncryptNoDest(DKC_ARCFOUR_STATE *p,
00056 unsigned char *dest_and_src,size_t dest_and_srcsize);
00057
00058 #define dkcArcfourDecrypt(p,dest,destsize,src,srcsize) \
00059 dkcArcfourEncrypt(p,dest,destsize,src,srcsize)
00060
00061 #define dkcArcfourDecryptNoDest(p,dest_and_src,dest_and_srcsize) \
00062 dkcArcfourEncryptNoDest(p,dest_and_src,dest_and_srcsize)
00063
00064
00065 #if !defined( DKUTIL_C_ARCFOUR_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE)
00066 # include "dkcArcfour.c"
00067 #endif
00068
00069 #endif //end of include once