/*! @file @id $Id$ */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 #ifndef __CRYPTAUX_HXX__ #define __CRYPTAUX_HXX__ #include #include #include #include #include /*! @defgroup gcrypto Auxiliary Crypto-Functions */ //@{ #define CRYPTOLOG_QUOTE(X) CRYPTOLOG_QUOTE2(X) #define CRYPTOLOG_QUOTE2(X) #X #if __GNUC__ >= 2 # define CRYPTOLOG_END " -- "<<__PRETTY_FUNCTION__< # define CRYPTOLOG(X) { \ std::string file(__FILE__); \ std::string line(CRYPTOLOG_QUOTE(__LINE__)); \ std::string::size_type pos(file.rfind('/')); \ if (pos!=std::string::npos) file=file.substr(pos+1); \ std::string spc1(18>file.size()?std::string(18-file.size(), ' ') \ :std::string()); \ std::string spc2(4>line.size()?std::string(4-line.size(), ' ') \ :std::string()); \ std::clog<<"CRYPTO: "< # define CRYPTOLOG_VERBOSE(X) { \ std::string file(__FILE__); \ std::string line(CRYPTOLOG_QUOTE(__LINE__)); \ std::string::size_type pos(file.rfind('/')); \ if (pos!=std::string::npos) file=file.substr(pos+1); \ std::string spc1(18>file.size()?std::string(18-file.size(), ' ') \ :std::string()); \ std::string spc2(4>line.size()?std::string(4-line.size(), ' ') \ :std::string()); \ std::clog<<"CRYPTO: "<?[\\]^_{|}~@"); static const std::string BLANK_CHARS (" "); static const std::string VALID_CHARS (LETTER_CHARS+NUMBER_CHARS+GRAFIC_CHARS+BLANK_CHARS); inline std::string hex(const std::string& data) { std::stringstream res; for (std::string::const_iterator it(data.begin()); it!=data.end(); ++it) res<"; else if (data.find_first_not_of(VALID_CHARS)