=pod

=head1 NAME

SSL_set_verify_result - override result of peer certificate verification

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 void SSL_set_verify_result(SSL *ssl, long verify_result);

=head1 DESCRIPTION

SSL_set_verify_result() sets B<verify_result> of the object B<ssl> to be the
result of the verification of the X509 certificate presented by the peer,
if any.

=head1 NOTES

SSL_set_verify_result() overrides the verification result. It only changes
the verification result of the B<ssl> object. It does not become part of the
established session, so if the session is to be reused later, the original
value will reappear.

The valid codes for B<verify_result> are documented in L<verify(1)|verify(1)>.

=head1 RETURN VALUES

SSL_set_verify_result() does not provide a return value.

=head1 SEE ALSO

L<ssl(3)|ssl(3)>, L<SSL_get_verify_result(3)|SSL_get_verify_result(3)>,
L<SSL_get_peer_certificate(3)|SSL_get_peer_certificate(3)>,
L<verify(1)|verify(1)>

=cut
