6 SSL_CIPHER_standard_name,
9 SSL_CIPHER_get_version,
10 SSL_CIPHER_description,
11 SSL_CIPHER_get_cipher_nid,
12 SSL_CIPHER_get_digest_nid,
13 SSL_CIPHER_get_handshake_digest,
14 SSL_CIPHER_get_kx_nid,
15 SSL_CIPHER_get_auth_nid,
17 - get SSL_CIPHER properties
21 #include <openssl/ssl.h>
23 const char *SSL_CIPHER_get_name(const SSL_CIPHER *cipher);
24 const char *SSL_CIPHER_standard_name(const SSL_CIPHER *cipher);
25 const char *OPENSSL_cipher_name(const char *stdname);
26 int SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits);
27 char *SSL_CIPHER_get_version(const SSL_CIPHER *cipher);
28 char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int size);
29 int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c);
30 int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c);
31 const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c);
32 int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c);
33 int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c);
34 int SSL_CIPHER_is_aead(const SSL_CIPHER *c);
38 SSL_CIPHER_get_name() returns a pointer to the name of B<cipher>. If the
39 B<cipher> is NULL, it returns "(NONE)".
41 SSL_CIPHER_standard_name() returns a pointer to the standard RFC name of
42 B<cipher>. If the B<cipher> is NULL, it returns "(NONE)". If the B<cipher>
43 has no standard name, it returns B<NULL>.
45 OPENSSL_cipher_name() returns a pointer to the OpenSSL name of B<stdname>.
46 If the B<stdname> is NULL, or B<stdname> has no corresponding OpenSSL name,
49 SSL_CIPHER_get_bits() returns the number of secret bits used for B<cipher>.
50 If B<cipher> is NULL, 0 is returned.
52 SSL_CIPHER_get_version() returns string which indicates the SSL/TLS protocol
53 version that first defined the cipher. It returns "(NONE)" if B<cipher> is NULL.
55 SSL_CIPHER_get_cipher_nid() returns the cipher NID corresponding to B<c>.
56 If there is no cipher (e.g. for cipher suites with no encryption) then
57 B<NID_undef> is returned.
59 SSL_CIPHER_get_digest_nid() returns the digest NID corresponding to the MAC
60 used by B<c> during record encryption/decryption. If there is no digest (e.g.
61 for AEAD cipher suites) then B<NID_undef> is returned.
63 SSL_CIPHER_get_handshake_digest() returns an EVP_MD for the digest used during
64 the SSL/TLS handshake when using the SSL_CIPHER B<c>. Note that this may be
65 different to the digest used to calculate the MAC for encrypted records.
67 SSL_CIPHER_get_kx_nid() returns the key exchange NID corresponding to the method
68 used by B<c>. If there is no key exchange, then B<NID_undef> is returned.
69 If any appropriate key exchange algorithm can be used (as in the case of TLS 1.3
70 cipher suites) B<NID_kx_any> is returned. Examples (not comprehensive):
77 SSL_CIPHER_get_auth_nid() returns the authentication NID corresponding to the method
78 used by B<c>. If there is no authentication, then B<NID_undef> is returned.
79 If any appropriate authentication algorithm can be used (as in the case of
80 TLS 1.3 cipher suites) B<NID_auth_any> is returned. Examples (not comprehensive):
86 SSL_CIPHER_is_aead() returns 1 if the cipher B<c> is AEAD (e.g. GCM or
87 ChaCha20/Poly1305), and 0 if it is not AEAD.
89 SSL_CIPHER_description() returns a textual description of the cipher used
90 into the buffer B<buf> of length B<len> provided. If B<buf> is provided, it
91 must be at least 128 bytes, otherwise a buffer will be allocated using
92 OPENSSL_malloc(). If the provided buffer is too small, or the allocation fails,
95 The string returned by SSL_CIPHER_description() consists of several fields
96 separated by whitespace:
102 Textual representation of the cipher name.
104 =item <protocol version>
106 Protocol version, such as B<TLSv1.2>, when the cipher was first defined.
108 =item Kx=<key exchange>
110 Key exchange method such as B<RSA>, B<ECDHE>, etc.
112 =item Au=<authentication>
114 Authentication method such as B<RSA>, B<None>, etc.. None is the
115 representation of anonymous ciphers.
117 =item Enc=<symmetric encryption method>
119 Encryption method, with number of secret bits, such as B<AESGCM(128)>.
121 =item Mac=<message authentication code>
123 Message digest, such as B<SHA256>.
127 Some examples for the output of SSL_CIPHER_description():
129 ECDHE-RSA-AES256-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
130 RSA-PSK-AES256-CBC-SHA384 TLSv1.0 Kx=RSAPSK Au=RSA Enc=AES(256) Mac=SHA384
134 SSL_CIPHER_get_version() was updated to always return the correct protocol
135 string in OpenSSL 1.1.0.
137 SSL_CIPHER_description() was changed to return B<NULL> on error,
138 rather than a fixed string, in OpenSSL 1.1.0.
140 SSL_CIPHER_get_handshake_digest() was added in OpenSSL 1.1.1.
142 SSL_CIPHER_standard_name() was globally available in OpenSSL 1.1.1. Before
143 OpenSSL 1.1.1, tracing (B<enable-ssl-trace> argument to Configure) was
144 required to enable this function.
146 OPENSSL_cipher_name() was added in OpenSSL 1.1.1.
150 L<ssl(7)>, L<SSL_get_current_cipher(3)>,
151 L<SSL_get_ciphers(3)>, L<ciphers(1)>
155 Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
157 Licensed under the OpenSSL license (the "License"). You may not use
158 this file except in compliance with the License. You can obtain a copy
159 in the file LICENSE in the source distribution or at
160 L<https://www.openssl.org/source/license.html>.