|
| 1 | +diff --git a/include/lsquic.h b/include/lsquic.h |
| 2 | +index 389fbcc..c38d027 100644 |
| 3 | +--- a/include/lsquic.h |
| 4 | ++++ b/include/lsquic.h |
| 5 | +@@ -1671,6 +1671,10 @@ int lsquic_stream_close(lsquic_stream_t *s); |
| 6 | + int |
| 7 | + lsquic_stream_has_unacked_data (lsquic_stream_t *s); |
| 8 | + |
| 9 | ++/* Return SSL object associated with this connection */ |
| 10 | ++struct ssl_st * |
| 11 | ++lsquic_conn_ssl(struct lsquic_conn *conn); |
| 12 | ++ |
| 13 | + /** |
| 14 | + * Get certificate chain returned by the server. This can be used for |
| 15 | + * server certificate verification. |
| 16 | +diff --git a/src/liblsquic/lsquic_conn.c b/src/liblsquic/lsquic_conn.c |
| 17 | +index f76550d..31e5285 100644 |
| 18 | +--- a/src/liblsquic/lsquic_conn.c |
| 19 | ++++ b/src/liblsquic/lsquic_conn.c |
| 20 | +@@ -128,6 +128,12 @@ lsquic_conn_crypto_alg_keysize (const lsquic_conn_t *lconn) |
| 21 | + } |
| 22 | + |
| 23 | + |
| 24 | ++struct ssl_st * |
| 25 | ++lsquic_conn_ssl(struct lsquic_conn *lconn) { |
| 26 | ++ return lconn->cn_esf_c->esf_get_ssl(lconn->cn_enc_session); |
| 27 | ++} |
| 28 | ++ |
| 29 | ++ |
| 30 | + struct stack_st_X509 * |
| 31 | + lsquic_conn_get_server_cert_chain (struct lsquic_conn *lconn) |
| 32 | + { |
| 33 | +diff --git a/src/liblsquic/lsquic_enc_sess.h b/src/liblsquic/lsquic_enc_sess.h |
| 34 | +index f45c15f..3505fbd 100644 |
| 35 | +--- a/src/liblsquic/lsquic_enc_sess.h |
| 36 | ++++ b/src/liblsquic/lsquic_enc_sess.h |
| 37 | +@@ -115,6 +115,9 @@ struct enc_session_funcs_common |
| 38 | + (*esf_decrypt_packet)(enc_session_t *, struct lsquic_engine_public *, |
| 39 | + const struct lsquic_conn *, struct lsquic_packet_in *); |
| 40 | + |
| 41 | ++ struct ssl_st * |
| 42 | ++ (*esf_get_ssl)(enc_session_t *); |
| 43 | ++ |
| 44 | + struct stack_st_X509 * |
| 45 | + (*esf_get_server_cert_chain) (enc_session_t *); |
| 46 | + |
| 47 | +diff --git a/src/liblsquic/lsquic_enc_sess_ietf.c b/src/liblsquic/lsquic_enc_sess_ietf.c |
| 48 | +index 66329c1..076c4c5 100644 |
| 49 | +--- a/src/liblsquic/lsquic_enc_sess_ietf.c |
| 50 | ++++ b/src/liblsquic/lsquic_enc_sess_ietf.c |
| 51 | +@@ -2519,6 +2519,13 @@ iquic_esf_global_cleanup (void) |
| 52 | + } |
| 53 | + |
| 54 | + |
| 55 | ++static struct ssl_st * |
| 56 | ++iquic_esf_get_ssl(enc_session_t *enc_session_p) { |
| 57 | ++ struct enc_sess_iquic *const enc_sess = enc_session_p; |
| 58 | ++ return enc_sess->esi_ssl; |
| 59 | ++} |
| 60 | ++ |
| 61 | ++ |
| 62 | + static struct stack_st_X509 * |
| 63 | + iquic_esf_get_server_cert_chain (enc_session_t *enc_session_p) |
| 64 | + { |
| 65 | +@@ -2744,6 +2751,7 @@ const struct enc_session_funcs_common lsquic_enc_session_common_ietf_v1 = |
| 66 | + .esf_global_cleanup = iquic_esf_global_cleanup, |
| 67 | + .esf_global_init = iquic_esf_global_init, |
| 68 | + .esf_tag_len = IQUIC_TAG_LEN, |
| 69 | ++ .esf_get_ssl = iquic_esf_get_ssl, |
| 70 | + .esf_get_server_cert_chain |
| 71 | + = iquic_esf_get_server_cert_chain, |
| 72 | + .esf_get_sni = iquic_esf_get_sni, |
| 73 | +@@ -2763,6 +2771,7 @@ const struct enc_session_funcs_common lsquic_enc_session_common_ietf_v1_no_flush |
| 74 | + .esf_global_cleanup = iquic_esf_global_cleanup, |
| 75 | + .esf_global_init = iquic_esf_global_init, |
| 76 | + .esf_tag_len = IQUIC_TAG_LEN, |
| 77 | ++ .esf_get_ssl = iquic_esf_get_ssl, |
| 78 | + .esf_get_server_cert_chain |
| 79 | + = iquic_esf_get_server_cert_chain, |
| 80 | + .esf_get_sni = iquic_esf_get_sni, |
0 commit comments