12#ifdef ICE_CPP11_MAPPING
22# if defined(ICE_STATIC_LIBS)
24# elif defined(ICESSL_API_EXPORTS)
25# define ICESSL_API ICE_DECLSPEC_EXPORT
27# define ICESSL_API ICE_DECLSPEC_IMPORT
37#ifdef ICE_CPP11_MAPPING
168#ifndef ICE_CPP11_COMPILER
174#ifndef ICE_CPP11_MAPPING
187 static const char* _name;
200#ifndef ICE_CPP11_COMPILER
206#ifndef ICE_CPP11_MAPPING
219 static const char* _name;
232#ifndef ICE_CPP11_COMPILER
238#ifndef ICE_CPP11_MAPPING
251 static const char* _name;
311 bool match(
const std::string& dn)
const;
317 operator std::string()
const;
327 std::list<std::pair<std::string, std::string> > _rdns;
328 std::list<std::pair<std::string, std::string> > _unescaped;
364 return !(lhs == rhs);
372#ifndef ICE_CPP11_MAPPING
394 virtual std::vector<Ice::Byte>
getData()
const = 0;
407#ifdef ICE_CPP11_MAPPING
408 public std::enable_shared_from_this<Certificate>
464#ifdef ICE_CPP11_MAPPING
465 virtual bool checkValidity(
const std::chrono::system_clock::time_point& t)
const = 0;
492#ifdef ICE_CPP11_MAPPING
493 virtual std::chrono::system_clock::time_point
getNotAfter()
const = 0;
502#ifdef ICE_CPP11_MAPPING
503 virtual std::chrono::system_clock::time_point
getNotBefore()
const = 0;
605#ifndef ICE_CPP11_MAPPING
616 virtual ~CertificateVerifier();
623 virtual bool verify(
const ConnectionInfoPtr& info) = 0;
647 virtual ~PasswordPrompt();
655 virtual std::string getPassword() = 0;
657typedef IceUtil::Handle<PasswordPrompt> PasswordPromptPtr;
675#ifdef ICE_CPP11_MAPPING
686#ifdef ICE_CPP11_MAPPING
#define ICESSL_API
Definition ConnectionInfoF.h:49
#define ICE_DEFINE_PTR(TPtr, T)
Definition Config.h:359
std::string reason
The reason for the exception.
Definition Plugin.h:215
virtual ~CertificateEncodingException()
virtual std::string ice_id() const
Returns the type ID of this exception.
CertificateEncodingException(const char *, int, const std::string &)
CertificateReadException(const char *, int, const std::string &)
std::string reason
The reason for the exception.
Definition Plugin.h:183
virtual std::string ice_id() const
Returns the type ID of this exception.
virtual ~CertificateReadException()
This convenience class is a wrapper around a native certificate.
Definition Plugin.h:412
virtual std::vector< Ice::Byte > getSubjectKeyIdentifier() const =0
Obtains the subject key identifier.
virtual std::string encode() const =0
Obtains a string encoding of the certificate in PEM format.
virtual std::vector< X509ExtensionPtr > getX509Extensions() const =0
Obtains a list of the X509v3 extensions contained in the certificate.
virtual std::vector< std::pair< int, std::string > > getSubjectAlternativeNames() const =0
See the comment for Plugin::getIssuerAlternativeNames.
virtual std::chrono::system_clock::time_point getNotBefore() const =0
Obtains the not-before validity time.
virtual bool verify(const CertificatePtr &cert) const =0
Verifies that this certificate was signed by the given certificate public key.
virtual std::chrono::system_clock::time_point getNotAfter() const =0
Obtains the not-after validity time.
virtual std::string toString() const =0
Stringifies the certificate.
virtual bool operator!=(const Certificate &) const =0
Compares the certificates for equality using the native certificate comparison method.
virtual int getVersion() const =0
Obtains the certificate version number.
virtual bool checkValidity() const =0
Checks that the certificate is currently valid, that is, the current date falls between the validity ...
virtual DistinguishedName getSubjectDN() const =0
Obtains the subject's distinguished name (DN).
static CertificatePtr decode(const std::string &str)
Decodes a certificate from a string that uses the PEM encoding format.
virtual bool operator==(const Certificate &) const =0
Compares the certificates for equality using the native certificate comparison method.
virtual X509ExtensionPtr getX509Extension(const std::string &oid) const =0
Obtains the extension with the given OID.
virtual bool checkValidity(const std::chrono::system_clock::time_point &t) const =0
Checks that the certificate is valid at the given time.
virtual std::string getSerialNumber() const =0
Obtains the serial number.
unsigned int getExtendedKeyUsage() const
Returns the value of the extended key usage extension.
static CertificatePtr load(const std::string &file)
Loads the certificate from a file.
virtual std::vector< std::pair< int, std::string > > getIssuerAlternativeNames() const =0
Obtains the values in the issuer's alternative names extension.
virtual DistinguishedName getIssuerDN() const =0
Obtains the issuer's distinguished name (DN).
unsigned int getKeyUsage() const
Returns the value of the key usage extension.
virtual std::vector< Ice::Byte > getAuthorityKeyIdentifier() const =0
Obtains the authority key identifier.
This class represents a DistinguishedName, similar to the Java type X500Principal and the ....
Definition Plugin.h:268
bool match(const std::string &dn) const
Performs a partial match with another DistinguishedName.
DistinguishedName(const std::string &name)
Creates a DistinguishedName from a string encoded using the rules in RFC2253.
friend bool operator==(const DistinguishedName &, const DistinguishedName &)
Performs an exact match.
friend bool operator<(const DistinguishedName &, const DistinguishedName &)
Performs an exact match.
bool match(const DistinguishedName &dn) const
Performs a partial match with another DistinguishedName.
DistinguishedName(const std::list< std::pair< std::string, std::string > > &)
Creates a DistinguishedName from a list of RDN pairs, where each pair consists of the RDN's type and ...
ParseException(const char *, int, const std::string &)
virtual ~ParseException()
std::string reason
The reason for the exception.
Definition Plugin.h:247
virtual std::string ice_id() const
Returns the type ID of this exception.
Represents the IceSSL plug-in object.
Definition Plugin.h:665
virtual void setPasswordPrompt(std::function< std::string()> p)=0
Establish the password prompt object.
virtual void setCertificateVerifier(std::function< bool(const std::shared_ptr< ConnectionInfo > &)> v)=0
Establish the certificate verifier object.
virtual CertificatePtr decode(const std::string &str) const =0
Decode a certificate from a string that uses the PEM encoding format.
virtual CertificatePtr load(const std::string &file) const =0
Load the certificate from a file.
Represents an X509 Certificate extension.
Definition Plugin.h:375
virtual std::vector< Ice::Byte > getData() const =0
Obtains the data associated with this extension.
virtual std::string getOID() const =0
Obtains the object ID of this extension.
virtual bool isCritical() const =0
Determines whether the information in this extension is important.
Helper template for the implementation of Ice::Exception.
Definition Exception.h:128
std::unique_ptr< CertificateReadException > ice_clone() const
Definition Exception.h:133
A communicator plug-in.
Definition Plugin.h:78
Definition ConnectionInfo.h:59
const unsigned int KEY_USAGE_ENCIPHER_ONLY
The key usage "encipherOnly" bit is set.
Definition Plugin.h:123
const unsigned int EXTENDED_KEY_USAGE_CODE_SIGNING
The extended key usage "codeSigning" bit is set.
Definition Plugin.h:144
bool operator>=(const DistinguishedName &lhs, const DistinguishedName &rhs)
Performs an exact match.
Definition Plugin.h:353
const unsigned int EXTENDED_KEY_USAGE_TIME_STAMPING
The extended key usage "timeStamping" bit is set.
Definition Plugin.h:152
::std::shared_ptr< Plugin > PluginPtr
Definition Plugin.h:708
const unsigned int EXTENDED_KEY_USAGE_ANY_KEY_USAGE
The extended key usage "anyKeyUsage" bit is set.
Definition Plugin.h:132
std::string getHost(const IceSSL::ConnectionInfoPtr &)
const unsigned int EXTENDED_KEY_USAGE_SERVER_AUTH
The extended key usage "serverAuth" bit is set.
Definition Plugin.h:136
const unsigned int KEY_USAGE_KEY_ENCIPHERMENT
The key usage "keyEncipherment" bit is set.
Definition Plugin.h:103
const unsigned int KEY_USAGE_KEY_CERT_SIGN
The key usage "keyCertSign" bit is set.
Definition Plugin.h:115
const unsigned int EXTENDED_KEY_USAGE_OCSP_SIGNING
The extended key usage "OCSPSigning" bit is set.
Definition Plugin.h:156
const unsigned int EXTENDED_KEY_USAGE_CLIENT_AUTH
The extended key usage "clientAuth" bit is set.
Definition Plugin.h:140
bool operator>(const DistinguishedName &lhs, const DistinguishedName &rhs)
Performs an exact match.
Definition Plugin.h:335
TrustError getTrustError(const IceSSL::ConnectionInfoPtr &)
const unsigned int KEY_USAGE_DATA_ENCIPHERMENT
The key usage "dataEncipherment" bit is set.
Definition Plugin.h:107
::std::shared_ptr< X509Extension > X509ExtensionPtr
Definition Plugin.h:396
::std::shared_ptr< Certificate > CertificatePtr
Definition Plugin.h:399
TrustError
The reason for an IceSSL certificate verification failure.
Definition Plugin.h:42
@ ChainTooLong
The certificate chain length is greater than the specified maximum depth.
Definition Plugin.h:46
@ HasNonPermittedNameConstraint
The certificate has a non permitted name constraint.
Definition Plugin.h:52
@ InvalidSignature
The X509 chain is invalid due to an invalid certificate signature.
Definition Plugin.h:70
@ UntrustedRoot
The X509 chain is invalid due to an untrusted root certificate.
Definition Plugin.h:83
@ InvalidNameConstraints
The X509 chain is invalid due to invalid name constraints.
Definition Plugin.h:64
@ HasExcludedNameConstraint
The X509 chain is invalid because a certificate has excluded a name constraint.
Definition Plugin.h:48
@ InvalidTime
The X509 chain is not valid due to an invalid time value, such as a value that indicates an expired c...
Definition Plugin.h:73
@ NoError
The certification verification succeed.
Definition Plugin.h:44
@ InvalidExtension
The X509 chain is invalid due to an invalid extension.
Definition Plugin.h:62
@ RevocationStatusUnknown
It is not possible to determine whether the certificate has been revoked.
Definition Plugin.h:79
@ InvalidBasicConstraints
The X509 chain is invalid due to invalid basic constraints.
Definition Plugin.h:60
@ UnknownTrustFailure
The X509 chain is invalid due to other unknown failure.
Definition Plugin.h:85
@ HasNonSupportedNameConstraint
The certificate does not have a supported name constraint or has a name constraint that is unsupporte...
Definition Plugin.h:56
@ NotTrusted
The certificate is explicitly not trusted.
Definition Plugin.h:75
@ HasNonSupportedCriticalExtension
The certificate does not support a critical extension.
Definition Plugin.h:54
@ InvalidPolicyConstraints
The X509 chain is invalid due to invalid policy constraints.
Definition Plugin.h:66
@ HostNameMismatch
A host name mismatch has occurred.
Definition Plugin.h:58
@ HasNonDefinedNameConstraint
The certificate has an undefined name constraint.
Definition Plugin.h:50
@ InvalidPurpose
The supplied certificate cannot be used for the specified purpose.
Definition Plugin.h:68
@ PartialChain
The X509 chain could not be built up to the root certificate.
Definition Plugin.h:77
@ Revoked
The X509 chain is invalid due to a revoked certificate.
Definition Plugin.h:81
const unsigned int KEY_USAGE_DECIPHER_ONLY
The key usage "decipherOnly" bit is set.
Definition Plugin.h:127
const unsigned int KEY_USAGE_NON_REPUDIATION
The key usage "nonRepudiation" bit is set.
Definition Plugin.h:99
bool operator<=(const DistinguishedName &lhs, const DistinguishedName &rhs)
Performs an exact match.
Definition Plugin.h:344
const unsigned int KEY_USAGE_DIGITAL_SIGNATURE
The key usage "digitalSignature" bit is set.
Definition Plugin.h:95
const unsigned int KEY_USAGE_KEY_AGREEMENT
The key usage "keyAgreement" bit is set.
Definition Plugin.h:111
const unsigned int KEY_USAGE_CRL_SIGN
The key usage "cRLSign" bit is set.
Definition Plugin.h:119
bool operator!=(const DistinguishedName &lhs, const DistinguishedName &rhs)
Performs an exact match.
Definition Plugin.h:362
const unsigned int EXTENDED_KEY_USAGE_EMAIL_PROTECTION
The extended key usage "emailProtection" bit is set.
Definition Plugin.h:148
std::string getTrustErrorDescription(TrustError)