Use wpabuf with tls_connection_ia_send_phase_finished()

This commit is contained in:
Jouni Malinen 2009-12-20 21:33:32 +02:00
parent a206a29a54
commit 496c5d981e
9 changed files with 44 additions and 81 deletions

View file

@ -484,16 +484,13 @@ unsigned int tls_capabilities(void *tls_ctx);
* @tls_ctx: TLS context data from tls_init()
* @conn: Connection context data from tls_connection_init()
* @final: 1 = FinalPhaseFinished, 0 = IntermediatePhaseFinished
* @out_data: Pointer to output buffer (encrypted TLS/IA data)
* @out_len: Maximum out_data length
* Returns: Number of bytes written to out_data on success, -1 on failure
* Returns: Encrypted TLS/IA data, %NULL on failure
*
* This function is used to send the TLS/IA end phase message, e.g., when the
* EAP server completes EAP-TTLSv1.
*/
int __must_check tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final,
u8 *out_data, size_t out_len);
struct wpabuf * tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final);
/**
* tls_connection_ia_final_phase_finished - Has final phase been completed

View file

@ -1336,16 +1336,15 @@ int tls_connection_set_ia(void *tls_ctx, struct tls_connection *conn,
}
int tls_connection_ia_send_phase_finished(void *tls_ctx,
struct tls_connection *conn,
int final,
u8 *out_data, size_t out_len)
struct wpabuf * tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final)
{
#ifdef GNUTLS_IA
int ret;
struct wpabuf *buf;
if (conn == NULL || conn->session == NULL || !conn->tls_ia)
return -1;
return NULL;
ret = gnutls_ia_permute_inner_secret(conn->session,
conn->session_keys_len,
@ -1359,26 +1358,21 @@ int tls_connection_ia_send_phase_finished(void *tls_ctx,
if (ret) {
wpa_printf(MSG_DEBUG, "%s: Failed to permute inner secret: %s",
__func__, gnutls_strerror(ret));
return -1;
return NULL;
}
ret = gnutls_ia_endphase_send(conn->session, final);
if (ret) {
wpa_printf(MSG_DEBUG, "%s: Failed to send endphase: %s",
__func__, gnutls_strerror(ret));
return -1;
return NULL;
}
if (conn->push_buf == NULL)
return -1;
if (wpabuf_len(conn->push_buf) < out_len)
out_len = wpabuf_len(conn->push_buf);
os_memcpy(out_data, wpabuf_head(conn->push_buf), out_len);
wpabuf_free(conn->push_buf);
buf = conn->push_buf;
conn->push_buf = NULL;
return out_len;
return buf;
#else /* GNUTLS_IA */
return -1;
return NULL;
#endif /* GNUTLS_IA */
}

View file

@ -608,12 +608,10 @@ unsigned int tls_capabilities(void *tls_ctx)
}
int tls_connection_ia_send_phase_finished(void *tls_ctx,
struct tls_connection *conn,
int final,
u8 *out_data, size_t out_len)
struct wpabuf * tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final)
{
return -1;
return NULL;
}

View file

@ -207,12 +207,10 @@ unsigned int tls_capabilities(void *tls_ctx)
}
int tls_connection_ia_send_phase_finished(void *tls_ctx,
struct tls_connection *conn,
int final,
u8 *out_data, size_t out_len)
struct wpabuf * tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final)
{
return -1;
return NULL;
}

View file

@ -649,12 +649,10 @@ unsigned int tls_capabilities(void *tls_ctx)
}
int tls_connection_ia_send_phase_finished(void *tls_ctx,
struct tls_connection *conn,
int final,
u8 *out_data, size_t out_len)
struct wpabuf * tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final)
{
return -1;
return NULL;
}

View file

@ -2493,12 +2493,10 @@ int tls_connection_set_ia(void *tls_ctx, struct tls_connection *conn,
}
int tls_connection_ia_send_phase_finished(void *tls_ctx,
struct tls_connection *conn,
int final,
u8 *out_data, size_t out_len)
struct wpabuf * tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final)
{
return -1;
return NULL;
}

View file

@ -745,12 +745,10 @@ int tls_connection_set_ia(void *tls_ctx, struct tls_connection *conn,
}
int tls_connection_ia_send_phase_finished(void *tls_ctx,
struct tls_connection *conn,
int final,
u8 *out_data, size_t out_len)
struct wpabuf * tls_connection_ia_send_phase_finished(
void *tls_ctx, struct tls_connection *conn, int final);
{
return -1;
return NULL;
}