=pod

=head1 NAME

SSL_get_current_cipher, SSL_get_cipher_name,
SSL_get_cipher_bits, SSL_get_cipher_version - get SSL_CIPHER of a connection

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 SSL_CIPHER *SSL_get_current_cipher(const SSL *ssl);

 const char *SSL_get_cipher_name(const SSL *s);
 const char *SSL_get_cipher(const SSL *s);
 int SSL_get_cipher_bits(const SSL *s, int *np) \
 const char *SSL_get_cipher_version(const SSL *s);

=head1 DESCRIPTION

SSL_get_current_cipher() returns a pointer to an SSL_CIPHER object containing
the description of the actually used cipher of a connection established with
the B<ssl> object.
See L<SSL_CIPHER_get_name(3)> for more details.

SSL_get_cipher_name() obtains the
name of the currently used cipher.
SSL_get_cipher() is identical to SSL_get_cipher_name().
SSL_get_cipher_bits() is a
macro to obtain the number of secret/algorithm bits used and
SSL_get_cipher_version() returns the protocol name.

=head1 RETURN VALUES

SSL_get_current_cipher() returns the cipher actually used, or NULL if
no session has been established.

=head1 NOTES

These are implemented as macros.

=head1 SEE ALSO

L<ssl(3)>, L<SSL_CIPHER_get_name(3)>

=head1 COPYRIGHT

Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut
