#include #include #include #include #include #include #include #include #include #include "eyetil.h" #include "config.h" #ifdef HAVE_LIBUUID # include #endif binary_t& binary_t::from_hex(const std::string& h) { std::string::size_type hs = h.length(); if(hs&1) throw std::runtime_error("odd number of characters in hexadecimal number"); int rvs = hs>>1; resize(rvs); const unsigned char *hp = (const unsigned char*)h.data(); iterator oi=begin(); char t[3] = { 0,0,0 }; for(int i=0;i>16) sum = (sum&0xffff)+hw; return ~sum; } }; #pragma pack() binary_t integrity_digest(const void *ptr,size_t size,const std::string& ukey) { md5_digester rv; std::transform( (block512_t*)ptr, ((block512_t*)ptr)+size/sizeof(block512_t), rv.updater(), block512_t::tcpcksum ); rv.update( binary_t(ukey) ); return rv.final(); }