mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-05 12:51:08 -05:00
35 lines
689 B
C++
35 lines
689 B
C++
#pragma once
|
|
|
|
#include <openssl/evp.h>
|
|
#include <util/rsdir.h>
|
|
|
|
namespace librs
|
|
{
|
|
namespace crypto
|
|
{
|
|
class HashStream
|
|
{
|
|
public:
|
|
enum HashType { UNKNOWN = 0x00,
|
|
SHA1 = 0x01
|
|
};
|
|
|
|
HashStream(HashType t);
|
|
~HashStream();
|
|
|
|
Sha1CheckSum hash() ;
|
|
|
|
template<class T> friend HashStream& operator<<(HashStream& u, const T&) ;
|
|
|
|
template<uint32_t ID_SIZE_IN_BYTES,bool UPPER_CASE,uint32_t UNIQUE_IDENTIFIER>
|
|
friend HashStream& operator<<(HashStream& u,const t_RsGenericIdType<ID_SIZE_IN_BYTES,UPPER_CASE,UNIQUE_IDENTIFIER>& r)
|
|
{
|
|
EVP_DigestUpdate(u.mdctx,r.toByteArray(),ID_SIZE_IN_BYTES);
|
|
return u;
|
|
}
|
|
private:
|
|
EVP_MD_CTX *mdctx ;
|
|
};
|
|
}
|
|
}
|