- NAME
- SYNOPSIS
- DESCRIPTION
- RETURN VALUES
- NOTES
- EXAMPLES
- SEE ALSO
- COPYRIGHT

# NAME

OCSP_REQUEST_new, OCSP_REQUEST_free, OCSP_request_add0_id, OCSP_request_sign, OCSP_request_add1_cert, OCSP_request_onereq_count, OCSP_request_onereq_get0 - OCSP request functions

# SYNOPSIS

     #include <openssl/ocsp.h>

     OCSP_REQUEST *OCSP_REQUEST_new(void);
     void OCSP_REQUEST_free(OCSP_REQUEST *req);

     OCSP_ONEREQ *OCSP_request_add0_id(OCSP_REQUEST *req, OCSP_CERTID *cid);

     int OCSP_request_sign(OCSP_REQUEST *req,
                           X509 *signer, EVP_PKEY *key, const EVP_MD *dgst,
                           STACK_OF(X509) *certs, unsigned long flags);

     int OCSP_request_add1_cert(OCSP_REQUEST *req, X509 *cert);

     int OCSP_request_onereq_count(OCSP_REQUEST *req);
     OCSP_ONEREQ *OCSP_request_onereq_get0(OCSP_REQUEST *req, int i);

# DESCRIPTION

`OCSP_REQUEST_new()` allocates and returns an empty OCSP_REQUEST structure.

`OCSP_REQUEST_free()` frees up the request structure req.

OCSP_request_add0_id() adds certificate ID cid to req. It returns the OCSP_ONEREQ structure added so an application can add additional extensions to the request. The id parameter MUST NOT be freed up after the operation.

`OCSP_request_sign()` signs OCSP request req using certificate signer, private key key, digest dgst and additional certificates certs. If the flags option OCSP_NOCERTS is set then no certificates will be included in the request.

OCSP_request_add1_cert() adds certificate cert to request req. The application is responsible for freeing up cert after use.

`OCSP_request_onereq_count()` returns the total number of OCSP_ONEREQ structures in req.

OCSP_request_onereq_get0() returns an internal pointer to the OCSP_ONEREQ contained in req of index i. The index value i runs from 0 to OCSP_request_onereq_count(req) - 1.

# RETURN VALUES

`OCSP_REQUEST_new()` returns an empty OCSP_REQUEST structure or NULL if an error occurred.

OCSP_request_add0_id() returns the OCSP_ONEREQ structure containing cid or NULL if an error occurred.

`OCSP_request_sign()` and OCSP_request_add1_cert() return 1 for success and 0 for failure.

`OCSP_request_onereq_count()` returns the total number of OCSP_ONEREQ structures in req and -1 on error.

OCSP_request_onereq_get0() returns a pointer to an OCSP_ONEREQ structure or NULL if the index value is out or range.

# NOTES

An OCSP request structure contains one or more OCSP_ONEREQ structures corresponding to each certificate.

`OCSP_request_onereq_count()` and OCSP_request_onereq_get0() are mainly used by OCSP responders.

# EXAMPLES

Create an OCSP_REQUEST structure for certificate cert with issuer issuer:

     OCSP_REQUEST *req;
     OCSP_ID *cid;

     req = OCSP_REQUEST_new();
     if (req == NULL)
        /* error */
     cid = OCSP_cert_to_id(EVP_sha1(), cert, issuer);
     if (cid == NULL)
        /* error */

     if (OCSP_REQUEST_add0_id(req, cid) == NULL)
        /* error */

     /* Do something with req, e.g. query responder */

     OCSP_REQUEST_free(req);

# SEE ALSO

crypto(7), OCSP_cert_to_id(3), OCSP_request_add1_nonce(3), OCSP_resp_find_status(3), OCSP_response_status(3), OCSP_sendreq_new(3)

# COPYRIGHT

Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.