aboutsummaryrefslogtreecommitdiff
path: root/src/pubkey.h
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2014-01-25 20:05:00 +0100
committerJonas Schnelli <jonas.schnelli@include7.ch>2015-05-02 11:17:16 +0200
commit8cf1485f3b7a976548128c0d3866747819cbea51 (patch)
treead83b8d3a8bdaa661b825a86142ded62cb03ce0c /src/pubkey.h
parent90c37bc16c3416f133fb15b726873960e00f2262 (diff)
downloadbitcoin-8cf1485f3b7a976548128c0d3866747819cbea51.tar.xz
Abstract chaincodes into CChainCode
# Conflicts: # src/key.cpp # src/key.h
Diffstat (limited to 'src/pubkey.h')
-rw-r--r--src/pubkey.h36
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;