REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the SecurityPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
		
			
				
	
	
		
			199 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  The internal header file includes the common header files, defines
 | 
						|
  internal structure and functions used by ImageVerificationLib.
 | 
						|
 | 
						|
Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __IMAGEVERIFICATIONLIB_H__
 | 
						|
#define __IMAGEVERIFICATIONLIB_H__
 | 
						|
 | 
						|
#include <Library/UefiDriverEntryPoint.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
#include <Library/UefiRuntimeServicesTableLib.h>
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
#include <Library/BaseLib.h>
 | 
						|
#include <Library/MemoryAllocationLib.h>
 | 
						|
#include <Library/BaseCryptLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
#include <Library/DevicePathLib.h>
 | 
						|
#include <Library/SecurityManagementLib.h>
 | 
						|
#include <Library/PeCoffLib.h>
 | 
						|
#include <Protocol/FirmwareVolume2.h>
 | 
						|
#include <Protocol/DevicePath.h>
 | 
						|
#include <Protocol/BlockIo.h>
 | 
						|
#include <Protocol/SimpleFileSystem.h>
 | 
						|
#include <Protocol/VariableWrite.h>
 | 
						|
#include <Guid/ImageAuthentication.h>
 | 
						|
#include <Guid/AuthenticatedVariableFormat.h>
 | 
						|
#include <IndustryStandard/PeImage.h>
 | 
						|
 | 
						|
#define EFI_CERT_TYPE_RSA2048_SHA256_SIZE  256
 | 
						|
#define EFI_CERT_TYPE_RSA2048_SIZE         256
 | 
						|
#define MAX_NOTIFY_STRING_LEN              64
 | 
						|
#define TWO_BYTE_ENCODE                    0x82
 | 
						|
 | 
						|
#define ALIGNMENT_SIZE  8
 | 
						|
#define ALIGN_SIZE(a)  (((a) % ALIGNMENT_SIZE) ? ALIGNMENT_SIZE - ((a) % ALIGNMENT_SIZE) : 0)
 | 
						|
 | 
						|
//
 | 
						|
// Image type definitions
 | 
						|
//
 | 
						|
#define IMAGE_UNKNOWN               0x00000000
 | 
						|
#define IMAGE_FROM_FV               0x00000001
 | 
						|
#define IMAGE_FROM_OPTION_ROM       0x00000002
 | 
						|
#define IMAGE_FROM_REMOVABLE_MEDIA  0x00000003
 | 
						|
#define IMAGE_FROM_FIXED_MEDIA      0x00000004
 | 
						|
 | 
						|
//
 | 
						|
// Authorization policy bit definition
 | 
						|
//
 | 
						|
#define ALWAYS_EXECUTE                       0x00000000
 | 
						|
#define NEVER_EXECUTE                        0x00000001
 | 
						|
#define ALLOW_EXECUTE_ON_SECURITY_VIOLATION  0x00000002
 | 
						|
#define DEFER_EXECUTE_ON_SECURITY_VIOLATION  0x00000003
 | 
						|
#define DENY_EXECUTE_ON_SECURITY_VIOLATION   0x00000004
 | 
						|
#define QUERY_USER_ON_SECURITY_VIOLATION     0x00000005
 | 
						|
 | 
						|
//
 | 
						|
// Support hash types
 | 
						|
//
 | 
						|
#define HASHALG_SHA1    0x00000000
 | 
						|
#define HASHALG_SHA224  0x00000001
 | 
						|
#define HASHALG_SHA256  0x00000002
 | 
						|
#define HASHALG_SHA384  0x00000003
 | 
						|
#define HASHALG_SHA512  0x00000004
 | 
						|
#define HASHALG_MAX     0x00000005
 | 
						|
 | 
						|
//
 | 
						|
// Set max digest size as SHA512 Output (64 bytes) by far
 | 
						|
//
 | 
						|
#define MAX_DIGEST_SIZE  SHA512_DIGEST_SIZE
 | 
						|
//
 | 
						|
//
 | 
						|
// PKCS7 Certificate definition
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  WIN_CERTIFICATE    Hdr;
 | 
						|
  UINT8              CertData[1];
 | 
						|
} WIN_CERTIFICATE_EFI_PKCS;
 | 
						|
 | 
						|
/**
 | 
						|
  Retrieves the size, in bytes, of the context buffer required for hash operations.
 | 
						|
 | 
						|
  @return  The size, in bytes, of the context buffer required for hash operations.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
UINTN
 | 
						|
(EFIAPI *HASH_GET_CONTEXT_SIZE)(
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Initializes user-supplied memory pointed by HashContext as hash context for
 | 
						|
  subsequent use.
 | 
						|
 | 
						|
  If HashContext is NULL, then ASSERT().
 | 
						|
 | 
						|
  @param[in, out]  HashContext  Pointer to  Context being initialized.
 | 
						|
 | 
						|
  @retval TRUE   HASH context initialization succeeded.
 | 
						|
  @retval FALSE  HASH context initialization failed.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
BOOLEAN
 | 
						|
(EFIAPI *HASH_INIT)(
 | 
						|
  IN OUT  VOID  *HashContext
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Performs digest on a data buffer of the specified length. This function can
 | 
						|
  be called multiple times to compute the digest of long or discontinuous data streams.
 | 
						|
 | 
						|
  If HashContext is NULL, then ASSERT().
 | 
						|
 | 
						|
  @param[in, out]  HashContext  Pointer to the MD5 context.
 | 
						|
  @param[in]       Data         Pointer to the buffer containing the data to be hashed.
 | 
						|
  @param[in]       DataLength   Length of Data buffer in bytes.
 | 
						|
 | 
						|
  @retval TRUE     HASH data digest succeeded.
 | 
						|
  @retval FALSE    Invalid HASH context. After HashFinal function has been called, the
 | 
						|
                   HASH context cannot be reused.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
BOOLEAN
 | 
						|
(EFIAPI *HASH_UPDATE)(
 | 
						|
  IN OUT  VOID        *HashContext,
 | 
						|
  IN      CONST VOID  *Data,
 | 
						|
  IN      UINTN       DataLength
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Completes hash computation and retrieves the digest value into the specified
 | 
						|
  memory. After this function has been called, the context cannot be used again.
 | 
						|
 | 
						|
  If HashContext is NULL, then ASSERT().
 | 
						|
  If HashValue is NULL, then ASSERT().
 | 
						|
 | 
						|
  @param[in, out]  HashContext  Pointer to the MD5 context
 | 
						|
  @param[out]      HashValue    Pointer to a buffer that receives the HASH digest
 | 
						|
                                value.
 | 
						|
 | 
						|
  @retval TRUE   HASH digest computation succeeded.
 | 
						|
  @retval FALSE  HASH digest computation failed.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
BOOLEAN
 | 
						|
(EFIAPI *HASH_FINAL)(
 | 
						|
  IN OUT  VOID   *HashContext,
 | 
						|
  OUT     UINT8  *HashValue
 | 
						|
  );
 | 
						|
 | 
						|
//
 | 
						|
// Hash Algorithm Table
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  //
 | 
						|
  // Name for Hash Algorithm
 | 
						|
  //
 | 
						|
  CHAR16                   *Name;
 | 
						|
  //
 | 
						|
  // Digest Length
 | 
						|
  //
 | 
						|
  UINTN                    DigestLength;
 | 
						|
  //
 | 
						|
  // Hash Algorithm OID ASN.1 Value
 | 
						|
  //
 | 
						|
  UINT8                    *OidValue;
 | 
						|
  //
 | 
						|
  // Length of Hash OID Value
 | 
						|
  //
 | 
						|
  UINTN                    OidLength;
 | 
						|
  //
 | 
						|
  // Pointer to Hash GetContentSize function
 | 
						|
  //
 | 
						|
  HASH_GET_CONTEXT_SIZE    GetContextSize;
 | 
						|
  //
 | 
						|
  // Pointer to Hash Init function
 | 
						|
  //
 | 
						|
  HASH_INIT                HashInit;
 | 
						|
  //
 | 
						|
  // Pointer to Hash Update function
 | 
						|
  //
 | 
						|
  HASH_UPDATE              HashUpdate;
 | 
						|
  //
 | 
						|
  // Pointer to Hash Final function
 | 
						|
  //
 | 
						|
  HASH_FINAL               HashFinal;
 | 
						|
} HASH_TABLE;
 | 
						|
 | 
						|
#endif
 |