Blame doc/man3/SSL_CTX_set_cert_verify_callback.pod

Packit c4476c
=pod
Packit c4476c
Packit c4476c
=head1 NAME
Packit c4476c
Packit c4476c
SSL_CTX_set_cert_verify_callback - set peer certificate verification procedure
Packit c4476c
Packit c4476c
=head1 SYNOPSIS
Packit c4476c
Packit c4476c
 #include <openssl/ssl.h>
Packit c4476c
Packit c4476c
 void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,
Packit c4476c
                                       int (*callback)(X509_STORE_CTX *, void *),
Packit c4476c
                                       void *arg);
Packit c4476c
Packit c4476c
=head1 DESCRIPTION
Packit c4476c
Packit c4476c
SSL_CTX_set_cert_verify_callback() sets the verification callback function for
Packit c4476c
I<ctx>. SSL objects that are created from I<ctx> inherit the setting valid at
Packit c4476c
the time when L<SSL_new(3)> is called.
Packit c4476c
Packit c4476c
=head1 NOTES
Packit c4476c
Packit c4476c
Whenever a certificate is verified during a SSL/TLS handshake, a verification
Packit c4476c
function is called. If the application does not explicitly specify a
Packit c4476c
verification callback function, the built-in verification function is used.
Packit c4476c
If a verification callback I<callback> is specified via
Packit c4476c
SSL_CTX_set_cert_verify_callback(), the supplied callback function is called
Packit c4476c
instead. By setting I<callback> to NULL, the default behaviour is restored.
Packit c4476c
Packit c4476c
When the verification must be performed, I<callback> will be called with
Packit c4476c
the arguments callback(X509_STORE_CTX *x509_store_ctx, void *arg). The
Packit c4476c
argument I<arg> is specified by the application when setting I<callback>.
Packit c4476c
Packit c4476c
I<callback> should return 1 to indicate verification success and 0 to
Packit c4476c
indicate verification failure. If SSL_VERIFY_PEER is set and I<callback>
Packit c4476c
returns 0, the handshake will fail. As the verification procedure may
Packit c4476c
allow the connection to continue in the case of failure (by always
Packit c4476c
returning 1) the verification result must be set in any case using the
Packit c4476c
B<error> member of I<x509_store_ctx> so that the calling application
Packit c4476c
will be informed about the detailed result of the verification procedure!
Packit c4476c
Packit c4476c
Within I<x509_store_ctx>, I<callback> has access to the I<verify_callback>
Packit c4476c
function set using L<SSL_CTX_set_verify(3)>.
Packit c4476c
Packit c4476c
=head1 RETURN VALUES
Packit c4476c
Packit c4476c
SSL_CTX_set_cert_verify_callback() does not return a value.
Packit c4476c
Packit c4476c
=head1 WARNINGS
Packit c4476c
Packit c4476c
Do not mix the verification callback described in this function with the
Packit c4476c
B<verify_callback> function called during the verification process. The
Packit c4476c
latter is set using the L<SSL_CTX_set_verify(3)>
Packit c4476c
family of functions.
Packit c4476c
Packit c4476c
Providing a complete verification procedure including certificate purpose
Packit c4476c
settings etc is a complex task. The built-in procedure is quite powerful
Packit c4476c
and in most cases it should be sufficient to modify its behaviour using
Packit c4476c
the B<verify_callback> function.
Packit c4476c
Packit c4476c
=head1 BUGS
Packit c4476c
Packit c4476c
SSL_CTX_set_cert_verify_callback() does not provide diagnostic information.
Packit c4476c
Packit c4476c
=head1 SEE ALSO
Packit c4476c
Packit c4476c
L<ssl(7)>, L<SSL_CTX_set_verify(3)>,
Packit c4476c
L<SSL_get_verify_result(3)>,
Packit c4476c
L<SSL_CTX_load_verify_locations(3)>
Packit c4476c
Packit c4476c
=head1 COPYRIGHT
Packit c4476c
Packit c4476c
Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
Packit c4476c
Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
this file except in compliance with the License.  You can obtain a copy
Packit c4476c
in the file LICENSE in the source distribution or at
Packit c4476c
L<https://www.openssl.org/source/license.html>.
Packit c4476c
Packit c4476c
=cut