UA Server SDK C++ Bundle  1.3.3.206
 All Data Structures Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
UaPkiCertificate Class Reference

Class for handling X509 certificates. More...

#include <uapkicertificate.h>

Public Types

enum  Validity {
  ValidityGood = 0, ErrorRejected, ErrorUntrusted, ErrorSignatureFailed,
  ErrorInvalidCA, ErrorInvalidPurpose, ErrorSelfSigned, ErrorRevoked,
  ErrorPathLengthExceeded, ErrorExpired, ErrorExpiredCA, ErrorValidityUnknown
}
 Validity Enumeration. More...
 

Public Member Functions

 UaPkiCertificate ()
 construction
 
 UaPkiCertificate (const UaPkiCertificateInfo &info, const UaPkiIdentity &subject, const UaPkiPublicKey &subjectPublicKey, const UaPkiIdentity &issuer, const UaPkiPrivateKey &issuerPrivateKey)
 Creates a new certificate. More...
 
 UaPkiCertificate (const UaPkiCertificate &copy)
 construction
 
 ~UaPkiCertificate ()
 destruction
 
UaPkiCertificate operator= (const UaPkiCertificate &copy)
 Assigns another UaPkiCertificate to the current instance. More...
 
UaPkiPublicKey publicKey () const
 Returns the public key of the certificate. More...
 
UaString commonName () const
 Returns the certificates commonName field. More...
 
UaPkiIdentity subject () const
 Returns the certificate identity. More...
 
UaPkiIdentity issuer () const
 Returns the certificate issuer identity. More...
 
UaPkiCertificateInfo info () const
 Returns information from X509v3 Extension subjectAltName. More...
 
UaDateTime validFrom () const
 Returns the start date from the certificates valid time period. More...
 
UaDateTime validTo () const
 Returns the end date from the certificates valid time period. More...
 
UaString serialNumber () const
 Returns the certificates serial number. More...
 
int signatureTypeNID () const
 ToDoDoc. More...
 
UaString signatureTypeString () const
 ToDoDoc. More...
 
bool isValid () const
 Returns true if the the certificate is still valid and not expired. More...
 
UaByteArray toDER () const
 Encodes the certificate into a DER format. More...
 
int toDERFile (const char *szFile) const
 Stores the certificate into DER encoded file. More...
 
int toDERFile (const UaString &sFile) const
 Stores the certificate into DER encoded file. More...
 
UaByteArray thumbPrint () const
 Creates the SHA1 thumb print of the certificate. More...
 
Validity validate (const UaPkiCertificateCollection &trusted, const UaPkiCertificateCollection &untrusted) const
 Validates the certificate against a list of trusted certificates. More...
 

Static Public Member Functions

static UaByteArray thumbPrint (const UaByteArray &DERData)
 Creates the SHA1 thumb print of the DER encoded certificate data. More...
 
static UaPkiCertificate fromDER (const UaByteArray &DERdata)
 Loads a certificate from a DER encoded byte array. More...
 
static UaPkiCertificate fromDERFile (const char *szFile)
 Loads a certificate from a DER encoded file. More...
 
static UaPkiCertificate fromDERFile (const UaString &sFile)
 Loads a certificate from a DER encoded file. More...
 

Detailed Description

Class for handling X509 certificates.

This class encapsulates OpenSSL X509 functionality and simplifies the certificate handling.

The following sample code demonstrates how to create a self signed certificate.

UaPkiPublicKey subjectPubKey;
UaPkiPrivateKey issuerPrvKey;
UaPkiRsaKeyPair *pKeyPair;
UaPkiCertificate *pNewCert;
int bits = 2048;
ident.commonName = "MyGreatUaApp";
ident.organization = "ACME";
ident.organizationUnit = "Development Department";
ident.locality = "Schwabach";
ident.state = "Bavaria";
ident.country = "DE";
info.URI = "opc.tcp://opcua.acme.com/MyGreatUaApp";
info.IP = ""; // optional IP of no DNS is available
info.DNS = "opcua.acme.com";
info.validTime = 3600*24*365*5; // 5 years
// create new keypair
pKeyPair = new UaPkiRsaKeyPair(bits);
subjectPubKey = pKeyPair->publicKey();
issuerPrvKey = pKeyPair->privateKey();
// create new certificate
pNewCert = new UaPkiCertificate(info, ident, subjectPubKey, ident, issuerPrvKey);
// store certificate in a DER encoded file
pNewCert->toDERFile("/path/to/mycert.der");

The following sample code demonstrates how to store a certificate as file e.g. in the application trust list.

void storeTrustedCertificate(const UaByteString& trustedCertificate, const UaString& sTrustListLocation)
{
// Assign certificate byte string to UaPkiCertificate class
UaByteArray derCertificate(*(const OpcUa_ByteString*)trustedCertificate);
cert = cert.fromDER(derCertificate);
// Create file name for the certificate
// Use the thump print as file name
UaString sThumbPrint = cert.thumbPrint().toHex();
UaString sFileName = sTrustListLocation;
sFileName += "/";
sFileName += sThumbPrint;
sFileName += ".der";
// Store certificate
cert.toDERFile(sFileName.toUtf8());
}

Member Enumeration Documentation

Validity Enumeration.

Enumerator
ValidityGood 

Validity: Good

ErrorRejected 

Validity: ErrorRejected

ErrorUntrusted 

Validity: ErrorUntrusted

ErrorSignatureFailed 

Validity: ErrorSignatureFailed

ErrorInvalidCA 

Validity: ErrorInvalidCA

ErrorInvalidPurpose 

Validity: ErrorInvalidPurpose

ErrorSelfSigned 

Validity: ErrorSelfSigned

ErrorRevoked 

Validity: ErrorRevoked

ErrorPathLengthExceeded 

Validity: ErrorPathLengthExceeded

ErrorExpired 

Validity: ErrorExpired

ErrorExpiredCA 

Validity: ErrorExpiredCA

ErrorValidityUnknown 

Validity: ErrorValidityUnknown

Constructor & Destructor Documentation

UaPkiCertificate::UaPkiCertificate ( const UaPkiCertificateInfo info,
const UaPkiIdentity subject,
const UaPkiPublicKey subjectPublicKey,
const UaPkiIdentity issuer,
const UaPkiPrivateKey issuerPrivateKey 
)

Creates a new certificate.

Parameters
[in]infoUA Application information.
[in]subjectThe identity of the certificate owner.
[in]subjectPublicKeyThe public key of the certificate.
[in]issuerThe identity of the certificate issuer. If subject == issuer a self signed certificate is created.
[in]issuerPrivateKeyThe private key of the certificate issuer. This is needed to sign the certificate.

Member Function Documentation

UaString UaPkiCertificate::commonName ( ) const

Returns the certificates commonName field.

This functions is provided for convenience and returns the same as UaPkiCertificate::subject().commonName.

UaPkiCertificate UaPkiCertificate::fromDER ( const UaByteArray DERdata)
static

Loads a certificate from a DER encoded byte array.

Returns
A new UaPkiCertificate instance.
Parameters
[in]DERdataThe DER data typically received from the OPC UA protocol.
UaPkiCertificate UaPkiCertificate::fromDERFile ( const char *  szFile)
static

Loads a certificate from a DER encoded file.

Returns
A new UaPkiCertificate instance.
Parameters
[in]szFileThe file name (local 8 bit encoding).
UaPkiCertificate UaPkiCertificate::fromDERFile ( const UaString sFile)
static

Loads a certificate from a DER encoded file.

Returns
A new UaPkiCertificate instance.
Parameters
[in]sFileThe file name (UTF8 encoding).
UaPkiCertificateInfo UaPkiCertificate::info ( ) const

Returns information from X509v3 Extension subjectAltName.

This function does not fill UaPkiCertificateInfo::validTime, use validFrom() and validTo() functions instead.

UaPkiIdentity UaPkiCertificate::issuer ( ) const

Returns the certificate issuer identity.

bool UaPkiCertificate::isValid ( ) const

Returns true if the the certificate is still valid and not expired.

UaPkiCertificate UaPkiCertificate::operator= ( const UaPkiCertificate copy)

Assigns another UaPkiCertificate to the current instance.

Parameters
copyAn existing UaPkiCertificate structure.
Returns
The current instance
UaPkiPublicKey UaPkiCertificate::publicKey ( ) const

Returns the public key of the certificate.

UaString UaPkiCertificate::serialNumber ( ) const

Returns the certificates serial number.

Returns
The serial number as hex encoded string.
int UaPkiCertificate::signatureTypeNID ( ) const

ToDoDoc.

Returns
ToDoDoc
UaString UaPkiCertificate::signatureTypeString ( ) const

ToDoDoc.

Returns
ToDoDoc
UaPkiIdentity UaPkiCertificate::subject ( ) const

Returns the certificate identity.

UaByteArray UaPkiCertificate::thumbPrint ( ) const

Creates the SHA1 thumb print of the certificate.

Returns
A UaByteArray containing the thumb print of the certificate.
UaByteArray UaPkiCertificate::thumbPrint ( const UaByteArray DERData)
static

Creates the SHA1 thumb print of the DER encoded certificate data.

This method is provided for convenience but behaves like the function above. This avoid the temporary creation of an UaPkiCertificate instance if you have already DER encoded data.

Returns
A UaByteArray containing the thumb print of the certificate.
Parameters
[in]DERDataThe DER encoded certificate.
UaByteArray UaPkiCertificate::toDER ( ) const

Encodes the certificate into a DER format.

This is used to send a certificate over OPC UA.

Returns
UaByteArray with DER data.
int UaPkiCertificate::toDERFile ( const char *  szFile) const

Stores the certificate into DER encoded file.

This is used for certificate management.

Returns
error code
Parameters
[in]szFileThe file name of the DER encoded file to create (local 8 bit encoding).
int UaPkiCertificate::toDERFile ( const UaString sFile) const

Stores the certificate into DER encoded file.

This is used for certificate management.

Returns
error code
Parameters
[in]sFileThe file name of the DER encoded file to create (UTF8 encoding).
UaPkiCertificate::Validity UaPkiCertificate::validate ( const UaPkiCertificateCollection trusted,
const UaPkiCertificateCollection untrusted 
) const

Validates the certificate against a list of trusted certificates.

Returns
The validity of the certificate.
Parameters
[in]trustedA list of certificates that are trusted.
[in]untrustedA list of certificates that may be used to build the trust chain for validation.
UaDateTime UaPkiCertificate::validFrom ( ) const

Returns the start date from the certificates valid time period.

UaDateTime UaPkiCertificate::validTo ( ) const

Returns the end date from the certificates valid time period.


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