X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fbase58.h;h=0ca0fda7da37646e00c6c4d5203a8e1d4b741784;hb=HEAD;hp=b8a0e45530bcdbefe1ee313abc0df29b61203579;hpb=3b3a4cb430cf5a7e3665faeaec0ae882b0650336;p=novacoin.git diff --git a/src/base58.h b/src/base58.h index b8a0e45..ba1572b 100644 --- a/src/base58.h +++ b/src/base58.h @@ -15,13 +15,14 @@ #ifndef BITCOIN_BASE58_H #define BITCOIN_BASE58_H -#include -#include -#include // for OPENSSL_cleanse() -#include "bignum.h" #include "key.h" #include "script.h" +#include // for OPENSSL_cleanse() + +#include +#include + // Encode a byte sequence as a base58-encoded string std::string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend); @@ -67,6 +68,7 @@ public: bool SetString(const char* psz); bool SetString(const std::string& str); std::string ToString() const; + const std::vector &GetData() const; int CompareTo(const CBase58Data& b58) const; bool operator==(const CBase58Data& b58) const { return CompareTo(b58) == 0; } @@ -81,26 +83,17 @@ public: * The data vector contains RIPEMD160(SHA256(pubkey)), where pubkey is the serialized public key. * Script-hash-addresses have version 5 (or 196 testnet). * The data vector contains RIPEMD160(SHA256(cscript)), where cscript is the serialized redemption script. + * Pubkey-pair-addresses have version 1 (or 6 testnet) + * The data vector contains a serialized copy of two compressed ECDSA secp256k1 public keys. */ -class CBitcoinAddress; -class CBitcoinAddressVisitor : public boost::static_visitor -{ -private: - CBitcoinAddress *addr; -public: - CBitcoinAddressVisitor(CBitcoinAddress *addrIn) : addr(addrIn) { } - bool operator()(const CKeyID &id) const; - bool operator()(const CScriptID &id) const; - bool operator()(const CNoDestination &no) const; -}; - -class CBitcoinAddress : public CBase58Data -{ +class CBitcoinAddress : public CBase58Data { public: enum { + PUBKEY_PAIR_ADDRESS = 1, PUBKEY_ADDRESS = 8, SCRIPT_ADDRESS = 20, + PUBKEY_PAIR_ADDRESS_TEST = 6, PUBKEY_ADDRESS_TEST = 111, SCRIPT_ADDRESS_TEST = 196 }; @@ -108,52 +101,34 @@ public: bool Set(const CKeyID &id); bool Set(const CScriptID &id); bool Set(const CTxDestination &dest); + bool Set(const CMalleablePubKey &mpk); + bool Set(const CBitcoinAddress &dest); bool IsValid() const; - CBitcoinAddress() - { - } - - CBitcoinAddress(const CTxDestination &dest) - { - Set(dest); - } - - CBitcoinAddress(const std::string& strAddress) - { - SetString(strAddress); - } - - CBitcoinAddress(const char* pszAddress) - { - SetString(pszAddress); - } + CBitcoinAddress() {} + CBitcoinAddress(const CTxDestination &dest) { Set(dest); } + CBitcoinAddress(const CMalleablePubKey &mpk) { Set(mpk); } + CBitcoinAddress(const std::string& strAddress) { SetString(strAddress); } + CBitcoinAddress(const char* pszAddress) { SetString(pszAddress); } CTxDestination Get() const; bool GetKeyID(CKeyID &keyID) const; bool IsScript() const; + bool IsPubKey() const; + bool IsPair() const; }; -bool inline CBitcoinAddressVisitor::operator()(const CKeyID &id) const { return addr->Set(id); } -bool inline CBitcoinAddressVisitor::operator()(const CScriptID &id) const { return addr->Set(id); } -bool inline CBitcoinAddressVisitor::operator()(const CNoDestination &id) const { return false; } - /** A base58-encoded secret key */ -class CBitcoinSecret : public CBase58Data -{ +class CBitcoinSecret : public CBase58Data { public: void SetSecret(const CSecret& vchSecret, bool fCompressed); CSecret GetSecret(bool &fCompressedOut); - bool IsValid() const; - bool SetString(const char* pszSecret); bool SetString(const std::string& strSecret); CBitcoinSecret(const CSecret& vchSecret, bool fCompressed); - CBitcoinSecret() - { - } + CBitcoinSecret() {} }; #endif