X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FInclude%2FProtocol%2FHash.h;h=0bee694a5b10d2b7b1b138631c86e4aff4f7e28f;hp=3a30c62afd56aa00afb870ad3c71c92c88c4f113;hb=04789f89d5c762d3dc2274bd26a42b7badd46634;hpb=4ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086 diff --git a/MdePkg/Include/Protocol/Hash.h b/MdePkg/Include/Protocol/Hash.h index 3a30c62afd..0bee694a5b 100644 --- a/MdePkg/Include/Protocol/Hash.h +++ b/MdePkg/Include/Protocol/Hash.h @@ -2,25 +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 - 2008, 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. +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 } \ } @@ -60,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]; @@ -81,12 +100,12 @@ 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. @@ -97,25 +116,29 @@ EFI_STATUS 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 @@ -127,21 +150,12 @@ EFI_STATUS IN CONST UINT8 *Message, IN UINT64 MessageSize, IN OUT EFI_HASH_OUTPUT *Hash - ) -; - -/** - @par Protocol Description: - This protocol allows creating a hash of an arbitrary message digest - using one or more hash algorithms. - - @param GetHashSize - Return the size of a specific type of resulting hash. - - @param Hash - Create a hash for the specified message. + ); -**/ +/// +/// 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; @@ -155,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