6 #ifndef FABCOIN_PUBKEY_H 7 #define FABCOIN_PUBKEY_H 47 unsigned char vch[65];
50 unsigned int static GetLen(
unsigned char chHeader)
52 if (chHeader == 2 || chHeader == 3)
54 if (chHeader == 4 || chHeader == 6 || chHeader == 7)
74 void Set(
const T pbegin,
const T pend)
76 int len = pend == pbegin ? 0 : GetLen(pbegin[0]);
77 if (len && len == (pend - pbegin))
78 memcpy(vch, (
unsigned char*)&pbegin[0], len);
91 CPubKey(
const std::vector<unsigned char>& _vch)
93 Set(_vch.begin(), _vch.end());
97 unsigned int size()
const {
return GetLen(vch[0]); }
98 const unsigned char*
begin()
const {
return vch; }
99 const unsigned char*
end()
const {
return vch +
size(); }
100 const unsigned char&
operator[](
unsigned int pos)
const {
return vch[pos]; }
101 std::vector<unsigned char>
getvch()
const 103 return std::vector<unsigned char>(
begin(),
end());
109 return a.
vch[0] == b.
vch[0] &&
118 return a.
vch[0] < b.
vch[0] ||
123 template <
typename Stream>
126 unsigned int len =
size();
128 s.write((
char*)vch, len);
130 template <
typename Stream>
135 s.read((
char*)vch, len);
168 bool IsFullyValid()
const;
180 bool Verify(
const uint256& hash,
const std::vector<unsigned char>& vchSig)
const;
185 static bool CheckLowS(
const std::vector<unsigned char>& vchSig);
188 bool RecoverCompact(
const uint256& hash,
const std::vector<unsigned char>& vchSig);
199 unsigned char vchFingerprint[4];
214 void Decode(
const unsigned char code[BIP32_EXTKEY_SIZE]);
215 bool Derive(
CExtPubKey& out,
unsigned int nChild)
const;
220 s.
seek(BIP32_EXTKEY_SIZE + 1);
222 template <
typename Stream>
229 s.write((
const char *)&code[0], len);
231 template <
typename Stream>
236 if (len != BIP32_EXTKEY_SIZE)
237 throw std::runtime_error(
"Invalid extended key size\n");
238 s.read((
char *)&code[0], len);
254 #endif // FABCOIN_PUBKEY_H void Serialize(Stream &s) const
unsigned char vchFingerprint[4]
unsigned static int GetLen(unsigned char chHeader)
Compute the length of a pubkey with a given first byte.
friend bool operator<(const CPubKey &a, const CPubKey &b)
uint64_t ReadCompactSize(Stream &is)
void WriteCompactSize(CSizeComputer &os, uint64_t nSize)
CKeyID(const uint160 &in)
void Invalidate()
Set this key data to be invalid.
unsigned int size() const
Simple read-only vector-like interface to the pubkey data.
void Set(const T pbegin, const T pend)
Initialize a public key using begin/end iterators to byte data.
void Unserialize(Stream &s)
uint160 Hash160(const T1 pbegin, const T1 pend)
Compute the 160-bit hash an object.
friend bool operator==(const CPubKey &a, const CPubKey &b)
Comparator implementation.
std::vector< unsigned char > getvch() const
void Unserialize(Stream &s)
Users of this module must hold an ECCVerifyHandle.
friend bool operator==(const CExtPubKey &a, const CExtPubKey &b)
void Serialize(Stream &s) const
Implement serialization, as if this was a byte vector.
CPubKey()
Construct an invalid public key.
An encapsulated public key.
const unsigned char & operator[](unsigned int pos) const
uint256 GetHash() const
Get the 256-bit hash of this public key.
uint256 Hash(const T1 pbegin, const T1 pend)
Compute the 256-bit hash of an object.
unsigned char vch[65]
Just store the serialized data.
const unsigned char * begin() const
CPubKey(const std::vector< unsigned char > &_vch)
Construct a public key from a byte vector.
bool IsCompressed() const
Check whether this is a compressed public key.
void seek(size_t _nSize)
Pretend _nSize bytes are written, without specifying them.
void * memcpy(void *a, const void *b, size_t c)
const unsigned int BIP32_EXTKEY_SIZE
secp256k1: const unsigned int PRIVATE_KEY_SIZE = 279; const unsigned int PUBLIC_KEY_SIZE = 65; const ...
CPubKey(const T pbegin, const T pend)
Construct a public key using begin/end iterators to byte data.
A reference to a CKey: the Hash160 of its serialized public key.
CKeyID GetID() const
Get the KeyID of this public key (hash of its serialization)
friend bool operator!=(const CPubKey &a, const CPubKey &b)
const unsigned char * end() const
unsigned int size() const
void Serialize(CSizeComputer &s) const