PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PSSLCertificate Class Reference

Certificate for SSL. More...

#include <pssl.h>

Inheritance diagram for PSSLCertificate:
Collaboration diagram for PSSLCertificate:

Classes

class  X509_Name
 

Public Types

typedef std::list< x509_st * > X509_Chain
 
- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 

Public Member Functions

 PSSLCertificate ()
 Create an empty certificate. More...
 
 PSSLCertificate (const PFilePath &certFile, PSSLFileTypes fileType=PSSLFileTypeDEFAULT)
 Create a new certificate given the file. More...
 
 PSSLCertificate (const BYTE *certData, PINDEX certSize)
 Create certificate from the binary ASN1 DER encoded data specified. More...
 
 PSSLCertificate (const PBYTEArray &certData)
 Create certificate from the binary ASN1 DER encoded data specified. More...
 
 PSSLCertificate (const PString &certString)
 Create certificate from the ASN1 DER base64 encoded data specified. More...
 
 PSSLCertificate (const PSSLCertificate &cert)
 Create a copy of the certificate. More...
 
 PSSLCertificate (x509_st *cert, bool duplicate=true)
 
PSSLCertificateoperator= (const PSSLCertificate &cert)
 Create a copy of the certificate. More...
 
PSSLCertificateoperator= (x509_st *cert)
 
 ~PSSLCertificate ()
 Destroy and release storage for certificate. More...
 
 operator x509_st * () const
 Get internal OpenSSL X509 structure. More...
 
void Attach (x509_st *cert)
 Set internal OpenSSL X509 structure. More...
 
bool IsValid () const
 Return true if is a valid certificate. More...
 
bool CreateRoot (const PString &subject, const PSSLPrivateKey &key, const char *digest=NULL, unsigned version=0)
 Create a new root certificate. More...
 
bool SetData (const PBYTEArray &data)
 Set the certificate as binary ASN1 DER encoded data. More...
 
PBYTEArray GetData () const
 Get the certificate as binary ASN1 DER encoded data. More...
 
PString AsString () const
 Get the certificate as ASN1 DER base64 encoded data. More...
 
bool Parse (const PString &certStr)
 Set the certificate from ASN1 DER base64 encoded data. More...
 
PBoolean Load (const PFilePath &certFile, PSSLFileTypes fileType=PSSLFileTypeDEFAULT)
 Load certificate from file. More...
 
PBoolean Save (const PFilePath &keyFile, PBoolean append=false, PSSLFileTypes fileType=PSSLFileTypeDEFAULT)
 Save certificate to file. More...
 
bool GetIssuerName (X509_Name &name) const
 Get certificate issuer name. More...
 
bool GetSubjectName (X509_Name &name) const
 Get certificate subject name. More...
 
PString GetSubjectName () const
 
PString GetSubjectAltName () const
 Get certificate alternate subject name. More...
 
 P_DECLARE_BITWISE_ENUM (CheckHostFlags, 5,(CheckHostNormalRules, CheckHostAlwaysUseSubject, CheckHostNoWildcards, CheckHostNoPartialWildcards, CheckHostMultiLabelWildcards, CheckHostSingleLabelDomains))
 
bool CheckHostName (const PString &hostname, CheckHostFlags flags=CheckHostNormalRules)
 Check the host name against the certificate. More...
 
virtual void PrintOn (ostream &strm) const
 Output the contents of the object to the stream. More...
 
const X509_ChainGetChain () const
 
- Public Member Functions inherited from PObject
__inline unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
__inline void SetTraceContextIdentifier (unsigned id)
 
__inline void SetTraceContextIdentifier (const PObject &obj)
 
__inline void SetTraceContextIdentifier (const PObject *obj)
 
__inline void CopyTraceContextIdentifier (PObject &obj) const
 
__inline void CopyTraceContextIdentifier (PObject *obj) const
 
virtual ~PObject ()
 
__inline const char * GetClass () const
 
__inline bool IsClass (const char *name) const
 
__inline const PObjectPTraceObjectInstance () const
 
virtual PObjectClone () const
 Create a copy of the class on the heap. More...
 
template<class CLS >
CLS * CloneAs () const
 As for Clone() but converts to specified type. More...
 
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class. More...
 
virtual Comparison Compare (const PObject &obj) const
 Compare the two objects and return their relative rank. More...
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 
virtual void ReadFrom (istream &strm)
 Input the contents of the object from the stream. More...
 

Protected Member Functions

void FreeCertificate ()
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Protected Attributes

x509_st * m_certificate
 
X509_Chain m_chain
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Additional Inherited Members

- Static Public Member Functions inherited from PObject
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject *from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject *from)
 
static __inline const char * Class ()
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
template<typename T >
static Comparison Compare2 (T v1, T v2)
 Compare two types, returning Comparison type. More...
 
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 

Detailed Description

Certificate for SSL.

This class embodies a common environment for all certificates used by the PSSLContext and PSSLChannel classes.

Member Typedef Documentation

typedef std::list<x509_st *> PSSLCertificate::X509_Chain

Constructor & Destructor Documentation

PSSLCertificate::PSSLCertificate ( )

Create an empty certificate.

PSSLCertificate::PSSLCertificate ( const PFilePath certFile,
PSSLFileTypes  fileType = PSSLFileTypeDEFAULT 
)

Create a new certificate given the file.

The type of the certificate key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file.

Parameters
certFileCertificate file
fileTypeType of file to read
PSSLCertificate::PSSLCertificate ( const BYTE *  certData,
PINDEX  certSize 
)

Create certificate from the binary ASN1 DER encoded data specified.

Parameters
certDataCertificate data
certSizeSize of certificate data
PSSLCertificate::PSSLCertificate ( const PBYTEArray certData)

Create certificate from the binary ASN1 DER encoded data specified.

Parameters
certDataCertificate data
PSSLCertificate::PSSLCertificate ( const PString certString)

Create certificate from the ASN1 DER base64 encoded data specified.

Parameters
certStringCertificate data as string
PSSLCertificate::PSSLCertificate ( const PSSLCertificate cert)

Create a copy of the certificate.

PSSLCertificate::PSSLCertificate ( x509_st *  cert,
bool  duplicate = true 
)
PSSLCertificate::~PSSLCertificate ( )

Destroy and release storage for certificate.

Member Function Documentation

PString PSSLCertificate::AsString ( ) const

Get the certificate as ASN1 DER base64 encoded data.

void PSSLCertificate::Attach ( x509_st *  cert)

Set internal OpenSSL X509 structure.

bool PSSLCertificate::CheckHostName ( const PString hostname,
CheckHostFlags  flags = CheckHostNormalRules 
)

Check the host name against the certificate.

bool PSSLCertificate::CreateRoot ( const PString subject,
const PSSLPrivateKey key,
const char *  digest = NULL,
unsigned  version = 0 
)

Create a new root certificate.

The subject name is a string of the form "/name=value/name=value" where name is a short name for the field and value is a string value for the field for example: "/C=ZA/SP=Western Cape/L=Cape Town/O=Thawte Consulting cc" "/OU=Certification Services Division/CN=Thawte Server CA" "/Email=server-certs@thawte.com"

Parameters
subjectSubject name for certificate
keyKey to sign certificate with
digestDigest algorithm to use, default is "sha-1"
versionCertificate version, default latest
void PSSLCertificate::FreeCertificate ( )
protected
const X509_Chain& PSSLCertificate::GetChain ( ) const
inline

References m_chain.

PBYTEArray PSSLCertificate::GetData ( ) const

Get the certificate as binary ASN1 DER encoded data.

bool PSSLCertificate::GetIssuerName ( X509_Name name) const

Get certificate issuer name.

PString PSSLCertificate::GetSubjectAltName ( ) const

Get certificate alternate subject name.

bool PSSLCertificate::GetSubjectName ( X509_Name name) const

Get certificate subject name.

PString PSSLCertificate::GetSubjectName ( ) const

Referenced by PrintOn().

bool PSSLCertificate::IsValid ( ) const
inline

Return true if is a valid certificate.

References m_certificate.

PBoolean PSSLCertificate::Load ( const PFilePath certFile,
PSSLFileTypes  fileType = PSSLFileTypeDEFAULT 
)

Load certificate from file.

The type of the certificate key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file.

Parameters
certFileCertificate file
fileTypeType of file to read
PSSLCertificate::operator x509_st * ( ) const
inline

Get internal OpenSSL X509 structure.

References m_certificate.

PSSLCertificate& PSSLCertificate::operator= ( const PSSLCertificate cert)

Create a copy of the certificate.

PSSLCertificate& PSSLCertificate::operator= ( x509_st *  cert)
PSSLCertificate::P_DECLARE_BITWISE_ENUM ( CheckHostFlags  ,
,
(CheckHostNormalRules, CheckHostAlwaysUseSubject, CheckHostNoWildcards, CheckHostNoPartialWildcards, CheckHostMultiLabelWildcards, CheckHostSingleLabelDomains)   
)
bool PSSLCertificate::Parse ( const PString certStr)

Set the certificate from ASN1 DER base64 encoded data.

virtual void PSSLCertificate::PrintOn ( ostream &  strm) const
inlinevirtual

Output the contents of the object to the stream.

The exact output is dependent on the exact semantics of the descendent class. This is primarily used by the standard operator<< function.

The default behaviour is to print the class name.

Reimplemented from PObject.

References GetSubjectName().

PBoolean PSSLCertificate::Save ( const PFilePath keyFile,
PBoolean  append = false,
PSSLFileTypes  fileType = PSSLFileTypeDEFAULT 
)

Save certificate to file.

The type of the certificate key can be specified explicitly, or if PSSLFileTypeDEFAULT it will be determined from the file extension, ".pem" is a text file, anything else eg ".der" is a binary ASN1 file.

Parameters
keyFileCertificate key file
appendAppend to file
fileTypeType of file to write
bool PSSLCertificate::SetData ( const PBYTEArray data)

Set the certificate as binary ASN1 DER encoded data.

Member Data Documentation

x509_st* PSSLCertificate::m_certificate
protected

Referenced by IsValid(), and operator x509_st *().

X509_Chain PSSLCertificate::m_chain
protected

Referenced by GetChain().


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