Lines Matching refs:c_session

23  * c_session  A coap_session_t *
26 * g_env A coap_gnutls_env_t * (held in c_session->tls)
92 * c_session->tls points to this.
267 coap_session_t *c_session =
270 coap_session_str(c_session), text);
441 coap_dtls_get_tls(const coap_session_t *c_session,
445 if (c_session && c_session->tls) {
446 const coap_gnutls_env_t *g_env = (const coap_gnutls_env_t *)c_session->tls;
557 coap_session_t *c_session =
571 if (c_session == NULL)
574 g_context = (coap_gnutls_context_t *)c_session->context->dtls_context;
578 setup_data = &c_session->cpsk_setup_data;
582 coap_session_refresh_psk_hint(c_session, &temp);
594 c_session,
600 coap_session_refresh_psk_identity(c_session, &cpsk_info->identity);
601 coap_session_refresh_psk_key(c_session, &cpsk_info->key);
605 psk_identity = coap_get_session_client_psk_identity(c_session);
606 psk_key = coap_get_session_client_psk_key(c_session);
736 coap_session_t *c_session) {
755 c_session,
776 coap_session_t *c_session =
779 (coap_gnutls_context_t *)c_session->context->dtls_context;
780 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
790 if (!check_rpk_cert(g_context, &cert_info, c_session)) {
810 coap_session_str(c_session),
816 coap_session_str(c_session),
827 coap_session_str(c_session),
833 coap_session_str(c_session),
844 coap_session_str(c_session),
851 coap_session_str(c_session),
858 coap_session_str(c_session),
865 coap_session_str(c_session),
875 coap_session_str(c_session),
904 c_session,
935 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
1455 coap_session_t *c_session =
1458 (coap_gnutls_context_t *)c_session->context->dtls_context;
1459 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
1463 if (c_session->context->spsk_setup_data.validate_sni_call_back) {
1515 c_session->context->spsk_setup_data.validate_sni_call_back(name,
1516 c_session,
1517 c_session->context->spsk_setup_data.sni_call_back_arg);
1531 sni_setup_data = c_session->context->spsk_setup_data;
1549 coap_session_refresh_psk_hint(c_session,
1551 coap_session_refresh_psk_key(c_session,
1569 coap_session_t *c_session =
1572 (coap_gnutls_context_t *)c_session->context->dtls_context;
1573 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
1680 setup_client_ssl_session(coap_session_t *c_session, coap_gnutls_env_t *g_env) {
1682 (coap_gnutls_context_t *)c_session->context->dtls_context;
1687 coap_dtls_cpsk_t *setup_data = &c_session->cpsk_setup_data;
1744 if (c_session->proto == COAP_PROTO_TLS)
1776 coap_session_t *c_session =
1783 if (c_session == NULL)
1786 g_context = (coap_gnutls_context_t *)c_session->context->dtls_context;
1789 setup_data = &c_session->context->spsk_setup_data;
1795 coap_session_refresh_psk_identity(c_session, &lidentity);
1802 c_session,
1805 coap_session_refresh_psk_key(c_session, psk_key);
1807 psk_key = coap_get_session_server_psk_key(c_session);
1826 setup_server_ssl_session(coap_session_t *c_session, coap_gnutls_env_t *g_env) {
1828 (coap_gnutls_context_t *)c_session->context->dtls_context;
1836 &c_session->context->spsk_setup_data),
1886 coap_session_t *c_session = (coap_session_t *)context;
1889 if (!c_session->tls) {
1893 data = &((coap_gnutls_env_t *)c_session->tls)->coap_ssl_data;
1930 coap_session_t *c_session = (coap_session_t *)context;
1932 if (c_session) {
1933 if (!coap_netif_available(c_session)
1935 && c_session->endpoint == NULL
1942 result = c_session->sock.lfunc[COAP_LAYER_TLS].l_write(c_session,
1962 coap_session_t *c_session = (coap_session_t *)context;
1964 if (c_session) {
1967 int nfds = c_session->sock.fd +1;
1968 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
1971 if (c_session->proto == COAP_PROTO_DTLS && g_env &&
1979 FD_SET(c_session->sock.fd, &readfds);
1981 FD_SET(c_session->sock.fd, &writefds);
1982 FD_SET(c_session->sock.fd, &exceptfds);
1994 coap_dtls_new_gnutls_env(coap_session_t *c_session, int type) {
1996 ((coap_gnutls_context_t *)c_session->context->dtls_context);
1997 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2020 gnutls_transport_set_ptr(g_env->g_session, c_session);
2027 G_CHECK(setup_server_ssl_session(c_session, g_env),
2034 G_CHECK(setup_client_ssl_session(c_session, g_env),
2094 coap_dtls_new_server_session(coap_session_t *c_session) {
2096 (coap_gnutls_env_t *)c_session->tls;
2098 gnutls_transport_set_ptr(g_env->g_session, c_session);
2105 log_last_alert(coap_session_t *c_session,
2112 coap_session_str(c_session),
2116 coap_session_str(c_session),
2119 (void)c_session;
2130 do_gnutls_handshake(coap_session_t *c_session, coap_gnutls_env_t *g_env) {
2138 coap_session_str(c_session));
2156 log_last_alert(c_session, g_env->g_session);
2160 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2164 log_last_alert(c_session, g_env->g_session);
2165 c_session->dtls_event = COAP_EVENT_DTLS_ERROR;
2177 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2187 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2192 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2208 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2216 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2231 coap_dtls_new_client_session(coap_session_t *c_session) {
2232 coap_gnutls_env_t *g_env = coap_dtls_new_gnutls_env(c_session, GNUTLS_CLIENT);
2236 ret = do_gnutls_handshake(c_session, g_env);
2238 coap_dtls_free_gnutls_env(c_session->context->dtls_context,
2240 COAP_PROTO_NOT_RELIABLE(c_session->proto) ?
2250 coap_dtls_free_session(coap_session_t *c_session) {
2251 if (c_session && c_session->context && c_session->tls) {
2252 coap_dtls_free_gnutls_env(c_session->context->dtls_context,
2253 c_session->tls,
2254 COAP_PROTO_NOT_RELIABLE(c_session->proto) ?
2256 c_session->tls = NULL;
2257 coap_handle_event(c_session->context, COAP_EVENT_DTLS_CLOSED, c_session);
2262 coap_dtls_session_update_mtu(coap_session_t *c_session) {
2263 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2268 (unsigned int)c_session->mtu),
2280 coap_dtls_send(coap_session_t *c_session,
2283 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2287 c_session->dtls_event = -1;
2299 log_last_alert(c_session, g_env->g_session);
2300 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2315 ret = do_gnutls_handshake(c_session, g_env);
2318 return coap_dtls_send(c_session, data, data_len);
2323 if (c_session->dtls_event >= 0) {
2324 coap_handle_event(c_session->context, c_session->dtls_event, c_session);
2325 if (c_session->dtls_event == COAP_EVENT_DTLS_ERROR ||
2326 c_session->dtls_event == COAP_EVENT_DTLS_CLOSED) {
2327 coap_session_disconnected(c_session, COAP_NACK_TLS_FAILED);
2335 coap_session_str(c_session), ret);
2338 coap_session_str(c_session), ret, data_len);
2354 coap_dtls_get_timeout(coap_session_t *c_session, coap_tick_t now) {
2355 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2357 assert(c_session->state == COAP_SESSION_STATE_HANDSHAKE);
2384 coap_dtls_handle_timeout(coap_session_t *c_session) {
2385 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2387 assert(g_env != NULL && c_session->state == COAP_SESSION_STATE_HANDSHAKE);
2389 if ((++c_session->dtls_timeout_count > c_session->max_retransmit) ||
2390 (do_gnutls_handshake(c_session, g_env) < 0)) {
2393 coap_session_disconnected(c_session, COAP_NACK_TLS_FAILED);
2407 coap_dtls_receive(coap_session_t *c_session, const uint8_t *data,
2409 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2419 coap_session_str(c_session), ssl_data->pdu_len);
2423 c_session->dtls_event = -1;
2425 if (c_session->state == COAP_SESSION_STATE_HANDSHAKE) {
2426 coap_handle_event(c_session->context, COAP_EVENT_DTLS_CONNECTED,
2427 c_session);
2428 gnutls_transport_set_ptr(g_env->g_session, c_session);
2429 c_session->sock.lfunc[COAP_LAYER_TLS].l_establish(c_session);
2433 return coap_handle_dgram(c_session->context, c_session, pdu, (size_t)ret);
2435 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2441 log_last_alert(c_session, g_env->g_session);
2442 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2446 log_last_alert(c_session, g_env->g_session);
2447 c_session->dtls_event = COAP_EVENT_DTLS_ERROR;
2457 ret = do_gnutls_handshake(c_session, g_env);
2459 coap_session_connected(c_session);
2464 ret = do_gnutls_handshake(c_session, g_env);
2467 coap_session_connected(c_session);
2473 if (c_session->dtls_event >= 0) {
2475 if (c_session->dtls_event != COAP_EVENT_DTLS_CLOSED)
2476 coap_handle_event(c_session->context, c_session->dtls_event, c_session);
2477 if (c_session->dtls_event == COAP_EVENT_DTLS_ERROR ||
2478 c_session->dtls_event == COAP_EVENT_DTLS_CLOSED) {
2479 coap_session_disconnected(c_session, COAP_NACK_TLS_FAILED);
2492 coap_session_str(c_session), ret);
2504 coap_dtls_hello(coap_session_t *c_session,
2508 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2513 g_env = coap_dtls_new_gnutls_env(c_session, GNUTLS_SERVER);
2515 c_session->tls = g_env;
2531 &c_session->addr_info,
2532 sizeof(c_session->addr_info),
2538 &c_session->addr_info,
2539 sizeof(c_session->addr_info),
2541 c_session,
2552 ret = do_gnutls_handshake(c_session, g_env);
2558 coap_dtls_free_gnutls_env(((coap_gnutls_context_t *)c_session->context->dtls_context),
2560 c_session->tls = NULL;
2579 coap_dtls_get_overhead(coap_session_t *c_session COAP_UNUSED) {
2593 coap_session_t *c_session = (coap_session_t *)context;
2596 ret = (int)c_session->sock.lfunc[COAP_LAYER_TLS].l_read(c_session, out, outl);
2615 coap_session_t *c_session = (coap_session_t *)context;
2617 ret = (int)c_session->sock.lfunc[COAP_LAYER_TLS].l_write(c_session, in, inl);
2620 if ((c_session->state == COAP_SESSION_STATE_CSM ||
2621 c_session->state == COAP_SESSION_STATE_HANDSHAKE) &&
2637 coap_session_str(c_session), inl, coap_socket_strerror(),
2638 c_session->state);
2650 coap_tls_new_client_session(coap_session_t *c_session) {
2653 ((coap_gnutls_context_t *)c_session->context->dtls_context);
2672 gnutls_transport_set_ptr(g_env->g_session, c_session);
2675 setup_client_ssl_session(c_session, g_env);
2679 c_session->tls = g_env;
2680 ret = do_gnutls_handshake(c_session, g_env);
2682 coap_handle_event(c_session->context, COAP_EVENT_DTLS_CONNECTED, c_session);
2683 c_session->sock.lfunc[COAP_LAYER_TLS].l_establish(c_session);
2696 coap_tls_new_server_session(coap_session_t *c_session) {
2699 ((coap_gnutls_context_t *)c_session->context->dtls_context);
2717 gnutls_transport_set_ptr(g_env->g_session, c_session);
2719 setup_server_ssl_session(c_session, g_env);
2725 c_session->tls = g_env;
2726 ret = do_gnutls_handshake(c_session, g_env);
2728 coap_handle_event(c_session->context, COAP_EVENT_DTLS_CONNECTED, c_session);
2729 c_session->sock.lfunc[COAP_LAYER_TLS].l_establish(c_session);
2739 coap_tls_free_session(coap_session_t *c_session) {
2740 coap_dtls_free_session(c_session);
2750 coap_tls_write(coap_session_t *c_session, const uint8_t *data,
2753 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2757 c_session->dtls_event = -1;
2769 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2774 log_last_alert(c_session, g_env->g_session);
2775 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2789 ret = do_gnutls_handshake(c_session, g_env);
2791 coap_handle_event(c_session->context, COAP_EVENT_DTLS_CONNECTED,
2792 c_session);
2793 c_session->sock.lfunc[COAP_LAYER_TLS].l_establish(c_session);
2800 if (c_session->dtls_event >= 0) {
2802 if (c_session->dtls_event != COAP_EVENT_DTLS_CLOSED)
2803 coap_handle_event(c_session->context, c_session->dtls_event, c_session);
2804 if (c_session->dtls_event == COAP_EVENT_DTLS_ERROR ||
2805 c_session->dtls_event == COAP_EVENT_DTLS_CLOSED) {
2806 coap_session_disconnected(c_session, COAP_NACK_TLS_FAILED);
2814 coap_session_str(c_session), ret);
2817 coap_session_str(c_session), ret, data_len);
2828 coap_tls_read(coap_session_t *c_session, uint8_t *data, size_t data_len) {
2829 coap_gnutls_env_t *g_env = (coap_gnutls_env_t *)c_session->tls;
2837 c_session->dtls_event = -1;
2839 ret = do_gnutls_handshake(c_session, g_env);
2841 coap_handle_event(c_session->context, COAP_EVENT_DTLS_CONNECTED,
2842 c_session);
2843 c_session->sock.lfunc[COAP_LAYER_TLS].l_establish(c_session);
2847 if (c_session->state != COAP_SESSION_STATE_NONE && g_env->established) {
2852 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2859 c_session->dtls_event = COAP_EVENT_DTLS_ERROR;
2864 log_last_alert(c_session, g_env->g_session);
2865 c_session->dtls_event = COAP_EVENT_DTLS_CLOSED;
2868 log_last_alert(c_session, g_env->g_session);
2869 c_session->dtls_event = COAP_EVENT_DTLS_ERROR;
2881 if (c_session->dtls_event >= 0) {
2883 if (c_session->dtls_event != COAP_EVENT_DTLS_CLOSED)
2884 coap_handle_event(c_session->context, c_session->dtls_event, c_session);
2885 if (c_session->dtls_event == COAP_EVENT_DTLS_ERROR ||
2886 c_session->dtls_event == COAP_EVENT_DTLS_CLOSED) {
2887 coap_session_disconnected(c_session, COAP_NACK_TLS_FAILED);
2893 coap_session_str(c_session), ret);