]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/crypto/OCSP_request_add1_nonce.pod
Add some OCSP documentation.
[thirdparty/openssl.git] / doc / crypto / OCSP_request_add1_nonce.pod
CommitLineData
797a89a1
DSH
1=pod
2
3OCSP_request_add1_nonce, OCSP_basic_add1_nonce, OCSP_check_nonce, OCSP_copy_nonce - OCSP nonce functions.
4
5=head1 SYNOPSIS
6
7 #include <openssl/ocsp.h>
8
9 int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len);
10 int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len);
11 int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req);
12 int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *resp);
13
14=head1 DESCRIPTION
15
16OCSP_request_add1_nonce() adds a nonce of value B<val> and length B<len> to
17OCSP request B<req>. If B<val> is B<NULL> a random nonce is used. If B<len>
18is zero or negative a default length will be used (currently 16 bytes).
19
20OCSP_basic_add1_nonce() is identical to OCSP_request_add1_nonce() except
21it adds a nonce to OCSP basic response B<resp>.
22
23OCSP_check_nonce() compares the nonce value in B<req> and B<resp>.
24
25OCSP_copy_nonce() copys any nonce value present in B<req> to B<resp>.
26
27=head1 RETURN VALUES
28
29OCSP_request_add1_nonce() and OCSP_basic_add1_nonce() return 1 for success
30and 0 for failure.
31
32OCSP_copy_nonce() returns 1 if a nonce was successfully copied, 2 if no nonce
33was present in B<req> and 0 if an error occurred.
34
35OCSP_check_nonce() returns the result of the nonce comparison between B<req>
36and B<resp>. The return value indicates the result of the comparison. If
37nonces are present and equal 1 is returned. If the nonces are absent 2 is
38returned. If a nonce is present in the response only 3 is returned. If nonces
39are present and unequal 0 is returned. If the nonce is present in the request
40only then -1 is returned.
41
42=head1 NOTES
43
44For most purposes the nonce value in a request is set to a random value so
45the B<val> parameter in OCSP_request_add1_nonce() is usually NULL.
46
47An OCSP nonce is typically added to an OCSP request to thwart replay attacks
48by checking the same nonce value appears in the response.
49
50Some responders may include a nonce in all responses even if one is not
51supplied.
52
53Some responders cache OCSP responses and do not sign each response for
54performance reasons. As a result they do not support nonces.
55
56The return values of OCSP_check_nonce() can be checked to cover each case. A
57positive return value effectively indicates success: nonces are both present
58and match, both absent or present in the response only. A non-zero return
59additionally covers the case where the nonce is present in the request only:
60this will happen if the responder doesn't support nonces. A zero return value
61indicates present and mismatched nonces: this should be treated as an error
62condition.
63
64=head1 SEE ALSO
65
66L<crypto(3)|crypto(3)>,
67L<OCSP_cert_to_id(3)|OCSP_cert_to_id(3)>,
68L<OCSP_REQUEST_new(3)|OCSP_REQUEST_new(3)>,
69L<OCSP_response_find_status(3)|OCSP_response_find_status(3)>,
70L<OCSP_response_status(3)|OCSP_response_status(3)>,
71L<OCSP_sendreq_new(3)|OCSP_sendreq_new(3)>
72
73=cut