00001
00007 #ifndef dkutil_c_SHA512
00008 #define dkutil_c_SHA512
00009
00010
00011
00012
00013 #include "dkcOSIndependent.h"
00014
00015 #define SHA512_HASH 8
00016 #define SHA512_BLOCK 16
00017 #define SHA512_WORK 80
00018
00019
00021 #define SHA512_BIN_BUFFER_SIZE (SHA512_HASH * 8)
00022
00023 #define SHA512_STR_BUFFER_SIZE (SHA512_HASH * 16 + 1)
00024
00025
00026 typedef struct dkc_SHA512{
00027 BOOL m_bMMX;
00029 QWORD m_qwH[SHA512_HASH];
00030 QWORD m_qwLNumBits;
00031 QWORD m_qwHNumBits;
00032 QWORD m_aBlock[SHA512_BLOCK];
00033 int m_nNumChr;
00034 BYTE mFinalized;
00035 }DKC_SHA512;
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00057 DKC_EXTERN DKC_SHA512 *WINAPI dkcAllocSHA512();
00059 DKC_EXTERN void WINAPI dkcSHA512Init(DKC_SHA512 *);
00065 DKC_EXTERN void WINAPI dkcSHA512Load(DKC_SHA512 *p,const BYTE *pBuffer,DWORD dwSize);
00066
00067
00073 DKC_EXTERN void WINAPI dkcSHA512Final(DKC_SHA512 *p);
00080
00081 DKC_EXTERN int WINAPI dkcSHA512DigestStr(DKC_SHA512 *p,char *buff,size_t size);
00082
00084 DKC_EXTERN int WINAPI dkcSHA512Digest(DKC_SHA512 *p,BYTE *buff,size_t size);
00085
00091 DKC_EXTERN int WINAPI dkcSHA512FinalDigestStr(DKC_SHA512 *p,char *buff,size_t size);
00094 DKC_EXTERN int WINAPI dkcSHA512FinalDigest(DKC_SHA512 *p,BYTE *buff,size_t size);
00095
00100 DKC_EXTERN int WINAPI dkcFreeSHA512(DKC_SHA512 **p);
00101 #endif //end of include once