149 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
150 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12,
151 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2,
152 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9,
188 pState->bytesInBuffer = 0;
243#define F( x, y, z ) ((((z) ^ (y)) & (x)) ^ (z))
244#define G( x, y, z ) F( (z), (x), (y) )
245#define H( x, y, z ) ((x) ^ (y) ^ (z) )
246#define I( x, y, z ) ((y) ^ ((x) | ~(z)))
274#define CROUND( r, Func ) { \
275 ad[r%4] = ad[(r+3)%4] + ROL32( ad[r%4] + Func(ad[(r+3)%4], ad[(r+2)%4], ad[(r+1)%4]) + Wt + md5Const[r], md5Rotate[r] ); \
278#define IROUND( r, Func ) { \
279 Wt = SYMCRYPT_LOAD_LSBFIRST32( &pbData[ 4*md5MsgIndex[r] ] ); \
288#define FROUND( r, Func ) { \
289 Wt = W[md5MsgIndex[r]];\
306 ad[0] = pChain->H[0];
307 ad[1] = pChain->H[3];
308 ad[2] = pChain->H[2];
309 ad[3] = pChain->H[1];
385 pChain->H[0] = ad[0] = ad[0] + pChain->H[0];
386 pChain->H[3] = ad[1] = ad[1] + pChain->H[3];
387 pChain->H[2] = ad[2] = ad[2] + pChain->H[2];
388 pChain->H[1] = ad[3] = ad[3] + pChain->H[1];
456 scError = SYMCRYPT_INVALID_BLOB;
463 scError = SYMCRYPT_INVALID_BLOB;
470 pState->bytesInBuffer =
blob.dataLength & 0x3f;
486 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0,
487 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72,
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
static void cleanup(void)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
#define memcpy(s1, s2, n)
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_(s)
#define SYMCRYPT_BLOB_MAGIC
FORCEINLINE VOID SYMCRYPT_CALL SymCryptUint32ToLsbFirst(_In_reads_(cuData) PCUINT32 puData, _Out_writes_(4 *cuData) PBYTE pbResult, SIZE_T cuData)
@ SymCryptBlobTypeMd5State
VOID SYMCRYPT_CALL SymCryptInjectError(PBYTE pbData, SIZE_T cbData)
FORCEINLINE VOID SYMCRYPT_CALL SymCryptLsbFirstToUint32(_In_reads_(4 *cuResult) PCBYTE pbData, _Out_writes_(cuResult) PUINT32 puResult, SIZE_T cuResult)
const BYTE SymCryptTestMsg3[3]
VOID SYMCRYPT_CALL SymCryptHashAppendInternal(_In_ PCSYMCRYPT_HASH pHash, _Inout_ PSYMCRYPT_COMMON_HASH_STATE pState, _In_reads_bytes_(cbData) PCBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptHashCommonPaddingMd4Style(_In_ PCSYMCRYPT_HASH pHash, _Inout_ PSYMCRYPT_COMMON_HASH_STATE pState)
static const BYTE md5KATAnswer[16]
VOID SYMCRYPT_CALL SymCryptMd5AppendBlocks(_Inout_ SYMCRYPT_MD5_CHAINING_STATE *pChain, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_ SIZE_T *pcbRemaining)
const PCSYMCRYPT_HASH SymCryptMd5Algorithm
VOID SYMCRYPT_CALL SymCryptMd5Append(_Inout_ PSYMCRYPT_MD5_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptMd5Init(_Out_ PSYMCRYPT_MD5_STATE pState)
static const UINT32 md5InitialState[4]
VOID SYMCRYPT_CALL SymCryptMd5StateExport(_In_ PCSYMCRYPT_MD5_STATE pState, _Out_writes_bytes_(SYMCRYPT_MD5_STATE_EXPORT_SIZE) PBYTE pbBlob)
const SYMCRYPT_HASH SymCryptMd5Algorithm_default
static const int md5Rotate[64]
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptMd5StateImport(_Out_ PSYMCRYPT_MD5_STATE pState, _In_reads_bytes_(SYMCRYPT_MD5_STATE_EXPORT_SIZE) PCBYTE pbBlob)
static const UINT32 md5Const[64]
VOID SYMCRYPT_CALL SymCryptMd5Selftest(void)
static const int md5MsgIndex[64]
VOID SYMCRYPT_CALL SymCryptMd5Result(_Inout_ PSYMCRYPT_MD5_STATE pState, _Out_writes_(SYMCRYPT_MD5_RESULT_SIZE) PBYTE pbResult)
static const BYTE pbResult[]
#define SYMCRYPT_ASSERT(_x)
VOID SYMCRYPT_CALL SymCryptMarvin32(_In_ PCSYMCRYPT_MARVIN32_EXPANDED_SEED pExpandedSeed, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_MARVIN32_RESULT_SIZE) PBYTE pbResult)
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
_Analysis_noreturn_ VOID SYMCRYPT_CALL SymCryptFatal(UINT32 fatalCode)
#define SYMCRYPT_MD5_INPUT_BLOCK_SIZE
PCSYMCRYPT_MARVIN32_EXPANDED_SEED const SymCryptMarvin32DefaultSeed
#define SYMCRYPT_MD5_RESULT_SIZE
VOID SYMCRYPT_CALL SymCryptMd5(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_MD5_RESULT_SIZE) PBYTE pbResult)
VOID SYMCRYPT_CALL SymCryptMd5StateCopy(_In_ PCSYMCRYPT_MD5_STATE pSrc, _Out_ PSYMCRYPT_MD5_STATE pDst)
struct _SYMCRYPT_HASH SYMCRYPT_HASH
#define SYMCRYPT_FIELD_SIZE(type, field)
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
PCBYTE PBYTE SIZE_T cbData
#define SYMCRYPT_SET_MAGIC(p)
#define SYMCRYPT_MD5_STATE_EXPORT_SIZE
#define SYMCRYPT_FIELD_OFFSET(type, field)
* PSYMCRYPT_COMMON_HASH_STATE
PSYMCRYPT_COMMON_HASH_STATE pState
const SYMCRYPT_MD5_STATE * PCSYMCRYPT_MD5_STATE
#define SYMCRYPT_CHECK_MAGIC(p)
SYMCRYPT_MD5_CHAINING_STATE