31 namespace graphene {
namespace protocol {
38 std::vector<char> v =
fc::from_base58( base58str.substr( prefix.size() ) );
39 memcpy( (
char*)
addr.
_hash, v.data(), std::min<size_t>( v.size()-4,
sizeof(
addr ) ) );
44 const size_t prefix_len = prefix.size();
45 if( base58str.size() <= prefix_len )
47 if( base58str.substr( 0, prefix_len ) != prefix )
54 catch(
const fc::parse_error_exception& e )
63 if( memcmp( v.data() + 20, (
char*)checksum.
_hash, 4 ) != 0 )
90 address::operator std::string()
const 93 static_assert(
sizeof(bin_addr) >=
sizeof(
addr) + 4,
"address size mismatch" );
96 memcpy( bin_addr +
sizeof(
addr), (
char*)&checksum._hash[0], 4 );
106 vo = std::string(var);
boost::endian::little_uint32_buf_t _hash[5]
std::string to_base58(const char *d, size_t s)
public_key_data serialize() const
static ripemd160 hash(const fc::sha512 &h)
#define GRAPHENE_ADDRESS_PREFIX
static sha512 hash(const char *d, uint32_t dlen)
static bool is_valid(const std::string &base58str, const std::string &prefix=GRAPHENE_ADDRESS_PREFIX)
void from_variant(const variant &var, graphene::protocol::address &vo, uint32_t max_depth)
fc::ecc::public_key_data key_data
contains only the public point of an elliptic curve key.
#define FC_ASSERT(TEST,...)
Checks a condition and throws an assert_exception if the test is FALSE.
stores null, int64, uint64, double, bool, string, std::vector<variant>, and variant_object's.
#define GRAPHENE_IMPLEMENT_EXTERNAL_SERIALIZATION(type)
std::vector< char > from_base58(const std::string &base58_str)
a 160 bit hash of a public key
void to_variant(const graphene::protocol::address &var, variant &vo, uint32_t max_depth)
address()
constructs empty / null address
std::string as_string() const