[edk2] [PATCH 13/13] CryptoPkg/BaseCryptLib: allow MM_STANDALONE drivers to use this library

Ard Biesheuvel ard.biesheuvel at linaro.org
Fri Dec 21 02:13:30 PST 2018


On Fri, 14 Dec 2018 at 13:14, Jagadeesh Ujja <jagadeesh.ujja at arm.com> wrote:
>
> “BaseCryptLib” library can be used by MM_STANDALONE drivers as well.
> So add MM_STANDALONE as the module type this library supports.
>

This patch affects other drivers as well. Also, shouldn't we be using
SmmCryptLib for MM_STANDALONE?

The MODULE_TYPE of SmmCryptLib can be changed to BASE since it doesn't
have a constructor. I think that should also address your time()
issue, no?

> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jagadeesh Ujja <jagadeesh.ujja at arm.com>
> ---
>  CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf       |  7 ++++++-
>  CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf    |  4 ++++
>  CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c | 15 +++++++++------
>  3 files changed, 19 insertions(+), 7 deletions(-)
>
> diff --git a/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> index f29445c..b6ebac5 100644
> --- a/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> +++ b/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> @@ -7,6 +7,7 @@
>  #  buffer overflow or integer overflow.
>  #
>  #  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
> +#  Copyright (c) 2018, ARM Limited. All rights reserved.<BR>
>  #  This program and the accompanying materials
>  #  are licensed and made available under the terms and conditions of the BSD License
>  #  which accompanies this distribution.  The full text of the license may be found at
> @@ -24,7 +25,7 @@
>    FILE_GUID                      = be3bb803-91b6-4da0-bd91-a8b21c18ca5d
>    MODULE_TYPE                    = DXE_DRIVER
>    VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = BaseCryptLib|DXE_DRIVER DXE_CORE UEFI_APPLICATION UEFI_DRIVER
> +  LIBRARY_CLASS                  = BaseCryptLib|DXE_DRIVER DXE_CORE UEFI_APPLICATION UEFI_DRIVER MM_STANDALONE
>
>  #
>  # The following information is for reference only and not required by the build tools.
> @@ -85,6 +86,10 @@
>    OpensslLib
>    IntrinsicLib
>    PrintLib
> +  PcdLib
> +
> +[Pcd]
> +  gEfiMdePkgTokenSpaceGuid.PcdStandaloneMmCodeEnabled
>
>  #
>  # Remove these [BuildOptions] after this library is cleaned up
> diff --git a/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
> index 32628c8..fb16451 100644
> --- a/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
> +++ b/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
> @@ -91,6 +91,10 @@
>    OpensslLib
>    IntrinsicLib
>    PrintLib
> +  PcdLib
> +
> +[Pcd]
> +  gEfiMdePkgTokenSpaceGuid.PcdStandaloneMmCodeEnabled
>
>  #
>  # Remove these [BuildOptions] after this library is cleaned up
> diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c b/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c
> index 5f9b0c2..de8e756 100644
> --- a/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c
> +++ b/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c
> @@ -3,6 +3,7 @@
>    for OpenSSL-based Cryptographic Library (used in DXE & RUNTIME).
>
>  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2018, ARM Limited. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD License
>  which accompanies this distribution.  The full text of the license may be found at
> @@ -77,12 +78,14 @@ time_t time (time_t *timer)
>    time_t      CalTime;
>    UINTN       Year;
>
> -  //
> -  // Get the current time and date information
> -  //
> -  Status = gRT->GetTime (&Time, NULL);
> -  if (EFI_ERROR (Status) || (Time.Year < 1970)) {
> -    return 0;
> +  if (!PcdGetBool (PcdStandaloneMmCodeEnabled)) {
> +    //
> +    // Get the current time and date information
> +    //
> +    Status = gRT->GetTime (&Time, NULL);
> +    if (EFI_ERROR (Status) || (Time.Year < 1970)) {
> +      return 0;
> +    }
>    }
>
>    //
> --
> 2.7.4
>


More information about the edk2-devel mailing list