logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

SCT_validate, SCT_LIST_validate, SCT_get_validation_status - checks Signed Certificate Timestamps (SCTs)

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:

       • The certificate the SCT was issued for.

         Failure    to    provide    the    certificate   will   result   in   the   validation   status   being
         SCT_VALIDATION_STATUS_UNVERIFIED.

       • 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.

       • 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.

       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.

History

       These functions were added in OpenSSL 1.1.0.

Name

       SCT_validate, SCT_LIST_validate, SCT_get_validation_status - checks Signed Certificate Timestamps (SCTs)
       are valid

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.

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.

See Also

ct(7)

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);

See Also