00001
00011 #ifndef DKUTIL_C_HMAC_H
00012 #define DKUTIL_C_HMAC_H
00013
00014 #include "dkcOSIndependent.h"
00015 #include "dkcHash.h"
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 typedef struct dkc_HMAC{
00027
00028
00029
00030
00031
00032
00034
00036
00037
00038 DKC_SECURE_HASH_OBJECT *sho;
00040 BYTE ipad_init;
00041
00042 BYTE *ipad;
00044 BYTE opad_init;
00046
00047 BYTE *opad;
00049 size_t pad_size;
00050
00051
00052 BYTE mInnerHashKeyed;
00053 BYTE mInited;
00054
00055 }DKC_HMAC;
00056
00057
00059 DKC_EXTERN void WINAPI dkcHMAC_MD5Init(DKC_HMAC *);
00060 DKC_EXTERN void WINAPI dkcHMAC_SHA1Init(DKC_HMAC *);
00061 DKC_EXTERN void WINAPI dkcHMAC_SHA256Init(DKC_HMAC *);
00062 DKC_EXTERN void WINAPI dkcHMAC_SHA384Init(DKC_HMAC *);
00064 DKC_EXTERN void WINAPI dkcHMAC_SHA512Init(DKC_HMAC *);
00065
00066 typedef void (WINAPI *DKC_HMAC_HASH_INIT_F_TYPE)(DKC_HMAC *);
00067
00068
00070 DKC_EXTERN DKC_HMAC *WINAPI dkcAllocHMAC(UINT option);
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00091 DKC_EXTERN int WINAPI dkcFreeHMAC(DKC_HMAC **p);
00092
00093
00094
00098
00099 DKC_EXTERN void WINAPI dkcHMACInit(DKC_HMAC *p,const BYTE *key,size_t key_length);
00100
00106 DKC_EXTERN void WINAPI dkcHMACLoad(DKC_HMAC *p,const BYTE *pBuffer,DWORD dwSize);
00107
00108
00114 DKC_EXTERN int WINAPI dkcHMACFinal(DKC_HMAC *p);
00121
00122 DKC_EXTERN int WINAPI dkcHMACDigestStr(DKC_HMAC *p,char *buff,size_t size);
00123
00125 DKC_EXTERN int WINAPI dkcHMACDigest(DKC_HMAC *p,BYTE *buff,size_t size);
00126
00127 DKC_EXTERN int WINAPI dkcHMACFinalDigestStr(DKC_HMAC *p,char *buff,size_t size);
00128
00129 DKC_EXTERN int WINAPI dkcHMACFinalDigest(DKC_HMAC *p,BYTE *buff,size_t size);
00130
00131
00132
00133
00143
00144 DKC_EXTERN int WINAPI dkcHMACCalculateBinaryDigest(
00145 UINT hash_option,BYTE *digest_dest,size_t destsize,
00146 const BYTE *data,size_t data_size,const BYTE *key,size_t keysize
00147 );
00148
00150 DKC_EXTERN int WINAPI dkcHMACHashCalculateStringDigest(
00151 UINT hash_option,char *digest_dest,size_t destsize,
00152 const BYTE *data,size_t data_size,const BYTE *key,size_t keysize
00153 );
00154
00155 DKC_EXTERN int WINAPI dkcHMAC(DKC_HMAC *,const BYTE *data,size_t data_size,const BYTE *key,size_t key_size,
00156 BYTE *bin_result_buff,size_t buffsize);
00157
00158 DKC_EXTERN int WINAPI dkcHMACStr(DKC_HMAC *p,const BYTE *data,size_t data_size,const BYTE *key,size_t key_size,
00159 char *str_result_buff,size_t buffsize);
00160
00161 #endif //end of include once