SSL_CIPHER_GET_NAME(3)

NAME
SSL_CIPHER_get_name, SSL_CIPHER_get_bits, SSL_CIPHER_get_version, SSL_CIPHER_description - get SSL_CIPHER properties

SYNOPSIS
#include <openssl/ssl.h>
const char *
SSL_CIPHER_get_name(const SSL_CIPHER *cipher);
int
SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits);
char *
SSL_CIPHER_get_version(const SSL_CIPHER *cipher);
char *
SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int size);

DESCRIPTION
SSL_CIPHER_get_name() returns a pointer to the name of cipher. If the cipher is NULL, it returns "(NONE)".

SSL_CIPHER_get_bits() returns the number of secret bits used for cipher. If alg_bits is not NULL, it contains the number of bits processed by the chosen algorithm. If cipher is NULL, 0 is returned.

SSL_CIPHER_get_version() returns a string which indicates the SSL/TLS protocol version that first defined the cipher. This is currently "TLSv1/SSLv3". In some cases it should possibly return "TLSv1.2" but the function does not; use SSL_CIPHER_description() instead. If cipher is NULL, "(NONE)" is returned.

SSL_CIPHER_description() returns a textual description of the cipher used into the buffer buf of length len provided. If buf is NULL, a buffer is allocated using asprintf(3); that buffer should be freed using the free(3) function. If len is too small, or if buf is NULL and the allocation fails, a pointer to the string "Buffer too small" is returned.

The string returned by SSL_CIPHER_description() consists of several fields separated by whitespace:

<ciphername>
    Textual representation of the cipher name.

<protocol version>
    Protocol version: SSLv3 or TLSv1.2. The TLSv1.0 ciphers are flagged with SSLv3. No new ciphers were added by TLSv1.1.

Kx=<key exchange>
    Key exchange method: DH, ECDH, GOST, or RSA.

Au=<authentication>
    Authentication method: DSS, ECDSA, GOST01, RSA, or None. None is the representation of anonymous ciphers.

Enc=<symmetric encryption method>
    Encryption method with number of secret bits: DES(56), 3DES(168), RC4(64), RC4(128), IDEA(128), AES(128), AES(256), AESCGM(128), AESCGM(256), Camellia(128), Camellia(256), ChaCha20-Poly1305, ChaCha20-Poly1305-Old, GOST-28178-89-CNT, or None.

Mac=<message authentication code>
    Message digest: MD5, SHA1, SHA256, SHA384, AEAD, GOST94, GOST89IMIT, STREEBOG256, STREEBOG512.

EXAMPLES
An example for the output of SSL_CIPHER_description():

    ECDHE-RSA-AES256-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD

A complete list can be retrieved by invoking the following command:

    $ openssl ciphers -v ALL

SEE ALSO
openssl(1), ssl(3), SSL_get_ciphers(3), SSL_get_current_cipher(3)

BUGS
If SSL_CIPHER_description() is called with cipher being NULL, the library crashes.

If SSL_CIPHER_description() cannot handle a built-in cipher, the according description of the cipher property is "unknown". This case should not occur.