]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CryptoPkg/Include/Pcd/PcdCryptoServiceFamilyEnable.h
CryptoPkg: Document and disable deprecated crypto services
[mirror_edk2.git] / CryptoPkg / Include / Pcd / PcdCryptoServiceFamilyEnable.h
index 3d53c2f105e18c551e57678c5bc3ed2f144af23d..74eaf44cca3e81062cd52fa8146ca9e0755d0502 100644 (file)
@@ -1,6 +1,26 @@
 /** @file\r
   Defines the PCD_CRYPTO_SERVICE_FAMILY_ENABLE structure associated with\r
-  gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.\r
+  gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable that is used\r
+  to enable/disable crypto services at either the family scope or the\r
+  individual service scope.  Platforms can minimize the number of enabled\r
+  services to reduce size.\r
+\r
+  The following services have been deprecated and must never be enabled.\r
+  The associated fields in this data structure are never removed or replaced\r
+  to preseve the binary layout of the data structure.  New services are\r
+  always added to the end of the data structure.\r
+  * HmacMd5 family\r
+  * HmacSha1 family\r
+  * Md4 family\r
+  * Md5 family\r
+  * Tdes family\r
+  * Arc4 family\r
+  * Aes.Services.EcbEncrypt service\r
+  * Aes.Services.EcbDecrypt service\r
+\r
+  Is is recommended that the following services always be disabled and may\r
+  be deprecated in the future.\r
+  * Sha1 family\r
 \r
   Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 typedef struct {\r
   union {\r
     struct {\r
-      UINT8    New       : 1;\r
-      UINT8    Free      : 1;\r
-      UINT8    SetKey    : 1;\r
-      UINT8    Duplicate : 1;\r
-      UINT8    Update    : 1;\r
-      UINT8    Final     : 1;\r
+      UINT8    New       : 1;  // Deprecated\r
+      UINT8    Free      : 1;  // Deprecated\r
+      UINT8    SetKey    : 1;  // Deprecated\r
+      UINT8    Duplicate : 1;  // Deprecated\r
+      UINT8    Update    : 1;  // Deprecated\r
+      UINT8    Final     : 1;  // Deprecated\r
     } Services;\r
-    UINT32    Family;\r
+    UINT32    Family;          // Deprecated\r
   } HmacMd5;\r
+  union {\r
+    struct {\r
+      UINT8    New       : 1;  // Deprecated\r
+      UINT8    Free      : 1;  // Deprecated\r
+      UINT8    SetKey    : 1;  // Deprecated\r
+      UINT8    Duplicate : 1;  // Deprecated\r
+      UINT8    Update    : 1;  // Deprecated\r
+      UINT8    Final     : 1;  // Deprecated\r
+    } Services;\r
+    UINT32    Family;          // Deprecated\r
+  } HmacSha1;\r
   union {\r
     struct {\r
       UINT8    New       : 1;\r
@@ -42,9 +73,10 @@ typedef struct {
       UINT8    Duplicate : 1;\r
       UINT8    Update    : 1;\r
       UINT8    Final     : 1;\r
+      UINT8    All       : 1;\r
     } Services;\r
     UINT32    Family;\r
-  } HmacSha1;\r
+  } HmacSha256;\r
   union {\r
     struct {\r
       UINT8    New       : 1;\r
@@ -53,31 +85,32 @@ typedef struct {
       UINT8    Duplicate : 1;\r
       UINT8    Update    : 1;\r
       UINT8    Final     : 1;\r
+      UINT8    All       : 1;\r
     } Services;\r
     UINT32    Family;\r
-  } HmacSha256;\r
+  } HmacSha384;\r
   union {\r
     struct {\r
-      UINT8    GetContextSize : 1;\r
-      UINT8    Init           : 1;\r
-      UINT8    Duplicate      : 1;\r
-      UINT8    Update         : 1;\r
-      UINT8    Final          : 1;\r
-      UINT8    HashAll        : 1;\r
+      UINT8    GetContextSize : 1;  // Deprecated\r
+      UINT8    Init           : 1;  // Deprecated\r
+      UINT8    Duplicate      : 1;  // Deprecated\r
+      UINT8    Update         : 1;  // Deprecated\r
+      UINT8    Final          : 1;  // Deprecated\r
+      UINT8    HashAll        : 1;  // Deprecated\r
     } Services;\r
-    UINT32    Family;\r
+    UINT32    Family;               // Deprecated\r
   } Md4;\r
   union {\r
     struct {\r
-      UINT8    GetContextSize : 1;\r
-      UINT8    Init           : 1;\r
-      UINT8    Duplicate      : 1;\r
-      UINT8    Update         : 1;\r
-      UINT8    Final          : 1;\r
-      UINT8    HashAll        : 1;\r
+      UINT8    GetContextSize : 1;  // Deprecated\r
+      UINT8    Init           : 1;  // Deprecated\r
+      UINT8    Duplicate      : 1;  // Deprecated\r
+      UINT8    Update         : 1;  // Deprecated\r
+      UINT8    Final          : 1;  // Deprecated\r
+      UINT8    HashAll        : 1;  // Deprecated\r
     } Services;\r
     UINT32    Family;\r
-  } Md5;\r
+  } Md5;                            // Deprecated\r
   union {\r
     struct {\r
       UINT8    Pkcs1v2Encrypt             : 1;\r
@@ -130,14 +163,14 @@ typedef struct {
   } Rsa;\r
   union {\r
     struct {\r
-      UINT8    GetContextSize : 1;\r
-      UINT8    Init           : 1;\r
-      UINT8    Duplicate      : 1;\r
-      UINT8    Update         : 1;\r
-      UINT8    Final          : 1;\r
-      UINT8    HashAll        : 1;\r
+      UINT8    GetContextSize : 1;  // Recommend disable\r
+      UINT8    Init           : 1;  // Recommend disable\r
+      UINT8    Duplicate      : 1;  // Recommend disable\r
+      UINT8    Update         : 1;  // Recommend disable\r
+      UINT8    Final          : 1;  // Recommend disable\r
+      UINT8    HashAll        : 1;  // Recommend disable\r
     } Services;\r
-    UINT32    Family;\r
+    UINT32    Family;               // Recommend disable\r
   } Sha1;\r
   union {\r
     struct {\r
@@ -174,36 +207,50 @@ typedef struct {
   } Sha512;\r
   union {\r
     struct {\r
-      UINT8    GetSubjectName             : 1;\r
-      UINT8    GetCommonName              : 1;\r
-      UINT8    GetOrganizationName        : 1;\r
-      UINT8    VerifyCert                 : 1;\r
-      UINT8    ConstructCertificate       : 1;\r
-      UINT8    ConstructCertificateStack  : 1;\r
-      UINT8    ConstructCertificateStackV : 1;\r
-      UINT8    Free                       : 1;\r
-      UINT8    StackFree                  : 1;\r
-      UINT8    GetTBSCert                 : 1;\r
+      UINT8    GetSubjectName              : 1;\r
+      UINT8    GetCommonName               : 1;\r
+      UINT8    GetOrganizationName         : 1;\r
+      UINT8    VerifyCert                  : 1;\r
+      UINT8    ConstructCertificate        : 1;\r
+      UINT8    ConstructCertificateStack   : 1;\r
+      UINT8    ConstructCertificateStackV  : 1;\r
+      UINT8    Free                        : 1;\r
+      UINT8    StackFree                   : 1;\r
+      UINT8    GetTBSCert                  : 1;\r
+      UINT8    GetVersion                  : 1;\r
+      UINT8    GetSerialNumber             : 1;\r
+      UINT8    GetIssuerName               : 1;\r
+      UINT8    GetSignatureAlgorithm       : 1;\r
+      UINT8    GetExtensionData            : 1;\r
+      UINT8    GetExtendedKeyUsage         : 1;\r
+      UINT8    GetValidity                 : 1;\r
+      UINT8    FormatDateTime              : 1;\r
+      UINT8    CompareDateTime             : 1;\r
+      UINT8    GetKeyUsage                 : 1;\r
+      UINT8    VerifyCertChain             : 1;\r
+      UINT8    GetCertFromCertChain        : 1;\r
+      UINT8    Asn1GetTag                  : 1;\r
+      UINT8    GetExtendedBasicConstraints : 1;\r
     } Services;\r
     UINT32    Family;\r
   } X509;\r
   union {\r
     struct {\r
-      UINT8    GetContextSize : 1;\r
-      UINT8    Init           : 1;\r
-      UINT8    EcbEncrypt     : 1;\r
-      UINT8    EcbDecrypt     : 1;\r
-      UINT8    CbcEncrypt     : 1;\r
-      UINT8    CbcDecrypt     : 1;\r
+      UINT8    GetContextSize : 1;  // Deprecated\r
+      UINT8    Init           : 1;  // Deprecated\r
+      UINT8    EcbEncrypt     : 1;  // Deprecated\r
+      UINT8    EcbDecrypt     : 1;  // Deprecated\r
+      UINT8    CbcEncrypt     : 1;  // Deprecated\r
+      UINT8    CbcDecrypt     : 1;  // Deprecated\r
     } Services;\r
-    UINT32    Family;\r
+    UINT32    Family;               // Deprecated\r
   } Tdes;\r
   union {\r
     struct {\r
       UINT8    GetContextSize : 1;\r
       UINT8    Init           : 1;\r
-      UINT8    EcbEncrypt     : 1;\r
-      UINT8    EcbDecrypt     : 1;\r
+      UINT8    EcbEncrypt     : 1;  // Deprecated\r
+      UINT8    EcbDecrypt     : 1;  // Deprecated\r
       UINT8    CbcEncrypt     : 1;\r
       UINT8    CbcDecrypt     : 1;\r
     } Services;\r
@@ -211,13 +258,13 @@ typedef struct {
   } Aes;\r
   union {\r
     struct {\r
-      UINT8    GetContextSize : 1;\r
-      UINT8    Init           : 1;\r
-      UINT8    Encrypt        : 1;\r
-      UINT8    Decrypt        : 1;\r
-      UINT8    Reset          : 1;\r
+      UINT8    GetContextSize : 1;  // Deprecated\r
+      UINT8    Init           : 1;  // Deprecated\r
+      UINT8    Encrypt        : 1;  // Deprecated\r
+      UINT8    Decrypt        : 1;  // Deprecated\r
+      UINT8    Reset          : 1;  // Deprecated\r
     } Services;\r
-    UINT32    Family;\r
+    UINT32    Family;               // Deprecated\r
   } Arc4;\r
   union {\r
     struct {\r
@@ -232,7 +279,12 @@ typedef struct {
   } Sm3;\r
   union {\r
     struct {\r
-      UINT8    Sha256ExtractAndExpand;\r
+      UINT8    Sha256ExtractAndExpand : 1;\r
+      UINT8    Sha256Extract          : 1;\r
+      UINT8    Sha256Expand           : 1;\r
+      UINT8    Sha384ExtractAndExpand : 1;\r
+      UINT8    Sha384Extract          : 1;\r
+      UINT8    Sha384Expand           : 1;\r
     } Services;\r
     UINT32    Family;\r
   } Hkdf;\r
@@ -251,6 +303,7 @@ typedef struct {
       UINT8    CtrlTrafficIn  : 1;\r
       UINT8    Read           : 1;\r
       UINT8    Write          : 1;\r
+      UINT8    Shutdown       : 1;\r
     } Services;\r
     UINT32    Family;\r
   } Tls;\r
@@ -267,6 +320,9 @@ typedef struct {
       UINT8    HostPublicCert     : 1;\r
       UINT8    HostPrivateKey     : 1;\r
       UINT8    CertRevocationList : 1;\r
+      UINT8    HostPrivateKeyEx   : 1;\r
+      UINT8    SignatureAlgoList  : 1;\r
+      UINT8    EcCurve            : 1;\r
     } Services;\r
     UINT32    Family;\r
   } TlsSet;\r
@@ -285,6 +341,7 @@ typedef struct {
       UINT8    HostPublicCert       : 1;\r
       UINT8    HostPrivateKey       : 1;\r
       UINT8    CertRevocationList   : 1;\r
+      UINT8    ExportKey            : 1;\r
     } Services;\r
     UINT32    Family;\r
   } TlsGet;\r
@@ -301,6 +358,72 @@ typedef struct {
     } Services;\r
     UINT32    Family;\r
   } ParallelHash;\r
+  union {\r
+    struct {\r
+      UINT8    Encrypt : 1;\r
+      UINT8    Decrypt : 1;\r
+    } Services;\r
+    UINT32    Family;\r
+  } AeadAesGcm;\r
+  union {\r
+    struct {\r
+      UINT8    Init        : 1;\r
+      UINT8    FromBin     : 1;\r
+      UINT8    ToBin       : 1;\r
+      UINT8    Free        : 1;\r
+      UINT8    Add         : 1;\r
+      UINT8    Sub         : 1;\r
+      UINT8    Mod         : 1;\r
+      UINT8    ExpMod      : 1;\r
+      UINT8    InverseMod  : 1;\r
+      UINT8    Div         : 1;\r
+      UINT8    MulMod      : 1;\r
+      UINT8    Cmp         : 1;\r
+      UINT8    Bits        : 1;\r
+      UINT8    Bytes       : 1;\r
+      UINT8    IsWord      : 1;\r
+      UINT8    IsOdd       : 1;\r
+      UINT8    Copy        : 1;\r
+      UINT8    ValueOne    : 1;\r
+      UINT8    RShift      : 1;\r
+      UINT8    ConstTime   : 1;\r
+      UINT8    SqrMod      : 1;\r
+      UINT8    NewContext  : 1;\r
+      UINT8    ContextFree : 1;\r
+      UINT8    SetUint     : 1;\r
+      UINT8    AddMod      : 1;\r
+    } Services;\r
+    UINT32    Family;\r
+  } Bn;\r
+  union {\r
+    struct {\r
+      UINT8    GroupInit                     : 1;\r
+      UINT8    GroupGetCurve                 : 1;\r
+      UINT8    GroupGetOrder                 : 1;\r
+      UINT8    GroupFree                     : 1;\r
+      UINT8    PointInit                     : 1;\r
+      UINT8    PointDeInit                   : 1;\r
+      UINT8    PointGetAffineCoordinates     : 1;\r
+      UINT8    PointSetAffineCoordinates     : 1;\r
+      UINT8    PointAdd                      : 1;\r
+      UINT8    PointMul                      : 1;\r
+      UINT8    PointInvert                   : 1;\r
+      UINT8    PointIsOnCurve                : 1;\r
+      UINT8    PointIsAtInfinity             : 1;\r
+      UINT8    PointEqual                    : 1;\r
+      UINT8    PointSetCompressedCoordinates : 1;\r
+      UINT8    NewByNid                      : 1;\r
+      UINT8    Free                          : 1;\r
+      UINT8    GenerateKey                   : 1;\r
+      UINT8    GetPubKey                     : 1;\r
+      UINT8    DhComputeKey                  : 1;\r
+      UINT8    GetPublicKeyFromX509          : 1;\r
+      UINT8    GetPrivateKeyFromPem          : 1;\r
+      UINT8    DsaSign                       : 1;\r
+      UINT8    DsaVerify                     : 1;\r
+    } Services;\r
+    UINT32    Family;\r
+  } Ec;\r
 } PCD_CRYPTO_SERVICE_FAMILY_ENABLE;\r
 \r
 #endif\r