<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body>
<div>
<div>
<div dir="ltr" style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Thanks, Jiewen! I’ll make those changes!</div>
</div>
<div id="ms-outlook-mobile-signature">
<div><br>
</div>
<div style="direction: ltr;">- Bret</div>
</div>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Yao, Jiewen <jiewen.yao@intel.com><br>
<b>Sent:</b> Thursday, August 12, 2021 7:47:04 PM<br>
<b>To:</b> devel@edk2.groups.io <devel@edk2.groups.io>; Yao, Jiewen <jiewen.yao@intel.com>; gaoliming@byosoft.com.cn <gaoliming@byosoft.com.cn>; Bret Barkelew <Bret.Barkelew@microsoft.com>; bret@corthon.com <bret@corthon.com>; Kinney, Michael D <michael.d.kinney@intel.com><br>
<b>Cc:</b> Wang, Jian J <jian.j.wang@intel.com>; Zhang, Qi1 <qi1.zhang@intel.com>; Kumar, Rahul1 <rahul1.kumar@intel.com><br>
<b>Subject:</b> RE: [EXTERNAL] [edk2-devel] [PATCH v1 1/1] SecurityPkg/Library: Add Tpm2NvUndefineSpaceSpecial to Tpm2CommandLib</font>
<div> </div>
</div>
<style>
<!--
@font-face
        {font-family:"Cambria Math"}
@font-face
        {font-family:DengXian}
@font-face
        {font-family:Calibri}
@font-face
        {}
@font-face
        {font-family:Consolas}
@font-face
        {font-family:Arial-BoldMT}
@font-face
        {font-family:ArialMT}
p.x_MsoNormal, li.x_MsoNormal, div.x_MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
a:link, span.x_MsoHyperlink
        {color:blue;
        text-decoration:underline}
p.x_xxmsonormal, li.x_xxmsonormal, div.x_xxmsonormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
span.x_xxpl-plain
        {}
span.x_EmailStyle27
        {font-family:"Calibri",sans-serif;
        color:windowtext}
span.x_fontstyle01
        {font-family:ArialMT;
        color:black;
        font-weight:normal;
        font-style:normal}
.x_MsoChpDefault
        {font-size:10.0pt}
@page WordSection1
        {margin:1.0in 1.0in 1.0in 1.0in}
div.x_WordSection1
        {}
ol
        {margin-bottom:0in}
ul
        {margin-bottom:0in}
-->
</style>
<div lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="x_WordSection1">
<p class="x_MsoNormal">Hi Bret</p>
<p class="x_MsoNormal">Since it took much long time to get ECC feedback than I expected, I would give feedback on code while we are waiting.</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">1) Please confirm how you test the code, such as Microsoft platform ?</p>
<p class="x_MsoNormal">2) Please remove “+} // Tpm2NvUndefineSpaceSpecial()” at the end of the function. We do not use that style in other code.</p>
<p class="x_MsoNormal">3) Please copy the definition from TPM spec “<span class="x_fontstyle01"><span style="font-size:10.0pt">This command allows removal of a platform-created NV Index that has TPMA_NV_POLICY_DELETE</span></span><span style="font-size:10.0pt; font-family:ArialMT; color:black">
<span class="x_fontstyle01">SET</span></span>” to the function header description. The current one “This command removes an index from the TPM.” is for
<span style="font-size:10.0pt; font-family:Arial-BoldMT; color:black">TPM2_NV_UndefineSpace instead of TPM2_NV_UndefineSpaceSpecial.</span></p>
<p class="x_MsoNormal"><span style="font-size:10.0pt; font-family:Arial-BoldMT; color:black"> </span></p>
<p class="x_MsoNormal"><span style="font-size:10.0pt; font-family:Arial-BoldMT; color:black">Since above comment does not impact any function, I would like to give RB.</span></p>
<p class="x_MsoNormal"><span style="font-size:10.0pt; font-family:Arial-BoldMT; color:black"> </span></p>
<p class="x_MsoNormal"><span style="font-size:10.0pt; font-family:Arial-BoldMT; color:black">With about change, reviewed-by: Jiewen Yao <Jiewen.yao@intel.com></span></p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">Thank you</p>
<p class="x_MsoNormal">Yao Jiewen</p>
<p class="x_MsoNormal"> </p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0in 0in 0in 4.0pt">
<div>
<div>
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_xxmsonormal"><b>From: </b><a href="mailto:bret.barkelew=microsoft.com@groups.io">Bret Barkelew via groups.io</a><br>
<b>Sent: </b>Friday, July 30, 2021 11:08 AM<br>
<b>To: </b><a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; <a href="mailto:bret@corthon.com">
bret@corthon.com</a><br>
<b>Cc: </b><a href="mailto:jiewen.yao@intel.com">Yao, Jiewen</a>; <a href="mailto:jian.j.wang@intel.com">
Jian J Wang</a>; <a href="mailto:qi1.zhang@intel.com">Qi Zhang</a>; <a href="mailto:rahul1.kumar@intel.com">
Rahul Kumar</a><br>
<b>Subject: </b>Re: [EXTERNAL] [edk2-devel] [PATCH v1 1/1] SecurityPkg/Library: Add Tpm2NvUndefineSpaceSpecial to Tpm2CommandLib</p>
</div>
<p class="x_xxmsonormal"> </p>
<p class="x_xxmsonormal">Note, even though this keeps with the style of the rest of the file, it breaks ECC:</p>
<p class="x_xxmsonormal"><a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Fedk2%2Fpull%2F1848&data=04%7C01%7Cbret.barkelew%40microsoft.com%7C887b6ef599664679e21808d95e04a428%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637644196321232497%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=1TMpHKJ9Mwh6VW4fBAjs0Cf2hIqcmbtDfNqsJY47z5U%3D&reserved=0" originalsrc="https://github.com/tianocore/edk2/pull/1848" shash="kuaRWLHCt9S2Jssk0VMV/vSxIa0uLVhqLVTVviyH1tXq67nX1PUFFvnt9cPqJaFx20GV4ZOLJ+0DP3RZxc/3CN9r8oSieC0foZsYXLqYl48+nWQ2pC6+Ut/IMsa+7mDmBKLr6BJIMv6r1CcLsJA7vqtBoW87o7NKSZuBl5SyG18=">SecurityPkg/Library:
 Add Tpm2NvUndefineSpaceSpecial to Tpm2CommandLib by corthon · Pull Request #1848 · tianocore/edk2 (github.com)</a></p>
<p class="x_xxmsonormal"> </p>
<div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">PROGRESS - --Running SecurityPkg: EccCheck Test NO-TARGET --
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR -
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR -
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR - EFI coding style error
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR - *Error code: 8001
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR - *Only capital letters are allowed to be used for #define declarations
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR - *file: //home/vsts/work/1/s/SecurityPkg/Library/Tpm2CommandLib/Tpm2NVStorage.c
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR - *Line number: 27
</span></span></p>
</div>
<div>
<p class="x_xxmsonormal" style="background:#201F1E"><span class="x_xxpl-plain"><span style="font-size:9.0pt; font-family:Consolas; color:#E1DFDD">ERROR - *The #define name [RC_NV_UndefineSpaceSpecial_nvIndex] does no</span></span></p>
</div>
</div>
<p class="x_xxmsonormal"> </p>
<p class="x_xxmsonormal">Thoughts?</p>
<p class="x_xxmsonormal"> </p>
<p class="x_xxmsonormal">- Bret </p>
<p class="x_xxmsonormal"> </p>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_xxmsonormal"><b>From: </b><a href="mailto:bret=corthon.com@groups.io">Bret Barkelew via groups.io</a><br>
<b>Sent: </b>Friday, July 30, 2021 10:55 AM<br>
<b>To: </b><a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a><br>
<b>Cc: </b><a href="mailto:jiewen.yao@intel.com">Yao, Jiewen</a>; <a href="mailto:jian.j.wang@intel.com">
Jian J Wang</a>; <a href="mailto:qi1.zhang@intel.com">Qi Zhang</a>; <a href="mailto:rahul1.kumar@intel.com">
Rahul Kumar</a><br>
<b>Subject: </b>[EXTERNAL] [edk2-devel] [PATCH v1 1/1] SecurityPkg/Library: Add Tpm2NvUndefineSpaceSpecial to Tpm2CommandLib</p>
</div>
<p class="x_xxmsonormal"> </p>
<p class="x_xxmsonormal" style="margin-bottom:12.0pt">Used to provision and maintain certain HW-defined NV spaces.<br>
<br>
REF: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2994&data=04%7C01%7Cbret.barkelew%40microsoft.com%7C887b6ef599664679e21808d95e04a428%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637644196321232497%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=q%2FGqsG776H1TD9bqGRw8ihZNDnJscXK0dwzEVGCNYf0%3D&reserved=0" originalsrc="https://bugzilla.tianocore.org/show_bug.cgi?id=2994" shash="tvtZdsiGFTjNi5MobXMIkMdU+S6jKdB3MrPRHSbzCouN4sZ0YHJ7GCwsAde9KKhGCbCSFg9rOYKullNLqqNwkNJYEmMwDoIKIsh9n6ijqt13gMelY9p3f3w4TJ4qDArrvitFstO+xy1VkpD196XmcZjd4a0J43VHfnzsGf0qBWw=">
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2994&amp;data=04%7C01%7CBret.Barkelew%40microsoft.com%7Cb7ae3c62047c48fc85d908d953833ca0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637632645397602953%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=s96M3RvxMOY831Vfr1nt%2Fz1h3cyb6jU9eFzvjKO7Dtc%3D&amp;reserved=0</a><br>
<br>
Signed-off-by: Bret Barkelew <<a href="mailto:bret.barkelew@microsoft.com">bret.barkelew@microsoft.com</a>><br>
Cc: Jiewen Yao <<a href="mailto:jiewen.yao@intel.com">jiewen.yao@intel.com</a>><br>
Cc: Jian J Wang <<a href="mailto:jian.j.wang@intel.com">jian.j.wang@intel.com</a>><br>
Cc: Qi Zhang <<a href="mailto:qi1.zhang@intel.com">qi1.zhang@intel.com</a>><br>
Cc: Rahul Kumar <<a href="mailto:rahul1.kumar@intel.com">rahul1.kumar@intel.com</a>><br>
---<br>
 SecurityPkg/Library/Tpm2CommandLib/Tpm2NVStorage.c | 122 ++++++++++++++++++++<br>
 SecurityPkg/Include/Library/Tpm2CommandLib.h       |  22 ++++<br>
 2 files changed, 144 insertions(+)<br>
<br>
diff --git a/SecurityPkg/Library/Tpm2CommandLib/Tpm2NVStorage.c b/SecurityPkg/Library/Tpm2CommandLib/Tpm2NVStorage.c<br>
index 87572de20164..7931fade9190 100644<br>
--- a/SecurityPkg/Library/Tpm2CommandLib/Tpm2NVStorage.c<br>
+++ b/SecurityPkg/Library/Tpm2CommandLib/Tpm2NVStorage.c<br>
@@ -24,6 +24,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent<br>
 #define RC_NV_UndefineSpace_authHandle      (TPM_RC_H + TPM_RC_1)<br>
<br>
 #define RC_NV_UndefineSpace_nvIndex         (TPM_RC_H + TPM_RC_2)<br>
<br>
 <br>
<br>
+#define RC_NV_UndefineSpaceSpecial_nvIndex  (TPM_RC_H + TPM_RC_1)<br>
<br>
+<br>
<br>
 #define RC_NV_Read_authHandle               (TPM_RC_H + TPM_RC_1)<br>
<br>
 #define RC_NV_Read_nvIndex                  (TPM_RC_H + TPM_RC_2)<br>
<br>
 #define RC_NV_Read_size                     (TPM_RC_P + TPM_RC_1)<br>
<br>
@@ -74,6 +76,20 @@ typedef struct {<br>
   TPMS_AUTH_RESPONSE         AuthSession;<br>
<br>
 } TPM2_NV_UNDEFINESPACE_RESPONSE;<br>
<br>
 <br>
<br>
+typedef struct {<br>
<br>
+  TPM2_COMMAND_HEADER       Header;<br>
<br>
+  TPMI_RH_NV_INDEX          NvIndex;<br>
<br>
+  TPMI_RH_PLATFORM          Platform;<br>
<br>
+  UINT32                    AuthSessionSize;<br>
<br>
+  TPMS_AUTH_COMMAND         AuthSession;<br>
<br>
+} TPM2_NV_UNDEFINESPACESPECIAL_COMMAND;<br>
<br>
+<br>
<br>
+typedef struct {<br>
<br>
+  TPM2_RESPONSE_HEADER       Header;<br>
<br>
+  UINT32                     AuthSessionSize;<br>
<br>
+  TPMS_AUTH_RESPONSE         AuthSession;<br>
<br>
+} TPM2_NV_UNDEFINESPACESPECIAL_RESPONSE;<br>
<br>
+<br>
<br>
 typedef struct {<br>
<br>
   TPM2_COMMAND_HEADER       Header;<br>
<br>
   TPMI_RH_NV_AUTH           AuthHandle;<br>
<br>
@@ -506,6 +522,112 @@ Done:<br>
   return Status;<br>
<br>
 }<br>
<br>
 <br>
<br>
+/**<br>
<br>
+  This command removes an index from the TPM.<br>
<br>
+<br>
<br>
+  @param[in]  NvIndex             The NV Index.<br>
<br>
+  @param[in]  IndexAuthSession    Auth session context for the Index auth/policy<br>
<br>
+  @param[in]  PlatAuthSession     Auth session context for the Platform auth/policy<br>
<br>
+<br>
<br>
+  @retval EFI_SUCCESS             Operation completed successfully.<br>
<br>
+  @retval EFI_NOT_FOUND           The command was returned successfully, but NvIndex is not found.<br>
<br>
+  @retval EFI_UNSUPPORTED         Selected NvIndex does not support deletion through this call.<br>
<br>
+  @retval EFI_SECURITY_VIOLATION  Deletion is not authorized by current policy session.<br>
<br>
+  @retval EFI_INVALID_PARAMETER   The command was unsuccessful.<br>
<br>
+  @retval EFI_DEVICE_ERROR        The command was unsuccessful.<br>
<br>
+**/<br>
<br>
+EFI_STATUS<br>
<br>
+EFIAPI<br>
<br>
+Tpm2NvUndefineSpaceSpecial (<br>
<br>
+  IN      TPMI_RH_NV_INDEX          NvIndex,<br>
<br>
+  IN      TPMS_AUTH_COMMAND         *IndexAuthSession OPTIONAL,<br>
<br>
+  IN      TPMS_AUTH_COMMAND         *PlatAuthSession OPTIONAL<br>
<br>
+  )<br>
<br>
+{<br>
<br>
+  EFI_STATUS                              Status;<br>
<br>
+  TPM2_NV_UNDEFINESPACESPECIAL_COMMAND    SendBuffer;<br>
<br>
+  TPM2_NV_UNDEFINESPACESPECIAL_RESPONSE   RecvBuffer;<br>
<br>
+  UINT32                                  SendBufferSize;<br>
<br>
+  UINT32                                  RecvBufferSize;<br>
<br>
+  UINT8                                   *Buffer;<br>
<br>
+  UINT32                                  IndexAuthSize, PlatAuthSize;<br>
<br>
+  TPM_RC                                  ResponseCode;<br>
<br>
+<br>
<br>
+  //<br>
<br>
+  // Construct command<br>
<br>
+  //<br>
<br>
+  SendBuffer.Header.tag = SwapBytes16(TPM_ST_SESSIONS);<br>
<br>
+  SendBuffer.Header.commandCode = SwapBytes32(TPM_CC_NV_UndefineSpaceSpecial);<br>
<br>
+<br>
<br>
+  SendBuffer.NvIndex = SwapBytes32 (NvIndex);<br>
<br>
+  SendBuffer.Platform = SwapBytes32 (TPM_RH_PLATFORM);<br>
<br>
+<br>
<br>
+  //<br>
<br>
+  // Marshall the Auth Sessions for the two handles.<br>
<br>
+  Buffer = (UINT8 *)&SendBuffer.AuthSession;<br>
<br>
+  // IndexAuthSession<br>
<br>
+  IndexAuthSize = CopyAuthSessionCommand (IndexAuthSession, Buffer);<br>
<br>
+  Buffer += IndexAuthSize;<br>
<br>
+  // PlatAuthSession<br>
<br>
+  PlatAuthSize = CopyAuthSessionCommand (PlatAuthSession, Buffer);<br>
<br>
+  Buffer += PlatAuthSize;<br>
<br>
+  // AuthSessionSize<br>
<br>
+  SendBuffer.AuthSessionSize = SwapBytes32(IndexAuthSize + PlatAuthSize);<br>
<br>
+<br>
<br>
+  // Update total command size.<br>
<br>
+  SendBufferSize = (UINT32)(Buffer - (UINT8 *)&SendBuffer);<br>
<br>
+  SendBuffer.Header.paramSize = SwapBytes32 (SendBufferSize);<br>
<br>
+<br>
<br>
+  //<br>
<br>
+  // send Tpm command<br>
<br>
+  //<br>
<br>
+  RecvBufferSize = sizeof (RecvBuffer);<br>
<br>
+  Status = Tpm2SubmitCommand (SendBufferSize, (UINT8 *)&SendBuffer, &RecvBufferSize, (UINT8 *)&RecvBuffer);<br>
<br>
+  if (EFI_ERROR (Status)) {<br>
<br>
+    goto Done;<br>
<br>
+  }<br>
<br>
+<br>
<br>
+  if (RecvBufferSize < sizeof (TPM2_RESPONSE_HEADER)) {<br>
<br>
+    DEBUG ((EFI_D_ERROR, "Tpm2NvUndefineSpaceSpecial - RecvBufferSize Error - %x\n", RecvBufferSize));<br>
<br>
+    Status = EFI_DEVICE_ERROR;<br>
<br>
+    goto Done;<br>
<br>
+  }<br>
<br>
+<br>
<br>
+  ResponseCode = SwapBytes32(RecvBuffer.Header.responseCode);<br>
<br>
+  if (ResponseCode != TPM_RC_SUCCESS) {<br>
<br>
+    DEBUG ((EFI_D_ERROR, "Tpm2NvUndefineSpaceSpecial - responseCode - %x\n", SwapBytes32(RecvBuffer.Header.responseCode)));<br>
<br>
+  }<br>
<br>
+  switch (ResponseCode) {<br>
<br>
+  case TPM_RC_SUCCESS:<br>
<br>
+    // return data<br>
<br>
+    break;<br>
<br>
+  case TPM_RC_ATTRIBUTES:<br>
<br>
+  case TPM_RC_ATTRIBUTES + RC_NV_UndefineSpaceSpecial_nvIndex:<br>
<br>
+    Status = EFI_UNSUPPORTED;<br>
<br>
+    break;<br>
<br>
+  case TPM_RC_NV_AUTHORIZATION:<br>
<br>
+    Status = EFI_SECURITY_VIOLATION;<br>
<br>
+    break;<br>
<br>
+  case TPM_RC_HANDLE + RC_NV_UndefineSpaceSpecial_nvIndex: // TPM_RC_NV_DEFINED:<br>
<br>
+    Status = EFI_NOT_FOUND;<br>
<br>
+    break;<br>
<br>
+  case TPM_RC_VALUE + RC_NV_UndefineSpace_nvIndex:<br>
<br>
+    Status = EFI_INVALID_PARAMETER;<br>
<br>
+    break;<br>
<br>
+  default:<br>
<br>
+    Status = EFI_DEVICE_ERROR;<br>
<br>
+    break;<br>
<br>
+  }<br>
<br>
+<br>
<br>
+Done:<br>
<br>
+  //<br>
<br>
+  // Clear AuthSession Content<br>
<br>
+  //<br>
<br>
+  ZeroMem (&SendBuffer, sizeof(SendBuffer));<br>
<br>
+  ZeroMem (&RecvBuffer, sizeof(RecvBuffer));<br>
<br>
+  return Status;<br>
<br>
+} // Tpm2NvUndefineSpaceSpecial()<br>
<br>
+<br>
<br>
 /**<br>
<br>
   This command reads a value from an area in NV memory previously defined by TPM2_NV_DefineSpace().<br>
<br>
 <br>
<br>
diff --git a/SecurityPkg/Include/Library/Tpm2CommandLib.h b/SecurityPkg/Include/Library/Tpm2CommandLib.h<br>
index ee8eb622951c..8d7b4998d98d 100644<br>
--- a/SecurityPkg/Include/Library/Tpm2CommandLib.h<br>
+++ b/SecurityPkg/Include/Library/Tpm2CommandLib.h<br>
@@ -364,6 +364,28 @@ Tpm2NvUndefineSpace (<br>
   IN      TPMS_AUTH_COMMAND         *AuthSession OPTIONAL<br>
<br>
   );<br>
<br>
 <br>
<br>
+/**<br>
<br>
+  This command removes an index from the TPM.<br>
<br>
+<br>
<br>
+  @param[in]  NvIndex             The NV Index.<br>
<br>
+  @param[in]  IndexAuthSession    Auth session context for the Index auth/policy<br>
<br>
+  @param[in]  PlatAuthSession     Auth session context for the Platform auth/policy<br>
<br>
+<br>
<br>
+  @retval EFI_SUCCESS             Operation completed successfully.<br>
<br>
+  @retval EFI_NOT_FOUND           The command was returned successfully, but NvIndex is not found.<br>
<br>
+  @retval EFI_UNSUPPORTED         Selected NvIndex does not support deletion through this call.<br>
<br>
+  @retval EFI_SECURITY_VIOLATION  Deletion is not authorized by current policy session.<br>
<br>
+  @retval EFI_INVALID_PARAMETER   The command was unsuccessful.<br>
<br>
+  @retval EFI_DEVICE_ERROR        The command was unsuccessful.<br>
<br>
+**/<br>
<br>
+EFI_STATUS<br>
<br>
+EFIAPI<br>
<br>
+Tpm2NvUndefineSpaceSpecial (<br>
<br>
+  IN      TPMI_RH_NV_INDEX          NvIndex,<br>
<br>
+  IN      TPMS_AUTH_COMMAND         *IndexAuthSession OPTIONAL,<br>
<br>
+  IN      TPMS_AUTH_COMMAND         *PlatAuthSession OPTIONAL<br>
<br>
+  );<br>
<br>
+<br>
<br>
 /**<br>
<br>
   This command reads a value from an area in NV memory previously defined by TPM2_NV_DefineSpace().<br>
<br>
 <br>
<br>
-- <br>
2.31.1.windows.1<br>
<br>
<br>
<br>
-=-=-=-=-=-=<br>
Groups.io Links: You receive all messages sent to this group.<br>
View/Reply Online (#78450): <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F78450&data=04%7C01%7Cbret.barkelew%40microsoft.com%7C887b6ef599664679e21808d95e04a428%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637644196321232497%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=9RfO5tO2iBj%2BR7eTmtcOkdgCyIXFOCVKtqxRt3sWNUA%3D&reserved=0" originalsrc="https://edk2.groups.io/g/devel/message/78450" shash="krIWnR9v3NCNyDXiX8SO6rqTjBOjZjKnmJ3FMWrIHFYb+kDWRVVLgv0P+YrAJ7abt4jdka6wkS98znWNnL1CDQw9DhWxqVUtiw9GTCvsAb6bvGpq+2AfUqeI6Zhea2HVSujhIbozaRtyllu8dB4tB9Ml+jIxtCtHPOMPQK4YRtw=">
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F78450&amp;data=04%7C01%7CBret.Barkelew%40microsoft.com%7Cb7ae3c62047c48fc85d908d953833ca0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637632645397612922%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=CWxLwgp73z2XQEa%2FN77gsCwRF73xha0RZCKwcFTlrRE%3D&amp;reserved=0</a><br>
Mute This Topic: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fmt%2F84555713%2F1822150&data=04%7C01%7Cbret.barkelew%40microsoft.com%7C887b6ef599664679e21808d95e04a428%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637644196321242452%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=C1krPlgEdkk%2FZ9PLVv6e3AwJCFAI%2BYl1uYU0kGXmkyY%3D&reserved=0" originalsrc="https://groups.io/mt/84555713/1822150" shash="hLI69am1OLLMjYXCdMjr5iBgDOq3dP4qoseMS1UmijaBxrIk/HFgyToeCn0ndWwT0hb/Bl+6lEcqrSfXbuPGnmEyEsxC/46axKeotgOCWkWUv/bvXUX+ENTJgLxne+rT/gjGbg+NUqJ+N0SYbultVfJX/XvutrQzX2C05QWgATE=">
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.io%2Fmt%2F84555713%2F1822150&amp;data=04%7C01%7CBret.Barkelew%40microsoft.com%7Cb7ae3c62047c48fc85d908d953833ca0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637632645397612922%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=IWQ6E4yP0ECt3oYLYQa%2BnddGfcQEDMgfASlcxRuda%2BQ%3D&amp;reserved=0</a><br>
Group Owner: <a href="mailto:devel+owner@edk2.groups.io">devel+owner@edk2.groups.io</a><br>
Unsubscribe: <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Funsub&data=04%7C01%7Cbret.barkelew%40microsoft.com%7C887b6ef599664679e21808d95e04a428%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637644196321242452%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=%2FKgT0i6BOB11aRu2kw8yFoQ8y1jcg1eOgzg8CSEGXUA%3D&reserved=0" originalsrc="https://edk2.groups.io/g/devel/unsub" shash="qGZRnk6hTaToANmyemW6oKtVK/fsmMv40JszTKWEynvafquLmWzf0882XtXXOU5qbDHdCOexCdwYPVkfFMvUvGj0Jw6K7+wV4mvikJ/CVGSrbOIsyagfyLmGaPxcN/IMr7UpifxChz0GbzZDI6u4cGXFm16pFswh15TEkp1+jLU=">
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Funsub&amp;data=04%7C01%7CBret.Barkelew%40microsoft.com%7Cb7ae3c62047c48fc85d908d953833ca0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637632645397612922%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=qor4Y5FZEH8ch0AEmWDbe97FIQk4V1qx7IURcTHzjAU%3D&amp;reserved=0</a>
 [brbarkel@microsoft.com]<br>
-=-=-=-=-=-=</p>
<p class="x_xxmsonormal"> </p>
<div>
<p class="x_xxmsonormal"> </p>
</div>
</div>
</div>
<div>
<p class="x_MsoNormal"> </p>
</div>
</div>
</div>
<div>
<p class="x_MsoNormal"></p>
</div>
</div>
</div>
</body>
</html>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/79238">View/Reply Online (#79238)</a> |    |  <a target="_blank" href="https://groups.io/mt/84855659/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>