OCSP_request_add1_nonce.pod 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. =pod
  2. =head1 NAME
  3. OCSP_request_add1_nonce, OCSP_basic_add1_nonce, OCSP_check_nonce, OCSP_copy_nonce - OCSP nonce functions
  4. =head1 SYNOPSIS
  5. #include <openssl/ocsp.h>
  6. int OCSP_request_add1_nonce(OCSP_REQUEST *req, unsigned char *val, int len);
  7. int OCSP_basic_add1_nonce(OCSP_BASICRESP *resp, unsigned char *val, int len);
  8. int OCSP_copy_nonce(OCSP_BASICRESP *resp, OCSP_REQUEST *req);
  9. int OCSP_check_nonce(OCSP_REQUEST *req, OCSP_BASICRESP *resp);
  10. =head1 DESCRIPTION
  11. OCSP_request_add1_nonce() adds a nonce of value B<val> and length B<len> to
  12. OCSP request B<req>. If B<val> is B<NULL> a random nonce is used. If B<len>
  13. is zero or negative a default length will be used (currently 16 bytes).
  14. OCSP_basic_add1_nonce() is identical to OCSP_request_add1_nonce() except
  15. it adds a nonce to OCSP basic response B<resp>.
  16. OCSP_check_nonce() compares the nonce value in B<req> and B<resp>.
  17. OCSP_copy_nonce() copies any nonce value present in B<req> to B<resp>.
  18. =head1 RETURN VALUES
  19. OCSP_request_add1_nonce() and OCSP_basic_add1_nonce() return 1 for success
  20. and 0 for failure.
  21. OCSP_copy_nonce() returns 1 if a nonce was successfully copied, 2 if no nonce
  22. was present in B<req> and 0 if an error occurred.
  23. OCSP_check_nonce() returns the result of the nonce comparison between B<req>
  24. and B<resp>. The return value indicates the result of the comparison. If
  25. nonces are present and equal 1 is returned. If the nonces are absent 2 is
  26. returned. If a nonce is present in the response only 3 is returned. If nonces
  27. are present and unequal 0 is returned. If the nonce is present in the request
  28. only then -1 is returned.
  29. =head1 NOTES
  30. For most purposes the nonce value in a request is set to a random value so
  31. the B<val> parameter in OCSP_request_add1_nonce() is usually NULL.
  32. An OCSP nonce is typically added to an OCSP request to thwart replay attacks
  33. by checking the same nonce value appears in the response.
  34. Some responders may include a nonce in all responses even if one is not
  35. supplied.
  36. Some responders cache OCSP responses and do not sign each response for
  37. performance reasons. As a result they do not support nonces.
  38. The return values of OCSP_check_nonce() can be checked to cover each case. A
  39. positive return value effectively indicates success: nonces are both present
  40. and match, both absent or present in the response only. A nonzero return
  41. additionally covers the case where the nonce is present in the request only:
  42. this will happen if the responder doesn't support nonces. A zero return value
  43. indicates present and mismatched nonces: this should be treated as an error
  44. condition.
  45. =head1 SEE ALSO
  46. L<crypto(7)>,
  47. L<OCSP_cert_to_id(3)>,
  48. L<OCSP_REQUEST_new(3)>,
  49. L<OCSP_resp_find_status(3)>,
  50. L<OCSP_response_status(3)>,
  51. L<OCSP_sendreq_new(3)>
  52. =head1 COPYRIGHT
  53. Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved.
  54. Licensed under the Apache License 2.0 (the "License"). You may not use
  55. this file except in compliance with the License. You can obtain a copy
  56. in the file LICENSE in the source distribution or at
  57. L<https://www.openssl.org/source/license.html>.
  58. =cut