# Poco::Net

# class InvalidCertificateHandler

Library: NetSSL_OpenSSL
Package: SSLCore
Header: Poco/Net/InvalidCertificateHandler.h

## Description

A InvalidCertificateHandler is invoked whenever an error occurs verifying the certificate. It allows the user to inspect and accept/reject the certificate. One can install one's own InvalidCertificateHandler by implementing this interface. Note that in the implementation file of the subclass the following code must be present (assuming you use the namespace My_API and the name of your handler class is MyGuiHandler):

    #include "Poco/Net/CertificateHandlerFactory.h"
    ...
    POCO_REGISTER_CHFACTORY(My_API, MyGuiHandler)

One can either set the handler directly in the startup code of the main method of ones application by calling

    SSLManager::instance().initialize(mypassphraseHandler, myguiHandler, mySSLContext)

or in case one uses Poco::Util::Application one can rely on an XML configuration and put the following entry under the path openSSL.invalidCertificateHandler:

    <invalidCertificateHandler>
        <name>MyGuiHandler<name>
        <options>
            [...] // Put optional config params for the handler here
        </options>
    </invalidCertificateHandler>

Note that the name of the InvalidCertificateHandler must be same as the one provided to the POCO_REGISTER_CHFACTORY macro.

## Inheritance

Known Derived Classes: AcceptCertificateHandler, ConsoleCertificateHandler

## Member Summary

Member Functions: onInvalidCertificate

## Constructors

### InvalidCertificateHandler

InvalidCertificateHandler(
bool handleErrorsOnServerSide
);

Creates the InvalidCertificateHandler.

Set handleErrorsOnServerSide to true if the certificate handler is used on the server side. Automatically registers at one of the SSLManager::VerificationError events.

## Destructor

### ~InvalidCertificateHandler

virtual ~InvalidCertificateHandler();

Destroys the InvalidCertificateHandler.

## Member Functions

### onInvalidCertificate

virtual void onInvalidCertificate(
const void * pSender,
VerificationErrorArgs & errorCert
) = 0;

Receives the questionable certificate in parameter errorCert. If one wants to accept the certificate, call errorCert.setIgnoreError(true).

## Variables

### _handleErrorsOnServerSide

bool _handleErrorsOnServerSide;

Stores if the certificate handler gets invoked by the server (i.e. a client certificate is wrong) or the client (a server certificate is wrong)