...

Package features

import "github.com/letsencrypt/boulder/features"
Overview
Index

Overview ▾

func Enabled

func Enabled(n FeatureFlag) bool

Enabled returns true if the feature is enabled or false if it isn't, it will panic if passed a feature that it doesn't know.

func Reset

func Reset()

Reset resets the features to their initial state

func Set

func Set(featureSet map[string]bool) error

Set accepts a list of features and whether they should be enabled or disabled. In the presence of unrecognized flags, it will return an error or not depending on the value of AllowUnrecognizedFeatures.

type FeatureFlag

type FeatureFlag int
const (

    //   Deprecated features, these can be removed once stripped from production configs
    StoreRevokerInfo FeatureFlag
    ROCSPStage6
    ROCSPStage7
    StoreLintingCertificateInsteadOfPrecertificate
    CAAValidationMethods
    CAAAccountURI
    LeaseCRLShards

    //   Currently in-use features
    // EnforceMultiVA causes the VA to block on remote VA PerformValidation
    // requests in order to make a valid/invalid decision with the results.
    EnforceMultiVA
    // MultiVAFullResults will cause the main VA to wait for all of the remote VA
    // results, not just the threshold required to make a decision.
    MultiVAFullResults
    // ECDSAForAll enables all accounts, regardless of their presence in the CA's
    // ecdsaAllowedAccounts config value, to get issuance from ECDSA issuers.
    ECDSAForAll
    // ServeRenewalInfo exposes the renewalInfo endpoint in the directory and for
    // GET requests. WARNING: This feature is a draft and highly unstable.
    ServeRenewalInfo
    // AllowUnrecognizedFeatures is internal to the features package: if true,
    // skip error when unrecognized feature flag names are passed.
    AllowUnrecognizedFeatures

    // ExpirationMailerUsesJoin enables using a JOIN query in expiration-mailer
    // rather than a SELECT from certificateStatus followed by thousands of
    // one-row SELECTs from certificates.
    ExpirationMailerUsesJoin

    // CertCheckerChecksValidations enables an extra query for each certificate
    // checked, to find the relevant authzs. Since this query might be
    // expensive, we gate it behind a feature flag.
    CertCheckerChecksValidations

    // CertCheckerRequiresValidations causes cert-checker to fail if the
    // query enabled by CertCheckerChecksValidations didn't find corresponding
    // authorizations.
    CertCheckerRequiresValidations

    // CertCheckerRequiresCorrespondence enables an extra query for each certificate
    // checked, to find the linting precertificate in the `precertificates` table.
    // It then checks that the final certificate "corresponds" to the precertificate
    // using `precert.Correspond`.
    CertCheckerRequiresCorrespondence

    // AsyncFinalize enables the RA to return approximately immediately from
    // requests to finalize orders. This allows us to take longer getting SCTs,
    // issuing certs, and updating the database; it indirectly reduces the number
    // of issuances that fail due to timeouts during storage. However, it also
    // requires clients to properly implement polling the Order object to wait
    // for the cert URL to appear.
    AsyncFinalize

    // RequireCommonName defaults to true, and causes the CA to fail to issue a
    // certificate if there is no CommonName in the certificate. When false, the
    // CA will be willing to issue certificates with no CN.
    //
    // According to the BRs Section 7.1.4.2.2(a), the commonName field is
    // Deprecated, and its inclusion is discouraged but not (yet) prohibited.
    RequireCommonName

    // CAAAfterValidation causes the VA to only kick off CAA checks after the base
    // domain control validation has completed and succeeded. This makes
    // successful validations slower by serializing the DCV and CAA work, but
    // makes unsuccessful validations easier by not doing CAA work at all.
    CAAAfterValidation
)

func (FeatureFlag) String

func (i FeatureFlag) String() string