mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
74 lines
1.5 KiB
C
74 lines
1.5 KiB
C
/**
|
|
* Hash service fix for AMI EFIs with broken SHA implementations.
|
|
*
|
|
* Forcibly reinstalls EFI_HASH_PROTOCOL with working MD5, SHA-1,
|
|
* SHA-256 implementations.
|
|
*
|
|
* Author: Joel Höner <athre0z@zyantific.com>
|
|
*/
|
|
|
|
#ifndef HASH_SERVICES_H
|
|
#define HASH_SERVICES_H
|
|
|
|
#include <Library/OcCryptoLib.h>
|
|
#include <Protocol/ServiceBinding.h>
|
|
#include <Protocol/Hash.h>
|
|
|
|
typedef union _HS_CONTEXT_DATA
|
|
{
|
|
MD5_CONTEXT Md5;
|
|
SHA1_CONTEXT Sha1;
|
|
SHA256_CONTEXT Sha256;
|
|
} HS_CONTEXT_DATA;
|
|
|
|
typedef struct _HS_PRIVATE_DATA
|
|
{
|
|
HS_CONTEXT_DATA Ctx;
|
|
UINTN Signature;
|
|
EFI_HASH_PROTOCOL Proto;
|
|
} HS_PRIVATE_DATA;
|
|
|
|
#define HS_PRIVATE_SIGNATURE SIGNATURE_32('H','S','r','v')
|
|
|
|
#define HS_PRIVATE_FROM_PROTO(a) \
|
|
CR(a, HS_PRIVATE_DATA, Proto, HS_PRIVATE_SIGNATURE)
|
|
|
|
STATIC
|
|
EFI_STATUS
|
|
EFIAPI
|
|
HSGetHashSize (
|
|
IN CONST EFI_HASH_PROTOCOL *This,
|
|
IN CONST EFI_GUID *HashAlgorithm,
|
|
OUT UINTN *HashSize
|
|
);
|
|
|
|
STATIC
|
|
EFI_STATUS
|
|
EFIAPI
|
|
HSHash (
|
|
IN CONST EFI_HASH_PROTOCOL *This,
|
|
IN CONST EFI_GUID *HashAlgorithm,
|
|
IN BOOLEAN Extend,
|
|
IN CONST UINT8 *Message,
|
|
IN UINT64 MessageSize,
|
|
IN OUT EFI_HASH_OUTPUT *Hash
|
|
);
|
|
|
|
STATIC
|
|
EFI_STATUS
|
|
EFIAPI
|
|
HSCreateChild (
|
|
IN EFI_SERVICE_BINDING_PROTOCOL *This,
|
|
IN OUT EFI_HANDLE *ChildHandle
|
|
);
|
|
|
|
STATIC
|
|
EFI_STATUS
|
|
EFIAPI
|
|
HSDestroyChild (
|
|
IN EFI_SERVICE_BINDING_PROTOCOL *This,
|
|
IN EFI_HANDLE ChildHandle
|
|
);
|
|
|
|
#endif // HASH_SERVICES_H
|