public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Imran Desai" <imran.desai@intel.com>
To: "Wang, Jian J" <jian.j.wang@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [edk2-devel] [PATCH v4 2/5] SecurityPkg: introduce the SM3 digest algorithm
Date: Thu, 4 Jul 2019 00:34:25 +0000	[thread overview]
Message-ID: <688D07BB9E3A9E4A852BA1336D1910FF83FE9E8B@fmsmsx104.amr.corp.intel.com> (raw)
In-Reply-To: <D827630B58408649ACB04F44C5100036259398D5@SHSMSX107.ccr.corp.intel.com>

Thanks I will follow the convention next time. 

Best Regards,

Imran Desai
________________________________________
From: Wang, Jian J
Sent: Wednesday, July 03, 2019 1:33 AM
To: devel@edk2.groups.io; Wang, Jian J; Desai, Imran
Subject: RE: [edk2-devel] [PATCH v4 2/5] SecurityPkg: introduce the SM3 digest algorithm

Pushed at a7c7d21ffa9ad14b418e728a882df0a9b8815bf6

Regards,
Jian


> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Wang, Jian J
> Sent: Wednesday, July 03, 2019 10:55 AM
> To: devel@edk2.groups.io; Desai, Imran <imran.desai@intel.com>
> Subject: Re: [edk2-devel] [PATCH v4 2/5] SecurityPkg: introduce the SM3
> digest algorithm
>
> Hi Imran,
>
> Usually we send the whole series of patches even only one of them is
> updated. It's
> hard to find old ones. I'm not going to ask you to re-send whole patch series
> this time.
> But please follow the convention for any future patches.
>
> For this patch series,
>
> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
>
> > -----Original Message-----
> > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> > Imran Desai
> > Sent: Tuesday, July 02, 2019 9:31 PM
> > To: devel@edk2.groups.io
> > Subject: [edk2-devel] [PATCH v4 2/5] SecurityPkg: introduce the SM3
> digest
> > algorithm
> >
> > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1781
> >
> > v4: Fixed truncated email addresses
> >
> > EDK2 Support for SM3 digest algorithm is needed to enable TPM with
> SM3
> > PCR
> > banks. This digest algorithm is part of the China Crypto algorithm suite.
> > This integration has dependency on the openssl_1_1_1b integration into
> > edk2.
> > This patch add SM3 algorithm in the hashinstance library.
> >
> > Cc: Chao Zhang <chao.b.zhang@intel.com>
> > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > Cc: Jian Wang <jian.j.wang@intel.com>
> >
> > Signed-off-by: Imran Desai <imran.desai@intel.com>
> > ---
> >  SecurityPkg/SecurityPkg.dsc                                   |   3 +
> >  SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf |  41
> > ++++++
> >  SecurityPkg/Include/Library/HashLib.h                         |   1 +
> >  SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.c   | 150
> > ++++++++++++++++++++
> >  SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.uni |  15
> ++
> >  5 files changed, 210 insertions(+)
> >
> > diff --git a/SecurityPkg/SecurityPkg.dsc b/SecurityPkg/SecurityPkg.dsc
> > index a2ee0528f0d2..044319ab5e36 100644
> > --- a/SecurityPkg/SecurityPkg.dsc
> > +++ b/SecurityPkg/SecurityPkg.dsc
> > @@ -222,6 +222,7 @@ [Components.IA32, Components.X64]
> >    SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.inf
> >    SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.inf
> >    SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.inf
> > +  SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
> >
> >    SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigPei.inf {
> >      <LibraryClasses>
> > @@ -236,6 +237,7 @@ [Components.IA32, Components.X64]
> >
> >
> NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.
> > inf
> >
> >
> NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.
> > inf
> >
> >
> NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.
> > inf
> > +
> > NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
> >    }
> >
> >    SecurityPkg/Tcg/Tcg2Dxe/Tcg2Dxe.inf {
> > @@ -246,6 +248,7 @@ [Components.IA32, Components.X64]
> >
> >
> NULL|SecurityPkg/Library/HashInstanceLibSha256/HashInstanceLibSha256.
> > inf
> >
> >
> NULL|SecurityPkg/Library/HashInstanceLibSha384/HashInstanceLibSha384.
> > inf
> >
> >
> NULL|SecurityPkg/Library/HashInstanceLibSha512/HashInstanceLibSha512.
> > inf
> > +
> > NULL|SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
> >        PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
> >    }
> >    SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf {
> > diff --git
> > a/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
> > b/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
> > new file mode 100644
> > index 000000000000..781164d74ea0
> > --- /dev/null
> > +++ b/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.inf
> > @@ -0,0 +1,41 @@
> > +## @file
> > +#  Provides BaseCrypto SM3 hash service
> > +#
> > +#  This library can be registered to BaseCrypto router, to serve as hash
> > engine.
> > +#
> > +#  Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>
> > +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> > +#
> > +##
> > +
> > +[Defines]
> > +  INF_VERSION                    = 0x00010005
> > +  BASE_NAME                      = HashInstanceLibSm3
> > +  MODULE_UNI_FILE                = HashInstanceLibSm3.uni
> > +  FILE_GUID                      = C5865D5D-9ACE-39FB-DC7C-0511891D40F9
> > +  MODULE_TYPE                    = BASE
> > +  VERSION_STRING                 = 1.0
> > +  LIBRARY_CLASS                  = NULL
> > +  CONSTRUCTOR                    = HashInstanceLibSm3Constructor
> > +
> > +#
> > +# The following information is for reference only and not required by the
> > build tools.
> > +#
> > +#  VALID_ARCHITECTURES           = IA32 X64
> > +#
> > +
> > +[Sources]
> > +  HashInstanceLibSm3.c
> > +
> > +[Packages]
> > +  MdePkg/MdePkg.dec
> > +  SecurityPkg/SecurityPkg.dec
> > +  CryptoPkg/CryptoPkg.dec
> > +
> > +[LibraryClasses]
> > +  BaseLib
> > +  BaseMemoryLib
> > +  DebugLib
> > +  Tpm2CommandLib
> > +  MemoryAllocationLib
> > +  BaseCryptLib
> > diff --git a/SecurityPkg/Include/Library/HashLib.h
> > b/SecurityPkg/Include/Library/HashLib.h
> > index 63f08398788b..a5b433d824a4 100644
> > --- a/SecurityPkg/Include/Library/HashLib.h
> > +++ b/SecurityPkg/Include/Library/HashLib.h
> > @@ -137,6 +137,7 @@ EFI_STATUS
> >  #define HASH_ALGORITHM_SHA256_GUID
> > EFI_HASH_ALGORITHM_SHA256_GUID
> >  #define HASH_ALGORITHM_SHA384_GUID
> > EFI_HASH_ALGORITHM_SHA384_GUID
> >  #define HASH_ALGORITHM_SHA512_GUID
> > EFI_HASH_ALGORITHM_SHA512_GUID
> > +#define HASH_ALGORITHM_SM3_256_GUID
> > EFI_HASH_ALGORITHM_SM3_256_GUID
> >
> >  typedef struct {
> >    EFI_GUID                           HashGuid;
> > diff --git
> a/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.c
> > b/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.c
> > new file mode 100644
> > index 000000000000..8fd95162118a
> > --- /dev/null
> > +++ b/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.c
> > @@ -0,0 +1,150 @@
> > +/** @file
> > +  BaseCrypto SM3 hash instance library.
> > +  It can be registered to BaseCrypto router, to serve as hash engine.
> > +
> > +  Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>
> > +  SPDX-License-Identifier: BSD-2-Clause-Patent
> > +**/
> > +
> > +#include <PiPei.h>
> > +#include <Library/BaseLib.h>
> > +#include <Library/BaseMemoryLib.h>
> > +#include <Library/Tpm2CommandLib.h>
> > +#include <Library/DebugLib.h>
> > +#include <Library/BaseCryptLib.h>
> > +#include <Library/MemoryAllocationLib.h>
> > +#include <Library/HashLib.h>
> > +
> > +/**
> > +  The function set SM3 to digest list.
> > +
> > +  @param DigestList   digest list
> > +  @param Sm3Digest    SM3 digest
> > +**/
> > +VOID
> > +Tpm2SetSm3ToDigestList (
> > +  IN TPML_DIGEST_VALUES *DigestList,
> > +  IN UINT8              *Sm3Digest
> > +  )
> > +{
> > +  DigestList->count = 1;
> > +  DigestList->digests[0].hashAlg = TPM_ALG_SM3_256;
> > +  CopyMem (
> > +    DigestList->digests[0].digest.sm3_256,
> > +    Sm3Digest,
> > +    SM3_256_DIGEST_SIZE
> > +    );
> > +}
> > +
> > +/**
> > +  Start hash sequence.
> > +
> > +  @param HashHandle Hash handle.
> > +
> > +  @retval EFI_SUCCESS          Hash sequence start and HandleHandle
> > returned.
> > +  @retval EFI_OUT_OF_RESOURCES No enough resource to start hash.
> > +**/
> > +EFI_STATUS
> > +EFIAPI
> > +Sm3HashInit (
> > +  OUT HASH_HANDLE    *HashHandle
> > +  )
> > +{
> > +  VOID     *Sm3Ctx;
> > +  UINTN    CtxSize;
> > +
> > +  CtxSize = Sm3GetContextSize ();
> > +  Sm3Ctx = AllocatePool (CtxSize);
> > +  if (Sm3Ctx == NULL) {
> > +    return EFI_OUT_OF_RESOURCES;
> > +  }
> > +
> > +  Sm3Init (Sm3Ctx);
> > +
> > +  *HashHandle = (HASH_HANDLE)Sm3Ctx;
> > +
> > +  return EFI_SUCCESS;
> > +}
> > +
> > +/**
> > +  Update hash sequence data.
> > +
> > +  @param HashHandle    Hash handle.
> > +  @param DataToHash    Data to be hashed.
> > +  @param DataToHashLen Data size.
> > +
> > +  @retval EFI_SUCCESS     Hash sequence updated.
> > +**/
> > +EFI_STATUS
> > +EFIAPI
> > +Sm3HashUpdate (
> > +  IN HASH_HANDLE    HashHandle,
> > +  IN VOID           *DataToHash,
> > +  IN UINTN          DataToHashLen
> > +  )
> > +{
> > +  VOID     *Sm3Ctx;
> > +
> > +  Sm3Ctx = (VOID *)HashHandle;
> > +  Sm3Update (Sm3Ctx, DataToHash, DataToHashLen);
> > +
> > +  return EFI_SUCCESS;
> > +}
> > +
> > +/**
> > +  Complete hash sequence complete.
> > +
> > +  @param HashHandle    Hash handle.
> > +  @param DigestList    Digest list.
> > +
> > +  @retval EFI_SUCCESS     Hash sequence complete and DigestList is
> > returned.
> > +**/
> > +EFI_STATUS
> > +EFIAPI
> > +Sm3HashFinal (
> > +  IN HASH_HANDLE         HashHandle,
> > +  OUT TPML_DIGEST_VALUES *DigestList
> > +  )
> > +{
> > +  UINT8         Digest[SM3_256_DIGEST_SIZE];
> > +  VOID          *Sm3Ctx;
> > +
> > +  Sm3Ctx = (VOID *)HashHandle;
> > +  Sm3Final (Sm3Ctx, Digest);
> > +
> > +  FreePool (Sm3Ctx);
> > +
> > +  Tpm2SetSm3ToDigestList (DigestList, Digest);
> > +
> > +  return EFI_SUCCESS;
> > +}
> > +
> > +HASH_INTERFACE  mSm3InternalHashInstance = {
> > +  HASH_ALGORITHM_SM3_256_GUID,
> > +  Sm3HashInit,
> > +  Sm3HashUpdate,
> > +  Sm3HashFinal,
> > +};
> > +
> > +/**
> > +  The function register SM3 instance.
> > +
> > +  @retval EFI_SUCCESS   SM3 instance is registered, or system dose not
> > support register SM3 instance
> > +**/
> > +EFI_STATUS
> > +EFIAPI
> > +HashInstanceLibSm3Constructor (
> > +  VOID
> > +  )
> > +{
> > +  EFI_STATUS  Status;
> > +
> > +  Status = RegisterHashInterfaceLib (&mSm3InternalHashInstance);
> > +  if ((Status == EFI_SUCCESS) || (Status == EFI_UNSUPPORTED)) {
> > +    //
> > +    // Unsupported means platform policy does not need this instance
> > enabled.
> > +    //
> > +    return EFI_SUCCESS;
> > +  }
> > +  return Status;
> > +}
> > diff --git
> > a/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.uni
> > b/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.uni
> > new file mode 100644
> > index 000000000000..07a5c53d9915
> > --- /dev/null
> > +++ b/SecurityPkg/Library/HashInstanceLibSm3/HashInstanceLibSm3.uni
> > @@ -0,0 +1,15 @@
> > +// /** @file
> > +// Provides BaseCrypto SM3 hash service
> > +//
> > +// This library can be registered to BaseCrypto router, to serve as hash
> > engine.
> > +//
> > +// Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved.<BR>
> > +// SPDX-License-Identifier: BSD-2-Clause-Patent
> > +//
> > +// **/
> > +
> > +
> > +#string STR_MODULE_ABSTRACT             #language en-US "Provides
> > BaseCrypto SM3 hash service"
> > +
> > +#string STR_MODULE_DESCRIPTION          #language en-US "This library
> > can be registered to BaseCrypto router, to serve as hash engine."
> > +
> > --
> > 2.17.0
> >
> >
> >
>
>
> 


      reply	other threads:[~2019-07-04  0:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-02 13:30 [PATCH v4 2/5] SecurityPkg: introduce the SM3 digest algorithm Imran Desai
2019-07-02 14:48 ` [edk2-devel] " Yao, Jiewen
2019-07-03  2:54 ` Wang, Jian J
     [not found] ` <15ADC6233FA6F2A5.24184@groups.io>
2019-07-03  8:33   ` Wang, Jian J
2019-07-04  0:34     ` Imran Desai [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=688D07BB9E3A9E4A852BA1336D1910FF83FE9E8B@fmsmsx104.amr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox