mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-07 05:38:09 -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 ;
|
||
|
};
|
||
|
}
|
||
|
}
|