CryptoPkg/BaseCryptLib.h: Add PKCS1v2 (RSAES-OAEP) support.
authorBret Barkelew <>
Mon, 25 Mar 2019 04:01:12 +0000 (12:01 +0800)
committerJian J Wang <>
Thu, 18 Apr 2019 05:11:21 +0000 (13:11 +0800)

Add prototype of new API Pkcs1v2Encrypt in header file to
support PKCS1v2 (RSAES-OAEP) encrypt.

Signed-off-by: Zhichao Gao <>
Cc: Ting Ye <>
Cc: Gang Wei <>
Cc: Wang Jian J <>
Cc: Liming Gao <>
Cc: Sean Brogan <>
Cc: Michael Turner <>
Cc: Bret Barkelew <>
Reviewed-by: Jian J Wang <>

index f9191f6..84374b2 100644 (file)
@@ -4,7 +4,7 @@
   primitives (Hash Serials, HMAC, RSA, Diffie-Hellman, etc) for UEFI security\r
   functionality enabling.\r
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
@@ -2405,6 +2405,48 @@ Pkcs5HashPassword (
   OUT UINT8        *OutKey\r
+  Encrypts a blob using PKCS1v2 (RSAES-OAEP) schema. On success, will return the\r
+  encrypted message in a newly allocated buffer.\r
+  Things that can cause a failure include:\r
+  - X509 key size does not match any known key size.\r
+  - Fail to parse X509 certificate.\r
+  - Fail to allocate an intermediate buffer.\r
+  - Null pointer provided for a non-optional parameter.\r
+  - Data size is too large for the provided key size (max size is a function of key size\r
+    and hash digest size).\r
+  @param[in]  PublicKey           A pointer to the DER-encoded X509 certificate that\r
+                                  will be used to encrypt the data.\r
+  @param[in]  PublicKeySize       Size of the X509 cert buffer.\r
+  @param[in]  InData              Data to be encrypted.\r
+  @param[in]  InDataSize          Size of the data buffer.\r
+  @param[in]  PrngSeed            [Optional] If provided, a pointer to a random seed buffer\r
+                                  to be used when initializing the PRNG. NULL otherwise.\r
+  @param[in]  PrngSeedSize        [Optional] If provided, size of the random seed buffer.\r
+                                  0 otherwise.\r
+  @param[out] EncryptedData       Pointer to an allocated buffer containing the encrypted\r
+                                  message.\r
+  @param[out] EncryptedDataSize   Size of the encrypted message buffer.\r
+  @retval     TRUE                Encryption was successful.\r
+  @retval     FALSE               Encryption failed.\r
+Pkcs1v2Encrypt (\r
+  IN   CONST UINT8  *PublicKey,\r
+  IN   UINTN        PublicKeySize,\r
+  IN   UINT8        *InData,\r
+  IN   UINTN        InDataSize,\r
+  IN   CONST UINT8  *PrngSeed,  OPTIONAL\r
+  IN   UINTN        PrngSeedSize,  OPTIONAL\r
+  OUT  UINT8        **EncryptedData,\r
+  OUT  UINTN        *EncryptedDataSize\r
+  );\r
   The 3rd parameter of Pkcs7GetSigners will return all embedded\r
   X.509 certificate in one given PKCS7 signature. The format is:\r