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