Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// Circular Hash
//
// This code implements a circular hash algorithm, intended as a variable
// length hash function that is fast to update. (The hash function will be
// called many times.) This is done by SHA-1'ing each of the inputs, then
// circularly XORing this value into a buffer.
#ifndef __CIRCHASH_H__
#define __CIRCHASH_H__
typedef struct { DWORD dwCircHashVer; DWORD dwCircSize; DWORD dwMode; DWORD dwCircInc; DWORD dwCurCircPos; DWORD dwAlgId; DWORD dwPad1; DWORD dwPad2; BYTE CircBuf[ 256 ]; } CircularHash;
// mode flags
#define CH_MODE_FEEDBACK 0x01
// alg flags
#define CH_ALG_SHA1_NS 0 // SHA-1 without endian transform
#define CH_ALG_MD4 1 // RSA MD4
BOOL InitCircularHash( IN CircularHash *NewHash, IN DWORD dwUpdateInc, IN DWORD dwAlgId, IN DWORD dwMode );
VOID DestroyCircularHash( IN CircularHash *OldHash );
BOOL GetCircularHashValue( IN CircularHash *CurrentHash, OUT BYTE **ppbHashValue, OUT DWORD *pcbHashValue );
BOOL UpdateCircularHash( IN CircularHash *CurrentHash, IN VOID *pvData, IN DWORD cbData );
#endif // __CIRCHASH_H__
|