Handle negative reply for NNTP STARTTLS in s_client
[openssl.git] / doc / man3 / OCSP_resp_find_status.pod
1 =pod
2
3 =head1 NAME
4
5 OCSP_resp_get0_certs,
6 OCSP_resp_get0_id,
7 OCSP_resp_get0_produced_at,
8 OCSP_resp_find_status, OCSP_resp_count, OCSP_resp_get0, OCSP_resp_find,
9 OCSP_single_get0_status, OCSP_check_validity
10 - OCSP response utility functions
11
12 =head1 SYNOPSIS
13
14  #include <openssl/ocsp.h>
15
16  int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
17                            int *reason,
18                            ASN1_GENERALIZEDTIME **revtime,
19                            ASN1_GENERALIZEDTIME **thisupd,
20                            ASN1_GENERALIZEDTIME **nextupd);
21
22  int OCSP_resp_count(OCSP_BASICRESP *bs);
23  OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
24  int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
25  int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
26                              ASN1_GENERALIZEDTIME **revtime,
27                              ASN1_GENERALIZEDTIME **thisupd,
28                              ASN1_GENERALIZEDTIME **nextupd);
29
30  const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(
31                              const OCSP_BASICRESP* single);
32
33  const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs);
34
35  int OCSP_resp_get0_id(const OCSP_BASICRESP *bs,
36                        const ASN1_OCTET_STRING **pid,
37                        const X509_NAME **pname);
38
39  int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
40                          ASN1_GENERALIZEDTIME *nextupd,
41                          long sec, long maxsec);
42
43 =head1 DESCRIPTION
44
45 OCSP_resp_find_status() searches B<bs> for an OCSP response for B<id>. If it is
46 successful the fields of the response are returned in B<*status>, B<*reason>,
47 B<*revtime>, B<*thisupd> and B<*nextupd>.  The B<*status> value will be one of
48 B<V_OCSP_CERTSTATUS_GOOD>, B<V_OCSP_CERTSTATUS_REVOKED> or
49 B<V_OCSP_CERTSTATUS_UNKNOWN>. The B<*reason> and B<*revtime> fields are only
50 set if the status is B<V_OCSP_CERTSTATUS_REVOKED>. If set the B<*reason> field
51 will be set to the revocation reason which will be one of
52 B<OCSP_REVOKED_STATUS_NOSTATUS>, B<OCSP_REVOKED_STATUS_UNSPECIFIED>,
53 B<OCSP_REVOKED_STATUS_KEYCOMPROMISE>, B<OCSP_REVOKED_STATUS_CACOMPROMISE>,
54 B<OCSP_REVOKED_STATUS_AFFILIATIONCHANGED>, B<OCSP_REVOKED_STATUS_SUPERSEDED>,
55 B<OCSP_REVOKED_STATUS_CESSATIONOFOPERATION>,
56 B<OCSP_REVOKED_STATUS_CERTIFICATEHOLD> or B<OCSP_REVOKED_STATUS_REMOVEFROMCRL>.
57
58 OCSP_resp_count() returns the number of B<OCSP_SINGLERESP> structures in B<bs>.
59
60 OCSP_resp_get0() returns the B<OCSP_SINGLERESP> structure in B<bs>
61 corresponding to index B<idx>. Where B<idx> runs from 0 to
62 OCSP_resp_count(bs) - 1.
63
64 OCSP_resp_find() searches B<bs> for B<id> and returns the index of the first
65 matching entry after B<last> or starting from the beginning if B<last> is -1.
66
67 OCSP_single_get0_status() extracts the fields of B<single> in B<*reason>,
68 B<*revtime>, B<*thisupd> and B<*nextupd>.
69
70 OCSP_resp_get0_produced_at() extracts the B<producedAt> field from the
71 single response B<bs>.
72
73 OCSP_resp_get0_certs() returns any certificates included in B<bs>.
74
75 OCSP_resp_get0_id() gets the responder id of <bs>. If the responder ID is
76 a name then <*pname> is set to the name and B<*pid> is set to NULL. If the
77 responder ID is by key ID then B<*pid> is set to the key ID and B<*pname>
78 is set to NULL.
79
80 OCSP_check_validity() checks the validity of B<thisupd> and B<nextupd> values
81 which will be typically obtained from OCSP_resp_find_status() or
82 OCSP_single_get0_status(). If B<sec> is non-zero it indicates how many seconds
83 leeway should be allowed in the check. If B<maxsec> is positive it indicates
84 the maximum age of B<thisupd> in seconds.
85
86 =head1 RETURN VALUES
87
88 OCSP_resp_find_status() returns 1 if B<id> is found in B<bs> and 0 otherwise.
89
90 OCSP_resp_count() returns the total number of B<OCSP_SINGLERESP> fields in
91 B<bs>.
92
93 OCSP_resp_get0() returns a pointer to an B<OCSP_SINGLERESP> structure or
94 B<NULL> if B<idx> is out of range.
95
96 OCSP_resp_find() returns the index of B<id> in B<bs> (which may be 0) or -1 if
97 B<id> was not found.
98
99 OCSP_single_get0_status() returns the status of B<single> or -1 if an error
100 occurred.
101
102 =head1 NOTES
103
104 Applications will typically call OCSP_resp_find_status() using the certificate
105 ID of interest and then check its validity using OCSP_check_validity(). They
106 can then take appropriate action based on the status of the certificate.
107
108 An OCSP response for a certificate contains B<thisUpdate> and B<nextUpdate>
109 fields. Normally the current time should be between these two values. To
110 account for clock skew the B<maxsec> field can be set to non-zero in
111 OCSP_check_validity(). Some responders do not set the B<nextUpdate> field, this
112 would otherwise mean an ancient response would be considered valid: the
113 B<maxsec> parameter to OCSP_check_validity() can be used to limit the permitted
114 age of responses.
115
116 The values written to B<*revtime>, B<*thisupd> and B<*nextupd> by
117 OCSP_resp_find_status() and OCSP_single_get0_status() are internal pointers
118 which B<MUST NOT> be freed up by the calling application. Any or all of these
119 parameters can be set to NULL if their value is not required.
120
121 =head1 SEE ALSO
122
123 L<crypto(7)>,
124 L<OCSP_cert_to_id(3)>,
125 L<OCSP_request_add1_nonce(3)>,
126 L<OCSP_REQUEST_new(3)>,
127 L<OCSP_response_status(3)>,
128 L<OCSP_sendreq_new(3)>
129
130 =head1 COPYRIGHT
131
132 Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
133
134 Licensed under the OpenSSL license (the "License").  You may not use
135 this file except in compliance with the License.  You can obtain a copy
136 in the file LICENSE in the source distribution or at
137 L<https://www.openssl.org/source/license.html>.
138
139 =cut