X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fbase58.h;h=71168cfaca1264fd2406098a089479ac2f97e133;hb=882164196e5b1971313493f95a6d027f05e2ec92;hp=ef6493d45b521e764640c9ae43246c62b6005b0b;hpb=ce336fdc21c25c055ffef28fbe7c61164df7ca24;p=novacoin.git diff --git a/src/base58.h b/src/base58.h index ef6493d..71168cf 100644 --- a/src/base58.h +++ b/src/base58.h @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2011 The Bitcoin Developers +// Copyright (c) 2009-2012 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. @@ -255,7 +255,7 @@ public: // base58-encoded bitcoin addresses // Public-key-hash-addresses have version 0 (or 192 testnet) // The data vector contains RIPEMD160(SHA256(pubkey)), where pubkey is the serialized public key -// Script-hash-addresses (OP_EVAL) have version 5 (or 196 testnet) +// Script-hash-addresses have version 5 (or 196 testnet) // The data vector contains RIPEMD160(SHA256(cscript)), where cscript is the serialized redemption script class CBitcoinAddress : public CBase58Data { @@ -296,7 +296,7 @@ public: fExpectTestNet = false; break; case SCRIPT_ADDRESS: - nExpectedSize = 20; // OP_EVAL, hash of CScript + nExpectedSize = 20; // Hash of CScript fExpectTestNet = false; break; @@ -359,22 +359,25 @@ public: class CBitcoinSecret : public CBase58Data { public: - void SetSecret(const CSecret& vchSecret) - { + void SetSecret(const CSecret& vchSecret, bool fCompressed) + { + assert(vchSecret.size() == 32); SetData(fTestNet ? 239 : 128, &vchSecret[0], vchSecret.size()); + if (fCompressed) + vchData.push_back(1); } - CSecret GetSecret() + CSecret GetSecret(bool &fCompressedOut) { CSecret vchSecret; - vchSecret.resize(vchData.size()); - memcpy(&vchSecret[0], &vchData[0], vchData.size()); + vchSecret.resize(32); + memcpy(&vchSecret[0], &vchData[0], 32); + fCompressedOut = vchData.size() == 33; return vchSecret; } bool IsValid() const { - int nExpectedSize = 32; bool fExpectTestNet = false; switch(nVersion) { @@ -388,12 +391,12 @@ public: default: return false; } - return fExpectTestNet == fTestNet && vchData.size() == nExpectedSize; + return fExpectTestNet == fTestNet && (vchData.size() == 32 || (vchData.size() == 33 && vchData[32] == 1)); } - CBitcoinSecret(const CSecret& vchSecret) + CBitcoinSecret(const CSecret& vchSecret, bool fCompressed) { - SetSecret(vchSecret); + SetSecret(vchSecret, fCompressed); } CBitcoinSecret()