Blame doc/man3/SCT_validate.pod

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