Is there a reason this needs to be called “VariableKeyLib” rather than any other “KeyLib”? It seems general-purpose as an interface.

 

- Bret

 


From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Wang, Jian J via Groups.Io <jian.j.wang=intel.com@groups.io>
Sent: Monday, March 23, 2020 11:35:21 PM
To: devel@edk2.groups.io <devel@edk2.groups.io>
Cc: Jiewen Yao <jiewen.yao@intel.com>; Chao Zhang <chao.b.zhang@intel.com>; Nishant C Mistry <nishant.c.mistry@intel.com>
Subject: [EXTERNAL] [edk2-devel] [PATCH v4 1/3] SecurityPkg: add RpmcLib and VariableKeyLib public headers
 
> v4: remove CounterId which should not be exposed

REF: https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2594&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3e34ac4a40d94c82e86b08d7cfbd8b82%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637206285305504454&amp;sdata=wCxxsc6cc%2Ffduq88XOZOZv6debpAQMZiIdsFjD0zHXE%3D&amp;reserved=0

RpmcLib.h and VariableKeyLib.h are header files required to access RPMC
device and Key generator from platform. They will be used to ensure the
integrity and confidentiality of NV variables.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Chao Zhang <chao.b.zhang@intel.com>
Cc: Nishant C Mistry <nishant.c.mistry@intel.com>
Signed-off-by: Jian J Wang <jian.j.wang@intel.com>
---
 SecurityPkg/Include/Library/RpmcLib.h        | 42 ++++++++++++++
 SecurityPkg/Include/Library/VariableKeyLib.h | 59 ++++++++++++++++++++
 SecurityPkg/SecurityPkg.dec                  |  8 +++
 3 files changed, 109 insertions(+)
 create mode 100644 SecurityPkg/Include/Library/RpmcLib.h
 create mode 100644 SecurityPkg/Include/Library/VariableKeyLib.h

diff --git a/SecurityPkg/Include/Library/RpmcLib.h b/SecurityPkg/Include/Library/RpmcLib.h
new file mode 100644
index 0000000000..8e3868516c
--- /dev/null
+++ b/SecurityPkg/Include/Library/RpmcLib.h
@@ -0,0 +1,42 @@
+/** @file

+  Public definitions for the Replay Protected Monotonic Counter (RPMC) Library.

+

+Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>

+SPDX-License-Identifier: BSD-2-Clause-Patent

+

+**/

+

+#ifndef _RPMC_LIB_H_

+#define _RPMC_LIB_H_

+

+#include <Uefi/UefiBaseType.h>

+

+/**

+  Requests the monotonic counter from the designated RPMC counter.

+

+  @param[out]   CounterValue            A pointer to a buffer to store the RPMC value.

+

+  @retval       EFI_SUCCESS             The operation completed successfully.

+  @retval       EFI_DEVICE_ERROR        A device error occurred while attempting to update the counter.

+  @retval       EFI_UNSUPPORTED         The operation is un-supported.

+**/

+EFI_STATUS

+EFIAPI

+RequestMonotonicCounter (

+  OUT UINT32  *CounterValue

+  );

+

+/**

+  Increments the monotonic counter in the SPI flash device by 1.

+

+  @retval       EFI_SUCCESS             The operation completed successfully.

+  @retval       EFI_DEVICE_ERROR        A device error occurred while attempting to update the counter.

+  @retval       EFI_UNSUPPORTED         The operation is un-supported.

+**/

+EFI_STATUS

+EFIAPI

+IncrementMonotonicCounter (

+  VOID

+  );

+

+#endif
\ No newline at end of file
diff --git a/SecurityPkg/Include/Library/VariableKeyLib.h b/SecurityPkg/Include/Library/VariableKeyLib.h
new file mode 100644
index 0000000000..fe642b3d66
--- /dev/null
+++ b/SecurityPkg/Include/Library/VariableKeyLib.h
@@ -0,0 +1,59 @@
+/** @file

+  Public definitions for Variable Key Library.

+

+Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>

+SPDX-License-Identifier: BSD-2-Clause-Patent

+

+**/

+

+#ifndef _VARIABLE_KEY_LIB_H_

+#define _VARIABLE_KEY_LIB_H_

+

+#include <Uefi/UefiBaseType.h>

+

+/**

+  Retrieves the variable root key.

+

+  @param[out]     VariableRootKey         A pointer to pointer for the variable root key buffer.

+  @param[in,out]  VariableRootKeySize     The size in bytes of the variable root key.

+

+  @retval       EFI_SUCCESS             The variable root key was returned.

+  @retval       EFI_DEVICE_ERROR        An error occurred while attempting to get the variable root key.

+  @retval       EFI_ACCESS_DENIED       The function was invoked after locking the key interface.

+  @retval       EFI_UNSUPPORTED         The variable root key is not supported in the current boot configuration.

+**/

+EFI_STATUS

+EFIAPI

+GetVariableRootKey (

+      OUT VOID    **VariableRootKey,

+  IN  OUT UINTN   *VariableRootKeySize

+  );

+

+/**

+  Regenerates the variable root key.

+

+  @retval       EFI_SUCCESS             The variable root key was regenerated successfully.

+  @retval       EFI_DEVICE_ERROR        An error occurred while attempting to regenerate the root key.

+  @retval       EFI_ACCESS_DENIED       The function was invoked after locking the key interface.

+  @retval       EFI_UNSUPPORTED         Key regeneration is not supported in the current boot configuration.

+**/

+EFI_STATUS

+EFIAPI

+RegenerateKey (

+  VOID

+  );

+

+/**

+  Locks the regenerate key interface.

+

+  @retval       EFI_SUCCESS             The key interface was locked successfully.

+  @retval       EFI_UNSUPPORTED         Locking the key interface is not supported in the current boot configuration.

+  @retval       Others                  An error occurred while attempting to lock the key interface.

+**/

+EFI_STATUS

+EFIAPI

+LockKeyInterface (

+  VOID

+  );

+

+#endif
\ No newline at end of file
diff --git a/SecurityPkg/SecurityPkg.dec b/SecurityPkg/SecurityPkg.dec
index 5335cc5397..2cdfb02cc5 100644
--- a/SecurityPkg/SecurityPkg.dec
+++ b/SecurityPkg/SecurityPkg.dec
@@ -76,6 +76,14 @@
   #

   TcgStorageOpalLib|Include/Library/TcgStorageOpalLib.h

 

+  ## @libraryclass  Provides interfaces to access RPMC device.

+  #

+  RpmcLib|Include/Library/RpmcLib.h

+

+  ## @libraryclass  Provides interfaces to access variable root key.

+  #

+  VariableKeyLib|Include/Library/VariableKeyLib.h

+

 [Guids]

   ## Security package token space guid.

   # Include/Guid/SecurityPkgTokenSpace.h

--
2.24.0.windows.2


-=-=-=-=-=-=
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#56132): https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F56132&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3e34ac4a40d94c82e86b08d7cfbd8b82%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637206285305514447&amp;sdata=CoBs9mwnHTAAZiErAEHS3E7dbdRd%2FZefJPKXKPmJwfc%3D&amp;reserved=0
Mute This Topic: https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fmt%2F72512084%2F1852292&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3e34ac4a40d94c82e86b08d7cfbd8b82%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637206285305514447&amp;sdata=%2B14%2BIfGmu88GSnKZnpb51EGaW3MqfFCT1%2BWI5Bhdlo0%3D&amp;reserved=0
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Funsub&amp;data=02%7C01%7Cbret.barkelew%40microsoft.com%7C3e34ac4a40d94c82e86b08d7cfbd8b82%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637206285305514447&amp;sdata=JLLWLjx0OW0eTjn7xXG5aNHdAfWQqhY4qLXSuNhhcys%3D&amp;reserved=0  [bret.barkelew@microsoft.com]
-=-=-=-=-=-=