]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/OCSP_resp_find_status.3
MFC: r340703
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / OCSP_resp_find_status.3
1 .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "OCSP_RESP_FIND_STATUS 3"
132 .TH OCSP_RESP_FIND_STATUS 3 "2018-11-20" "1.1.1a" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 OCSP_resp_get0_certs, OCSP_resp_get0_signer, OCSP_resp_get0_id, OCSP_resp_get1_id, OCSP_resp_get0_produced_at, OCSP_resp_get0_signature, OCSP_resp_get0_tbs_sigalg, OCSP_resp_get0_respdata, OCSP_resp_find_status, OCSP_resp_count, OCSP_resp_get0, OCSP_resp_find, OCSP_single_get0_status, OCSP_check_validity, OCSP_basic_verify \&\- OCSP response utility functions
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/ocsp.h>
143 \&
144 \& int OCSP_resp_find_status(OCSP_BASICRESP *bs, OCSP_CERTID *id, int *status,
145 \&                           int *reason,
146 \&                           ASN1_GENERALIZEDTIME **revtime,
147 \&                           ASN1_GENERALIZEDTIME **thisupd,
148 \&                           ASN1_GENERALIZEDTIME **nextupd);
149 \&
150 \& int OCSP_resp_count(OCSP_BASICRESP *bs);
151 \& OCSP_SINGLERESP *OCSP_resp_get0(OCSP_BASICRESP *bs, int idx);
152 \& int OCSP_resp_find(OCSP_BASICRESP *bs, OCSP_CERTID *id, int last);
153 \& int OCSP_single_get0_status(OCSP_SINGLERESP *single, int *reason,
154 \&                             ASN1_GENERALIZEDTIME **revtime,
155 \&                             ASN1_GENERALIZEDTIME **thisupd,
156 \&                             ASN1_GENERALIZEDTIME **nextupd);
157 \&
158 \& const ASN1_GENERALIZEDTIME *OCSP_resp_get0_produced_at(
159 \&                             const OCSP_BASICRESP* single);
160 \&
161 \& const ASN1_OCTET_STRING *OCSP_resp_get0_signature(const OCSP_BASICRESP *bs);
162 \& const X509_ALGOR *OCSP_resp_get0_tbs_sigalg(const OCSP_BASICRESP *bs);
163 \& const OCSP_RESPDATA *OCSP_resp_get0_respdata(const OCSP_BASICRESP *bs);
164 \& const STACK_OF(X509) *OCSP_resp_get0_certs(const OCSP_BASICRESP *bs);
165 \&
166 \& int OCSP_resp_get0_signer(OCSP_BASICRESP *bs, X509 **signer,
167 \&                           STACK_OF(X509) *extra_certs);
168 \&
169 \& int OCSP_resp_get0_id(const OCSP_BASICRESP *bs,
170 \&                       const ASN1_OCTET_STRING **pid,
171 \&                       const X509_NAME **pname);
172 \& int OCSP_resp_get1_id(const OCSP_BASICRESP *bs,
173 \&                       ASN1_OCTET_STRING **pid,
174 \&                       X509_NAME **pname);
175 \&
176 \& int OCSP_check_validity(ASN1_GENERALIZEDTIME *thisupd,
177 \&                         ASN1_GENERALIZEDTIME *nextupd,
178 \&                         long sec, long maxsec);
179 \&
180 \& int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs,
181 \&                      X509_STORE *st, unsigned long flags);
182 .Ve
183 .SH "DESCRIPTION"
184 .IX Header "DESCRIPTION"
185 \&\fIOCSP_resp_find_status()\fR searches \fBbs\fR for an \s-1OCSP\s0 response for \fBid\fR. If it is
186 successful the fields of the response are returned in \fB*status\fR, \fB*reason\fR,
187 \&\fB*revtime\fR, \fB*thisupd\fR and \fB*nextupd\fR.  The \fB*status\fR value will be one of
188 \&\fBV_OCSP_CERTSTATUS_GOOD\fR, \fBV_OCSP_CERTSTATUS_REVOKED\fR or
189 \&\fBV_OCSP_CERTSTATUS_UNKNOWN\fR. The \fB*reason\fR and \fB*revtime\fR fields are only
190 set if the status is \fBV_OCSP_CERTSTATUS_REVOKED\fR. If set the \fB*reason\fR field
191 will be set to the revocation reason which will be one of
192 \&\fB\s-1OCSP_REVOKED_STATUS_NOSTATUS\s0\fR, \fB\s-1OCSP_REVOKED_STATUS_UNSPECIFIED\s0\fR,
193 \&\fB\s-1OCSP_REVOKED_STATUS_KEYCOMPROMISE\s0\fR, \fB\s-1OCSP_REVOKED_STATUS_CACOMPROMISE\s0\fR,
194 \&\fB\s-1OCSP_REVOKED_STATUS_AFFILIATIONCHANGED\s0\fR, \fB\s-1OCSP_REVOKED_STATUS_SUPERSEDED\s0\fR,
195 \&\fB\s-1OCSP_REVOKED_STATUS_CESSATIONOFOPERATION\s0\fR,
196 \&\fB\s-1OCSP_REVOKED_STATUS_CERTIFICATEHOLD\s0\fR or \fB\s-1OCSP_REVOKED_STATUS_REMOVEFROMCRL\s0\fR.
197 .PP
198 \&\fIOCSP_resp_count()\fR returns the number of \fB\s-1OCSP_SINGLERESP\s0\fR structures in \fBbs\fR.
199 .PP
200 \&\fIOCSP_resp_get0()\fR returns the \fB\s-1OCSP_SINGLERESP\s0\fR structure in \fBbs\fR
201 corresponding to index \fBidx\fR. Where \fBidx\fR runs from 0 to
202 OCSP_resp_count(bs) \- 1.
203 .PP
204 \&\fIOCSP_resp_find()\fR searches \fBbs\fR for \fBid\fR and returns the index of the first
205 matching entry after \fBlast\fR or starting from the beginning if \fBlast\fR is \-1.
206 .PP
207 \&\fIOCSP_single_get0_status()\fR extracts the fields of \fBsingle\fR in \fB*reason\fR,
208 \&\fB*revtime\fR, \fB*thisupd\fR and \fB*nextupd\fR.
209 .PP
210 \&\fIOCSP_resp_get0_produced_at()\fR extracts the \fBproducedAt\fR field from the
211 single response \fBbs\fR.
212 .PP
213 \&\fIOCSP_resp_get0_signature()\fR returns the signature from \fBbs\fR.
214 .PP
215 \&\fIOCSP_resp_get0_tbs_sigalg()\fR returns the \fBsignatureAlgorithm\fR from \fBbs\fR.
216 .PP
217 \&\fIOCSP_resp_get0_respdata()\fR returns the \fBtbsResponseData\fR from \fBbs\fR.
218 .PP
219 \&\fIOCSP_resp_get0_certs()\fR returns any certificates included in \fBbs\fR.
220 .PP
221 \&\fIOCSP_resp_get0_signer()\fR attempts to retrieve the certificate that directly
222 signed \fBbs\fR.  The \s-1OCSP\s0 protocol does not require that this certificate
223 is included in the \fBcerts\fR field of the response, so additional certificates
224 can be supplied in \fBextra_certs\fR if the certificates that may have
225 signed the response are known via some out-of-band mechanism.
226 .PP
227 \&\fIOCSP_resp_get0_id()\fR gets the responder id of \fBbs\fR. If the responder \s-1ID\s0 is
228 a name then <*pname> is set to the name and \fB*pid\fR is set to \s-1NULL.\s0 If the
229 responder \s-1ID\s0 is by key \s-1ID\s0 then \fB*pid\fR is set to the key \s-1ID\s0 and \fB*pname\fR
230 is set to \s-1NULL.\s0 \fIOCSP_resp_get1_id()\fR leaves ownership of \fB*pid\fR and \fB*pname\fR
231 with the caller, who is responsible for freeing them. Both functions return 1
232 in case of success and 0 in case of failure. If \fIOCSP_resp_get1_id()\fR returns 0,
233 no freeing of the results is necessary.
234 .PP
235 \&\fIOCSP_check_validity()\fR checks the validity of \fBthisupd\fR and \fBnextupd\fR values
236 which will be typically obtained from \fIOCSP_resp_find_status()\fR or
237 \&\fIOCSP_single_get0_status()\fR. If \fBsec\fR is non-zero it indicates how many seconds
238 leeway should be allowed in the check. If \fBmaxsec\fR is positive it indicates
239 the maximum age of \fBthisupd\fR in seconds.
240 .PP
241 \&\fIOCSP_basic_verify()\fR checks that the basic response message \fBbs\fR is correctly
242 signed and that the signer certificate can be validated. It takes \fBst\fR as
243 the trusted store and \fBcerts\fR as a set of untrusted intermediate certificates.
244 The function first tries to find the signer certificate of the response
245 in <certs>. It also searches the certificates the responder may have included
246 in \fBbs\fR unless the \fBflags\fR contain \fB\s-1OCSP_NOINTERN\s0\fR.
247 It fails if the signer certificate cannot be found.
248 Next, the function checks the signature of \fBbs\fR and fails on error
249 unless the \fBflags\fR contain \fB\s-1OCSP_NOSIGS\s0\fR. Then the function already returns
250 success if the \fBflags\fR contain \fB\s-1OCSP_NOVERIFY\s0\fR or if the signer certificate
251 was found in \fBcerts\fR and the \fBflags\fR contain \fB\s-1OCSP_TRUSTOTHER\s0\fR.
252 Otherwise the function continues by validating the signer certificate.
253 To this end, all certificates in \fBcert\fR and in \fBbs\fR are considered as
254 untrusted certificates for the construction of the validation path for the
255 signer certificate unless the \fB\s-1OCSP_NOCHAIN\s0\fR flag is set. After successful path
256 validation the function returns success if the \fB\s-1OCSP_NOCHECKS\s0\fR flag is set.
257 Otherwise it verifies that the signer certificate meets the \s-1OCSP\s0 issuer
258 criteria including potential delegation. If this does not succeed and the
259 \&\fBflags\fR do not contain \fB\s-1OCSP_NOEXPLICIT\s0\fR the function checks for explicit
260 trust for \s-1OCSP\s0 signing in the root \s-1CA\s0 certificate.
261 .SH "RETURN VALUES"
262 .IX Header "RETURN VALUES"
263 \&\fIOCSP_resp_find_status()\fR returns 1 if \fBid\fR is found in \fBbs\fR and 0 otherwise.
264 .PP
265 \&\fIOCSP_resp_count()\fR returns the total number of \fB\s-1OCSP_SINGLERESP\s0\fR fields in
266 \&\fBbs\fR.
267 .PP
268 \&\fIOCSP_resp_get0()\fR returns a pointer to an \fB\s-1OCSP_SINGLERESP\s0\fR structure or
269 \&\fB\s-1NULL\s0\fR if \fBidx\fR is out of range.
270 .PP
271 \&\fIOCSP_resp_find()\fR returns the index of \fBid\fR in \fBbs\fR (which may be 0) or \-1 if
272 \&\fBid\fR was not found.
273 .PP
274 \&\fIOCSP_single_get0_status()\fR returns the status of \fBsingle\fR or \-1 if an error
275 occurred.
276 .PP
277 \&\fIOCSP_resp_get0_signer()\fR returns 1 if the signing certificate was located,
278 or 0 on error.
279 .PP
280 \&\fIOCSP_basic_verify()\fR returns 1 on success, 0 on error, or \-1 on fatal error such
281 as malloc failure.
282 .SH "NOTES"
283 .IX Header "NOTES"
284 Applications will typically call \fIOCSP_resp_find_status()\fR using the certificate
285 \&\s-1ID\s0 of interest and then check its validity using \fIOCSP_check_validity()\fR. They
286 can then take appropriate action based on the status of the certificate.
287 .PP
288 An \s-1OCSP\s0 response for a certificate contains \fBthisUpdate\fR and \fBnextUpdate\fR
289 fields. Normally the current time should be between these two values. To
290 account for clock skew the \fBmaxsec\fR field can be set to non-zero in
291 \&\fIOCSP_check_validity()\fR. Some responders do not set the \fBnextUpdate\fR field, this
292 would otherwise mean an ancient response would be considered valid: the
293 \&\fBmaxsec\fR parameter to \fIOCSP_check_validity()\fR can be used to limit the permitted
294 age of responses.
295 .PP
296 The values written to \fB*revtime\fR, \fB*thisupd\fR and \fB*nextupd\fR by
297 \&\fIOCSP_resp_find_status()\fR and \fIOCSP_single_get0_status()\fR are internal pointers
298 which \fB\s-1MUST NOT\s0\fR be freed up by the calling application. Any or all of these
299 parameters can be set to \s-1NULL\s0 if their value is not required.
300 .SH "SEE ALSO"
301 .IX Header "SEE ALSO"
302 \&\fIcrypto\fR\|(7),
303 \&\fIOCSP_cert_to_id\fR\|(3),
304 \&\fIOCSP_request_add1_nonce\fR\|(3),
305 \&\fIOCSP_REQUEST_new\fR\|(3),
306 \&\fIOCSP_response_status\fR\|(3),
307 \&\fIOCSP_sendreq_new\fR\|(3)
308 .SH "COPYRIGHT"
309 .IX Header "COPYRIGHT"
310 Copyright 2015\-2018 The OpenSSL Project Authors. All Rights Reserved.
311 .PP
312 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
313 this file except in compliance with the License.  You can obtain a copy
314 in the file \s-1LICENSE\s0 in the source distribution or at
315 <https://www.openssl.org/source/license.html>.