CryptoPkg.dsc 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. ## @file
  2. # Cryptographic Library Package for UEFI Security Implementation.
  3. # PEIM, DXE Driver, and SMM Driver with all crypto services enabled.
  4. #
  5. # Copyright (c) 2009 - 2022, Intel Corporation. All rights reserved.<BR>
  6. # Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
  7. # Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
  8. # SPDX-License-Identifier: BSD-2-Clause-Patent
  9. #
  10. ##
  11. ################################################################################
  12. #
  13. # Defines Section - statements that will be processed to create a Makefile.
  14. #
  15. ################################################################################
  16. [Defines]
  17. PLATFORM_NAME = CryptoPkg
  18. PLATFORM_GUID = E1063286-6C8C-4c25-AEF0-67A9A5B6E6B6
  19. PLATFORM_VERSION = 0.98
  20. DSC_SPECIFICATION = 0x00010005
  21. SUPPORTED_ARCHITECTURES = IA32|X64|ARM|AARCH64|RISCV64|LOONGARCH64
  22. BUILD_TARGETS = DEBUG|RELEASE|NOOPT
  23. SKUID_IDENTIFIER = DEFAULT
  24. #
  25. # Flavor of PEI, DXE, SMM modules to build.
  26. # Must be one of ALL, NONE, MIN_PEI, MIN_DXE_MIN_SMM, TARGET_UINT_TESTS.
  27. # Default is ALL that is used for package build verification.
  28. # ALL - Build PEIM, DXE, and SMM drivers. Protocols and PPIs
  29. # publish all services.
  30. # NONE - Build PEIM, DXE, and SMM drivers. Protocols and PPIs
  31. # publish no services. Used to verify compiler/linker
  32. # optimizations are working correctly.
  33. # MIN_PEI - Build PEIM with PPI that publishes minimum required
  34. # services.
  35. # MIN_DXE_MIN_SMM - Build DXE and SMM drivers with Protocols that publish
  36. # minimum required services.
  37. # TARGET_UNIT_TESTS - Build target-based unit tests
  38. #
  39. DEFINE CRYPTO_SERVICES = ALL
  40. !if $(CRYPTO_SERVICES) IN "ALL NONE MIN_PEI MIN_DXE_MIN_SMM TARGET_UNIT_TESTS"
  41. !else
  42. !error CRYPTO_SERVICES must be set to one of ALL NONE MIN_PEI MIN_DXE_MIN_SMM TARGET_UNIT_TESTS.
  43. !endif
  44. #
  45. # Define different OUTPUT_DIRECTORY for each CRYPTO_SERVICES profile
  46. #
  47. !if $(CRYPTO_SERVICES) == ALL
  48. OUTPUT_DIRECTORY = Build/CryptoPkg/All
  49. !endif
  50. !if $(CRYPTO_SERVICES) == NONE
  51. OUTPUT_DIRECTORY = Build/CryptoPkg/None
  52. !endif
  53. !if $(CRYPTO_SERVICES) == MIN_PEI
  54. OUTPUT_DIRECTORY = Build/CryptoPkg/MinPei
  55. !endif
  56. !if $(CRYPTO_SERVICES) == MIN_DXE_MIN_SMM
  57. OUTPUT_DIRECTORY = Build/CryptoPkg/MinDxeMinSmm
  58. !endif
  59. !if $(CRYPTO_SERVICES) == TARGET_UNIT_TESTS
  60. OUTPUT_DIRECTORY = Build/CryptoPkg/TagetUnitTests
  61. !endif
  62. #
  63. # Define FILE_GUID names/values for CryptoPei, CryptopDxe, and CryptoSmm
  64. # drivers that are linked with different OpensslLib instances
  65. #
  66. DEFINE PEI_CRYPTO_GUID = C693A250-6B36-49B9-B7F3-7283F8136A72
  67. DEFINE PEI_STD_GUID = EBD49F5C-6D8B-40D1-A56D-9AFA485A8661
  68. DEFINE PEI_FULL_GUID = D51FCE59-6860-49C0-9B35-984470735D17
  69. DEFINE PEI_STD_ACCEL_GUID = DCC9CB49-7BE2-47C6-864E-6DCC932360F9
  70. DEFINE PEI_FULL_ACCEL_GUID = A10827AD-7598-4955-B661-52EE2B62B057
  71. DEFINE DXE_CRYPTO_GUID = 31C17C54-325D-47D5-8622-888098F10E44
  72. DEFINE DXE_STD_GUID = ADD6D05A-52A2-437B-98E7-DBFDA89352CD
  73. DEFINE DXE_FULL_GUID = AA83B296-F6EA-447F-B013-E80E98629CF8
  74. DEFINE DXE_STD_ACCEL_GUID = 9FBDAD27-910C-4229-9EFF-A93BB5FE18C6
  75. DEFINE DXE_FULL_ACCEL_GUID = 41A491D1-A972-468B-A299-DABF415A43B7
  76. DEFINE SMM_CRYPTO_GUID = 1A1C9E13-5722-4636-AB73-31328EDE8BAF
  77. DEFINE SMM_STD_GUID = E4D7D1E3-E886-4412-A442-EFD6F2502DD3
  78. DEFINE SMM_FULL_GUID = 1930CE7E-6598-48ED-8AB1-EBE7E85EC254
  79. DEFINE SMM_STD_ACCEL_GUID = 828959D3-CEA6-4B79-B1FC-5AFA0D7F2144
  80. DEFINE SMM_FULL_ACCEL_GUID = C1760694-AB3A-4532-8C6D-52D8F86EB1AA
  81. !if $(CRYPTO_SERVICES) == TARGET_UNIT_TESTS
  82. !include UnitTestFrameworkPkg/UnitTestFrameworkPkgTarget.dsc.inc
  83. !endif
  84. ################################################################################
  85. #
  86. # Library Class section - list of all Library Classes needed by this Platform.
  87. #
  88. ################################################################################
  89. !include MdePkg/MdeLibs.dsc.inc
  90. [LibraryClasses]
  91. BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
  92. BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
  93. DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
  94. SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
  95. SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
  96. TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
  97. RngLib|MdePkg/Library/BaseRngLibNull/BaseRngLibNull.inf
  98. PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
  99. DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
  100. DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
  101. OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
  102. HashApiLib|CryptoPkg/Library/BaseHashApiLib/BaseHashApiLib.inf
  103. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
  104. IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
  105. [LibraryClasses.IA32, LibraryClasses.X64, LibraryClasses.AARCH64]
  106. RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf
  107. [LibraryClasses.ARM, LibraryClasses.AARCH64]
  108. ArmLib|ArmPkg/Library/ArmLib/ArmBaseLib.inf
  109. #
  110. # It is not possible to prevent the ARM compiler for generic intrinsic functions.
  111. # This library provides the instrinsic functions generate by a given compiler.
  112. # [LibraryClasses.ARM, LibraryClasses.AARCH64] and NULL mean link this library
  113. # into all ARM and AARCH64 images.
  114. #
  115. NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
  116. # Add support for stack protector
  117. NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
  118. [LibraryClasses.ARM]
  119. ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf
  120. [LibraryClasses.common.SEC]
  121. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf
  122. TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
  123. [LibraryClasses.common.PEIM]
  124. PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
  125. PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
  126. PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
  127. MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
  128. HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
  129. PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
  130. ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
  131. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
  132. TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
  133. [LibraryClasses.IA32.PEIM, LibraryClasses.X64.PEIM]
  134. PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
  135. [LibraryClasses.common.DXE_DRIVER]
  136. UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
  137. UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
  138. UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
  139. MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
  140. ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
  141. PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
  142. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
  143. TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
  144. [LibraryClasses.common.DXE_SMM_DRIVER]
  145. UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
  146. UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
  147. SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
  148. MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf
  149. MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
  150. ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
  151. PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
  152. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
  153. TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
  154. [LibraryClasses.common.UEFI_APPLICATION]
  155. UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf
  156. UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
  157. UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
  158. MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
  159. ReportStatusCodeLib|MdePkg/Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.inf
  160. PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
  161. ################################################################################
  162. #
  163. # Pcd Section - list of all EDK II PCD Entries defined by this Platform
  164. #
  165. ################################################################################
  166. [PcdsFixedAtBuild]
  167. gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f
  168. gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000
  169. gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x06
  170. #
  171. # For ALL and TARGET_UINT_TESTS profiles, enable all non-deprecated families
  172. # and services in PcdCryptoServiceFamilyEnable.
  173. #
  174. !if $(CRYPTO_SERVICES) IN "ALL TARGET_UINT_TESTS"
  175. [PcdsFixedAtBuild]
  176. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  177. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha384.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  178. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  179. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Dh.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  180. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Random.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  181. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  182. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  183. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  184. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  185. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha512.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  186. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.X509.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  187. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.GetContextSize | TRUE
  188. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.Init | TRUE
  189. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.CbcEncrypt | TRUE
  190. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.CbcDecrypt | TRUE
  191. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Arc4.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  192. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  193. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Hkdf.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  194. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Tls.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  195. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.TlsSet.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  196. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.TlsGet.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  197. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.RsaPss.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  198. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.ParallelHash.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  199. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.AeadAesGcm.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  200. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Bn.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  201. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Ec.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  202. !endif
  203. #
  204. # Enable minimum set of families/services in PcdCryptoServiceFamilyEnable
  205. # required by typical PEI phase.
  206. #
  207. !if $(CRYPTO_SERVICES) == MIN_PEI
  208. [PcdsFixedAtBuild]
  209. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  210. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha384.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  211. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  212. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  213. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  214. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha512.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  215. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  216. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.Pkcs1Verify | TRUE
  217. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.New | TRUE
  218. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.Free | TRUE
  219. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.SetKey | TRUE
  220. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.Pkcs5HashPassword | TRUE
  221. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.GetContextSize | TRUE
  222. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.Init | TRUE
  223. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.CbcEncrypt | TRUE
  224. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.CbcDecrypt | TRUE
  225. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Hkdf.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  226. !endif
  227. #
  228. # Enable minimum set of families/services in PcdCryptoServiceFamilyEnable
  229. # required by typical DXE and SMM phases.
  230. #
  231. !if $(CRYPTO_SERVICES) == MIN_DXE_MIN_SMM
  232. [PcdsFixedAtBuild]
  233. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  234. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha384.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  235. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.Pkcs1v2Encrypt | TRUE
  236. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.Pkcs5HashPassword | TRUE
  237. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.Pkcs7Verify | TRUE
  238. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.VerifyEKUsInPkcs7Signature | TRUE
  239. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.Pkcs7GetSigners | TRUE
  240. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.Pkcs7FreeSigners | TRUE
  241. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Services.AuthenticodeVerify | TRUE
  242. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Random.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  243. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.Pkcs1Verify | TRUE
  244. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.New | TRUE
  245. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.Free | TRUE
  246. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.SetKey | TRUE
  247. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.GetPublicKeyFromX509 | TRUE
  248. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  249. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  250. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.HashAll | FALSE
  251. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.X509.Services.GetSubjectName | TRUE
  252. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.X509.Services.GetCommonName | TRUE
  253. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.X509.Services.GetOrganizationName | TRUE
  254. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.X509.Services.GetTBSCert | TRUE
  255. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Tls.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  256. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.TlsSet.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  257. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.TlsGet.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  258. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.GetContextSize | TRUE
  259. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.Init | TRUE
  260. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.CbcEncrypt | TRUE
  261. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Services.CbcDecrypt | TRUE
  262. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.AeadAesGcm.Services.Encrypt | TRUE
  263. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.AeadAesGcm.Services.Decrypt | TRUE
  264. gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Hkdf.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
  265. !endif
  266. ###################################################################################################
  267. #
  268. # Components Section - list of the modules and components that will be processed by compilation
  269. # tools and the EDK II tools to generate PE32/PE32+/Coff image files.
  270. #
  271. # Note: The EDK II DSC file is not used to specify how compiled binary images get placed
  272. # into firmware volume images. This section is just a list of modules to compile from
  273. # source into UEFI-compliant binaries.
  274. # It is the FDF file that contains information on combining binary files into firmware
  275. # volume images, whose concept is beyond UEFI and is described in PI specification.
  276. # Binary modules do not need to be listed in this section, as they should be
  277. # specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi),
  278. # Logo (Logo.bmp), and etc.
  279. # There may also be modules listed in this section that are not required in the FDF file,
  280. # When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
  281. # generated for it, but the binary will not be put into any firmware volume.
  282. #
  283. ###################################################################################################
  284. #
  285. # If profile is TARGET_UNIT_TESTS, then build target-based unit tests
  286. # using the OpensslLib, BaseCryptLib, and TlsLib with the largest set of
  287. # available services.
  288. #
  289. !if $(CRYPTO_SERVICES) == TARGET_UNIT_TESTS
  290. [Components.IA32, Components.X64, Components.ARM, Components.AARCH64]
  291. #
  292. # Target based unit tests
  293. #
  294. CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf {
  295. <LibraryClasses>
  296. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
  297. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
  298. TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
  299. <BuildOptions>
  300. MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE
  301. MSFT:DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000
  302. MSFT:DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000
  303. MSFT:NOOPT_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000
  304. }
  305. [Components.IA32, Components.X64]
  306. CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf {
  307. <Defines>
  308. FILE_GUID = B91B9A95-4D52-4501-A98F-A1711C14ED93
  309. <LibraryClasses>
  310. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
  311. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
  312. TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
  313. <BuildOptions>
  314. MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE
  315. MSFT:DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000
  316. MSFT:DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000
  317. MSFT:NOOPT_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000
  318. }
  319. [Components.RISCV64]
  320. CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf {
  321. <LibraryClasses>
  322. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
  323. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
  324. TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
  325. }
  326. !endif
  327. #
  328. # If profile is ALL, then do verification build of all library instances.
  329. #
  330. !if $(CRYPTO_SERVICES) == ALL
  331. [Components]
  332. #
  333. # Build verification of all library instances
  334. #
  335. CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
  336. CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf
  337. CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
  338. CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
  339. CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
  340. CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf
  341. CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
  342. CryptoPkg/Library/TlsLib/TlsLib.inf
  343. CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
  344. CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
  345. CryptoPkg/Library/OpensslLib/OpensslLib.inf
  346. CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
  347. CryptoPkg/Library/BaseHashApiLib/BaseHashApiLib.inf
  348. CryptoPkg/Library/BaseCryptLibOnProtocolPpi/PeiCryptLib.inf
  349. CryptoPkg/Library/BaseCryptLibOnProtocolPpi/DxeCryptLib.inf
  350. CryptoPkg/Library/BaseCryptLibOnProtocolPpi/SmmCryptLib.inf
  351. #
  352. # Build verification of target-based unit tests
  353. #
  354. CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf {
  355. <LibraryClasses>
  356. UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/UnitTestLib.inf
  357. UnitTestPersistenceLib|UnitTestFrameworkPkg/Library/UnitTestPersistenceLibNull/UnitTestPersistenceLibNull.inf
  358. UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultReportLib/UnitTestResultReportLibConOut.inf
  359. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
  360. BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
  361. TlsLib|CryptoPkg/Library/TlsLib/TlsLib.inf
  362. }
  363. [Components.IA32, Components.X64]
  364. #
  365. # Build verification of IA32/X64 specific libraries
  366. #
  367. CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
  368. CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
  369. !endif
  370. #
  371. # If profile is ALL or NONE or MIN_PEI, then build CryptoPei with all supported
  372. # OpensslLib instances.
  373. #
  374. !if $(CRYPTO_SERVICES) in "ALL NONE MIN_PEI"
  375. [Components]
  376. #
  377. # CryptoPei with OpensslLib instance without SSL or EC services
  378. #
  379. CryptoPkg/Driver/CryptoPei.inf {
  380. <Defines>
  381. FILE_GUID = $(PEI_CRYPTO_GUID)
  382. <LibraryClasses>
  383. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
  384. }
  385. #
  386. # CryptoPei with OpensslLib instance without EC services
  387. #
  388. CryptoPkg/Driver/CryptoPei.inf {
  389. <Defines>
  390. FILE_GUID = $(PEI_STD_GUID)
  391. <LibraryClasses>
  392. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
  393. }
  394. [Components.IA32, Components.X64, Components.ARM, Components.AARCH64]
  395. #
  396. # CryptoPei with OpensslLib instance with all services
  397. #
  398. CryptoPkg/Driver/CryptoPei.inf {
  399. <Defines>
  400. FILE_GUID = $(PEI_FULL_GUID)
  401. <LibraryClasses>
  402. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
  403. }
  404. [Components.IA32, Components.X64]
  405. #
  406. # CryptoPei with IA32/X64 performance optimized OpensslLib instance without EC services
  407. # IA32/X64 assembly optimizations required larger alignments
  408. #
  409. CryptoPkg/Driver/CryptoPei.inf {
  410. <Defines>
  411. FILE_GUID = $(PEI_STD_ACCEL_GUID)
  412. <LibraryClasses>
  413. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
  414. <BuildOptions>
  415. MSFT:*_*_IA32_DLINK_FLAGS = /ALIGN:64
  416. MSFT:*_*_X64_DLINK_FLAGS = /ALIGN:256
  417. }
  418. #
  419. # CryptoPei with IA32/X64 performance optimized OpensslLib instance all services
  420. # IA32/X64 assembly optimizations required larger alignments
  421. #
  422. CryptoPkg/Driver/CryptoPei.inf {
  423. <Defines>
  424. FILE_GUID = $(PEI_FULL_ACCEL_GUID)
  425. <LibraryClasses>
  426. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
  427. <BuildOptions>
  428. MSFT:*_*_IA32_DLINK_FLAGS = /ALIGN:64
  429. MSFT:*_*_X64_DLINK_FLAGS = /ALIGN:256
  430. }
  431. !endif
  432. #
  433. # If profile is ALL or NONE or MIN_DXE_MIN_SMM, then build CryptoDxe and
  434. # CryptoSmm using all supported OpensslLib instances.
  435. #
  436. !if $(CRYPTO_SERVICES) in "ALL NONE MIN_DXE_MIN_SMM"
  437. [Components]
  438. #
  439. # CryptoDxe with OpensslLib instance with no SSL or EC services
  440. #
  441. CryptoPkg/Driver/CryptoDxe.inf {
  442. <Defines>
  443. FILE_GUID = $(DXE_CRYPTO_GUID)
  444. <LibraryClasses>
  445. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
  446. TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
  447. }
  448. #
  449. # CryptoDxe with OpensslLib instance with no EC services
  450. #
  451. CryptoPkg/Driver/CryptoDxe.inf {
  452. <Defines>
  453. FILE_GUID = $(DXE_STD_GUID)
  454. <LibraryClasses>
  455. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
  456. }
  457. [Components.IA32, Components.X64, Components.ARM, Components.AARCH64]
  458. #
  459. # CryptoDxe with OpensslLib instance with all services
  460. #
  461. CryptoPkg/Driver/CryptoDxe.inf {
  462. <Defines>
  463. FILE_GUID = $(DXE_FULL_GUID)
  464. <LibraryClasses>
  465. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
  466. }
  467. [Components.IA32, Components.X64]
  468. #
  469. # CryptoDxe with IA32/X64 performance optimized OpensslLib instance with no EC services
  470. # with TLS feature enabled.
  471. # IA32/X64 assembly optimizations required larger alignments
  472. #
  473. CryptoPkg/Driver/CryptoDxe.inf {
  474. <Defines>
  475. FILE_GUID = $(DXE_STD_ACCEL_GUID)
  476. <LibraryClasses>
  477. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
  478. <BuildOptions>
  479. MSFT:*_*_IA32_DLINK_FLAGS = /ALIGN:64
  480. MSFT:*_*_X64_DLINK_FLAGS = /ALIGN:256
  481. }
  482. #
  483. # CryptoDxe with IA32/X64 performance optimized OpensslLib instance with all services.
  484. # IA32/X64 assembly optimizations required larger alignments
  485. #
  486. CryptoPkg/Driver/CryptoDxe.inf {
  487. <Defines>
  488. FILE_GUID = $(DXE_FULL_ACCEL_GUID)
  489. <LibraryClasses>
  490. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
  491. <BuildOptions>
  492. MSFT:*_*_IA32_DLINK_FLAGS = /ALIGN:64
  493. MSFT:*_*_X64_DLINK_FLAGS = /ALIGN:256
  494. }
  495. #
  496. # CryptoSmm with OpensslLib instance with no SSL or EC services
  497. #
  498. CryptoPkg/Driver/CryptoSmm.inf {
  499. <Defines>
  500. FILE_GUID = $(SMM_CRYPTO_GUID)
  501. <LibraryClasses>
  502. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
  503. }
  504. #
  505. # CryptoSmm with OpensslLib instance with no SSL services
  506. #
  507. CryptoPkg/Driver/CryptoSmm.inf {
  508. <Defines>
  509. FILE_GUID = $(SMM_STD_GUID)
  510. <LibraryClasses>
  511. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
  512. }
  513. #
  514. # CryptoSmm with OpensslLib instance with no all services
  515. #
  516. CryptoPkg/Driver/CryptoSmm.inf {
  517. <Defines>
  518. FILE_GUID = $(SMM_FULL_GUID)
  519. <LibraryClasses>
  520. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
  521. }
  522. #
  523. # CryptoSmm with IA32/X64 performance optimized OpensslLib instance with no EC services
  524. # IA32/X64 assembly optimizations required larger alignments
  525. #
  526. CryptoPkg/Driver/CryptoSmm.inf {
  527. <Defines>
  528. FILE_GUID = $(SMM_STD_ACCEL_GUID)
  529. <LibraryClasses>
  530. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
  531. <BuildOptions>
  532. MSFT:*_*_IA32_DLINK_FLAGS = /ALIGN:64
  533. MSFT:*_*_X64_DLINK_FLAGS = /ALIGN:256
  534. }
  535. #
  536. # CryptoSmm with IA32/X64 performance optimized OpensslLib instance with all services
  537. # IA32/X64 assembly optimizations required larger alignments
  538. #
  539. CryptoPkg/Driver/CryptoSmm.inf {
  540. <Defines>
  541. FILE_GUID = $(SMM_FULL_ACCEL_GUID)
  542. <LibraryClasses>
  543. OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
  544. <BuildOptions>
  545. MSFT:*_*_IA32_DLINK_FLAGS = /ALIGN:64
  546. MSFT:*_*_X64_DLINK_FLAGS = /ALIGN:256
  547. }
  548. !endif
  549. [BuildOptions]
  550. RELEASE_*_*_CC_FLAGS = -DMDEPKG_NDEBUG
  551. *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES