Merge pull request #651 from mrdeep1/get_tls

tls: Update coap_session_get_tls() to return actual TLS information
This commit is contained in:
obgm authored and GitHub committed 2021-04-21 12:59:53 +02:00
commit cbd1ded66e
9 files changed
+89 -11

No files matched your search

+11
View File
@@ -327,6 +327,17 @@ void coap_dtls_startup(void);
*/
void coap_dtls_shutdown(void);
/**
* Get the actual (D)TLS object for the session.
*
* @param session The session.
* @param tls_lib Updated with the library type.
*
* @return The TLS information.
*/
void *coap_dtls_get_tls(const coap_session_t *session,
coap_tls_library_t *tls_lib);
/** @} */
#endif /* COAP_DTLS_INTERNAL_H */
+6 -4
View File
@@ -162,15 +162,17 @@ int coap_session_get_ifindex(const coap_session_t *session);
* Get the session TLS security ptr (TLS type dependent)
*
* OpenSSL: SSL*
* GnuTLS: coap_gnutls_env_t*
* Mbed TLS: coap_mbedtls_env_t*
* TinyDTLS: session_t*
* GnuTLS: gnutls_session_t (implicit *)
* Mbed TLS: mbedtls_ssl_context*
* TinyDTLS: struct dtls_context*
*
* @param session The CoAP session.
* @param tls_lib Updated with the library type.
*
* @return The session TLS ptr or @c NULL if not set up
*/
void *coap_session_get_tls(const coap_session_t *session);
void *coap_session_get_tls(const coap_session_t *session,
coap_tls_library_t *tls_lib);
/**
* Get the session context
+7 -5
View File
@@ -59,7 +59,8 @@ const coap_session_t *_session_);*
*coap_session_state_t coap_session_get_state(const coap_session_t *_session_);*
*void *coap_session_get_tls(const coap_session_t *_session_);*
*void *coap_session_get_tls(const coap_session_t *_session_,
coap_tls_library_t *tls_lib);*
*coap_session_type_t coap_session_get_type(const coap_session_t *_session_);*
@@ -158,13 +159,14 @@ of the _session_.
[source, c]
----
OpenSSL: SSL*
GnuTLS: coap_gnutls_env_t*
Mbed TLS: coap_mbedtls_env_t*
TinyDTLS: session_t*
GnuTLS: gnutls_session_t (implicit *)
Mbed TLS: mbedtls_ssl_context*
TinyDTLS: struct dtls_context*
----
The *coap_session_get_tls*() function is used to get the pointer to the TLS
information from the _session_. This is TLS library specific.
information from the _session_. This is TLS library specific. _tls_lib_ is
updated with the underlying (D)TLS library type.
[source, c]
----
+13
View File
@@ -379,6 +379,19 @@ void coap_dtls_startup(void) {
void coap_dtls_shutdown(void) {
}
void *
coap_dtls_get_tls(const coap_session_t *c_session,
coap_tls_library_t *tls_lib) {
if (tls_lib)
*tls_lib = COAP_TLS_LIBRARY_GNUTLS;
if (c_session && c_session->tls) {
const coap_gnutls_env_t *g_env = (const coap_gnutls_env_t *)c_session->tls;
return g_env->g_session;
}
return NULL;
}
void
coap_dtls_set_log_level(int level) {
dtls_log_level = level;
+16
View File
@@ -1937,6 +1937,22 @@ void coap_dtls_startup(void)
void coap_dtls_shutdown(void) {
}
void *
coap_dtls_get_tls(const coap_session_t *c_session,
coap_tls_library_t *tls_lib) {
if (tls_lib)
*tls_lib = COAP_TLS_LIBRARY_MBEDTLS;
if (c_session && c_session->tls) {
coap_mbedtls_env_t *m_env;
/* To get around const issue */
memcpy(&m_env, &c_session->tls, sizeof(m_env));
return (void *)&m_env->ssl;
}
return NULL;
}
static int keep_log_level = 0;
void coap_dtls_set_log_level(int level)
+8
View File
@@ -70,6 +70,14 @@ static int dtls_log_level = 0;
void coap_dtls_startup(void) {
}
void *
coap_dtls_get_tls(const coap_session_t *c_session COAP_UNUSED,
coap_tls_library_t *tls_lib) {
if (tls_lib)
*tls_lib = COAP_TLS_LIBRARY_NOTLS;
return NULL;
}
void coap_dtls_shutdown(void) {
}
+11
View File
@@ -215,6 +215,17 @@ void coap_dtls_shutdown(void) {
}
}
void *
coap_dtls_get_tls(const coap_session_t *c_session,
coap_tls_library_t *tls_lib) {
if (tls_lib)
*tls_lib = COAP_TLS_LIBRARY_OPENSSL;
if (c_session) {
return c_session->tls;
}
return NULL;
}
static int dtls_log_level = 0;
void coap_dtls_set_log_level(int level) {
+3 -2
View File
@@ -1218,9 +1218,10 @@ int coap_session_get_ifindex(const coap_session_t *session) {
return -1;
}
void *coap_session_get_tls(const coap_session_t *session) {
void *coap_session_get_tls(const coap_session_t *session,
coap_tls_library_t *tls_lib) {
if (session)
return session->tls;
return coap_dtls_get_tls(session, tls_lib);
return NULL;
}
+14
View File
@@ -51,6 +51,20 @@ void coap_dtls_startup(void) {
void coap_dtls_shutdown(void) {
}
void *
coap_dtls_get_tls(const coap_session_t *c_session,
coap_tls_library_t *tls_lib) {
if (tls_lib)
*tls_lib = COAP_TLS_LIBRARY_TINYDTLS;
if (c_session && c_session->context && c_session->context->dtls_context) {
const coap_tiny_context_t *t_context =
(const coap_tiny_context_t *)c_session->context->dtls_context;
return t_context->dtls_context;
}
return NULL;
}
void
coap_dtls_set_log_level(int level) {
dtls_set_log_level(level);