DPP2: Support RA/CA functionality in Controller initiated case
Extend dpp_control_get_auth() to find the ongoing session for enterprise credential provisioning in cases where the Controller/Configurator initiated the exchange. Only the other direction was supported previously. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
b58cd7aa1c
commit
5caf4e094a
1 changed files with 27 additions and 8 deletions
|
@ -1678,6 +1678,29 @@ void dpp_controller_stop(struct dpp_global *dpp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool dpp_tcp_peer_id_match(struct dpp_authentication *auth,
|
||||||
|
unsigned int id)
|
||||||
|
{
|
||||||
|
return auth &&
|
||||||
|
((auth->peer_bi && auth->peer_bi->id == id) ||
|
||||||
|
(auth->tmp_peer_bi && auth->tmp_peer_bi->id == id));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static struct dpp_authentication * dpp_tcp_get_auth(struct dpp_global *dpp,
|
||||||
|
unsigned int id)
|
||||||
|
{
|
||||||
|
struct dpp_connection *conn;
|
||||||
|
|
||||||
|
dl_list_for_each(conn, &dpp->tcp_init, struct dpp_connection, list) {
|
||||||
|
if (dpp_tcp_peer_id_match(conn->auth, id))
|
||||||
|
return conn->auth;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct dpp_authentication * dpp_controller_get_auth(struct dpp_global *dpp,
|
struct dpp_authentication * dpp_controller_get_auth(struct dpp_global *dpp,
|
||||||
unsigned int id)
|
unsigned int id)
|
||||||
{
|
{
|
||||||
|
@ -1685,18 +1708,14 @@ struct dpp_authentication * dpp_controller_get_auth(struct dpp_global *dpp,
|
||||||
struct dpp_connection *conn;
|
struct dpp_connection *conn;
|
||||||
|
|
||||||
if (!ctrl)
|
if (!ctrl)
|
||||||
return NULL;
|
return dpp_tcp_get_auth(dpp, id);
|
||||||
|
|
||||||
dl_list_for_each(conn, &ctrl->conn, struct dpp_connection, list) {
|
dl_list_for_each(conn, &ctrl->conn, struct dpp_connection, list) {
|
||||||
struct dpp_authentication *auth = conn->auth;
|
if (dpp_tcp_peer_id_match(conn->auth, id))
|
||||||
|
return conn->auth;
|
||||||
if (auth &&
|
|
||||||
((auth->peer_bi && auth->peer_bi->id == id) ||
|
|
||||||
(auth->tmp_peer_bi && auth->tmp_peer_bi->id == id)))
|
|
||||||
return auth;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return dpp_tcp_get_auth(dpp, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue