+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>\r
-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
- \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
-\r
-Module Name:\r
-\r
- Bis.h\r
-\r
-Abstract:\r
-\r
- This file defines the BIS protocol.\r
-\r
---*/\r
-\r
-#ifndef _BIS_H_\r
-#define _BIS_H_\r
-\r
-#include <EfiSpec.h>\r
-\r
-//\r
-// Basic types\r
-//\r
-typedef VOID *BIS_APPLICATION_HANDLE;\r
-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
-typedef struct _EFI_BIS_DATA {\r
- UINT32 Length; // 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
-typedef struct _EFI_BIS_VERSION {\r
- UINT32 Major; // BIS Interface version number.\r
- UINT32 Minor; // Build number.\r
-} EFI_BIS_VERSION;\r
-\r
-//\r
-// ----------------------------------------------------//\r
-// Use these values to initialize EFI_BIS_VERSION.Major\r
-// and to interpret results of Initialize.\r
-// ----------------------------------------------------//\r
-//\r
-#define BIS_CURRENT_VERSION_MAJOR BIS_VERSION_1\r
-#define BIS_VERSION_1 1\r
-\r
-//\r
-// EFI_BIS_SIGNATURE_INFO type.\r
-//\r
-typedef struct _EFI_BIS_SIGNATURE_INFO {\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
-} 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
-#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
-#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
-#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
-#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
-#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_GUIDVALUE \\r
- { \\r
- 0xedd35e31, 0x7b9, 0x11d2, \\r
- { \\r
- 0x83, 0xa3, 0x0, 0xa0, 0xc9, 0x1f, 0xad, 0xcf \\r
- } \\r
- }\r
-\r
-//\r
-// -----------------------------------//\r
-// EFI_BIS_PROTOCOL\r
-// -----------------------------------//\r
-//\r
-#define EFI_BIS_PROTOCOL_GUID \\r
- { \\r
- 0x0b64aab0, 0x5429, 0x11d4, {0x98, 0x16, 0x00, 0xa0, 0xc9, 0x1f, 0xad, 0xcf} \\r
- }\r
-\r
-typedef struct _EFI_BIS_PROTOCOL EFI_BIS_PROTOCOL;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_INITIALIZE) (\r
- IN EFI_BIS_PROTOCOL * This, // this\r
- OUT BIS_APPLICATION_HANDLE * AppHandle, // Application handle.\r
- IN OUT EFI_BIS_VERSION * InterfaceVersion, // ver needed/available.\r
- IN EFI_BIS_DATA * TargetAddress // Address of BIS platform.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_FREE) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- IN EFI_BIS_DATA * ToFree // EFI_BIS_DATA being freed.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_SHUTDOWN) (\r
- IN BIS_APPLICATION_HANDLE AppHandle // From Initialize( ).\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CERTIFICATE) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- OUT EFI_BIS_DATA **Certificate // Pointer to certificate.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_VERIFY_BOOT_OBJECT) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- IN EFI_BIS_DATA * Credentials, // Verification signed manifest.\r
- IN EFI_BIS_DATA * DataObject, // Boot object to verify.\r
- OUT BOOLEAN *IsVerified // Result of verifcation.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CHECKFLAG) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- OUT BOOLEAN *CheckIsRequired // Value of check flag.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_UPDATE_TOKEN) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- OUT EFI_BIS_DATA **UpdateToken // Value of update token.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_UPDATE_BOOT_OBJECT_AUTHORIZATION) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- IN EFI_BIS_DATA * RequestCredential, // Update Request Manifest.\r
- OUT EFI_BIS_DATA **NewUpdateToken // Next update token.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_VERIFY_OBJECT_WITH_CREDENTIAL) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- IN EFI_BIS_DATA * Credentials, // Verification signed manifest.\r
- IN EFI_BIS_DATA * DataObject, // Boot object to verify.\r
- IN EFI_BIS_DATA * SectionName, // Name of credential section to use.\r
- IN EFI_BIS_DATA * AuthorityCertificate, // Certificate for credentials.\r
- OUT BOOLEAN *IsVerified // Result of verifcation.\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_BIS_GET_SIGNATURE_INFO) (\r
- IN BIS_APPLICATION_HANDLE AppHandle, // From Initialize( ).\r
- OUT EFI_BIS_DATA **SignatureInfo // Signature info struct.\r
- );\r
-\r
-#define EFI_BIS_PROTOCOL_REVISION 0x00010000\r
-\r
-struct _EFI_BIS_PROTOCOL {\r
- //\r
- // member vars\r
- //\r
- UINT64 Revision;\r
-\r
- //\r
- // methods\r
- //\r
- EFI_BIS_INITIALIZE Initialize;\r
- EFI_BIS_SHUTDOWN Shutdown;\r
- EFI_BIS_FREE Free;\r
- EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CERTIFICATE GetBootObjectAuthorizationCertificate;\r
- EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CHECKFLAG GetBootObjectAuthorizationCheckFlag;\r
- EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_UPDATE_TOKEN GetBootObjectAuthorizationUpdateToken;\r
- EFI_BIS_GET_SIGNATURE_INFO GetSignatureInfo;\r
- EFI_BIS_UPDATE_BOOT_OBJECT_AUTHORIZATION UpdateBootObjectAuthorization;\r
- EFI_BIS_VERIFY_BOOT_OBJECT VerifyBootObject;\r
- EFI_BIS_VERIFY_OBJECT_WITH_CREDENTIAL VerifyObjectWithCredential;\r
-};\r
-\r
-extern EFI_GUID gEfiBisProtocolGuid;\r
-\r
-#endif\r