X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdePkg%2FInclude%2FProtocol%2FHash.h;h=0bee694a5b10d2b7b1b138631c86e4aff4f7e28f;hb=6a46c1a2a62135d8f55d093f08bc06537b3ba8ef;hp=9355da4fffe4a39a34db42f66e0cc8d9e8687393;hpb=d1f950002362305fcd4c30f108ef7b76679f5843;p=mirror_edk2.git diff --git a/MdePkg/Include/Protocol/Hash.h b/MdePkg/Include/Protocol/Hash.h index 9355da4fff..0bee694a5b 100644 --- a/MdePkg/Include/Protocol/Hash.h +++ b/MdePkg/Include/Protocol/Hash.h @@ -2,27 +2,24 @@ EFI_HASH_SERVICE_BINDING_PROTOCOL as defined in UEFI 2.0. EFI_HASH_PROTOCOL as defined in UEFI 2.0. The EFI Hash Service Binding Protocol is used to locate hashing services support - provided by a driver and create and destroy instances of the EFI Hash Protocol + provided by a driver and to create and destroy instances of the EFI Hash Protocol so that a multiple drivers can use the underlying hashing services. - The EFI Service Binding Protocol defines the generic Service Binding Protocol functions. - Copyright (c) 2006, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - Module Name: Hash.h +Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
+This program and the accompanying materials are licensed and made available under +the terms and conditions of the BSD License that accompanies this distribution. +The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php. + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef __EFI_HASH_PROTOCOL_H__ #define __EFI_HASH_PROTOCOL_H__ -#define EFI_HASH_SERVICE_BINDING_PROTOCOL \ +#define EFI_HASH_SERVICE_BINDING_PROTOCOL_GUID \ { \ 0x42881c98, 0xa4f3, 0x44b0, {0xa3, 0x9d, 0xdf, 0xa1, 0x86, 0x67, 0xd8, 0xcd } \ } @@ -62,6 +59,26 @@ 0xaf7c79c, 0x65b5, 0x4319, {0xb0, 0xae, 0x44, 0xec, 0x48, 0x4e, 0x4a, 0xd7 } \ } +#define EFI_HASH_ALGORITHM_SHA1_NOPAD_GUID \ + { \ + 0x24c5dc2f, 0x53e2, 0x40ca, {0x9e, 0xd6, 0xa5, 0xd9, 0xa4, 0x9f, 0x46, 0x3b } \ + } + +#define EFI_HASH_ALGORITHM_SHA256_NOPAD_GUID \ + { \ + 0x8628752a, 0x6cb7, 0x4814, {0x96, 0xfc, 0x24, 0xa8, 0x15, 0xac, 0x22, 0x26 } \ + } + +// +// Note: Use of the following algorithms with EFI_HASH_PROTOCOL is deprecated. +// EFI_HASH_ALGORITHM_SHA1_GUID +// EFI_HASH_ALGORITHM_SHA224_GUID +// EFI_HASH_ALGORITHM_SHA256_GUID +// EFI_HASH_ALGORITHM_SHA384_GUID +// EFI_HASH_ALGORITHM_SHA512_GUID +// EFI_HASH_ALGORTIHM_MD5_GUID +// + typedef struct _EFI_HASH_PROTOCOL EFI_HASH_PROTOCOL; typedef UINT8 EFI_MD5_HASH[16]; @@ -83,55 +100,62 @@ typedef union { /** Returns the size of the hash which results from a specific algorithm. - @param This Points to this instance of EFI_HASH_PROTOCOL. - @param HashAlgorithm Points to the EFI_GUID which identifies the algorithm to use. - @param HashSize Holds the returned size of the algorithm's hash. + @param[in] This Points to this instance of EFI_HASH_PROTOCOL. + @param[in] HashAlgorithm Points to the EFI_GUID which identifies the algorithm to use. + @param[out] HashSize Holds the returned size of the algorithm's hash. @retval EFI_SUCCESS Hash size returned successfully. - @retval EFI_INVALID_PARAMETER HashSize is NULL + @retval EFI_INVALID_PARAMETER HashSize is NULL or HashAlgorithm is NULL. @retval EFI_UNSUPPORTED The algorithm specified by HashAlgorithm is not supported by this driver. **/ typedef EFI_STATUS -(EFIAPI *EFI_HASH_GET_HASH_SIZE) ( +(EFIAPI *EFI_HASH_GET_HASH_SIZE)( IN CONST EFI_HASH_PROTOCOL *This, IN CONST EFI_GUID *HashAlgorithm, OUT UINTN *HashSize - ) -; + ); /** - Returns the size of the hash which results from a specific algorithm. - - @param This Points to this instance of EFI_HASH_PROTOCOL. - @param HashAlgorithm Points to the EFI_GUID which identifies the algorithm to use. - @param Extend Specifies whether to create a new hash (FALSE) or extend the specified - existing hash (TRUE). - @param Message Points to the start of the message. - @param MessageSize The size of Message, in bytes. - @param Hash On input, if Extend is TRUE, then this holds the hash to extend. On - output, holds the resulting hash computed from the message. - + Creates a hash for the specified message text. + + @param[in] This Points to this instance of EFI_HASH_PROTOCOL. + @param[in] HashAlgorithm Points to the EFI_GUID which identifies the algorithm to use. + @param[in] Extend Specifies whether to create a new hash (FALSE) or extend the specified + existing hash (TRUE). + @param[in] Message Points to the start of the message. + @param[in] MessageSize The size of Message, in bytes. + @param[in,out] Hash On input, if Extend is TRUE, then this parameter holds a pointer + to a pointer to an array containing the hash to extend. If Extend + is FALSE, then this parameter holds a pointer to a pointer to a + caller-allocated array that will receive the result of the hash + computation. On output (regardless of the value of Extend), the + array will contain the result of the hash computation. + @retval EFI_SUCCESS Hash returned successfully. - @retval EFI_INVALID_PARAMETER Message or Hash is NULL + @retval EFI_INVALID_PARAMETER Message or Hash, HashAlgorithm is NULL or MessageSize is 0. + MessageSize is not an integer multiple of block size. @retval EFI_UNSUPPORTED The algorithm specified by HashAlgorithm is not supported by this - driver. Or extend is TRUE and the algorithm doesn't support extending the hash. + driver. Or, Extend is TRUE, and the algorithm doesn't support extending the hash. **/ typedef EFI_STATUS -(EFIAPI *EFI_HASH_HASH) ( +(EFIAPI *EFI_HASH_HASH)( 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 - ) -; + ); +/// +/// This protocol allows creating a hash of an arbitrary message digest +/// using one or more hash algorithms. +/// struct _EFI_HASH_PROTOCOL { EFI_HASH_GET_HASH_SIZE GetHashSize; EFI_HASH_HASH Hash; @@ -145,5 +169,7 @@ extern EFI_GUID gEfiHashAlgorithmSha256Guid; extern EFI_GUID gEfiHashAlgorithmSha384Guid; extern EFI_GUID gEfiHashAlgorithmSha512Guid; extern EFI_GUID gEfiHashAlgorithmMD5Guid; +extern EFI_GUID gEfiHashAlgorithmSha1NoPadGuid; +extern EFI_GUID gEfiHashAlgorithmSha256NoPadGuid; #endif