00001
00005 #ifndef dkutil_c_Hash
00006 #define dkutil_c_Hash
00007
00008 #include "dkcOSIndependent.h"
00009 #include "st.h"
00010 #include "dkcSHA.h"
00011 #include "dkcMD5.h"
00012
00013 typedef int (WINAPI *DKC_SHO_INIT_F_TYPE)(void *);
00014 typedef void (WINAPI *DKC_SHO_LOAD_F_TYPE)(void *,const BYTE *pBuffer,DWORD dwSize);
00015 typedef void (WINAPI *DKC_SHO_FINAL_F_TYPE)(void *p);
00016 typedef int (WINAPI *DKC_SHO_DIGESTSTR_F_TYPE)(void *p,char *buff,size_t size);
00017 typedef int (WINAPI *DKC_SHO_DIGEST_F_TYPE)(void *p,BYTE *buff,size_t size);
00018
00019
00021 typedef struct dkc_SecureHashObject{
00022 DKC_WINAPI_PROC_F_TYPE Init;
00023 DKC_WINAPI_PROC_F_TYPE Load;
00024 DKC_WINAPI_PROC_F_TYPE Final;
00025 DKC_WINAPI_PROC_F_TYPE DigestStr;
00026 DKC_WINAPI_PROC_F_TYPE Digest;
00028 size_t digest_string_size;
00030 size_t digest_binary_size;
00031 UINT mOption;
00032 void *mObj;
00033 BYTE mInited;
00034 }DKC_SECURE_HASH_OBJECT,DKC_SHO;
00035
00036
00037 DKC_SECURE_HASH_OBJECT *WINAPI dkcAllocSHO(UINT option);
00038
00039 int WINAPI dkcFreeSHO(DKC_SECURE_HASH_OBJECT **pp);
00040
00041 void WINAPI dkcSHOInit(DKC_SECURE_HASH_OBJECT *p);
00042
00043 void WINAPI dkcSHOLoad(DKC_SECURE_HASH_OBJECT *p,const BYTE *pBuffer,DWORD dwSize);
00044
00045 void WINAPI dkcSHOFinal(DKC_SECURE_HASH_OBJECT *p);
00046
00047 int WINAPI dkcSHODigestStr(DKC_SECURE_HASH_OBJECT *p,char *buff,size_t size);
00048
00049 int WINAPI dkcSHODigest(DKC_SECURE_HASH_OBJECT *p,BYTE *buff,size_t size);
00050
00058
00059 DKC_EXTERN int WINAPI dkcSecureHashCalculateBinaryDigest(
00060 UINT hash_option,BYTE *digest_dest,size_t destsize,
00061 const BYTE *data,size_t data_size
00062 );
00063
00065 DKC_EXTERN int WINAPI dkcSecureHashCalculateStringDigest(
00066 UINT hash_option,char *digest_dest,size_t destsize,
00067 const BYTE *data,size_t data_size
00068 );
00069
00070
00071 DKC_EXTERN uint32 dkcHash24(uint8 *,size_t);
00072 DKC_EXTERN uint16 dkcHash16(uint8 *,size_t);
00073 DKC_EXTERN uint8 dkcHash8(uint8 *,size_t);
00074
00075
00076 #if 0//defined(__cplusplus)
00077
00078 namespace dkutil{
00079
00081 class map_st{
00082 st_table *mM;
00083 public:
00084 map_st(){
00085 mM = st_init_strtable();
00086 }
00087 bool reset(){
00088 clear();
00089 mM = st_init_strtable();
00090 }
00091 bool insert(const char *key,const char *data){
00092
00093 }
00094 void clear(){
00095 if(mM){
00096 st_free_table(mM);
00097 }
00098 }
00099 bool lookup(const char *key,char *buff,size_t size){
00100 st_lookup(m, key, &buff);
00101 }
00102
00103
00104 };
00105
00106
00107
00108 }
00109
00110
00111 #endif
00112
00113 #endif //end of include once