]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Hash2DxeCrypto/Hash2DxeCrypto.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / SecurityPkg / Hash2DxeCrypto / Hash2DxeCrypto.c
index 93e32739164d1165d3112b21a3b774211b93f51c..1498d5e9eb2986e592b1167d34a6852d5d28342f 100644 (file)
@@ -2,14 +2,8 @@
   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
@@ -35,7 +29,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 **/\r
 typedef\r
 UINTN\r
-(EFIAPI *EFI_HASH_GET_CONTEXT_SIZE) (\r
+(EFIAPI *EFI_HASH_GET_CONTEXT_SIZE)(\r
   VOID\r
   );\r
 \r
@@ -55,7 +49,7 @@ UINTN
 **/\r
 typedef\r
 BOOLEAN\r
-(EFIAPI *EFI_HASH_INIT) (\r
+(EFIAPI *EFI_HASH_INIT)(\r
   OUT  VOID  *HashContext\r
   );\r
 \r
@@ -81,7 +75,7 @@ BOOLEAN
 **/\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
@@ -93,7 +87,7 @@ BOOLEAN
   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
@@ -111,26 +105,24 @@ BOOLEAN
 **/\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
@@ -149,9 +141,9 @@ EFI_HASH_INFO  mHashInfo[] = {
 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
@@ -177,11 +169,11 @@ BaseCrypto2GetHashSize (
 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
@@ -203,8 +195,8 @@ BaseCrypto2Hash (
 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
@@ -225,9 +217,9 @@ BaseCrypto2HashInit (
 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
@@ -249,11 +241,11 @@ BaseCrypto2HashUpdate (
 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
@@ -270,16 +262,17 @@ EFI_HASH2_PROTOCOL mHash2Protocol = {
 **/\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
@@ -299,12 +292,12 @@ GetHashInfo (
 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
@@ -346,19 +339,19 @@ BaseCrypto2GetHashSize (
 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
@@ -374,13 +367,14 @@ BaseCrypto2Hash (
   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
@@ -389,6 +383,7 @@ BaseCrypto2Hash (
   if (CtxSize == 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
+\r
   HashCtx = AllocatePool (CtxSize);\r
   if (HashCtx == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -403,7 +398,7 @@ BaseCrypto2Hash (
   //\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
@@ -417,13 +412,14 @@ BaseCrypto2Hash (
     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
@@ -446,15 +442,15 @@ Done:
 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
@@ -472,7 +468,7 @@ BaseCrypto2HashInit (
   //\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
@@ -484,6 +480,7 @@ BaseCrypto2HashInit (
   if (CtxSize == 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
+\r
   HashCtx = AllocatePool (CtxSize);\r
   if (HashCtx == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -498,9 +495,9 @@ BaseCrypto2HashInit (
   //\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
@@ -523,15 +520,15 @@ BaseCrypto2HashInit (
 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
@@ -540,10 +537,11 @@ BaseCrypto2HashUpdate (
   //\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
@@ -576,14 +574,14 @@ BaseCrypto2HashUpdate (
 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
@@ -592,11 +590,13 @@ BaseCrypto2HashFinal (
   //\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
@@ -607,8 +607,8 @@ BaseCrypto2HashFinal (
   //\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