1190214Srpaulo/* 2190214Srpaulo * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. 3190214Srpaulo * Distributed under the terms of the MIT License. 4190214Srpaulo */ 5190214Srpaulo#ifndef SHA_256_H 6190214Srpaulo#define SHA_256_H 7190214Srpaulo 8190214Srpaulo 9190214Srpaulo#include <SupportDefs.h> 10190214Srpaulo 11190214Srpaulo 12190214Srpaulo#define SHA_DIGEST_LENGTH 32 13190214Srpaulo 14190214Srpaulo 15190214Srpauloclass SHA256 { 16190214Srpaulopublic: 17190214Srpaulo SHA256(); 18190214Srpaulo ~SHA256(); 19190214Srpaulo 20190214Srpaulo void Init(); 21190214Srpaulo void Update(const void* buffer, size_t size); 22190214Srpaulo const uint8* Digest(); 23190214Srpaulo size_t DigestLength() const 24190214Srpaulo { return SHA_DIGEST_LENGTH; } 25190214Srpaulo 26190214Srpauloprivate: 27190214Srpaulo void _ProcessChunk(); 28190214Srpaulo 29190214Srpauloprivate: 30190214Srpaulo uint32 fHash[8]; 31190214Srpaulo uint32 fDigest[8]; 32190214Srpaulo uint32 fBuffer[64]; 33214518Srpaulo size_t fBytesInBuffer; 34190214Srpaulo size_t fMessageSize; 35190214Srpaulo bool fDigested; 36190214Srpaulo}; 37190214Srpaulo 38190214Srpaulo 39190214Srpaulo#endif // SHA_256_H 40190214Srpaulo