wpa_supplicant: Report EAP connection progress to DBus
Send an "EAP" signal via the new DBus interface under various conditions during EAP authentication: - During method selection (ACK and NAK) - During certificate verification - While sending and receiving TLS alert messages - EAP success and failure messages This provides DBus callers a number of new tools: - The ability to probe an AP for available EAP methods (given an identity). - The ability to identify why the remote certificate was not verified. - The ability to identify why the remote peer refused a TLS connection. Signed-hostap: Paul Stewart <pstew@chromium.org>
This commit is contained in:
parent
24b5bd8b42
commit
dd7fec1f29
11 changed files with 156 additions and 3 deletions
|
@ -21,8 +21,10 @@ struct tls_keys {
|
|||
};
|
||||
|
||||
enum tls_event {
|
||||
TLS_CERT_CHAIN_SUCCESS,
|
||||
TLS_CERT_CHAIN_FAILURE,
|
||||
TLS_PEER_CERTIFICATE
|
||||
TLS_PEER_CERTIFICATE,
|
||||
TLS_ALERT
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -57,6 +59,12 @@ union tls_event_data {
|
|||
const u8 *hash;
|
||||
size_t hash_len;
|
||||
} peer_cert;
|
||||
|
||||
struct {
|
||||
int is_local;
|
||||
const char *type;
|
||||
const char *description;
|
||||
} alert;
|
||||
};
|
||||
|
||||
struct tls_config {
|
||||
|
|
|
@ -525,6 +525,15 @@ static void ssl_info_cb(const SSL *ssl, int where, int ret)
|
|||
else
|
||||
conn->write_alerts++;
|
||||
}
|
||||
if (tls_global->event_cb != NULL) {
|
||||
union tls_event_data ev;
|
||||
os_memset(&ev, 0, sizeof(ev));
|
||||
ev.alert.is_local = !(where & SSL_CB_READ);
|
||||
ev.alert.type = SSL_alert_type_string_long(ret);
|
||||
ev.alert.description = SSL_alert_desc_string_long(ret);
|
||||
tls_global->event_cb(tls_global->cb_ctx, TLS_ALERT,
|
||||
&ev);
|
||||
}
|
||||
} else if (where & SSL_CB_EXIT && ret <= 0) {
|
||||
wpa_printf(MSG_DEBUG, "SSL: %s:%s in %s",
|
||||
str, ret == 0 ? "failed" : "error",
|
||||
|
@ -1265,6 +1274,10 @@ static int tls_verify_cb(int preverify_ok, X509_STORE_CTX *x509_ctx)
|
|||
TLS_FAIL_SERVER_CHAIN_PROBE);
|
||||
}
|
||||
|
||||
if (preverify_ok && tls_global->event_cb != NULL)
|
||||
tls_global->event_cb(tls_global->cb_ctx,
|
||||
TLS_CERT_CHAIN_SUCCESS, NULL);
|
||||
|
||||
return preverify_ok;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue