/** @file
  Defines the PCD_CRYPTO_SERVICE_FAMILY_ENABLE structure associated with
  gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable that is used
  to enable/disable crypto services at either the family scope or the
  individual service scope.  Platforms can minimize the number of enabled
  services to reduce size.

  The following services have been deprecated and must never be enabled.
  The associated fields in this data structure are never removed or replaced
  to preseve the binary layout of the data structure.  New services are
  always added to the end of the data structure.
  * HmacMd5 family
  * HmacSha1 family
  * Md4 family
  * Md5 family
  * Tdes family
  * Arc4 family
  * Aes.Services.EcbEncrypt service
  * Aes.Services.EcbDecrypt service

  Is is recommended that the following services always be disabled and may
  be deprecated in the future.
  * Sha1 family

  Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef __PCD_CRYPTO_SERVICE_FAMILY_ENABLE_H__
#define __PCD_CRYPTO_SERVICE_FAMILY_ENABLE_H__

///
/// Define used to enable all the crypto services in a family
///
#define PCD_CRYPTO_SERVICE_ENABLE_FAMILY  0xFFFFFFFF

///
/// PCD_CRYPTO_SERVICE_FAMILY_ENABLE structure.  Each field in this structure
/// is associated with a service in the EDK II Crypto Protocol/PPI.  This allows
/// each individual service to be enabled/disabled in a DSC file.  Services are
/// also grouped into families.  Unions are used to support enabling or
/// disabling an entire family in a single DSC statement.
///
typedef struct {
  union {
    struct {
      UINT8    New       : 1;  // Deprecated
      UINT8    Free      : 1;  // Deprecated
      UINT8    SetKey    : 1;  // Deprecated
      UINT8    Duplicate : 1;  // Deprecated
      UINT8    Update    : 1;  // Deprecated
      UINT8    Final     : 1;  // Deprecated
    } Services;
    UINT32    Family;          // Deprecated
  } HmacMd5;
  union {
    struct {
      UINT8    New       : 1;  // Deprecated
      UINT8    Free      : 1;  // Deprecated
      UINT8    SetKey    : 1;  // Deprecated
      UINT8    Duplicate : 1;  // Deprecated
      UINT8    Update    : 1;  // Deprecated
      UINT8    Final     : 1;  // Deprecated
    } Services;
    UINT32    Family;          // Deprecated
  } HmacSha1;
  union {
    struct {
      UINT8    New       : 1;
      UINT8    Free      : 1;
      UINT8    SetKey    : 1;
      UINT8    Duplicate : 1;
      UINT8    Update    : 1;
      UINT8    Final     : 1;
      UINT8    All       : 1;
    } Services;
    UINT32    Family;
  } HmacSha256;
  union {
    struct {
      UINT8    New       : 1;
      UINT8    Free      : 1;
      UINT8    SetKey    : 1;
      UINT8    Duplicate : 1;
      UINT8    Update    : 1;
      UINT8    Final     : 1;
      UINT8    All       : 1;
    } Services;
    UINT32    Family;
  } HmacSha384;
  union {
    struct {
      UINT8    GetContextSize : 1;  // Deprecated
      UINT8    Init           : 1;  // Deprecated
      UINT8    Duplicate      : 1;  // Deprecated
      UINT8    Update         : 1;  // Deprecated
      UINT8    Final          : 1;  // Deprecated
      UINT8    HashAll        : 1;  // Deprecated
    } Services;
    UINT32    Family;               // Deprecated
  } Md4;
  union {
    struct {
      UINT8    GetContextSize : 1;  // Deprecated
      UINT8    Init           : 1;  // Deprecated
      UINT8    Duplicate      : 1;  // Deprecated
      UINT8    Update         : 1;  // Deprecated
      UINT8    Final          : 1;  // Deprecated
      UINT8    HashAll        : 1;  // Deprecated
    } Services;
    UINT32    Family;
  } Md5;                            // Deprecated
  union {
    struct {
      UINT8    Pkcs1v2Encrypt             : 1;
      UINT8    Pkcs5HashPassword          : 1;
      UINT8    Pkcs7Verify                : 1;
      UINT8    VerifyEKUsInPkcs7Signature : 1;
      UINT8    Pkcs7GetSigners            : 1;
      UINT8    Pkcs7FreeSigners           : 1;
      UINT8    Pkcs7Sign                  : 1;
      UINT8    Pkcs7GetAttachedContent    : 1;
      UINT8    Pkcs7GetCertificatesList   : 1;
      UINT8    AuthenticodeVerify         : 1;
      UINT8    ImageTimestampVerify       : 1;
    } Services;
    UINT32    Family;
  } Pkcs;
  union {
    struct {
      UINT8    New               : 1;
      UINT8    Free              : 1;
      UINT8    GenerateParameter : 1;
      UINT8    SetParameter      : 1;
      UINT8    GenerateKey       : 1;
      UINT8    ComputeKey        : 1;
    } Services;
    UINT32    Family;
  } Dh;
  union {
    struct {
      UINT8    Seed  : 1;
      UINT8    Bytes : 1;
    } Services;
    UINT32    Family;
  } Random;
  union {
    struct {
      UINT8    VerifyPkcs1          : 1;
      UINT8    New                  : 1;
      UINT8    Free                 : 1;
      UINT8    SetKey               : 1;
      UINT8    GetKey               : 1;
      UINT8    GenerateKey          : 1;
      UINT8    CheckKey             : 1;
      UINT8    Pkcs1Sign            : 1;
      UINT8    Pkcs1Verify          : 1;
      UINT8    GetPrivateKeyFromPem : 1;
      UINT8    GetPublicKeyFromX509 : 1;
    } Services;
    UINT32    Family;
  } Rsa;
  union {
    struct {
      UINT8    GetContextSize : 1;  // Recommend disable
      UINT8    Init           : 1;  // Recommend disable
      UINT8    Duplicate      : 1;  // Recommend disable
      UINT8    Update         : 1;  // Recommend disable
      UINT8    Final          : 1;  // Recommend disable
      UINT8    HashAll        : 1;  // Recommend disable
    } Services;
    UINT32    Family;               // Recommend disable
  } Sha1;
  union {
    struct {
      UINT8    GetContextSize : 1;
      UINT8    Init           : 1;
      UINT8    Duplicate      : 1;
      UINT8    Update         : 1;
      UINT8    Final          : 1;
      UINT8    HashAll        : 1;
    } Services;
    UINT32    Family;
  } Sha256;
  union {
    struct {
      UINT8    GetContextSize : 1;
      UINT8    Init           : 1;
      UINT8    Duplicate      : 1;
      UINT8    Update         : 1;
      UINT8    Final          : 1;
      UINT8    HashAll        : 1;
    } Services;
    UINT32    Family;
  } Sha384;
  union {
    struct {
      UINT8    GetContextSize : 1;
      UINT8    Init           : 1;
      UINT8    Duplicate      : 1;
      UINT8    Update         : 1;
      UINT8    Final          : 1;
      UINT8    HashAll        : 1;
    } Services;
    UINT32    Family;
  } Sha512;
  union {
    struct {
      UINT8    GetSubjectName              : 1;
      UINT8    GetCommonName               : 1;
      UINT8    GetOrganizationName         : 1;
      UINT8    VerifyCert                  : 1;
      UINT8    ConstructCertificate        : 1;
      UINT8    ConstructCertificateStack   : 1;
      UINT8    ConstructCertificateStackV  : 1;
      UINT8    Free                        : 1;
      UINT8    StackFree                   : 1;
      UINT8    GetTBSCert                  : 1;
      UINT8    GetVersion                  : 1;
      UINT8    GetSerialNumber             : 1;
      UINT8    GetIssuerName               : 1;
      UINT8    GetSignatureAlgorithm       : 1;
      UINT8    GetExtensionData            : 1;
      UINT8    GetExtendedKeyUsage         : 1;
      UINT8    GetValidity                 : 1;
      UINT8    FormatDateTime              : 1;
      UINT8    CompareDateTime             : 1;
      UINT8    GetKeyUsage                 : 1;
      UINT8    VerifyCertChain             : 1;
      UINT8    GetCertFromCertChain        : 1;
      UINT8    Asn1GetTag                  : 1;
      UINT8    GetExtendedBasicConstraints : 1;
    } Services;
    UINT32    Family;
  } X509;
  union {
    struct {
      UINT8    GetContextSize : 1;  // Deprecated
      UINT8    Init           : 1;  // Deprecated
      UINT8    EcbEncrypt     : 1;  // Deprecated
      UINT8    EcbDecrypt     : 1;  // Deprecated
      UINT8    CbcEncrypt     : 1;  // Deprecated
      UINT8    CbcDecrypt     : 1;  // Deprecated
    } Services;
    UINT32    Family;               // Deprecated
  } Tdes;
  union {
    struct {
      UINT8    GetContextSize : 1;
      UINT8    Init           : 1;
      UINT8    EcbEncrypt     : 1;  // Deprecated
      UINT8    EcbDecrypt     : 1;  // Deprecated
      UINT8    CbcEncrypt     : 1;
      UINT8    CbcDecrypt     : 1;
    } Services;
    UINT32    Family;
  } Aes;
  union {
    struct {
      UINT8    GetContextSize : 1;  // Deprecated
      UINT8    Init           : 1;  // Deprecated
      UINT8    Encrypt        : 1;  // Deprecated
      UINT8    Decrypt        : 1;  // Deprecated
      UINT8    Reset          : 1;  // Deprecated
    } Services;
    UINT32    Family;               // Deprecated
  } Arc4;
  union {
    struct {
      UINT8    GetContextSize : 1;
      UINT8    Init           : 1;
      UINT8    Duplicate      : 1;
      UINT8    Update         : 1;
      UINT8    Final          : 1;
      UINT8    HashAll        : 1;
    } Services;
    UINT32    Family;
  } Sm3;
  union {
    struct {
      UINT8    Sha256ExtractAndExpand : 1;
      UINT8    Sha256Extract          : 1;
      UINT8    Sha256Expand           : 1;
      UINT8    Sha384ExtractAndExpand : 1;
      UINT8    Sha384Extract          : 1;
      UINT8    Sha384Expand           : 1;
    } Services;
    UINT32    Family;
  } Hkdf;
  union {
    struct {
      UINT8    Initialize     : 1;
      UINT8    CtxFree        : 1;
      UINT8    CtxNew         : 1;
      UINT8    Free           : 1;
      UINT8    New            : 1;
      UINT8    InHandshake    : 1;
      UINT8    DoHandshake    : 1;
      UINT8    HandleAlert    : 1;
      UINT8    CloseNotify    : 1;
      UINT8    CtrlTrafficOut : 1;
      UINT8    CtrlTrafficIn  : 1;
      UINT8    Read           : 1;
      UINT8    Write          : 1;
      UINT8    Shutdown       : 1;
    } Services;
    UINT32    Family;
  } Tls;
  union {
    struct {
      UINT8    Version            : 1;
      UINT8    ConnectionEnd      : 1;
      UINT8    CipherList         : 1;
      UINT8    CompressionMethod  : 1;
      UINT8    Verify             : 1;
      UINT8    VerifyHost         : 1;
      UINT8    SessionId          : 1;
      UINT8    CaCertificate      : 1;
      UINT8    HostPublicCert     : 1;
      UINT8    HostPrivateKey     : 1;
      UINT8    CertRevocationList : 1;
      UINT8    HostPrivateKeyEx   : 1;
      UINT8    SignatureAlgoList  : 1;
      UINT8    EcCurve            : 1;
    } Services;
    UINT32    Family;
  } TlsSet;
  union {
    struct {
      UINT8    Version              : 1;
      UINT8    ConnectionEnd        : 1;
      UINT8    CurrentCipher        : 1;
      UINT8    CurrentCompressionId : 1;
      UINT8    Verify               : 1;
      UINT8    SessionId            : 1;
      UINT8    ClientRandom         : 1;
      UINT8    ServerRandom         : 1;
      UINT8    KeyMaterial          : 1;
      UINT8    CaCertificate        : 1;
      UINT8    HostPublicCert       : 1;
      UINT8    HostPrivateKey       : 1;
      UINT8    CertRevocationList   : 1;
      UINT8    ExportKey            : 1;
    } Services;
    UINT32    Family;
  } TlsGet;
  union {
    struct {
      UINT8    Sign   : 1;
      UINT8    Verify : 1;
    } Services;
    UINT32    Family;
  } RsaPss;
  union {
    struct {
      UINT8    HashAll : 1;
    } Services;
    UINT32    Family;
  } ParallelHash;
  union {
    struct {
      UINT8    Encrypt : 1;
      UINT8    Decrypt : 1;
    } Services;
    UINT32    Family;
  } AeadAesGcm;
  union {
    struct {
      UINT8    Init        : 1;
      UINT8    FromBin     : 1;
      UINT8    ToBin       : 1;
      UINT8    Free        : 1;
      UINT8    Add         : 1;
      UINT8    Sub         : 1;
      UINT8    Mod         : 1;
      UINT8    ExpMod      : 1;
      UINT8    InverseMod  : 1;
      UINT8    Div         : 1;
      UINT8    MulMod      : 1;
      UINT8    Cmp         : 1;
      UINT8    Bits        : 1;
      UINT8    Bytes       : 1;
      UINT8    IsWord      : 1;
      UINT8    IsOdd       : 1;
      UINT8    Copy        : 1;
      UINT8    ValueOne    : 1;
      UINT8    RShift      : 1;
      UINT8    ConstTime   : 1;
      UINT8    SqrMod      : 1;
      UINT8    NewContext  : 1;
      UINT8    ContextFree : 1;
      UINT8    SetUint     : 1;
      UINT8    AddMod      : 1;
    } Services;
    UINT32    Family;
  } Bn;
  union {
    struct {
      UINT8    GroupInit                     : 1;
      UINT8    GroupGetCurve                 : 1;
      UINT8    GroupGetOrder                 : 1;
      UINT8    GroupFree                     : 1;
      UINT8    PointInit                     : 1;
      UINT8    PointDeInit                   : 1;
      UINT8    PointGetAffineCoordinates     : 1;
      UINT8    PointSetAffineCoordinates     : 1;
      UINT8    PointAdd                      : 1;
      UINT8    PointMul                      : 1;
      UINT8    PointInvert                   : 1;
      UINT8    PointIsOnCurve                : 1;
      UINT8    PointIsAtInfinity             : 1;
      UINT8    PointEqual                    : 1;
      UINT8    PointSetCompressedCoordinates : 1;
      UINT8    NewByNid                      : 1;
      UINT8    Free                          : 1;
      UINT8    GenerateKey                   : 1;
      UINT8    GetPubKey                     : 1;
      UINT8    DhComputeKey                  : 1;
      UINT8    GetPublicKeyFromX509          : 1;
      UINT8    GetPrivateKeyFromPem          : 1;
      UINT8    DsaSign                       : 1;
      UINT8    DsaVerify                     : 1;
    } Services;
    UINT32    Family;
  } Ec;
} PCD_CRYPTO_SERVICE_FAMILY_ENABLE;

#endif
