//------------------------------------------------------------------------------ /* Copyright (c) 2011-2013, OpenCoin, Inc. */ //============================================================================== // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2011 The Bitcoin Developers // Distributed under the MIT/X11 software license, see the accompanying // file license.txt or http://www.opensource.org/licenses/mit-license.php. // // Why base-58 instead of standard base-64 encoding? // - Don't want 0OIl characters that look the same in some fonts and // could be used to create visually identical looking account numbers. // - A string with non-alphanumeric characters is not as easily accepted as an account number. // - E-mail usually won't line-break if there's no punctuation to break at. // - Doubleclicking selects the whole number as one word if it's all alphanumeric. // #ifndef RIPPLE_BASE58_H #define RIPPLE_BASE58_H /** Performs Base 58 encoding and decoding. */ class Base58 { public: // VFALCO TODO clean up this poor API static char const* getCurrentAlphabet (); static void setCurrentAlphabet (char const* alphabet); static char const* getBitcoinAlphabet (); static char const* getRippleAlphabet (); static char const* getTestnetAlphabet (); static std::string encode (const unsigned char* pbegin, const unsigned char* pend); static std::string encode (Blob const& vch); static std::string encodeWithCheck (Blob const& vchIn); static bool decode (const char* psz, Blob& vchRet, const char* pAlphabet = getCurrentAlphabet ()); static bool decode (const std::string& str, Blob& vchRet); static bool decodeWithCheck (const char* psz, Blob& vchRet, const char* pAlphabet = getCurrentAlphabet ()); static bool decodeWithCheck (const std::string& str, Blob& vchRet, const char* pAlphabet); private: static char const* s_currentAlphabet; }; #endif // vim:ts=4