CT_POLICY_EVAL_CTX_new.3ossl - Man Page

Encapsulates the data required to evaluate whether SCTs meet a Certificate Transparency policy


 #include <openssl/ct.h>

                                               const char *propq);
 X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx);
 int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert);
 X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx);
 int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer);
 const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx);
                                                CTLOG_STORE *log_store);
 uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx);
 void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms);


A CT_POLICY_EVAL_CTX is used by functions that evaluate whether Signed Certificate Timestamps (SCTs) fulfil a Certificate Transparency (CT) policy. This policy may be, for example, that at least one valid SCT is available. To determine this, an SCT's timestamp and signature must be verified. This requires:

The above requirements are met using the setters described below.

CT_POLICY_EVAL_CTX_new_ex() creates an empty policy evaluation context and associates it with the given library context libctx and property query string propq.

CT_POLICY_EVAL_CTX_new() does the same thing as CT_POLICY_EVAL_CTX_new_ex() except that it uses the default library context and property query string.

The CT_POLICY_EVAL_CTX should then be populated using:

Each setter has a matching getter for accessing the current value.

When no longer required, the CT_POLICY_EVAL_CTX should be passed to CT_POLICY_EVAL_CTX_free() to delete it.


The issuer certificate only needs to be provided if at least one of the SCTs was issued for a pre-certificate. This will be the case for SCTs embedded in a certificate (i.e. those in an X.509 extension), but may not be the case for SCTs found in the TLS SCT extension or OCSP response.

Return Values

CT_POLICY_EVAL_CTX_new_ex() and CT_POLICY_EVAL_CTX_new() will return NULL if malloc fails.

See Also



CT_POLICY_EVAL_CTX_new_ex was added in OpenSSL 3.0. All other functions were added in OpenSSL 1.1.0.

Referenced By

ct.7ossl(7), migration_guide.7ossl(7).

The man pages CT_POLICY_EVAL_CTX_free.3ossl(3), CT_POLICY_EVAL_CTX_get0_cert.3ossl(3), CT_POLICY_EVAL_CTX_get0_issuer.3ossl(3), CT_POLICY_EVAL_CTX_get0_log_store.3ossl(3), CT_POLICY_EVAL_CTX_get_time.3ossl(3), CT_POLICY_EVAL_CTX_new_ex.3ossl(3), CT_POLICY_EVAL_CTX_set1_cert.3ossl(3), CT_POLICY_EVAL_CTX_set1_issuer.3ossl(3), CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE.3ossl(3) and CT_POLICY_EVAL_CTX_set_time.3ossl(3) are aliases of CT_POLICY_EVAL_CTX_new.3ossl(3).

2021-09-09 3.0.0 OpenSSL