// Initialize from octets stream
bool setBytes(const std::vector<unsigned char> &vchBytes);
+ // Initialize from pubkey
+ bool setPubKey(const CPubKey &vchPubKey);
+
// Serialize to octets stream
bool getBytes(std::vector<unsigned char> &vchBytes);
public:
CMalleablePubKey() { nVersion = CMalleablePubKey::CURRENT_VERSION; }
+ CMalleablePubKey(const CMalleablePubKey& mpk)
+ {
+ nVersion = mpk.nVersion;
+ pubKeyL = mpk.pubKeyL;
+ pubKeyH = mpk.pubKeyH;
+ }
CMalleablePubKey(const std::string& strMalleablePubKey) { SetString(strMalleablePubKey); }
CMalleablePubKey(const CPubKey &pubKeyInL, const CPubKey &pubKeyInH) : pubKeyL(pubKeyInL), pubKeyH(pubKeyInH) { nVersion = CMalleablePubKey::CURRENT_VERSION; }
CMalleablePubKey(const std::vector<unsigned char> &pubKeyInL, const std::vector<unsigned char> &pubKeyInH) : pubKeyL(pubKeyInL), pubKeyH(pubKeyInH) { nVersion = CMalleablePubKey::CURRENT_VERSION; }
bool operator==(const CMalleablePubKey &b);
bool operator!=(const CMalleablePubKey &b) { return !(*this == b); }
+ CMalleablePubKey& operator=(const CMalleablePubKey& mpk) {
+ nVersion = mpk.nVersion;
+ pubKeyL = mpk.pubKeyL;
+ pubKeyH = mpk.pubKeyH;
+ return *this;
+ }
- std::string ToString();
+ std::string ToString() const;
bool SetString(const std::string& strMalleablePubKey);
- uint256 GetID() const;
+
+ CKeyID GetID() const {
+ return pubKeyL.GetID();
+ }
+
+ std::vector<unsigned char> Raw() const;
CPubKey& GetL() { return pubKeyL; }
CPubKey& GetH() { return pubKeyH; }
CMalleableKey();
CMalleableKey(const CMalleableKey &b);
CMalleableKey(const CSecret &L, const CSecret &H);
- CMalleableKey& operator=(const CMalleableKey &b);
~CMalleableKey();
IMPLEMENT_SERIALIZE(
READWRITE(vchSecretH);
)
- std::string ToString();
+ std::string ToString() const;
bool SetString(const std::string& strMalleablePubKey);
+ std::vector<unsigned char> Raw() const;
+ CMalleableKey& operator=(const CMalleableKey& mk) {
+ nVersion = mk.nVersion;
+ vchSecretL = mk.vchSecretL;
+ vchSecretH = mk.vchSecretH;
+ return *this;
+ }
void Reset();
void MakeNewKeys();
bool SetSecrets(const CSecret &pvchSecretL, const CSecret &pvchSecretH);
void GetSecrets(CSecret &pvchSecretL, CSecret &pvchSecretH) const;
+ CKeyID GetID() const {
+ return GetMalleablePubKey().GetID();
+ }
CMalleablePubKey GetMalleablePubKey() const;
-
- bool CheckKeyVariant(const CPubKey &R, const CPubKey &vchPubKeyVariant);
- bool CheckKeyVariant(const CPubKey &R, const CPubKey &vchPubKeyVariant, CKey &privKeyVariant);
+ bool CheckKeyVariant(const CPubKey &R, const CPubKey &vchPubKeyVariant) const;
+ bool CheckKeyVariant(const CPubKey &R, const CPubKey &vchPubKeyVariant, CKey &privKeyVariant) const;
};
class CMalleableKeyView
{
private:
+ unsigned char nVersion;
CSecret vchSecretL;
- std::vector<unsigned char> vchPubKeyH;
-
- // disabled constructor
- CMalleableKeyView() { };
+ CPubKey vchPubKeyH;
static const unsigned char CURRENT_VERSION = 1;
public:
+ CMalleableKeyView() { nVersion = 0; };
CMalleableKeyView(const CMalleableKey &b);
CMalleableKeyView(const CSecret &L, const CPubKey &pvchPubKeyH);
CMalleableKeyView& operator=(const CMalleableKey &b);
~CMalleableKeyView();
+
+ IMPLEMENT_SERIALIZE(
+ READWRITE(this->nVersion);
+ nVersion = this->nVersion;
+ READWRITE(vchSecretL);
+ READWRITE(vchPubKeyH);
+ )
+
+ bool IsNull() const;
+ std::string ToString() const;
+ bool SetString(const std::string& strMalleablePubKey);
+ std::vector<unsigned char> Raw() const;
+ CMalleableKeyView& operator=(const CMalleableKeyView& mkv) {
+ nVersion = mkv.nVersion;
+ vchSecretL = mkv.vchSecretL;
+ vchPubKeyH = mkv.vchPubKeyH;
+ return *this;
+ }
+
+ CKeyID GetID() const {
+ return GetMalleablePubKey().GetID();
+ }
CMalleablePubKey GetMalleablePubKey() const;
+ bool CheckKeyVariant(const CPubKey &R, const CPubKey &vchPubKeyVariant) const;
- bool CheckKeyVariant(const CPubKey &R, const CPubKey &vchPubKeyVariant);
+ bool operator <(const CMalleableKeyView& kv) const { return vchPubKeyH.GetID() < kv.vchPubKeyH.GetID(); }
};
#endif