diff --git a/src/pubkey.h b/src/pubkey.h index 15583f0df7..0a6ee943e9 100644 --- a/src/pubkey.h +++ b/src/pubkey.h @@ -217,6 +217,12 @@ class XOnlyPubKey uint256 m_keydata; public: + /** Construct an empty x-only pubkey. */ + XOnlyPubKey() = default; + + XOnlyPubKey(const XOnlyPubKey&) = default; + XOnlyPubKey& operator=(const XOnlyPubKey&) = default; + /** Construct an x-only pubkey from exactly 32 bytes. */ XOnlyPubKey(Span bytes); @@ -229,7 +235,14 @@ class XOnlyPubKey const unsigned char& operator[](int pos) const { return *(m_keydata.begin() + pos); } const unsigned char* data() const { return m_keydata.begin(); } - size_t size() const { return m_keydata.size(); } + static constexpr size_t size() { return decltype(m_keydata)::size(); } + const unsigned char* begin() const { return m_keydata.begin(); } + const unsigned char* end() const { return m_keydata.end(); } + unsigned char* begin() { return m_keydata.begin(); } + unsigned char* end() { return m_keydata.end(); } + bool operator==(const XOnlyPubKey& other) const { return m_keydata == other.m_keydata; } + bool operator!=(const XOnlyPubKey& other) const { return m_keydata != other.m_keydata; } + bool operator<(const XOnlyPubKey& other) const { return m_keydata < other.m_keydata; } }; struct CExtPubKey { diff --git a/src/uint256.h b/src/uint256.h index ff52c36bf7..16b156f097 100644 --- a/src/uint256.h +++ b/src/uint256.h @@ -76,7 +76,7 @@ class base_blob return &m_data[WIDTH]; } - unsigned int size() const + static constexpr unsigned int size() { return sizeof(m_data); }