diff options
Diffstat (limited to 'lib/ext/status_request.c')
-rw-r--r-- | lib/ext/status_request.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/ext/status_request.c b/lib/ext/status_request.c index d99aab6a1a..a16a092e22 100644 --- a/lib/ext/status_request.c +++ b/lib/ext/status_request.c @@ -172,7 +172,24 @@ server_send(gnutls_session_t session, if (cred == NULL) /* no certificate authentication */ return gnutls_assert_val(0); - if (session->internals.selected_ocsp_func) { + if (session->internals.selected_ocsp_length > 0) { + if (session->internals.selected_ocsp[0].response.data) { + if (session->internals.selected_ocsp[0].exptime != 0 && + (gnutls_time(0) >= session->internals.selected_ocsp[0].exptime)) { + gnutls_assert(); + return 0; + } + + ret = _gnutls_set_datum(&priv->sresp, + session->internals.selected_ocsp[0].response.data, + session->internals.selected_ocsp[0].response.size); + if (ret < 0) + return gnutls_assert_val(ret); + return GNUTLS_E_INT_RET_0; + } else { + return 0; + } + } else if (session->internals.selected_ocsp_func) { func = session->internals.selected_ocsp_func; func_ptr = session->internals.selected_ocsp_func_ptr; } else if (cred->glob_ocsp_func) { |