This module implements Hash2 Protocol.\r
\r
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials are licensed and made available under\r
-the terms and conditions of the BSD License that accompanies this distribution.\r
-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
+Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
**/\r
typedef\r
UINTN\r
-(EFIAPI *EFI_HASH_GET_CONTEXT_SIZE) (\r
+(EFIAPI *EFI_HASH_GET_CONTEXT_SIZE)(\r
VOID\r
);\r
\r
**/\r
typedef\r
BOOLEAN\r
-(EFIAPI *EFI_HASH_INIT) (\r
+(EFIAPI *EFI_HASH_INIT)(\r
OUT VOID *HashContext\r
);\r
\r
**/\r
typedef\r
BOOLEAN\r
-(EFIAPI *EFI_HASH_UPDATE) (\r
+(EFIAPI *EFI_HASH_UPDATE)(\r
IN OUT VOID *HashContext,\r
IN CONST VOID *Data,\r
IN UINTN DataSize\r
This function completes hash computation and retrieves the digest value into\r
the specified memory. After this function has been called, the Hash context cannot\r
be used again.\r
- Hash context should be already correctly intialized by HashInit(), and should not be\r
+ Hash context should be already correctly initialized by HashInit(), and should not be\r
finalized by HashFinal(). Behavior with invalid Hash context is undefined.\r
\r
If HashContext is NULL, then return FALSE.\r
**/\r
typedef\r
BOOLEAN\r
-(EFIAPI *EFI_HASH_FINAL) (\r
+(EFIAPI *EFI_HASH_FINAL)(\r
IN OUT VOID *HashContext,\r
OUT UINT8 *HashValue\r
);\r
\r
typedef struct {\r
- EFI_GUID *Guid;\r
- UINT32 HashSize;\r
- EFI_HASH_GET_CONTEXT_SIZE GetContextSize;\r
- EFI_HASH_INIT Init;\r
- EFI_HASH_UPDATE Update;\r
- EFI_HASH_FINAL Final;\r
+ EFI_GUID *Guid;\r
+ UINT32 HashSize;\r
+ EFI_HASH_GET_CONTEXT_SIZE GetContextSize;\r
+ EFI_HASH_INIT Init;\r
+ EFI_HASH_UPDATE Update;\r
+ EFI_HASH_FINAL Final;\r
} EFI_HASH_INFO;\r
\r
EFI_HASH_INFO mHashInfo[] = {\r
- {&gEfiHashAlgorithmMD5Guid, sizeof(EFI_MD5_HASH2), Md5GetContextSize, Md5Init, Md5Update, Md5Final },\r
- {&gEfiHashAlgorithmSha1Guid, sizeof(EFI_SHA1_HASH2), Sha1GetContextSize, Sha1Init, Sha1Update, Sha1Final },\r
- {&gEfiHashAlgorithmSha256Guid, sizeof(EFI_SHA256_HASH2), Sha256GetContextSize, Sha256Init, Sha256Update, Sha256Final },\r
- {&gEfiHashAlgorithmSha384Guid, sizeof(EFI_SHA384_HASH2), Sha384GetContextSize, Sha384Init, Sha384Update, Sha384Final },\r
- {&gEfiHashAlgorithmSha512Guid, sizeof(EFI_SHA512_HASH2), Sha512GetContextSize, Sha512Init, Sha512Update, Sha512Final },\r
+ { &gEfiHashAlgorithmSha256Guid, sizeof (EFI_SHA256_HASH2), Sha256GetContextSize, Sha256Init, Sha256Update, Sha256Final },\r
+ { &gEfiHashAlgorithmSha384Guid, sizeof (EFI_SHA384_HASH2), Sha384GetContextSize, Sha384Init, Sha384Update, Sha384Final },\r
+ { &gEfiHashAlgorithmSha512Guid, sizeof (EFI_SHA512_HASH2), Sha512GetContextSize, Sha512Init, Sha512Update, Sha512Final },\r
};\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2GetHashSize (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST EFI_GUID *HashAlgorithm,\r
- OUT UINTN *HashSize\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *HashAlgorithm,\r
+ OUT UINTN *HashSize\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2Hash (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST EFI_GUID *HashAlgorithm,\r
- IN CONST UINT8 *Message,\r
- IN UINTN MessageSize,\r
- IN OUT EFI_HASH2_OUTPUT *Hash\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *HashAlgorithm,\r
+ IN CONST UINT8 *Message,\r
+ IN UINTN MessageSize,\r
+ IN OUT EFI_HASH2_OUTPUT *Hash\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2HashInit (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST EFI_GUID *HashAlgorithm\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *HashAlgorithm\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2HashUpdate (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST UINT8 *Message,\r
- IN UINTN MessageSize\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST UINT8 *Message,\r
+ IN UINTN MessageSize\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2HashFinal (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN OUT EFI_HASH2_OUTPUT *Hash\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN OUT EFI_HASH2_OUTPUT *Hash\r
);\r
\r
-EFI_HASH2_PROTOCOL mHash2Protocol = {\r
+EFI_HASH2_PROTOCOL mHash2Protocol = {\r
BaseCrypto2GetHashSize,\r
BaseCrypto2Hash,\r
BaseCrypto2HashInit,\r
**/\r
EFI_HASH_INFO *\r
GetHashInfo (\r
- IN CONST EFI_GUID *HashAlgorithm\r
+ IN CONST EFI_GUID *HashAlgorithm\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
- for (Index = 0; Index < sizeof(mHashInfo)/sizeof(mHashInfo[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mHashInfo)/sizeof (mHashInfo[0]); Index++) {\r
if (CompareGuid (HashAlgorithm, mHashInfo[Index].Guid)) {\r
return &mHashInfo[Index];\r
}\r
}\r
+\r
return NULL;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2GetHashSize (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST EFI_GUID *HashAlgorithm,\r
- OUT UINTN *HashSize\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *HashAlgorithm,\r
+ OUT UINTN *HashSize\r
)\r
{\r
- EFI_HASH_INFO *HashInfo;\r
+ EFI_HASH_INFO *HashInfo;\r
\r
if ((This == NULL) || (HashSize == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2Hash (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST EFI_GUID *HashAlgorithm,\r
- IN CONST UINT8 *Message,\r
- IN UINTN MessageSize,\r
- IN OUT EFI_HASH2_OUTPUT *Hash\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *HashAlgorithm,\r
+ IN CONST UINT8 *Message,\r
+ IN UINTN MessageSize,\r
+ IN OUT EFI_HASH2_OUTPUT *Hash\r
)\r
{\r
- EFI_HASH_INFO *HashInfo;\r
- VOID *HashCtx;\r
- UINTN CtxSize;\r
- BOOLEAN Ret;\r
- EFI_STATUS Status;\r
- HASH2_INSTANCE_DATA *Instance;\r
+ EFI_HASH_INFO *HashInfo;\r
+ VOID *HashCtx;\r
+ UINTN CtxSize;\r
+ BOOLEAN Ret;\r
+ EFI_STATUS Status;\r
+ HASH2_INSTANCE_DATA *Instance;\r
\r
Status = EFI_SUCCESS;\r
\r
if (HashInfo == NULL) {\r
return EFI_UNSUPPORTED;\r
}\r
- \r
- Instance = HASH2_INSTANCE_DATA_FROM_THIS(This);\r
+\r
+ Instance = HASH2_INSTANCE_DATA_FROM_THIS (This);\r
if (Instance->HashContext != NULL) {\r
FreePool (Instance->HashContext);\r
}\r
+\r
Instance->HashInfoContext = NULL;\r
- Instance->HashContext = NULL;\r
+ Instance->HashContext = NULL;\r
\r
//\r
// Start hash sequence\r
if (CtxSize == 0) {\r
return EFI_UNSUPPORTED;\r
}\r
+\r
HashCtx = AllocatePool (CtxSize);\r
if (HashCtx == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
//\r
// Setup the context\r
//\r
- Instance->HashContext = HashCtx;\r
+ Instance->HashContext = HashCtx;\r
Instance->HashInfoContext = HashInfo;\r
\r
Ret = HashInfo->Update (HashCtx, Message, MessageSize);\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Done;\r
}\r
+\r
Done:\r
//\r
// Cleanup the context\r
//\r
FreePool (HashCtx);\r
Instance->HashInfoContext = NULL;\r
- Instance->HashContext = NULL;\r
+ Instance->HashContext = NULL;\r
return Status;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2HashInit (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST EFI_GUID *HashAlgorithm\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST EFI_GUID *HashAlgorithm\r
)\r
{\r
- EFI_HASH_INFO *HashInfo;\r
- VOID *HashCtx;\r
- UINTN CtxSize;\r
- BOOLEAN Ret;\r
- HASH2_INSTANCE_DATA *Instance;\r
+ EFI_HASH_INFO *HashInfo;\r
+ VOID *HashCtx;\r
+ UINTN CtxSize;\r
+ BOOLEAN Ret;\r
+ HASH2_INSTANCE_DATA *Instance;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
//\r
// Consistency Check\r
//\r
- Instance = HASH2_INSTANCE_DATA_FROM_THIS(This);\r
+ Instance = HASH2_INSTANCE_DATA_FROM_THIS (This);\r
if ((Instance->HashContext != NULL) || (Instance->HashInfoContext != NULL)) {\r
return EFI_ALREADY_STARTED;\r
}\r
if (CtxSize == 0) {\r
return EFI_UNSUPPORTED;\r
}\r
+\r
HashCtx = AllocatePool (CtxSize);\r
if (HashCtx == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
//\r
// Setup the context\r
//\r
- Instance->HashContext = HashCtx;\r
+ Instance->HashContext = HashCtx;\r
Instance->HashInfoContext = HashInfo;\r
- Instance->Updated = FALSE;\r
+ Instance->Updated = FALSE;\r
\r
return EFI_SUCCESS;\r
}\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2HashUpdate (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN CONST UINT8 *Message,\r
- IN UINTN MessageSize\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN CONST UINT8 *Message,\r
+ IN UINTN MessageSize\r
)\r
{\r
- EFI_HASH_INFO *HashInfo;\r
- VOID *HashCtx;\r
- BOOLEAN Ret;\r
- HASH2_INSTANCE_DATA *Instance;\r
+ EFI_HASH_INFO *HashInfo;\r
+ VOID *HashCtx;\r
+ BOOLEAN Ret;\r
+ HASH2_INSTANCE_DATA *Instance;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
//\r
// Consistency Check\r
//\r
- Instance = HASH2_INSTANCE_DATA_FROM_THIS(This);\r
+ Instance = HASH2_INSTANCE_DATA_FROM_THIS (This);\r
if ((Instance->HashContext == NULL) || (Instance->HashInfoContext == NULL)) {\r
return EFI_NOT_READY;\r
}\r
+\r
HashInfo = Instance->HashInfoContext;\r
HashCtx = Instance->HashContext;\r
\r
EFI_STATUS\r
EFIAPI\r
BaseCrypto2HashFinal (\r
- IN CONST EFI_HASH2_PROTOCOL *This,\r
- IN OUT EFI_HASH2_OUTPUT *Hash\r
+ IN CONST EFI_HASH2_PROTOCOL *This,\r
+ IN OUT EFI_HASH2_OUTPUT *Hash\r
)\r
{\r
- EFI_HASH_INFO *HashInfo;\r
- VOID *HashCtx;\r
- BOOLEAN Ret;\r
- HASH2_INSTANCE_DATA *Instance;\r
+ EFI_HASH_INFO *HashInfo;\r
+ VOID *HashCtx;\r
+ BOOLEAN Ret;\r
+ HASH2_INSTANCE_DATA *Instance;\r
\r
if ((This == NULL) || (Hash == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
//\r
// Consistency Check\r
//\r
- Instance = HASH2_INSTANCE_DATA_FROM_THIS(This);\r
+ Instance = HASH2_INSTANCE_DATA_FROM_THIS (This);\r
if ((Instance->HashContext == NULL) || (Instance->HashInfoContext == NULL) ||\r
- (!Instance->Updated)) {\r
+ (!Instance->Updated))\r
+ {\r
return EFI_NOT_READY;\r
}\r
+\r
HashInfo = Instance->HashInfoContext;\r
HashCtx = Instance->HashContext;\r
\r
//\r
FreePool (HashCtx);\r
Instance->HashInfoContext = NULL;\r
- Instance->HashContext = NULL;\r
- Instance->Updated = FALSE;\r
+ Instance->HashContext = NULL;\r
+ Instance->Updated = FALSE;\r
\r
if (!Ret) {\r
return EFI_OUT_OF_RESOURCES;\r