mirror of
https://github.com/obgm/libcoap.git
synced 2026-11-02 07:55:46 +03:00
Merge pull request #651 from mrdeep1/get_tls
tls: Update coap_session_get_tls() to return actual TLS information
This commit is contained in:
9 files changed
+89
-11
No files matched your search
@@ -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 */
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
----
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user