PRCYCoin  2.0.0.7rc1
P2P Digital Currency
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
CPubKey Class Reference

An encapsulated public key. More...

#include <pubkey.h>

Public Member Functions

 CPubKey ()
 Construct an invalid public key. More...
 
template<typename T >
void Set (const T pbegin, const T pend)
 Initialize a public key using begin/end iterators to byte data. More...
 
template<typename T >
 CPubKey (const T pbegin, const T pend)
 Construct a public key using begin/end iterators to byte data. More...
 
 CPubKey (const std::vector< unsigned char > &vch)
 Construct a public key from a byte vector. More...
 
unsigned int size () const
 Simple read-only vector-like interface to the pubkey data. More...
 
const unsigned char * begin () const
 
const unsigned char * end () const
 
const unsigned char & operator[] (unsigned int pos) const
 
unsigned int GetSerializeSize (int nType, int nVersion) const
 Implement serialization, as if this was a byte vector. More...
 
template<typename Stream >
void Serialize (Stream &s, int nType, int nVersion) const
 
template<typename Stream >
void Unserialize (Stream &s, int nType, int nVersion)
 
CKeyID GetID () const
 Get the KeyID of this public key (hash of its serialization) More...
 
uint256 GetHash () const
 Get the 256-bit hash of this public key. More...
 
bool IsValid () const
 
bool IsFullyValid () const
 fully validate whether this is a valid public key (more expensive than IsValid()) More...
 
bool IsCompressed () const
 Check whether this is a compressed public key. More...
 
bool Verify (const uint256 &hash, const std::vector< unsigned char > &vchSig) const
 Verify a DER signature (~72 bytes). More...
 
bool RecoverCompact (const uint256 &hash, const std::vector< unsigned char > &vchSig)
 Recover a public key from a compact signature. More...
 
bool Decompress ()
 Turn this public key into an uncompressed public key. More...
 
bool Derive (CPubKey &pubkeyChild, unsigned char ccChild[32], unsigned int nChild, const unsigned char cc[32]) const
 Derive BIP32 child pubkey. More...
 
std::vector< unsigned char > Raw () const
 
std::string GetHex () const
 

Private Member Functions

void Invalidate ()
 Set this key data to be invalid. More...
 

Static Private Member Functions

unsigned static int GetLen (unsigned char chHeader)
 Compute the length of a pubkey with a given first byte. More...
 

Private Attributes

unsigned char vch [65]
 Just store the serialized data. More...
 

Friends

bool operator== (const CPubKey &a, const CPubKey &b)
 Comparator implementation. More...
 
bool operator!= (const CPubKey &a, const CPubKey &b)
 
bool operator< (const CPubKey &a, const CPubKey &b)
 

Detailed Description

An encapsulated public key.

Definition at line 37 of file pubkey.h.

Constructor & Destructor Documentation

◆ CPubKey() [1/3]

CPubKey::CPubKey ( )
inline

Construct an invalid public key.

Definition at line 64 of file pubkey.h.

Here is the call graph for this function:

◆ CPubKey() [2/3]

template<typename T >
CPubKey::CPubKey ( const T  pbegin,
const T  pend 
)
inline

Construct a public key using begin/end iterators to byte data.

Definition at line 82 of file pubkey.h.

Here is the call graph for this function:

◆ CPubKey() [3/3]

CPubKey::CPubKey ( const std::vector< unsigned char > &  vch)
inline

Construct a public key from a byte vector.

Definition at line 88 of file pubkey.h.

Here is the call graph for this function:

Member Function Documentation

◆ begin()

const unsigned char* CPubKey::begin ( ) const
inline

Definition at line 95 of file pubkey.h.

Here is the caller graph for this function:

◆ Decompress()

bool CPubKey::Decompress ( )

Turn this public key into an uncompressed public key.

Definition at line 69 of file pubkey.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Derive()

bool CPubKey::Derive ( CPubKey pubkeyChild,
unsigned char  ccChild[32],
unsigned int  nChild,
const unsigned char  cc[32] 
) const

Derive BIP32 child pubkey.

Definition at line 89 of file pubkey.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ end()

const unsigned char* CPubKey::end ( ) const
inline

Definition at line 96 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHash()

uint256 CPubKey::GetHash ( ) const
inline

Get the 256-bit hash of this public key.

Definition at line 149 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHex()

std::string CPubKey::GetHex ( ) const
inline

Definition at line 193 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetID()

CKeyID CPubKey::GetID ( ) const
inline

Get the KeyID of this public key (hash of its serialization)

Definition at line 143 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetLen()

unsigned static int CPubKey::GetLen ( unsigned char  chHeader)
inlinestaticprivate

Compute the length of a pubkey with a given first byte.

Definition at line 47 of file pubkey.h.

Here is the caller graph for this function:

◆ GetSerializeSize()

unsigned int CPubKey::GetSerializeSize ( int  nType,
int  nVersion 
) const
inline

Implement serialization, as if this was a byte vector.

Definition at line 116 of file pubkey.h.

Here is the call graph for this function:

◆ Invalidate()

void CPubKey::Invalidate ( )
inlineprivate

Set this key data to be invalid.

Definition at line 57 of file pubkey.h.

Here is the caller graph for this function:

◆ IsCompressed()

bool CPubKey::IsCompressed ( ) const
inline

Check whether this is a compressed public key.

Definition at line 168 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsFullyValid()

bool CPubKey::IsFullyValid ( ) const

fully validate whether this is a valid public key (more expensive than IsValid())

Definition at line 54 of file pubkey.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsValid()

bool CPubKey::IsValid ( ) const
inline

Definition at line 159 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator[]()

const unsigned char& CPubKey::operator[] ( unsigned int  pos) const
inline

Definition at line 97 of file pubkey.h.

◆ Raw()

std::vector<unsigned char> CPubKey::Raw ( ) const
inline

Definition at line 188 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RecoverCompact()

bool CPubKey::RecoverCompact ( const uint256 hash,
const std::vector< unsigned char > &  vchSig 
)

Recover a public key from a compact signature.

Definition at line 32 of file pubkey.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Serialize()

template<typename Stream >
void CPubKey::Serialize ( Stream &  s,
int  nType,
int  nVersion 
) const
inline

Definition at line 121 of file pubkey.h.

Here is the call graph for this function:

◆ Set()

template<typename T >
void CPubKey::Set ( const T  pbegin,
const T  pend 
)
inline

Initialize a public key using begin/end iterators to byte data.

Definition at line 71 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ size()

unsigned int CPubKey::size ( ) const
inline

Simple read-only vector-like interface to the pubkey data.

Definition at line 94 of file pubkey.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Unserialize()

template<typename Stream >
void CPubKey::Unserialize ( Stream &  s,
int  nType,
int  nVersion 
)
inline

Definition at line 128 of file pubkey.h.

Here is the call graph for this function:

◆ Verify()

bool CPubKey::Verify ( const uint256 hash,
const std::vector< unsigned char > &  vchSig 
) const

Verify a DER signature (~72 bytes).

If this public key is not fully valid, the return value will be false.

Definition at line 15 of file pubkey.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Friends And Related Function Documentation

◆ operator!=

bool operator!= ( const CPubKey a,
const CPubKey b 
)
friend

Definition at line 105 of file pubkey.h.

◆ operator<

bool operator< ( const CPubKey a,
const CPubKey b 
)
friend

Definition at line 109 of file pubkey.h.

◆ operator==

bool operator== ( const CPubKey a,
const CPubKey b 
)
friend

Comparator implementation.

Definition at line 100 of file pubkey.h.

Member Data Documentation

◆ vch

unsigned char CPubKey::vch[65]
private

Just store the serialized data.

Its length can very cheaply be computed from the first byte.

Definition at line 44 of file pubkey.h.


The documentation for this class was generated from the following files: