Synopsis

Description

To enable manual SSL certificate verification, a
callback can be registered using
ne_ssl_set_verify. If such a callback is not
registered, when a connection is established to an SSL server which
does not present a certificate signed by a trusted CA (see ne_ssl_trust_cert), or if the certificate presented is invalid in
some way, the connection will fail.

When the callback is invoked, the
failures parameter gives a bitmask indicating
in what way the automatic certificate verification failed. The value
is equal to the bit-wise OR of one or more of the following
constants (and is guaranteed to be non-zero):

NE_SSL_NOTYETVALID

The certificate is not yet valid.

NE_SSL_EXPIRED

The certificate has expired.

NE_SSL_IDMISMATCH

The hostname used for the session does not match
the hostname to which the certificate was issued.

NE_SSL_UNTRUSTED

The Certificate Authority which signed the certificate
is not trusted.

Note that if either of the
NE_SSL_IDMISMATCH or
NE_SSL_UNTRUSTED failures is given, the
connection may have been intercepted by a third party, and
must not be presumed to be “secure”.

The cert parameter passed to the
callback represents the certificate which was presented by the server.
If the server presented a chain of certificates, the chain can be
accessed using ne_ssl_cert_signedby. The
cert object given is not valid after the
callback returns.

Return value

The verification callback must return zero to indicate
that the certificate should be trusted; and non-zero otherwise (in
which case, the connection will fail).

Examples

The following code implements an example verification
callback, using the dump_cert function
from ne_ssl_cert_subject to display
certification information. Notice that the hostname of the
server used for the session is passed as the
userdata parameter to the
callback.