]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/Bis.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Protocol / Bis.h
index 63a3f389726ea1ee4dcb61f5c5673a0eb93e6576..2be6718f4bc2eb96e06f493e82434f529fbd41fb 100644 (file)
@@ -1,14 +1,12 @@
 /** @file\r
-  This file defines the BIS protocol.\r
+  The EFI_BIS_PROTOCOL is used to check a digital signature of a data block\r
+  against a digital certificate for the purpose of an integrity and authorization check.\r
 \r
-  Copyright (c) 2006, Intel Corporation                                                         \r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  The full text of the license may be found at        \r
-  http://opensource.org/licenses/bsd-license.php                                            \r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+  @par Revision Reference:\r
+  This Protocol is introduced in EFI Specification 1.10.\r
 \r
 **/\r
 \r
@@ -43,22 +41,20 @@ typedef VOID    *BIS_APPLICATION_HANDLE;
 typedef UINT16  BIS_ALG_ID;\r
 typedef UINT32  BIS_CERT_ID;\r
 \r
-//\r
-// EFI_BIS_DATA type.\r
-//\r
-// EFI_BIS_DATA instances obtained from BIS must be freed by calling Free( ).\r
-//\r
+///\r
+/// EFI_BIS_DATA instances obtained from BIS must be freed by calling Free( ).\r
+///\r
 typedef struct {\r
-  UINT32  Length; // Length of Data in 8 bit bytes.\r
-  UINT8   *Data;  // 32 Bit Flat Address of data.\r
+  UINT32  Length; ///< The length of Data in 8 bit bytes.\r
+  UINT8   *Data;  ///< 32 Bit Flat Address of data.\r
 } EFI_BIS_DATA;\r
 \r
-//\r
-// EFI_BIS_VERSION type.\r
-//\r
+///\r
+/// EFI_BIS_VERSION type.\r
+///\r
 typedef struct {\r
-  UINT32  Major;  // BIS Interface version number.\r
-  UINT32  Minor;  // Build number.\r
+  UINT32  Major;  ///< The major BIS version number.\r
+  UINT32  Minor;  ///< A minor BIS version number.\r
 } EFI_BIS_VERSION;\r
 \r
 //\r
@@ -70,346 +66,366 @@ typedef struct {
 #define BIS_CURRENT_VERSION_MAJOR BIS_VERSION_1\r
 #define BIS_VERSION_1             1\r
 \r
-//\r
-// EFI_BIS_SIGNATURE_INFO type.\r
-//\r
+///\r
+/// EFI_BIS_SIGNATURE_INFO type.\r
+///\r
 typedef struct {\r
-  BIS_CERT_ID CertificateID;  // Truncated hash of platform Boot Object\r
-  //  authorization certificate.\r
-  //\r
-  BIS_ALG_ID  AlgorithmID;  // A signature algorithm number.\r
-  UINT16      KeyLength;    // Length of alg. keys in bits.\r
+  BIS_CERT_ID CertificateID;  ///< Truncated hash of platform Boot Object\r
+  BIS_ALG_ID  AlgorithmID;    ///< A signature algorithm number.\r
+  UINT16      KeyLength;      ///< The length of alg. keys in bits.\r
 } EFI_BIS_SIGNATURE_INFO;\r
 \r
-//\r
-// Currently defined values for EFI_BIS_SIGNATURE_INFO.AlgorithmID.\r
-// The exact numeric values come from\r
-//    "Common Data Security Architecture (CDSA) Specification".\r
-//\r
+///\r
+/// values for EFI_BIS_SIGNATURE_INFO.AlgorithmID.\r
+/// The exact numeric values come from the\r
+///    "Common Data Security Architecture (CDSA) Specification".\r
+///\r
 #define BIS_ALG_DSA     (41)  // CSSM_ALGID_DSA\r
 #define BIS_ALG_RSA_MD5 (42)  // CSSM_ALGID_MD5_WITH_RSA\r
-// Currently defined values for EFI_BIS_SIGNATURE_INFO.CertificateId.\r
-//\r
+///\r
+/// values for EFI_BIS_SIGNATURE_INFO.CertificateId.\r
+///\r
 #define BIS_CERT_ID_DSA     BIS_ALG_DSA     // CSSM_ALGID_DSA\r
 #define BIS_CERT_ID_RSA_MD5 BIS_ALG_RSA_MD5 // CSSM_ALGID_MD5_WITH_RSA\r
-// The  following  is a mask value that gets applied to the truncated hash of a\r
-// platform  Boot Object Authorization Certificate to create the certificateID.\r
-// A certificateID must not have any bits set to the value 1 other than bits in\r
-// this mask.\r
-//\r
+///\r
+/// The mask value that gets applied to the truncated hash of a\r
+/// platform  Boot Object Authorization Certificate to create the certificateID.\r
+/// A certificateID must not have any bits set to the value 1 other than bits in\r
+/// this mask.\r
+///\r
 #define BIS_CERT_ID_MASK  (0xFF7F7FFF)\r
 \r
-//\r
-// Macros for dealing with the EFI_BIS_DATA object obtained\r
-// from BIS_GetSignatureInfo()\r
-// BIS_GET_SIGINFO_COUNT - tells how many EFI_BIS_SIGNATURE_INFO\r
-//  elements are contained in a EFI_BIS_DATA struct pointed to\r
-//  by the provided EFI_BIS_DATA*.\r
-//\r
+///\r
+/// Macros for dealing with the EFI_BIS_DATA object obtained\r
+/// from BIS_GetSignatureInfo().\r
+/// BIS_GET_SIGINFO_COUNT - tells how many EFI_BIS_SIGNATURE_INFO\r
+///  elements are contained in a EFI_BIS_DATA struct pointed to\r
+///  by the provided EFI_BIS_DATA*.\r
+///\r
 #define BIS_GET_SIGINFO_COUNT(BisDataPtr) ((BisDataPtr)->Length / sizeof (EFI_BIS_SIGNATURE_INFO))\r
 \r
-//\r
-// BIS_GET_SIGINFO_ARRAY - produces a EFI_BIS_SIGNATURE_INFO*\r
-//  from a given EFI_BIS_DATA*.\r
-//\r
+///\r
+/// BIS_GET_SIGINFO_ARRAY - produces a EFI_BIS_SIGNATURE_INFO*\r
+///  from a given EFI_BIS_DATA*.\r
+///\r
 #define BIS_GET_SIGINFO_ARRAY(BisDataPtr) ((EFI_BIS_SIGNATURE_INFO *) (BisDataPtr)->Data)\r
 \r
-//\r
-// Binary Value of "X-Intel-BIS-ParameterSet" Attribute.\r
-// (Value is Base64 encoded in actual signed manifest).\r
-// {EDD35E31-07B9-11d2-83A3-00A0C91FADCF}\r
-//\r
-#define BOOT_OBJECT_AUTHORIZATION_PARMSET_GUID \\r
-  { \\r
-    0xedd35e31, 0x7b9, 0x11d2, \\r
-    { \\r
-      0x83, 0xa3, 0x0, 0xa0, 0xc9, 0x1f, 0xad, 0xcf \\r
-    } \\r
-  }\r
-\r
-//\r
-// Support old name for backward compatible\r
-//\r
+///\r
+/// Support an old name for backward compatibility.\r
+///\r
 #define BOOT_OBJECT_AUTHORIZATION_PARMSET_GUIDVALUE \\r
         BOOT_OBJECT_AUTHORIZATION_PARMSET_GUID\r
 \r
-/**                                                                 \r
+/**\r
   Initializes the BIS service, checking that it is compatible with the version requested by the caller.\r
-  After this call, other BIS functions may be invoked.                                                 \r
-    \r
+  After this call, other BIS functions may be invoked.\r
+\r
   @param  This                     A pointer to the EFI_BIS_PROTOCOL object.\r
-  @param  AppHandle                The function writes the new BIS_APPLICATION_HANDLE if           \r
+  @param  AppHandle                The function writes the new BIS_APPLICATION_HANDLE if\r
                                    successful, otherwise it writes NULL. The caller must eventually\r
-                                   destroy this handle by calling Shutdown().                      \r
+                                   destroy this handle by calling Shutdown().\r
   @param  InterfaceVersion         On input, the caller supplies the major version number of the\r
-                                   interface version desired.                                   \r
-                                   On output, both the major and minor                         \r
+                                   interface version desired.\r
+                                   On output, both the major and minor\r
                                    version numbers are updated with the major and minor version\r
-                                   numbers of the interface                                    \r
-  @param  TargetAddress            Indicates a network or device address of the BIS platform to connect to.                                                                 \r
+                                   numbers of the interface. This update is done whether or not the\r
+                                   initialization was successful.\r
+  @param  TargetAddress            Indicates a network or device address of the BIS platform to connect to.\r
 \r
   @retval EFI_SUCCESS              The function completed successfully.\r
-  @retval EFI_INCOMPATIBLE_VERSION The InterfaceVersion.Major requested by the                \r
+  @retval EFI_INCOMPATIBLE_VERSION The InterfaceVersion.Major requested by the\r
                                    caller was not compatible with the interface version of the\r
-  @retval EFI_UNSUPPORTED          This is a local-platform implementation and        \r
-                                   TargetAddress.Data was not NULL, or                \r
+                                   implementation. The InterfaceVersion.Major has\r
+                                   been updated with the current interface version.\r
+  @retval EFI_UNSUPPORTED          This is a local-platform implementation and\r
+                                   TargetAddress.Data was not NULL, or\r
                                    TargetAddress.Data was any other value that was not\r
-                                   supported by the implementation.                   \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                              \r
-  @retval EFI_DEVICE_ERROR         The function encountered an unexpected internal failure.\r
-  @retval EFI_INVALID_PARAMETER    One or more parameters are invalid.\r
-                                          \r
-**/                                       \r
+                                   supported by the implementation.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
+  @retval EFI_DEVICE_ERROR         One of the following device errors:\r
+                                   * The function encountered an unexpected internal failure while initializing a cryptographic software module\r
+                                   * No cryptographic software module with compatible version was found\r
+                                   found\r
+                                   * A resource limitation was encountered while using a cryptographic software module.\r
+  @retval EFI_INVALID_PARAMETER    The This parameter supplied by the caller is NULL or does not\r
+                                   reference a valid EFI_BIS_PROTOCOL object. Or,\r
+                                   the AppHandle parameter supplied by the caller is NULL or\r
+                                   an invalid memory reference. Or,\r
+                                   the InterfaceVersion parameter supplied by the caller\r
+                                   is NULL or an invalid memory reference. Or,\r
+                                   the TargetAddress parameter supplied by the caller is\r
+                                   NULL or an invalid memory reference.\r
+\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_INITIALIZE) (\r
-  IN     EFI_BIS_PROTOCOL        *This,              \r
-  OUT    BIS_APPLICATION_HANDLE  *AppHandle,         \r
-  IN OUT EFI_BIS_VERSION         *InterfaceVersion,  \r
-  IN     EFI_BIS_DATA            *TargetAddress      \r
+(EFIAPI *EFI_BIS_INITIALIZE)(\r
+  IN     EFI_BIS_PROTOCOL        *This,\r
+  OUT    BIS_APPLICATION_HANDLE  *AppHandle,\r
+  IN OUT EFI_BIS_VERSION         *InterfaceVersion,\r
+  IN     EFI_BIS_DATA            *TargetAddress\r
   );\r
 \r
-/**                                                                 \r
-  Frees memory structures allocated and returned by other functions in the EFI_BIS protocol.  \r
-      \r
+/**\r
+  Frees memory structures allocated and returned by other functions in the EFI_BIS protocol.\r
+\r
   @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                         \r
+                                   of the BIS service.\r
   @param  ToFree                   An EFI_BIS_DATA* and associated memory block to be freed.\r
+                                   This EFI_BIS_DATA* must have been allocated by one of the other BIS functions.\r
 \r
   @retval EFI_SUCCESS              The function completed successfully.\r
   @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
-                                   application instance handle associated with the EFI_BIS protocol.                                     \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                                \r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
   @retval EFI_INVALID_PARAMETER    The ToFree parameter is not or is no longer a memory resource\r
-                                   associated with this AppHandle.                              \r
-                                           \r
-**/     \r
+                                   associated with this AppHandle.\r
+\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_FREE) (\r
-  IN BIS_APPLICATION_HANDLE  AppHandle,               \r
-  IN EFI_BIS_DATA            *ToFree                  \r
+(EFIAPI *EFI_BIS_FREE)(\r
+  IN BIS_APPLICATION_HANDLE  AppHandle,\r
+  IN EFI_BIS_DATA            *ToFree\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Shuts down an application's instance of the BIS service, invalidating the application handle. After\r
-  this call, other BIS functions may no longer be invoked using the application handle value.         \r
-      \r
+  this call, other BIS functions may no longer be invoked using the application handle value.\r
+\r
   @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
+                                   of the BIS service.\r
 \r
   @retval EFI_SUCCESS              The function completed successfully.\r
-  @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
-                                   application instance handle associated with the EFI_BIS protocol.                                     \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                                \r
-  @retval EFI_DEVICE_ERROR         The function encountered an unexpected internal failure.  \r
-                                           \r
-**/   \r
+  @retval EFI_NO_MAPPING           The AppHandle parameter is not, or is no longer, a valid\r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
+  @retval EFI_DEVICE_ERROR         The function encountered an unexpected internal failure while\r
+                                   returning resources associated with a cryptographic software module, or\r
+                                   while trying to shut down a cryptographic software module.\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_SHUTDOWN) (\r
-  IN BIS_APPLICATION_HANDLE  AppHandle               \r
+(EFIAPI *EFI_BIS_SHUTDOWN)(\r
+  IN BIS_APPLICATION_HANDLE  AppHandle\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Retrieves the certificate that has been configured as the identity of the organization designated as\r
   the source of authorization for signatures of boot objects.\r
-      \r
+\r
   @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
+                                   of the BIS service.\r
   @param  Certificate              The function writes an allocated EFI_BIS_DATA* containing the Boot\r
-                                   Object Authorization Certificate object.                            \r
+                                   Object Authorization Certificate object.  The caller must\r
+                                   eventually free the memory allocated by this function using the function Free().\r
 \r
   @retval EFI_SUCCESS              The function completed successfully.\r
   @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
-                                   application instance handle associated with the EFI_BIS protocol.                                     \r
-  @retval EFI_NOT_FOUND            There is no Boot Object Authorization Certificate currently installed.                        \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                                \r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_NOT_FOUND            There is no Boot Object Authorization Certificate currently installed.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
   @retval EFI_INVALID_PARAMETER    The Certificate parameter supplied by the caller is NULL or\r
-                                   an invalid memory reference.                                       \r
-                                   \r
-**/ \r
+                                   an invalid memory reference.\r
+\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CERTIFICATE) (\r
-  IN  BIS_APPLICATION_HANDLE  AppHandle,              \r
-  OUT EFI_BIS_DATA            **Certificate           \r
+(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CERTIFICATE)(\r
+  IN  BIS_APPLICATION_HANDLE  AppHandle,\r
+  OUT EFI_BIS_DATA            **Certificate\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Verifies the integrity and authorization of the indicated data object according to the\r
-  indicated credentials.                                                                \r
-      \r
+  indicated credentials.\r
+\r
   @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
+                                   of the BIS service.\r
   @param  Credentials              A Signed Manifest containing verification information for the indicated\r
-                                   data object.                                                            \r
+                                   data object.\r
   @param  DataObject               An in-memory copy of the raw data object to be verified.\r
   @param  IsVerified               The function writes TRUE if the verification succeeded, otherwise\r
-                                   FALSE.                                                           \r
-                                   \r
+                                   FALSE.\r
+\r
   @retval EFI_SUCCESS              The function completed successfully.\r
   @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
-                                   application instance handle associated with the EFI_BIS protocol.                                       \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                                \r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
   @retval EFI_INVALID_PARAMETER    One or more parameters are invalid.\r
   @retval EFI_SECURITY_VIOLATION   The signed manifest supplied as the Credentials parameter\r
                                    was invalid (could not be parsed) or Platform-specific authorization failed, etc.\r
-  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred.                           \r
-                                   \r
-**/ \r
+  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred.\r
+\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_VERIFY_BOOT_OBJECT) (\r
-  IN  BIS_APPLICATION_HANDLE AppHandle,               \r
-  IN  EFI_BIS_DATA           *Credentials,            \r
-  IN  EFI_BIS_DATA           *DataObject,             \r
-  OUT BOOLEAN                *IsVerified              \r
+(EFIAPI *EFI_BIS_VERIFY_BOOT_OBJECT)(\r
+  IN  BIS_APPLICATION_HANDLE AppHandle,\r
+  IN  EFI_BIS_DATA           *Credentials,\r
+  IN  EFI_BIS_DATA           *DataObject,\r
+  OUT BOOLEAN                *IsVerified\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Retrieves the current status of the Boot Authorization Check Flag.\r
-      \r
+\r
   @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
+                                   of the BIS service.\r
   @param  CheckIsRequired          The function writes the value TRUE if a Boot Authorization Check is\r
-                                   currently required on this platform, otherwise the function writes \r
-                                   FALSE.                                                             \r
-                                   \r
+                                   currently required on this platform, otherwise the function writes\r
+                                   FALSE.\r
+\r
   @retval EFI_SUCCESS              The function completed successfully.\r
   @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
-                                   application instance handle associated with the EFI_BIS protocol.                                       \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                                \r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
   @retval EFI_INVALID_PARAMETER    The CheckIsRequired parameter supplied by the caller is\r
-                                   NULL or an invalid memory reference.                   \r
-                                   \r
-**/ \r
+                                   NULL or an invalid memory reference.\r
+\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CHECKFLAG) (\r
-  IN  BIS_APPLICATION_HANDLE  AppHandle,             \r
-  OUT BOOLEAN                 *CheckIsRequired       \r
+(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CHECKFLAG)(\r
+  IN  BIS_APPLICATION_HANDLE  AppHandle,\r
+  OUT BOOLEAN                 *CheckIsRequired\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Retrieves a unique token value to be included in the request credential for the next update of any\r
-  parameter in the Boot Object Authorization set                                                    \r
-      \r
-  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
-  @param  UpdateToken              The function writes an allocated EFI_BIS_DATA* containing the new\r
-                                   unique update token value.                                                                          \r
-                                   \r
+  parameter in the Boot Object Authorization set\r
+\r
+  @param  AppHandle                An opaque handle that identifies the caller's\r
+                                   instance of initialization of the BIS service.\r
+  @param  UpdateToken              The function writes an allocated EFI_BIS_DATA*\r
+                                   containing the newunique update token value.\r
+                                   The caller musteventually free the memory allocated\r
+                                   by this function using the function Free().\r
+\r
   @retval EFI_SUCCESS              The function completed successfully.\r
   @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
-                                   application instance handle associated with the EFI_BIS protocol.                                       \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                                \r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
   @retval EFI_INVALID_PARAMETER    The UpdateToken parameter supplied by the caller is NULL or\r
-                                   an invalid memory reference.        \r
-  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred.                                                            \r
-                                   \r
-**/ \r
+                                   an invalid memory reference.\r
+  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred.\r
+\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_UPDATE_TOKEN) (\r
-  IN  BIS_APPLICATION_HANDLE  AppHandle,              \r
-  OUT EFI_BIS_DATA            **UpdateToken           \r
+(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_UPDATE_TOKEN)(\r
+  IN  BIS_APPLICATION_HANDLE  AppHandle,\r
+  OUT EFI_BIS_DATA            **UpdateToken\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Updates one of the configurable parameters of the Boot Object Authorization set.\r
-      \r
-  @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
-  @param  RequestCredential        This is a Signed Manifest with embedded attributes that carry the details\r
-                                   of the requested update.                                                 \r
-  @param  NewUpdateToken           The function writes an allocated EFI_BIS_DATA* containing the new                        \r
-                                   unique update token value.                                       \r
-                                   \r
-  @retval EFI_SUCCESS              The function completed successfully.                                                \r
-  @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid                              \r
-                                   application instance handle associated with the EFI_BIS protocol.                   \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                       \r
-  @retval EFI_INVALID_PARAMETER    One or more parameters are invalid.                                                 \r
-  @retval EFI_SECURITY_VIOLATION   The signed manifest supplied as the RequestCredential parameter                           \r
-                                   was invalid (could not be parsed) or Platform-specific authorization failed, etc.   \r
-  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred.                                                                                                                                                                   \r
-                                   \r
-**/ \r
+\r
+  @param  AppHandle                An opaque handle that identifies the caller's\r
+                                   instance of initialization of the BIS service.\r
+  @param  RequestCredential        This is a Signed Manifest with embedded attributes\r
+                                   that carry the details of the requested update.\r
+  @param  NewUpdateToken           The function writes an allocated EFI_BIS_DATA*\r
+                                   containing the new unique update token value.\r
+                                   The caller must eventually free the memory allocated\r
+                                   by this function using the function Free().\r
+\r
+  @retval EFI_SUCCESS              The function completed successfully.\r
+  @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
+  @retval EFI_INVALID_PARAMETER    One or more parameters are invalid.\r
+  @retval EFI_SECURITY_VIOLATION   The signed manifest supplied as the RequestCredential parameter\r
+                                   was invalid (could not be parsed) or Platform-specific authorization failed, etc.\r
+  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred while analyzing the new\r
+                                   certificate's key algorithm, or while attempting to retrieve\r
+                                   the public key algorithm of the manifest's signer's certificate,\r
+                                   or An unexpected internal error occurred in a cryptographic software module.\r
+\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_UPDATE_BOOT_OBJECT_AUTHORIZATION) (\r
-  IN  BIS_APPLICATION_HANDLE AppHandle,               \r
-  IN  EFI_BIS_DATA           *RequestCredential,      \r
-  OUT EFI_BIS_DATA           **NewUpdateToken         \r
+(EFIAPI *EFI_BIS_UPDATE_BOOT_OBJECT_AUTHORIZATION)(\r
+  IN  BIS_APPLICATION_HANDLE AppHandle,\r
+  IN  EFI_BIS_DATA           *RequestCredential,\r
+  OUT EFI_BIS_DATA           **NewUpdateToken\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Verifies the integrity and authorization of the indicated data object according to the indicated\r
-  credentials and authority certificate.                                                          \r
-      \r
+  credentials and authority certificate.\r
+\r
   @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
+                                   of the BIS service.\r
   @param  Credentials              A Signed Manifest containing verification information for the\r
-                                   indicated data object.                                       \r
+                                   indicated data object.\r
   @param  DataObject               An in-memory copy of the raw data object to be verified.\r
-  @param  SectionName              An ASCII (not Unicode) string giving the section name in the  \r
+  @param  SectionName              An ASCII string giving the section name in the\r
                                    manifest holding the verification information (in other words,\r
-                                   hash value) that corresponds to DataObject.                             \r
-  @param  AuthorityCertificate     A digital certificate whose public key must match the signer's                              \r
-                                   public key which is found in the credentials.                  \r
+                                   hash value) that corresponds to DataObject.\r
+  @param  AuthorityCertificate     A digital certificate whose public key must match the signer's\r
+                                   public key which is found in the credentials.\r
   @param  IsVerified               The function writes TRUE if the verification was successful.\r
-                                   Otherwise, the function writes FALSE.                       \r
-                                   \r
-  @retval EFI_SUCCESS              The function completed successfully.                                                \r
-  @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid                              \r
-                                   application instance handle associated with the EFI_BIS protocol.                   \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                       \r
-  @retval EFI_INVALID_PARAMETER    One or more parameters are invalid.                                                 \r
+                                   Otherwise, the function writes FALSE.\r
+\r
+  @retval EFI_SUCCESS              The function completed successfully.\r
+  @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
+  @retval EFI_INVALID_PARAMETER    One or more parameters are invalid.\r
   @retval EFI_SECURITY_VIOLATION   The Credentials.Data supplied by the caller is NULL,\r
-                                   or the AuthorityCertificate supplied by the caller was \r
-                                   invalid (could not be parsed),                      \r
-                                   or Platform-specific authorization failed, etc.   \r
-  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred.                                                                                                                                                                   \r
-                                   \r
-**/ \r
+                                   or the AuthorityCertificate supplied by the caller was\r
+                                   invalid (could not be parsed),\r
+                                   or Platform-specific authorization failed, etc.\r
+  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred while attempting to retrieve\r
+                                   the public key algorithm of the manifest's signer's certificate,\r
+                                   or An unexpected internal error occurred in a cryptographic software module.\r
+**/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_VERIFY_OBJECT_WITH_CREDENTIAL) (\r
-  IN  BIS_APPLICATION_HANDLE AppHandle,              \r
-  IN  EFI_BIS_DATA           *Credentials,           \r
-  IN  EFI_BIS_DATA           *DataObject,            \r
-  IN  EFI_BIS_DATA           *SectionName,           \r
-  IN  EFI_BIS_DATA           *AuthorityCertificate,  \r
-  OUT BOOLEAN                *IsVerified             \r
+(EFIAPI *EFI_BIS_VERIFY_OBJECT_WITH_CREDENTIAL)(\r
+  IN  BIS_APPLICATION_HANDLE AppHandle,\r
+  IN  EFI_BIS_DATA           *Credentials,\r
+  IN  EFI_BIS_DATA           *DataObject,\r
+  IN  EFI_BIS_DATA           *SectionName,\r
+  IN  EFI_BIS_DATA           *AuthorityCertificate,\r
+  OUT BOOLEAN                *IsVerified\r
   );\r
 \r
-/**                                                                 \r
+/**\r
   Retrieves a list of digital certificate identifier, digital signature algorithm, hash algorithm, and keylength\r
-  combinations that the platform supports.                                                                      \r
-      \r
+  combinations that the platform supports.\r
+\r
   @param  AppHandle                An opaque handle that identifies the caller's instance of initialization\r
-                                   of the BIS service.                                                                                           \r
+                                   of the BIS service.\r
   @param  SignatureInfo            The function writes an allocated EFI_BIS_DATA* containing the array\r
-                                   of EFI_BIS_SIGNATURE_INFO structures representing the supported    \r
-                                   digital certificate identifier, algorithm, and key length combinations.                                   \r
-                                   \r
-  @retval EFI_SUCCESS              The function completed successfully.                                                \r
-  @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid                              \r
-                                   application instance handle associated with the EFI_BIS protocol.                   \r
-  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.                       \r
+                                   of EFI_BIS_SIGNATURE_INFO structures representing the supported\r
+                                   digital certificate identifier, algorithm, and key length combinations.\r
+                                   The caller must eventually free the memory allocated by this function using the function Free().\r
+\r
+  @retval EFI_SUCCESS              The function completed successfully.\r
+  @retval EFI_NO_MAPPING           The AppHandle parameter is not or is no longer a valid\r
+                                   application instance handle associated with the EFI_BIS protocol.\r
+  @retval EFI_OUT_OF_RESOURCES     The function failed due to lack of memory or other resources.\r
   @retval EFI_INVALID_PARAMETER    The SignatureInfo parameter supplied by the caller is NULL\r
-                                   or an invalid memory reference.                           \r
-  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred.                                                                                                                                                                   \r
-                                   \r
+                                   or an invalid memory reference.\r
+  @retval EFI_DEVICE_ERROR         An unexpected internal error occurred in a\r
+                                   cryptographic software module, or\r
+                                   The function encountered an unexpected internal consistency check\r
+                                   failure (possible corruption of stored Boot Object Authorization Certificate).\r
+\r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_SIGNATURE_INFO) (\r
-  IN  BIS_APPLICATION_HANDLE  AppHandle,           \r
-  OUT EFI_BIS_DATA            **SignatureInfo      \r
+(EFIAPI *EFI_BIS_GET_SIGNATURE_INFO)(\r
+  IN  BIS_APPLICATION_HANDLE  AppHandle,\r
+  OUT EFI_BIS_DATA            **SignatureInfo\r
   );\r
 \r
+///\r
+/// The EFI_BIS_PROTOCOL is used to check a digital signature of a data block against a digital\r
+/// certificate for the purpose of an integrity and authorization check.\r
+///\r
 struct _EFI_BIS_PROTOCOL {\r
   EFI_BIS_INITIALIZE                                  Initialize;\r
   EFI_BIS_SHUTDOWN                                    Shutdown;\r