CryptoPkg/BaseCryptLib.h: Add PKCS1v2 (RSAES-OAEP) support.
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1403 Add prototype of new API Pkcs1v2Encrypt in header file to support PKCS1v2 (RSAES-OAEP) encrypt. Signed-off-by: Zhichao Gao <zhichao.gao@intel.com> Cc: Ting Ye <ting.ye@intel.com> Cc: Gang Wei <gang.wei@intel.com> Cc: Wang Jian J <jian.j.wang@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Michael Turner <Michael.Turner@microsoft.com> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
This commit is contained in:
		
				
					committed by
					
						 Jian J Wang
						Jian J Wang
					
				
			
			
				
	
			
			
			
						parent
						
							23c3178c4d
						
					
				
				
					commit
					aed90beee5
				
			| @@ -4,7 +4,7 @@ | ||||
|   primitives (Hash Serials, HMAC, RSA, Diffie-Hellman, etc) for UEFI security | ||||
|   functionality enabling. | ||||
|  | ||||
| Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> | ||||
| Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR> | ||||
| SPDX-License-Identifier: BSD-2-Clause-Patent | ||||
|  | ||||
| **/ | ||||
| @@ -2405,6 +2405,48 @@ Pkcs5HashPassword ( | ||||
|   OUT UINT8        *OutKey | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|   Encrypts a blob using PKCS1v2 (RSAES-OAEP) schema. On success, will return the | ||||
|   encrypted message in a newly allocated buffer. | ||||
|  | ||||
|   Things that can cause a failure include: | ||||
|   - X509 key size does not match any known key size. | ||||
|   - Fail to parse X509 certificate. | ||||
|   - Fail to allocate an intermediate buffer. | ||||
|   - Null pointer provided for a non-optional parameter. | ||||
|   - Data size is too large for the provided key size (max size is a function of key size | ||||
|     and hash digest size). | ||||
|  | ||||
|   @param[in]  PublicKey           A pointer to the DER-encoded X509 certificate that | ||||
|                                   will be used to encrypt the data. | ||||
|   @param[in]  PublicKeySize       Size of the X509 cert buffer. | ||||
|   @param[in]  InData              Data to be encrypted. | ||||
|   @param[in]  InDataSize          Size of the data buffer. | ||||
|   @param[in]  PrngSeed            [Optional] If provided, a pointer to a random seed buffer | ||||
|                                   to be used when initializing the PRNG. NULL otherwise. | ||||
|   @param[in]  PrngSeedSize        [Optional] If provided, size of the random seed buffer. | ||||
|                                   0 otherwise. | ||||
|   @param[out] EncryptedData       Pointer to an allocated buffer containing the encrypted | ||||
|                                   message. | ||||
|   @param[out] EncryptedDataSize   Size of the encrypted message buffer. | ||||
|  | ||||
|   @retval     TRUE                Encryption was successful. | ||||
|   @retval     FALSE               Encryption failed. | ||||
|  | ||||
| **/ | ||||
| BOOLEAN | ||||
| EFIAPI | ||||
| Pkcs1v2Encrypt ( | ||||
|   IN   CONST UINT8  *PublicKey, | ||||
|   IN   UINTN        PublicKeySize, | ||||
|   IN   UINT8        *InData, | ||||
|   IN   UINTN        InDataSize, | ||||
|   IN   CONST UINT8  *PrngSeed,  OPTIONAL | ||||
|   IN   UINTN        PrngSeedSize,  OPTIONAL | ||||
|   OUT  UINT8        **EncryptedData, | ||||
|   OUT  UINTN        *EncryptedDataSize | ||||
|   ); | ||||
|  | ||||
| /** | ||||
|   The 3rd parameter of Pkcs7GetSigners will return all embedded | ||||
|   X.509 certificate in one given PKCS7 signature. The format is: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user