7 #ifndef ANONCOIN_HASH_H
8 #define ANONCOIN_HASH_H
16 #include <openssl/ripemd.h>
17 #include <openssl/sha.h>
22 static unsigned char pblank[1];
24 SHA256((pbegin == pend ? pblank : (
unsigned char*)&pbegin[0]), (pend - pbegin) *
sizeof(pbegin[0]), (
unsigned char*)&hash1);
26 SHA256((
unsigned char*)&hash1,
sizeof(hash1), (
unsigned char*)&hash2);
43 CHashWriter(
int nTypeIn,
int nVersionIn) : nType(nTypeIn), nVersion(nVersionIn) {
48 SHA256_Update(&ctx, pch, size);
55 SHA256_Final((
unsigned char*)&hash1, &ctx);
57 SHA256((
unsigned char*)&hash1,
sizeof(hash1), (
unsigned char*)&hash2);
70 template<
typename T1,
typename T2>
72 const T2 p2begin,
const T2 p2end)
74 static unsigned char pblank[1];
78 SHA256_Update(&ctx, (p1begin == p1end ? pblank : (
unsigned char*)&p1begin[0]), (p1end - p1begin) *
sizeof(p1begin[0]));
79 SHA256_Update(&ctx, (p2begin == p2end ? pblank : (
unsigned char*)&p2begin[0]), (p2end - p2begin) *
sizeof(p2begin[0]));
80 SHA256_Final((
unsigned char*)&hash1, &ctx);
82 SHA256((
unsigned char*)&hash1,
sizeof(hash1), (
unsigned char*)&hash2);
86 template<
typename T1,
typename T2,
typename T3>
88 const T2 p2begin,
const T2 p2end,
89 const T3 p3begin,
const T3 p3end)
91 static unsigned char pblank[1];
95 SHA256_Update(&ctx, (p1begin == p1end ? pblank : (
unsigned char*)&p1begin[0]), (p1end - p1begin) *
sizeof(p1begin[0]));
96 SHA256_Update(&ctx, (p2begin == p2end ? pblank : (
unsigned char*)&p2begin[0]), (p2end - p2begin) *
sizeof(p2begin[0]));
97 SHA256_Update(&ctx, (p3begin == p3end ? pblank : (
unsigned char*)&p3begin[0]), (p3end - p3begin) *
sizeof(p3begin[0]));
98 SHA256_Final((
unsigned char*)&hash1, &ctx);
100 SHA256((
unsigned char*)&hash1,
sizeof(hash1), (
unsigned char*)&hash2);
112 template<
typename T1>
115 static unsigned char pblank[1];
117 SHA256((pbegin == pend ? pblank : (
unsigned char*)&pbegin[0]), (pend - pbegin) *
sizeof(pbegin[0]), (
unsigned char*)&hash1);
119 RIPEMD160((
unsigned char*)&hash1,
sizeof(hash1), (
unsigned char*)&hash2);
125 return Hash160(vch.begin(), vch.end());
128 unsigned int MurmurHash3(
unsigned int nHashSeed,
const std::vector<unsigned char>& vDataToHash);
unsigned int MurmurHash3(unsigned int nHashSeed, const std::vector< unsigned char > &vDataToHash)
void Serialize(Stream &s, char a, int, int=0)
CHashWriter & write(const char *pch, size_t size)
uint160 Hash160(const T1 pbegin, const T1 pend)
int HMAC_SHA512_Init(HMAC_SHA512_CTX *pctx, const void *pkey, size_t len)
uint256 SerializeHash(const T &obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION)
int HMAC_SHA512_Update(HMAC_SHA512_CTX *pctx, const void *pdata, size_t len)
uint256 Hash(const T1 pbegin, const T1 pend)
CHashWriter(int nTypeIn, int nVersionIn)
CHashWriter & operator<<(const T &obj)
int HMAC_SHA512_Final(unsigned char *pmd, HMAC_SHA512_CTX *pctx)