if (!vchData.empty())
memcpy(&vchData[0], pdata, nSize);
}
+
+ const std::vector<unsigned char> &CBase58Data::GetData() const
+ {
+ return vchData;
+ }
void CBase58Data::SetData(int nVersionIn, const unsigned char *pbegin, const unsigned char *pend)
{
return boost::apply_visitor(CBitcoinAddressVisitor(this), dest);
}
+ bool CBitcoinAddress::Set(const CMalleablePubKey &mpk) {
+ std::vector<unsigned char> vchPubkeyPair = mpk.Raw();
+ SetData(fTestNet ? PUBKEY_PAIR_ADDRESS_TEST : PUBKEY_PAIR_ADDRESS, &vchPubkeyPair[0], 68);
+ return true;
+ }
+
bool CBitcoinAddress::IsValid() const
{
unsigned int nExpectedSize = 20;
bool fExpectTestNet = false;
switch(nVersion)
{
+ case PUBKEY_PAIR_ADDRESS:
+ nExpectedSize = 68; // Serialized pair of public keys
+ fExpectTestNet = false;
+ break;
case PUBKEY_ADDRESS:
nExpectedSize = 20; // Hash of public key
fExpectTestNet = false;
fExpectTestNet = false;
break;
+ case PUBKEY_PAIR_ADDRESS_TEST:
+ nExpectedSize = 68;
+ fExpectTestNet = true;
+ break;
case PUBKEY_ADDRESS_TEST:
nExpectedSize = 20;
fExpectTestNet = true;
keyID = CKeyID(id);
return true;
}
+ case PUBKEY_PAIR_ADDRESS:
+ case PUBKEY_PAIR_ADDRESS_TEST:
+ {
+ CMalleablePubKey mPubKey;
+ mPubKey.setvch(vchData);
+ keyID = mPubKey.GetID();
+ }
default: return false;
}
}
default: return false;
}
}
+
+ bool CBitcoinAddress::IsPair() const {
+ if (!IsValid())
+ return false;
+ switch (nVersion) {
+ case PUBKEY_PAIR_ADDRESS:
+ case PUBKEY_PAIR_ADDRESS_TEST: {
+ return true;
+ }
+ default: return false;
+ }
+ }
void CBitcoinSecret::SetSecret(const CSecret& vchSecret, bool fCompressed)
{