Skip to content

Commit

Permalink
CryptoBinPkg: Assume crypto service/arch NONE values (#71)
Browse files Browse the repository at this point in the history
## Description

A platform is expected to define the crypto services and applicable
archs at the beginning of the platform DSC and then include the
CryptoDriver.inc.dsc file. This file currently requires that all
services and archs are accounted for even if they are not used.

This change first checks if the platform set any values. If not, then
the service and corresponding arch is set to NONE. This allows
platforms to simply opt into the services and corresponding archs
that are necessary.

- [ ] Impacts functionality?
- **Functionality** - Does the change ultimately impact how firmware
functions?
- Examples: Add a new library, publish a new PPI, update an algorithm,
...
- [ ] Impacts security?
- **Security** - Does the change have a direct security impact on an
application,
    flow, or firmware?
  - Examples: Crypto algorithm change, buffer overflow fix, parameter
    validation improvement, ...
- [ ] Breaking change?
- **Breaking change** - Will anyone consuming this change experience a
break
    in build or boot behavior?
- Examples: Add a new library class, move a module to a different repo,
call
    a function in a new library class in a pre-existing module, ...
- [ ] Includes tests?
  - **Tests** - Does the change include any explicit test code?
  - Examples: Unit tests, integration tests, robot tests, ...
- [ ] Includes documentation?
- **Documentation** - Does the change contain explicit documentation
additions
    outside direct code modifications (and comments)?
- Examples: Update readme file, add feature readme file, link to
documentation
    on an a separate Web page, ...

## How This Was Tested

- Tested changes in mu_tiano_platforms with services and archs missing
to confirm
  the `NONE` value is applied.
- Tested changes in mu_tiano_platforms with services set to actual
values to verify
  the values are retained.

## Integration Instructions

Define the crypto services needed for a platform. If a crypto service is
used,
set the applicable arch. Otherwise, the arch does not need to be
specified.

Signed-off-by: Michael Kubacki <[email protected]>
  • Loading branch information
makubacki authored Feb 26, 2024
1 parent 1a86e7f commit 478ce7e
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 deletions.
22 changes: 11 additions & 11 deletions CryptoBinPkg/Driver/Bin/CryptoDriver.inc.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -2,80 +2,80 @@
# AUTOGENERATED BY CryptoBinPkg\Driver\Packaging\generate_cryptodriver.py
# AUTOGENED AS CryptoDriver.inc.dsc
# DO NOT MODIFY
# GENERATED ON: 2024-02-12 18:57:08.464561
# GENERATED ON: 2024-02-26 15:25:45.485204

# this is to be included by a platform :)
[Defines]
!ifndef PEI_CRYPTO_SERVICES
!error Please define PEI_CRYPTO_SERVICES
DEFINE PEI_CRYPTO_SERVICES = NONE
!endif
!if $(PEI_CRYPTO_SERVICES) IN "ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD"
!if $(PEI_CRYPTO_SERVICES) != NONE
!ifndef PEI_CRYPTO_ARCH
!error Please define PEI_CRYPTO_ARCH for your platform
!endif
!else
# we don't have a problem
DEFINE PEI_CRYPTO_ARCH = NONE
!endif
!else
!error PEI_CRYPTO_SERVICES must be set to one of ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD.
!endif

!ifndef DXE_CRYPTO_SERVICES
!error Please define DXE_CRYPTO_SERVICES
DEFINE DXE_CRYPTO_SERVICES = NONE
!endif
!if $(DXE_CRYPTO_SERVICES) IN "ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD"
!if $(DXE_CRYPTO_SERVICES) != NONE
!ifndef DXE_CRYPTO_ARCH
!error Please define DXE_CRYPTO_ARCH for your platform
!endif
!else
# we don't have a problem
DEFINE DXE_CRYPTO_ARCH = NONE
!endif
!else
!error DXE_CRYPTO_SERVICES must be set to one of ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD.
!endif

!ifndef RUNTIMEDXE_CRYPTO_SERVICES
!error Please define RUNTIMEDXE_CRYPTO_SERVICES
DEFINE RUNTIMEDXE_CRYPTO_SERVICES = NONE
!endif
!if $(RUNTIMEDXE_CRYPTO_SERVICES) IN "ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD"
!if $(RUNTIMEDXE_CRYPTO_SERVICES) != NONE
!ifndef RUNTIMEDXE_CRYPTO_ARCH
!error Please define RUNTIMEDXE_CRYPTO_ARCH for your platform
!endif
!else
# we don't have a problem
DEFINE RUNTIMEDXE_CRYPTO_ARCH = NONE
!endif
!else
!error RUNTIMEDXE_CRYPTO_SERVICES must be set to one of ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD.
!endif

!ifndef SMM_CRYPTO_SERVICES
!error Please define SMM_CRYPTO_SERVICES
DEFINE SMM_CRYPTO_SERVICES = NONE
!endif
!if $(SMM_CRYPTO_SERVICES) IN "ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD"
!if $(SMM_CRYPTO_SERVICES) != NONE
!ifndef SMM_CRYPTO_ARCH
!error Please define SMM_CRYPTO_ARCH for your platform
!endif
!else
# we don't have a problem
DEFINE SMM_CRYPTO_ARCH = NONE
!endif
!else
!error SMM_CRYPTO_SERVICES must be set to one of ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD.
!endif

!ifndef STANDALONEMM_CRYPTO_SERVICES
!error Please define STANDALONEMM_CRYPTO_SERVICES
DEFINE STANDALONEMM_CRYPTO_SERVICES = NONE
!endif
!if $(STANDALONEMM_CRYPTO_SERVICES) IN "ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD"
!if $(STANDALONEMM_CRYPTO_SERVICES) != NONE
!ifndef STANDALONEMM_CRYPTO_ARCH
!error Please define STANDALONEMM_CRYPTO_ARCH for your platform
!endif
!else
# we don't have a problem
DEFINE STANDALONEMM_CRYPTO_ARCH = NONE
!endif
!else
!error STANDALONEMM_CRYPTO_SERVICES must be set to one of ALL NONE TINY_SHA MINIMAL_SHA_SM3 SMALL_SHA_RSA STANDARD.
Expand Down
4 changes: 2 additions & 2 deletions CryptoBinPkg/Driver/Packaging/generate_cryptodriver.py
Original file line number Diff line number Diff line change
Expand Up @@ -787,7 +787,7 @@ class options():
for phase in phases:
phase = phase.upper()
dsc_lines.append(f"!ifndef {phase}_CRYPTO_SERVICES")
dsc_lines.append(f" !error Please define {phase}_CRYPTO_SERVICES")
dsc_lines.append(f" DEFINE {phase}_CRYPTO_SERVICES = NONE")
dsc_lines.append("!endif")
dsc_lines.append(
f"!if $({phase}_CRYPTO_SERVICES) IN \"{all_flavors}\"")
Expand All @@ -797,7 +797,7 @@ class options():
f" !error Please define {phase}_CRYPTO_ARCH for your platform")
dsc_lines.append(" !endif")
dsc_lines.append(" !else")
dsc_lines.append(" # we don't have a problem")
dsc_lines.append(f" DEFINE {phase}_CRYPTO_ARCH = NONE")
dsc_lines.append(" !endif")
dsc_lines.append("!else")
dsc_lines.append(
Expand Down

0 comments on commit 478ce7e

Please sign in to comment.