Boost logo

Boost :

From: Chris Fairles (chris.fairles_at_[hidden])
Date: 2007-10-30 07:38:07


Just picked up the crypto lib from the vault (at least the sha1 and
md5 parts). There was one issue with the to_string() member function
of message_digest. It uses snprintf which isn't readily available in
MSVC (vs 2005 at least) so I rewrote it using some bit twiddling:

template<class Context>
std::string message_digest<Context>::to_string() const
{
  static const char hex_digit[] =
{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  char buf[context_type::digest_length * 2];

  for (int i = 0; i < context_type::digest_length; ++i) {
        buf[2*i] = hex_digit[((static_cast<const unsigned
char*>(digest())[i])&0xf0)>>4];
        buf[2*i+1] = hex_digit[((static_cast<const unsigned
char*>(digest())[i])&0x0f)];
  }
  return std::string(buf, context_type::digest_length * 2);
}

This works at least for both vs 2005 and gcc 4.1.1, ymmv

Chris


Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk