| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:29:12 +08:00
										 |  |  | OCSP_REQ_CTX, | 
					
						
							| 
									
										
										
										
											2020-12-12 03:18:46 +08:00
										 |  |  | OCSP_sendreq_new, | 
					
						
							|  |  |  | OCSP_sendreq_nbio, | 
					
						
							|  |  |  | OCSP_sendreq_bio, | 
					
						
							|  |  |  | OCSP_REQ_CTX_i2d, | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | OCSP_REQ_CTX_add1_header, | 
					
						
							|  |  |  | OCSP_REQ_CTX_free, | 
					
						
							|  |  |  | OCSP_set_max_response_length, | 
					
						
							| 
									
										
										
										
											2020-12-12 03:18:46 +08:00
										 |  |  | OCSP_REQ_CTX_set1_req | 
					
						
							|  |  |  | - OCSP responder query functions | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/ocsp.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  |  OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  |                                      const OCSP_REQUEST *req, int buf_size); | 
					
						
							| 
									
										
										
										
											2019-10-31 06:39:35 +08:00
										 |  |  |  OCSP_RESPONSE *OCSP_sendreq_bio(BIO *io, const char *path, OCSP_REQUEST *req); | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-02 19:33:49 +08:00
										 |  |  | The following functions have been deprecated since OpenSSL 3.0, and can be | 
					
						
							|  |  |  | hidden entirely by defining B<OPENSSL_API_COMPAT> with a suitable version value, | 
					
						
							|  |  |  | see L<openssl_user_macros(7)>: | 
					
						
							| 
									
										
										
										
											2020-12-05 23:42:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:29:12 +08:00
										 |  |  |  typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  |  int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OSSL_HTTP_REQ_CTX *rctx); | 
					
						
							| 
									
										
										
										
											2021-01-18 19:53:55 +08:00
										 |  |  |  int OCSP_REQ_CTX_i2d(OCSP_REQ_CT *rctx, const ASN1_ITEM *it, ASN1_VALUE *req); | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  |  int OCSP_REQ_CTX_add1_header(OCSP_REQ_CT *rctx, | 
					
						
							|  |  |  |                               const char *name, const char *value); | 
					
						
							| 
									
										
										
										
											2021-05-01 00:29:12 +08:00
										 |  |  |  void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx); | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  |  void OCSP_set_max_response_length(OCSP_REQ_CT *rctx, unsigned long len); | 
					
						
							| 
									
										
										
										
											2021-05-01 00:29:12 +08:00
										 |  |  |  int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, const OCSP_REQUEST *req); | 
					
						
							| 
									
										
										
										
											2020-12-05 23:42:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 19:53:55 +08:00
										 |  |  | These functions perform an OCSP POST request / response transfer over HTTP, | 
					
						
							|  |  |  | using the HTTP request functions described in L<OSSL_HTTP_REQ_CTX(3)>. | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | The function OCSP_sendreq_new() builds a complete B<OSSL_HTTP_REQ_CTX> structure | 
					
						
							| 
									
										
										
										
											2022-01-03 07:00:27 +08:00
										 |  |  | with the B<BIO> I<io> to be used for requests and response, the URL path I<path>, | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | optionally the OCSP request I<req>, and a response header maximum line length | 
					
						
							|  |  |  | of I<buf_size>. If I<buf_size> is zero a default value of 4KiB is used. | 
					
						
							| 
									
										
										
										
											2021-01-18 19:53:55 +08:00
										 |  |  | The I<req> may be set to NULL and provided later using OCSP_REQ_CTX_set1_req() | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | or L<OSSL_HTTP_REQ_CTX_set1_req(3)>. | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | The I<io> and I<path> arguments to OCSP_sendreq_new() correspond to the | 
					
						
							|  |  |  | components of the URL. | 
					
						
							|  |  |  | For example if the responder URL is C<http://example.com/ocspreq> the BIO | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | I<io> should haven been connected to host C<example.com> on port 80 and I<path> | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | should be set to C</ocspreq>. | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | OCSP_sendreq_nbio() attempts to send the request prepared in I<rctx> | 
					
						
							|  |  |  | and to gather the response via HTTP, using the BIO I<io> and I<path> | 
					
						
							|  |  |  | that were given when calling OCSP_sendreq_new(). | 
					
						
							|  |  |  | If the operation gets completed it assigns the response, | 
					
						
							|  |  |  | a pointer to a B<OCSP_RESPONSE> structure, in I<*presp>. | 
					
						
							|  |  |  | The function may need to be called again if its result is -1, which indicates | 
					
						
							|  |  |  | L<BIO_should_retry(3)>.  In such a case it is advisable to sleep a little in | 
					
						
							|  |  |  | between, using L<BIO_wait(3)> on the read BIO to prevent a busy loop. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | OCSP_sendreq_bio() combines OCSP_sendreq_new() with as many calls of | 
					
						
							|  |  |  | OCSP_sendreq_nbio() as needed and then OCSP_REQ_CTX_free(), with a | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | response header maximum line length 4k. It waits indefinitely on a response. | 
					
						
							|  |  |  | It does not support setting a timeout or adding headers and is retained | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | for compatibility; use L<OSSL_HTTP_transfer(3)> instead. | 
					
						
							| 
									
										
										
										
											2020-12-12 03:18:46 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 19:53:55 +08:00
										 |  |  | OCSP_REQ_CTX_i2d(rctx, it, req) is equivalent to the following: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 05:17:46 +08:00
										 |  |  |   OSSL_HTTP_REQ_CTX_set1_req(rctx, "application/ocsp-request", it, req) | 
					
						
							| 
									
										
										
										
											2021-01-18 19:53:55 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-12 03:18:46 +08:00
										 |  |  | OCSP_REQ_CTX_set1_req(rctx, req) is equivalent to the following: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-21 05:17:46 +08:00
										 |  |  |  OSSL_HTTP_REQ_CTX_set1_req(rctx, "application/ocsp-request", | 
					
						
							| 
									
										
										
										
											2021-05-01 00:29:12 +08:00
										 |  |  |                             ASN1_ITEM_rptr(OCSP_REQUEST), | 
					
						
							|  |  |  |                             (const ASN1_VALUE *)req) | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 00:29:12 +08:00
										 |  |  | The deprecated type and the remaining deprecated functions | 
					
						
							|  |  |  | have been superseded by the following equivalents: | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | B<OCSP_REQ_CTX> by L<OSSL_HTTP_REQ_CTX(3)>, | 
					
						
							|  |  |  | OCSP_REQ_CTX_add1_header() by L<OSSL_HTTP_REQ_CTX_add1_header(3)>, | 
					
						
							|  |  |  | OCSP_REQ_CTX_free() by L<OSSL_HTTP_REQ_CTX_free(3)>, and | 
					
						
							|  |  |  | OCSP_set_max_response_length() by | 
					
						
							|  |  |  | L<OSSL_HTTP_REQ_CTX_set_max_response_length(3)>. | 
					
						
							| 
									
										
										
										
											2020-12-05 23:42:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | OCSP_sendreq_new() returns a valid B<OSSL_HTTP_REQ_CTX> structure or NULL | 
					
						
							| 
									
										
										
										
											2019-10-31 06:39:35 +08:00
										 |  |  | if an error occurred. | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | OCSP_sendreq_nbio() returns 1 for success, 0 on error, -1 if retry is needed. | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | OCSP_sendreq_bio() returns the B<OCSP_RESPONSE> structure sent by the | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | responder or NULL if an error occurred. | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-05 06:09:43 +08:00
										 |  |  | L<OSSL_HTTP_REQ_CTX(3)>, L<OSSL_HTTP_transfer(3)>, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<OCSP_cert_to_id(3)>, | 
					
						
							|  |  |  | L<OCSP_request_add1_nonce(3)>, | 
					
						
							|  |  |  | L<OCSP_REQUEST_new(3)>, | 
					
						
							| 
									
										
										
										
											2016-11-11 16:33:09 +08:00
										 |  |  | L<OCSP_resp_find_status(3)>, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<OCSP_response_status(3)> | 
					
						
							| 
									
										
										
										
											2014-06-22 03:13:37 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-05 23:42:18 +08:00
										 |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-26 23:21:41 +08:00
										 |  |  | B<OCSP_REQ_CTX>, | 
					
						
							|  |  |  | OCSP_REQ_CTX_i2d(), | 
					
						
							|  |  |  | OCSP_REQ_CTX_add1_header(), | 
					
						
							|  |  |  | OCSP_REQ_CTX_free(), | 
					
						
							|  |  |  | OCSP_set_max_response_length(), | 
					
						
							|  |  |  | and OCSP_REQ_CTX_set1_req() | 
					
						
							|  |  |  | were deprecated in OpenSSL 3.0. | 
					
						
							| 
									
										
										
										
											2020-12-05 23:42:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-03 18:52:38 +08:00
										 |  |  | Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-06 21:04:44 +08:00
										 |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |