static uint16_t udp_checksum(struct ip *iphdr, struct udphdr *udphdr) { uint32_t sum = 0; uint16_t res; sum = raw_checksum((uint8_t *)&iphdr->ip_src, 2 * sizeof(iphdr->ip_src), IPPROTO_UDP + (uint32_t)(UDP_HLEN + payload_len)); sum = raw_checksum((uint8_t *)udphdr, UDP_HLEN, sum); sum = raw_checksum((uint8_t *)udp_payload, payload_len, sum); res = 0xffff & ~sum; if (res) return htons(res); else return CSUM_MANGLED_0; }
char *SQLite3_result::checksum() { uint64_t hash1=raw_checksum(); char buf[128]; uint32_t d32[2]; memcpy(&d32,&hash1,sizeof(hash1)); sprintf(buf,"0x%X%X", d32[0], d32[1]); return strdup(buf); }
uint64_t addr_key_checksum(const output_point& outpoint) { data_chunk checksum_data(hash_digest_size + 4); auto serial = make_serializer(checksum_data.begin()); serial.write_hash(outpoint.hash); serial.write_4_bytes(outpoint.index); BITCOIN_ASSERT(serial.iterator() == checksum_data.end()); hash_digest hash = generate_sha256_hash(checksum_data); data_chunk raw_checksum(hash.begin(), hash.begin() + 8); return cast_chunk<uint64_t>(raw_checksum); }