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 void dkcHMAC(DKC_HMAC *,const BYTE *data,size_t data_size,const BYTE *key,size_t key_size,
00095 BYTE *bin_result_buff,size_t buffsize);
00096
00097
00101
00102 DKC_EXTERN void WINAPI dkcHMACInit(DKC_HMAC *p,const BYTE *key,size_t key_length);
00103
00109 DKC_EXTERN void WINAPI dkcHMACLoad(DKC_HMAC *p,const BYTE *pBuffer,DWORD dwSize);
00110
00111
00117 DKC_EXTERN int WINAPI dkcHMACFinal(DKC_HMAC *p);
00124
00125 DKC_EXTERN int WINAPI dkcHMACDigestStr(DKC_HMAC *p,char *buff,size_t size);
00126
00128 DKC_EXTERN int WINAPI dkcHMACDigest(DKC_HMAC *p,BYTE *buff,size_t size);
00129
00130
00131 #endif //end of include once