X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fkey.h;h=67c414e516f3ac3724c4aeecb801e90ae5f74daf;hb=5af8418fee23af1be2065382dda14a97034fdf56;hp=ca78c724e8a273c1dddc5e6e2ea051a1ca65cc87;hpb=e5e4c598dc43bb5e01b3a30aaeb2dfc9376bd7b4;p=novacoin.git diff --git a/src/key.h b/src/key.h index ca78c72..67c414e 100644 --- a/src/key.h +++ b/src/key.h @@ -191,6 +191,9 @@ public: // Initialize from octets stream bool setBytes(const std::vector &vchBytes); + // Initialize from pubkey + bool setPubKey(const CPubKey &vchPubKey); + // Serialize to octets stream bool getBytes(std::vector &vchBytes); @@ -215,9 +218,14 @@ private: 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 &pubKeyInL, const std::vector &pubKeyInH) : pubKeyL(pubKeyInL), pubKeyH(pubKeyInH) { nVersion = CMalleablePubKey::CURRENT_VERSION; } IMPLEMENT_SERIALIZE( READWRITE(this->nVersion); @@ -232,10 +240,21 @@ public: 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 Raw() const; CPubKey& GetL() { return pubKeyL; } CPubKey& GetH() { return pubKeyH; } @@ -257,7 +276,6 @@ public: CMalleableKey(); CMalleableKey(const CMalleableKey &b); CMalleableKey(const CSecret &L, const CSecret &H); - CMalleableKey& operator=(const CMalleableKey &b); ~CMalleableKey(); IMPLEMENT_SERIALIZE( @@ -267,18 +285,31 @@ public: READWRITE(vchSecretH); ) - std::string ToString(); + std::string ToString() const; bool SetString(const std::string& strMalleablePubKey); + std::vector Raw() const; + CMalleableKey& operator=(const CMalleableKey& mk) { + nVersion = mk.nVersion; + vchSecretL = mk.vchSecretL; + vchSecretH = mk.vchSecretH; + return *this; + } void Reset(); void MakeNewKeys(); bool IsNull() const; + bool IsValid() const { return !IsNull() && GetMalleablePubKey().IsValid(); } bool SetSecrets(const CSecret &pvchSecretL, const CSecret &pvchSecretH); - void GetSecrets(CSecret &pvchSecretL, CSecret &pvchSecretH) const; + CSecret GetSecretL() const { return vchSecretL; } + CSecret GetSecretH() const { return vchSecretH; } + + 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 @@ -286,20 +317,18 @@ class CMalleableKeyView private: unsigned char nVersion; CSecret vchSecretL; - std::vector vchPubKeyH; + 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(const CMalleableKeyView &b); CMalleableKeyView& operator=(const CMalleableKey &b); ~CMalleableKeyView(); - IMPLEMENT_SERIALIZE( READWRITE(this->nVersion); nVersion = this->nVersion; @@ -308,11 +337,25 @@ public: ) bool IsNull() const; - std::string ToString(); + bool IsValid() const { return !IsNull() && GetMalleablePubKey().IsValid(); } + std::string ToString() const; bool SetString(const std::string& strMalleablePubKey); + std::vector 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); + CMalleableKey GetMalleableKey(const CSecret &vchSecretH) const { return CMalleableKey(vchSecretL, vchSecretH); } + bool CheckKeyVariant(const CPubKey &R, const CPubKey &vchPubKeyVariant) const; + + bool operator <(const CMalleableKeyView& kv) const { return vchPubKeyH.GetID() < kv.vchPubKeyH.GetID(); } }; #endif