GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
sha3.h
Go to the documentation of this file.
1// //////////////////////////////////////////////////////////
2// sha3.h
3// Copyright (c) 2014,2015 Stephan Brumme. All rights reserved.
4// see http://create.stephan-brumme.com/disclaimer.html
5//
6
7#pragma once
8
9//#include "hash.h"
10#include <string>
11
12// define fixed size integer types
13#ifdef _MSC_VER
14// Windows
15typedef unsigned __int8 uint8_t;
16typedef unsigned __int64 uint64_t;
17#else
18// GCC
19#include <stdint.h>
20#endif
21
22
24
36class SHA3 //: public Hash
37{
38public:
40 enum Bits { Bits224 = 224, Bits256 = 256, Bits384 = 384, Bits512 = 512 };
41
43 explicit SHA3(Bits bits = Bits256);
44
46 std::string operator()(const void* data, size_t numBytes);
48 std::string operator()(const std::string& text);
49
51 void add(const void* data, size_t numBytes);
52
54 std::string getHash();
55
57 void reset();
58
59private:
61 void processBlock(const void* data);
63 void processBuffer();
64
66 enum { StateSize = 1600 / (8 * 8),
67 MaxBlockSize = 200 - 2 * (224 / 8) };
68
70 uint64_t m_hash[StateSize];
72 uint64_t m_numBytes;
74 size_t m_blockSize;
76 size_t m_bufferSize;
78 uint8_t m_buffer[MaxBlockSize];
80 Bits m_bits;
81};
void reset()
restart
Definition sha3.cpp:25
std::string operator()(const void *data, size_t numBytes)
compute hash of a memory block
Definition sha3.cpp:275
Bits
algorithm variants
Definition sha3.h:40
@ Bits224
Definition sha3.h:40
@ Bits384
Definition sha3.h:40
@ Bits256
Definition sha3.h:40
@ Bits512
Definition sha3.h:40
SHA3(Bits bits=Bits256)
same as reset()
Definition sha3.cpp:16
void add(const void *data, size_t numBytes)
add arbitrary number of bytes
Definition sha3.cpp:172
std::string getHash()
return latest hash as hex characters
Definition sha3.cpp:235
lazy data
Definition meshpage.php:1583