If you want to add one API for a library class, we need add implementation for all library instances.
Here the DXE version should also be updated to add such capability. > -----Original Message----- > From: Zhang, Qi1 <qi1.zh...@intel.com> > Sent: Friday, July 31, 2020 4:55 PM > To: devel@edk2.groups.io > Cc: Zhang, Qi1 <qi1.zh...@intel.com>; Yao, Jiewen <jiewen....@intel.com>; > Wang, Jian J <jian.j.w...@intel.com> > Subject: [PATCH 9/9] SecurityPkg/HashLib: add API HashFinal > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2376 > > Cc: Jiewen Yao <jiewen....@intel.com> > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Qi Zhang <qi1.zh...@intel.com> > Signed-off-by: Qi Zhang <qi1.zh...@intel.com> > --- > SecurityPkg/Include/Library/HashLib.h | 15 ++++++ > .../HashLibBaseCryptoRouterPei.c | 48 +++++++++++++++++++ > 2 files changed, 63 insertions(+) > > diff --git a/SecurityPkg/Include/Library/HashLib.h > b/SecurityPkg/Include/Library/HashLib.h > index 6ad960ad70..e2d9a62a1d 100644 > --- a/SecurityPkg/Include/Library/HashLib.h > +++ b/SecurityPkg/Include/Library/HashLib.h > @@ -47,6 +47,21 @@ HashUpdate ( > IN UINTN DataToHashLen > > ); > > > > +/** > > + Hash sequence complete and extend to PCR. > > + > > + @param HashHandle Hash handle. > > + @param DigestList Digest list. > > + > > + @retval EFI_SUCCESS Hash sequence complete and DigestList is returned. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +HashFinal ( > > + IN HASH_HANDLE HashHandle, > > + OUT TPML_DIGEST_VALUES *DigestList > > + ); > > + > > /** > > Hash sequence complete and extend to PCR. > > > > diff --git > a/SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.c > b/SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.c > index 42cb562f67..5b9719630d 100644 > --- > a/SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.c > +++ > b/SecurityPkg/Library/HashLibBaseCryptoRouter/HashLibBaseCryptoRouterPei.c > @@ -208,6 +208,54 @@ HashUpdate ( > return EFI_SUCCESS; > > } > > > > +/** > > + Hash sequence complete and extend to PCR. > > + > > + @param HashHandle Hash handle. > > + @param DigestList Digest list. > > + > > + @retval EFI_SUCCESS Hash sequence complete and DigestList is returned. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +HashFinal ( > > + IN HASH_HANDLE HashHandle, > > + OUT TPML_DIGEST_VALUES *DigestList > > + ) > > +{ > > + TPML_DIGEST_VALUES Digest; > > + HASH_INTERFACE_HOB *HashInterfaceHob; > > + HASH_HANDLE *HashCtx; > > + UINTN Index; > > + UINT32 HashMask; > > + > > + HashInterfaceHob = InternalGetHashInterfaceHob (&gEfiCallerIdGuid); > > + if (HashInterfaceHob == NULL) { > > + return EFI_UNSUPPORTED; > > + } > > + > > + if (HashInterfaceHob->HashInterfaceCount == 0) { > > + return EFI_UNSUPPORTED; > > + } > > + > > + CheckSupportedHashMaskMismatch (HashInterfaceHob); > > + > > + HashCtx = (HASH_HANDLE *)HashHandle; > > + ZeroMem (DigestList, sizeof(*DigestList)); > > + > > + for (Index = 0; Index < HashInterfaceHob->HashInterfaceCount; Index++) { > > + HashMask = Tpm2GetHashMaskFromAlgo (&HashInterfaceHob- > >HashInterface[Index].HashGuid); > > + if ((HashMask & PcdGet32 (PcdTpm2HashMask)) != 0) { > > + HashInterfaceHob->HashInterface[Index].HashFinal (HashCtx[Index], > &Digest); > > + Tpm2SetHashToDigestList (DigestList, &Digest); > > + } > > + } > > + > > + FreePool (HashCtx); > > + > > + return EFI_SUCCESS; > > +} > > + > > /** > > Hash sequence complete and extend to PCR. > > > > -- > 2.26.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#63637): https://edk2.groups.io/g/devel/message/63637 Mute This Topic: https://groups.io/mt/75903688/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-