diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2014-01-25 20:05:00 +0100 |
---|---|---|
committer | Jonas Schnelli <jonas.schnelli@include7.ch> | 2015-05-02 11:17:16 +0200 |
commit | 8cf1485f3b7a976548128c0d3866747819cbea51 (patch) | |
tree | ad83b8d3a8bdaa661b825a86142ded62cb03ce0c /src/pubkey.h | |
parent | 90c37bc16c3416f133fb15b726873960e00f2262 (diff) |
Abstract chaincodes into CChainCode
# Conflicts:
# src/key.cpp
# src/key.h
Diffstat (limited to 'src/pubkey.h')
-rw-r--r-- | src/pubkey.h | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/src/pubkey.h b/src/pubkey.h index b0768d4f47..8924708835 100644 --- a/src/pubkey.h +++ b/src/pubkey.h @@ -31,6 +31,36 @@ public: CKeyID(const uint160& in) : uint160(in) {} }; +struct CChainCode +{ + unsigned char data[32]; + + void SetNull() + { + memset(data, 0, sizeof(data)); + } + + CChainCode() + { + SetNull(); + } + + bool IsNull() const + { + for (int i=0; i<32; i++) + if (data[i]) + return false; + return true; + } + + ADD_SERIALIZE_METHODS; + + template <typename Stream, typename Operation> + inline void SerializationOp(Stream& s, Operation ser_action, int nType, int nVersion) { + READWRITE(FLATDATA(data)); + } +}; + /** An encapsulated public key. */ class CPubKey { @@ -189,13 +219,13 @@ struct CExtPubKey { unsigned char nDepth; unsigned char vchFingerprint[4]; unsigned int nChild; - unsigned char vchChainCode[32]; + CChainCode chaincode; CPubKey pubkey; - friend bool operator==(const CExtPubKey& a, const CExtPubKey& b) + friend bool operator==(const CExtPubKey &a, const CExtPubKey &b) { return a.nDepth == b.nDepth && memcmp(&a.vchFingerprint[0], &b.vchFingerprint[0], 4) == 0 && a.nChild == b.nChild && - memcmp(&a.vchChainCode[0], &b.vchChainCode[0], 32) == 0 && a.pubkey == b.pubkey; + memcmp(&a.chaincode.data[0], &b.chaincode.data[0], 32) == 0 && a.pubkey == b.pubkey; } void Encode(unsigned char code[74]) const; |