00001
00005 #ifndef dkutil_c_Arcfour
00006 #define dkutil_c_Arcfour
00007
00008 #include "dkcOSIndependent.h"
00009
00010
00011
00012
00013
00014
00015
00016
00018 typedef struct dkc_Arcfour_State{
00019 unsigned char mi;
00020 unsigned char mj;
00021 unsigned char msbox[256];
00022 }DKC_ARCFOUR_STATE;
00023
00031 DKC_EXTERN DKC_ARCFOUR_STATE * WINAPI dkcAllocArcfour(const unsigned char *key,size_t keylen);
00032
00037 DKC_EXTERN int WINAPI dkcFreeArcfour(DKC_ARCFOUR_STATE **p);
00038
00043 DKC_EXTERN unsigned char WINAPI dkcArcfourByte(DKC_ARCFOUR_STATE *p);
00052 DKC_EXTERN int WINAPI dkcArcfourEncrypt(DKC_ARCFOUR_STATE *p,
00053 unsigned char *dest,size_t destsize,
00054 const unsigned char *src,size_t srcsize);
00055
00056 DKC_EXTERN void WINAPI dkcArcfourEncryptNoDest(DKC_ARCFOUR_STATE *p,
00057 unsigned char *dest_and_src,size_t dest_and_srcsize);
00058
00059 #define dkcArcfourDecrypt(p,dest,destsize,src,srcsize) \
00060 dkcArcfourEncrypt(p,dest,destsize,src,srcsize)
00061
00062 #define dkcArcfourDecryptNoDest(p,dest_and_src,dest_and_srcsize) \
00063 dkcArcfourEncryptNoDest(p,dest_and_src,dest_and_srcsize)
00064
00065
00066 #endif //end of include once