00001
00019 #ifndef DKUTIL_C_HC256_H
00020 #define DKUTIL_C_HC256_H
00021
00022 #include "dkcOSIndependent.h"
00023
00024 #define dkcdHC256_KEY_SIZE 32
00025 #define dkcdHC256_IV_SIZE 32
00026 typedef struct dkc_HC256{
00027 uint32 P[1024],Q[1024];
00028 uint32 X[16],Y[16];
00029 uint32 counter2048;
00030 union{
00031 uint64 a64[8];
00032 uint32 a32[16];
00033 uint16 a16[32];
00034 uint8 a8[64];
00035 }u_store;
00037 size_t store_size;
00038 }DKC_HC256;
00039
00040
00044
00045 DKC_EXTERN DKC_HC256 *WINAPI dkcAllocHC256(BYTE *key,size_t size,uint32 *iv,size_t ivsize);
00046
00047 DKC_EXTERN DKC_HC256 *dkcAllocHC256Const(const BYTE *key,size_t size,const uint32 *iv,size_t ivsize);
00048
00049
00050
00051
00052 DKC_EXTERN int WINAPI dkcFreeHC256(DKC_HC256 **);
00053
00054
00055
00056 DKC_EXTERN uint8 WINAPI dkcHC256_Byte(DKC_HC256 *p);
00057
00063 DKC_EXTERN int WINAPI dkcHC256EncryptDOE(DKC_HC256 *p,uint8 *dest,size_t dsize,const uint8 *src,size_t ssize);
00064 #define dkcHC256DecryptDOE(a,b,c,d,e) dkcHC256EncryptDOE(a,b,c,d,e)
00065
00066 DKC_EXTERN int WINAPI dkcHC256EncryptNoDestDOE(DKC_HC256 *p,uint8 *inout,size_t size);
00067 #define dkcHC256DecryptNoDestDOE(a,b,c) dkcHC256EncryptNoDestDOE(a,b,c)
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 #endif //end of include once