Classes/ADCSEnums.ps1

# [Flags()]
# enum ADCSTemplateKeyUsageFlags {
# DigitalSignature = 0x80
# NonRepudiation = 0x40
# KeyEncipherment = 0x20
# DataEncipherment = 0x10
# KeyAgreement = 0x08
# KeyCertSign = 0x04
# CRLSign = 0x02
# EncipherOnly = 0x01
# DecipherOnly = 0x8000
# None = 0x0
# }

# https://github.com/PKISolutions/pkix.net/blob/master/src/SysadminsLV.PKI.Win/CertificateTemplates/PrivateKeyFlags.cs
[Flags()]
enum ADCSTemplatePrivateKeyFlags {
    None                               = 0
    RequireKeyArchival                 = 0x00000001
    AllowKeyExport                     = 0x00000010
    RequireStrongProtection            = 0x00000020
    RequireAlternateSignatureAlgorithm = 0x00000040
    ReuseKeysRenewal                   = 0x00000080
    UseLegacyProvider                  = 0x00000100
    TrustOnUse                         = 0x00000200
    ValidateCert                       = 0x00000400
    ValidateKey                        = 0x00000800
    AttestationPreferred               = 0x00001000
    AttestationRequired                = 0x00002000
    AttestationWithoutPolicy           = 0x00004000
    Server2003                         = 0x00010000
    Server2008                         = 0x00020000
    Server2008R2                       = 0x00030000
    Server2012                         = 0x00040000
    Server2012R2                       = 0x00050000
    Server2016                         = 0x00060000
    HelloLogonKey                      = 0x00200000
    Client2003                         = 0x01000000
    Client2008                         = 0x02000000
    Client2008R2                       = 0x03000000
    Client2012                         = 0x04000000
    Client2012R2                       = 0x05000000
    Client2016                         = 0x06000000
}

# https://github.com/PKISolutions/pkix.net/blob/master/src/SysadminsLV.PKI.Win/CertificateTemplates/CertificateTemplateNameFlags.cs
[Flags()]
enum ADCSTemplateCertificateNameFlags {
    None                             = 0
    EnrolleeSuppliesSubject          = 0x00000001
    OldCertSuppliesSubjectAndAltName = 0x00000008
    EnrolleeSuppluiesAltSubject      = 0x00010000
    AltSubjectRequireDomainDNS       = 0x00400000
    AltSubjectRequireSPN             = 0x00800000
    AltSubjectRequireDirectoryGUID   = 0x01000000
    AltSubjectRequireUPN             = 0x02000000
    AltSubjectRequireEmail           = 0x04000000
    AltSubjectRequireDNS             = 0x08000000
    SubjectRequireDNSasCN            = 0x10000000
    SubjectRequireEmail              = 0x20000000
    SubjectRequireCommonName         = 0x40000000
    SubjectRequireDirectoryPath      = 0x80000000
}

# https://github.com/PKISolutions/pkix.net/blob/master/src/SysadminsLV.PKI.Win/CertificateTemplates/CertificateTemplateEnrollmentFlags.cs
[Flags()]
enum ADCSTemplateEnrollmentFlags {
    None                             = 0
    IncludeSymmetricAlgorithms       = 0x00000001
    CAManagerApproval                = 0x00000002
    KraPublish                       = 0x00000004
    DsPublish                        = 0x00000008
    AutoenrollmentCheckDsCert        = 0x00000010
    Autoenrollment                   = 0x00000020
    ReenrollExistingCert             = 0x00000040
    RequireUserInteraction           = 0x00000100
    RemoveInvalidFromStore           = 0x00000400
    AllowEnrollOnBehalfOf            = 0x00000800
    IncludeOcspRevNoCheck            = 0x00001000
    ReuseKeyTokenFull                = 0x00002000
    NoRevocationInformation          = 0x00004000
    BasicConstraintsInEndEntityCerts = 0x00008000
    IgnoreEnrollOnReenrollment       = 0x00010000
    IssuancePoliciesFromRequest      = 0x00020000
    SkipAutoRenewal                  = 0x00040000
    DoNotIncludeSidExtension         = 0x0008000
}

# https://github.com/PKISolutions/pkix.net/blob/master/src/SysadminsLV.PKI/ADCS/CertificateTemplates/CertificateTemplateFlags.cs
[Flags()]
enum ADCSTemplateFlags {
    None                    = 0
    EnrolleeSuppliesSubject = 0x1
    AddEmail                = 0x2
    AddObjectIdentifier     = 0x4
    DsPublish               = 0x8
    AllowKeyExport          = 0x10
    Autoenrollment          = 0x20
    MachineType             = 0x40
    IsCA                    = 0x80
    AddDirectoryPath        = 0x100
    AddTemplateName         = 0x200
    AddSubjectDirectoryPath = 0x400
    IsCrossCA               = 0x800
    DoNotPersistInDB        = 0x1000
    IsDefault               = 0x10000
    IsModified              = 0x20000
    IsDeleted               = 0x40000
    PolicyMismatch          = 0x80000
}


[Flags()]
enum ADCSTemplateKeySpecFlags {
    None             = 0
    KeyExchange      = 1
    DigitalSignature = 2
}