]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/Library/FmpAuthenticationLibRsa2048Sha256/FmpAuthenticationLibRsa2048Sha256.c
SecurityPkg FmpAuthenticationLibRsa2048Sha256: Remove PCD reference
[mirror_edk2.git] / SecurityPkg / Library / FmpAuthenticationLibRsa2048Sha256 / FmpAuthenticationLibRsa2048Sha256.c
index d113d58103c13c1d9b7c81e032096b712dd54e63..038e124477824e857e965128ba0980881d066c5e 100644 (file)
@@ -10,7 +10,7 @@
   FmpAuthenticatedHandlerRsa2048Sha256(), AuthenticateFmpImage() will receive\r
   untrusted input and do basic validation.\r
 \r
-  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -133,7 +133,7 @@ FmpAuthenticatedHandlerRsa2048Sha256 (
   }\r
 \r
   //\r
-  // Fail if the PublicKey is not one of the public keys in PcdRsa2048Sha256PublicKeyBuffer\r
+  // Fail if the PublicKey is not one of the public keys in the input PublicKeyData.\r
   //\r
   PublicKey = (VOID *)PublicKeyData;\r
   PublicKeyBufferSize = PublicKeyDataLength;\r
@@ -306,6 +306,11 @@ AuthenticateFmpImage (
     return RETURN_UNSUPPORTED;\r
   }\r
 \r
+  if ((PublicKeyDataLength % SHA256_DIGEST_SIZE) != 0) {\r
+    DEBUG ((DEBUG_ERROR, "PublicKeyDataLength is not multiple SHA256 size\n"));\r
+    return RETURN_UNSUPPORTED;\r
+  }\r
+\r
   if (ImageSize < sizeof(EFI_FIRMWARE_IMAGE_AUTHENTICATION)) {\r
     DEBUG((DEBUG_ERROR, "AuthenticateFmpImage - ImageSize too small\n"));\r
     return RETURN_INVALID_PARAMETER;\r
@@ -314,7 +319,7 @@ AuthenticateFmpImage (
     DEBUG((DEBUG_ERROR, "AuthenticateFmpImage - dwLength too small\n"));\r
     return RETURN_INVALID_PARAMETER;\r
   }\r
-  if (Image->AuthInfo.Hdr.dwLength > MAX_UINTN - sizeof(UINT64)) {\r
+  if ((UINTN) Image->AuthInfo.Hdr.dwLength > MAX_UINTN - sizeof(UINT64)) {\r
     DEBUG((DEBUG_ERROR, "AuthenticateFmpImage - dwLength too big\n"));\r
     return RETURN_INVALID_PARAMETER;\r
   }\r