Exemplo n.º 1
0
long_hash hmac_sha512_hash(const data_chunk& chunk, 
    const data_chunk& key)
{
    long_hash hash;
    HMACSHA512(chunk.data(), chunk.size(), key.data(),
        key.size(), hash.data());
    return hash;
}
Exemplo n.º 2
0
hash_digest sha256_hash(const data_chunk& first_chunk,
    const data_chunk& second_chunk)
{
    hash_digest hash;

    SHA256CTX context;
    SHA256Init(&context);
    SHA256Update(&context, first_chunk.data(), first_chunk.size());
    SHA256Update(&context, second_chunk.data(), second_chunk.size());
    SHA256Final(&context, hash.data());

    return hash;
}
Exemplo n.º 3
0
long_hash single_sha512_hash(const data_chunk& chunk)
{
    long_hash digest;
    SHA512_CTX ctx;
    SHA512_Init(&ctx);
    SHA512_Update(&ctx, chunk.data(), chunk.size());
    SHA512_Final(digest.data(), &ctx);
    return digest;
}
Exemplo n.º 4
0
short_hash bitcoin_short_hash(const data_chunk& chunk)
{
    hash_digest sha_hash;
    SHA256__(chunk.data(), chunk.size(), sha_hash.data());

    short_hash ripemd_hash;
    RMD160(sha_hash.data(), sha_hash.size(), ripemd_hash.data());

    return ripemd_hash;
}
		bool elliptic_curve_key::verify(hash_digest hash, const data_chunk& signature)
		{
			BITCOIN_ASSERT(key_ != nullptr);
			// SSL likes a reversed hash
			std::reverse(hash.begin(), hash.end());
			// -1 = error, 0 = bad sig, 1 = good
			if (ECDSA_verify(0, hash.data(), hash.size(),
				signature.data(), signature.size(), key_) == 1)
				return true;
			return false;
		}
		bool elliptic_curve_key::set_public_key(const data_chunk& pubkey)
		{
			if (!initialize())
				return false;
			const unsigned char* pubkey_bytes = pubkey.data();
			if (!o2i_ECPublicKey(&key_, &pubkey_bytes, pubkey.size()))
				return false;
			if (pubkey.size() == 33)
				use_compressed();
			return true;
		}
Exemplo n.º 7
0
bool verify_signature(const ec_point& public_key, hash_digest hash,
    const data_chunk& signature)
{
    std::reverse(hash.begin(), hash.end());
    init.init();
    return 1 == secp256k1_ecdsa_verify(
        hash.data(), hash.size(),
        signature.data(), signature.size(),
        public_key.data(), public_key.size()
    );
}
Exemplo n.º 8
0
hash_digest bitcoin_hash(const data_chunk& chunk)
{
    hash_digest first_hash;
    SHA256__(chunk.data(), chunk.size(), first_hash.data());

    hash_digest second_hash;
    SHA256__(first_hash.data(), first_hash.size(), second_hash.data());

    // The hash is in the reverse of the expected order.
    std::reverse(second_hash.begin(), second_hash.end());
    return second_hash;
}
Exemplo n.º 9
0
long_hash sha512_hash(const data_chunk& chunk)
{
    long_hash hash;
    SHA512__(chunk.data(), chunk.size(), hash.data());
    return hash;
}
Exemplo n.º 10
0
hash_digest sha256_hash(const data_chunk& chunk)
{
    hash_digest hash;
    SHA256__(chunk.data(), chunk.size(), hash.data());
    return hash;
}
Exemplo n.º 11
0
short_hash sha1_hash(const data_chunk& chunk)
{
    short_hash hash;
    SHA1(chunk.data(), chunk.size(), hash.data());
    return hash;
}
Exemplo n.º 12
0
short_hash ripemd160_hash(const data_chunk& chunk)
{
    short_hash hash;
    RMD160(chunk.data(), chunk.size(), hash.data());
    return hash;
}