void test_bitcoin_hash() { const char data[] = "cea946542b91ca50e2afecba73cf546ce1383d82668ecb6265f79ffaa07daa49abb43e21a19c6b2b15c8882b4bc01085a8a5b00168139dcb8f4b2bbe22929ce196d43532898d98a3b0ea4d63112ba25e724bb50711e3cf55954cf30b4503b73d785253104c2df8c19b5b63e92bd6b1ff2573751ec9c508085f3f206c719aa4643776bf425344348cbf63f1450389"; const char expected[] = "52aa8dd6c598d91d580cc446624909e52a076064ffab67a1751f5758c9f76d26"; uint8_t* digest_expected; digest_expected = utils_hex_to_uint8(expected); uint8_t hashout[32]; btc_hash((const unsigned char *)data, strlen(data), hashout); assert(memcmp(hashout, digest_expected, 32) == 0); }
btc_bool btc_privkey_verify_pubkey(btc_key* privkey, btc_pubkey* pubkey) { uint256 rnddata, hash; assert(btc_random_bytes(rnddata, BTC_HASH_LENGTH, 0)); btc_hash(rnddata, BTC_HASH_LENGTH, hash); unsigned char sig[74]; size_t siglen = 74; if (!btc_key_sign_hash(privkey, hash, sig, &siglen)) return false; return btc_pubkey_verify_sig(pubkey, hash, sig, siglen); }
const std::string DBBComServer::getAESKeyBase58() { std::string aesKeyBase58; aesKeyBase58.resize(100); uint8_t hash[33]; hash[0] = AES_KEY_BASE57_PREFIX; assert(encryptionKey.size() > 0); std::string base64dec = base64_encode(&encryptionKey[0], encryptionKey.size()); return base64dec; hmac_sha256((const uint8_t *)aesKeyHMAC_Key, strlen(aesKeyHMAC_Key), &encryptionKey[0], encryptionKey.size(), hash); btc_hash(&encryptionKey[0], encryptionKey.size(), hash); int sizeOut = btc_base58_encode_check(hash, 33, &aesKeyBase58[0], aesKeyBase58.size()); aesKeyBase58.resize(sizeOut-1); return aesKeyBase58; }