Merge branch 'master' of github.com:bitshares/fc
This commit is contained in:
commit
c7de8954fb
4 changed files with 25 additions and 9 deletions
|
|
@ -3,7 +3,6 @@
|
||||||
#include <fc/fwd.hpp>
|
#include <fc/fwd.hpp>
|
||||||
#include <fc/io/raw_fwd.hpp>
|
#include <fc/io/raw_fwd.hpp>
|
||||||
#include <fc/reflect/typename.hpp>
|
#include <fc/reflect/typename.hpp>
|
||||||
#include <fc/string.hpp>
|
|
||||||
|
|
||||||
namespace fc{
|
namespace fc{
|
||||||
class sha512;
|
class sha512;
|
||||||
|
|
@ -26,14 +25,14 @@ class ripemd160
|
||||||
static ripemd160 hash( const string& );
|
static ripemd160 hash( const string& );
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static ripemd160 hash( const T& t )
|
static ripemd160 hash( const T& t )
|
||||||
{
|
{
|
||||||
ripemd160::encoder e;
|
ripemd160::encoder e;
|
||||||
fc::raw::pack( e, t );
|
fc::raw::pack(e,t);
|
||||||
return e.result();
|
return e.result();
|
||||||
}
|
}
|
||||||
|
|
||||||
class encoder
|
class encoder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
encoder();
|
encoder();
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include <fc/fwd.hpp>
|
#include <fc/fwd.hpp>
|
||||||
#include <fc/string.hpp>
|
#include <fc/string.hpp>
|
||||||
#include <fc/platform_independence.hpp>
|
#include <fc/platform_independence.hpp>
|
||||||
|
#include <fc/io/raw_fwd.hpp>
|
||||||
|
|
||||||
namespace fc
|
namespace fc
|
||||||
{
|
{
|
||||||
|
|
@ -20,12 +21,13 @@ class sha256
|
||||||
|
|
||||||
static sha256 hash( const char* d, uint32_t dlen );
|
static sha256 hash( const char* d, uint32_t dlen );
|
||||||
static sha256 hash( const string& );
|
static sha256 hash( const string& );
|
||||||
|
static sha256 hash( const sha256& );
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static sha256 hash( const T& t )
|
static sha256 hash( const T& t )
|
||||||
{
|
{
|
||||||
sha256::encoder e;
|
sha256::encoder e;
|
||||||
e << t;
|
fc::raw::pack(e,t);
|
||||||
return e.result();
|
return e.result();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -486,6 +486,15 @@ namespace fc {
|
||||||
return tmp;
|
return tmp;
|
||||||
} FC_RETHROW_EXCEPTIONS( warn, "error unpacking ${type}", ("type",fc::get_typename<T>::name() ) ) }
|
} FC_RETHROW_EXCEPTIONS( warn, "error unpacking ${type}", ("type",fc::get_typename<T>::name() ) ) }
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
inline void unpack( const std::vector<char>& s, T& tmp )
|
||||||
|
{ try {
|
||||||
|
if( s.size() ) {
|
||||||
|
datastream<const char*> ds( s.data(), size_t(s.size()) );
|
||||||
|
raw::unpack(ds,tmp);
|
||||||
|
}
|
||||||
|
} FC_RETHROW_EXCEPTIONS( warn, "error unpacking ${type}", ("type",fc::get_typename<T>::name() ) ) }
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline void pack( char* d, uint32_t s, const T& v ) {
|
inline void pack( char* d, uint32_t s, const T& v ) {
|
||||||
datastream<char*> ds(d,s);
|
datastream<char*> ds(d,s);
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,16 @@ namespace fc {
|
||||||
e.write(d,dlen);
|
e.write(d,dlen);
|
||||||
return e.result();
|
return e.result();
|
||||||
}
|
}
|
||||||
|
|
||||||
sha256 sha256::hash( const string& s ) {
|
sha256 sha256::hash( const string& s ) {
|
||||||
return hash( s.c_str(), s.size() );
|
return hash( s.c_str(), s.size() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sha256 sha256::hash( const sha256& s )
|
||||||
|
{
|
||||||
|
return hash( s.data(), sizeof( s._hash ) );
|
||||||
|
}
|
||||||
|
|
||||||
void sha256::encoder::write( const char* d, uint32_t dlen ) {
|
void sha256::encoder::write( const char* d, uint32_t dlen ) {
|
||||||
SHA256_Update( &my->ctx, d, dlen);
|
SHA256_Update( &my->ctx, d, dlen);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue