root/headers/private/libroot/SHA256.h
/*
 * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */
#ifndef _SHA_256_H
#define _SHA_256_H


#include <SupportDefs.h>


#define SHA_DIGEST_LENGTH       32

namespace BPrivate {


class SHA256 {
public:
                                                                SHA256();
                                                                ~SHA256();

                        void                            Init();
                        void                            Update(const void* buffer, size_t size);
                        const uint8*            Digest();
                        size_t                          DigestLength() const
                                                                        { return SHA_DIGEST_LENGTH; }

private:
                        void                            _ProcessChunk();

private:
                        uint32                          fHash[8];
                        uint32                          fDigest[8];
                        uint32                          fBuffer[64];
                        size_t                          fBytesInBuffer;
                        size_t                          fMessageSize;
                        bool                            fDigested;
};


} // namespace BPrivate

using BPrivate::SHA256;


#endif  // _SHA_256_H