mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2025-01-18 10:54:03 -05:00
Make TLS version number available in STATUS command
This adds a new STATUS command field "eap_tls_version" that shows the TLS version number that was used during EAP-TLS/TTLS/PEAP/FAST exchange. For now, this is only supported with OpenSSL. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
5650d379a3
commit
fe1bf32974
@ -466,6 +466,19 @@ int __must_check tls_connection_set_cipher_list(void *tls_ctx,
|
|||||||
struct tls_connection *conn,
|
struct tls_connection *conn,
|
||||||
u8 *ciphers);
|
u8 *ciphers);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tls_get_version - Get the current TLS version number
|
||||||
|
* @tls_ctx: TLS context data from tls_init()
|
||||||
|
* @conn: Connection context data from tls_connection_init()
|
||||||
|
* @buf: Buffer for returning the TLS version number
|
||||||
|
* @buflen: buf size
|
||||||
|
* Returns: 0 on success, -1 on failure
|
||||||
|
*
|
||||||
|
* Get the currently used TLS version number.
|
||||||
|
*/
|
||||||
|
int __must_check tls_get_version(void *tls_ctx, struct tls_connection *conn,
|
||||||
|
char *buf, size_t buflen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tls_get_cipher - Get current cipher name
|
* tls_get_cipher - Get current cipher name
|
||||||
* @tls_ctx: TLS context data from tls_init()
|
* @tls_ctx: TLS context data from tls_init()
|
||||||
|
@ -1426,6 +1426,14 @@ int tls_connection_set_cipher_list(void *tls_ctx, struct tls_connection *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int tls_get_version(void *ssl_ctx, struct tls_connection *conn,
|
||||||
|
char *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int tls_get_cipher(void *ssl_ctx, struct tls_connection *conn,
|
int tls_get_cipher(void *ssl_ctx, struct tls_connection *conn,
|
||||||
char *buf, size_t buflen)
|
char *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
|
@ -617,6 +617,14 @@ int tls_connection_set_cipher_list(void *tls_ctx, struct tls_connection *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int tls_get_version(void *ssl_ctx, struct tls_connection *conn,
|
||||||
|
char *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int tls_get_cipher(void *tls_ctx, struct tls_connection *conn,
|
int tls_get_cipher(void *tls_ctx, struct tls_connection *conn,
|
||||||
char *buf, size_t buflen)
|
char *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
|
@ -140,6 +140,13 @@ int tls_connection_set_cipher_list(void *tls_ctx, struct tls_connection *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int tls_get_version(void *ssl_ctx, struct tls_connection *conn,
|
||||||
|
char *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int tls_get_cipher(void *tls_ctx, struct tls_connection *conn,
|
int tls_get_cipher(void *tls_ctx, struct tls_connection *conn,
|
||||||
char *buf, size_t buflen)
|
char *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
|
@ -3097,6 +3097,22 @@ int tls_connection_set_cipher_list(void *tls_ctx, struct tls_connection *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int tls_get_version(void *ssl_ctx, struct tls_connection *conn,
|
||||||
|
char *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
if (conn == NULL || conn->ssl == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
name = SSL_get_version(conn->ssl);
|
||||||
|
if (name == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
os_strlcpy(buf, name, buflen);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int tls_get_cipher(void *ssl_ctx, struct tls_connection *conn,
|
int tls_get_cipher(void *ssl_ctx, struct tls_connection *conn,
|
||||||
char *buf, size_t buflen)
|
char *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
|
@ -753,20 +753,24 @@ int eap_peer_tls_reauth_init(struct eap_sm *sm, struct eap_ssl_data *data)
|
|||||||
int eap_peer_tls_status(struct eap_sm *sm, struct eap_ssl_data *data,
|
int eap_peer_tls_status(struct eap_sm *sm, struct eap_ssl_data *data,
|
||||||
char *buf, size_t buflen, int verbose)
|
char *buf, size_t buflen, int verbose)
|
||||||
{
|
{
|
||||||
char name[128];
|
char version[20], name[128];
|
||||||
int len = 0, ret;
|
int len = 0, ret;
|
||||||
|
|
||||||
if (tls_get_cipher(data->ssl_ctx, data->conn, name, sizeof(name)) == 0)
|
if (tls_get_version(data->ssl_ctx, data->conn, version,
|
||||||
{
|
sizeof(version)) < 0)
|
||||||
ret = os_snprintf(buf + len, buflen - len,
|
version[0] = '\0';
|
||||||
"EAP TLS cipher=%s\n"
|
if (tls_get_cipher(data->ssl_ctx, data->conn, name, sizeof(name)) < 0)
|
||||||
"tls_session_reused=%d\n",
|
name[0] = '\0';
|
||||||
name, tls_connection_resumed(data->ssl_ctx,
|
|
||||||
data->conn));
|
ret = os_snprintf(buf + len, buflen - len,
|
||||||
if (os_snprintf_error(buflen - len, ret))
|
"eap_tls_version=%s\n"
|
||||||
return len;
|
"EAP TLS cipher=%s\n"
|
||||||
len += ret;
|
"tls_session_reused=%d\n",
|
||||||
}
|
version, name,
|
||||||
|
tls_connection_resumed(data->ssl_ctx, data->conn));
|
||||||
|
if (os_snprintf_error(buflen - len, ret))
|
||||||
|
return len;
|
||||||
|
len += ret;
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user