Blame doc/man3/OCSP_sendreq_new.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
OCSP_sendreq_new, OCSP_sendreq_nbio, OCSP_REQ_CTX_free,
Packit Service 084de1
OCSP_set_max_response_length, OCSP_REQ_CTX_add1_header,
Packit Service 084de1
OCSP_REQ_CTX_set1_req, OCSP_sendreq_bio - OCSP responder query functions
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
 #include <openssl/ocsp.h>
Packit Service 084de1
Packit Service 084de1
 OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req,
Packit Service 084de1
                                int maxline);
Packit Service 084de1
Packit Service 084de1
 int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx);
Packit Service 084de1
Packit Service 084de1
 void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx);
Packit Service 084de1
Packit Service 084de1
 void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len);
Packit Service 084de1
Packit Service 084de1
 int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,
Packit Service 084de1
                              const char *name, const char *value);
Packit Service 084de1
Packit Service 084de1
 int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req);
Packit Service 084de1
Packit Service 084de1
 OCSP_RESPONSE *OCSP_sendreq_bio(BIO *io, const char *path, OCSP_REQUEST *req);
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
The function OCSP_sendreq_new() returns an B<OCSP_CTX> structure using the
Packit Service 084de1
responder B<io>, the URL path B<path>, the OCSP request B<req> and with a
Packit Service 084de1
response header maximum line length of B<maxline>. If B<maxline> is zero a
Packit Service 084de1
default value of 4k is used. The OCSP request B<req> may be set to B<NULL>
Packit Service 084de1
and provided later if required.
Packit Service 084de1
Packit Service 084de1
OCSP_sendreq_nbio() performs non-blocking I/O on the OCSP request context
Packit Service 084de1
B<rctx>. When the operation is complete it returns the response in B<*presp>.
Packit Service 084de1
Packit Service 084de1
OCSP_REQ_CTX_free() frees up the OCSP context B<rctx>.
Packit Service 084de1
Packit Service 084de1
OCSP_set_max_response_length() sets the maximum response length for B<rctx>
Packit Service 084de1
to B<len>. If the response exceeds this length an error occurs. If not
Packit Service 084de1
set a default value of 100k is used.
Packit Service 084de1
Packit Service 084de1
OCSP_REQ_CTX_add1_header() adds header B<name> with value B<value> to the
Packit Service 084de1
context B<rctx>. It can be called more than once to add multiple headers.
Packit Service 084de1
It B<MUST> be called before any calls to OCSP_sendreq_nbio(). The B<req>
Packit Service 084de1
parameter in the initial to OCSP_sendreq_new() call MUST be set to B<NULL> if
Packit Service 084de1
additional headers are set.
Packit Service 084de1
Packit Service 084de1
OCSP_REQ_CTX_set1_req() sets the OCSP request in B<rctx> to B<req>. This
Packit Service 084de1
function should be called after any calls to OCSP_REQ_CTX_add1_header().
Packit Service 084de1
Packit Service 084de1
OCSP_sendreq_bio() performs an OCSP request using the responder B<io>, the URL
Packit Service 084de1
path B<path>, and the OCSP request B<req> with a response header maximum line
Packit Service 084de1
length 4k. It waits indefinitely on a response.
Packit Service 084de1
Packit Service 084de1
=head1 RETURN VALUES
Packit Service 084de1
Packit Service 084de1
OCSP_sendreq_new() returns a valid B<OCSP_REQ_CTX> structure or B<NULL> if
Packit Service 084de1
an error occurred.
Packit Service 084de1
Packit Service 084de1
OCSP_sendreq_nbio() returns B<1> if the operation was completed successfully,
Packit Service 084de1
B<-1> if the operation should be retried and B<0> if an error occurred.
Packit Service 084de1
Packit Service 084de1
OCSP_REQ_CTX_add1_header() and OCSP_REQ_CTX_set1_req() return B<1> for success
Packit Service 084de1
and B<0> for failure.
Packit Service 084de1
Packit Service 084de1
OCSP_sendreq_bio() returns the B<OCSP_RESPONSE> structure sent by the
Packit Service 084de1
responder or B<NULL> if an error occurred.
Packit Service 084de1
Packit Service 084de1
OCSP_REQ_CTX_free() and OCSP_set_max_response_length() do not return values.
Packit Service 084de1
Packit Service 084de1
=head1 NOTES
Packit Service 084de1
Packit Service 084de1
These functions only perform a minimal HTTP query to a responder. If an
Packit Service 084de1
application wishes to support more advanced features it should use an
Packit Service 084de1
alternative more complete HTTP library.
Packit Service 084de1
Packit Service 084de1
Currently only HTTP POST queries to responders are supported.
Packit Service 084de1
Packit Service 084de1
The arguments to OCSP_sendreq_new() correspond to the components of the URL.
Packit Service 084de1
For example if the responder URL is B<http://ocsp.com/ocspreq> the BIO
Packit Service 084de1
B<io> should be connected to host B<ocsp.com> on port 80 and B<path>
Packit Service 084de1
should be set to B<"/ocspreq">
Packit Service 084de1
Packit Service 084de1
The headers added with OCSP_REQ_CTX_add1_header() are of the form
Packit Service 084de1
"B<name>: B<value>" or just "B<name>" if B<value> is B<NULL>. So to add
Packit Service 084de1
a Host header for B<ocsp.com> you would call:
Packit Service 084de1
Packit Service 084de1
 OCSP_REQ_CTX_add1_header(ctx, "Host", "ocsp.com");
Packit Service 084de1
Packit Service 084de1
If OCSP_sendreq_nbio() indicates an operation should be retried the
Packit Service 084de1
corresponding BIO can be examined to determine which operation (read or
Packit Service 084de1
write) should be retried and appropriate action taken (for example a select()
Packit Service 084de1
call on the underlying socket).
Packit Service 084de1
Packit Service 084de1
OCSP_sendreq_bio() does not support retries and so cannot handle non-blocking
Packit Service 084de1
I/O efficiently. It is retained for compatibility and its use in new
Packit Service 084de1
applications is not recommended.
Packit Service 084de1
Packit Service 084de1
=head1 SEE ALSO
Packit Service 084de1
Packit Service 084de1
L<crypto(7)>,
Packit Service 084de1
L<OCSP_cert_to_id(3)>,
Packit Service 084de1
L<OCSP_request_add1_nonce(3)>,
Packit Service 084de1
L<OCSP_REQUEST_new(3)>,
Packit Service 084de1
L<OCSP_resp_find_status(3)>,
Packit Service 084de1
L<OCSP_response_status(3)>
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut