summaryrefslogtreecommitdiff
path: root/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaBasic.c
AgeCommit message (Collapse)AuthorFilesLines
2026-05-29CryptoPkg: Fix leaks and failure-path mutation of RSA-owned valuesMingjie Shen1-147/+309
RsaSetKey passed RSA-internal BIGNUMs (returned by RSA_get0_key / RSA_get0_factors / RSA_get0_crt_params as const) directly to BN_bin2bn, which mutates its destination in place. This violates the OpenSSL API contract and can leave RsaContext in a partially modified state on failure paths: BN_bin2bn has already overwritten one of n / e / d / p / q / dp / dq / qInv, the function then returns FALSE on a subsequent BN_dup or RSA_set0_* failure, and the caller has no indication that the RSA object was silently changed. The same paths also leaked temporary BIGNUMs allocated by BN_bin2bn or BN_new. This patch splits RsaSetKey into a small input-validating dispatcher plus three static helpers (RsaSetKeyNED, RsaSetKeyFactors, RsaSetKeyCrtParams), one per RSA_set0_* setter. Each helper: - Allocates a fresh BIGNUM for the slot being set via BN_bin2bn(BigNumber, BnSize, NULL); the NULL destination forces BN_bin2bn to allocate so no RSA-owned BIGNUM is mutated. - Reads the current RSA state via RSA_get0_* purely for inspection. - For slots not being set, passes NULL when RSA already has a value (preserves it) or supplies an empty BN_new() placeholder when RSA's slot is still NULL. - Atomically installs via RSA_set0_*, which takes ownership of every non-NULL argument on success and of none on failure. - Routes all exits through a single label that frees any locally held BIGNUM. Memory leaks in the early-return paths are fixed as a consequence. The previous BN_dup calls are no longer needed and are removed. Signed-off-by: Mingjie Shen <shen497@purdue.edu>
2025-05-25CryptoPkg: Fix memory leak in RsaSetKeyBaraneedharan Anbazhagan1-8/+32
Memory allocated by BN_new calls isn't deallocated within RsaSetKey. Signed-off-by: Anbazhagan Baraneedharan <anbazhagan@hp.com>
2021-12-07CryptoPkg: Apply uncrustify changesMichael Kubacki1-131/+140
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the CryptoPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2020-01-08CryptoPkg: Support for SHA384 & SHA512 RSA signing schemesPavana.K1-3/+11
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2389 Currently RSA signing scheme support is available for MD5, SHA-1 or SHA-256 algorithms.The fix is to extend this support for SHA384 and SHA512. Cc: Liming Gao <liming.gao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Bob Feng <bob.c.feng@intel.com> Signed-off-by: Pavana.K <pavana.k@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2019-04-09CryptoPkg: Replace BSD License with BSD+Patent LicenseMichael D Kinney1-7/+1
https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2018-06-28CryptoPkg: Clean up source filesLiming Gao1-2/+2
1. Do not use tab characters 2. No trailing white space in one line 3. All files must end with CRLF Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com>
2017-03-29CryptoPkg: Update PK Cipher Wrappers work with opaque objects.Qin Long1-100/+89
OpenSSL-1.1.xx makes most data structures opaque. This patch updates Public Key Cipher Wrapper implementations in BaseCryptLib to use the accessor APIs for opaque object access. The impacted interfaces includes RSA, DH, X509, PKCS7, etc. Cc: Ting Ye <ting.ye@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Gary Lin <glin@suse.com> Cc: Ronald Cron <ronald.cron@arm.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qin Long <qin.long@intel.com> Reviewed-by: Ting Ye <ting.ye@intel.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Gary Lin <glin@suse.com>
2016-11-07CryptoPkg: Fix typos in commentsGary Lin1-2/+2
- intialized -> initialized - componenet -> component - compoents -> components - FAlSE -> FALSE - responsiblity -> responsibility - validility -> validity - procudure -> procedure - pamameter -> parameter - randome -> random - buiild -> build Cc: Ting Ye <ting.ye@intel.com> Cc: Qin Long <qin.long@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Qin Long <qin.long@intel.com>
2015-10-29CryptoPkg/BaseCryptLib: Add missing OpenSSL includesDavid Woodhouse1-1/+2
OpenSSL 1.1 has cleaned up its include files a little, and it will now be necessary to directly include things like <openssl/bn.h> if we want to use them, rather than assuming they are included indirectly from other headers. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Qin Long <qin.long@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18698 6f19259b-4bc3-4df7-8a09-765794883524
2013-04-23The openssl API RSA_public_decrypt() and RSA_private_encrypt() are ↵sfu51-59/+28
deprecated, use RSA_sign(), RSA_verify() instead. Signed-off-by: Long Qin < qin.long@intel.com > Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Dong Guo <guo.dong@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14309 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-22Fix issue that RsaPkcs1Verify() may not work in PEI phase.tye11-5/+20
Signed-off-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Yao Jiewen <jiewen.yao@intel.com> Reviewed-by: Long Qin <qin.long@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13958 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-02Fix several issues in BaseCryptLib:tye11-2/+34
1. Add input length check for several APIs in BaseCryptLib. 2. Add return status check when calling OpensslLib functions 3. Adjust BaseCryptLib API to match description of wrapped OpensslLib API. 4. Update INF file to add missed RuntimeServicesTableLib. 5. Fix return status issue of APIs in CryptX509.c that incorrect when error occurs. Signed-off-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Dong Guo <guo.dong@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13579 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-27Fix some typo and coding style issues in BaseCryptLib instances.tye11-3/+3
Signed-off by: Ye Ting <ting.ye@intel.com> Reviewed-by: Fu, Siyuan <Siyuan.fu@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13564 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-18Add interfaces to several library instances of BaseCryptLib.tye11-0/+319
Signed-off-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Yao Jiewen <jiewen.yao@intel.com> Reviewed-by: Long Qin <qin.long@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13539 6f19259b-4bc3-4df7-8a09-765794883524