00001 00014 #ifndef DKUTIL_C_BLOWFISH_H 00015 #define DKUTIL_C_BLOWFISH_H 00016 00017 #include "dkcOSIndependent.h" 00018 00020 #define MAXKEYBYTES 56 // 448 bits max 00021 00022 #define NPASS 16 // SBox passes 00023 00025 #define dkcd_BLOWFISH_MAX_KEY_SIZE MAXKEYBYTES 00026 00027 00028 00029 00030 typedef DWORD (*DKC_BLOWFISH_SBOX_TYPE)[256]; 00031 00032 typedef struct dkc_Blowfish{ 00033 DWORD * PArray ; 00034 //DWORD (* SBoxes)[256]; 00035 DKC_BLOWFISH_SBOX_TYPE SBoxes; 00036 }DKC_BLOWFISH; 00037 00045 DKC_EXTERN DKC_BLOWFISH *WINAPI dkcAllocBlowfish(BYTE *key,int keysize); 00046 00048 DKC_EXTERN int WINAPI dkcFreeBlowfish(DKC_BLOWFISH **); 00056 00057 DKC_EXTERN int WINAPI dkcBlowfishInit(DKC_BLOWFISH *p,BYTE *key, int keybytes); 00058 00059 00060 DKC_EXTERN DWORD WINAPI dkcBlowfishGetOutputLength (DWORD lInputLong); 00067 DKC_EXTERN DWORD WINAPI dkcBlowfishEncrypt(DKC_BLOWFISH *p,BYTE * pInput, BYTE * pOutput, DWORD lSize); 00072 DKC_EXTERN void WINAPI dkcBlowfishDecrypt (DKC_BLOWFISH *p,BYTE * pInput, BYTE * pOutput, DWORD lSize); 00073 00074 00081 00124 #if !defined( DKUTIL_C_BLOWFISH_C ) && defined(USE_DKC_INDEPENDENT_INCLUDE) 00125 # include "dkcBlowfish.c" 00126 #endif 00127 00128 #endif //end of include once