Blame doc/man3/OCSP_sendreq_new.pod

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