| =pod |
| |
| =head1 NAME |
| |
| SCT_validate, SCT_LIST_validate, SCT_get_validation_status - |
| checks Signed Certificate Timestamps (SCTs) are valid |
| |
| =head1 SYNOPSIS |
| |
| #include <openssl/ct.h> |
| |
| typedef enum { |
| SCT_VALIDATION_STATUS_NOT_SET, |
| SCT_VALIDATION_STATUS_UNKNOWN_LOG, |
| SCT_VALIDATION_STATUS_VALID, |
| SCT_VALIDATION_STATUS_INVALID, |
| SCT_VALIDATION_STATUS_UNVERIFIED, |
| SCT_VALIDATION_STATUS_UNKNOWN_VERSION |
| } sct_validation_status_t; |
| |
| int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); |
| int SCT_LIST_validate(const STACK_OF(SCT) *scts, CT_POLICY_EVAL_CTX *ctx); |
| sct_validation_status_t SCT_get_validation_status(const SCT *sct); |
| |
| =head1 DESCRIPTION |
| |
| SCT_validate() will check that an SCT is valid and verify its signature. |
| SCT_LIST_validate() performs the same checks on an entire stack of SCTs. |
| The result of the validation checks can be obtained by passing the SCT to |
| SCT_get_validation_status(). |
| |
| A CT_POLICY_EVAL_CTX must be provided that specifies: |
| |
| =over 2 |
| |
| =item * |
| |
| The certificate the SCT was issued for. |
| |
| Failure to provide the certificate will result in the validation status being |
| SCT_VALIDATION_STATUS_UNVERIFIED. |
| |
| =item * |
| |
| The issuer of that certificate. |
| |
| This is only required if the SCT was issued for a pre-certificate |
| (see RFC 6962). If it is required but not provided, the validation status will |
| be SCT_VALIDATION_STATUS_UNVERIFIED. |
| |
| =item * |
| |
| A CTLOG_STORE that contains the CT log that issued this SCT. |
| |
| If the SCT was issued by a log that is not in this CTLOG_STORE, the validation |
| status will be SCT_VALIDATION_STATUS_UNKNOWN_LOG. |
| |
| =back |
| |
| If the SCT is of an unsupported version (only v1 is currently supported), the |
| validation status will be SCT_VALIDATION_STATUS_UNKNOWN_VERSION. |
| |
| If the SCT's signature is incorrect, its timestamp is in the future (relative to |
| the time in CT_POLICY_EVAL_CTX), or if it is otherwise invalid, the validation |
| status will be SCT_VALIDATION_STATUS_INVALID. |
| |
| If all checks pass, the validation status will be SCT_VALIDATION_STATUS_VALID. |
| |
| =head1 NOTES |
| |
| A return value of 0 from SCT_LIST_validate() should not be interpreted as a |
| failure. At a minimum, only one valid SCT may provide sufficient confidence |
| that a certificate has been publicly logged. |
| |
| =head1 RETURN VALUES |
| |
| SCT_validate() returns a negative integer if an internal error occurs, 0 if the |
| SCT fails validation, or 1 if the SCT passes validation. |
| |
| SCT_LIST_validate() returns a negative integer if an internal error occurs, 0 |
| if any of SCTs fails validation, or 1 if they all pass validation. |
| |
| SCT_get_validation_status() returns the validation status of the SCT. |
| If SCT_validate() or SCT_LIST_validate() have not been passed that SCT, the |
| returned value will be SCT_VALIDATION_STATUS_NOT_SET. |
| |
| =head1 SEE ALSO |
| |
| L<ct(7)> |
| |
| =head1 HISTORY |
| |
| These functions were added in OpenSSL 1.1.0. |
| |
| =head1 COPYRIGHT |
| |
| Copyright 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 |
| L<https://www.openssl.org/source/license.html>. |
| |
| =cut |