From d33896d88d9d32d516129e92e25b80f8fddc6f7b Mon Sep 17 00:00:00 2001 From: Guo Mang Date: Wed, 25 Apr 2018 17:23:25 +0800 Subject: Remove Core Package Remove Core Package since we will use EDK2 code from edk2 repository: https://github.com/tianocore/edk2 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Guo Mang --- Core/CryptoPkg/.gitignore | 1 - .../Application/Cryptest/AuthenticodeVerify.c | 1050 -------- .../Application/Cryptest/BlockCipherVerify.c | 473 ---- Core/CryptoPkg/Application/Cryptest/Cryptest.c | 97 - Core/CryptoPkg/Application/Cryptest/Cryptest.h | 159 -- Core/CryptoPkg/Application/Cryptest/Cryptest.inf | 62 - Core/CryptoPkg/Application/Cryptest/Cryptest.uni | 22 - .../Application/Cryptest/CryptestExtra.uni | 20 - Core/CryptoPkg/Application/Cryptest/DhVerify.c | 125 - Core/CryptoPkg/Application/Cryptest/HashVerify.c | 410 --- Core/CryptoPkg/Application/Cryptest/HmacVerify.c | 212 -- .../Application/Cryptest/Pkcs5Pbkdf2Verify.c | 94 - Core/CryptoPkg/Application/Cryptest/RandVerify.c | 69 - Core/CryptoPkg/Application/Cryptest/RsaVerify.c | 406 --- Core/CryptoPkg/Application/Cryptest/RsaVerify2.c | 395 --- Core/CryptoPkg/Application/Cryptest/TSVerify.c | 364 --- Core/CryptoPkg/Contributions.txt | 218 -- Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.c | 248 -- Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.h | 186 -- Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.inf | 54 - Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni | 22 - .../CryptRuntimeDxe/CryptRuntimeDxeExtra.uni | 20 - Core/CryptoPkg/CryptoPkg.dec | 47 - Core/CryptoPkg/CryptoPkg.dsc | 139 - Core/CryptoPkg/CryptoPkg.uni | 25 - Core/CryptoPkg/CryptoPkgExtra.uni | 20 - Core/CryptoPkg/Include/Library/BaseCryptLib.h | 2804 -------------------- Core/CryptoPkg/Include/Library/TlsLib.h | 788 ------ Core/CryptoPkg/Include/Protocol/RuntimeCrypt.h | 204 -- .../Library/BaseCryptLib/BaseCryptLib.inf | 106 - .../Library/BaseCryptLib/BaseCryptLib.uni | 25 - .../Library/BaseCryptLib/Cipher/CryptAes.c | 323 --- .../Library/BaseCryptLib/Cipher/CryptAesNull.c | 165 -- .../Library/BaseCryptLib/Cipher/CryptArc4.c | 211 -- .../Library/BaseCryptLib/Cipher/CryptArc4Null.c | 130 - .../Library/BaseCryptLib/Cipher/CryptTdes.c | 370 --- .../Library/BaseCryptLib/Cipher/CryptTdesNull.c | 166 -- .../CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4.c | 229 -- .../Library/BaseCryptLib/Hash/CryptMd4Null.c | 149 -- .../CryptoPkg/Library/BaseCryptLib/Hash/CryptMd5.c | 231 -- .../Library/BaseCryptLib/Hash/CryptSha1.c | 230 -- .../Library/BaseCryptLib/Hash/CryptSha256.c | 229 -- .../Library/BaseCryptLib/Hash/CryptSha512.c | 446 ---- .../Library/BaseCryptLib/Hash/CryptSha512Null.c | 281 -- .../Library/BaseCryptLib/Hmac/CryptHmacMd5.c | 256 -- .../Library/BaseCryptLib/Hmac/CryptHmacMd5Null.c | 165 -- .../Library/BaseCryptLib/Hmac/CryptHmacSha1.c | 256 -- .../Library/BaseCryptLib/Hmac/CryptHmacSha1Null.c | 165 -- .../Library/BaseCryptLib/Hmac/CryptHmacSha256.c | 256 -- .../BaseCryptLib/Hmac/CryptHmacSha256Null.c | 165 -- .../Library/BaseCryptLib/InternalCryptLib.h | 36 - .../CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf | 100 - .../CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni | 31 - Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPem.c | 135 - .../Library/BaseCryptLib/Pem/CryptPemNull.c | 44 - .../Library/BaseCryptLib/Pk/CryptAuthenticode.c | 198 -- .../BaseCryptLib/Pk/CryptAuthenticodeNull.c | 51 - Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDh.c | 312 --- .../Library/BaseCryptLib/Pk/CryptDhNull.c | 156 -- .../Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2.c | 101 - .../Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2Null.c | 56 - .../Library/BaseCryptLib/Pk/CryptPkcs7Sign.c | 199 -- .../Library/BaseCryptLib/Pk/CryptPkcs7SignNull.c | 59 - .../Library/BaseCryptLib/Pk/CryptPkcs7Verify.c | 1022 ------- .../Library/BaseCryptLib/Pk/CryptPkcs7VerifyNull.c | 163 -- .../Library/BaseCryptLib/Pk/CryptRsaBasic.c | 325 --- .../Library/BaseCryptLib/Pk/CryptRsaExt.c | 362 --- .../Library/BaseCryptLib/Pk/CryptRsaExtNull.c | 125 - Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTs.c | 665 ----- .../Library/BaseCryptLib/Pk/CryptTsNull.c | 48 - Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509.c | 587 ---- .../Library/BaseCryptLib/Pk/CryptX509Null.c | 206 -- .../Library/BaseCryptLib/Rand/CryptRand.c | 110 - .../Library/BaseCryptLib/Rand/CryptRandItc.c | 118 - .../Library/BaseCryptLib/Rand/CryptRandNull.c | 63 - .../Library/BaseCryptLib/Rand/CryptRandTsc.c | 118 - .../Library/BaseCryptLib/RuntimeCryptLib.inf | 112 - .../Library/BaseCryptLib/RuntimeCryptLib.uni | 30 - .../CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf | 107 - .../CryptoPkg/Library/BaseCryptLib/SmmCryptLib.uni | 30 - .../BaseCryptLib/SysCall/BaseMemAllocation.c | 49 - .../BaseCryptLib/SysCall/ConstantTimeClock.c | 43 - .../Library/BaseCryptLib/SysCall/CrtWrapper.c | 461 ---- .../BaseCryptLib/SysCall/RuntimeMemAllocation.c | 449 ---- .../Library/BaseCryptLib/SysCall/TimerWrapper.c | 170 -- .../BaseCryptLibRuntimeCryptProtocol.inf | 76 - .../BaseCryptLibRuntimeCryptProtocol.uni | 29 - .../Cipher/CryptAesNull.c | 165 -- .../Cipher/CryptArc4Null.c | 130 - .../Cipher/CryptTdesNull.c | 166 -- .../Hash/CryptMd4Null.c | 124 - .../Hash/CryptMd5Null.c | 125 - .../Hash/CryptSha1Null.c | 125 - .../Hmac/CryptHmacMd5Null.c | 127 - .../Hmac/CryptHmacSha1Null.c | 127 - .../InternalCryptLib.h | 23 - .../Pem/CryptPemNull.c | 44 - .../Pk/CryptAuthenticodeNull.c | 51 - .../Pk/CryptDhNull.c | 156 -- .../Pk/CryptPkcs7SignNull.c | 59 - .../Pk/CryptPkcs7VerifyNull.c | 163 -- .../Pk/CryptRsaExtNull.c | 125 - .../Pk/CryptX509Null.c | 206 -- .../Rand/CryptRandNull.c | 63 - .../RuntimeDxeIpfCryptLib.c | 419 --- Core/CryptoPkg/Library/Include/CrtLibSupport.h | 194 -- Core/CryptoPkg/Library/Include/assert.h | 15 - Core/CryptoPkg/Library/Include/ctype.h | 15 - Core/CryptoPkg/Library/Include/errno.h | 15 - Core/CryptoPkg/Library/Include/internal/dso_conf.h | 0 Core/CryptoPkg/Library/Include/limits.h | 15 - Core/CryptoPkg/Library/Include/memory.h | 15 - .../Library/Include/openssl/opensslconf.h | 308 --- Core/CryptoPkg/Library/Include/stdarg.h | 15 - Core/CryptoPkg/Library/Include/stddef.h | 15 - Core/CryptoPkg/Library/Include/stdio.h | 15 - Core/CryptoPkg/Library/Include/stdlib.h | 15 - Core/CryptoPkg/Library/Include/string.h | 15 - Core/CryptoPkg/Library/Include/strings.h | 15 - Core/CryptoPkg/Library/Include/sys/time.h | 15 - Core/CryptoPkg/Library/Include/sys/types.h | 15 - Core/CryptoPkg/Library/Include/syslog.h | 15 - Core/CryptoPkg/Library/Include/time.h | 15 - Core/CryptoPkg/Library/Include/unistd.h | 15 - .../Library/IntrinsicLib/BaseIntrinsicLib.uni | 22 - Core/CryptoPkg/Library/IntrinsicLib/CopyMem.c | 23 - .../Library/IntrinsicLib/Ia32/MathLShiftS64.S | 62 - .../Library/IntrinsicLib/Ia32/MathLShiftS64.c | 54 - .../Library/IntrinsicLib/Ia32/MathLShiftS64.nasm | 48 - .../Library/IntrinsicLib/Ia32/MathRShiftU64.S | 66 - .../Library/IntrinsicLib/Ia32/MathRShiftU64.c | 57 - .../Library/IntrinsicLib/Ia32/MathRShiftU64.nasm | 49 - .../Library/IntrinsicLib/IntrinsicLib.inf | 83 - .../Library/IntrinsicLib/MemoryIntrinsics.c | 60 - .../CryptoPkg/Library/OpensslLib/OpenSSL-HOWTO.txt | 53 - Core/CryptoPkg/Library/OpensslLib/OpensslLib.inf | 582 ---- Core/CryptoPkg/Library/OpensslLib/OpensslLib.uni | 22 - .../Library/OpensslLib/OpensslLibCrypto.inf | 543 ---- .../Library/OpensslLib/OpensslLibCrypto.uni | 22 - Core/CryptoPkg/Library/OpensslLib/buildinf.h | 2 - Core/CryptoPkg/Library/OpensslLib/process_files.pl | 224 -- Core/CryptoPkg/Library/TlsLib/InternalTlsLib.h | 43 - Core/CryptoPkg/Library/TlsLib/TlsConfig.c | 1060 -------- Core/CryptoPkg/Library/TlsLib/TlsInit.c | 269 -- Core/CryptoPkg/Library/TlsLib/TlsLib.inf | 57 - Core/CryptoPkg/Library/TlsLib/TlsLib.uni | 19 - Core/CryptoPkg/Library/TlsLib/TlsProcess.c | 463 ---- Core/CryptoPkg/License.txt | 25 - 148 files changed, 27282 deletions(-) delete mode 100644 Core/CryptoPkg/.gitignore delete mode 100644 Core/CryptoPkg/Application/Cryptest/AuthenticodeVerify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/BlockCipherVerify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/Cryptest.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/Cryptest.h delete mode 100644 Core/CryptoPkg/Application/Cryptest/Cryptest.inf delete mode 100644 Core/CryptoPkg/Application/Cryptest/Cryptest.uni delete mode 100644 Core/CryptoPkg/Application/Cryptest/CryptestExtra.uni delete mode 100644 Core/CryptoPkg/Application/Cryptest/DhVerify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/HashVerify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/HmacVerify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/Pkcs5Pbkdf2Verify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/RandVerify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/RsaVerify.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/RsaVerify2.c delete mode 100644 Core/CryptoPkg/Application/Cryptest/TSVerify.c delete mode 100644 Core/CryptoPkg/Contributions.txt delete mode 100644 Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.c delete mode 100644 Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.h delete mode 100644 Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.inf delete mode 100644 Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni delete mode 100644 Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxeExtra.uni delete mode 100644 Core/CryptoPkg/CryptoPkg.dec delete mode 100644 Core/CryptoPkg/CryptoPkg.dsc delete mode 100644 Core/CryptoPkg/CryptoPkg.uni delete mode 100644 Core/CryptoPkg/CryptoPkgExtra.uni delete mode 100644 Core/CryptoPkg/Include/Library/BaseCryptLib.h delete mode 100644 Core/CryptoPkg/Include/Library/TlsLib.h delete mode 100644 Core/CryptoPkg/Include/Protocol/RuntimeCrypt.h delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAes.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAesNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdes.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdesNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd5.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha1.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha256.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/InternalCryptLib.h delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPem.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPemNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticode.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticodeNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDh.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDhNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Sign.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7SignNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaBasic.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExt.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExtNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTs.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTsNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRand.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandItc.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandTsc.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.uni delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.uni delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/SysCall/BaseMemAllocation.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.inf delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.uni delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptAesNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptArc4Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptTdesNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd4Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd5Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptSha1Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacMd5Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacSha1Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/InternalCryptLib.h delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pem/CryptPemNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptAuthenticodeNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptDhNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7SignNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7VerifyNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptRsaExtNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptX509Null.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Rand/CryptRandNull.c delete mode 100644 Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/RuntimeDxeIpfCryptLib.c delete mode 100644 Core/CryptoPkg/Library/Include/CrtLibSupport.h delete mode 100644 Core/CryptoPkg/Library/Include/assert.h delete mode 100644 Core/CryptoPkg/Library/Include/ctype.h delete mode 100644 Core/CryptoPkg/Library/Include/errno.h delete mode 100644 Core/CryptoPkg/Library/Include/internal/dso_conf.h delete mode 100644 Core/CryptoPkg/Library/Include/limits.h delete mode 100644 Core/CryptoPkg/Library/Include/memory.h delete mode 100644 Core/CryptoPkg/Library/Include/openssl/opensslconf.h delete mode 100644 Core/CryptoPkg/Library/Include/stdarg.h delete mode 100644 Core/CryptoPkg/Library/Include/stddef.h delete mode 100644 Core/CryptoPkg/Library/Include/stdio.h delete mode 100644 Core/CryptoPkg/Library/Include/stdlib.h delete mode 100644 Core/CryptoPkg/Library/Include/string.h delete mode 100644 Core/CryptoPkg/Library/Include/strings.h delete mode 100644 Core/CryptoPkg/Library/Include/sys/time.h delete mode 100644 Core/CryptoPkg/Library/Include/sys/types.h delete mode 100644 Core/CryptoPkg/Library/Include/syslog.h delete mode 100644 Core/CryptoPkg/Library/Include/time.h delete mode 100644 Core/CryptoPkg/Library/Include/unistd.h delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/CopyMem.c delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.S delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.c delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.S delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.c delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf delete mode 100644 Core/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c delete mode 100644 Core/CryptoPkg/Library/OpensslLib/OpenSSL-HOWTO.txt delete mode 100644 Core/CryptoPkg/Library/OpensslLib/OpensslLib.inf delete mode 100644 Core/CryptoPkg/Library/OpensslLib/OpensslLib.uni delete mode 100644 Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf delete mode 100644 Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni delete mode 100644 Core/CryptoPkg/Library/OpensslLib/buildinf.h delete mode 100644 Core/CryptoPkg/Library/OpensslLib/process_files.pl delete mode 100644 Core/CryptoPkg/Library/TlsLib/InternalTlsLib.h delete mode 100644 Core/CryptoPkg/Library/TlsLib/TlsConfig.c delete mode 100644 Core/CryptoPkg/Library/TlsLib/TlsInit.c delete mode 100644 Core/CryptoPkg/Library/TlsLib/TlsLib.inf delete mode 100644 Core/CryptoPkg/Library/TlsLib/TlsLib.uni delete mode 100644 Core/CryptoPkg/Library/TlsLib/TlsProcess.c delete mode 100644 Core/CryptoPkg/License.txt (limited to 'Core/CryptoPkg') diff --git a/Core/CryptoPkg/.gitignore b/Core/CryptoPkg/.gitignore deleted file mode 100644 index 731c275ae1..0000000000 --- a/Core/CryptoPkg/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Library/OpensslLib/openssl*/ diff --git a/Core/CryptoPkg/Application/Cryptest/AuthenticodeVerify.c b/Core/CryptoPkg/Application/Cryptest/AuthenticodeVerify.c deleted file mode 100644 index bc22aa0cde..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/AuthenticodeVerify.c +++ /dev/null @@ -1,1050 +0,0 @@ -/** @file - Sample Implementation for Microsoft Authenticode Verification. - -Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -// -// Sample PE/COFF Image Hash Value (Digested by SHA-1). -// This value should be calculated following MSFT's Authenticode Specification -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 PeSha1Hash[] = { - 0x44, 0xFD, 0x4F, 0xA9, 0x17, 0xEE, 0xAC, 0xCF, 0x1F, 0x0B, 0xE3, 0xA1, 0x4D, 0x5B, 0xA6, 0x61, - 0x82, 0x97, 0xC4, 0xB6 - }; - -// -// Sample PE/COFF Image Hash Value (Digested by SHA-256). -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 PeSha256Hash[] = { - 0x61, 0x82, 0xB7, 0xF8, 0x8C, 0xFF, 0xC2, 0xEB, 0x79, 0x6E, 0x9D, 0xA9, 0xDD, 0x39, 0x52, 0xDD, - 0x36, 0xDD, 0xF1, 0x43, 0x27, 0x58, 0x8C, 0xA7, 0xCC, 0xAE, 0xDE, 0xDD, 0x3C, 0x02, 0x12, 0x49 - }; - -// -// Sample Authenticode Data with SHA-1 hash algorithm. -// This data should be retrieved from signed PE/COFF image according to SECURITY -// directory in PE/COFF Header. -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithSha1[] = { - 0x30, 0x82, 0x1C, 0x43, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02, 0xA0, - 0x82, 0x1C, 0x34, 0x30, 0x82, 0x1C, 0x30, 0x02, 0x01, 0x01, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x05, - 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, 0x68, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, - 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x5A, 0x30, 0x58, 0x30, 0x33, 0x06, 0x0A, 0x2B, 0x06, 0x01, - 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0F, 0x30, 0x25, 0x03, 0x01, 0x00, 0xA0, 0x20, 0xA2, 0x1E, - 0x80, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x4F, 0x00, 0x62, 0x00, 0x73, 0x00, 0x6F, - 0x00, 0x6C, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x30, 0x21, - 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0x44, 0xFD, 0x4F, - 0xA9, 0x17, 0xEE, 0xAC, 0xCF, 0x1F, 0x0B, 0xE3, 0xA1, 0x4D, 0x5B, 0xA6, 0x61, 0x82, 0x97, 0xC4, - 0xB6, 0xA0, 0x82, 0x17, 0x18, 0x30, 0x82, 0x04, 0xCA, 0x30, 0x82, 0x03, 0xB2, 0xA0, 0x03, 0x02, - 0x01, 0x02, 0x02, 0x0A, 0x61, 0x03, 0xDC, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x30, 0x0D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x77, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, - 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, - 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, - 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, - 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, - 0x69, 0x6F, 0x6E, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, - 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, - 0x6D, 0x70, 0x20, 0x50, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x38, 0x30, 0x37, 0x32, 0x35, - 0x31, 0x39, 0x31, 0x32, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x31, 0x31, 0x30, 0x37, 0x32, 0x35, 0x31, - 0x39, 0x32, 0x32, 0x35, 0x30, 0x5A, 0x30, 0x81, 0xB3, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, - 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, - 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, - 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, - 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x0D, 0x30, - 0x0B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x04, 0x4D, 0x4F, 0x50, 0x52, 0x31, 0x27, 0x30, 0x25, - 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1E, 0x6E, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x20, 0x44, - 0x53, 0x45, 0x20, 0x45, 0x53, 0x4E, 0x3A, 0x31, 0x35, 0x39, 0x43, 0x2D, 0x41, 0x33, 0x46, 0x37, - 0x2D, 0x32, 0x35, 0x37, 0x30, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1C, - 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, - 0x74, 0x61, 0x6D, 0x70, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x30, 0x82, 0x01, 0x22, - 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, - 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC0, 0xED, 0x81, - 0x14, 0xA1, 0x5E, 0x77, 0xC0, 0x5B, 0xF4, 0x76, 0x89, 0x62, 0xFA, 0xAD, 0x7C, 0x68, 0x14, 0xB4, - 0xF7, 0xBD, 0x35, 0xD8, 0x13, 0x79, 0x5A, 0x17, 0xCA, 0xD9, 0x6C, 0x51, 0x45, 0x62, 0x26, 0x7A, - 0x2F, 0x1F, 0xD8, 0xEA, 0xC1, 0x6E, 0x01, 0x17, 0xF9, 0xC3, 0xA6, 0x1F, 0x67, 0xDB, 0x51, 0xB0, - 0x2C, 0xDE, 0x8A, 0x17, 0xED, 0xFF, 0x20, 0xAD, 0x34, 0xEA, 0x98, 0xFB, 0xA5, 0xD6, 0x2A, 0xD2, - 0xF1, 0x44, 0x27, 0x07, 0x5A, 0x2D, 0x3A, 0x93, 0xFF, 0x56, 0x53, 0xB0, 0xC8, 0xF5, 0xF3, 0x03, - 0xF2, 0x49, 0xCC, 0x16, 0xD0, 0xF5, 0x00, 0x4C, 0x58, 0xF8, 0x9B, 0xF5, 0x07, 0x25, 0xB1, 0x66, - 0x17, 0xC0, 0xBD, 0xC8, 0xD2, 0x52, 0x85, 0x8D, 0xC2, 0x2B, 0x38, 0xB2, 0xC3, 0x36, 0xBE, 0xF9, - 0x87, 0xDA, 0xF4, 0x8E, 0x5D, 0x43, 0xD7, 0x06, 0xBF, 0x99, 0x05, 0x9F, 0xA4, 0xCE, 0xFE, 0xAB, - 0x8D, 0x61, 0x63, 0xE7, 0x39, 0xC5, 0xF3, 0x18, 0xF6, 0xD8, 0xFC, 0x31, 0x36, 0x69, 0x72, 0x5A, - 0xA2, 0x1A, 0x4C, 0x3E, 0xEA, 0x87, 0x25, 0x42, 0x9D, 0xD1, 0x3E, 0xF1, 0x97, 0xD2, 0x18, 0x32, - 0x93, 0x70, 0x55, 0x53, 0x81, 0x1E, 0xE3, 0x3B, 0x0D, 0xE8, 0xBE, 0x82, 0x78, 0x6D, 0xE6, 0xFA, - 0xCD, 0x98, 0xA4, 0x6F, 0xDB, 0xEE, 0x66, 0xF4, 0x95, 0xC8, 0xCD, 0x35, 0xC9, 0x9E, 0xBB, 0x36, - 0x0D, 0x83, 0x96, 0x94, 0x26, 0xA7, 0x90, 0xE0, 0xA9, 0x34, 0x3B, 0xD5, 0xC0, 0x9E, 0x3E, 0xF0, - 0xD4, 0x47, 0x8D, 0x86, 0x0C, 0x82, 0xA4, 0x58, 0x30, 0x3A, 0x1C, 0x76, 0xE3, 0xAD, 0x95, 0x66, - 0xB4, 0xB7, 0xFD, 0x09, 0x8A, 0x05, 0x60, 0x0F, 0xA3, 0x0F, 0xE2, 0x93, 0x96, 0x58, 0x22, 0x9C, - 0x9D, 0x2B, 0xDB, 0xA2, 0x94, 0x18, 0x90, 0x95, 0x02, 0xBD, 0x06, 0x40, 0x95, 0x02, 0x03, 0x01, - 0x00, 0x01, 0xA3, 0x82, 0x01, 0x19, 0x30, 0x82, 0x01, 0x15, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, - 0x0E, 0x04, 0x16, 0x04, 0x14, 0xD2, 0xED, 0x0D, 0x1E, 0x24, 0xBB, 0x37, 0xA9, 0xD8, 0x20, 0x6A, - 0x4D, 0x1D, 0xD2, 0x16, 0xD5, 0x2E, 0xBE, 0x9E, 0xEB, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, - 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x23, 0x34, 0xF8, 0xD9, 0x52, 0x46, 0x70, 0x0A, 0xED, 0x40, - 0xFB, 0x76, 0xFB, 0xB3, 0x2B, 0xB0, 0xC3, 0x35, 0xB3, 0x0F, 0x30, 0x54, 0x06, 0x03, 0x55, 0x1D, - 0x1F, 0x04, 0x4D, 0x30, 0x4B, 0x30, 0x49, 0xA0, 0x47, 0xA0, 0x45, 0x86, 0x43, 0x68, 0x74, 0x74, - 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, - 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, - 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, - 0x54, 0x69, 0x6D, 0x65, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, - 0x30, 0x58, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x4C, 0x30, 0x4A, - 0x30, 0x48, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x3C, 0x68, 0x74, - 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, - 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72, 0x74, 0x73, - 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x53, 0x74, - 0x61, 0x6D, 0x70, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, - 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x06, 0xC0, 0x30, - 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, - 0x01, 0x01, 0x00, 0x9C, 0x0A, 0x55, 0xC8, 0xCC, 0x44, 0x13, 0x34, 0x0C, 0xD8, 0x63, 0x27, 0x76, - 0x7D, 0x3E, 0xFA, 0x38, 0x32, 0x83, 0x53, 0x9D, 0xF2, 0x08, 0xF9, 0x32, 0xF5, 0xC5, 0x6E, 0x70, - 0xA1, 0xC9, 0xB1, 0x63, 0x6B, 0x19, 0x9D, 0x09, 0x67, 0xD9, 0x9D, 0xEB, 0x8A, 0x6A, 0xDB, 0x60, - 0x66, 0xE9, 0xE9, 0x52, 0x26, 0xF3, 0x3B, 0xC6, 0x6A, 0xD3, 0xC2, 0x52, 0xBE, 0xA8, 0xB9, 0xEB, - 0x6A, 0xAA, 0x78, 0x8C, 0xC9, 0x16, 0x7D, 0x90, 0x95, 0xA0, 0xCC, 0x21, 0xB3, 0x9E, 0x81, 0xBD, - 0xCD, 0xC1, 0x8B, 0x29, 0xBD, 0x62, 0x25, 0xEF, 0x09, 0x57, 0xE7, 0x86, 0x4E, 0x2A, 0xEC, 0x80, - 0xCA, 0xBB, 0xFC, 0x21, 0x16, 0xC4, 0x3F, 0x4E, 0x52, 0x19, 0xE6, 0x0E, 0xB1, 0xD8, 0xC1, 0xC2, - 0x79, 0x90, 0x64, 0xB4, 0x50, 0x73, 0x10, 0x35, 0x5E, 0x5D, 0x11, 0xC1, 0xB8, 0xBA, 0xAA, 0xCF, - 0x52, 0xF6, 0x80, 0x91, 0x00, 0xE6, 0xEF, 0x51, 0x43, 0x46, 0xE9, 0xD0, 0xE8, 0x94, 0xF6, 0x2C, - 0x24, 0x0D, 0x8A, 0xC6, 0xB2, 0x31, 0x8A, 0xA3, 0x7E, 0x36, 0x6C, 0xA4, 0x05, 0x4C, 0x67, 0x07, - 0x2A, 0xBB, 0xBB, 0x10, 0xA5, 0xA5, 0x30, 0x1A, 0x72, 0xD0, 0x06, 0x20, 0x3B, 0x24, 0x93, 0x5B, - 0x15, 0xD9, 0x39, 0x93, 0xD3, 0x73, 0x2D, 0x1A, 0xC4, 0xD4, 0x6C, 0x1E, 0xA1, 0x08, 0xEC, 0xF6, - 0x31, 0xB8, 0x6B, 0x4B, 0xEC, 0xEE, 0x5C, 0x33, 0x02, 0x14, 0x32, 0x8C, 0x7C, 0x11, 0x20, 0x2F, - 0x20, 0x03, 0x7F, 0xF9, 0x0C, 0x9D, 0xB8, 0xD3, 0x9E, 0x5F, 0xD6, 0x08, 0xFC, 0x81, 0xA0, 0x99, - 0xB8, 0xBB, 0x55, 0x6E, 0xCD, 0x42, 0x4B, 0x3A, 0x4D, 0x8C, 0x14, 0x2B, 0xCA, 0xC8, 0x12, 0xD3, - 0x62, 0x6E, 0xEA, 0x0D, 0x0A, 0x9D, 0x09, 0xA3, 0x66, 0xD9, 0x79, 0x4F, 0x8E, 0x1A, 0xA2, 0xFF, - 0xCC, 0x98, 0x04, 0x30, 0x82, 0x05, 0x96, 0x30, 0x82, 0x04, 0x7E, 0xA0, 0x03, 0x02, 0x01, 0x02, - 0x02, 0x0A, 0x61, 0x01, 0xC6, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0x81, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, - 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, - 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, - 0x6F, 0x6E, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x4D, 0x69, 0x63, - 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x50, 0x43, 0x41, 0x30, - 0x1E, 0x17, 0x0D, 0x30, 0x38, 0x31, 0x30, 0x32, 0x32, 0x32, 0x30, 0x33, 0x39, 0x32, 0x32, 0x5A, - 0x17, 0x0D, 0x31, 0x30, 0x30, 0x31, 0x32, 0x32, 0x32, 0x30, 0x34, 0x39, 0x32, 0x32, 0x5A, 0x30, - 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, - 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, - 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, - 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, - 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, - 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x04, - 0x4D, 0x4F, 0x50, 0x52, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x4D, - 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, - 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, - 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, - 0x00, 0xDC, 0x3A, 0xD3, 0x44, 0xF4, 0x6E, 0x20, 0x9F, 0xDD, 0xA4, 0x0E, 0x82, 0x4E, 0xC7, 0x86, - 0x5E, 0x63, 0xCC, 0xCA, 0xE5, 0x42, 0x53, 0x4B, 0x85, 0xFA, 0x5D, 0x71, 0x6C, 0xCF, 0x76, 0x0C, - 0x18, 0x8B, 0xA6, 0x0D, 0xF5, 0x4A, 0xF7, 0xFE, 0x17, 0xF2, 0x90, 0xCC, 0x62, 0xC7, 0x24, 0xAD, - 0x9B, 0x9A, 0xE1, 0x45, 0x3B, 0x61, 0xD8, 0x0D, 0x05, 0x69, 0xC7, 0xCD, 0x88, 0x2A, 0xB8, 0xB9, - 0x18, 0x1E, 0x60, 0x10, 0x5F, 0x88, 0xC6, 0xD2, 0x82, 0x4E, 0x6D, 0x49, 0xC5, 0xBE, 0x5C, 0x12, - 0x86, 0x48, 0x85, 0x89, 0x91, 0x81, 0xCD, 0x1B, 0xAD, 0x1F, 0xB7, 0x2D, 0x67, 0x79, 0xF1, 0x7B, - 0x9F, 0x25, 0x87, 0x14, 0x76, 0x5F, 0xE3, 0x0E, 0x64, 0xA1, 0x72, 0x61, 0x25, 0xE5, 0x75, 0x69, - 0xC5, 0x14, 0xF1, 0x5F, 0x07, 0x56, 0xA4, 0x0D, 0x70, 0x06, 0x23, 0xA7, 0x6C, 0xDD, 0x82, 0xAE, - 0xD9, 0x9B, 0x47, 0xA4, 0xA5, 0x6C, 0x08, 0xB0, 0x58, 0xF1, 0x53, 0x6A, 0x4F, 0xDA, 0x85, 0x61, - 0xCB, 0x02, 0x7B, 0x49, 0xAF, 0x1F, 0xBB, 0xE0, 0xD7, 0xB9, 0x5E, 0xDB, 0x73, 0x89, 0x76, 0xC1, - 0x3A, 0xBB, 0x0D, 0xF5, 0x97, 0xF0, 0x88, 0x5D, 0x69, 0x77, 0x80, 0xCF, 0xF1, 0x7E, 0x03, 0x9F, - 0x73, 0x6D, 0xDE, 0x05, 0xB8, 0x2F, 0x77, 0xB5, 0x54, 0x55, 0x45, 0xD0, 0xD2, 0x38, 0xBD, 0x96, - 0xE3, 0xF7, 0xEA, 0x40, 0xE5, 0xAC, 0x19, 0xFC, 0x71, 0xCB, 0x28, 0x27, 0xAA, 0x71, 0xA1, 0x72, - 0xB5, 0x12, 0x27, 0xC1, 0x51, 0xF6, 0x36, 0xC5, 0xC0, 0xC7, 0x7B, 0x3A, 0x3A, 0x93, 0x37, 0x04, - 0xCC, 0xEE, 0x0B, 0x69, 0x78, 0x64, 0x75, 0x41, 0xB6, 0x78, 0x22, 0x0F, 0x77, 0x84, 0xF7, 0x4B, - 0x8D, 0x46, 0x65, 0x92, 0x5B, 0x4D, 0x56, 0x6B, 0x75, 0x04, 0x46, 0x3F, 0x0B, 0x1B, 0xB4, 0x19, - 0xBF, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x02, 0x0F, 0x30, 0x82, 0x02, 0x0B, 0x30, 0x1F, - 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x18, 0x30, 0x16, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, - 0x07, 0x03, 0x03, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0A, 0x03, 0x06, 0x30, - 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xA1, 0xE6, 0xC3, 0x65, 0xD0, 0xE6, - 0xE8, 0x28, 0x62, 0xC2, 0xF3, 0xC2, 0x23, 0xA6, 0x1C, 0x49, 0x82, 0x0B, 0xD5, 0x53, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x1F, - 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x90, 0x8B, 0x11, - 0xA5, 0x70, 0xED, 0xE0, 0xF9, 0xA9, 0xC0, 0xAC, 0x08, 0xC7, 0xB5, 0xF4, 0x82, 0xB1, 0x3C, 0xC5, - 0x4A, 0x30, 0x7B, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x74, 0x30, 0x72, 0x30, 0x70, 0xA0, 0x6E, - 0xA0, 0x6C, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, - 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, - 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x57, 0x69, - 0x6E, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, - 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, - 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, - 0x63, 0x74, 0x73, 0x2F, 0x57, 0x69, 0x6E, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x52, - 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x46, 0x30, 0x44, 0x30, 0x42, - 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x36, 0x68, 0x74, 0x74, 0x70, - 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, - 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2F, 0x4D, - 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x57, 0x69, 0x6E, 0x50, 0x43, 0x41, 0x2E, 0x63, - 0x72, 0x74, 0x30, 0x81, 0xC6, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x81, 0xBE, 0x30, 0x81, 0xBB, - 0x30, 0x81, 0xB8, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x2F, 0x30, 0x81, - 0xAA, 0x30, 0x40, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x34, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, - 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x73, 0x73, 0x6C, - 0x2F, 0x63, 0x70, 0x73, 0x2F, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x50, 0x43, 0x41, 0x2E, - 0x68, 0x74, 0x6D, 0x30, 0x66, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, - 0x5A, 0x1E, 0x58, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, - 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0xA9, 0x00, 0x20, 0x00, 0x31, 0x00, 0x39, 0x00, - 0x39, 0x00, 0x39, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35, 0x00, 0x20, 0x00, - 0x4D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00, 0x6F, 0x00, 0x66, 0x00, - 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, 0x72, 0x00, - 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x2E, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x73, - 0x5F, 0xCA, 0x80, 0x1C, 0x60, 0x46, 0x6F, 0xB9, 0x34, 0x9D, 0x88, 0xE3, 0xBE, 0x22, 0x8C, 0xFA, - 0xE6, 0x58, 0x9A, 0xAB, 0x7B, 0x1A, 0x97, 0xFD, 0xED, 0x2E, 0x39, 0xCC, 0x59, 0x5B, 0x1D, 0x7A, - 0x06, 0x8A, 0xBB, 0x43, 0x93, 0x7B, 0x1E, 0xA1, 0x88, 0x53, 0xDF, 0x44, 0xF8, 0x53, 0xA9, 0xEA, - 0xF6, 0x67, 0x1B, 0x3A, 0x78, 0x84, 0x11, 0x6A, 0x6F, 0x29, 0x47, 0x90, 0x0A, 0x0C, 0x7B, 0x22, - 0x77, 0x4E, 0x6F, 0xB8, 0x64, 0x29, 0xDF, 0x06, 0xC7, 0xC8, 0x73, 0x84, 0xD6, 0x66, 0xA0, 0xCA, - 0xD9, 0x5A, 0x26, 0x82, 0x57, 0xF9, 0xE3, 0x4F, 0x39, 0xAF, 0x2E, 0x8E, 0xB1, 0x06, 0x5B, 0x72, - 0xF2, 0x37, 0x32, 0xAE, 0x4E, 0xCE, 0x3C, 0x7D, 0xB0, 0x12, 0x2B, 0x9E, 0xA5, 0x75, 0xE3, 0x43, - 0xA6, 0x12, 0x8B, 0x06, 0x14, 0x98, 0x77, 0xE3, 0x58, 0x32, 0x25, 0x60, 0x07, 0x8C, 0x59, 0x71, - 0xA7, 0x71, 0x41, 0xB3, 0x06, 0x8D, 0x5C, 0xEF, 0x9C, 0x7F, 0x5A, 0x22, 0x6D, 0xB7, 0xD3, 0xD9, - 0xF5, 0xA6, 0x1B, 0x52, 0xDE, 0xF5, 0x7E, 0x76, 0x7C, 0xFE, 0xF4, 0xC8, 0x23, 0x1A, 0x4B, 0x25, - 0xEB, 0xE4, 0xEE, 0xAF, 0x10, 0x0B, 0x55, 0xC3, 0xD8, 0xC1, 0x17, 0x85, 0x61, 0x6F, 0xD3, 0x3F, - 0xB6, 0xE9, 0xEC, 0x84, 0xA5, 0xEE, 0x6D, 0xB2, 0xFF, 0xE8, 0x6C, 0x95, 0xAB, 0x2B, 0x5E, 0xC8, - 0x85, 0xC3, 0x11, 0x60, 0xAC, 0xFA, 0x02, 0x05, 0xF1, 0x7B, 0xDA, 0xC3, 0x69, 0x49, 0x96, 0xA5, - 0x70, 0xF9, 0x65, 0x66, 0x46, 0x10, 0x8D, 0x34, 0xE9, 0x21, 0x94, 0x3C, 0x0F, 0x71, 0x4A, 0x1C, - 0xEA, 0x1F, 0xF7, 0x23, 0xA6, 0x87, 0x60, 0x34, 0xE9, 0x14, 0xE1, 0xDE, 0x03, 0x59, 0xB4, 0x02, - 0x1D, 0x3A, 0xAF, 0xE3, 0x55, 0x05, 0xF5, 0xED, 0xC1, 0xF4, 0xE4, 0x5D, 0x0E, 0xD3, 0x97, 0x30, - 0x82, 0x06, 0x07, 0x30, 0x82, 0x03, 0xEF, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0A, 0x61, 0x16, - 0x68, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, - 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, - 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, - 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, - 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, - 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x37, 0x30, 0x34, - 0x30, 0x33, 0x31, 0x32, 0x35, 0x33, 0x30, 0x39, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, 0x34, 0x30, - 0x33, 0x31, 0x33, 0x30, 0x33, 0x30, 0x39, 0x5A, 0x30, 0x77, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, - 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, - 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, - 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, - 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x21, - 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, - 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x50, 0x43, - 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, - 0x01, 0x00, 0x9F, 0xA1, 0x6C, 0xB1, 0xDF, 0xDB, 0x48, 0x92, 0x2A, 0x7C, 0x6B, 0x2E, 0x19, 0xE1, - 0xBD, 0xE2, 0xE3, 0xC5, 0x99, 0x51, 0x23, 0x50, 0xAD, 0xCE, 0xDD, 0x18, 0x4E, 0x24, 0x0F, 0xEE, - 0xD1, 0xA7, 0xD1, 0x4C, 0xAD, 0x74, 0x30, 0x20, 0x11, 0xEB, 0x07, 0xD5, 0x54, 0x95, 0x15, 0x49, - 0x94, 0x1B, 0x42, 0x92, 0xAE, 0x98, 0x5C, 0x30, 0x26, 0xDA, 0x00, 0x6B, 0xE8, 0x7B, 0xBD, 0xEC, - 0x89, 0x07, 0x0F, 0xF7, 0x0E, 0x04, 0x98, 0xF0, 0x89, 0xCC, 0x1F, 0xCB, 0x33, 0x24, 0x87, 0x9D, - 0xF2, 0xF4, 0x67, 0x1C, 0x2C, 0xFC, 0x7B, 0xE7, 0x88, 0x1D, 0xEA, 0xE7, 0x4E, 0xA3, 0xA1, 0xC1, - 0x23, 0x53, 0xCA, 0x8D, 0xFA, 0x45, 0xCF, 0x09, 0xD0, 0x5E, 0xAF, 0xD0, 0xB0, 0x42, 0x04, 0xA2, - 0xF9, 0xA6, 0x6C, 0x93, 0x67, 0xD7, 0x28, 0xDC, 0x46, 0x53, 0xB0, 0x86, 0xD0, 0xE5, 0x28, 0x46, - 0x2E, 0x27, 0xAC, 0x86, 0x4F, 0x55, 0x52, 0x0C, 0xE4, 0x03, 0x2C, 0xFB, 0x6A, 0x90, 0x90, 0x30, - 0x6E, 0x87, 0xF3, 0x59, 0x30, 0x9D, 0xFA, 0x7E, 0xD6, 0x97, 0xB3, 0xE8, 0x21, 0x97, 0x7E, 0xF8, - 0xD2, 0x13, 0xF3, 0x08, 0xB7, 0x53, 0x6D, 0x52, 0xB4, 0x45, 0x90, 0x9F, 0x48, 0x00, 0x4A, 0x47, - 0x66, 0x11, 0x27, 0x29, 0x66, 0xA8, 0x97, 0xE4, 0xD3, 0x06, 0x81, 0x4A, 0xA2, 0xF9, 0x84, 0xA7, - 0x11, 0x47, 0x14, 0x09, 0x82, 0x9F, 0x84, 0xED, 0x55, 0x78, 0xFE, 0x01, 0x9A, 0x1D, 0x50, 0x08, - 0x85, 0x00, 0x10, 0x30, 0x46, 0xED, 0xB7, 0xDE, 0x23, 0x46, 0xBB, 0xC4, 0x2D, 0x54, 0x9F, 0xAF, - 0x1E, 0x78, 0x41, 0x31, 0x77, 0xCC, 0x9B, 0xDF, 0x3B, 0x83, 0x93, 0xA1, 0x61, 0x02, 0xB5, 0x1D, - 0x0D, 0xB1, 0xFC, 0xF7, 0x9B, 0xB2, 0x01, 0xCE, 0x22, 0x4B, 0x54, 0xFF, 0xF9, 0x05, 0xC3, 0xC2, - 0x20, 0x0B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0xAB, 0x30, 0x82, 0x01, 0xA7, 0x30, - 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, - 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x23, 0x34, 0xF8, 0xD9, 0x52, - 0x46, 0x70, 0x0A, 0xED, 0x40, 0xFB, 0x76, 0xFB, 0xB3, 0x2B, 0xB0, 0xC3, 0x35, 0xB3, 0x0F, 0x30, - 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x10, 0x06, 0x09, - 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x81, - 0x98, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x81, 0x90, 0x30, 0x81, 0x8D, 0x80, 0x14, 0x0E, 0xAC, - 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, 0xE5, 0x25, 0x13, 0xFC, 0x2A, 0xE1, 0x0A, 0x53, 0x95, 0x59, - 0xE4, 0xA4, 0xA1, 0x63, 0xA4, 0x61, 0x30, 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, - 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, - 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, - 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, - 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, - 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x82, 0x10, 0x79, 0xAD, 0x16, 0xA1, 0x4A, 0xA0, 0xA5, - 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07, 0x13, 0x2E, 0x65, 0x30, 0x50, 0x06, 0x03, 0x55, 0x1D, 0x1F, - 0x04, 0x49, 0x30, 0x47, 0x30, 0x45, 0xA0, 0x43, 0xA0, 0x41, 0x86, 0x3F, 0x68, 0x74, 0x74, 0x70, - 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, - 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, - 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x72, - 0x6F, 0x6F, 0x74, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x54, 0x06, 0x08, 0x2B, - 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x48, 0x30, 0x46, 0x30, 0x44, 0x06, 0x08, 0x2B, - 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x38, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, - 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, - 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, - 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, - 0x74, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, - 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x10, 0x97, 0x8A, 0xC3, 0x5C, 0x03, - 0x44, 0x36, 0xDD, 0xE9, 0xB4, 0xAD, 0x77, 0xDB, 0xCE, 0x79, 0x51, 0x4D, 0x01, 0xB1, 0x2E, 0x74, - 0x71, 0x5B, 0x6D, 0x0C, 0x13, 0xAB, 0xCE, 0xBE, 0x7B, 0x8F, 0xB8, 0x2E, 0xD4, 0x12, 0xA2, 0x8C, - 0x6D, 0x62, 0xB8, 0x57, 0x02, 0xCB, 0x4E, 0x20, 0x13, 0x50, 0x99, 0xDD, 0x7A, 0x40, 0xE2, 0x57, - 0xBB, 0xAF, 0x58, 0x9A, 0x1C, 0xE1, 0x1D, 0x01, 0x86, 0xAC, 0xBB, 0x78, 0xF2, 0x8B, 0xD0, 0xEC, - 0x3B, 0x01, 0xEE, 0xE2, 0xBE, 0x8F, 0x0A, 0x05, 0xC8, 0x8D, 0x48, 0xE2, 0xF0, 0x53, 0x15, 0xDD, - 0x4F, 0xAB, 0x92, 0xE4, 0xE7, 0x8D, 0x6A, 0xD5, 0x80, 0xC1, 0xE6, 0x94, 0xF2, 0x06, 0x2F, 0x85, - 0x03, 0xE9, 0x91, 0x2A, 0x24, 0x22, 0x70, 0xFB, 0xF6, 0xFC, 0xE4, 0x78, 0x99, 0x2E, 0x0D, 0xF7, - 0x07, 0xE2, 0x70, 0xBC, 0x18, 0x4E, 0x9D, 0x8E, 0x6B, 0x0A, 0x72, 0x95, 0xB8, 0xA1, 0x39, 0x9C, - 0x67, 0x2D, 0xC5, 0x51, 0x0E, 0xEA, 0x62, 0x5C, 0x3F, 0x16, 0x98, 0x8B, 0x20, 0x3F, 0xE2, 0x07, - 0x1A, 0x32, 0xF9, 0xCC, 0x31, 0x4A, 0x76, 0x31, 0x3D, 0x2B, 0x72, 0x0B, 0xC8, 0xEA, 0x70, 0x3D, - 0xFF, 0x85, 0x0A, 0x13, 0xDF, 0xC2, 0x0A, 0x61, 0x8E, 0xF0, 0xD7, 0xB8, 0x17, 0xEB, 0x4E, 0x8B, - 0x7F, 0xC5, 0x35, 0x2B, 0x5E, 0xA3, 0xBF, 0xEB, 0xBC, 0x7D, 0x0B, 0x42, 0x7B, 0xD4, 0x53, 0x72, - 0x21, 0xEE, 0x30, 0xCA, 0xBB, 0x78, 0x65, 0x5C, 0x5B, 0x01, 0x17, 0x0A, 0x14, 0x0E, 0xD2, 0xDA, - 0x14, 0x98, 0xF5, 0x3C, 0xB9, 0x66, 0x58, 0xB3, 0x2D, 0x2F, 0xE7, 0xF9, 0x85, 0x86, 0xCC, 0x51, - 0x56, 0xE8, 0x9D, 0x70, 0x94, 0x6C, 0xAC, 0x39, 0x4C, 0xD4, 0xF6, 0x79, 0xBF, 0xAA, 0x18, 0x7A, - 0x62, 0x29, 0xEF, 0xA2, 0x9B, 0x29, 0x34, 0x06, 0x77, 0x1A, 0x62, 0xC9, 0x3D, 0x1E, 0x6D, 0x1F, - 0x82, 0xF0, 0x0B, 0xC7, 0x2C, 0xBB, 0xCF, 0x43, 0xB3, 0xE5, 0xF9, 0xEC, 0x7D, 0xB5, 0xE3, 0xA4, - 0xA8, 0x74, 0x35, 0xB8, 0x4E, 0xC5, 0x71, 0x23, 0x12, 0x26, 0x76, 0x0B, 0x3C, 0x52, 0x8C, 0x71, - 0x5A, 0x46, 0x43, 0x14, 0xBC, 0xB3, 0xB3, 0xB0, 0x4D, 0x67, 0xC8, 0x9F, 0x42, 0xFF, 0x80, 0x79, - 0x21, 0x80, 0x9E, 0x15, 0x30, 0x66, 0xE8, 0x42, 0x12, 0x5E, 0x1A, 0xC8, 0x9E, 0x22, 0x21, 0xD0, - 0x43, 0xE9, 0x2B, 0xE9, 0xBB, 0xF4, 0x48, 0xCC, 0x2C, 0xD4, 0xD8, 0x32, 0x80, 0x4C, 0x26, 0x2A, - 0x48, 0x24, 0x5F, 0x5A, 0xEA, 0x56, 0xEF, 0xA6, 0xDE, 0x99, 0x9D, 0xCA, 0x3A, 0x6F, 0xBD, 0x81, - 0x27, 0x74, 0x06, 0x11, 0xEE, 0x76, 0x21, 0xBF, 0x9B, 0x82, 0xC1, 0x27, 0x54, 0xB6, 0xB1, 0x6A, - 0x3D, 0x89, 0xA1, 0x76, 0x61, 0xB4, 0x6E, 0xA1, 0x13, 0xA6, 0xBF, 0xAA, 0x47, 0xF0, 0x12, 0x6F, - 0xFD, 0x8A, 0x32, 0x6C, 0xB2, 0xFE, 0xDF, 0x51, 0xC8, 0x8C, 0x23, 0xC9, 0x66, 0xBD, 0x9D, 0x1D, - 0x87, 0x12, 0x64, 0x02, 0x3D, 0x2D, 0xAF, 0x59, 0x8F, 0xB8, 0xE4, 0x21, 0xE5, 0xB5, 0xB0, 0xCA, - 0x63, 0xB4, 0x78, 0x54, 0x05, 0xD4, 0x41, 0x2E, 0x50, 0xAC, 0x94, 0xB0, 0xA5, 0x78, 0xAB, 0xB3, - 0xA0, 0x96, 0x75, 0x1A, 0xD9, 0x92, 0x87, 0x13, 0x75, 0x22, 0x2F, 0x32, 0xA8, 0x08, 0x6E, 0xA0, - 0x5B, 0x8C, 0x25, 0xBF, 0xA0, 0xEF, 0x84, 0xCA, 0x21, 0xD6, 0xEB, 0x1E, 0x4F, 0xC9, 0x9A, 0xEE, - 0x49, 0xE0, 0xF7, 0x01, 0x65, 0x6F, 0x89, 0x0B, 0x7D, 0xC8, 0x69, 0xC8, 0xE6, 0x6E, 0xEA, 0xA7, - 0x97, 0xCE, 0x31, 0x29, 0xFF, 0x0E, 0xC5, 0x5B, 0x5C, 0xD8, 0x4D, 0x1B, 0xA1, 0xD8, 0xFA, 0x2F, - 0x9E, 0x3F, 0x2E, 0x55, 0x16, 0x6B, 0xC9, 0x13, 0xA3, 0xFD, 0x30, 0x82, 0x06, 0xA1, 0x30, 0x82, - 0x04, 0x89, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0A, 0x61, 0x07, 0x02, 0xDC, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0B, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, - 0x05, 0x00, 0x30, 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, - 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09, - 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F, - 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D, - 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, - 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x35, 0x30, 0x39, 0x31, 0x35, 0x32, 0x31, 0x35, - 0x35, 0x34, 0x31, 0x5A, 0x17, 0x0D, 0x31, 0x36, 0x30, 0x33, 0x31, 0x35, 0x32, 0x32, 0x30, 0x35, - 0x34, 0x31, 0x5A, 0x30, 0x81, 0x81, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, - 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, - 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, - 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, - 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x13, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, - 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6F, 0x6E, 0x20, 0x50, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, - 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC5, 0xAC, 0x93, 0x4E, 0xE6, 0x4A, 0x11, 0x9E, - 0x37, 0xD0, 0x35, 0xD2, 0xB0, 0x06, 0x5C, 0x83, 0x14, 0xA5, 0x61, 0x92, 0xFC, 0xFE, 0xB3, 0x89, - 0xC1, 0xE6, 0xCD, 0xC8, 0x1F, 0x31, 0x84, 0x09, 0x91, 0x34, 0x46, 0x92, 0x2C, 0xB8, 0xEE, 0x2C, - 0xC5, 0x20, 0x73, 0xC4, 0xE8, 0x1A, 0xD8, 0x8D, 0xCE, 0x7A, 0x68, 0xB5, 0x66, 0x78, 0x8B, 0xE5, - 0x60, 0x15, 0xA2, 0xF6, 0x29, 0x5A, 0x1D, 0x5E, 0x5D, 0xFC, 0x62, 0xD3, 0xC1, 0x5C, 0x29, 0x89, - 0xFB, 0x33, 0xF8, 0x16, 0x95, 0x36, 0xDD, 0xB1, 0x46, 0x74, 0x69, 0x72, 0x53, 0xD5, 0xAA, 0xE8, - 0x8A, 0x99, 0x1A, 0xD8, 0xF7, 0x67, 0x09, 0xD9, 0x09, 0x20, 0x22, 0x38, 0x7A, 0xD6, 0x03, 0x23, - 0xD7, 0x89, 0x9F, 0x1C, 0x01, 0xB7, 0x51, 0xDF, 0x98, 0x66, 0x2A, 0x02, 0x8B, 0x06, 0xEC, 0xE4, - 0x29, 0xEF, 0x5B, 0x42, 0x17, 0x15, 0x97, 0x51, 0x8D, 0x7D, 0x25, 0x0A, 0xAF, 0x25, 0xE8, 0xDE, - 0xDC, 0x9B, 0x67, 0x16, 0x0A, 0x56, 0x73, 0x9D, 0xB3, 0x1D, 0x85, 0x83, 0x0B, 0x7E, 0x33, 0x2B, - 0x62, 0x33, 0xCE, 0x1C, 0x20, 0x81, 0x4B, 0x5E, 0xD3, 0xC6, 0x49, 0xB8, 0xF6, 0x2E, 0xD3, 0x4E, - 0xB0, 0x71, 0x44, 0x46, 0x64, 0x3E, 0xDE, 0x43, 0x66, 0x04, 0xB9, 0xCC, 0x83, 0x48, 0x3A, 0xC5, - 0x36, 0x7A, 0x04, 0x48, 0x0B, 0x89, 0x02, 0x3D, 0x63, 0xA2, 0x01, 0x76, 0x29, 0x97, 0x75, 0xE9, - 0x01, 0xE6, 0x00, 0x97, 0x09, 0x92, 0xF8, 0xE2, 0x27, 0xF0, 0x29, 0x67, 0x43, 0x77, 0xC3, 0x50, - 0x96, 0x53, 0x31, 0xE1, 0xB6, 0x71, 0x8B, 0xEC, 0x77, 0xC7, 0x7C, 0x31, 0x48, 0xD5, 0xB8, 0x25, - 0x22, 0x8C, 0x00, 0xF7, 0x28, 0x38, 0x7A, 0xBD, 0x7C, 0xC7, 0x3F, 0xCD, 0x40, 0x26, 0x77, 0xDD, - 0x00, 0x00, 0x11, 0x9A, 0x95, 0xBE, 0x1F, 0xDB, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x02, - 0x3A, 0x30, 0x82, 0x02, 0x36, 0x30, 0x10, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, - 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, - 0x04, 0x14, 0x90, 0x8B, 0x11, 0xA5, 0x70, 0xED, 0xE0, 0xF9, 0xA9, 0xC0, 0xAC, 0x08, 0xC7, 0xB5, - 0xF4, 0x82, 0xB1, 0x3C, 0xC5, 0x4A, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, 0x03, - 0x02, 0x01, 0xC6, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, - 0x03, 0x01, 0x01, 0xFF, 0x30, 0x81, 0x98, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x81, 0x90, 0x30, - 0x81, 0x8D, 0x80, 0x14, 0x0E, 0xAC, 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, 0xE5, 0x25, 0x13, 0xFC, - 0x2A, 0xE1, 0x0A, 0x53, 0x95, 0x59, 0xE4, 0xA4, 0xA1, 0x63, 0xA4, 0x61, 0x30, 0x5F, 0x31, 0x13, - 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, - 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, - 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, - 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, - 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x82, 0x10, 0x79, - 0xAD, 0x16, 0xA1, 0x4A, 0xA0, 0xA5, 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07, 0x13, 0x2E, 0x65, 0x30, - 0x50, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x49, 0x30, 0x47, 0x30, 0x45, 0xA0, 0x43, 0xA0, 0x41, - 0x86, 0x3F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, - 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, - 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x6D, 0x69, 0x63, 0x72, - 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x72, 0x6F, 0x6F, 0x74, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, - 0x6C, 0x30, 0x54, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x48, 0x30, - 0x46, 0x30, 0x44, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x38, 0x68, - 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, - 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72, 0x74, - 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x52, 0x6F, 0x6F, 0x74, 0x43, - 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x81, 0x80, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, - 0x79, 0x30, 0x77, 0x30, 0x75, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x2F, - 0x30, 0x68, 0x30, 0x66, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x5A, - 0x1E, 0x58, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, - 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0xA9, 0x00, 0x20, 0x00, 0x31, 0x00, 0x39, 0x00, 0x39, - 0x00, 0x39, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35, 0x00, 0x20, 0x00, 0x4D, - 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x74, - 0x00, 0x20, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x61, - 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x2E, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, - 0x25, 0x04, 0x18, 0x30, 0x16, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, - 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0A, 0x03, 0x06, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x25, - 0x31, 0xA1, 0x58, 0xEA, 0x52, 0xE5, 0xE1, 0x17, 0x0C, 0xE6, 0xF1, 0x3F, 0x78, 0xA3, 0x3F, 0x72, - 0xAF, 0xA7, 0x57, 0x10, 0x53, 0x89, 0x10, 0x5E, 0x32, 0x9C, 0xB6, 0x70, 0xC3, 0x15, 0x2B, 0x4D, - 0x15, 0x30, 0x34, 0xE8, 0xC0, 0x6A, 0xE4, 0x1C, 0xD3, 0x2E, 0x20, 0x65, 0x48, 0xD7, 0x1B, 0x98, - 0x62, 0x21, 0xBA, 0x45, 0x9F, 0x4A, 0xEC, 0xDB, 0x2F, 0x09, 0x19, 0x51, 0xE5, 0xED, 0x32, 0x19, - 0x51, 0x2F, 0xE1, 0xDD, 0xFB, 0xC6, 0x52, 0xFD, 0xEB, 0xC6, 0x82, 0x25, 0x42, 0x03, 0x09, 0xA6, - 0x38, 0xB6, 0x36, 0x1F, 0xCC, 0xC9, 0x80, 0xBB, 0x5A, 0x69, 0x18, 0x31, 0xC3, 0xB3, 0xA0, 0xB3, - 0x67, 0x47, 0xBE, 0x9D, 0xC7, 0xE2, 0x3F, 0x96, 0xB3, 0x88, 0xF8, 0x19, 0xBE, 0x39, 0xB9, 0xE9, - 0x95, 0xCE, 0xFC, 0x7C, 0xAF, 0xA8, 0xCD, 0xD0, 0x41, 0x90, 0xE0, 0xD5, 0xB3, 0x1C, 0x2F, 0x68, - 0xBB, 0xDB, 0x0F, 0x6C, 0x6A, 0xDD, 0xF2, 0xAF, 0xDE, 0xF2, 0xB5, 0xDE, 0x0D, 0xB6, 0xA6, 0x5A, - 0xF0, 0x86, 0x0A, 0xB9, 0x6D, 0x99, 0x4B, 0x3F, 0x7B, 0x2D, 0x01, 0x84, 0x6C, 0x8F, 0x87, 0xDC, - 0x7F, 0x8F, 0xAB, 0x14, 0x88, 0xD0, 0x06, 0x91, 0x34, 0xBE, 0x1B, 0x82, 0x22, 0xA4, 0xBC, 0x55, - 0x8A, 0xAD, 0x9B, 0xFC, 0x73, 0x14, 0x10, 0xC4, 0xC9, 0x19, 0x1E, 0x07, 0x7D, 0x9B, 0x0E, 0xC0, - 0x95, 0x26, 0x5D, 0xC6, 0x1F, 0xAC, 0xB4, 0xF2, 0x7E, 0xBA, 0x25, 0x70, 0x4A, 0x7B, 0xD7, 0x8E, - 0xD1, 0x9D, 0xA0, 0x13, 0x49, 0x7A, 0xB0, 0x02, 0x52, 0x52, 0x24, 0xF4, 0xAF, 0xDD, 0x40, 0x2D, - 0xE5, 0x3E, 0x32, 0x58, 0xB3, 0x4A, 0x6A, 0xDD, 0x11, 0x59, 0xAA, 0x2D, 0xBC, 0xA4, 0xA0, 0x73, - 0x38, 0xF9, 0x40, 0x77, 0x6B, 0x34, 0x19, 0x57, 0xCD, 0x38, 0x68, 0x27, 0x82, 0xF8, 0xD1, 0x6F, - 0xEB, 0x23, 0xC0, 0x3F, 0x52, 0xF3, 0x4E, 0xD5, 0x02, 0x3E, 0x6A, 0x9A, 0x2B, 0xC1, 0xF5, 0x31, - 0x71, 0xDB, 0x41, 0x4D, 0x3B, 0xDE, 0xEF, 0xAD, 0xAF, 0x1F, 0x88, 0x65, 0x43, 0x1B, 0x51, 0xB7, - 0x9A, 0x75, 0xCA, 0x8E, 0x69, 0x49, 0x10, 0x8F, 0x78, 0x8A, 0x74, 0x45, 0xB9, 0x09, 0x8E, 0x73, - 0x77, 0x07, 0x32, 0x4A, 0x4B, 0xD7, 0x68, 0x2B, 0x98, 0xC5, 0xBA, 0x54, 0xEA, 0x3F, 0xCB, 0xA2, - 0x00, 0x8C, 0xBB, 0xD8, 0x10, 0x58, 0xF2, 0xDB, 0xDC, 0x9B, 0xCD, 0xD8, 0xEA, 0x48, 0x43, 0xE2, - 0x4A, 0x7E, 0x65, 0xB2, 0xDC, 0xF5, 0x2D, 0x4E, 0x25, 0x67, 0xA8, 0xE0, 0xB5, 0xBA, 0xA7, 0xDD, - 0x7E, 0x5E, 0xC1, 0x4C, 0x02, 0x74, 0xC9, 0xB3, 0x6E, 0xE3, 0xF8, 0xF0, 0x0B, 0xED, 0xFC, 0xB9, - 0x29, 0xC5, 0x5B, 0xC9, 0x36, 0x51, 0x90, 0xDB, 0x78, 0x7D, 0xB9, 0x32, 0x0F, 0x5E, 0x76, 0xD2, - 0x15, 0x5C, 0x3B, 0x37, 0x21, 0xC6, 0xDB, 0xC9, 0x19, 0x6E, 0xED, 0x74, 0x2A, 0x5C, 0x2C, 0x0B, - 0x51, 0x49, 0x45, 0x53, 0xB0, 0xB2, 0xB3, 0x23, 0xD4, 0xA1, 0xB0, 0x5F, 0x0D, 0x19, 0xCD, 0x14, - 0xA7, 0xE3, 0x3C, 0x9B, 0x97, 0x72, 0x94, 0x14, 0xDF, 0xFF, 0xC1, 0x90, 0x1B, 0xA5, 0xDF, 0xF5, - 0xA9, 0xF3, 0x1B, 0x17, 0xDA, 0xB5, 0xFC, 0x44, 0xE0, 0xE8, 0xE2, 0x3C, 0xA2, 0x7A, 0xBB, 0xBB, - 0x65, 0xE6, 0x4D, 0xB1, 0xB5, 0x15, 0xA1, 0xD9, 0x67, 0x3B, 0xB0, 0x0C, 0x7D, 0x3B, 0xE9, 0xEE, - 0x51, 0x2A, 0x47, 0xF5, 0x15, 0x0F, 0x8C, 0xAD, 0x5D, 0x2E, 0x35, 0xDF, 0xF4, 0xA4, 0x2E, 0xF6, - 0x13, 0x37, 0x5A, 0x2B, 0xE8, 0x55, 0x9A, 0x49, 0x2C, 0x97, 0xCE, 0x9D, 0x01, 0x9E, 0x97, 0x46, - 0x5C, 0xD9, 0x2D, 0xBC, 0x24, 0x5A, 0x95, 0x59, 0x6F, 0x4D, 0xCA, 0x9D, 0xD6, 0x57, 0x26, 0x31, - 0x82, 0x04, 0x96, 0x30, 0x82, 0x04, 0x92, 0x02, 0x01, 0x01, 0x30, 0x81, 0x90, 0x30, 0x81, 0x81, - 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, - 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, - 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, - 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, - 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, - 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x4D, - 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, - 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x50, 0x43, - 0x41, 0x02, 0x0A, 0x61, 0x01, 0xC6, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x09, 0x06, - 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, 0x81, 0xBA, 0x30, 0x19, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, - 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, - 0x37, 0x02, 0x01, 0x0B, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, - 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, - 0x04, 0x31, 0x16, 0x04, 0x14, 0xC5, 0xC5, 0xC1, 0xC3, 0x46, 0xC4, 0x12, 0xB9, 0x38, 0xED, 0xE5, - 0x7E, 0x66, 0x78, 0x4E, 0x8F, 0x55, 0x10, 0x7D, 0xAC, 0x30, 0x5A, 0x06, 0x0A, 0x2B, 0x06, 0x01, - 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0C, 0x31, 0x4C, 0x30, 0x4A, 0xA0, 0x24, 0x80, 0x22, 0x00, - 0x4D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00, 0x6F, 0x00, 0x66, 0x00, - 0x74, 0x00, 0x20, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x6F, 0x00, 0x77, 0x00, - 0x73, 0xA1, 0x22, 0x80, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, - 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x77, 0x69, - 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0xC0, 0x53, 0x19, 0xE7, 0x27, 0xE6, 0xD6, 0xD7, - 0xA8, 0xAE, 0xA0, 0xE6, 0x4C, 0xEF, 0x9A, 0xBC, 0x1D, 0x19, 0xD4, 0xC5, 0x7F, 0x7C, 0x71, 0xFF, - 0x14, 0x7C, 0xAD, 0x7A, 0x8F, 0x2D, 0x0F, 0x40, 0x38, 0x9B, 0x83, 0x09, 0xEE, 0xF5, 0x34, 0x92, - 0xB4, 0x85, 0x34, 0x7C, 0xBA, 0x9B, 0x58, 0x5D, 0xA6, 0x15, 0xDE, 0x99, 0xBF, 0x25, 0x89, 0xDB, - 0xC0, 0x3A, 0x98, 0x21, 0x1C, 0x25, 0x09, 0xBD, 0x41, 0xAA, 0x0F, 0x90, 0x6C, 0x62, 0xE9, 0xBD, - 0x1D, 0xDD, 0x7C, 0xA4, 0x1F, 0x19, 0x3F, 0xC8, 0x11, 0xF5, 0x1C, 0x9E, 0xEA, 0x2E, 0x1A, 0xCE, - 0x5A, 0x61, 0x8A, 0x77, 0xFA, 0x65, 0x1F, 0x03, 0xB4, 0x45, 0x02, 0x0F, 0xB4, 0x0E, 0xB9, 0x44, - 0xF6, 0x75, 0xF6, 0x67, 0x91, 0xAD, 0xFA, 0xF9, 0xC3, 0xFA, 0x63, 0x91, 0x58, 0xFE, 0x40, 0xDF, - 0x92, 0x6B, 0x59, 0x42, 0x44, 0x66, 0xD2, 0x88, 0x49, 0x59, 0x29, 0x1D, 0x6A, 0xF9, 0x93, 0x9B, - 0xD5, 0x38, 0x84, 0x96, 0xD7, 0xAF, 0xBA, 0xEC, 0x29, 0x8D, 0x06, 0x8C, 0x8B, 0xF4, 0xA1, 0x56, - 0x0F, 0x78, 0x3F, 0x35, 0xCB, 0x12, 0x8A, 0x85, 0xD5, 0x7C, 0xFC, 0x63, 0xDD, 0x72, 0xA1, 0x13, - 0xD3, 0x25, 0x4A, 0x59, 0x21, 0xD0, 0xC6, 0x47, 0x9F, 0x22, 0xF7, 0xF8, 0x32, 0xA2, 0x05, 0x2B, - 0x53, 0xC5, 0x96, 0x98, 0x0D, 0x39, 0x02, 0xAD, 0x85, 0xF7, 0x18, 0x73, 0x34, 0x12, 0x7F, 0x5A, - 0xCB, 0xE1, 0xA2, 0xFB, 0x4E, 0x25, 0x81, 0xF0, 0x9F, 0x7A, 0x79, 0xDB, 0x4F, 0x4B, 0x66, 0x44, - 0x30, 0x8E, 0x0D, 0x57, 0x23, 0xD3, 0x7F, 0x60, 0x87, 0xDE, 0xD0, 0x4C, 0x90, 0x90, 0x84, 0x64, - 0x70, 0xE8, 0x15, 0x65, 0xCA, 0x18, 0xF8, 0x9A, 0xB6, 0x0C, 0x24, 0xF5, 0xDF, 0xC3, 0x47, 0xE2, - 0x7C, 0xAD, 0x91, 0x70, 0x6D, 0xF8, 0x43, 0xE9, 0xA1, 0x82, 0x02, 0x1D, 0x30, 0x82, 0x02, 0x19, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x06, 0x31, 0x82, 0x02, 0x0A, 0x30, - 0x82, 0x02, 0x06, 0x02, 0x01, 0x01, 0x30, 0x81, 0x85, 0x30, 0x77, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, - 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, - 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, - 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, - 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x50, - 0x43, 0x41, 0x02, 0x0A, 0x61, 0x03, 0xDC, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x30, 0x07, - 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0xA0, 0x5D, 0x30, 0x18, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x05, - 0x31, 0x0F, 0x17, 0x0D, 0x30, 0x39, 0x30, 0x34, 0x32, 0x32, 0x30, 0x35, 0x35, 0x34, 0x33, 0x34, - 0x5A, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, - 0x04, 0x14, 0x74, 0xD7, 0x54, 0xA0, 0xC0, 0x9E, 0x62, 0xF0, 0xDD, 0x92, 0xDC, 0xD6, 0x96, 0x34, - 0xA1, 0x0B, 0xF0, 0xD5, 0xB5, 0x3A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x05, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x8D, 0x16, 0xB5, 0xC8, 0x3D, 0xBC, 0x8A, - 0xB5, 0xC3, 0x23, 0xF3, 0x33, 0xB0, 0xFA, 0x75, 0xAD, 0xAC, 0x53, 0x0D, 0x5C, 0xF4, 0xD9, 0xBE, - 0x63, 0xEB, 0x0D, 0x6F, 0x69, 0x63, 0x91, 0xF8, 0x8E, 0x67, 0x03, 0xE1, 0xC6, 0x2E, 0xCD, 0x9C, - 0xEB, 0xDD, 0x9C, 0xCA, 0x65, 0x4A, 0xBB, 0xF2, 0xF4, 0x1C, 0x85, 0x44, 0xD6, 0x58, 0x70, 0x2E, - 0x3B, 0xFE, 0x97, 0xD0, 0xEC, 0x72, 0x77, 0x20, 0xA8, 0x20, 0xAC, 0xF0, 0xED, 0x86, 0xC4, 0xFF, - 0x3A, 0x3D, 0x40, 0xD9, 0xF6, 0xD5, 0x99, 0xBE, 0xCC, 0xD2, 0xD8, 0xBA, 0x71, 0x51, 0x60, 0xAA, - 0x72, 0x36, 0x13, 0x8B, 0x0A, 0xA9, 0xD6, 0xF5, 0x36, 0xE0, 0x44, 0x6B, 0xC1, 0x44, 0x42, 0x43, - 0x56, 0x1A, 0xD6, 0xF1, 0x5A, 0x98, 0xCC, 0xBA, 0xA9, 0x4C, 0xCF, 0xC9, 0x86, 0xC3, 0x5B, 0x1C, - 0xDF, 0x75, 0x22, 0x54, 0x6A, 0xF0, 0x18, 0x34, 0x0B, 0x29, 0xB0, 0x26, 0x07, 0x59, 0xB6, 0x52, - 0x7B, 0x69, 0x74, 0x11, 0x1B, 0xB8, 0x29, 0x19, 0x36, 0x0E, 0xB7, 0x65, 0xCB, 0x87, 0x09, 0x9E, - 0x03, 0x28, 0x6C, 0xDB, 0xA7, 0xFB, 0xDF, 0xC7, 0xF7, 0xCE, 0x0D, 0xC2, 0xBA, 0xEA, 0x3C, 0xE8, - 0x43, 0x1E, 0x7F, 0xF2, 0x64, 0xDA, 0x87, 0x89, 0xC0, 0xCD, 0x67, 0xE4, 0x84, 0x9B, 0xA7, 0x77, - 0xFA, 0x6C, 0x69, 0x19, 0x5B, 0xD1, 0xF7, 0xD9, 0x07, 0x91, 0x50, 0xDD, 0x98, 0x26, 0x10, 0xE3, - 0x2E, 0x39, 0x62, 0xF0, 0x56, 0xE9, 0xD9, 0x5C, 0x85, 0x67, 0x9B, 0x2F, 0xDE, 0xD1, 0x00, 0x45, - 0x0E, 0x99, 0x1F, 0xDF, 0x7E, 0xC9, 0x10, 0x56, 0xC7, 0x00, 0x6D, 0x5F, 0x23, 0x57, 0x12, 0x84, - 0xCD, 0xAC, 0x82, 0xAE, 0x39, 0x52, 0xA5, 0x19, 0x23, 0xA3, 0x6B, 0xE7, 0x49, 0x8F, 0x86, 0x74, - 0x46, 0x41, 0x2A, 0x0F, 0x3D, 0x29, 0xB7, 0xAE, 0x8C, 0x00 - }; - -// -// Sample Authenticode Data with SHA-256 hash algorithm. -// This data should be retrieved from signed PE/COFF image according to SECURITY -// directory in PE/COFF Header. -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithSha256[] = { - 0x30, 0x82, 0x0e, 0xd1, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, - 0x82, 0x0e, 0xc2, 0x30, 0x82, 0x0e, 0xbe, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x5c, 0x06, 0x0a, 0x2b, - 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x4e, 0x30, 0x4c, 0x30, 0x17, 0x06, - 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f, 0x30, 0x09, 0x03, 0x01, 0x00, - 0xa0, 0x04, 0xa2, 0x02, 0x80, 0x00, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, - 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20, 0x61, 0x82, 0xb7, 0xf8, 0x8c, 0xff, 0xc2, - 0xeb, 0x79, 0x6e, 0x9d, 0xa9, 0xdd, 0x39, 0x52, 0xdd, 0x36, 0xdd, 0xf1, 0x43, 0x27, 0x58, 0x8c, - 0xa7, 0xcc, 0xae, 0xde, 0xdd, 0x3c, 0x02, 0x12, 0x49, 0xa0, 0x82, 0x0c, 0x0a, 0x30, 0x82, 0x05, - 0xe5, 0x30, 0x82, 0x03, 0xcd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0a, 0x61, 0x03, 0x5f, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x90, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, - 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, - 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, - 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, - 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3a, 0x30, 0x38, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x31, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, - 0x20, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x20, 0x32, 0x30, 0x31, 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x36, - 0x32, 0x31, 0x32, 0x32, 0x35, 0x35, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x32, - 0x31, 0x32, 0x33, 0x30, 0x35, 0x30, 0x31, 0x5a, 0x30, 0x81, 0x81, 0x31, 0x13, 0x30, 0x11, 0x06, - 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, - 0x31, 0x19, 0x30, 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, - 0x16, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31, 0x14, 0x30, 0x12, 0x06, - 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x04, 0x63, 0x6f, 0x72, - 0x70, 0x31, 0x17, 0x30, 0x15, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, - 0x19, 0x16, 0x07, 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x13, 0x17, 0x4d, 0x53, 0x49, 0x54, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, - 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x33, 0x30, 0x82, 0x01, 0x22, - 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, - 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0x9b, 0x71, 0xdd, - 0x0d, 0x32, 0x2d, 0x08, 0xe8, 0x2d, 0x01, 0x90, 0x9c, 0xdf, 0x9f, 0x32, 0x58, 0x8b, 0x47, 0xd0, - 0xfe, 0x9a, 0x6b, 0x40, 0x5e, 0x76, 0xa2, 0x10, 0x00, 0x0e, 0xd2, 0x8f, 0xce, 0xa1, 0x5f, 0x42, - 0xa7, 0x0b, 0x5e, 0x83, 0xc2, 0xe9, 0x06, 0xa6, 0x0a, 0xb4, 0x3d, 0x30, 0x50, 0xdb, 0x35, 0x43, - 0x2c, 0xd3, 0xc3, 0xc6, 0x3c, 0xc9, 0xb5, 0x88, 0xfc, 0x0b, 0xe6, 0xa3, 0x71, 0x47, 0xce, 0xfd, - 0x88, 0x62, 0xa4, 0x25, 0xe2, 0x4e, 0x1b, 0x79, 0x3d, 0xe3, 0xbf, 0x8b, 0x84, 0x2d, 0x64, 0x25, - 0xa5, 0xfa, 0x8e, 0x30, 0xae, 0xe3, 0x34, 0x7d, 0x27, 0xf3, 0x5e, 0xf4, 0x05, 0x60, 0xc6, 0x0f, - 0x1a, 0x1b, 0x9e, 0xaf, 0x21, 0x37, 0xa9, 0xd9, 0xb6, 0xb7, 0x6a, 0x54, 0x4b, 0x5e, 0xa0, 0x75, - 0xb5, 0x9a, 0xc4, 0xb6, 0xbe, 0x28, 0xe3, 0x3b, 0xf7, 0x5a, 0x08, 0x77, 0xd9, 0x39, 0x4a, 0x2a, - 0x7a, 0xf8, 0xf4, 0xfe, 0xe8, 0x12, 0x54, 0x41, 0x11, 0x55, 0xc8, 0xc7, 0x98, 0x3e, 0x64, 0xa5, - 0xbb, 0xda, 0x6b, 0xa4, 0xaa, 0x29, 0x8c, 0x9f, 0x27, 0x55, 0x25, 0xe7, 0xfd, 0x31, 0x70, 0x60, - 0x1d, 0xd3, 0xc4, 0xf2, 0xb9, 0xef, 0x92, 0x4a, 0x9f, 0xc8, 0x4c, 0x93, 0xe7, 0x19, 0xa8, 0x4e, - 0xbc, 0xe3, 0x62, 0xf4, 0xe0, 0x6e, 0xec, 0x45, 0x6e, 0x61, 0x4e, 0xad, 0x58, 0xe0, 0xf0, 0xea, - 0xf7, 0x74, 0x2c, 0xdf, 0x1b, 0xf6, 0x43, 0x3c, 0x84, 0xc2, 0x8c, 0x0b, 0xb4, 0xbd, 0x4a, 0x57, - 0xa6, 0x0c, 0x4e, 0x9e, 0x73, 0x43, 0x5f, 0x2d, 0xaf, 0x22, 0xf4, 0xa6, 0xfd, 0x5a, 0x87, 0xb9, - 0xbe, 0x6f, 0x9e, 0x1d, 0x99, 0xc8, 0xdf, 0x95, 0xc2, 0x02, 0xad, 0x7d, 0x4a, 0xf3, 0xba, 0x5d, - 0xe8, 0x7b, 0x6e, 0x57, 0xe5, 0x3a, 0x02, 0xf8, 0xd3, 0x01, 0x15, 0xae, 0x4f, 0x02, 0x03, 0x01, - 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4c, 0x30, 0x82, 0x01, 0x48, 0x30, 0x10, 0x06, 0x09, 0x2b, 0x06, - 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03, - 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4e, 0xfe, 0x61, 0x39, 0x6f, 0xca, 0xc5, 0x64, 0xe0, - 0x20, 0xb6, 0xda, 0xc1, 0xb9, 0x52, 0x0e, 0xca, 0xdf, 0x8e, 0xfe, 0x30, 0x19, 0x06, 0x09, 0x2b, - 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, 0x02, 0x04, 0x0c, 0x1e, 0x0a, 0x00, 0x53, 0x00, 0x75, - 0x00, 0x62, 0x00, 0x43, 0x00, 0x41, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, - 0x02, 0x01, 0x86, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, - 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, - 0x30, 0x16, 0x80, 0x14, 0xa3, 0x01, 0x04, 0x7e, 0x30, 0x88, 0x33, 0xeb, 0xb9, 0x31, 0x9c, 0xca, - 0xeb, 0x85, 0x76, 0x67, 0xfc, 0x65, 0xb4, 0xd1, 0x30, 0x59, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, - 0x52, 0x30, 0x50, 0x30, 0x4e, 0xa0, 0x4c, 0xa0, 0x4a, 0x86, 0x48, 0x68, 0x74, 0x74, 0x70, 0x3a, - 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x54, 0x65, 0x73, 0x52, 0x6f, 0x6f, 0x43, 0x65, - 0x72, 0x41, 0x75, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x2d, 0x31, 0x37, 0x2e, - 0x63, 0x72, 0x6c, 0x30, 0x5d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, - 0x51, 0x30, 0x4f, 0x30, 0x4d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, - 0x41, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, - 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x65, - 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x54, 0x65, 0x73, 0x52, 0x6f, 0x6f, 0x43, 0x65, 0x72, - 0x41, 0x75, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x2d, 0x31, 0x37, 0x2e, 0x63, - 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, - 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x91, 0x2d, 0x11, 0x36, 0xd1, 0x2c, 0x5e, 0x21, 0x77, 0x62, - 0x1a, 0xa1, 0xcf, 0x9a, 0x7e, 0x62, 0x2d, 0xc9, 0x90, 0xb9, 0x0e, 0x3d, 0x71, 0x0d, 0xa0, 0x4a, - 0x48, 0xad, 0xe1, 0xd6, 0xb0, 0x73, 0x4a, 0x51, 0x4b, 0x4c, 0xb2, 0x6b, 0x88, 0x0a, 0x5a, 0xb7, - 0xe9, 0x55, 0x67, 0x43, 0x8b, 0xf1, 0x9d, 0xcc, 0x52, 0x03, 0xaf, 0xac, 0x85, 0xe9, 0xd3, 0x75, - 0xce, 0xe5, 0x6f, 0x8b, 0x3c, 0x80, 0x81, 0xab, 0xd1, 0xd1, 0x73, 0x0d, 0x6b, 0xb0, 0x51, 0xb8, - 0xa2, 0x5e, 0x0c, 0x09, 0xe5, 0xa6, 0xbc, 0x54, 0x49, 0xe5, 0x54, 0x38, 0x5a, 0xb7, 0x43, 0xd2, - 0x75, 0x34, 0x52, 0xdd, 0x35, 0x79, 0x95, 0x98, 0xd5, 0x3c, 0xc6, 0xda, 0x46, 0xb2, 0xd8, 0xa0, - 0xa7, 0xcc, 0x30, 0x31, 0x0f, 0x4b, 0xeb, 0xb7, 0x02, 0xab, 0x2b, 0x38, 0xd2, 0xb7, 0x27, 0xc2, - 0xc7, 0x0d, 0x62, 0xa4, 0xc0, 0x48, 0xf4, 0x1a, 0x48, 0x79, 0x7d, 0xe1, 0x31, 0xa4, 0x5d, 0x19, - 0xd0, 0x18, 0x17, 0x00, 0xca, 0xe3, 0x5d, 0x0b, 0xc1, 0x85, 0x7f, 0xf1, 0xbe, 0xd3, 0xcb, 0x97, - 0xf4, 0x1b, 0x62, 0x0f, 0xd7, 0x14, 0x38, 0x8d, 0xb2, 0x2e, 0x98, 0xd4, 0x41, 0x6a, 0xb0, 0xb5, - 0x84, 0xee, 0xd8, 0x2c, 0x2d, 0x13, 0xfc, 0x50, 0x1d, 0x9a, 0x6f, 0x31, 0x87, 0x1c, 0xe0, 0xd0, - 0xd0, 0xd3, 0x24, 0x52, 0xdf, 0x12, 0x8d, 0xfb, 0xf7, 0x7f, 0x33, 0x04, 0x17, 0x7a, 0x8b, 0xe3, - 0xbd, 0x7c, 0x1e, 0xa2, 0x2a, 0x91, 0x76, 0xd9, 0xfc, 0x43, 0x17, 0xa7, 0x0a, 0xa1, 0xd9, 0xc6, - 0x3c, 0x3a, 0x42, 0xed, 0xb7, 0x12, 0xcd, 0x9e, 0xdd, 0xfe, 0x91, 0x9d, 0x98, 0xb5, 0x35, 0xe8, - 0x94, 0xdd, 0x9a, 0xce, 0xd4, 0xf4, 0xac, 0xca, 0xa6, 0xcd, 0x59, 0x3d, 0xde, 0x44, 0xbf, 0x0e, - 0x82, 0xe5, 0xdf, 0x5c, 0xe3, 0x49, 0xcb, 0x01, 0xa0, 0x7f, 0x7b, 0xe2, 0x25, 0x21, 0xab, 0x95, - 0x50, 0x1e, 0x9f, 0xea, 0x77, 0x56, 0x47, 0x74, 0x73, 0xf2, 0x25, 0x1b, 0x0e, 0x36, 0xb9, 0xa2, - 0x57, 0xbf, 0x2c, 0x57, 0xbc, 0xe4, 0xfb, 0x88, 0xb1, 0x83, 0x56, 0xd8, 0x3c, 0xe0, 0x7c, 0xfd, - 0x11, 0x9f, 0xde, 0xe1, 0xb7, 0xd4, 0xc6, 0x23, 0xaf, 0xae, 0xc7, 0x5e, 0x4f, 0xc5, 0x23, 0x74, - 0x98, 0x38, 0x74, 0x9d, 0x0d, 0x0d, 0x6d, 0xf4, 0xde, 0x28, 0x44, 0x41, 0xd8, 0x22, 0x68, 0xe7, - 0x57, 0xa7, 0x66, 0x74, 0xb5, 0xc3, 0x31, 0x24, 0xe2, 0x7c, 0xd5, 0x52, 0x5d, 0x8a, 0xd2, 0x4e, - 0x14, 0xbb, 0x08, 0xd3, 0x1a, 0x31, 0x12, 0x04, 0x58, 0x9b, 0x3a, 0x99, 0x78, 0x93, 0x51, 0x3f, - 0x0b, 0x85, 0xce, 0xde, 0x09, 0x58, 0xf9, 0x96, 0x1b, 0x91, 0x11, 0xa0, 0x68, 0x53, 0x33, 0xcb, - 0xbe, 0x08, 0x89, 0xcc, 0x95, 0x55, 0xae, 0x06, 0x78, 0x27, 0x99, 0xa2, 0x56, 0xef, 0xae, 0x95, - 0x0a, 0x7f, 0x0d, 0xeb, 0x43, 0x0c, 0xc6, 0x9e, 0x3f, 0x80, 0xbb, 0xc4, 0x74, 0x03, 0x9d, 0xb8, - 0x1a, 0xaa, 0xbc, 0xcb, 0x1e, 0x03, 0xfb, 0xd8, 0x49, 0x89, 0x9d, 0x20, 0xaa, 0x25, 0x4b, 0x47, - 0x67, 0xf4, 0xa7, 0x0d, 0x8d, 0x76, 0x30, 0xc6, 0x48, 0xce, 0xdd, 0x8d, 0xfa, 0xbe, 0xda, 0xb4, - 0xeb, 0x3d, 0xd8, 0x0c, 0x3b, 0x15, 0x9a, 0xd1, 0x83, 0x85, 0xe5, 0xe3, 0x92, 0xaa, 0x3b, 0xad, - 0x34, 0x0c, 0x39, 0xf1, 0x7f, 0x75, 0xae, 0xe8, 0x70, 0xb0, 0xfd, 0xf2, 0x8e, 0x29, 0xda, 0xdc, - 0x09, 0x4f, 0x8a, 0x7b, 0x63, 0xbe, 0x1e, 0x8a, 0xc3, 0x58, 0xd1, 0x03, 0xbe, 0x37, 0xe9, 0xed, - 0x32, 0x26, 0xa8, 0x0c, 0xfe, 0xed, 0x12, 0xa7, 0x63, 0x04, 0xb3, 0x92, 0x97, 0xd9, 0x46, 0xa3, - 0x33, 0x33, 0x9c, 0x5b, 0xbc, 0x54, 0x30, 0x82, 0x06, 0x1d, 0x30, 0x82, 0x05, 0x05, 0xa0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x0a, 0x4e, 0x30, 0xa5, 0xbb, 0x00, 0x00, 0x00, 0x12, 0x7b, 0xf2, 0x30, - 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, - 0x81, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, - 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, - 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, - 0x74, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, - 0x19, 0x16, 0x04, 0x63, 0x6f, 0x72, 0x70, 0x31, 0x17, 0x30, 0x15, 0x06, 0x0a, 0x09, 0x92, 0x26, - 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x07, 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, - 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x4d, 0x53, 0x49, 0x54, 0x20, - 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, - 0x20, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x34, 0x32, 0x31, 0x30, 0x33, 0x33, 0x33, - 0x34, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x34, 0x32, 0x30, 0x30, 0x33, 0x33, 0x33, 0x34, - 0x39, 0x5a, 0x30, 0x70, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, - 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, - 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, - 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, - 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x13, 0x11, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x73, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, - 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, - 0x02, 0x82, 0x01, 0x01, 0x00, 0xca, 0x9f, 0xcb, 0x8c, 0x5e, 0x61, 0x19, 0xb5, 0x37, 0x72, 0xd1, - 0xe2, 0x88, 0x1f, 0x37, 0x56, 0xce, 0xa8, 0x88, 0x05, 0x3e, 0xe8, 0xa6, 0x8d, 0xfd, 0x0b, 0x30, - 0x63, 0x54, 0x89, 0x1d, 0xda, 0x11, 0x70, 0x5a, 0x06, 0x00, 0x86, 0xd7, 0x7f, 0xe6, 0x21, 0x70, - 0x41, 0x81, 0x26, 0x4b, 0x6e, 0xc7, 0x02, 0xe2, 0xbf, 0x61, 0x45, 0x04, 0x2f, 0x45, 0xbc, 0xd2, - 0x0d, 0xf6, 0xac, 0xda, 0x91, 0x6d, 0xc6, 0x60, 0xad, 0xb3, 0x0b, 0x32, 0xe5, 0x13, 0x95, 0x96, - 0x02, 0x4e, 0x10, 0xad, 0x2e, 0x6c, 0xb0, 0xc7, 0x65, 0x6d, 0xea, 0x89, 0x91, 0x67, 0x73, 0x5d, - 0x05, 0x12, 0x9f, 0x95, 0x74, 0x6a, 0x6d, 0xb0, 0x6a, 0xd8, 0x94, 0x9b, 0xb0, 0x70, 0x79, 0xb0, - 0x85, 0x42, 0xe7, 0xd7, 0x19, 0xc4, 0x33, 0xfd, 0xac, 0xbe, 0x2b, 0xd5, 0x7e, 0x5a, 0xa9, 0xc7, - 0xa7, 0x68, 0x53, 0xed, 0xaa, 0x51, 0x2a, 0x6b, 0xac, 0x5a, 0xd7, 0x6e, 0xcf, 0x68, 0x60, 0x90, - 0xc7, 0xda, 0xd1, 0xe7, 0xf2, 0x53, 0x4a, 0x01, 0xaf, 0xe8, 0xb1, 0x29, 0x91, 0xab, 0x4c, 0x58, - 0x64, 0xe6, 0xb6, 0xcc, 0xdc, 0x0f, 0x43, 0xf2, 0x87, 0x15, 0xf8, 0x73, 0x06, 0xb8, 0x1f, 0xaa, - 0xf2, 0x66, 0x49, 0x82, 0xca, 0xf0, 0xdd, 0x4c, 0x7c, 0xd5, 0xe7, 0x59, 0xb7, 0xc6, 0xd3, 0x81, - 0x29, 0x5c, 0xce, 0xe4, 0xfd, 0xf7, 0xeb, 0x58, 0x6b, 0x50, 0x79, 0x72, 0x83, 0x4d, 0x59, 0xec, - 0xd1, 0xd2, 0xfc, 0x3a, 0x10, 0xc5, 0x7a, 0xba, 0x90, 0xea, 0xfd, 0x54, 0xc7, 0xc8, 0x58, 0x2d, - 0x84, 0xe5, 0x5b, 0x51, 0x98, 0x2c, 0x36, 0x7c, 0x42, 0x2b, 0xb1, 0x62, 0x4b, 0x0f, 0xf9, 0x72, - 0xd3, 0x3f, 0x99, 0xc8, 0xb4, 0x02, 0x17, 0x39, 0xe5, 0x0b, 0xf2, 0x5d, 0x2d, 0x7f, 0x23, 0x41, - 0xcd, 0x58, 0x3a, 0x25, 0x75, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x02, 0xa5, 0x30, 0x82, - 0x02, 0xa1, 0x30, 0x3d, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x07, 0x04, - 0x30, 0x30, 0x2e, 0x06, 0x26, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x08, 0x83, 0xcf, - 0x89, 0x4d, 0xad, 0xf2, 0x02, 0x85, 0xa1, 0x9f, 0x0c, 0x82, 0xfa, 0xca, 0x7d, 0x81, 0xe1, 0xfb, - 0x74, 0x81, 0x4f, 0x84, 0x9a, 0xf1, 0x69, 0x85, 0xa1, 0xad, 0x1d, 0x02, 0x01, 0x64, 0x02, 0x01, - 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x29, - 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x0a, 0x04, 0x1c, 0x30, 0x1a, 0x30, - 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0a, 0x03, 0x06, 0x30, 0x0a, 0x06, - 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x25, - 0x04, 0x18, 0x30, 0x16, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0a, 0x03, 0x06, - 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, - 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc9, 0x5a, 0xb3, 0x11, 0x02, 0x66, 0x71, 0x8c, 0x5b, 0x06, 0x80, - 0x8a, 0x6d, 0x4f, 0x5b, 0xf2, 0xb5, 0x67, 0x45, 0xb5, 0x30, 0x30, 0x06, 0x03, 0x55, 0x1d, 0x11, - 0x04, 0x29, 0x30, 0x27, 0xa0, 0x25, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, - 0x02, 0x03, 0xa0, 0x17, 0x0c, 0x15, 0x77, 0x69, 0x6e, 0x63, 0x62, 0x6c, 0x64, 0x40, 0x6d, 0x69, - 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1f, 0x06, 0x03, 0x55, - 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0xfe, 0x61, 0x39, 0x6f, 0xca, 0xc5, 0x64, - 0xe0, 0x20, 0xb6, 0xda, 0xc1, 0xb9, 0x52, 0x0e, 0xca, 0xdf, 0x8e, 0xfe, 0x30, 0x81, 0xe8, 0x06, - 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, 0xe0, 0x30, 0x81, 0xdd, 0x30, 0x81, 0xda, 0xa0, 0x81, 0xd7, - 0xa0, 0x81, 0xd4, 0x86, 0x36, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x72, 0x70, - 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54, - 0x65, 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32, - 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x86, 0x4d, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x6d, 0x73, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, - 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x6d, 0x73, 0x63, 0x6f, - 0x72, 0x70, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54, 0x65, - 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32, 0x30, - 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x86, 0x4b, 0x68, 0x74, 0x74, 0x70, - 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x6d, 0x73, 0x63, 0x6f, 0x72, 0x70, 0x2f, - 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54, 0x65, 0x73, 0x74, 0x25, - 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, - 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xa9, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, - 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0x9c, 0x30, 0x81, 0x99, 0x30, 0x42, 0x06, 0x08, 0x2b, 0x06, - 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x36, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, - 0x6f, 0x72, 0x70, 0x70, 0x6b, 0x69, 0x2f, 0x61, 0x69, 0x61, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25, - 0x32, 0x30, 0x54, 0x65, 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, - 0x6e, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x53, - 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x47, 0x68, 0x74, 0x74, 0x70, - 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x6d, 0x73, 0x63, 0x6f, 0x72, 0x70, 0x2f, - 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54, 0x65, 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, - 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, - 0x63, 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x97, 0x6d, 0x52, 0x46, 0x65, 0x08, 0x60, 0x01, 0x12, - 0x7a, 0x26, 0xaa, 0xd9, 0xc3, 0x15, 0xec, 0xc6, 0xae, 0x0b, 0x75, 0xe4, 0xd5, 0xe0, 0x31, 0xf6, - 0xda, 0xc0, 0xb1, 0x1b, 0x7b, 0x8a, 0x07, 0xda, 0x2f, 0x82, 0x4a, 0x21, 0x89, 0xe6, 0x61, 0x97, - 0xe4, 0x3a, 0x38, 0xd8, 0x0a, 0x26, 0x4e, 0x83, 0x54, 0xbf, 0x32, 0xe3, 0x64, 0x36, 0x61, 0x40, - 0x75, 0x55, 0xf1, 0xaa, 0x34, 0xb2, 0xd3, 0x45, 0x8d, 0x79, 0x9a, 0x93, 0x0b, 0x9f, 0x5a, 0xb3, - 0x5b, 0xcf, 0x0d, 0x28, 0x00, 0x46, 0x68, 0xe7, 0x36, 0xc9, 0xe6, 0xd2, 0x03, 0x2d, 0x1c, 0x2b, - 0x24, 0x79, 0x32, 0xfb, 0xd8, 0x43, 0xb4, 0x0e, 0xd0, 0x37, 0x3b, 0x5e, 0x15, 0xbf, 0x8a, 0x00, - 0x56, 0x00, 0x95, 0x00, 0xd4, 0x71, 0x09, 0xe1, 0x84, 0xfa, 0x6e, 0xc5, 0x75, 0x2f, 0xe1, 0x83, - 0x7b, 0x66, 0xe2, 0x22, 0x75, 0x23, 0x6a, 0xf3, 0x83, 0xfc, 0x94, 0xf8, 0x51, 0x6d, 0x40, 0x6d, - 0x20, 0x7e, 0xb0, 0xe9, 0xac, 0xa8, 0x28, 0x04, 0xa0, 0x1a, 0x3c, 0x88, 0x7e, 0x7e, 0x3b, 0x96, - 0xe9, 0xd0, 0x4b, 0xfa, 0xfa, 0x34, 0x4a, 0x4f, 0xe7, 0xe8, 0x76, 0x16, 0x20, 0xc0, 0x10, 0xca, - 0x1f, 0x7a, 0xde, 0x54, 0xfd, 0xb7, 0xf0, 0xea, 0x8f, 0xe2, 0xcb, 0xa5, 0x1c, 0x58, 0x18, 0x57, - 0x6c, 0x7d, 0x06, 0xde, 0x8c, 0xbd, 0x45, 0xd7, 0x28, 0x86, 0x13, 0x42, 0xaa, 0x4a, 0x9a, 0x50, - 0xc5, 0x76, 0x7f, 0x63, 0x99, 0xd0, 0x90, 0x92, 0xd6, 0xc9, 0x21, 0xf2, 0xb8, 0x66, 0x9c, 0x96, - 0x53, 0xd2, 0xe5, 0xc4, 0xdd, 0x3a, 0x7c, 0x06, 0xae, 0xb1, 0x7a, 0xb4, 0x36, 0x04, 0x9d, 0xe6, - 0x2a, 0xe4, 0x6a, 0x56, 0xd0, 0x9a, 0x98, 0xa2, 0xbf, 0x6f, 0x43, 0xf2, 0xb0, 0x5b, 0xfd, 0xd9, - 0xfa, 0x08, 0x17, 0xc8, 0x3c, 0x61, 0xf1, 0x31, 0x82, 0x02, 0x3a, 0x30, 0x82, 0x02, 0x36, 0x02, - 0x01, 0x01, 0x30, 0x81, 0x90, 0x30, 0x81, 0x81, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0a, 0x09, 0x92, - 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, 0x31, 0x19, 0x30, - 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6d, - 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x09, 0x92, - 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x04, 0x63, 0x6f, 0x72, 0x70, 0x31, 0x17, - 0x30, 0x15, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x07, - 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x13, 0x17, 0x4d, 0x53, 0x49, 0x54, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, - 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x33, 0x02, 0x0a, 0x4e, 0x30, 0xa5, 0xbb, 0x00, - 0x00, 0x00, 0x12, 0x7b, 0xf2, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, - 0x02, 0x01, 0x05, 0x00, 0xa0, 0x7c, 0x30, 0x10, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, - 0x37, 0x02, 0x01, 0x0c, 0x31, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, - 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, - 0x02, 0x01, 0x04, 0x30, 0x1c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, - 0x0b, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, - 0x15, 0x30, 0x2f, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x22, - 0x04, 0x20, 0x25, 0x60, 0x6e, 0xc8, 0x66, 0x72, 0x73, 0xb0, 0x71, 0x7b, 0x82, 0x09, 0x8c, 0x27, - 0xe8, 0xb1, 0x4a, 0x36, 0x1c, 0x81, 0x36, 0xb4, 0x1b, 0x44, 0xdf, 0x09, 0x82, 0x8b, 0xf9, 0xb6, - 0x1c, 0x65, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, - 0x00, 0x04, 0x82, 0x01, 0x00, 0x01, 0xb7, 0x8e, 0x46, 0x9b, 0xb4, 0x18, 0xcd, 0xf6, 0x39, 0x8f, - 0x82, 0x79, 0xbc, 0x96, 0x55, 0x7e, 0xd7, 0x84, 0x8f, 0x18, 0x37, 0x48, 0x4e, 0x8f, 0x25, 0x6f, - 0x1a, 0x6c, 0x60, 0xe9, 0xc1, 0x5f, 0x65, 0xec, 0xb0, 0x4b, 0x35, 0x98, 0x8a, 0x31, 0x6b, 0xfd, - 0xa9, 0xd2, 0x28, 0xa7, 0x00, 0xd0, 0x5c, 0x97, 0x2e, 0x3d, 0x19, 0x96, 0x75, 0xc2, 0x9a, 0xa7, - 0x4e, 0x2d, 0x3c, 0x6a, 0xd7, 0xd1, 0x81, 0x96, 0x2e, 0x06, 0x54, 0x82, 0xe9, 0x87, 0xa2, 0x53, - 0x63, 0x6a, 0xda, 0x72, 0xa3, 0x41, 0x4f, 0x14, 0xc5, 0x3d, 0x41, 0x7d, 0xbb, 0xd7, 0x29, 0x11, - 0x96, 0x14, 0x60, 0x5f, 0xb9, 0xd3, 0x47, 0xb6, 0x23, 0x97, 0x64, 0xf6, 0xe1, 0xac, 0x6c, 0x4d, - 0xa9, 0x58, 0xc2, 0x35, 0xbf, 0x02, 0xee, 0x29, 0xd4, 0x52, 0x80, 0x25, 0xa1, 0x7e, 0xbe, 0x21, - 0xcd, 0x04, 0x3c, 0x4d, 0x7d, 0xdb, 0x9b, 0x13, 0x71, 0x35, 0x13, 0x8d, 0x16, 0x0a, 0x40, 0x7b, - 0x63, 0x45, 0x00, 0x11, 0xc5, 0x3e, 0xc8, 0x21, 0x37, 0xc9, 0xbc, 0xd2, 0x0f, 0x82, 0x21, 0xf9, - 0x2f, 0xde, 0xb3, 0x1c, 0x9b, 0x67, 0xb6, 0x5a, 0xb8, 0x74, 0xa0, 0x30, 0xd8, 0x86, 0x1f, 0xd9, - 0x08, 0x45, 0xf9, 0x6b, 0xe8, 0x57, 0xda, 0xb7, 0x14, 0xf7, 0x63, 0x97, 0xfd, 0x87, 0x61, 0x1e, - 0x95, 0x6f, 0xba, 0x53, 0x40, 0x5e, 0x9f, 0x49, 0xf6, 0xe7, 0x3c, 0x59, 0xd9, 0x78, 0x08, 0x4c, - 0xa6, 0x4a, 0xa2, 0x05, 0x42, 0xa7, 0x77, 0xbc, 0x44, 0x7b, 0xed, 0xdb, 0x77, 0x63, 0x4c, 0x63, - 0x22, 0xb6, 0x17, 0x3f, 0x4f, 0x33, 0xed, 0xa6, 0xd9, 0x0f, 0x74, 0xfa, 0x97, 0x8d, 0x98, 0x55, - 0x42, 0x14, 0x76, 0xd4, 0x89, 0x07, 0xf2, 0x30, 0x5a, 0x27, 0x96, 0x1b, 0x92, 0x70, 0x5a, 0x83, - 0x89, 0x0f, 0xdb, 0x47, 0x7a, 0x00, 0x00, 0x00, 0x0a - }; - -// -// Sample root certificate for code signing. -// A trusted certificate with self-signing, will be used to construct the certificate chains for -// authority checking. -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TestRootCert1[] = { - 0x30, 0x82, 0x05, 0x99, 0x30, 0x82, 0x03, 0x81, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79, - 0xAD, 0x16, 0xA1, 0x4A, 0xA0, 0xA5, 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07, 0x13, 0x2E, 0x65, 0x30, - 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5F, - 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, - 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, - 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, - 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, - 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, - 0x1E, 0x17, 0x0D, 0x30, 0x31, 0x30, 0x35, 0x30, 0x39, 0x32, 0x33, 0x31, 0x39, 0x32, 0x32, 0x5A, - 0x17, 0x0D, 0x32, 0x31, 0x30, 0x35, 0x30, 0x39, 0x32, 0x33, 0x32, 0x38, 0x31, 0x33, 0x5A, 0x30, - 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, - 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, - 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, - 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, - 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, - 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, - 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00, 0x30, 0x82, 0x02, 0x0A, 0x02, 0x82, 0x02, 0x01, - 0x00, 0xF3, 0x5D, 0xFA, 0x80, 0x67, 0xD4, 0x5A, 0xA7, 0xA9, 0x0C, 0x2C, 0x90, 0x20, 0xD0, 0x35, - 0x08, 0x3C, 0x75, 0x84, 0xCD, 0xB7, 0x07, 0x89, 0x9C, 0x89, 0xDA, 0xDE, 0xCE, 0xC3, 0x60, 0xFA, - 0x91, 0x68, 0x5A, 0x9E, 0x94, 0x71, 0x29, 0x18, 0x76, 0x7C, 0xC2, 0xE0, 0xC8, 0x25, 0x76, 0x94, - 0x0E, 0x58, 0xFA, 0x04, 0x34, 0x36, 0xE6, 0xDF, 0xAF, 0xF7, 0x80, 0xBA, 0xE9, 0x58, 0x0B, 0x2B, - 0x93, 0xE5, 0x9D, 0x05, 0xE3, 0x77, 0x22, 0x91, 0xF7, 0x34, 0x64, 0x3C, 0x22, 0x91, 0x1D, 0x5E, - 0xE1, 0x09, 0x90, 0xBC, 0x14, 0xFE, 0xFC, 0x75, 0x58, 0x19, 0xE1, 0x79, 0xB7, 0x07, 0x92, 0xA3, - 0xAE, 0x88, 0x59, 0x08, 0xD8, 0x9F, 0x07, 0xCA, 0x03, 0x58, 0xFC, 0x68, 0x29, 0x6D, 0x32, 0xD7, - 0xD2, 0xA8, 0xCB, 0x4B, 0xFC, 0xE1, 0x0B, 0x48, 0x32, 0x4F, 0xE6, 0xEB, 0xB8, 0xAD, 0x4F, 0xE4, - 0x5C, 0x6F, 0x13, 0x94, 0x99, 0xDB, 0x95, 0xD5, 0x75, 0xDB, 0xA8, 0x1A, 0xB7, 0x94, 0x91, 0xB4, - 0x77, 0x5B, 0xF5, 0x48, 0x0C, 0x8F, 0x6A, 0x79, 0x7D, 0x14, 0x70, 0x04, 0x7D, 0x6D, 0xAF, 0x90, - 0xF5, 0xDA, 0x70, 0xD8, 0x47, 0xB7, 0xBF, 0x9B, 0x2F, 0x6C, 0xE7, 0x05, 0xB7, 0xE1, 0x11, 0x60, - 0xAC, 0x79, 0x91, 0x14, 0x7C, 0xC5, 0xD6, 0xA6, 0xE4, 0xE1, 0x7E, 0xD5, 0xC3, 0x7E, 0xE5, 0x92, - 0xD2, 0x3C, 0x00, 0xB5, 0x36, 0x82, 0xDE, 0x79, 0xE1, 0x6D, 0xF3, 0xB5, 0x6E, 0xF8, 0x9F, 0x33, - 0xC9, 0xCB, 0x52, 0x7D, 0x73, 0x98, 0x36, 0xDB, 0x8B, 0xA1, 0x6B, 0xA2, 0x95, 0x97, 0x9B, 0xA3, - 0xDE, 0xC2, 0x4D, 0x26, 0xFF, 0x06, 0x96, 0x67, 0x25, 0x06, 0xC8, 0xE7, 0xAC, 0xE4, 0xEE, 0x12, - 0x33, 0x95, 0x31, 0x99, 0xC8, 0x35, 0x08, 0x4E, 0x34, 0xCA, 0x79, 0x53, 0xD5, 0xB5, 0xBE, 0x63, - 0x32, 0x59, 0x40, 0x36, 0xC0, 0xA5, 0x4E, 0x04, 0x4D, 0x3D, 0xDB, 0x5B, 0x07, 0x33, 0xE4, 0x58, - 0xBF, 0xEF, 0x3F, 0x53, 0x64, 0xD8, 0x42, 0x59, 0x35, 0x57, 0xFD, 0x0F, 0x45, 0x7C, 0x24, 0x04, - 0x4D, 0x9E, 0xD6, 0x38, 0x74, 0x11, 0x97, 0x22, 0x90, 0xCE, 0x68, 0x44, 0x74, 0x92, 0x6F, 0xD5, - 0x4B, 0x6F, 0xB0, 0x86, 0xE3, 0xC7, 0x36, 0x42, 0xA0, 0xD0, 0xFC, 0xC1, 0xC0, 0x5A, 0xF9, 0xA3, - 0x61, 0xB9, 0x30, 0x47, 0x71, 0x96, 0x0A, 0x16, 0xB0, 0x91, 0xC0, 0x42, 0x95, 0xEF, 0x10, 0x7F, - 0x28, 0x6A, 0xE3, 0x2A, 0x1F, 0xB1, 0xE4, 0xCD, 0x03, 0x3F, 0x77, 0x71, 0x04, 0xC7, 0x20, 0xFC, - 0x49, 0x0F, 0x1D, 0x45, 0x88, 0xA4, 0xD7, 0xCB, 0x7E, 0x88, 0xAD, 0x8E, 0x2D, 0xEC, 0x45, 0xDB, - 0xC4, 0x51, 0x04, 0xC9, 0x2A, 0xFC, 0xEC, 0x86, 0x9E, 0x9A, 0x11, 0x97, 0x5B, 0xDE, 0xCE, 0x53, - 0x88, 0xE6, 0xE2, 0xB7, 0xFD, 0xAC, 0x95, 0xC2, 0x28, 0x40, 0xDB, 0xEF, 0x04, 0x90, 0xDF, 0x81, - 0x33, 0x39, 0xD9, 0xB2, 0x45, 0xA5, 0x23, 0x87, 0x06, 0xA5, 0x55, 0x89, 0x31, 0xBB, 0x06, 0x2D, - 0x60, 0x0E, 0x41, 0x18, 0x7D, 0x1F, 0x2E, 0xB5, 0x97, 0xCB, 0x11, 0xEB, 0x15, 0xD5, 0x24, 0xA5, - 0x94, 0xEF, 0x15, 0x14, 0x89, 0xFD, 0x4B, 0x73, 0xFA, 0x32, 0x5B, 0xFC, 0xD1, 0x33, 0x00, 0xF9, - 0x59, 0x62, 0x70, 0x07, 0x32, 0xEA, 0x2E, 0xAB, 0x40, 0x2D, 0x7B, 0xCA, 0xDD, 0x21, 0x67, 0x1B, - 0x30, 0x99, 0x8F, 0x16, 0xAA, 0x23, 0xA8, 0x41, 0xD1, 0xB0, 0x6E, 0x11, 0x9B, 0x36, 0xC4, 0xDE, - 0x40, 0x74, 0x9C, 0xE1, 0x58, 0x65, 0xC1, 0x60, 0x1E, 0x7A, 0x5B, 0x38, 0xC8, 0x8F, 0xBB, 0x04, - 0x26, 0x7C, 0xD4, 0x16, 0x40, 0xE5, 0xB6, 0x6B, 0x6C, 0xAA, 0x86, 0xFD, 0x00, 0xBF, 0xCE, 0xC1, - 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x51, 0x30, 0x4F, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, - 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0xC6, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, - 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, - 0x16, 0x04, 0x14, 0x0E, 0xAC, 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, 0xE5, 0x25, 0x13, 0xFC, 0x2A, - 0xE1, 0x0A, 0x53, 0x95, 0x59, 0xE4, 0xA4, 0x30, 0x10, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, - 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0xC5, 0x11, 0x4D, - 0x03, 0x3A, 0x60, 0xDD, 0x5D, 0x52, 0x11, 0x77, 0x8F, 0xB2, 0xBB, 0x36, 0xC8, 0xB2, 0x05, 0xBF, - 0xB4, 0xB7, 0xA8, 0xD8, 0x20, 0x9D, 0x5C, 0x13, 0x03, 0xB6, 0x1C, 0x22, 0xFA, 0x06, 0x13, 0x35, - 0xB6, 0xC8, 0x63, 0xD4, 0x9A, 0x47, 0x6F, 0x26, 0x57, 0xD2, 0x55, 0xF1, 0x04, 0xB1, 0x26, 0x5F, - 0xD6, 0xA9, 0x50, 0x68, 0xA0, 0xBC, 0xD2, 0xB8, 0x6E, 0xCC, 0xC3, 0xE9, 0xAC, 0xDF, 0x19, 0xCD, - 0x78, 0xAC, 0x59, 0x74, 0xAC, 0x66, 0x34, 0x36, 0xC4, 0x1B, 0x3E, 0x6C, 0x38, 0x4C, 0x33, 0x0E, - 0x30, 0x12, 0x0D, 0xA3, 0x26, 0xFE, 0x51, 0x53, 0x00, 0xFF, 0xAF, 0x5A, 0x4E, 0x84, 0x0D, 0x0F, - 0x1F, 0xE4, 0x6D, 0x05, 0x2E, 0x4E, 0x85, 0x4B, 0x8D, 0x6C, 0x33, 0x6F, 0x54, 0xD2, 0x64, 0xAB, - 0xBF, 0x50, 0xAF, 0x7D, 0x7A, 0x39, 0xA0, 0x37, 0xED, 0x63, 0x03, 0x0F, 0xFC, 0x13, 0x06, 0xCE, - 0x16, 0x36, 0xD4, 0x54, 0x3B, 0x95, 0x1B, 0x51, 0x62, 0x3A, 0xE5, 0x4D, 0x17, 0xD4, 0x05, 0x39, - 0x92, 0x9A, 0x27, 0xA8, 0x5B, 0xAA, 0xBD, 0xEC, 0xBB, 0xBE, 0xE3, 0x20, 0x89, 0x60, 0x71, 0x6C, - 0x56, 0xB3, 0xA5, 0x13, 0xD0, 0x6D, 0x0E, 0x23, 0x7E, 0x95, 0x03, 0xED, 0x68, 0x3D, 0xF2, 0xD8, - 0x63, 0xB8, 0x6B, 0x4D, 0xB6, 0xE8, 0x30, 0xB5, 0xE1, 0xCA, 0x94, 0x4B, 0xF7, 0xA2, 0xAA, 0x5D, - 0x99, 0x30, 0xB2, 0x3D, 0xA7, 0xC2, 0x51, 0x6C, 0x28, 0x20, 0x01, 0x24, 0x27, 0x2B, 0x4B, 0x00, - 0xB7, 0x9D, 0x11, 0x6B, 0x70, 0xBE, 0xB2, 0x10, 0x82, 0xBC, 0x0C, 0x9B, 0x68, 0xD0, 0x8D, 0x3B, - 0x24, 0x87, 0xAA, 0x99, 0x28, 0x72, 0x9D, 0x33, 0x5F, 0x59, 0x90, 0xBD, 0xF5, 0xDE, 0x93, 0x9E, - 0x3A, 0x62, 0x5A, 0x34, 0x39, 0xE2, 0x88, 0x55, 0x1D, 0xB9, 0x06, 0xB0, 0xC1, 0x89, 0x6B, 0x2D, - 0xD7, 0x69, 0xC3, 0x19, 0x12, 0x36, 0x84, 0xD0, 0xC9, 0xA0, 0xDA, 0xFF, 0x2F, 0x69, 0x78, 0xB2, - 0xE5, 0x7A, 0xDA, 0xEB, 0xD7, 0x0C, 0xC0, 0xF7, 0xBD, 0x63, 0x17, 0xB8, 0x39, 0x13, 0x38, 0xA2, - 0x36, 0x5B, 0x7B, 0xF2, 0x85, 0x56, 0x6A, 0x1D, 0x64, 0x62, 0xC1, 0x38, 0xE2, 0xAA, 0xBF, 0x51, - 0x66, 0xA2, 0x94, 0xF5, 0x12, 0x9C, 0x66, 0x22, 0x10, 0x6B, 0xF2, 0xB7, 0x30, 0x92, 0x2D, 0xF2, - 0x29, 0xF0, 0x3D, 0x3B, 0x14, 0x43, 0x68, 0xA2, 0xF1, 0x9C, 0x29, 0x37, 0xCB, 0xCE, 0x38, 0x20, - 0x25, 0x6D, 0x7C, 0x67, 0xF3, 0x7E, 0x24, 0x12, 0x24, 0x03, 0x08, 0x81, 0x47, 0xEC, 0xA5, 0x9E, - 0x97, 0xF5, 0x18, 0xD7, 0xCF, 0xBB, 0xD5, 0xEF, 0x76, 0x96, 0xEF, 0xFD, 0xCE, 0xDB, 0x56, 0x9D, - 0x95, 0xA0, 0x42, 0xF9, 0x97, 0x58, 0xE1, 0xD7, 0x31, 0x22, 0xD3, 0x5F, 0x59, 0xE6, 0x3E, 0x6E, - 0x22, 0x00, 0xEA, 0x43, 0x84, 0xB6, 0x25, 0xDB, 0xD9, 0xF3, 0x08, 0x56, 0x68, 0xC0, 0x64, 0x6B, - 0x1D, 0x7C, 0xEC, 0xB6, 0x93, 0xA2, 0x62, 0x57, 0x6E, 0x2E, 0xD8, 0xE7, 0x58, 0x8F, 0xC4, 0x31, - 0x49, 0x26, 0xDD, 0xDE, 0x29, 0x35, 0x87, 0xF5, 0x30, 0x71, 0x70, 0x5B, 0x14, 0x3C, 0x69, 0xBD, - 0x89, 0x12, 0x7D, 0xEB, 0x2E, 0xA3, 0xFE, 0xD8, 0x7F, 0x9E, 0x82, 0x5A, 0x52, 0x0A, 0x2B, 0xC1, - 0x43, 0x2B, 0xD9, 0x30, 0x88, 0x9F, 0xC8, 0x10, 0xFB, 0x89, 0x8D, 0xE6, 0xA1, 0x85, 0x75, 0x33, - 0x7E, 0x6C, 0x9E, 0xDB, 0x73, 0x13, 0x64, 0x62, 0x69, 0xA5, 0x2F, 0x7D, 0xCA, 0x96, 0x6D, 0x9F, - 0xF8, 0x04, 0x4D, 0x30, 0x92, 0x3D, 0x6E, 0x21, 0x14, 0x21, 0xC9, 0x3D, 0xE0, 0xC3, 0xFD, 0x8A, - 0x6B, 0x9D, 0x4A, 0xFD, 0xD1, 0xA1, 0x9D, 0x99, 0x43, 0x77, 0x3F, 0xB0, 0xDA -}; - -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TestRootCert2[] = { - 0x30, 0x82, 0x05, 0xfd, 0x30, 0x82, 0x03, 0xe5, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x74, - 0x45, 0xc8, 0x78, 0x4e, 0x0c, 0xc9, 0x96, 0x4a, 0xb4, 0x2f, 0xbc, 0xda, 0x29, 0xe1, 0xbc, 0x30, - 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, - 0x90, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, - 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, - 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, - 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, - 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x31, - 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x32, 0x30, 0x31, - 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x36, 0x31, 0x37, 0x32, 0x30, 0x35, 0x38, 0x30, - 0x32, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30, 0x36, 0x31, 0x37, 0x32, 0x31, 0x30, 0x34, 0x31, 0x31, - 0x5a, 0x30, 0x81, 0x90, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, - 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, - 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, - 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, - 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, - 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x13, 0x31, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x54, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, - 0x32, 0x30, 0x31, 0x30, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, - 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, - 0x02, 0x82, 0x02, 0x01, 0x00, 0x95, 0xe3, 0xa8, 0xc1, 0xb9, 0x9c, 0x26, 0x54, 0xb0, 0x99, 0xef, - 0x26, 0x1f, 0xac, 0x1e, 0xc7, 0x30, 0x80, 0xbb, 0xf5, 0x3f, 0xf2, 0xe4, 0xbb, 0xf8, 0xfe, 0x06, - 0x6a, 0x0a, 0xa6, 0x88, 0xbc, 0xb4, 0x8c, 0x45, 0xe0, 0x70, 0x55, 0x19, 0x88, 0xb4, 0x05, 0xcb, - 0xb5, 0xc1, 0xa1, 0xfa, 0xd4, 0x7c, 0xc2, 0x42, 0x53, 0x07, 0x9c, 0x54, 0x56, 0xa8, 0x97, 0xe0, - 0x94, 0x69, 0xbe, 0x13, 0x24, 0xef, 0xe5, 0x8a, 0x29, 0x9c, 0xa6, 0xd0, 0x2b, 0x2f, 0x8a, 0xa6, - 0xe8, 0x79, 0x44, 0x2e, 0x8b, 0xea, 0xc9, 0xbe, 0xb8, 0x54, 0x86, 0x53, 0xbe, 0x07, 0x24, 0x34, - 0x54, 0x15, 0x22, 0x20, 0x01, 0x7b, 0x8a, 0x46, 0xfb, 0xd2, 0x91, 0x07, 0x95, 0x09, 0xb0, 0x56, - 0x11, 0xcc, 0x76, 0xb2, 0xd0, 0x1f, 0x44, 0x79, 0x52, 0x34, 0x28, 0xec, 0x4f, 0x49, 0xc2, 0xcb, - 0x61, 0xd3, 0x86, 0xdc, 0xe4, 0xa3, 0x7e, 0x55, 0x9e, 0x9f, 0xee, 0x10, 0x6f, 0xcf, 0xe1, 0x3d, - 0xf8, 0xb7, 0x84, 0x79, 0xa2, 0x3b, 0x8d, 0x1c, 0xb0, 0x81, 0x7c, 0xe4, 0x44, 0x07, 0xe4, 0xce, - 0x46, 0xb0, 0x98, 0x83, 0x8d, 0x87, 0x8f, 0xe5, 0xf5, 0xae, 0x40, 0x7a, 0xf1, 0xed, 0x3d, 0x9b, - 0x9a, 0x7c, 0x4a, 0xd1, 0xb9, 0xc3, 0x94, 0x05, 0x7b, 0xdc, 0xda, 0xb8, 0xce, 0xdc, 0x1e, 0x6c, - 0xcf, 0xd9, 0x9e, 0x37, 0xef, 0xc3, 0x5a, 0x36, 0x7b, 0x90, 0x86, 0x45, 0xdc, 0xf6, 0x2e, 0xca, - 0xdd, 0xee, 0xde, 0x27, 0xd9, 0x74, 0x9a, 0x69, 0xf5, 0xd9, 0x5d, 0x09, 0x2d, 0x45, 0x41, 0xcc, - 0xb7, 0xc2, 0x82, 0xd4, 0x2a, 0x8c, 0x16, 0x25, 0x92, 0x97, 0x3d, 0x94, 0x4e, 0x89, 0x33, 0x7e, - 0x5b, 0x03, 0x54, 0xcd, 0xb0, 0x83, 0xa0, 0x8e, 0x41, 0xb7, 0x87, 0x8d, 0xd9, 0x05, 0x63, 0x52, - 0xf6, 0xee, 0xe6, 0x4e, 0x13, 0x9d, 0x54, 0xcd, 0x49, 0xfe, 0xe3, 0x8b, 0x3b, 0x50, 0x9b, 0x48, - 0xbb, 0xb2, 0xe5, 0x92, 0xd4, 0xab, 0xa0, 0xc5, 0x10, 0xaf, 0x3e, 0xb1, 0x45, 0x21, 0x34, 0x90, - 0xdc, 0xad, 0xb9, 0xf7, 0xfe, 0x21, 0xae, 0xee, 0x50, 0x58, 0x7a, 0x3a, 0xe5, 0xaa, 0xd8, 0xe3, - 0x82, 0xd6, 0xcf, 0x6d, 0x4d, 0xc9, 0x15, 0xac, 0x9c, 0x31, 0x17, 0xa5, 0x16, 0xa7, 0x42, 0xf6, - 0xda, 0x12, 0x78, 0xa7, 0x66, 0x90, 0xec, 0xfc, 0xcd, 0x01, 0x63, 0xff, 0xf0, 0x0e, 0xba, 0xe1, - 0xcd, 0xf0, 0xdb, 0x6b, 0x9a, 0x0f, 0xf6, 0x0f, 0x04, 0x01, 0x09, 0xbc, 0x9f, 0xce, 0xb7, 0x6c, - 0x51, 0x70, 0x57, 0x08, 0x1b, 0xff, 0x79, 0x9a, 0x52, 0x5d, 0xba, 0xac, 0x14, 0xe5, 0x3b, 0x67, - 0xcf, 0x2c, 0x52, 0xde, 0x27, 0x9a, 0x34, 0x03, 0x6e, 0x25, 0x48, 0xb0, 0x19, 0x74, 0xfc, 0x4d, - 0x98, 0xc2, 0x4b, 0x8c, 0x92, 0xe1, 0x88, 0xae, 0x48, 0x2a, 0xab, 0xab, 0xcd, 0x14, 0x4d, 0xb6, - 0x61, 0x0e, 0xa1, 0x09, 0x8f, 0x2c, 0xdb, 0x45, 0xaf, 0x7d, 0x3b, 0x81, 0x56, 0x08, 0xc9, 0x3b, - 0x41, 0xb7, 0x64, 0x9f, 0x5d, 0x2e, 0x12, 0x7f, 0xb9, 0x69, 0x29, 0x1f, 0x52, 0x45, 0x4a, 0x23, - 0xc6, 0xaf, 0xb6, 0xb2, 0x38, 0x72, 0x9d, 0x08, 0x33, 0xff, 0xd0, 0xcf, 0x89, 0xb6, 0xea, 0x6e, - 0x85, 0x44, 0x94, 0x3e, 0x91, 0x59, 0xeb, 0xef, 0x9e, 0xbd, 0x9b, 0x9c, 0x1a, 0x47, 0x03, 0x4e, - 0xa2, 0x17, 0x96, 0xfa, 0x62, 0x0b, 0xe8, 0x53, 0xb6, 0x4e, 0xe3, 0xe8, 0x2a, 0x73, 0x59, 0xe2, - 0x13, 0xb8, 0xf8, 0x5a, 0x7e, 0xc6, 0xe2, 0x0a, 0xdd, 0x4a, 0x43, 0xcc, 0xc3, 0x77, 0x3b, 0x7a, - 0x31, 0x04, 0x0a, 0xc1, 0x84, 0x96, 0x3a, 0x63, 0x6e, 0x1a, 0x3e, 0x0a, 0x0c, 0x25, 0xb8, 0x7e, - 0xb5, 0x52, 0x0c, 0xb9, 0xab, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x51, 0x30, 0x4f, 0x30, 0x0b, - 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, - 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, - 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa3, 0x01, 0x04, 0x7e, 0x30, 0x88, 0x33, 0xeb, 0xb9, - 0x31, 0x9c, 0xca, 0xeb, 0x85, 0x76, 0x67, 0xfc, 0x65, 0xb4, 0xd1, 0x30, 0x10, 0x06, 0x09, 0x2b, - 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, - 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, - 0x00, 0x49, 0x8b, 0xc1, 0xfc, 0x4f, 0xe8, 0xe4, 0x2d, 0x67, 0x92, 0x9a, 0x76, 0x05, 0xba, 0xd1, - 0xbc, 0x98, 0xe4, 0x2b, 0xba, 0x1f, 0x66, 0x5f, 0x66, 0x23, 0xcf, 0x1c, 0x27, 0xeb, 0xb4, 0xaa, - 0xdd, 0xa0, 0x17, 0x20, 0x55, 0x72, 0x33, 0xb1, 0x76, 0xde, 0xc9, 0x6d, 0x0d, 0x3c, 0x2d, 0x0a, - 0x08, 0x24, 0x2d, 0xec, 0x38, 0x96, 0x7a, 0x83, 0xf1, 0x27, 0x50, 0x3c, 0x86, 0x09, 0xdd, 0x0d, - 0x41, 0xce, 0xaa, 0x5e, 0xf3, 0x8f, 0x7a, 0x3e, 0x3e, 0xf1, 0xf0, 0xba, 0x8b, 0x72, 0xdd, 0x36, - 0xa1, 0x69, 0x05, 0x5b, 0x7c, 0xec, 0xe7, 0x70, 0x63, 0x8d, 0x1d, 0x6e, 0xc0, 0xfd, 0x3a, 0x03, - 0xf1, 0x10, 0x3e, 0x90, 0xd7, 0x7b, 0x7a, 0xdc, 0xea, 0x60, 0xec, 0x2f, 0x53, 0xfd, 0x19, 0x1d, - 0x3a, 0xa1, 0x74, 0x08, 0xc2, 0x7b, 0x3c, 0xe0, 0x50, 0xac, 0x21, 0xd7, 0xb6, 0xdd, 0xdd, 0x3c, - 0x44, 0x1b, 0xf7, 0xf3, 0x44, 0x3e, 0x6c, 0x96, 0xe0, 0xc0, 0x9f, 0xe6, 0xef, 0xdd, 0xdd, 0xb1, - 0xa6, 0x68, 0x61, 0x6c, 0x5e, 0x9e, 0xf9, 0xff, 0x9a, 0x06, 0xa4, 0x6a, 0xcd, 0x9e, 0x75, 0x43, - 0x89, 0x9b, 0xcb, 0x85, 0xf6, 0xdc, 0x0c, 0x46, 0x4a, 0x8c, 0x9b, 0xac, 0x11, 0xa6, 0x63, 0x45, - 0xfb, 0xfc, 0xde, 0x20, 0xee, 0xce, 0x67, 0x9f, 0x3d, 0xd0, 0x93, 0xdb, 0x39, 0xfb, 0xea, 0x5e, - 0x4b, 0xfc, 0xd6, 0x20, 0xf1, 0x95, 0x36, 0x08, 0x8c, 0xb2, 0xb3, 0xa1, 0x97, 0x1b, 0x41, 0x19, - 0xb0, 0xac, 0xfe, 0xe2, 0xd5, 0xab, 0x7d, 0xd9, 0x26, 0xd4, 0xdc, 0xbd, 0x1f, 0x38, 0xc0, 0xe3, - 0x86, 0xdf, 0x24, 0xe7, 0xf5, 0x3e, 0x09, 0xca, 0x4d, 0xa1, 0xba, 0x16, 0xc3, 0x4a, 0xb1, 0xfc, - 0x72, 0x98, 0xcf, 0x0e, 0x92, 0xfa, 0x57, 0x45, 0xe9, 0x48, 0x4d, 0xc6, 0xa2, 0x7c, 0x3b, 0x72, - 0x63, 0xac, 0x4e, 0xf4, 0x74, 0xe9, 0x2b, 0x57, 0xac, 0xab, 0x32, 0x88, 0x0b, 0xa9, 0x10, 0x67, - 0x53, 0x7e, 0xd2, 0x62, 0xd2, 0xfa, 0x68, 0xe8, 0x9d, 0x5b, 0xae, 0xcd, 0xe0, 0xe5, 0xe2, 0x06, - 0x96, 0x0c, 0x34, 0x32, 0xf6, 0xbc, 0x25, 0xad, 0x98, 0xf3, 0x32, 0x60, 0xbe, 0x14, 0xd3, 0x78, - 0xd1, 0x10, 0x6f, 0xff, 0x32, 0xe3, 0x9e, 0x3d, 0x88, 0xda, 0xb3, 0x32, 0x0a, 0xcf, 0x20, 0x65, - 0x47, 0x78, 0xaa, 0xa5, 0x4b, 0x87, 0x6a, 0x83, 0xdc, 0x1a, 0x5a, 0x2a, 0xdf, 0x70, 0x61, 0xaf, - 0x35, 0x32, 0xe0, 0x59, 0xa1, 0x9f, 0x0b, 0x14, 0x7a, 0xaa, 0xab, 0x42, 0x0b, 0x6b, 0xff, 0xfb, - 0x34, 0xcb, 0x9d, 0x96, 0xd7, 0x26, 0x2a, 0x13, 0x3b, 0xe3, 0xdf, 0x11, 0xe6, 0x86, 0x7d, 0x0d, - 0x09, 0x11, 0x93, 0x4b, 0xa4, 0xf6, 0xd2, 0x07, 0xc2, 0xcd, 0xc8, 0xbe, 0xf5, 0x67, 0xf7, 0xae, - 0x05, 0xce, 0x16, 0xfe, 0x90, 0xc9, 0x4a, 0x98, 0x1b, 0x24, 0x69, 0x78, 0x90, 0xf9, 0x34, 0x8e, - 0x37, 0xe8, 0x6e, 0x1d, 0xdc, 0xcf, 0x4f, 0xe7, 0xd2, 0x64, 0x40, 0x1d, 0xc4, 0x30, 0xba, 0xd5, - 0x08, 0x88, 0x67, 0x4b, 0x0f, 0xb8, 0xe5, 0x59, 0xe9, 0x18, 0xd8, 0x0c, 0x60, 0x68, 0xae, 0x7f, - 0xea, 0x91, 0x55, 0xbe, 0xeb, 0xf1, 0xa7, 0x8e, 0xd8, 0x5d, 0x50, 0x3e, 0xbf, 0xd5, 0x69, 0x57, - 0x95, 0x8f, 0xa7, 0xff, 0xe4, 0x09, 0x3f, 0x08, 0x80, 0x97, 0x32, 0x42, 0xb8, 0x82, 0x43, 0x82, - 0x6f, 0x8b, 0x0b, 0x93, 0xda, 0x19, 0xbf, 0x63, 0x4e, 0x5f, 0x9f, 0xed, 0x2c, 0x22, 0xb6, 0x20, - 0x5f, 0x70, 0x44, 0xfa, 0x89, 0x59, 0x93, 0xb0, 0x7b, 0x12, 0x0f, 0x5e, 0x62, 0x62, 0x51, 0x11, - 0xbd, 0xba, 0x5a, 0xd0, 0xce, 0xa1, 0xb6, 0xef, 0x80, 0x20, 0xe6, 0x73, 0x4b, 0x11, 0x06, 0x56, - 0xe2, 0x0a - }; - -// -// OID ASN.1 Value for Hash Algorithms -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 HashOidValue[] = { - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, // OBJ_md5 - 0x2B, 0x0E, 0x03, 0x02, 0x1A, // OBJ_sha1 - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, // OBJ_sha224 - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, // OBJ_sha256 - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, // OBJ_sha384 - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, // OBJ_sha512 - }; - -/** - Validate MSFT Authenticode Signature. - - @retval TRUE Validation succeeded. - @retval FALSE Validation failed. - -**/ -BOOLEAN -VerifyAuthenticode ( - VOID - ) -{ - BOOLEAN Status; - - Status = FALSE; - Print (L"\n- PE/COFF Authenticode (Digested by SHA-1) Verification ... "); - - // - // Sample Code: Demonstrate how to check the Hash algorithm in PE/COFF Authenticode. - // According to PKCS#7 Definition: - // SignedData ::= SEQUENCE { - // version Version, - // digestAlgorithms DigestAlgorithmIdentifiers, - // contentInfo ContentInfo, - // .... } - // The DigestAlgorithmIdentifiers can be used to determine the hash algorithm in PE/COFF hashing - // This field has the fixed offset (+32) in final Authenticode ASN.1 data. - // - if (CompareMem (AuthenticodeWithSha1 + 32, &HashOidValue[8], 5) == 0) { - // - // Verify Authenticode signature. - // The PeHash value should be calculated following MSFT's Authenticode Specification. - // - Status = AuthenticodeVerify ( - AuthenticodeWithSha1, - sizeof (AuthenticodeWithSha1), - TestRootCert1, - sizeof (TestRootCert1), - PeSha1Hash, - SHA1_DIGEST_SIZE - ); - if (Status) { - Print (L"[Pass]"); - } else { - Print (L"[Fail]"); - } - } else { - Print (L"[Invalid Hash]"); - } - - - Print (L"\n- PE/COFF Authenticode (Digested by SHA-256) Verification ... "); - - if (CompareMem (AuthenticodeWithSha256 + 32, &HashOidValue[22], 9) == 0) { - Status = AuthenticodeVerify ( - AuthenticodeWithSha256, - sizeof (AuthenticodeWithSha256), - TestRootCert2, - sizeof (TestRootCert2), - PeSha256Hash, - SHA256_DIGEST_SIZE - ); - if (Status) { - Print (L"[Pass]"); - } else { - Print (L"[Fail]"); - } - } else { - Print (L"[Invalid Hash]"); - } - - return Status; -} - -/** - Validate UEFI-OpenSSL Authenticode Verification Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateAuthenticode ( - VOID - ) -{ - BOOLEAN Status; - - Print (L"\nUEFI-OpenSSL Authenticode Testing: "); - - Status = VerifyAuthenticode (); - - Print (L"\n"); - - if (Status) { - return EFI_SUCCESS; - } else { - return EFI_ABORTED; - } -} diff --git a/Core/CryptoPkg/Application/Cryptest/BlockCipherVerify.c b/Core/CryptoPkg/Application/Cryptest/BlockCipherVerify.c deleted file mode 100644 index de8f6ecad4..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/BlockCipherVerify.c +++ /dev/null @@ -1,473 +0,0 @@ -/** @file - Application for Block Cipher Primitives Validation. - -Copyright (c) 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -// -// TDES test vectors are extracted from OpenSSL 0.9.8l, crypto\des\destest.c -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbData[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbKey[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbCipher[] = { - 0x8C, 0xA6, 0x4D, 0xE9, 0xC1, 0xB1, 0x23, 0xA7, - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcb2Cipher[] = { - 0x92, 0x95, 0xB5, 0x9B, 0xB3, 0x84, 0x73, 0x6E, - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbcData[] = { - 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, - 0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbcKey[] = { - 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xf1, 0xe0, 0xd3, 0xc2, 0xb5, 0xa4, 0x97, 0x86, - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TdesCbcIvec[] = { - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbc3Cipher[] = { - 0x3F, 0xE3, 0x01, 0xC9, 0x62, 0xAC, 0x01, 0xD0, - 0x22, 0x13, 0x76, 0x3C, 0x1C, 0xBD, 0x4C, 0xDC, - 0x79, 0x96, 0x57, 0xC0, 0x64, 0xEC, 0xF5, 0xD4 - }; - -// -// AES test vectors are from NIST KAT of AES -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbData[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbKey[] = { - 0x10, 0xa5, 0x88, 0x69, 0xd7, 0x4b, 0xe5, 0xa3, 0x74, 0xcf, 0x86, 0x7c, 0xfb, 0x47, 0x38, 0x59 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbCipher[] = { - 0x6d, 0x25, 0x1e, 0x69, 0x44, 0xb0, 0x51, 0xe0, 0x4e, 0xaa, 0x6f, 0xb4, 0xdb, 0xf7, 0x84, 0x65 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbData[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbKey[] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbCipher[] = { - 0xdd, 0x8a, 0x49, 0x35, 0x14, 0x23, 0x1c, 0xbf, 0x56, 0xec, 0xce, 0xe4, 0xc4, 0x08, 0x89, 0xfb - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbData[] = { - 0x01, 0x47, 0x30, 0xf8, 0x0a, 0xc6, 0x25, 0xfe, 0x84, 0xf0, 0x26, 0xc6, 0x0b, 0xfd, 0x54, 0x7d - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbKey[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbCipher[] = { - 0x5c, 0x9d, 0x84, 0x4e, 0xd4, 0x6f, 0x98, 0x85, 0x08, 0x5e, 0x5d, 0x6a, 0x4f, 0x94, 0xc7, 0xd7 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcData[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcKey[] = { - 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 0x61, 0x1b, 0xbb, 0x3e, 0x20, 0x25, 0xa4, 0x5a - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcIvec[] = { - 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcCipher[] = { - 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a, 0x3a, 0x86, 0x30, 0x28, 0xb5, 0xe1, 0xdc, 0x0a, - 0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9, 0x1b, 0x82, 0x66, 0xbe, 0xa6, 0xd6, 0x1a, 0xb1 - }; - -// -// ARC4 Test Vector defined in "Appendix A.1 Test Vectors from [CRYPTLIB]" of -// IETF Draft draft-kaukonen-cipher-arcfour-03 ("A Stream Cipher Encryption Algorithm 'Arcfour'"). -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Data[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Key[] = { - 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF - }; - -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Cipher[] = { - 0x74, 0x94, 0xC2, 0xE7, 0x10, 0x4B, 0x08, 0x79 - }; - -/** - Validate UEFI-OpenSSL Block Ciphers (Symmetric Crypto) Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptBlockCipher ( - VOID - ) -{ - UINTN CtxSize; - VOID *CipherCtx; - UINT8 Encrypt[256]; - UINT8 Decrypt[256]; - BOOLEAN Status; - - Print (L"\nUEFI-OpenSSL Block Cipher Engine Testing: "); - - CtxSize = TdesGetContextSize (); - CipherCtx = AllocatePool (CtxSize); - - Print (L"\n- TDES Validation: "); - - - Print (L"ECB... "); - - // - // TDES ECB Validation - // - ZeroMem (Encrypt, sizeof (Encrypt)); - ZeroMem (Decrypt, sizeof (Decrypt)); - - Status = TdesInit (CipherCtx, TdesEcbKey, 64); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = TdesEcbEncrypt (CipherCtx, TdesEcbData, 8, Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = TdesEcbDecrypt (CipherCtx, Encrypt, 8, Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, TdesEcbCipher, 8) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, TdesEcbData, 8) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"EDE2 ECB... "); - - // - // TDES EDE2 ECB Validation - // - ZeroMem (Encrypt, sizeof (Encrypt)); - ZeroMem (Decrypt, sizeof (Decrypt)); - - Status = TdesInit (CipherCtx, TdesEcbKey, 128); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = TdesEcbEncrypt (CipherCtx, TdesEcbData, 8, Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = TdesEcbDecrypt (CipherCtx, Encrypt, 8, Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, TdesEcb2Cipher, 8) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, TdesEcbData, 8) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"EDE3 CBC... "); - - // - // TDES EDE3 CBC Validation - // - ZeroMem (Encrypt, 256); - ZeroMem (Decrypt, 256); - - Status = TdesInit (CipherCtx, TdesCbcKey, 192); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = TdesCbcEncrypt (CipherCtx, TdesCbcData, sizeof (TdesCbcData), TdesCbcIvec, Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = TdesCbcDecrypt (CipherCtx, Encrypt, sizeof (TdesCbcData), TdesCbcIvec, Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, TdesCbc3Cipher, sizeof (TdesCbc3Cipher)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, TdesCbcData, sizeof (TdesCbcData)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]"); - - FreePool (CipherCtx); - - CtxSize = AesGetContextSize (); - CipherCtx = AllocatePool (CtxSize); - - Print (L"\n- AES Validation: "); - - Print (L"ECB-128... "); - - // - // AES-128 ECB Validation - // - ZeroMem (Encrypt, sizeof (Encrypt)); - ZeroMem (Decrypt, sizeof (Decrypt)); - - Status = AesInit (CipherCtx, Aes128EcbKey, 128); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesEcbEncrypt (CipherCtx, Aes128EcbData, sizeof (Aes128EcbData), Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesEcbDecrypt (CipherCtx, Encrypt, sizeof (Aes128EcbData), Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, Aes128EcbCipher, sizeof (Aes128EcbCipher)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, Aes128EcbData, sizeof (Aes128EcbData)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"ECB-192... "); - - // - // AES-192 ECB Validation - // - ZeroMem (Encrypt, sizeof (Encrypt)); - ZeroMem (Decrypt, sizeof (Decrypt)); - - Status = AesInit (CipherCtx, Aes192EcbKey, 192); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesEcbEncrypt (CipherCtx, Aes192EcbData, sizeof (Aes192EcbData), Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesEcbDecrypt (CipherCtx, Encrypt, sizeof (Aes192EcbData), Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, Aes192EcbCipher, sizeof (Aes192EcbCipher)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, Aes192EcbData, sizeof (Aes192EcbData)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"ECB-256... "); - - // - // AES-256 ECB Validation - // - ZeroMem (Encrypt, sizeof (Encrypt)); - ZeroMem (Decrypt, sizeof (Decrypt)); - - Status = AesInit (CipherCtx, Aes256EcbKey, 256); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesEcbEncrypt (CipherCtx, Aes256EcbData, sizeof (Aes256EcbData), Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesEcbDecrypt (CipherCtx, Encrypt, sizeof (Aes256EcbData), Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, Aes256EcbCipher, sizeof (Aes256EcbCipher)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, Aes256EcbData, sizeof (Aes256EcbData)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"CBC-128... "); - - // - // AES-128 CBC Validation - // - ZeroMem (Encrypt, sizeof (Encrypt)); - ZeroMem (Decrypt, sizeof (Decrypt)); - - Status = AesInit (CipherCtx, Aes128CbcKey, 128); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesCbcEncrypt (CipherCtx, Aes128CbcData, sizeof (Aes128CbcData), Aes128CbcIvec, Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = AesCbcDecrypt (CipherCtx, Encrypt, sizeof (Aes128CbcData), Aes128CbcIvec, Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, Aes128CbcCipher, sizeof (Aes128CbcCipher)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, Aes128CbcData, sizeof (Aes128CbcData)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]"); - - Print (L"\n- ARC4 Validation: "); - - // - // ARC4 Validation - // - CtxSize = Arc4GetContextSize (); - CipherCtx = AllocatePool (CtxSize); - - ZeroMem (Encrypt, sizeof (Encrypt)); - ZeroMem (Decrypt, sizeof (Decrypt)); - - Status = Arc4Init (CipherCtx, Arc4Key, sizeof (Arc4Key)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = Arc4Encrypt (CipherCtx, Arc4Data, sizeof (Arc4Data), Encrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = Arc4Reset (CipherCtx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = Arc4Decrypt (CipherCtx, Encrypt, sizeof (Arc4Data), Decrypt); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Encrypt, Arc4Cipher, sizeof (Arc4Cipher)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Decrypt, Arc4Data, sizeof (Arc4Data)) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]"); - - Print (L"\n"); - - return EFI_SUCCESS; -} diff --git a/Core/CryptoPkg/Application/Cryptest/Cryptest.c b/Core/CryptoPkg/Application/Cryptest/Cryptest.c deleted file mode 100644 index 13b70732b9..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/Cryptest.c +++ /dev/null @@ -1,97 +0,0 @@ -/** @file - Application for Cryptographic Primitives Validation. - -Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -/** - Entry Point of Cryptographic Validation Utility. - - @param ImageHandle The image handle of the UEFI Application. - @param SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The entry point is executed successfully. - @retval other Some error occurs when executing this entry point. - -**/ -EFI_STATUS -EFIAPI -CryptestMain ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - Print (L"\nUEFI-OpenSSL Wrapper Cryptosystem Testing: \n"); - Print (L"-------------------------------------------- \n"); - - RandomSeed (NULL, 0); - - Status = ValidateCryptDigest (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptHmac (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptBlockCipher (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptRsa (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptRsa2 (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptPkcs5Pbkdf2 (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptPkcs7 (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateAuthenticode (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateTSCounterSignature (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptDh (); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = ValidateCryptPrng (); - if (EFI_ERROR (Status)) { - return Status; - } - - return EFI_SUCCESS; -} diff --git a/Core/CryptoPkg/Application/Cryptest/Cryptest.h b/Core/CryptoPkg/Application/Cryptest/Cryptest.h deleted file mode 100644 index 9e3e0fb8bf..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/Cryptest.h +++ /dev/null @@ -1,159 +0,0 @@ -/** @file - Application for Cryptographic Primitives Validation. - -Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __CRYPTEST_H__ -#define __CRYPTEST_H__ - -#include -#include -#include -#include -#include -#include -#include -#include - -/** - Validate UEFI-OpenSSL Digest Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptDigest ( - VOID - ); - -/** - Validate UEFI-OpenSSL Message Authentication Codes Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptHmac ( - VOID - ); - -/** - Validate UEFI-OpenSSL Block Ciphers (Symmetric Crypto) Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptBlockCipher ( - VOID - ); - -/** - Validate UEFI-OpenSSL RSA Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptRsa ( - VOID - ); - -/** - Validate UEFI-OpenSSL RSA Key Retrieving (from PEM & X509) & Signature Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptRsa2 ( - VOID - ); - -/** - Validate UEFI-OpenSSL PKCS#5 PBKDF2 Interface. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptPkcs5Pbkdf2 ( - VOID - ); - -/** - Validate UEFI-OpenSSL PKCS#7 Signing & Verification Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptPkcs7 ( - VOID - ); - -/** - Validate UEFI-OpenSSL Authenticode Verification Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateAuthenticode ( - VOID - ); - -/** - Validate UEFI-OpenSSL RFC3161 Timestamp CounterSignature Verification Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateTSCounterSignature ( - VOID - ); - -/** - Validate UEFI-OpenSSL DH Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptDh ( - VOID - ); - -/** - Validate UEFI-OpenSSL pseudorandom number generator interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptPrng ( - VOID - ); - -#endif diff --git a/Core/CryptoPkg/Application/Cryptest/Cryptest.inf b/Core/CryptoPkg/Application/Cryptest/Cryptest.inf deleted file mode 100644 index b7f779c203..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/Cryptest.inf +++ /dev/null @@ -1,62 +0,0 @@ -## @file -# Shell application that will test the crypto library. -# -# UEFI Application for the Validation of cryptography library (based on OpenSSL-1.0.2j). -# -# Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = Cryptest - MODULE_UNI_FILE = Cryptest.uni - FILE_GUID = fb925ac7-192a-9567-8586-7c6f5f710607 - MODULE_TYPE = UEFI_APPLICATION - VERSION_STRING = 1.0 - ENTRY_POINT = CryptestMain - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF -# - -[Sources] - Cryptest.h - Cryptest.c - HashVerify.c - HmacVerify.c - BlockCipherVerify.c - RsaVerify.c - RsaVerify2.c - Pkcs5Pbkdf2Verify.c - AuthenticodeVerify.c - TSVerify.c - DhVerify.c - RandVerify.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - UefiApplicationEntryPoint - UefiLib - BaseLib - UefiBootServicesTableLib - BaseMemoryLib - DebugLib - MemoryAllocationLib - BaseCryptLib - -[UserExtensions.TianoCore."ExtraFiles"] - CryptestExtra.uni - diff --git a/Core/CryptoPkg/Application/Cryptest/Cryptest.uni b/Core/CryptoPkg/Application/Cryptest/Cryptest.uni deleted file mode 100644 index 34f55498b3..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/Cryptest.uni +++ /dev/null @@ -1,22 +0,0 @@ -// /** @file -// Shell application that will test the crypto library. -// -// UEFI Application for the Validation of cryptography library (based on OpenSSL 0.9.8zb). -// -// Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Shell application that will test the crypto library" - -#string STR_MODULE_DESCRIPTION #language en-US "UEFI Application for the Validation of cryptography library (based on OpenSSL 0.9.8zb)." - diff --git a/Core/CryptoPkg/Application/Cryptest/CryptestExtra.uni b/Core/CryptoPkg/Application/Cryptest/CryptestExtra.uni deleted file mode 100644 index 530faa593c..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/CryptestExtra.uni +++ /dev/null @@ -1,20 +0,0 @@ -// /** @file -// Cryptest Localized Strings and Content -// -// Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - -#string STR_PROPERTIES_MODULE_NAME -#language en-US -"Cryptest module" - - diff --git a/Core/CryptoPkg/Application/Cryptest/DhVerify.c b/Core/CryptoPkg/Application/Cryptest/DhVerify.c deleted file mode 100644 index 6384a8a697..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/DhVerify.c +++ /dev/null @@ -1,125 +0,0 @@ -/** @file - Application for Diffie-Hellman Primitives Validation. - -Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -/** - Validate UEFI-OpenSSL DH Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptDh ( - VOID - ) -{ - VOID *Dh1; - VOID *Dh2; - UINT8 Prime[64]; - UINT8 PublicKey1[64]; - UINTN PublicKey1Length; - UINT8 PublicKey2[64]; - UINTN PublicKey2Length; - UINT8 Key1[64]; - UINTN Key1Length; - UINT8 Key2[64]; - UINTN Key2Length; - BOOLEAN Status; - - Print (L"\nUEFI-OpenSSL DH Engine Testing:\n"); - - // - // Initialize Key Length - // - PublicKey1Length = sizeof (PublicKey1); - PublicKey2Length = sizeof (PublicKey2); - Key1Length = sizeof (Key1); - Key2Length = sizeof (Key2); - - // - // Generate & Initialize DH Context - // - Print (L"- Context1 ... "); - Dh1 = DhNew (); - if (Dh1 == NULL) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Context2 ... "); - Dh2 = DhNew (); - if (Dh2 == NULL) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Parameter1 ... "); - Status = DhGenerateParameter (Dh1, 2, 64, Prime); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Parameter2 ... "); - Status = DhSetParameter (Dh2, 2, 64, Prime); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Generate key1 ... "); - Status = DhGenerateKey (Dh1, PublicKey1, &PublicKey1Length); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Generate key2 ... "); - Status = DhGenerateKey (Dh2, PublicKey2, &PublicKey2Length); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Compute key1 ... "); - Status = DhComputeKey (Dh1, PublicKey2, PublicKey2Length, Key1, &Key1Length); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Compute key2 ... "); - Status = DhComputeKey (Dh2, PublicKey1, PublicKey1Length, Key2, &Key2Length); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Compare Keys ... "); - if (Key1Length != Key2Length) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Key1, Key2, Key1Length) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - return EFI_SUCCESS; -} \ No newline at end of file diff --git a/Core/CryptoPkg/Application/Cryptest/HashVerify.c b/Core/CryptoPkg/Application/Cryptest/HashVerify.c deleted file mode 100644 index a35cad5b52..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/HashVerify.c +++ /dev/null @@ -1,410 +0,0 @@ -/** @file - Application for Hash Primitives Validation. - -Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -// -// Max Known Digest Size is SHA512 Output (64 bytes) by far -// -#define MAX_DIGEST_SIZE 64 - -// -// Message string for digest validation -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *HashData = "abc"; - -// -// Result for MD4("abc"). (From "A.5 Test suite" of IETF RFC1320) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Md4Digest[MD4_DIGEST_SIZE] = { - 0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52, 0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d - }; - -// -// Result for MD5("abc"). (From "A.5 Test suite" of IETF RFC1321) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Md5Digest[MD5_DIGEST_SIZE] = { - 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0, 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 - }; - -// -// Result for SHA-1("abc"). (From "A.1 SHA-1 Example" of NIST FIPS 180-2) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha1Digest[SHA1_DIGEST_SIZE] = { - 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e, 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, - 0x9c, 0xd0, 0xd8, 0x9d - }; - -// -// Result for SHA-256("abc"). (From "B.1 SHA-256 Example" of NIST FIPS 180-2) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha256Digest[SHA256_DIGEST_SIZE] = { - 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, - 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad - }; - -// -// Result for SHA-384("abc"). (From "D.1 SHA-384 Example" of NIST FIPS 180-2) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha384Digest[SHA384_DIGEST_SIZE] = { - 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b, 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07, - 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63, 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed, - 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23, 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 - }; - -// -// Result for SHA-512("abc"). (From "C.1 SHA-512 Example" of NIST FIPS 180-2) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha512Digest[SHA512_DIGEST_SIZE] = { - 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, - 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, - 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd, - 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f - }; - -/** - Validate UEFI-OpenSSL Digest Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptDigest ( - VOID - ) -{ - UINTN CtxSize; - VOID *HashCtx; - UINTN DataSize; - UINT8 Digest[MAX_DIGEST_SIZE]; - BOOLEAN Status; - - Print (L" UEFI-OpenSSL Hash Engine Testing:\n"); - DataSize = AsciiStrLen (HashData); - - Print (L"- MD4: "); - - // - // MD4 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = Md4GetContextSize (); - HashCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = Md4Init (HashCtx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = Md4Update (HashCtx, HashData, DataSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = Md4Final (HashCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HashCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, Md4Digest, MD4_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"HashAll... "); - ZeroMem (Digest, MD5_DIGEST_SIZE); - Status = Md4HashAll (HashData, DataSize, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - if (CompareMem (Digest, Md4Digest, MD4_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - Print (L"- MD5: "); - - // - // MD5 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = Md5GetContextSize (); - HashCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = Md5Init (HashCtx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = Md5Update (HashCtx, HashData, DataSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = Md5Final (HashCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HashCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, Md5Digest, MD5_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"HashAll... "); - ZeroMem (Digest, MD5_DIGEST_SIZE); - Status = Md5HashAll (HashData, DataSize, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - if (CompareMem (Digest, Md5Digest, MD5_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - Print (L"- SHA1: "); - - // - // SHA-1 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = Sha1GetContextSize (); - HashCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = Sha1Init (HashCtx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = Sha1Update (HashCtx, HashData, DataSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = Sha1Final (HashCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HashCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, Sha1Digest, SHA1_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"HashAll... "); - ZeroMem (Digest, SHA1_DIGEST_SIZE); - Status = Sha1HashAll (HashData, DataSize, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - if (CompareMem (Digest, Sha1Digest, SHA1_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - Print (L"- SHA256: "); - - // - // SHA256 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = Sha256GetContextSize (); - HashCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = Sha256Init (HashCtx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = Sha256Update (HashCtx, HashData, DataSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = Sha256Final (HashCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HashCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, Sha256Digest, SHA256_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"HashAll... "); - ZeroMem (Digest, SHA256_DIGEST_SIZE); - Status = Sha256HashAll (HashData, DataSize, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - if (CompareMem (Digest, Sha256Digest, SHA256_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - Print (L"- SHA384: "); - - // - // SHA384 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = Sha384GetContextSize (); - HashCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = Sha384Init (HashCtx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = Sha384Update (HashCtx, HashData, DataSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = Sha384Final (HashCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HashCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, Sha384Digest, SHA384_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"HashAll... "); - ZeroMem (Digest, SHA384_DIGEST_SIZE); - Status = Sha384HashAll (HashData, DataSize, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - if (CompareMem (Digest, Sha384Digest, SHA384_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - Print (L"- SHA512: "); - - // - // SHA512 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = Sha512GetContextSize (); - HashCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = Sha512Init (HashCtx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = Sha512Update (HashCtx, HashData, DataSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = Sha512Final (HashCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HashCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, Sha512Digest, SHA512_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"HashAll... "); - ZeroMem (Digest, SHA512_DIGEST_SIZE); - Status = Sha512HashAll (HashData, DataSize, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - if (CompareMem (Digest, Sha512Digest, SHA512_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - return EFI_SUCCESS; -} diff --git a/Core/CryptoPkg/Application/Cryptest/HmacVerify.c b/Core/CryptoPkg/Application/Cryptest/HmacVerify.c deleted file mode 100644 index 9a91295bcf..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/HmacVerify.c +++ /dev/null @@ -1,212 +0,0 @@ -/** @file - Application for HMAC Primitives Validation. - -Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -// -// Max Known Digest Size is SHA512 Output (64 bytes) by far -// -#define MAX_DIGEST_SIZE 64 - -// -// Data string for HMAC validation -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *HmacData = "Hi There"; - -// -// Key value for HMAC-MD5 validation. (From "2. Test Cases for HMAC-MD5" of IETF RFC2202) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacMd5Key[16] = { - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b - }; - -// -// Result for HMAC-MD5("Hi There"). (From "2. Test Cases for HMAC-MD5" of IETF RFC2202) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacMd5Digest[] = { - 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d - }; - -// -// Key value for HMAC-SHA-1 validation. (From "3. Test Cases for HMAC-SHA-1" of IETF RFC2202) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha1Key[20] = { - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b - }; - -// -// Result for HMAC-SHA-1 ("Hi There"). (From "3. Test Cases for HMAC-SHA-1" of IETF RFC2202) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha1Digest[] = { - 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, - 0xf1, 0x46, 0xbe, 0x00 - }; - -// -// Key value for HMAC-SHA-256 validation. (From "4. Test Vectors" of IETF RFC4231) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha256Key[20] = { - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b - }; - -// -// Result for HMAC-SHA-256 ("Hi There"). (From "4. Test Vectors" of IETF RFC4231) -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha256Digest[] = { - 0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, 0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b, - 0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7, 0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7 - }; - -/** - Validate UEFI-OpenSSL Message Authentication Codes Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptHmac ( - VOID - ) -{ - UINTN CtxSize; - VOID *HmacCtx; - UINT8 Digest[MAX_DIGEST_SIZE]; - BOOLEAN Status; - - Print (L" \nUEFI-OpenSSL HMAC Engine Testing:\n"); - - Print (L"- HMAC-MD5: "); - - // - // HMAC-MD5 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = HmacMd5GetContextSize (); - HmacCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = HmacMd5Init (HmacCtx, HmacMd5Key, sizeof (HmacMd5Key)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = HmacMd5Update (HmacCtx, HmacData, 8); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = HmacMd5Final (HmacCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HmacCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, HmacMd5Digest, MD5_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - Print (L"- HMAC-SHA1: "); - - // - // HMAC-SHA1 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = HmacSha1GetContextSize (); - HmacCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = HmacSha1Init (HmacCtx, HmacSha1Key, sizeof (HmacSha1Key)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = HmacSha1Update (HmacCtx, HmacData, 8); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = HmacSha1Final (HmacCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HmacCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, HmacSha1Digest, SHA1_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - Print (L"- HMAC-SHA256: "); - // - // HMAC-SHA-256 Digest Validation - // - ZeroMem (Digest, MAX_DIGEST_SIZE); - CtxSize = HmacSha256GetContextSize (); - HmacCtx = AllocatePool (CtxSize); - - Print (L"Init... "); - Status = HmacSha256Init (HmacCtx, HmacSha256Key, sizeof (HmacSha256Key)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Update... "); - Status = HmacSha256Update (HmacCtx, HmacData, 8); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"Finalize... "); - Status = HmacSha256Final (HmacCtx, Digest); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (HmacCtx); - - Print (L"Check Value... "); - if (CompareMem (Digest, HmacSha256Digest, SHA256_DIGEST_SIZE) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - return EFI_SUCCESS; -} diff --git a/Core/CryptoPkg/Application/Cryptest/Pkcs5Pbkdf2Verify.c b/Core/CryptoPkg/Application/Cryptest/Pkcs5Pbkdf2Verify.c deleted file mode 100644 index 84652d382e..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/Pkcs5Pbkdf2Verify.c +++ /dev/null @@ -1,94 +0,0 @@ -/** @file - Application for PKCS#5 PBKDF2 Function Validation. - -Copyright (c) 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -// -// PBKDF2 HMAC-SHA1 Test Vector from RFC6070 -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Password = "password"; // Input Password -GLOBAL_REMOVE_IF_UNREFERENCED UINTN PassLen = 8; // Length of Input Password -GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Salt = "salt"; // Input Salt -GLOBAL_REMOVE_IF_UNREFERENCED UINTN SaltLen = 4; // Length of Input Salt -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINTN Count = 2; // InterationCount -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINTN KeyLen = 20; // Length of derived key -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DerivedKey[] = { // Expected output key - 0xea, 0x6c, 0x01, 0x4d, 0xc7, 0x2d, 0x6f, 0x8c, 0xcd, 0x1e, 0xd9, 0x2a, 0xce, 0x1d, 0x41, 0xf0, - 0xd8, 0xde, 0x89, 0x57 - }; - -/** - Validate UEFI-OpenSSL PKCS#5 PBKDF2 Interface. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptPkcs5Pbkdf2 ( - VOID - ) -{ - BOOLEAN Status; - UINT8 *OutKey; - - Print (L"\nUEFI-OpenSSL PKCS#5 PBKDF2 Testing: "); - Print (L"\n- PKCS#5 PBKDF2 Verification: "); - - OutKey = AllocatePool (KeyLen); - if (OutKey == NULL) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - // - // Verify PKCS#5 PBKDF2 Key Derivation Function - // - Print (L"Deriving Key... "); - Status = Pkcs5HashPassword ( - PassLen, - Password, - SaltLen, - (CONST UINT8 *)Salt, - Count, - SHA1_DIGEST_SIZE, - KeyLen, - OutKey - ); - - if (!Status) { - Print (L"[Fail]"); - FreePool (OutKey); - return EFI_ABORTED; - } - - // - // Check the output key with the expected key result - // - Print (L"Check Derived Key... "); - if (CompareMem (OutKey, DerivedKey, KeyLen) != 0) { - Print (L"[Fail]"); - FreePool (OutKey); - return EFI_ABORTED; - } - - Print (L"[Pass]\n"); - - // - // Release Resources - // - FreePool (OutKey); - - return EFI_SUCCESS; -} diff --git a/Core/CryptoPkg/Application/Cryptest/RandVerify.c b/Core/CryptoPkg/Application/Cryptest/RandVerify.c deleted file mode 100644 index c9e7341c3a..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/RandVerify.c +++ /dev/null @@ -1,69 +0,0 @@ -/** @file - Application for Pseudorandom Number Generator Validation. - -Copyright (c) 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -#define RANDOM_NUMBER_SIZE 256 - -CONST UINT8 SeedString[] = "This is the random seed for PRNG verification."; - -UINT8 PreviousRandomBuffer[RANDOM_NUMBER_SIZE] = { 0x0 }; - -UINT8 RandomBuffer[RANDOM_NUMBER_SIZE] = { 0x0 }; - -/** - Validate UEFI-OpenSSL pseudorandom number generator interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptPrng ( - VOID - ) -{ - UINTN Index; - BOOLEAN Status; - - Print (L" \nUEFI-OpenSSL PRNG Engine Testing:\n"); - - Print (L"- Random Generation..."); - - Status = RandomSeed (SeedString, sizeof (SeedString)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - for (Index = 0; Index < 10; Index ++) { - Status = RandomBytes (RandomBuffer, RANDOM_NUMBER_SIZE); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (PreviousRandomBuffer, RandomBuffer, RANDOM_NUMBER_SIZE) == 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - CopyMem (PreviousRandomBuffer, RandomBuffer, RANDOM_NUMBER_SIZE); - } - - Print (L"[Pass]\n"); - - return EFI_SUCCESS; - -} diff --git a/Core/CryptoPkg/Application/Cryptest/RsaVerify.c b/Core/CryptoPkg/Application/Cryptest/RsaVerify.c deleted file mode 100644 index bbcad68b97..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/RsaVerify.c +++ /dev/null @@ -1,406 +0,0 @@ -/** @file - Application for RSA Primitives Validation. - -Copyright (c) 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -#define RSA_MODULUS_LENGTH 512 - -// -// RSA PKCS#1 Validation Data from OpenSSL "Fips_rsa_selftest.c" -// - -// -// Public Modulus of RSA Key -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaN[] = { - 0xBB, 0xF8, 0x2F, 0x09, 0x06, 0x82, 0xCE, 0x9C, 0x23, 0x38, 0xAC, 0x2B, 0x9D, 0xA8, 0x71, 0xF7, - 0x36, 0x8D, 0x07, 0xEE, 0xD4, 0x10, 0x43, 0xA4, 0x40, 0xD6, 0xB6, 0xF0, 0x74, 0x54, 0xF5, 0x1F, - 0xB8, 0xDF, 0xBA, 0xAF, 0x03, 0x5C, 0x02, 0xAB, 0x61, 0xEA, 0x48, 0xCE, 0xEB, 0x6F, 0xCD, 0x48, - 0x76, 0xED, 0x52, 0x0D, 0x60, 0xE1, 0xEC, 0x46, 0x19, 0x71, 0x9D, 0x8A, 0x5B, 0x8B, 0x80, 0x7F, - 0xAF, 0xB8, 0xE0, 0xA3, 0xDF, 0xC7, 0x37, 0x72, 0x3E, 0xE6, 0xB4, 0xB7, 0xD9, 0x3A, 0x25, 0x84, - 0xEE, 0x6A, 0x64, 0x9D, 0x06, 0x09, 0x53, 0x74, 0x88, 0x34, 0xB2, 0x45, 0x45, 0x98, 0x39, 0x4E, - 0xE0, 0xAA, 0xB1, 0x2D, 0x7B, 0x61, 0xA5, 0x1F, 0x52, 0x7A, 0x9A, 0x41, 0xF6, 0xC1, 0x68, 0x7F, - 0xE2, 0x53, 0x72, 0x98, 0xCA, 0x2A, 0x8F, 0x59, 0x46, 0xF8, 0xE5, 0xFD, 0x09, 0x1D, 0xBD, 0xCB - }; - -// -// Public Exponent of RSA Key -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaE[] = { 0x11 }; - -// -// Private Exponent of RSA Key -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaD[] = { - 0xA5, 0xDA, 0xFC, 0x53, 0x41, 0xFA, 0xF2, 0x89, 0xC4, 0xB9, 0x88, 0xDB, 0x30, 0xC1, 0xCD, 0xF8, - 0x3F, 0x31, 0x25, 0x1E, 0x06, 0x68, 0xB4, 0x27, 0x84, 0x81, 0x38, 0x01, 0x57, 0x96, 0x41, 0xB2, - 0x94, 0x10, 0xB3, 0xC7, 0x99, 0x8D, 0x6B, 0xC4, 0x65, 0x74, 0x5E, 0x5C, 0x39, 0x26, 0x69, 0xD6, - 0x87, 0x0D, 0xA2, 0xC0, 0x82, 0xA9, 0x39, 0xE3, 0x7F, 0xDC, 0xB8, 0x2E, 0xC9, 0x3E, 0xDA, 0xC9, - 0x7F, 0xF3, 0xAD, 0x59, 0x50, 0xAC, 0xCF, 0xBC, 0x11, 0x1C, 0x76, 0xF1, 0xA9, 0x52, 0x94, 0x44, - 0xE5, 0x6A, 0xAF, 0x68, 0xC5, 0x6C, 0x09, 0x2C, 0xD3, 0x8D, 0xC3, 0xBE, 0xF5, 0xD2, 0x0A, 0x93, - 0x99, 0x26, 0xED, 0x4F, 0x74, 0xA1, 0x3E, 0xDD, 0xFB, 0xE1, 0xA1, 0xCE, 0xCC, 0x48, 0x94, 0xAF, - 0x94, 0x28, 0xC2, 0xB7, 0xB8, 0x88, 0x3F, 0xE4, 0x46, 0x3A, 0x4B, 0xC8, 0x5B, 0x1C, 0xB3, 0xC1 - }; - -// -// Known Answer Test (KAT) Data for RSA PKCS#1 Signing -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 RsaSignData[] = "OpenSSL FIPS 140-2 Public Key RSA KAT"; - -// -// Known Signature for the above message, under SHA-1 Digest -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaPkcs1Signature[] = { - 0x71, 0xEE, 0x1A, 0xC0, 0xFE, 0x01, 0x93, 0x54, 0x79, 0x5C, 0xF2, 0x4C, 0x4A, 0xFD, 0x1A, 0x05, - 0x8F, 0x64, 0xB1, 0x6D, 0x61, 0x33, 0x8D, 0x9B, 0xE7, 0xFD, 0x60, 0xA3, 0x83, 0xB5, 0xA3, 0x51, - 0x55, 0x77, 0x90, 0xCF, 0xDC, 0x22, 0x37, 0x8E, 0xD0, 0xE1, 0xAE, 0x09, 0xE3, 0x3D, 0x1E, 0xF8, - 0x80, 0xD1, 0x8B, 0xC2, 0xEC, 0x0A, 0xD7, 0x6B, 0x88, 0x8B, 0x8B, 0xA1, 0x20, 0x22, 0xBE, 0x59, - 0x5B, 0xE0, 0x23, 0x24, 0xA1, 0x49, 0x30, 0xBA, 0xA9, 0x9E, 0xE8, 0xB1, 0x8A, 0x62, 0x16, 0xBF, - 0x4E, 0xCA, 0x2E, 0x4E, 0xBC, 0x29, 0xA8, 0x67, 0x13, 0xB7, 0x9F, 0x1D, 0x04, 0x44, 0xE5, 0x5F, - 0x35, 0x07, 0x11, 0xBC, 0xED, 0x19, 0x37, 0x21, 0xCF, 0x23, 0x48, 0x1F, 0x72, 0x05, 0xDE, 0xE6, - 0xE8, 0x7F, 0x33, 0x8A, 0x76, 0x4B, 0x2F, 0x95, 0xDF, 0xF1, 0x5F, 0x84, 0x80, 0xD9, 0x46, 0xB4 - }; - -// -// Default public key 0x10001 = 65537 -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DefaultPublicKey[] = { - 0x01, 0x00, 0x01 -}; - -/** - Validate UEFI-OpenSSL RSA Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptRsa ( - VOID - ) -{ - VOID *Rsa; - UINT8 HashValue[SHA1_DIGEST_SIZE]; - UINTN HashSize; - UINTN CtxSize; - VOID *Sha1Ctx; - UINT8 *Signature; - UINTN SigSize; - BOOLEAN Status; - UINTN KeySize; - UINT8 *KeyBuffer; - - Print (L"\nUEFI-OpenSSL RSA Engine Testing: "); - - // - // Generate & Initialize RSA Context - // - Rsa = RsaNew (); - Print (L"\n- Generate RSA Context ... "); - if (Rsa == NULL) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - // - // Set/Get RSA Key Components - // - Print (L"Set/Get RSA Key Components ... "); - - // - // Set/Get RSA Key N - // - Status = RsaSetKey (Rsa, RsaKeyN, RsaN, sizeof (RsaN)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeySize = 0; - Status = RsaGetKey (Rsa, RsaKeyN, NULL, &KeySize); - if (Status || KeySize != sizeof (RsaN)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeyBuffer = AllocatePool (KeySize); - Status = RsaGetKey (Rsa, RsaKeyN, KeyBuffer, &KeySize); - if (!Status || KeySize != sizeof (RsaN)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (KeyBuffer, RsaN, KeySize) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (KeyBuffer); - - // - // Set/Get RSA Key E - // - Status = RsaSetKey (Rsa, RsaKeyE, RsaE, sizeof (RsaE)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeySize = 0; - Status = RsaGetKey (Rsa, RsaKeyE, NULL, &KeySize); - if (Status || KeySize != sizeof (RsaE)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeyBuffer = AllocatePool (KeySize); - Status = RsaGetKey (Rsa, RsaKeyE, KeyBuffer, &KeySize); - if (!Status || KeySize != sizeof (RsaE)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (KeyBuffer, RsaE, KeySize) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (KeyBuffer); - - // - // Clear/Get RSA Key Components - // - Print (L"Clear/Get RSA Key Components ... "); - - // - // Clear/Get RSA Key N - // - Status = RsaSetKey (Rsa, RsaKeyN, NULL, 0); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeySize = 1; - Status = RsaGetKey (Rsa, RsaKeyN, NULL, &KeySize); - if (!Status || KeySize != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - // - // Clear/Get RSA Key E - // - Status = RsaSetKey (Rsa, RsaKeyE, NULL, 0); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeySize = 1; - Status = RsaGetKey (Rsa, RsaKeyE, NULL, &KeySize); - if (!Status || KeySize != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - // - // Generate RSA Key Components - // - Print (L"Generate RSA Key Components ... "); - - Status = RsaGenerateKey (Rsa, RSA_MODULUS_LENGTH, NULL, 0); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeySize = RSA_MODULUS_LENGTH / 8; - KeyBuffer = AllocatePool (KeySize); - Status = RsaGetKey (Rsa, RsaKeyE, KeyBuffer, &KeySize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (KeySize != 3 || - CompareMem (KeyBuffer, DefaultPublicKey, 3) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - KeySize = RSA_MODULUS_LENGTH / 8; - Status = RsaGetKey (Rsa, RsaKeyN, KeyBuffer, &KeySize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (KeySize != RSA_MODULUS_LENGTH / 8) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (!RsaCheckKey (Rsa)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - // - // Check invalid RSA key components - // - Print (L"Check Invalid RSA Key Components ... "); - - Status = RsaSetKey (Rsa, RsaKeyN, RsaN, sizeof (RsaN)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (RsaCheckKey (Rsa)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = RsaSetKey (Rsa, RsaKeyN, KeyBuffer, KeySize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (!RsaCheckKey (Rsa)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = RsaSetKey (Rsa, RsaKeyE, RsaE, sizeof (RsaE)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (RsaCheckKey (Rsa)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (KeyBuffer); - - // - // SHA-1 Digest Message for PKCS#1 Signature - // - Print (L"Hash Original Message ... "); - HashSize = SHA1_DIGEST_SIZE; - ZeroMem (HashValue, HashSize); - CtxSize = Sha1GetContextSize (); - Sha1Ctx = AllocatePool (CtxSize); - - Status = Sha1Init (Sha1Ctx); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = Sha1Update (Sha1Ctx, RsaSignData, AsciiStrLen (RsaSignData)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = Sha1Final (Sha1Ctx, HashValue); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - FreePool (Sha1Ctx); - - // - // Sign RSA PKCS#1-encoded Signature - // - Print (L"PKCS#1 Signature ... "); - - RsaFree (Rsa); - - Rsa = RsaNew (); - if (Rsa == NULL) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = RsaSetKey (Rsa, RsaKeyN, RsaN, sizeof (RsaN)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = RsaSetKey (Rsa, RsaKeyE, RsaE, sizeof (RsaE)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Status = RsaSetKey (Rsa, RsaKeyD, RsaD, sizeof (RsaD)); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - SigSize = 0; - Status = RsaPkcs1Sign (Rsa, HashValue, HashSize, NULL, &SigSize); - if (Status || SigSize == 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Signature = AllocatePool (SigSize); - Status = RsaPkcs1Sign (Rsa, HashValue, HashSize, Signature, &SigSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (SigSize != sizeof (RsaPkcs1Signature)) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - if (CompareMem (Signature, RsaPkcs1Signature, SigSize) != 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - // - // Verify RSA PKCS#1-encoded Signature - // - - Print (L"PKCS#1 Signature Verification ... "); - - Status = RsaPkcs1Verify (Rsa, HashValue, HashSize, Signature, SigSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - // - // Release Resources - // - RsaFree (Rsa); - Print (L"Release RSA Context ... [Pass]"); - - Print (L"\n"); - - return EFI_SUCCESS; -} diff --git a/Core/CryptoPkg/Application/Cryptest/RsaVerify2.c b/Core/CryptoPkg/Application/Cryptest/RsaVerify2.c deleted file mode 100644 index 98b5aad900..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/RsaVerify2.c +++ /dev/null @@ -1,395 +0,0 @@ -/** @file - Application for RSA Key Retrieving (from PEM and X509) & Signature Validation. - -Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -// -// X509 Cert Data for RSA Public Key Retrieving and X509 Verification (Generated by OpenSSL utility). -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCert[] = { - 0x30, 0x82, 0x02, 0x76, 0x30, 0x82, 0x01, 0xdf, 0x02, 0x09, 0x00, 0xa9, 0xff, 0x92, 0x73, 0xf6, - 0x74, 0xe0, 0xb0, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, - 0x05, 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, - 0x4e, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x08, 0x53, 0x68, 0x61, 0x6e, - 0x67, 0x68, 0x61, 0x69, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x53, - 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x04, 0x0a, - 0x13, 0x05, 0x49, 0x4e, 0x54, 0x45, 0x4c, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, - 0x13, 0x03, 0x50, 0x53, 0x49, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x04, - 0x55, 0x45, 0x46, 0x49, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x09, 0x01, 0x16, 0x0c, 0x75, 0x65, 0x66, 0x69, 0x40, 0x70, 0x73, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x30, 0x38, 0x31, 0x38, 0x32, 0x35, 0x35, - 0x39, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x30, 0x35, 0x31, 0x38, 0x32, 0x35, 0x35, 0x39, - 0x5a, 0x30, 0x81, 0x81, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, - 0x4e, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x08, 0x53, 0x68, 0x61, 0x6e, - 0x67, 0x68, 0x61, 0x69, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x53, - 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x04, 0x0a, - 0x13, 0x05, 0x49, 0x4e, 0x54, 0x45, 0x4c, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, - 0x13, 0x03, 0x50, 0x53, 0x49, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x06, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, - 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x40, 0x70, 0x73, - 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, - 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, - 0x81, 0x00, 0xc2, 0xfe, 0xbb, 0xbd, 0x92, 0x60, 0x6c, 0x2b, 0x75, 0x43, 0x6e, 0xd5, 0x91, 0x61, - 0x2a, 0xec, 0x15, 0x84, 0xce, 0x83, 0xc2, 0x51, 0xf6, 0x81, 0x93, 0xe6, 0x38, 0xd4, 0x85, 0xb1, - 0x02, 0x97, 0xb2, 0x7e, 0x74, 0x70, 0x57, 0x09, 0x72, 0xff, 0xb0, 0x7e, 0xd1, 0x9b, 0x34, 0x52, - 0xbb, 0x8e, 0xaf, 0x62, 0x26, 0xad, 0xfa, 0xc5, 0x9e, 0x5c, 0xbc, 0xb9, 0x9e, 0xfe, 0xa0, 0x33, - 0x30, 0x03, 0x9d, 0x3a, 0x09, 0xbb, 0xa5, 0xa9, 0x85, 0x35, 0x73, 0x52, 0xc3, 0xed, 0x10, 0x7f, - 0x83, 0x06, 0xe5, 0x2b, 0x3e, 0x39, 0xd9, 0xdf, 0x34, 0x7e, 0x15, 0x53, 0xbb, 0x82, 0x98, 0xe3, - 0xd8, 0x7e, 0xb3, 0x7e, 0xc0, 0x7f, 0x54, 0x67, 0x57, 0x19, 0xf0, 0xb2, 0xf6, 0x45, 0xaf, 0x43, - 0x05, 0xa5, 0x81, 0xc2, 0x15, 0xd7, 0x26, 0x85, 0xf7, 0xa7, 0x42, 0x36, 0x19, 0x19, 0xba, 0x0a, - 0x04, 0x9d, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, - 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x25, 0xbf, 0x8d, 0x88, 0xfc, 0xae, - 0x5e, 0xbe, 0x04, 0xed, 0x4e, 0xf2, 0x2e, 0x2f, 0x55, 0x9e, 0x21, 0x77, 0x86, 0x53, 0x16, 0xc0, - 0x04, 0x11, 0xa2, 0xeb, 0x1e, 0xf1, 0xbc, 0xfa, 0x96, 0xa3, 0xa2, 0x77, 0xe4, 0x61, 0x1b, 0x4a, - 0x69, 0x60, 0x16, 0x6f, 0xcb, 0xc6, 0xe2, 0x72, 0x72, 0xd1, 0x42, 0x7d, 0x83, 0x3d, 0xc5, 0x61, - 0x86, 0x78, 0x4b, 0x95, 0x69, 0x20, 0x88, 0xd1, 0x3c, 0x9b, 0xed, 0x2e, 0x3b, 0xeb, 0xaa, 0x99, - 0x7d, 0x9f, 0x24, 0xe6, 0xa9, 0x57, 0x31, 0x66, 0xe2, 0xe3, 0x3c, 0xd8, 0xb1, 0xf4, 0x33, 0x5d, - 0x8c, 0x21, 0xe0, 0x77, 0x82, 0x6b, 0x44, 0xb0, 0x04, 0x68, 0x25, 0xc8, 0xa1, 0xa2, 0x81, 0x7d, - 0x2e, 0xd5, 0xbb, 0xd2, 0x1d, 0x13, 0x3c, 0x22, 0x6d, 0xc5, 0x4d, 0xec, 0x76, 0x0a, 0x1c, 0xb0, - 0x1e, 0x80, 0xc1, 0xa0, 0xcc, 0x91, 0xd5, 0x7a, 0x5c, 0xf1 - }; - -// -// Test CA X509 Certificate for X509 Verification Routine (Generated by OpenSSL utility). -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCACert[] = { - 0x30, 0x82, 0x02, 0x71, 0x30, 0x82, 0x01, 0xda, 0x02, 0x09, 0x00, 0x91, 0x9b, 0x90, 0x19, 0x9c, - 0x81, 0x28, 0x47, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, - 0x05, 0x00, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, - 0x4e, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x08, 0x53, 0x68, 0x61, 0x6e, - 0x67, 0x68, 0x61, 0x69, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x53, - 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x04, 0x0a, - 0x13, 0x05, 0x49, 0x4e, 0x54, 0x45, 0x4c, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, - 0x13, 0x03, 0x50, 0x53, 0x49, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x04, - 0x55, 0x45, 0x46, 0x49, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x09, 0x01, 0x16, 0x0c, 0x75, 0x65, 0x66, 0x69, 0x40, 0x70, 0x73, 0x69, 0x2e, 0x63, 0x6f, - 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x31, 0x30, 0x30, 0x38, 0x31, 0x38, 0x31, 0x35, 0x33, - 0x36, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x31, 0x30, 0x30, 0x35, 0x31, 0x38, 0x31, 0x35, 0x33, 0x36, - 0x5a, 0x30, 0x7d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x4e, - 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x08, 0x53, 0x68, 0x61, 0x6e, 0x67, - 0x68, 0x61, 0x69, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x53, 0x68, - 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, - 0x05, 0x49, 0x4e, 0x54, 0x45, 0x4c, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, - 0x03, 0x50, 0x53, 0x49, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x04, 0x55, - 0x45, 0x46, 0x49, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, - 0x09, 0x01, 0x16, 0x0c, 0x75, 0x65, 0x66, 0x69, 0x40, 0x70, 0x73, 0x69, 0x2e, 0x63, 0x6f, 0x6d, - 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xa3, 0x32, 0x20, - 0x1d, 0x10, 0x11, 0x9c, 0x9e, 0xa2, 0x42, 0x48, 0x9b, 0x15, 0xac, 0x66, 0xa2, 0xc8, 0x25, 0x11, - 0x4c, 0xc8, 0x1e, 0x2e, 0x35, 0xd6, 0xc4, 0x43, 0x2e, 0x39, 0xf3, 0xac, 0x2b, 0xd6, 0x98, 0x5c, - 0xbe, 0x62, 0xfe, 0x95, 0x8c, 0xd6, 0xb5, 0x4e, 0x9e, 0x0f, 0xee, 0x0e, 0xb1, 0xcc, 0x0a, 0x72, - 0xc6, 0x47, 0x66, 0xfe, 0x6a, 0x8b, 0xde, 0x34, 0x0d, 0x62, 0x81, 0xd7, 0xa4, 0x30, 0x3a, 0xe6, - 0x24, 0x3b, 0xe3, 0x5a, 0xd6, 0x2b, 0xec, 0x4a, 0xb7, 0x22, 0x36, 0xed, 0x3a, 0x71, 0xfa, 0xb1, - 0x3f, 0x91, 0xd3, 0x11, 0xac, 0x52, 0xee, 0xbc, 0x37, 0x0e, 0x9e, 0x45, 0xe4, 0x4d, 0x33, 0x83, - 0xef, 0x0c, 0xb3, 0x5a, 0xbe, 0x9e, 0x5c, 0x64, 0xd2, 0x9f, 0x70, 0xf4, 0xaa, 0xd0, 0x15, 0x0e, - 0x60, 0xe5, 0xeb, 0x34, 0xfd, 0xd6, 0x70, 0x64, 0x11, 0x20, 0x60, 0x8c, 0xad, 0x02, 0x03, 0x01, - 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, - 0x00, 0x03, 0x81, 0x81, 0x00, 0x81, 0xfa, 0x8b, 0x03, 0x59, 0x30, 0xbf, 0xd2, 0x7f, 0x90, 0xd9, - 0x1a, 0xd9, 0xae, 0x1f, 0x3e, 0xc5, 0x45, 0x00, 0x0e, 0x06, 0x6e, 0xbc, 0xb0, 0xac, 0x32, 0xe3, - 0x2c, 0x10, 0x2d, 0x59, 0x51, 0x34, 0x7a, 0xb4, 0x22, 0x1d, 0x0f, 0x85, 0x9d, 0x80, 0x90, 0x3f, - 0x8e, 0x78, 0x2f, 0xfc, 0x12, 0x9e, 0xf2, 0xaa, 0xc9, 0x5d, 0x4a, 0x82, 0xc5, 0x64, 0xc7, 0x5a, - 0x29, 0xcb, 0xc2, 0x59, 0xde, 0xdf, 0xd8, 0x69, 0x51, 0x7a, 0x78, 0x4b, 0x47, 0x15, 0xcd, 0x52, - 0x66, 0xff, 0xb8, 0xf5, 0x16, 0xde, 0xe4, 0x32, 0xc5, 0x40, 0x42, 0xeb, 0xeb, 0x54, 0x63, 0xf7, - 0x82, 0x44, 0x4b, 0x5d, 0x8f, 0x3a, 0x29, 0xdf, 0xbc, 0xe0, 0x21, 0x3d, 0xc2, 0x4a, 0x19, 0x6e, - 0x7c, 0xed, 0xd3, 0x79, 0xac, 0xb0, 0x37, 0xea, 0xfd, 0x60, 0x7f, 0xbe, 0x5b, 0x0b, 0x69, 0x4a, - 0xe3, 0xac, 0xfa, 0x75, 0x0f - }; - -// -// Password-protected PEM Key data for RSA Private Key Retrieving (encryption key is "client"). -// (Generated by OpenSSL utility). -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestKeyPem[] = { - 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x52, 0x53, 0x41, 0x20, 0x50, - 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, - 0x50, 0x72, 0x6f, 0x63, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x34, 0x2c, 0x45, 0x4e, 0x43, - 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x0a, 0x44, 0x45, 0x4b, 0x2d, 0x49, 0x6e, 0x66, 0x6f, 0x3a, - 0x20, 0x44, 0x45, 0x53, 0x2d, 0x45, 0x44, 0x45, 0x33, 0x2d, 0x43, 0x42, 0x43, 0x2c, 0x44, 0x45, - 0x37, 0x32, 0x46, 0x31, 0x31, 0x30, 0x31, 0x31, 0x37, 0x42, 0x33, 0x36, 0x35, 0x36, 0x0a, 0x0a, - 0x38, 0x73, 0x6e, 0x79, 0x32, 0x59, 0x54, 0x79, 0x37, 0x67, 0x52, 0x5a, 0x38, 0x69, 0x73, 0x77, - 0x68, 0x37, 0x66, 0x46, 0x71, 0x49, 0x31, 0x30, 0x61, 0x39, 0x38, 0x6a, 0x2f, 0x76, 0x45, 0x66, - 0x69, 0x65, 0x47, 0x32, 0x43, 0x34, 0x53, 0x2b, 0x48, 0x70, 0x68, 0x33, 0x63, 0x68, 0x7a, 0x45, - 0x2f, 0x63, 0x58, 0x31, 0x2b, 0x6b, 0x6a, 0x6c, 0x46, 0x6b, 0x71, 0x6b, 0x47, 0x4e, 0x65, 0x4d, - 0x0a, 0x70, 0x72, 0x4b, 0x2b, 0x66, 0x48, 0x5a, 0x50, 0x77, 0x6c, 0x30, 0x63, 0x33, 0x79, 0x76, - 0x59, 0x58, 0x45, 0x7a, 0x4c, 0x45, 0x62, 0x50, 0x6f, 0x38, 0x4c, 0x6e, 0x74, 0x38, 0x36, 0x65, - 0x46, 0x53, 0x6f, 0x66, 0x4d, 0x78, 0x70, 0x33, 0x33, 0x64, 0x48, 0x39, 0x5a, 0x68, 0x6f, 0x57, - 0x66, 0x41, 0x43, 0x59, 0x78, 0x47, 0x44, 0x6f, 0x32, 0x30, 0x53, 0x33, 0x79, 0x42, 0x39, 0x67, - 0x38, 0x0a, 0x4d, 0x75, 0x59, 0x63, 0x74, 0x32, 0x38, 0x62, 0x6f, 0x62, 0x30, 0x65, 0x7a, 0x31, - 0x43, 0x38, 0x51, 0x52, 0x78, 0x58, 0x48, 0x31, 0x66, 0x4a, 0x52, 0x5a, 0x52, 0x50, 0x34, 0x38, - 0x50, 0x42, 0x6f, 0x5a, 0x7a, 0x36, 0x73, 0x6a, 0x4b, 0x36, 0x57, 0x51, 0x58, 0x66, 0x67, 0x4d, - 0x32, 0x70, 0x4c, 0x31, 0x42, 0x6f, 0x51, 0x70, 0x4e, 0x4e, 0x4f, 0x6d, 0x61, 0x79, 0x2b, 0x2b, - 0x72, 0x74, 0x0a, 0x6c, 0x7a, 0x32, 0x4f, 0x63, 0x72, 0x6a, 0x67, 0x2f, 0x72, 0x45, 0x61, 0x79, - 0x63, 0x63, 0x43, 0x55, 0x4d, 0x7a, 0x4e, 0x4f, 0x4a, 0x51, 0x74, 0x4f, 0x47, 0x74, 0x34, 0x7a, - 0x4d, 0x4a, 0x53, 0x73, 0x2f, 0x7a, 0x77, 0x77, 0x77, 0x73, 0x5a, 0x43, 0x4b, 0x74, 0x39, 0x33, - 0x37, 0x30, 0x62, 0x76, 0x74, 0x63, 0x36, 0x45, 0x34, 0x75, 0x42, 0x63, 0x75, 0x41, 0x51, 0x72, - 0x37, 0x73, 0x30, 0x0a, 0x44, 0x76, 0x46, 0x64, 0x4d, 0x6d, 0x6f, 0x71, 0x35, 0x57, 0x6d, 0x69, - 0x48, 0x6d, 0x4e, 0x70, 0x67, 0x54, 0x70, 0x65, 0x54, 0x67, 0x77, 0x62, 0x56, 0x64, 0x76, 0x71, - 0x49, 0x4f, 0x71, 0x31, 0x45, 0x6c, 0x6e, 0x30, 0x35, 0x53, 0x70, 0x76, 0x44, 0x7a, 0x4d, 0x56, - 0x76, 0x67, 0x39, 0x78, 0x62, 0x76, 0x64, 0x6f, 0x6e, 0x67, 0x4f, 0x35, 0x77, 0x49, 0x51, 0x70, - 0x69, 0x73, 0x73, 0x47, 0x0a, 0x75, 0x32, 0x69, 0x63, 0x4e, 0x66, 0x48, 0x48, 0x6d, 0x34, 0x76, - 0x48, 0x2b, 0x6d, 0x6e, 0x72, 0x58, 0x45, 0x57, 0x63, 0x69, 0x6c, 0x30, 0x64, 0x61, 0x36, 0x6b, - 0x54, 0x59, 0x66, 0x71, 0x70, 0x6d, 0x46, 0x37, 0x72, 0x52, 0x4d, 0x56, 0x61, 0x6c, 0x69, 0x30, - 0x43, 0x44, 0x4f, 0x59, 0x7a, 0x37, 0x6e, 0x70, 0x51, 0x64, 0x33, 0x38, 0x6a, 0x43, 0x62, 0x78, - 0x65, 0x59, 0x51, 0x65, 0x6d, 0x0a, 0x33, 0x68, 0x73, 0x61, 0x6f, 0x76, 0x58, 0x72, 0x71, 0x71, - 0x4e, 0x34, 0x71, 0x6b, 0x67, 0x50, 0x48, 0x57, 0x68, 0x41, 0x74, 0x39, 0x5a, 0x4d, 0x4e, 0x37, - 0x58, 0x45, 0x62, 0x56, 0x36, 0x42, 0x31, 0x6c, 0x36, 0x77, 0x4a, 0x71, 0x5a, 0x68, 0x68, 0x66, - 0x33, 0x68, 0x79, 0x7a, 0x6f, 0x38, 0x32, 0x38, 0x47, 0x59, 0x45, 0x37, 0x56, 0x58, 0x45, 0x4e, - 0x49, 0x6d, 0x76, 0x73, 0x35, 0x56, 0x0a, 0x69, 0x52, 0x58, 0x31, 0x6d, 0x61, 0x43, 0x30, 0x56, - 0x6b, 0x72, 0x31, 0x46, 0x32, 0x36, 0x55, 0x63, 0x4b, 0x51, 0x67, 0x34, 0x66, 0x53, 0x39, 0x43, - 0x71, 0x48, 0x31, 0x39, 0x7a, 0x4b, 0x36, 0x6d, 0x6d, 0x71, 0x47, 0x75, 0x67, 0x76, 0x66, 0x66, - 0x2f, 0x74, 0x5a, 0x50, 0x72, 0x67, 0x68, 0x61, 0x4f, 0x62, 0x52, 0x2b, 0x77, 0x76, 0x34, 0x46, - 0x65, 0x4f, 0x32, 0x42, 0x45, 0x44, 0x6d, 0x0a, 0x67, 0x4d, 0x33, 0x71, 0x47, 0x51, 0x4a, 0x44, - 0x35, 0x53, 0x65, 0x77, 0x4f, 0x61, 0x62, 0x41, 0x72, 0x4e, 0x37, 0x4c, 0x6f, 0x30, 0x59, 0x2b, - 0x44, 0x6a, 0x79, 0x39, 0x44, 0x43, 0x4b, 0x6f, 0x47, 0x4e, 0x4a, 0x50, 0x53, 0x4f, 0x58, 0x65, - 0x70, 0x57, 0x48, 0x65, 0x6d, 0x6c, 0x76, 0x72, 0x49, 0x63, 0x39, 0x66, 0x4d, 0x2f, 0x37, 0x57, - 0x6a, 0x4b, 0x4d, 0x6b, 0x72, 0x57, 0x50, 0x6a, 0x0a, 0x56, 0x64, 0x73, 0x61, 0x6e, 0x4b, 0x30, - 0x7a, 0x74, 0x4e, 0x2b, 0x43, 0x49, 0x64, 0x66, 0x38, 0x70, 0x33, 0x55, 0x30, 0x30, 0x57, 0x44, - 0x6d, 0x30, 0x2f, 0x62, 0x4d, 0x43, 0x56, 0x6d, 0x6b, 0x36, 0x6a, 0x76, 0x47, 0x66, 0x2f, 0x63, - 0x55, 0x6c, 0x47, 0x38, 0x79, 0x6d, 0x30, 0x2f, 0x49, 0x67, 0x4a, 0x70, 0x71, 0x35, 0x2b, 0x33, - 0x62, 0x78, 0x38, 0x73, 0x63, 0x54, 0x64, 0x55, 0x4f, 0x0a, 0x41, 0x38, 0x30, 0x41, 0x56, 0x68, - 0x61, 0x53, 0x41, 0x71, 0x44, 0x6d, 0x68, 0x49, 0x6c, 0x59, 0x34, 0x54, 0x6f, 0x78, 0x42, 0x68, - 0x63, 0x46, 0x2b, 0x4b, 0x4d, 0x48, 0x57, 0x33, 0x33, 0x5a, 0x45, 0x79, 0x66, 0x4a, 0x4a, 0x54, - 0x71, 0x55, 0x42, 0x71, 0x4a, 0x6a, 0x4f, 0x69, 0x75, 0x41, 0x78, 0x6a, 0x59, 0x70, 0x71, 0x4f, - 0x4e, 0x45, 0x35, 0x56, 0x4b, 0x33, 0x48, 0x68, 0x6c, 0x45, 0x0a, 0x2f, 0x4a, 0x33, 0x6b, 0x57, - 0x79, 0x4f, 0x39, 0x69, 0x4d, 0x62, 0x33, 0x67, 0x73, 0x44, 0x59, 0x36, 0x41, 0x76, 0x41, 0x76, - 0x5a, 0x39, 0x71, 0x6c, 0x5a, 0x6b, 0x30, 0x52, 0x50, 0x67, 0x49, 0x4c, 0x4a, 0x77, 0x6e, 0x33, - 0x6d, 0x77, 0x67, 0x73, 0x63, 0x55, 0x70, 0x41, 0x30, 0x5a, 0x50, 0x6a, 0x61, 0x55, 0x56, 0x6c, - 0x64, 0x71, 0x70, 0x32, 0x69, 0x71, 0x47, 0x78, 0x71, 0x50, 0x36, 0x0a, 0x45, 0x72, 0x65, 0x38, - 0x38, 0x59, 0x75, 0x41, 0x53, 0x55, 0x4a, 0x5a, 0x4a, 0x62, 0x34, 0x72, 0x53, 0x42, 0x4c, 0x68, - 0x45, 0x55, 0x41, 0x76, 0x63, 0x67, 0x38, 0x33, 0x4d, 0x6b, 0x4d, 0x6c, 0x68, 0x74, 0x6b, 0x34, - 0x62, 0x67, 0x34, 0x5a, 0x35, 0x65, 0x73, 0x44, 0x57, 0x66, 0x4d, 0x67, 0x56, 0x65, 0x6a, 0x4e, - 0x4a, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x52, 0x53, - 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d, 0x2d, - 0x2d, 0x2d - }; - -// -// Password for private key retrieving from encrypted PEM ("TestKeyPem"). -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *PemPass = "client"; - -// -// Message Hash for Signing & Verification Validation. -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 MsgHash[] = { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 - }; - -// -// Payload for PKCS#7 Signing & Verification Validation. -// -GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Payload = "Payload Data for PKCS#7 Signing"; - -/** - Validate UEFI-OpenSSL RSA Key Retrieving & Signature Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptRsa2 ( - VOID - ) -{ - BOOLEAN Status; - VOID *RsaPrivKey; - VOID *RsaPubKey; - UINT8 *Signature; - UINTN SigSize; - UINT8 *Subject; - UINTN SubjectSize; - - Print (L"\nUEFI-OpenSSL RSA Key Retrieving Testing: "); - - // - // Retrieve RSA private key from encrypted PEM data. - // - Print (L"\n- Retrieve RSA Private Key for PEM ..."); - Status = RsaGetPrivateKeyFromPem (TestKeyPem, sizeof (TestKeyPem), PemPass, &RsaPrivKey); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } else { - Print (L"[Pass]"); - } - - // - // Retrieve RSA public key from X509 Certificate. - // - Print (L"\n- Retrieve RSA Public Key from X509 ... "); - RsaPubKey = NULL; - Status = RsaGetPublicKeyFromX509 (TestCert, sizeof (TestCert), &RsaPubKey); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } else { - Print (L"[Pass]"); - } - - // - // Generate RSA PKCS#1 Signature. - // - Print (L"\n- PKCS#1 Signature ... "); - SigSize = 0; - Status = RsaPkcs1Sign (RsaPrivKey, MsgHash, SHA1_DIGEST_SIZE, NULL, &SigSize); - if (Status || SigSize == 0) { - Print (L"[Fail]"); - return EFI_ABORTED; - } - - Signature = AllocatePool (SigSize); - Status = RsaPkcs1Sign (RsaPrivKey, MsgHash, SHA1_DIGEST_SIZE, Signature, &SigSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } else { - Print (L"[Pass]"); - } - - // - // Verify RSA PKCS#1-encoded Signature. - // - Print (L"\n- PKCS#1 Signature Verification ... "); - Status = RsaPkcs1Verify (RsaPubKey, MsgHash, SHA1_DIGEST_SIZE, Signature, SigSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } else { - Print (L"[Pass]"); - } - - // - // X509 Certificate Subject Retrieving. - // - Print (L"\n- X509 Certificate Subject Bytes Retrieving ... "); - SubjectSize = 0; - Status = X509GetSubjectName (TestCert, sizeof (TestCert), NULL, &SubjectSize); - Subject = (UINT8 *)AllocatePool (SubjectSize); - Status = X509GetSubjectName (TestCert, sizeof (TestCert), Subject, &SubjectSize); - if (!Status) { - Print (L"[Fail]"); - return EFI_ABORTED; - } else { - Print (L"[Pass]"); - } - - // - // X509 Certificate Verification. - // - Print (L"\n- X509 Certificate Verification with Trusted CA ..."); - Status = X509VerifyCert (TestCert, sizeof (TestCert), TestCACert, sizeof (TestCACert)); - if (!Status) { - Print (L"[Fail]\n"); - return EFI_ABORTED; - } else { - Print (L"[Pass]\n"); - } - - // - // Release Resources. - // - RsaFree (RsaPubKey); - RsaFree (RsaPrivKey); - FreePool (Signature); - FreePool (Subject); - - return EFI_SUCCESS; -} - -/** - Validate UEFI-OpenSSL PKCS#7 Signing & Verification Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateCryptPkcs7 ( - VOID - ) -{ - BOOLEAN Status; - UINT8 *P7SignedData; - UINTN P7SignedDataSize; - UINT8 *SignCert; - - P7SignedData = NULL; - SignCert = NULL; - - Print (L"\nUEFI-OpenSSL PKCS#7 Signing & Verification Testing: "); - - Print (L"\n- Create PKCS#7 signedData ..."); - - // - // Construct Signer Certificate from RAW data. - // - Status = X509ConstructCertificate (TestCert, sizeof (TestCert), (UINT8 **) &SignCert); - if (!Status || SignCert == NULL) { - Print (L"[Fail]"); - goto _Exit; - } else { - Print (L"[Pass]"); - } - - // - // Create PKCS#7 signedData on Payload. - // Note: Caller should release P7SignedData manually. - // - Status = Pkcs7Sign ( - TestKeyPem, - sizeof (TestKeyPem), - (CONST UINT8 *) PemPass, - (UINT8 *) Payload, - AsciiStrLen (Payload), - SignCert, - NULL, - &P7SignedData, - &P7SignedDataSize - ); - if (!Status || P7SignedDataSize == 0) { - Print (L"[Fail]"); - goto _Exit; - } else { - Print (L"[Pass]"); - } - - Print (L"\n- Verify PKCS#7 signedData ..."); - - Status = Pkcs7Verify ( - P7SignedData, - P7SignedDataSize, - TestCACert, - sizeof (TestCACert), - (UINT8 *) Payload, - AsciiStrLen (Payload) - ); - if (!Status) { - Print (L"[Fail]"); - } else { - Print (L"[Pass]"); - } - -_Exit: - if (P7SignedData != NULL) { - FreePool (P7SignedData); - } - if (SignCert != NULL) { - X509Free (SignCert); - } - - Print (L"\n"); - return EFI_SUCCESS; -} diff --git a/Core/CryptoPkg/Application/Cryptest/TSVerify.c b/Core/CryptoPkg/Application/Cryptest/TSVerify.c deleted file mode 100644 index 6df95b48ce..0000000000 --- a/Core/CryptoPkg/Application/Cryptest/TSVerify.c +++ /dev/null @@ -1,364 +0,0 @@ -/** @file - Sample Implementation for RFC3161 Time Stamping Verification. - -Copyright (c) 2014, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "Cryptest.h" - -// -// Sample Authenticode Data with RFC3161 time stamping signature. -// The data retrieved from one signed sample UEFI image, which is generated by MSFT's signtool -// utility in conjunction with RFC3161 timestamping, as the following command: -// signtool sign /ac / f /p /fd -// /tr http://timestamp.comodoca.com/rfc3161 sample.efi -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithTS[] = { - 0x30, 0x82, 0x0c, 0x00, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, - 0x82, 0x0b, 0xf1, 0x30, 0x82, 0x0b, 0xed, 0x02, 0x01, 0x01, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x09, - 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x78, 0x06, 0x0a, 0x2b, - 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x6a, 0x30, 0x68, 0x30, 0x33, 0x06, - 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f, 0x30, 0x25, 0x03, 0x01, 0x00, - 0xa0, 0x20, 0xa2, 0x1e, 0x80, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x4f, 0x00, 0x62, - 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x3e, 0x00, 0x3e, - 0x00, 0x3e, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, - 0x01, 0x05, 0x00, 0x04, 0x20, 0x1e, 0x9e, 0x74, 0x31, 0xe1, 0x3e, 0x51, 0x46, 0xab, 0xce, 0x10, - 0x0d, 0x7c, 0x38, 0x66, 0x34, 0xd4, 0xdd, 0x04, 0xa5, 0xe7, 0x75, 0x40, 0xdd, 0x99, 0x73, 0xf3, - 0x2a, 0x54, 0x3e, 0xa8, 0x18, 0xa0, 0x82, 0x01, 0xee, 0x30, 0x82, 0x01, 0xea, 0x30, 0x82, 0x01, - 0x57, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x2c, 0x65, 0xcf, 0xcf, 0xdd, 0x61, 0x7b, 0xa4, - 0x41, 0xad, 0x26, 0x1b, 0x63, 0xce, 0x91, 0x0f, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, - 0x1d, 0x05, 0x00, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x08, - 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x37, - 0x32, 0x38, 0x30, 0x37, 0x33, 0x38, 0x35, 0x39, 0x5a, 0x17, 0x0d, 0x33, 0x39, 0x31, 0x32, 0x33, - 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x12, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x13, 0x07, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x62, 0x30, 0x81, 0x9f, 0x30, - 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, - 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0x94, 0xa6, 0x02, 0x15, 0x87, 0xd6, 0xbf, - 0x71, 0xe8, 0xc6, 0x68, 0xf6, 0x9f, 0x66, 0x09, 0x6c, 0xe7, 0x39, 0x52, 0xf4, 0x4e, 0xaf, 0xf5, - 0xe0, 0xba, 0x0f, 0xfd, 0xe6, 0x77, 0xa9, 0x71, 0x5b, 0x5c, 0x92, 0x50, 0x1d, 0xfd, 0x9b, 0x6e, - 0x52, 0x92, 0x9e, 0x3a, 0x75, 0x86, 0x41, 0x2a, 0x41, 0x30, 0x1b, 0x67, 0x66, 0x91, 0xde, 0x71, - 0x84, 0xe0, 0x90, 0xc3, 0x50, 0x36, 0x78, 0xb5, 0xa0, 0x1e, 0x72, 0xde, 0xe7, 0x66, 0x42, 0x4f, - 0x59, 0x5e, 0x3d, 0xf3, 0x85, 0x82, 0x0b, 0xa8, 0x26, 0x2d, 0xd9, 0xe3, 0x14, 0xda, 0x9d, 0x2e, - 0x3f, 0x53, 0x4d, 0x8d, 0x10, 0xbf, 0xa4, 0x7c, 0xe5, 0xaf, 0x3a, 0xa6, 0xaf, 0x49, 0x64, 0xb0, - 0x60, 0x17, 0x87, 0x71, 0x77, 0x59, 0x52, 0xe5, 0x5a, 0xed, 0x96, 0x7d, 0x7e, 0x5d, 0xc1, 0xef, - 0x6b, 0xfb, 0x80, 0xc5, 0x2b, 0x10, 0xfe, 0xe7, 0xd3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x48, - 0x30, 0x46, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x01, 0x04, 0x3d, 0x30, 0x3b, 0x80, 0x10, 0x19, - 0x8d, 0x48, 0xa1, 0xb9, 0xf3, 0x5e, 0x3c, 0x13, 0xb4, 0x08, 0xb6, 0xd9, 0xf3, 0x4f, 0x0a, 0xa1, - 0x15, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x08, 0x54, 0x65, - 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x82, 0x10, 0x27, 0xcb, 0x16, 0x33, 0x8b, 0xed, 0x4d, 0xa8, - 0x47, 0xf0, 0x86, 0x47, 0x10, 0xef, 0x15, 0xd9, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, - 0x1d, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x51, 0x94, 0xed, 0x7a, 0x5c, 0x0b, 0x34, 0x16, 0x9c, - 0xf4, 0x5f, 0x88, 0x16, 0xa8, 0x4b, 0x13, 0xfc, 0xa4, 0x0a, 0xc7, 0xd9, 0x20, 0xb1, 0x93, 0xc5, - 0x81, 0x4f, 0x35, 0x3a, 0x89, 0x10, 0x04, 0xc4, 0xcc, 0x10, 0x34, 0xc3, 0x15, 0x57, 0x06, 0x97, - 0xee, 0x06, 0x2f, 0xf3, 0x24, 0xa1, 0xe6, 0x3a, 0x89, 0x4d, 0xb4, 0x7b, 0x12, 0x87, 0x90, 0x8c, - 0xfc, 0x5b, 0xb0, 0xf0, 0xdd, 0xaa, 0x3a, 0x24, 0x6d, 0x55, 0x47, 0x8a, 0xf2, 0x61, 0x08, 0x7a, - 0x59, 0x5f, 0x6e, 0x7b, 0xcb, 0x34, 0xbe, 0xb6, 0x5d, 0xcb, 0x60, 0xae, 0xc4, 0xda, 0x62, 0xbb, - 0x7f, 0x17, 0x1e, 0x73, 0xd1, 0x4e, 0x9f, 0x6e, 0xd3, 0xc8, 0x35, 0x58, 0x30, 0xd2, 0x89, 0xe5, - 0x22, 0x5e, 0x86, 0xac, 0x7a, 0x56, 0xd6, 0x70, 0xdb, 0x54, 0x10, 0x6c, 0xd3, 0xd5, 0x38, 0xfb, - 0x69, 0xcb, 0x4f, 0x36, 0x83, 0xc2, 0xe8, 0x31, 0x82, 0x09, 0x69, 0x30, 0x82, 0x09, 0x65, 0x02, - 0x01, 0x01, 0x30, 0x27, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, - 0x08, 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x02, 0x10, 0x2c, 0x65, 0xcf, 0xcf, 0xdd, - 0x61, 0x7b, 0xa4, 0x41, 0xad, 0x26, 0x1b, 0x63, 0xce, 0x91, 0x0f, 0x30, 0x0d, 0x06, 0x09, 0x60, - 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0xa0, 0x5e, 0x30, 0x10, 0x06, 0x0a, - 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0c, 0x31, 0x02, 0x30, 0x00, 0x30, 0x19, - 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0c, 0x06, 0x0a, 0x2b, - 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x2f, 0x06, 0x09, 0x2a, 0x86, 0x48, - 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x22, 0x04, 0x20, 0x97, 0x6e, 0x29, 0x47, 0xc4, 0x03, - 0x68, 0x70, 0x1c, 0x99, 0x2c, 0x61, 0xb0, 0xbc, 0xde, 0x77, 0xe1, 0xa1, 0xeb, 0x4c, 0x1c, 0xac, - 0x4c, 0x64, 0xf6, 0x43, 0x96, 0x94, 0x0b, 0xc0, 0xbb, 0x03, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x81, 0x80, 0x85, 0x93, 0xad, 0x93, - 0x92, 0x9e, 0xa4, 0x94, 0x30, 0x02, 0xe1, 0xc8, 0xcd, 0x37, 0xb2, 0xe1, 0xcb, 0xb2, 0x0f, 0x1c, - 0x67, 0xd1, 0xc9, 0xeb, 0x4d, 0x68, 0x85, 0x97, 0x5a, 0xa6, 0x0c, 0x03, 0xc7, 0x86, 0xae, 0xb3, - 0x35, 0xb4, 0x1d, 0x0e, 0x95, 0x5f, 0xed, 0x37, 0x13, 0x6b, 0x1e, 0x94, 0x80, 0xf1, 0xac, 0x55, - 0x73, 0xd1, 0x31, 0xf9, 0xad, 0x13, 0x7b, 0x26, 0xbf, 0xe7, 0x55, 0x7b, 0xb2, 0xf9, 0x21, 0x42, - 0x23, 0x64, 0xe6, 0x45, 0x03, 0x67, 0xcb, 0x42, 0xd3, 0x71, 0x3f, 0xd5, 0x29, 0x17, 0x4b, 0x49, - 0x45, 0x0e, 0x8b, 0xba, 0x1f, 0x15, 0x5a, 0x7f, 0x7b, 0x5e, 0x9b, 0x22, 0x46, 0xa7, 0x9c, 0x0d, - 0x25, 0x9c, 0x76, 0x25, 0x02, 0xc8, 0x15, 0x00, 0x51, 0xe6, 0x73, 0x39, 0xac, 0x8d, 0x41, 0x7b, - 0xc8, 0x42, 0xc9, 0xdb, 0x1b, 0x16, 0x13, 0xf6, 0x44, 0x32, 0xef, 0x17, 0xa1, 0x82, 0x08, 0x34, - 0x30, 0x82, 0x08, 0x30, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x03, 0x03, 0x01, - 0x31, 0x82, 0x08, 0x20, - 0x30, 0x82, 0x08, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, - 0x82, 0x08, 0x0d, 0x30, 0x82, 0x08, 0x09, 0x02, 0x01, 0x03, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x05, - 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x30, 0x81, 0xf6, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, - 0xf7, 0x0d, 0x01, 0x09, 0x10, 0x01, 0x04, 0xa0, 0x81, 0xe6, 0x04, 0x81, 0xe3, 0x30, 0x81, 0xe0, - 0x02, 0x01, 0x01, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb2, 0x31, 0x02, 0x01, 0x01, 0x30, - 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14, 0xcd, 0x06, - 0xf0, 0xbd, 0x8b, 0xcd, 0x5c, 0x2e, 0x5a, 0x7c, 0x42, 0x56, 0x2c, 0x20, 0x4a, 0x15, 0xcb, 0x1d, - 0x8b, 0x0e, 0x02, 0x15, 0x00, 0xb6, 0xff, 0x47, 0x05, 0xb6, 0x2d, 0x15, 0xac, 0x3f, 0x5d, 0xd9, - 0xcf, 0x9d, 0x54, 0x35, 0x56, 0x7c, 0xc1, 0x6e, 0x8b, 0x18, 0x0f, 0x32, 0x30, 0x31, 0x34, 0x30, - 0x37, 0x32, 0x38, 0x30, 0x38, 0x35, 0x30, 0x30, 0x33, 0x5a, 0xa0, 0x81, 0x83, 0xa4, 0x81, 0x80, - 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, - 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, - 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, - 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x13, 0x1b, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x54, 0x69, 0x6d, 0x65, - 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, - 0xa0, 0x82, 0x04, 0x97, 0x30, 0x82, 0x04, 0x93, 0x30, 0x82, 0x03, 0x7b, 0xa0, 0x03, 0x02, 0x01, - 0x02, 0x02, 0x10, 0x47, 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c, 0xe1, 0x42, 0xd2, 0xa2, - 0x87, 0x07, 0xbe, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, - 0x05, 0x00, 0x30, 0x81, 0x95, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x02, 0x55, 0x54, 0x31, - 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, - 0x61, 0x6b, 0x65, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, - 0x0a, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, - 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, - 0x0b, 0x13, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x1d, 0x30, 0x1b, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x13, 0x14, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, - 0x72, 0x73, 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, - 0x30, 0x35, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, - 0x35, 0x31, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, - 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, - 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, - 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, - 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1b, 0x43, - 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, - 0x69, 0x6e, 0x67, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, - 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, - 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbc, 0x35, 0xa0, 0x36, 0x70, - 0x22, 0x81, 0x11, 0xc3, 0xb2, 0x83, 0xb9, 0xd3, 0x28, 0xc6, 0x36, 0xcd, 0x25, 0x6b, 0xa9, 0x7b, - 0xb2, 0x1c, 0xf6, 0x9b, 0x51, 0x9c, 0xef, 0x35, 0xf4, 0xed, 0x08, 0x8e, 0x5e, 0x38, 0x08, 0xf8, - 0x77, 0x3c, 0x0a, 0x42, 0xe0, 0xf3, 0x70, 0xdc, 0xa3, 0xd7, 0xca, 0xf5, 0x4c, 0x0b, 0xcf, 0xff, - 0x22, 0x9c, 0x0a, 0x7e, 0x68, 0xd6, 0x09, 0xa2, 0x2a, 0x84, 0x7b, 0xa6, 0x9d, 0xb4, 0xa9, 0xc1, - 0x33, 0xe2, 0xef, 0x1f, 0x17, 0x48, 0xca, 0x3a, 0xcd, 0x46, 0xe6, 0xc5, 0xaa, 0x77, 0xbd, 0xe3, - 0x77, 0x9a, 0xfa, 0x47, 0x53, 0x40, 0x28, 0x59, 0x43, 0x93, 0xf1, 0xa4, 0x81, 0xea, 0xef, 0x80, - 0xb5, 0x4f, 0xa7, 0x08, 0xce, 0xba, 0x6e, 0xbc, 0xca, 0x76, 0x0c, 0x97, 0x64, 0x59, 0x86, 0x24, - 0xbb, 0x3d, 0x82, 0x90, 0xa8, 0x55, 0xb1, 0x92, 0xd3, 0xa0, 0xa7, 0x05, 0xac, 0x9f, 0x53, 0x25, - 0x08, 0x10, 0x47, 0x99, 0xcd, 0x98, 0xde, 0x68, 0xe5, 0xb4, 0x50, 0x78, 0xa3, 0xaf, 0x01, 0xcc, - 0x59, 0x43, 0x58, 0xe4, 0x76, 0x6e, 0x7e, 0xac, 0xc7, 0xe2, 0x9e, 0x1f, 0x4f, 0xb0, 0x47, 0x2d, - 0xc8, 0x0c, 0xa3, 0x49, 0x27, 0x80, 0x75, 0x8c, 0xbb, 0x06, 0x91, 0x65, 0x0f, 0x90, 0x9b, 0xf4, - 0xba, 0xd1, 0x81, 0xc8, 0x5c, 0x6a, 0xec, 0x14, 0xe9, 0x25, 0x09, 0xbf, 0x23, 0x16, 0xf4, 0x95, - 0x46, 0x40, 0x40, 0x21, 0xbb, 0x83, 0x96, 0xfd, 0x86, 0x1f, 0x7a, 0xc8, 0x0d, 0x10, 0x8e, 0xa2, - 0xf8, 0x19, 0x07, 0x58, 0x7f, 0x9f, 0xbd, 0x37, 0x02, 0x60, 0xf2, 0xa4, 0xe9, 0x9d, 0x44, 0x3f, - 0x30, 0x05, 0xe4, 0xa7, 0x70, 0x99, 0x51, 0x9a, 0xe8, 0x17, 0xf1, 0x55, 0xca, 0xb2, 0x61, 0x89, - 0x65, 0x46, 0xa7, 0x6a, 0xf2, 0x58, 0x46, 0x7e, 0xaa, 0xa0, 0x07, 0x02, 0x03, 0x01, 0x00, 0x01, - 0xa3, 0x81, 0xf4, 0x30, 0x81, 0xf1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, - 0x16, 0x80, 0x14, 0xda, 0xed, 0x64, 0x74, 0x14, 0x9c, 0x14, 0x3c, 0xab, 0xdd, 0x99, 0xa9, 0xbd, - 0x5b, 0x28, 0x4d, 0x8b, 0x3c, 0xc9, 0xd8, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, - 0x04, 0x14, 0x2e, 0x2d, 0xb0, 0x0a, 0x44, 0x4a, 0xd3, 0x87, 0xc0, 0x02, 0x07, 0xce, 0x97, 0x7d, - 0x50, 0x62, 0x20, 0xfd, 0x0f, 0x83, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, - 0x04, 0x04, 0x03, 0x02, 0x06, 0xc0, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, - 0x04, 0x02, 0x30, 0x00, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x01, 0x01, 0xff, 0x04, 0x0c, - 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x42, 0x06, 0x03, - 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, - 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, - 0x46, 0x69, 0x72, 0x73, 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x63, 0x72, 0x6c, - 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x29, 0x30, 0x27, - 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, - 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, - 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xc8, 0xfb, 0x63, 0xf8, 0x0b, - 0x75, 0x75, 0x2c, 0x3a, 0xf1, 0xf2, 0x13, 0xa7, 0x2d, 0xb6, 0xa3, 0x1a, 0x9c, 0xad, 0x01, 0x07, - 0xd3, 0x34, 0x8e, 0x77, 0xe0, 0xc2, 0x6e, 0xae, 0x02, 0x5d, 0x48, 0x4f, 0xa4, 0xd2, 0x21, 0xb6, - 0x36, 0xfd, 0x2a, 0x35, 0x43, 0x7c, 0x6b, 0xdf, 0x80, 0x87, 0x0b, 0x15, 0xf0, 0x76, 0x32, 0x00, - 0xb4, 0xce, 0xb5, 0x67, 0xa4, 0x2f, 0x2f, 0x20, 0x1b, 0x9c, 0x54, 0x9e, 0x83, 0x3f, 0x1f, 0x5f, - 0x14, 0x95, 0x62, 0x82, 0x0f, 0x22, 0x41, 0x22, 0x1f, 0x70, 0xb3, 0xf3, 0xf7, 0x42, 0xde, 0x6c, - 0x51, 0xcd, 0x4b, 0xf8, 0x21, 0xac, 0x9b, 0x3b, 0x8c, 0xb1, 0xe5, 0xe6, 0x28, 0x8f, 0xce, 0x2a, - 0x8a, 0xf9, 0xaa, 0x52, 0x4d, 0x8c, 0x5b, 0x77, 0xba, 0x4d, 0x5a, 0x58, 0xdb, 0xbb, 0x6a, 0x04, - 0xcc, 0x52, 0x1e, 0x9d, 0xe2, 0x28, 0x37, 0x0e, 0xbb, 0xe7, 0x0e, 0x91, 0xc7, 0xf8, 0xdb, 0xf1, - 0x81, 0x98, 0xeb, 0xcd, 0x37, 0xb3, 0x0e, 0xab, 0x65, 0xd3, 0x62, 0xec, 0x3a, 0xa5, 0x76, 0xeb, - 0x13, 0xa8, 0x35, 0x93, 0xc9, 0x2e, 0x0a, 0x01, 0xec, 0xc0, 0xe8, 0xcc, 0x3d, 0x7e, 0xb6, 0xeb, - 0xe2, 0xc1, 0xec, 0xd3, 0x14, 0x92, 0x82, 0x66, 0x87, 0x50, 0xdc, 0xfd, 0x50, 0x97, 0xac, 0xb3, - 0x4a, 0x76, 0x73, 0x06, 0xc4, 0x86, 0x11, 0x3a, 0xb3, 0x5f, 0x43, 0x04, 0x52, 0x6f, 0xea, 0xb3, - 0xd0, 0x74, 0x36, 0x4c, 0xca, 0xf1, 0x1b, 0x79, 0x84, 0x37, 0x70, 0x63, 0xad, 0x74, 0xb9, 0xaa, - 0x0e, 0xf3, 0x98, 0xb0, 0x86, 0x08, 0xeb, 0xdb, 0xe0, 0x1f, 0x8c, 0x10, 0xf2, 0x39, 0x64, 0x9b, - 0xae, 0x4f, 0x0a, 0x2c, 0x92, 0x8a, 0x4f, 0x18, 0xb5, 0x91, 0xe5, 0x8d, 0x1a, 0x93, 0x5f, 0x1f, - 0xae, 0xf1, 0xa6, 0xf0, 0x2e, 0x97, 0xd0, 0xd2, 0xf6, 0x2b, 0x3c, 0x31, 0x82, 0x02, 0x61, 0x30, - 0x82, 0x02, 0x5d, 0x02, 0x01, 0x01, 0x30, 0x81, 0xaa, 0x30, 0x81, 0x95, 0x31, 0x0b, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, - 0x04, 0x08, 0x13, 0x02, 0x55, 0x54, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, - 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, - 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, - 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, - 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, - 0x6f, 0x6d, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x14, 0x55, 0x54, 0x4e, - 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, 0x72, 0x73, 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x02, 0x10, 0x47, 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c, 0xe1, 0x42, 0xd2, 0xa2, - 0x87, 0x07, 0xbe, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0xa0, 0x81, - 0x8c, 0x30, 0x1a, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0d, - 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x10, 0x01, 0x04, 0x30, 0x1c, 0x06, - 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x05, 0x31, 0x0f, 0x17, 0x0d, 0x31, 0x34, - 0x30, 0x37, 0x32, 0x38, 0x30, 0x38, 0x35, 0x30, 0x30, 0x33, 0x5a, 0x30, 0x23, 0x06, 0x09, 0x2a, - 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0x7a, 0xad, 0x35, 0xdc, - 0x5b, 0xd6, 0x00, 0xd7, 0x44, 0xac, 0x80, 0x8f, 0x4f, 0xb6, 0xb4, 0x03, 0x62, 0x34, 0x53, 0xdc, - 0x30, 0x2b, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x10, 0x02, 0x0c, 0x31, - 0x1c, 0x30, 0x1a, 0x30, 0x18, 0x30, 0x16, 0x04, 0x14, 0x3d, 0xbb, 0x6d, 0xb5, 0x08, 0x5c, 0x6d, - 0xd5, 0xa1, 0xca, 0x7f, 0x9c, 0xf8, 0x4e, 0xcb, 0x1a, 0x39, 0x10, 0xca, 0xc8, 0x30, 0x0d, 0x06, - 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, - 0x73, 0x64, 0xb9, 0xa3, 0x54, 0x6f, 0x50, 0x97, 0x01, 0xa7, 0xf6, 0x0d, 0xb8, 0xce, 0x4b, 0xaa, - 0x43, 0xa2, 0x8f, 0xa3, 0xea, 0x93, 0xf2, 0xa3, 0xd0, 0x46, 0xde, 0xdd, 0x45, 0xe5, 0x94, 0x5a, - 0x45, 0xc2, 0x13, 0x1b, 0x90, 0x9b, 0xcf, 0x73, 0xcd, 0x28, 0x70, 0xf0, 0xf4, 0x54, 0xb5, 0x2d, - 0x31, 0xf9, 0xf3, 0x2d, 0x38, 0x78, 0xfe, 0x68, 0xea, 0x3c, 0xc0, 0xbe, 0x0b, 0x5a, 0x91, 0x49, - 0x63, 0xeb, 0x26, 0x32, 0x5b, 0x86, 0xcf, 0xe5, 0x8a, 0xa5, 0x9d, 0xe6, 0x4b, 0x57, 0x91, 0x8f, - 0x3c, 0xdc, 0xa6, 0x53, 0xd8, 0xdb, 0x8a, 0xfd, 0x3e, 0x7e, 0x19, 0x6f, 0x27, 0x72, 0x95, 0xc2, - 0x79, 0x73, 0xdf, 0xfb, 0x08, 0x5c, 0x5b, 0xc8, 0xb7, 0x94, 0x75, 0x88, 0x7a, 0x9a, 0x85, 0x9f, - 0x1b, 0xa3, 0x98, 0x30, 0x91, 0xee, 0xc0, 0x52, 0xd2, 0x75, 0x9c, 0xcb, 0x45, 0x0d, 0x94, 0x43, - 0x67, 0x7a, 0x49, 0x1c, 0xb1, 0x89, 0x9d, 0x6e, 0xfa, 0x87, 0xd2, 0x4d, 0x6e, 0x74, 0x90, 0xf5, - 0x80, 0x8c, 0x92, 0xda, 0xd9, 0xa1, 0x48, 0x20, 0x31, 0x02, 0x79, 0xde, 0xe3, 0xbd, 0x09, 0x04, - 0xa8, 0xd4, 0x99, 0xd7, 0x3b, 0xea, 0xf8, 0xdf, 0xb3, 0xb9, 0xd7, 0xa3, 0x36, 0xa1, 0xdb, 0xd3, - 0xec, 0x65, 0x8c, 0xb8, 0x8f, 0xfb, 0xd6, 0xef, 0x9c, 0x32, 0x3e, 0xab, 0x20, 0x74, 0xb9, 0x65, - 0x4c, 0xc6, 0x15, 0x2f, 0x31, 0x2a, 0x34, 0x3e, 0x84, 0x09, 0xb4, 0x75, 0xbc, 0xbe, 0xaf, 0xb3, - 0x9e, 0x85, 0xf1, 0xbb, 0x99, 0x1a, 0x07, 0xbd, 0x20, 0xa6, 0xed, 0xcf, 0xd1, 0xa6, 0x9a, 0x22, - 0xb2, 0x6d, 0x75, 0xf4, 0x23, 0x58, 0x13, 0x78, 0x73, 0x1a, 0xb2, 0x84, 0xde, 0xad, 0xe8, 0x6d, - 0xe6, 0xe7, 0x5c, 0xb6, 0xe6, 0x5b, 0x10, 0x37, 0x1f, 0xe3, 0x6e, 0xbd, 0x83, 0xd7, 0x51, 0xb1, - 0x00, 0x00, 0x00, 0x00, 0x0a - }; - -// -// The Comodo Time Stamping Signer Certificate Used for the verification of TimeStamp signature. -// -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TSTrustedCert[] = { - 0x30, 0x82, 0x04, 0x93, 0x30, 0x82, 0x03, 0x7b, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x47, - 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c, 0xe1, 0x42, 0xd2, 0xa2, 0x87, 0x07, 0xbe, 0x30, - 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, - 0x95, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x02, 0x55, 0x54, 0x31, 0x17, 0x30, 0x15, 0x06, - 0x03, 0x55, 0x04, 0x07, 0x13, 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, - 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x54, - 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x68, - 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, - 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x13, 0x14, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, 0x72, 0x73, 0x74, 0x2d, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x35, 0x31, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x35, 0x31, 0x30, 0x32, - 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, - 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, - 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, - 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x43, - 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, - 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1b, 0x43, 0x4f, 0x4d, 0x4f, 0x44, - 0x4f, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, - 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, - 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbc, 0x35, 0xa0, 0x36, 0x70, 0x22, 0x81, 0x11, 0xc3, - 0xb2, 0x83, 0xb9, 0xd3, 0x28, 0xc6, 0x36, 0xcd, 0x25, 0x6b, 0xa9, 0x7b, 0xb2, 0x1c, 0xf6, 0x9b, - 0x51, 0x9c, 0xef, 0x35, 0xf4, 0xed, 0x08, 0x8e, 0x5e, 0x38, 0x08, 0xf8, 0x77, 0x3c, 0x0a, 0x42, - 0xe0, 0xf3, 0x70, 0xdc, 0xa3, 0xd7, 0xca, 0xf5, 0x4c, 0x0b, 0xcf, 0xff, 0x22, 0x9c, 0x0a, 0x7e, - 0x68, 0xd6, 0x09, 0xa2, 0x2a, 0x84, 0x7b, 0xa6, 0x9d, 0xb4, 0xa9, 0xc1, 0x33, 0xe2, 0xef, 0x1f, - 0x17, 0x48, 0xca, 0x3a, 0xcd, 0x46, 0xe6, 0xc5, 0xaa, 0x77, 0xbd, 0xe3, 0x77, 0x9a, 0xfa, 0x47, - 0x53, 0x40, 0x28, 0x59, 0x43, 0x93, 0xf1, 0xa4, 0x81, 0xea, 0xef, 0x80, 0xb5, 0x4f, 0xa7, 0x08, - 0xce, 0xba, 0x6e, 0xbc, 0xca, 0x76, 0x0c, 0x97, 0x64, 0x59, 0x86, 0x24, 0xbb, 0x3d, 0x82, 0x90, - 0xa8, 0x55, 0xb1, 0x92, 0xd3, 0xa0, 0xa7, 0x05, 0xac, 0x9f, 0x53, 0x25, 0x08, 0x10, 0x47, 0x99, - 0xcd, 0x98, 0xde, 0x68, 0xe5, 0xb4, 0x50, 0x78, 0xa3, 0xaf, 0x01, 0xcc, 0x59, 0x43, 0x58, 0xe4, - 0x76, 0x6e, 0x7e, 0xac, 0xc7, 0xe2, 0x9e, 0x1f, 0x4f, 0xb0, 0x47, 0x2d, 0xc8, 0x0c, 0xa3, 0x49, - 0x27, 0x80, 0x75, 0x8c, 0xbb, 0x06, 0x91, 0x65, 0x0f, 0x90, 0x9b, 0xf4, 0xba, 0xd1, 0x81, 0xc8, - 0x5c, 0x6a, 0xec, 0x14, 0xe9, 0x25, 0x09, 0xbf, 0x23, 0x16, 0xf4, 0x95, 0x46, 0x40, 0x40, 0x21, - 0xbb, 0x83, 0x96, 0xfd, 0x86, 0x1f, 0x7a, 0xc8, 0x0d, 0x10, 0x8e, 0xa2, 0xf8, 0x19, 0x07, 0x58, - 0x7f, 0x9f, 0xbd, 0x37, 0x02, 0x60, 0xf2, 0xa4, 0xe9, 0x9d, 0x44, 0x3f, 0x30, 0x05, 0xe4, 0xa7, - 0x70, 0x99, 0x51, 0x9a, 0xe8, 0x17, 0xf1, 0x55, 0xca, 0xb2, 0x61, 0x89, 0x65, 0x46, 0xa7, 0x6a, - 0xf2, 0x58, 0x46, 0x7e, 0xaa, 0xa0, 0x07, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xf4, 0x30, - 0x81, 0xf1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xda, - 0xed, 0x64, 0x74, 0x14, 0x9c, 0x14, 0x3c, 0xab, 0xdd, 0x99, 0xa9, 0xbd, 0x5b, 0x28, 0x4d, 0x8b, - 0x3c, 0xc9, 0xd8, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x2e, 0x2d, - 0xb0, 0x0a, 0x44, 0x4a, 0xd3, 0x87, 0xc0, 0x02, 0x07, 0xce, 0x97, 0x7d, 0x50, 0x62, 0x20, 0xfd, - 0x0f, 0x83, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, - 0x06, 0xc0, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x01, 0x01, 0xff, 0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, - 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x42, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, - 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, 0x74, 0x74, 0x70, 0x3a, - 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, 0x72, 0x73, - 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x35, 0x06, 0x08, - 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x29, 0x30, 0x27, 0x30, 0x25, 0x06, 0x08, - 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, - 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, - 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xc8, 0xfb, 0x63, 0xf8, 0x0b, 0x75, 0x75, 0x2c, 0x3a, - 0xf1, 0xf2, 0x13, 0xa7, 0x2d, 0xb6, 0xa3, 0x1a, 0x9c, 0xad, 0x01, 0x07, 0xd3, 0x34, 0x8e, 0x77, - 0xe0, 0xc2, 0x6e, 0xae, 0x02, 0x5d, 0x48, 0x4f, 0xa4, 0xd2, 0x21, 0xb6, 0x36, 0xfd, 0x2a, 0x35, - 0x43, 0x7c, 0x6b, 0xdf, 0x80, 0x87, 0x0b, 0x15, 0xf0, 0x76, 0x32, 0x00, 0xb4, 0xce, 0xb5, 0x67, - 0xa4, 0x2f, 0x2f, 0x20, 0x1b, 0x9c, 0x54, 0x9e, 0x83, 0x3f, 0x1f, 0x5f, 0x14, 0x95, 0x62, 0x82, - 0x0f, 0x22, 0x41, 0x22, 0x1f, 0x70, 0xb3, 0xf3, 0xf7, 0x42, 0xde, 0x6c, 0x51, 0xcd, 0x4b, 0xf8, - 0x21, 0xac, 0x9b, 0x3b, 0x8c, 0xb1, 0xe5, 0xe6, 0x28, 0x8f, 0xce, 0x2a, 0x8a, 0xf9, 0xaa, 0x52, - 0x4d, 0x8c, 0x5b, 0x77, 0xba, 0x4d, 0x5a, 0x58, 0xdb, 0xbb, 0x6a, 0x04, 0xcc, 0x52, 0x1e, 0x9d, - 0xe2, 0x28, 0x37, 0x0e, 0xbb, 0xe7, 0x0e, 0x91, 0xc7, 0xf8, 0xdb, 0xf1, 0x81, 0x98, 0xeb, 0xcd, - 0x37, 0xb3, 0x0e, 0xab, 0x65, 0xd3, 0x62, 0xec, 0x3a, 0xa5, 0x76, 0xeb, 0x13, 0xa8, 0x35, 0x93, - 0xc9, 0x2e, 0x0a, 0x01, 0xec, 0xc0, 0xe8, 0xcc, 0x3d, 0x7e, 0xb6, 0xeb, 0xe2, 0xc1, 0xec, 0xd3, - 0x14, 0x92, 0x82, 0x66, 0x87, 0x50, 0xdc, 0xfd, 0x50, 0x97, 0xac, 0xb3, 0x4a, 0x76, 0x73, 0x06, - 0xc4, 0x86, 0x11, 0x3a, 0xb3, 0x5f, 0x43, 0x04, 0x52, 0x6f, 0xea, 0xb3, 0xd0, 0x74, 0x36, 0x4c, - 0xca, 0xf1, 0x1b, 0x79, 0x84, 0x37, 0x70, 0x63, 0xad, 0x74, 0xb9, 0xaa, 0x0e, 0xf3, 0x98, 0xb0, - 0x86, 0x08, 0xeb, 0xdb, 0xe0, 0x1f, 0x8c, 0x10, 0xf2, 0x39, 0x64, 0x9b, 0xae, 0x4f, 0x0a, 0x2c, - 0x92, 0x8a, 0x4f, 0x18, 0xb5, 0x91, 0xe5, 0x8d, 0x1a, 0x93, 0x5f, 0x1f, 0xae, 0xf1, 0xa6, 0xf0, - 0x2e, 0x97, 0xd0, 0xd2, 0xf6, 0x2b, 0x3c, 0x0a - }; - -/** - Validate MSFT Authenticode & Timestamping CounterSignature. - - @retval TRUE Validation succeeded. - @retval FALSE Validation failed. - -**/ -BOOLEAN -VerifyTSCounterSignature ( - VOID - ) -{ - BOOLEAN Status; - EFI_TIME SigningTime; - - Status = FALSE; - - Print (L"\n- Verify RFC3161 TimeStamp CounterSignature in PE/COFF Authenticode ... "); - // - // Verify RFC3161 Timestamp CounterSignature. - // - Status = ImageTimestampVerify ( - AuthenticodeWithTS, - sizeof (AuthenticodeWithTS), - TSTrustedCert, - sizeof (TSTrustedCert), - &SigningTime - ); - if (Status) { - Print (L"[Pass]\n"); - Print (L" --> The PE/COFF was signed at <%t>", &SigningTime); - } else { - Print (L"[Fail]"); - } - - return Status; -} - -/** - Validate UEFI-OpenSSL RFC3161 Timestamp CounterSignature Verification Interfaces. - - @retval EFI_SUCCESS Validation succeeded. - @retval EFI_ABORTED Validation failed. - -**/ -EFI_STATUS -ValidateTSCounterSignature ( - VOID - ) -{ - BOOLEAN Status; - - Print (L"\nUEFI-OpenSSL RFC3161 Timestamp Signature Testing: "); - - Status = VerifyTSCounterSignature (); - - Print (L"\n"); - - if (Status) { - return EFI_SUCCESS; - } else { - return EFI_ABORTED; - } -} diff --git a/Core/CryptoPkg/Contributions.txt b/Core/CryptoPkg/Contributions.txt deleted file mode 100644 index f87cbd73c6..0000000000 --- a/Core/CryptoPkg/Contributions.txt +++ /dev/null @@ -1,218 +0,0 @@ - -====================== -= Code Contributions = -====================== - -To make a contribution to a TianoCore project, follow these steps. -1. Create a change description in the format specified below to - use in the source control commit log. -2. Your commit message must include your "Signed-off-by" signature, - and "Contributed-under" message. -3. Your "Contributed-under" message explicitly states that the - contribution is made under the terms of the specified - contribution agreement. Your "Contributed-under" message - must include the name of contribution agreement and version. - For example: Contributed-under: TianoCore Contribution Agreement 1.0 - The "TianoCore Contribution Agreement" is included below in - this document. -4. Submit your code to the TianoCore project using the process - that the project documents on its web page. If the process is - not documented, then submit the code on development email list - for the project. -5. It is preferred that contributions are submitted using the same - copyright license as the base project. When that is not possible, - then contributions using the following licenses can be accepted: - * BSD (2-clause): http://opensource.org/licenses/BSD-2-Clause - * BSD (3-clause): http://opensource.org/licenses/BSD-3-Clause - * MIT: http://opensource.org/licenses/MIT - * Python-2.0: http://opensource.org/licenses/Python-2.0 - * Zlib: http://opensource.org/licenses/Zlib - - Contributions of code put into the public domain can also be - accepted. - - Contributions using other licenses might be accepted, but further - review will be required. - -===================================================== -= Change Description / Commit Message / Patch Email = -===================================================== - -Your change description should use the standard format for a -commit message, and must include your "Signed-off-by" signature -and the "Contributed-under" message. - -== Sample Change Description / Commit Message = - -=== Start of sample patch email message === - -From: Contributor Name -Subject: [PATCH] CodeModule: Brief-single-line-summary - -Full-commit-message - -Contributed-under: TianoCore Contribution Agreement 1.0 -Signed-off-by: Contributor Name ---- - -An extra message for the patch email which will not be considered part -of the commit message can be added here. - -Patch content inline or attached - -=== End of sample patch email message === - -=== Notes for sample patch email === - -* The first line of commit message is taken from the email's subject - line following [PATCH]. The remaining portion of the commit message - is the email's content until the '---' line. -* git format-patch is one way to create this format - -=== Definitions for sample patch email === - -* "CodeModule" is a short idenfier for the affected code. For - example MdePkg, or MdeModulePkg UsbBusDxe. -* "Brief-single-line-summary" is a short summary of the change. -* The entire first line should be less than ~70 characters. -* "Full-commit-message" a verbose multiple line comment describing - the change. Each line should be less than ~70 characters. -* "Contributed-under" explicitely states that the contribution is - made under the terms of the contribtion agreement. This - agreement is included below in this document. -* "Signed-off-by" is the contributor's signature identifying them - by their real/legal name and their email address. - -======================================== -= TianoCore Contribution Agreement 1.0 = -======================================== - -INTEL CORPORATION ("INTEL") MAKES AVAILABLE SOFTWARE, DOCUMENTATION, -INFORMATION AND/OR OTHER MATERIALS FOR USE IN THE TIANOCORE OPEN SOURCE -PROJECT (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE -TERMS AND CONDITIONS OF THIS AGREEMENT BETWEEN YOU AND INTEL AND/OR THE -TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR -REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE -CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS -OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED -BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS -AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE -AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT -USE THE CONTENT. - -Unless otherwise indicated, all Content made available on the TianoCore -site is provided to you under the terms and conditions of the BSD -License ("BSD"). A copy of the BSD License is available at -http://opensource.org/licenses/bsd-license.php -or when applicable, in the associated License.txt file. - -Certain other content may be made available under other licenses as -indicated in or with such Content. (For example, in a License.txt file.) - -You accept and agree to the following terms and conditions for Your -present and future Contributions submitted to TianoCore site. Except -for the license granted to Intel hereunder, You reserve all right, -title, and interest in and to Your Contributions. - -== SECTION 1: Definitions == -* "You" or "Contributor" shall mean the copyright owner or legal - entity authorized by the copyright owner that is making a - Contribution hereunder. All other entities that control, are - controlled by, or are under common control with that entity are - considered to be a single Contributor. For the purposes of this - definition, "control" means (i) the power, direct or indirect, to - cause the direction or management of such entity, whether by - contract or otherwise, or (ii) ownership of fifty percent (50%) - or more of the outstanding shares, or (iii) beneficial ownership - of such entity. -* "Contribution" shall mean any original work of authorship, - including any modifications or additions to an existing work, - that is intentionally submitted by You to the TinaoCore site for - inclusion in, or documentation of, any of the Content. For the - purposes of this definition, "submitted" means any form of - electronic, verbal, or written communication sent to the - TianoCore site or its representatives, including but not limited - to communication on electronic mailing lists, source code - control systems, and issue tracking systems that are managed by, - or on behalf of, the TianoCore site for the purpose of - discussing and improving the Content, but excluding - communication that is conspicuously marked or otherwise - designated in writing by You as "Not a Contribution." - -== SECTION 2: License for Contributions == -* Contributor hereby agrees that redistribution and use of the - Contribution in source and binary forms, with or without - modification, are permitted provided that the following - conditions are met: -** Redistributions of source code must retain the Contributor's - copyright notice, this list of conditions and the following - disclaimer. -** Redistributions in binary form must reproduce the Contributor's - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. -* Disclaimer. None of the names of Contributor, Intel, or the names - of their respective contributors may be used to endorse or - promote products derived from this software without specific - prior written permission. -* Contributor grants a license (with the right to sublicense) under - claims of Contributor's patents that Contributor can license that - are infringed by the Contribution (as delivered by Contributor) to - make, use, distribute, sell, offer for sale, and import the - Contribution and derivative works thereof solely to the minimum - extent necessary for licensee to exercise the granted copyright - license; this patent license applies solely to those portions of - the Contribution that are unmodified. No hardware per se is - licensed. -* EXCEPT AS EXPRESSLY SET FORTH IN SECTION 3 BELOW, THE - CONTRIBUTION IS PROVIDED BY THE CONTRIBUTOR "AS IS" AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE - CONTRIBUTION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - DAMAGE. - -== SECTION 3: Representations == -* You represent that You are legally entitled to grant the above - license. If your employer(s) has rights to intellectual property - that You create that includes Your Contributions, You represent - that You have received permission to make Contributions on behalf - of that employer, that Your employer has waived such rights for - Your Contributions. -* You represent that each of Your Contributions is Your original - creation (see Section 4 for submissions on behalf of others). - You represent that Your Contribution submissions include complete - details of any third-party license or other restriction - (including, but not limited to, related patents and trademarks) - of which You are personally aware and which are associated with - any part of Your Contributions. - -== SECTION 4: Third Party Contributions == -* Should You wish to submit work that is not Your original creation, - You may submit it to TianoCore site separately from any - Contribution, identifying the complete details of its source - and of any license or other restriction (including, but not - limited to, related patents, trademarks, and license agreements) - of which You are personally aware, and conspicuously marking the - work as "Submitted on behalf of a third-party: [named here]". - -== SECTION 5: Miscellaneous == -* Applicable Laws. Any claims arising under or relating to this - Agreement shall be governed by the internal substantive laws of - the State of Delaware or federal courts located in Delaware, - without regard to principles of conflict of laws. -* Language. This Agreement is in the English language only, which - language shall be controlling in all respects, and all versions - of this Agreement in any other language shall be for accommodation - only and shall not be binding. All communications and notices made - or given pursuant to this Agreement, and all documentation and - support to be provided, unless otherwise noted, shall be in the - English language. - diff --git a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.c b/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.c deleted file mode 100644 index 47a92fec65..0000000000 --- a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.c +++ /dev/null @@ -1,248 +0,0 @@ -/** @file - Runtime Cryptographic Driver Implementation, which produce one crypto - protocol. - -Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "CryptRuntime.h" - -// -// The handle onto which the Runtime Crypt Protocol instance is installed -// -EFI_HANDLE mRuntimeCryptHandle = NULL; - -// -// The Runtime Crypt Protocol instance produced by this driver -// -EFI_RUNTIME_CRYPT_PROTOCOL mRuntimeCryptProtocol = { - RuntimeCryptSha256GetContextSize, - RuntimeCryptSha256Init, - RuntimeCryptSha256Update, - RuntimeCryptSha256Final, - RuntimeCryptRsaNew, - RuntimeCryptRsaFree, - RuntimeCryptRsaSetKey, - RuntimeCryptRsaPkcs1Verify -}; - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-256 operations. - - @return The size, in bytes, of the context buffer required for SHA-256 operations. - -**/ -UINTN -EFIAPI -RuntimeCryptSha256GetContextSize ( - VOID - ) -{ - return Sha256GetContextSize (); -} - -/** - Initializes user-supplied memory pointed by Sha256Context as SHA-256 hash context for - subsequent use. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 Context being initialized. - - @retval TRUE SHA-256 context initialization succeeded. - @retval FALSE SHA-256 context initialization failed. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptSha256Init ( - IN OUT VOID *Sha256Context - ) -{ - return Sha256Init (Sha256Context); -} - -/** - Performs SHA-256 digest on a data buffer of the specified length. This function can - be called multiple times to compute the digest of long or discontinuous data streams. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataLength Length of Data buffer in bytes. - - @retval TRUE SHA-256 data digest succeeded. - @retval FALSE Invalid SHA-256 context. After Sha256Final function has been called, the - SHA-256 context cannot be reused. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptSha256Update ( - IN OUT VOID *Sha256Context, - IN CONST VOID *Data, - IN UINTN DataLength - ) -{ - return Sha256Update (Sha256Context, Data, DataLength); -} - -/** - Completes SHA-256 hash computation and retrieves the digest value into the specified - memory. After this function has been called, the SHA-256 context cannot be used again. - - If Sha256Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 context - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptSha256Final ( - IN OUT VOID *Sha256Context, - OUT UINT8 *HashValue - ) -{ - return Sha256Final (Sha256Context, HashValue); -} - -/** - Allocates and Initializes one RSA Context for subsequent use. - - @return Pointer to the RSA Context that has been initialized. - If the allocations fails, RsaNew() returns NULL. - -**/ -VOID * -EFIAPI -RuntimeCryptRsaNew ( - VOID - ) -{ - return RsaNew (); -} - -/** - Release the specified RSA Context. - - @param[in] RsaContext Pointer to the RSA context to be released. - -**/ -VOID -EFIAPI -RuntimeCryptRsaFree ( - IN VOID *RsaContext - ) -{ - RsaFree (RsaContext); -} - -/** - Sets the tag-designated RSA key component into the established RSA context from - the user-specified nonnegative integer (octet string format represented in RSA - PKCS#1). - - If RsaContext is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[in] BigNumber Pointer to octet integer buffer. - @param[in] BnLength Length of big number buffer in bytes. - - @return TRUE RSA key component was set successfully. - @return FALSE Invalid RSA key component tag. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptRsaSetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - IN CONST UINT8 *BigNumber, - IN UINTN BnLength - ) -{ - return RsaSetKey (RsaContext, KeyTag, BigNumber, BnLength); -} - -/** - Verifies the RSA-SSA signature with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If Signature is NULL, then return FALSE. - If HashLength is not equal to the size of MD5, SHA-1 or SHA-256 digest, return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature verification. - @param[in] MessageHash Pointer to octet message hash to be checked. - @param[in] HashLength Length of the message hash in bytes. - @param[in] Signature Pointer to RSA PKCS1-v1_5 signature to be verified. - @param[in] SigLength Length of signature in bytes. - - @return TRUE Valid signature encoded in PKCS1-v1_5. - @return FALSE Invalid signature or invalid RSA context. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptRsaPkcs1Verify ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashLength, - IN CONST UINT8 *Signature, - IN UINTN SigLength - ) -{ - return RsaPkcs1Verify (RsaContext, MessageHash, HashLength, Signature, SigLength); -} - -/** - Entry Point for Runtime Cryptographic Driver. - - This function installs Runtime Crypt Protocol. - - @param ImageHandle Image handle of this driver. - @param SystemTable a Pointer to the EFI System Table. - - @retval EFI_SUCEESS Runtime Crypt Protocol is successfully installed - @return Others Some error occurs when installing Runtime Crypt Protocol. - -**/ -EFI_STATUS -EFIAPI -CryptRuntimeDriverInitialize ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - // - // Install the Runtime Crypt Protocol onto a new handle - // - Status = gBS->InstallMultipleProtocolInterfaces ( - &mRuntimeCryptHandle, - &gEfiRuntimeCryptProtocolGuid, - &mRuntimeCryptProtocol, - NULL - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} diff --git a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.h b/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.h deleted file mode 100644 index a7d21fd3ff..0000000000 --- a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntime.h +++ /dev/null @@ -1,186 +0,0 @@ -/** @file - Header file of Runtime Cryptographic Driver. - -Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _CRYPT_RUNTIME_H_ -#define _CRYPT_RUNTIME_H_ - -#include - -#include - -#include -#include -#include -#include - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-256 operations. - - @return The size, in bytes, of the context buffer required for SHA-256 operations. - -**/ -UINTN -EFIAPI -RuntimeCryptSha256GetContextSize ( - VOID - ); - - -/** - Initializes user-supplied memory pointed by Sha256Context as SHA-256 hash context for - subsequent use. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 Context being initialized. - - @retval TRUE SHA-256 context initialization succeeded. - @retval FALSE SHA-256 context initialization failed. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptSha256Init ( - IN OUT VOID *Sha256Context - ); - - -/** - Performs SHA-256 digest on a data buffer of the specified length. This function can - be called multiple times to compute the digest of long or discontinuous data streams. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataLength Length of Data buffer in bytes. - - @retval TRUE SHA-256 data digest succeeded. - @retval FALSE Invalid SHA-256 context. After Sha256Final function has been called, the - SHA-256 context cannot be reused. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptSha256Update ( - IN OUT VOID *Sha256Context, - IN CONST VOID *Data, - IN UINTN DataLength - ); - - -/** - Completes SHA-256 hash computation and retrieves the digest value into the specified - memory. After this function has been called, the SHA-256 context cannot be used again. - - If Sha256Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 context - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptSha256Final ( - IN OUT VOID *Sha256Context, - OUT UINT8 *HashValue - ); - -/** - Allocates and Initializes one RSA Context for subsequent use. - - @return Pointer to the RSA Context that has been initialized. - If the allocations fails, RsaNew() returns NULL. - -**/ -VOID * -EFIAPI -RuntimeCryptRsaNew ( - VOID - ); - - -/** - Release the specified RSA Context. - - @param[in] RsaContext Pointer to the RSA context to be released. - -**/ -VOID -EFIAPI -RuntimeCryptRsaFree ( - IN VOID *RsaContext - ); - -/** - Sets the tag-designated RSA key component into the established RSA context from - the user-specified nonnegative integer (octet string format represented in RSA - PKCS#1). - - If RsaContext is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[in] BigNumber Pointer to octet integer buffer. - @param[in] BnLength Length of big number buffer in bytes. - - @return TRUE RSA key component was set successfully. - @return FALSE Invalid RSA key component tag. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptRsaSetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - IN CONST UINT8 *BigNumber, - IN UINTN BnLength - ); - - -/** - Verifies the RSA-SSA signature with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If Signature is NULL, then return FALSE. - If HashLength is not equal to the size of MD5, SHA-1 or SHA-256 digest, return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature verification. - @param[in] MessageHash Pointer to octet message hash to be checked. - @param[in] HashLength Length of the message hash in bytes. - @param[in] Signature Pointer to RSA PKCS1-v1_5 signature to be verified. - @param[in] SigLength Length of signature in bytes. - - @return TRUE Valid signature encoded in PKCS1-v1_5. - @return FALSE Invalid signature or invalid RSA context. - -**/ -BOOLEAN -EFIAPI -RuntimeCryptRsaPkcs1Verify ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashLength, - IN CONST UINT8 *Signature, - IN UINTN SigLength - ); - -#endif diff --git a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.inf b/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.inf deleted file mode 100644 index 23df499ad3..0000000000 --- a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.inf +++ /dev/null @@ -1,54 +0,0 @@ -## @file -# This driver installs runtime Crypt protocol to provide SHA256 and RSA service. -# -# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = CryptRuntimeDxe - MODULE_UNI_FILE = CryptRuntimeDxe.uni - FILE_GUID = 858031F3-96A2-406E-ABCC-ED264A3A31D6 - MODULE_TYPE = DXE_RUNTIME_DRIVER - VERSION_STRING = 1.0 - - ENTRY_POINT = CryptRuntimeDriverInitialize - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF -# - -[Sources] - CryptRuntime.h - CryptRuntime.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib - DebugLib - UefiRuntimeLib - BaseCryptLib - -[Protocols] - gEfiRuntimeCryptProtocolGuid ## PRODUCES - -[Depex] - TRUE - -[UserExtensions.TianoCore."ExtraFiles"] - CryptRuntimeDxeExtra.uni - \ No newline at end of file diff --git a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni b/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni deleted file mode 100644 index 337cdf47b8..0000000000 --- a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.uni +++ /dev/null @@ -1,22 +0,0 @@ -// /** @file -// This driver installs runtime Crypt protocol to provide SHA256 and RSA service. -// -// This driver installs runtime Crypt protocol to provide SHA256 and RSA service. -// -// Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Installs runtime Crypt protocol to provide SHA256 and RSA service" - -#string STR_MODULE_DESCRIPTION #language en-US "This driver installs runtime Crypt protocol to provide SHA256 and RSA service." - diff --git a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxeExtra.uni b/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxeExtra.uni deleted file mode 100644 index 7fe3a61753..0000000000 --- a/Core/CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxeExtra.uni +++ /dev/null @@ -1,20 +0,0 @@ -// /** @file -// CryptRuntimeDxe Localized Strings and Content -// -// Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - -#string STR_PROPERTIES_MODULE_NAME -#language en-US -"CryptRuntimeDxe module" - - diff --git a/Core/CryptoPkg/CryptoPkg.dec b/Core/CryptoPkg/CryptoPkg.dec deleted file mode 100644 index afeb723211..0000000000 --- a/Core/CryptoPkg/CryptoPkg.dec +++ /dev/null @@ -1,47 +0,0 @@ -## @file -# Package for cryptography modules. -# -# This Package provides cryptographic-related libraries for UEFI security modules. -# It also provides a test application to test libraries. -# -# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - DEC_SPECIFICATION = 0x00010005 - PACKAGE_NAME = CryptoPkg - PACKAGE_UNI_FILE = CryptoPkg.uni - PACKAGE_GUID = 36470E80-36F2-4ba0-8CC8-937C7D9FF888 - PACKAGE_VERSION = 0.97 - -[Includes] - Include - -[Includes.Common.Private] - Library/Include - Library/OpensslLib/openssl/include - Library/OpensslLib/openssl/crypto/include - -[LibraryClasses] - ## @libraryclass Provides basic library functions for cryptographic primitives. - ## - BaseCryptLib|Include/Library/BaseCryptLib.h - - ## @libraryclass Provides TLS library functions for EFI TLS protocol. - ## - TlsLib|Include/Library/TlsLib.h - -[Protocols] - ## Include/Protocol/RuntimeCrypt.h - gEfiRuntimeCryptProtocolGuid = { 0xe1475e0c, 0x1746, 0x4802, {0x86, 0x2e, 0x1, 0x1c, 0x2c, 0x2d, 0x9d, 0x86 }} - -[UserExtensions.TianoCore."ExtraFiles"] - CryptoPkgExtra.uni diff --git a/Core/CryptoPkg/CryptoPkg.dsc b/Core/CryptoPkg/CryptoPkg.dsc deleted file mode 100644 index 07ff42c5b7..0000000000 --- a/Core/CryptoPkg/CryptoPkg.dsc +++ /dev/null @@ -1,139 +0,0 @@ -## @file -# Cryptographic Library Package for UEFI Security Implementation. -# -# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -################################################################################ -# -# Defines Section - statements that will be processed to create a Makefile. -# -################################################################################ -[Defines] - PLATFORM_NAME = CryptoPkg - PLATFORM_GUID = E1063286-6C8C-4c25-AEF0-67A9A5B6E6B6 - PLATFORM_VERSION = 0.97 - DSC_SPECIFICATION = 0x00010005 - OUTPUT_DIRECTORY = Build/CryptoPkg - SUPPORTED_ARCHITECTURES = IA32|X64|IPF|ARM|AARCH64 - BUILD_TARGETS = DEBUG|RELEASE|NOOPT - SKUID_IDENTIFIER = DEFAULT - -################################################################################ -# -# Library Class section - list of all Library Classes needed by this Platform. -# -################################################################################ -[LibraryClasses] - BaseLib|MdePkg/Library/BaseLib/BaseLib.inf - BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf - MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf - PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf - UefiLib|MdePkg/Library/UefiLib/UefiLib.inf - DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf - UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf - UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf - UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf - UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf - UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf - - IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf - OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf - -[LibraryClasses.ARM, LibraryClasses.AARCH64] - # - # It is not possible to prevent the ARM compiler for generic intrinsic functions. - # This library provides the instrinsic functions generate by a given compiler. - # [LibraryClasses.ARM, LibraryClasses.AARCH64] and NULL mean link this library - # into all ARM and AARCH64 images. - # - NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf - - # Add support for stack protector - NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf - -[LibraryClasses.ARM] - ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf - -[LibraryClasses.common.PEIM] - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf - -[LibraryClasses.common.DXE_DRIVER] - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf - -[LibraryClasses.common.DXE_RUNTIME_DRIVER] - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf - -[LibraryClasses.common.DXE_SMM_DRIVER] - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf - -[LibraryClasses.common.DXE_SAL_DRIVER] - BaseCryptLib|CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.inf - -[LibraryClasses.common.UEFI_DRIVER] - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf - -[LibraryClasses.common.UEFI_APPLICATION] - BaseCryptLib|CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf - -################################################################################ -# -# Pcd Section - list of all EDK II PCD Entries defined by this Platform -# -################################################################################ -[PcdsFeatureFlag] - gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|TRUE - gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable|TRUE - -[PcdsFixedAtBuild] - gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f - gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000 - gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x06 - -################################################################################################### -# -# Components Section - list of the modules and components that will be processed by compilation -# tools and the EDK II tools to generate PE32/PE32+/Coff image files. -# -# Note: The EDK II DSC file is not used to specify how compiled binary images get placed -# into firmware volume images. This section is just a list of modules to compile from -# source into UEFI-compliant binaries. -# It is the FDF file that contains information on combining binary files into firmware -# volume images, whose concept is beyond UEFI and is described in PI specification. -# Binary modules do not need to be listed in this section, as they should be -# specified in the FDF file. For example: Shell binary (Shell_Full.efi), FAT binary (Fat.efi), -# Logo (Logo.bmp), and etc. -# There may also be modules listed in this section that are not required in the FDF file, -# When a module listed here is excluded from FDF file, then UEFI-compliant binary will be -# generated for it, but the binary will not be put into any firmware volume. -# -################################################################################################### -[Components] - CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf - CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf - CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf - CryptoPkg/Library/TlsLib/TlsLib.inf - - CryptoPkg/Application/Cryptest/Cryptest.inf - - CryptoPkg/CryptRuntimeDxe/CryptRuntimeDxe.inf - -[Components.IA32, Components.X64] - CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf - -[Components.IPF] - CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.inf - -[BuildOptions] - *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES diff --git a/Core/CryptoPkg/CryptoPkg.uni b/Core/CryptoPkg/CryptoPkg.uni deleted file mode 100644 index effb918cf4..0000000000 --- a/Core/CryptoPkg/CryptoPkg.uni +++ /dev/null @@ -1,25 +0,0 @@ -// /** @file -// Package for cryptography modules. -// -// This Package provides cryptographic-related libraries for UEFI security modules. -// It also provides a test application to test libraries. -// -// Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_PACKAGE_ABSTRACT #language en-US "Provides cryptographic-related libraries for UEFI security modules" - -#string STR_PACKAGE_DESCRIPTION #language en-US "This Package provides cryptographic-related libraries for UEFI security modules." - - - diff --git a/Core/CryptoPkg/CryptoPkgExtra.uni b/Core/CryptoPkg/CryptoPkgExtra.uni deleted file mode 100644 index 71c4a65aa4..0000000000 --- a/Core/CryptoPkg/CryptoPkgExtra.uni +++ /dev/null @@ -1,20 +0,0 @@ -// /** @file -// Crypto Package Localized Strings and Content. -// -// Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - -#string STR_PROPERTIES_PACKAGE_NAME -#language en-US -"Crypto package" - - diff --git a/Core/CryptoPkg/Include/Library/BaseCryptLib.h b/Core/CryptoPkg/Include/Library/BaseCryptLib.h deleted file mode 100644 index 9c5ffcd9cf..0000000000 --- a/Core/CryptoPkg/Include/Library/BaseCryptLib.h +++ /dev/null @@ -1,2804 +0,0 @@ -/** @file - Defines base cryptographic library APIs. - The Base Cryptographic Library provides implementations of basic cryptography - primitives (Hash Serials, HMAC, RSA, Diffie-Hellman, etc) for UEFI security - functionality enabling. - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __BASE_CRYPT_LIB_H__ -#define __BASE_CRYPT_LIB_H__ - -#include - -/// -/// MD4 digest size in bytes -/// -#define MD4_DIGEST_SIZE 16 - -/// -/// MD5 digest size in bytes -/// -#define MD5_DIGEST_SIZE 16 - -/// -/// SHA-1 digest size in bytes. -/// -#define SHA1_DIGEST_SIZE 20 - -/// -/// SHA-256 digest size in bytes -/// -#define SHA256_DIGEST_SIZE 32 - -/// -/// SHA-384 digest size in bytes -/// -#define SHA384_DIGEST_SIZE 48 - -/// -/// SHA-512 digest size in bytes -/// -#define SHA512_DIGEST_SIZE 64 - -/// -/// TDES block size in bytes -/// -#define TDES_BLOCK_SIZE 8 - -/// -/// AES block size in bytes -/// -#define AES_BLOCK_SIZE 16 - -/// -/// RSA Key Tags Definition used in RsaSetKey() function for key component identification. -/// -typedef enum { - RsaKeyN, ///< RSA public Modulus (N) - RsaKeyE, ///< RSA Public exponent (e) - RsaKeyD, ///< RSA Private exponent (d) - RsaKeyP, ///< RSA secret prime factor of Modulus (p) - RsaKeyQ, ///< RSA secret prime factor of Modules (q) - RsaKeyDp, ///< p's CRT exponent (== d mod (p - 1)) - RsaKeyDq, ///< q's CRT exponent (== d mod (q - 1)) - RsaKeyQInv ///< The CRT coefficient (== 1/q mod p) -} RSA_KEY_TAG; - -//===================================================================================== -// One-Way Cryptographic Hash Primitives -//===================================================================================== - -/** - Retrieves the size, in bytes, of the context buffer required for MD4 hash operations. - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for MD4 hash operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Md4GetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory pointed by Md4Context as MD4 hash context for - subsequent use. - - If Md4Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] Md4Context Pointer to MD4 context being initialized. - - @retval TRUE MD4 context initialization succeeded. - @retval FALSE MD4 context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Init ( - OUT VOID *Md4Context - ); - -/** - Makes a copy of an existing MD4 context. - - If Md4Context is NULL, then return FALSE. - If NewMd4Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Md4Context Pointer to MD4 context being copied. - @param[out] NewMd4Context Pointer to new MD4 context. - - @retval TRUE MD4 context copy succeeded. - @retval FALSE MD4 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Duplicate ( - IN CONST VOID *Md4Context, - OUT VOID *NewMd4Context - ); - -/** - Digests the input data and updates MD4 context. - - This function performs MD4 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - MD4 context should be already correctly initialized by Md4Init(), and should not be finalized - by Md4Final(). Behavior with invalid context is undefined. - - If Md4Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE MD4 data digest succeeded. - @retval FALSE MD4 data digest failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Update ( - IN OUT VOID *Md4Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the MD4 digest value. - - This function completes MD4 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the MD4 context cannot - be used again. - MD4 context should be already correctly initialized by Md4Init(), and should not be - finalized by Md4Final(). Behavior with invalid MD4 context is undefined. - - If Md4Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[out] HashValue Pointer to a buffer that receives the MD4 digest - value (16 bytes). - - @retval TRUE MD4 digest computation succeeded. - @retval FALSE MD4 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Final ( - IN OUT VOID *Md4Context, - OUT UINT8 *HashValue - ); - -/** - Computes the MD4 message digest of a input data buffer. - - This function performs the MD4 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the MD4 digest - value (16 bytes). - - @retval TRUE MD4 digest computation succeeded. - @retval FALSE MD4 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ); - -/** - Retrieves the size, in bytes, of the context buffer required for MD5 hash operations. - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for MD5 hash operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Md5GetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory pointed by Md5Context as MD5 hash context for - subsequent use. - - If Md5Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] Md5Context Pointer to MD5 context being initialized. - - @retval TRUE MD5 context initialization succeeded. - @retval FALSE MD5 context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Init ( - OUT VOID *Md5Context - ); - -/** - Makes a copy of an existing MD5 context. - - If Md5Context is NULL, then return FALSE. - If NewMd5Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Md5Context Pointer to MD5 context being copied. - @param[out] NewMd5Context Pointer to new MD5 context. - - @retval TRUE MD5 context copy succeeded. - @retval FALSE MD5 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Duplicate ( - IN CONST VOID *Md5Context, - OUT VOID *NewMd5Context - ); - -/** - Digests the input data and updates MD5 context. - - This function performs MD5 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - MD5 context should be already correctly initialized by Md5Init(), and should not be finalized - by Md5Final(). Behavior with invalid context is undefined. - - If Md5Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Md5Context Pointer to the MD5 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE MD5 data digest succeeded. - @retval FALSE MD5 data digest failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Update ( - IN OUT VOID *Md5Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the MD5 digest value. - - This function completes MD5 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the MD5 context cannot - be used again. - MD5 context should be already correctly initialized by Md5Init(), and should not be - finalized by Md5Final(). Behavior with invalid MD5 context is undefined. - - If Md5Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Md5Context Pointer to the MD5 context. - @param[out] HashValue Pointer to a buffer that receives the MD5 digest - value (16 bytes). - - @retval TRUE MD5 digest computation succeeded. - @retval FALSE MD5 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Final ( - IN OUT VOID *Md5Context, - OUT UINT8 *HashValue - ); - -/** - Computes the MD5 message digest of a input data buffer. - - This function performs the MD5 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the MD5 digest - value (16 bytes). - - @retval TRUE MD5 digest computation succeeded. - @retval FALSE MD5 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ); - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-1 hash operations. - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for SHA-1 hash operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Sha1GetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory pointed by Sha1Context as SHA-1 hash context for - subsequent use. - - If Sha1Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] Sha1Context Pointer to SHA-1 context being initialized. - - @retval TRUE SHA-1 context initialization succeeded. - @retval FALSE SHA-1 context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Init ( - OUT VOID *Sha1Context - ); - -/** - Makes a copy of an existing SHA-1 context. - - If Sha1Context is NULL, then return FALSE. - If NewSha1Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Sha1Context Pointer to SHA-1 context being copied. - @param[out] NewSha1Context Pointer to new SHA-1 context. - - @retval TRUE SHA-1 context copy succeeded. - @retval FALSE SHA-1 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Duplicate ( - IN CONST VOID *Sha1Context, - OUT VOID *NewSha1Context - ); - -/** - Digests the input data and updates SHA-1 context. - - This function performs SHA-1 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-1 context should be already correctly initialized by Sha1Init(), and should not be finalized - by Sha1Final(). Behavior with invalid context is undefined. - - If Sha1Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Sha1Context Pointer to the SHA-1 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-1 data digest succeeded. - @retval FALSE SHA-1 data digest failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Update ( - IN OUT VOID *Sha1Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the SHA-1 digest value. - - This function completes SHA-1 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-1 context cannot - be used again. - SHA-1 context should be already correctly initialized by Sha1Init(), and should not be - finalized by Sha1Final(). Behavior with invalid SHA-1 context is undefined. - - If Sha1Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Sha1Context Pointer to the SHA-1 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-1 digest - value (20 bytes). - - @retval TRUE SHA-1 digest computation succeeded. - @retval FALSE SHA-1 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Final ( - IN OUT VOID *Sha1Context, - OUT UINT8 *HashValue - ); - -/** - Computes the SHA-1 message digest of a input data buffer. - - This function performs the SHA-1 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-1 digest - value (20 bytes). - - @retval TRUE SHA-1 digest computation succeeded. - @retval FALSE SHA-1 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ); - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-256 hash operations. - - @return The size, in bytes, of the context buffer required for SHA-256 hash operations. - -**/ -UINTN -EFIAPI -Sha256GetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory pointed by Sha256Context as SHA-256 hash context for - subsequent use. - - If Sha256Context is NULL, then return FALSE. - - @param[out] Sha256Context Pointer to SHA-256 context being initialized. - - @retval TRUE SHA-256 context initialization succeeded. - @retval FALSE SHA-256 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha256Init ( - OUT VOID *Sha256Context - ); - -/** - Makes a copy of an existing SHA-256 context. - - If Sha256Context is NULL, then return FALSE. - If NewSha256Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Sha256Context Pointer to SHA-256 context being copied. - @param[out] NewSha256Context Pointer to new SHA-256 context. - - @retval TRUE SHA-256 context copy succeeded. - @retval FALSE SHA-256 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha256Duplicate ( - IN CONST VOID *Sha256Context, - OUT VOID *NewSha256Context - ); - -/** - Digests the input data and updates SHA-256 context. - - This function performs SHA-256 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-256 context should be already correctly initialized by Sha256Init(), and should not be finalized - by Sha256Final(). Behavior with invalid context is undefined. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-256 data digest succeeded. - @retval FALSE SHA-256 data digest failed. - -**/ -BOOLEAN -EFIAPI -Sha256Update ( - IN OUT VOID *Sha256Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the SHA-256 digest value. - - This function completes SHA-256 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-256 context cannot - be used again. - SHA-256 context should be already correctly initialized by Sha256Init(), and should not be - finalized by Sha256Final(). Behavior with invalid SHA-256 context is undefined. - - If Sha256Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha256Final ( - IN OUT VOID *Sha256Context, - OUT UINT8 *HashValue - ); - -/** - Computes the SHA-256 message digest of a input data buffer. - - This function performs the SHA-256 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha256HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ); - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-384 hash operations. - - @return The size, in bytes, of the context buffer required for SHA-384 hash operations. - -**/ -UINTN -EFIAPI -Sha384GetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory pointed by Sha384Context as SHA-384 hash context for - subsequent use. - - If Sha384Context is NULL, then return FALSE. - - @param[out] Sha384Context Pointer to SHA-384 context being initialized. - - @retval TRUE SHA-384 context initialization succeeded. - @retval FALSE SHA-384 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha384Init ( - OUT VOID *Sha384Context - ); - -/** - Makes a copy of an existing SHA-384 context. - - If Sha384Context is NULL, then return FALSE. - If NewSha384Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Sha384Context Pointer to SHA-384 context being copied. - @param[out] NewSha384Context Pointer to new SHA-384 context. - - @retval TRUE SHA-384 context copy succeeded. - @retval FALSE SHA-384 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384Duplicate ( - IN CONST VOID *Sha384Context, - OUT VOID *NewSha384Context - ); - -/** - Digests the input data and updates SHA-384 context. - - This function performs SHA-384 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-384 context should be already correctly initialized by Sha384Init(), and should not be finalized - by Sha384Final(). Behavior with invalid context is undefined. - - If Sha384Context is NULL, then return FALSE. - - @param[in, out] Sha384Context Pointer to the SHA-384 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-384 data digest succeeded. - @retval FALSE SHA-384 data digest failed. - -**/ -BOOLEAN -EFIAPI -Sha384Update ( - IN OUT VOID *Sha384Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the SHA-384 digest value. - - This function completes SHA-384 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-384 context cannot - be used again. - SHA-384 context should be already correctly initialized by Sha384Init(), and should not be - finalized by Sha384Final(). Behavior with invalid SHA-384 context is undefined. - - If Sha384Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha384Context Pointer to the SHA-384 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-384 digest - value (48 bytes). - - @retval TRUE SHA-384 digest computation succeeded. - @retval FALSE SHA-384 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha384Final ( - IN OUT VOID *Sha384Context, - OUT UINT8 *HashValue - ); - -/** - Computes the SHA-384 message digest of a input data buffer. - - This function performs the SHA-384 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-384 digest - value (48 bytes). - - @retval TRUE SHA-384 digest computation succeeded. - @retval FALSE SHA-384 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ); - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-512 hash operations. - - @return The size, in bytes, of the context buffer required for SHA-512 hash operations. - -**/ -UINTN -EFIAPI -Sha512GetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory pointed by Sha512Context as SHA-512 hash context for - subsequent use. - - If Sha512Context is NULL, then return FALSE. - - @param[out] Sha512Context Pointer to SHA-512 context being initialized. - - @retval TRUE SHA-512 context initialization succeeded. - @retval FALSE SHA-512 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha512Init ( - OUT VOID *Sha512Context - ); - -/** - Makes a copy of an existing SHA-512 context. - - If Sha512Context is NULL, then return FALSE. - If NewSha512Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Sha512Context Pointer to SHA-512 context being copied. - @param[out] NewSha512Context Pointer to new SHA-512 context. - - @retval TRUE SHA-512 context copy succeeded. - @retval FALSE SHA-512 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512Duplicate ( - IN CONST VOID *Sha512Context, - OUT VOID *NewSha512Context - ); - -/** - Digests the input data and updates SHA-512 context. - - This function performs SHA-512 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-512 context should be already correctly initialized by Sha512Init(), and should not be finalized - by Sha512Final(). Behavior with invalid context is undefined. - - If Sha512Context is NULL, then return FALSE. - - @param[in, out] Sha512Context Pointer to the SHA-512 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-512 data digest succeeded. - @retval FALSE SHA-512 data digest failed. - -**/ -BOOLEAN -EFIAPI -Sha512Update ( - IN OUT VOID *Sha512Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the SHA-512 digest value. - - This function completes SHA-512 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-512 context cannot - be used again. - SHA-512 context should be already correctly initialized by Sha512Init(), and should not be - finalized by Sha512Final(). Behavior with invalid SHA-512 context is undefined. - - If Sha512Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha512Context Pointer to the SHA-512 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-512 digest - value (64 bytes). - - @retval TRUE SHA-512 digest computation succeeded. - @retval FALSE SHA-512 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha512Final ( - IN OUT VOID *Sha512Context, - OUT UINT8 *HashValue - ); - -/** - Computes the SHA-512 message digest of a input data buffer. - - This function performs the SHA-512 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-512 digest - value (64 bytes). - - @retval TRUE SHA-512 digest computation succeeded. - @retval FALSE SHA-512 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ); - -//===================================================================================== -// MAC (Message Authentication Code) Primitive -//===================================================================================== - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-MD5 operations. - (NOTE: This API is deprecated. - Use HmacMd5New() / HmacMd5Free() for HMAC-MD5 Context operations.) - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for HMAC-MD5 operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacMd5GetContextSize ( - VOID - ); - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-MD5 use. - - If this interface is not supported, then return NULL. - - @return Pointer to the HMAC_CTX context that has been initialized. - If the allocations fails, HmacMd5New() returns NULL. - @retval NULL This interface is not supported. - -**/ -VOID * -EFIAPI -HmacMd5New ( - VOID - ); - -/** - Release the specified HMAC_CTX context. - - If this interface is not supported, then do nothing. - - @param[in] HmacMd5Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacMd5Free ( - IN VOID *HmacMd5Ctx - ); - -/** - Initializes user-supplied memory pointed by HmacMd5Context as HMAC-MD5 context for - subsequent use. - - If HmacMd5Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] HmacMd5Context Pointer to HMAC-MD5 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval TRUE HMAC-MD5 context initialization succeeded. - @retval FALSE HMAC-MD5 context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Init ( - OUT VOID *HmacMd5Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ); - -/** - Makes a copy of an existing HMAC-MD5 context. - - If HmacMd5Context is NULL, then return FALSE. - If NewHmacMd5Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] HmacMd5Context Pointer to HMAC-MD5 context being copied. - @param[out] NewHmacMd5Context Pointer to new HMAC-MD5 context. - - @retval TRUE HMAC-MD5 context copy succeeded. - @retval FALSE HMAC-MD5 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Duplicate ( - IN CONST VOID *HmacMd5Context, - OUT VOID *NewHmacMd5Context - ); - -/** - Digests the input data and updates HMAC-MD5 context. - - This function performs HMAC-MD5 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - HMAC-MD5 context should be already correctly initialized by HmacMd5Init(), and should not be - finalized by HmacMd5Final(). Behavior with invalid context is undefined. - - If HmacMd5Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE HMAC-MD5 data digest succeeded. - @retval FALSE HMAC-MD5 data digest failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Update ( - IN OUT VOID *HmacMd5Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the HMAC-MD5 digest value. - - This function completes HMAC-MD5 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the HMAC-MD5 context cannot - be used again. - HMAC-MD5 context should be already correctly initialized by HmacMd5Init(), and should not be - finalized by HmacMd5Final(). Behavior with invalid HMAC-MD5 context is undefined. - - If HmacMd5Context is NULL, then return FALSE. - If HmacValue is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-MD5 digest - value (16 bytes). - - @retval TRUE HMAC-MD5 digest computation succeeded. - @retval FALSE HMAC-MD5 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Final ( - IN OUT VOID *HmacMd5Context, - OUT UINT8 *HmacValue - ); - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-SHA1 operations. - (NOTE: This API is deprecated. - Use HmacSha1New() / HmacSha1Free() for HMAC-SHA1 Context operations.) - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for HMAC-SHA1 operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacSha1GetContextSize ( - VOID - ); - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA1 use. - - If this interface is not supported, then return NULL. - - @return Pointer to the HMAC_CTX context that has been initialized. - If the allocations fails, HmacSha1New() returns NULL. - @return NULL This interface is not supported. - -**/ -VOID * -EFIAPI -HmacSha1New ( - VOID - ); - -/** - Release the specified HMAC_CTX context. - - If this interface is not supported, then do nothing. - - @param[in] HmacSha1Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacSha1Free ( - IN VOID *HmacSha1Ctx - ); - -/** - Initializes user-supplied memory pointed by HmacSha1Context as HMAC-SHA1 context for - subsequent use. - - If HmacSha1Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] HmacSha1Context Pointer to HMAC-SHA1 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval TRUE HMAC-SHA1 context initialization succeeded. - @retval FALSE HMAC-SHA1 context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Init ( - OUT VOID *HmacSha1Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ); - -/** - Makes a copy of an existing HMAC-SHA1 context. - - If HmacSha1Context is NULL, then return FALSE. - If NewHmacSha1Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] HmacSha1Context Pointer to HMAC-SHA1 context being copied. - @param[out] NewHmacSha1Context Pointer to new HMAC-SHA1 context. - - @retval TRUE HMAC-SHA1 context copy succeeded. - @retval FALSE HMAC-SHA1 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Duplicate ( - IN CONST VOID *HmacSha1Context, - OUT VOID *NewHmacSha1Context - ); - -/** - Digests the input data and updates HMAC-SHA1 context. - - This function performs HMAC-SHA1 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - HMAC-SHA1 context should be already correctly initialized by HmacSha1Init(), and should not - be finalized by HmacSha1Final(). Behavior with invalid context is undefined. - - If HmacSha1Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE HMAC-SHA1 data digest succeeded. - @retval FALSE HMAC-SHA1 data digest failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Update ( - IN OUT VOID *HmacSha1Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the HMAC-SHA1 digest value. - - This function completes HMAC-SHA1 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the HMAC-SHA1 context cannot - be used again. - HMAC-SHA1 context should be already correctly initialized by HmacSha1Init(), and should - not be finalized by HmacSha1Final(). Behavior with invalid HMAC-SHA1 context is undefined. - - If HmacSha1Context is NULL, then return FALSE. - If HmacValue is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-SHA1 digest - value (20 bytes). - - @retval TRUE HMAC-SHA1 digest computation succeeded. - @retval FALSE HMAC-SHA1 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Final ( - IN OUT VOID *HmacSha1Context, - OUT UINT8 *HmacValue - ); - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-SHA256 operations. - (NOTE: This API is deprecated. - Use HmacSha256New() / HmacSha256Free() for HMAC-SHA256 Context operations.) - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for HMAC-SHA256 operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacSha256GetContextSize ( - VOID - ); - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA256 use. - - @return Pointer to the HMAC_CTX context that has been initialized. - If the allocations fails, HmacSha256New() returns NULL. - -**/ -VOID * -EFIAPI -HmacSha256New ( - VOID - ); - -/** - Release the specified HMAC_CTX context. - - @param[in] HmacSha256Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacSha256Free ( - IN VOID *HmacSha256Ctx - ); - -/** - Initializes user-supplied memory pointed by HmacSha256Context as HMAC-SHA256 context for - subsequent use. - - If HmacSha256Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] HmacSha256Context Pointer to HMAC-SHA256 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval TRUE HMAC-SHA256 context initialization succeeded. - @retval FALSE HMAC-SHA256 context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Init ( - OUT VOID *HmacSha256Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ); - -/** - Makes a copy of an existing HMAC-SHA256 context. - - If HmacSha256Context is NULL, then return FALSE. - If NewHmacSha256Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] HmacSha256Context Pointer to HMAC-SHA256 context being copied. - @param[out] NewHmacSha256Context Pointer to new HMAC-SHA256 context. - - @retval TRUE HMAC-SHA256 context copy succeeded. - @retval FALSE HMAC-SHA256 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Duplicate ( - IN CONST VOID *HmacSha256Context, - OUT VOID *NewHmacSha256Context - ); - -/** - Digests the input data and updates HMAC-SHA256 context. - - This function performs HMAC-SHA256 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - HMAC-SHA256 context should be already correctly initialized by HmacSha256Init(), and should not - be finalized by HmacSha256Final(). Behavior with invalid context is undefined. - - If HmacSha256Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] HmacSha256Context Pointer to the HMAC-SHA256 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE HMAC-SHA256 data digest succeeded. - @retval FALSE HMAC-SHA256 data digest failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Update ( - IN OUT VOID *HmacSha256Context, - IN CONST VOID *Data, - IN UINTN DataSize - ); - -/** - Completes computation of the HMAC-SHA256 digest value. - - This function completes HMAC-SHA256 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the HMAC-SHA256 context cannot - be used again. - HMAC-SHA256 context should be already correctly initialized by HmacSha256Init(), and should - not be finalized by HmacSha256Final(). Behavior with invalid HMAC-SHA256 context is undefined. - - If HmacSha256Context is NULL, then return FALSE. - If HmacValue is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] HmacSha256Context Pointer to the HMAC-SHA256 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-SHA256 digest - value (32 bytes). - - @retval TRUE HMAC-SHA256 digest computation succeeded. - @retval FALSE HMAC-SHA256 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Final ( - IN OUT VOID *HmacSha256Context, - OUT UINT8 *HmacValue - ); - -//===================================================================================== -// Symmetric Cryptography Primitive -//===================================================================================== - -/** - Retrieves the size, in bytes, of the context buffer required for TDES operations. - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for TDES operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -TdesGetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory as TDES context for subsequent use. - - This function initializes user-supplied memory pointed by TdesContext as TDES context. - In addition, it sets up all TDES key materials for subsequent encryption and decryption - operations. - There are 3 key options as follows: - KeyLength = 64, Keying option 1: K1 == K2 == K3 (Backward compatibility with DES) - KeyLength = 128, Keying option 2: K1 != K2 and K3 = K1 (Less Security) - KeyLength = 192 Keying option 3: K1 != K2 != K3 (Strongest) - - If TdesContext is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeyLength is not valid, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] TdesContext Pointer to TDES context being initialized. - @param[in] Key Pointer to the user-supplied TDES key. - @param[in] KeyLength Length of TDES key in bits. - - @retval TRUE TDES context initialization succeeded. - @retval FALSE TDES context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesInit ( - OUT VOID *TdesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ); - -/** - Performs TDES encryption on a data buffer of the specified size in ECB mode. - - This function performs TDES encryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval TRUE TDES encryption succeeded. - @retval FALSE TDES encryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesEcbEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ); - -/** - Performs TDES decryption on a data buffer of the specified size in ECB mode. - - This function performs TDES decryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES decryption output. - - @retval TRUE TDES decryption succeeded. - @retval FALSE TDES decryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesEcbDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ); - -/** - Performs TDES encryption on a data buffer of the specified size in CBC mode. - - This function performs TDES encryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (8 bytes). - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval TRUE TDES encryption succeeded. - @retval FALSE TDES encryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesCbcEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ); - -/** - Performs TDES decryption on a data buffer of the specified size in CBC mode. - - This function performs TDES decryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (8 bytes). - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval TRUE TDES decryption succeeded. - @retval FALSE TDES decryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesCbcDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ); - -/** - Retrieves the size, in bytes, of the context buffer required for AES operations. - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for AES operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -AesGetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory as AES context for subsequent use. - - This function initializes user-supplied memory pointed by AesContext as AES context. - In addition, it sets up all AES key materials for subsequent encryption and decryption - operations. - There are 3 options for key length, 128 bits, 192 bits, and 256 bits. - - If AesContext is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeyLength is not valid, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] AesContext Pointer to AES context being initialized. - @param[in] Key Pointer to the user-supplied AES key. - @param[in] KeyLength Length of AES key in bits. - - @retval TRUE AES context initialization succeeded. - @retval FALSE AES context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesInit ( - OUT VOID *AesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ); - -/** - Performs AES encryption on a data buffer of the specified size in ECB mode. - - This function performs AES encryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval TRUE AES encryption succeeded. - @retval FALSE AES encryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesEcbEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ); - -/** - Performs AES decryption on a data buffer of the specified size in ECB mode. - - This function performs AES decryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES decryption output. - - @retval TRUE AES decryption succeeded. - @retval FALSE AES decryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesEcbDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ); - -/** - Performs AES encryption on a data buffer of the specified size in CBC mode. - - This function performs AES encryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (16 bytes). - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval TRUE AES encryption succeeded. - @retval FALSE AES encryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesCbcEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ); - -/** - Performs AES decryption on a data buffer of the specified size in CBC mode. - - This function performs AES decryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (16 bytes). - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval TRUE AES decryption succeeded. - @retval FALSE AES decryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesCbcDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ); - -/** - Retrieves the size, in bytes, of the context buffer required for ARC4 operations. - - If this interface is not supported, then return zero. - - @return The size, in bytes, of the context buffer required for ARC4 operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Arc4GetContextSize ( - VOID - ); - -/** - Initializes user-supplied memory as ARC4 context for subsequent use. - - This function initializes user-supplied memory pointed by Arc4Context as ARC4 context. - In addition, it sets up all ARC4 key materials for subsequent encryption and decryption - operations. - - If Arc4Context is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeySize does not in the range of [5, 256] bytes, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] Arc4Context Pointer to ARC4 context being initialized. - @param[in] Key Pointer to the user-supplied ARC4 key. - @param[in] KeySize Size of ARC4 key in bytes. - - @retval TRUE ARC4 context initialization succeeded. - @retval FALSE ARC4 context initialization failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Init ( - OUT VOID *Arc4Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ); - -/** - Performs ARC4 encryption on a data buffer of the specified size. - - This function performs ARC4 encryption on data buffer pointed by Input, of specified - size of InputSize. - Arc4Context should be already correctly initialized by Arc4Init(). Behavior with - invalid ARC4 context is undefined. - - If Arc4Context is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 encryption output. - - @retval TRUE ARC4 encryption succeeded. - @retval FALSE ARC4 encryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Encrypt ( - IN OUT VOID *Arc4Context, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ); - -/** - Performs ARC4 decryption on a data buffer of the specified size. - - This function performs ARC4 decryption on data buffer pointed by Input, of specified - size of InputSize. - Arc4Context should be already correctly initialized by Arc4Init(). Behavior with - invalid ARC4 context is undefined. - - If Arc4Context is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 decryption output. - - @retval TRUE ARC4 decryption succeeded. - @retval FALSE ARC4 decryption failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Decrypt ( - IN OUT VOID *Arc4Context, - IN UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ); - -/** - Resets the ARC4 context to the initial state. - - The function resets the ARC4 context to the state it had immediately after the - ARC4Init() function call. - Contrary to ARC4Init(), Arc4Reset() requires no secret key as input, but ARC4 context - should be already correctly initialized by ARC4Init(). - - If Arc4Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - - @retval TRUE ARC4 reset succeeded. - @retval FALSE ARC4 reset failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Reset ( - IN OUT VOID *Arc4Context - ); - -//===================================================================================== -// Asymmetric Cryptography Primitive -//===================================================================================== - -/** - Allocates and initializes one RSA context for subsequent use. - - @return Pointer to the RSA context that has been initialized. - If the allocations fails, RsaNew() returns NULL. - -**/ -VOID * -EFIAPI -RsaNew ( - VOID - ); - -/** - Release the specified RSA context. - - If RsaContext is NULL, then return FALSE. - - @param[in] RsaContext Pointer to the RSA context to be released. - -**/ -VOID -EFIAPI -RsaFree ( - IN VOID *RsaContext - ); - -/** - Sets the tag-designated key component into the established RSA context. - - This function sets the tag-designated RSA key component into the established - RSA context from the user-specified non-negative integer (octet string format - represented in RSA PKCS#1). - If BigNumber is NULL, then the specified key component in RSA context is cleared. - - If RsaContext is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[in] BigNumber Pointer to octet integer buffer. - If NULL, then the specified key component in RSA - context is cleared. - @param[in] BnSize Size of big number buffer in bytes. - If BigNumber is NULL, then it is ignored. - - @retval TRUE RSA key component was set successfully. - @retval FALSE Invalid RSA key component tag. - -**/ -BOOLEAN -EFIAPI -RsaSetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - IN CONST UINT8 *BigNumber, - IN UINTN BnSize - ); - -/** - Gets the tag-designated RSA key component from the established RSA context. - - This function retrieves the tag-designated RSA key component from the - established RSA context as a non-negative integer (octet string format - represented in RSA PKCS#1). - If specified key component has not been set or has been cleared, then returned - BnSize is set to 0. - If the BigNumber buffer is too small to hold the contents of the key, FALSE - is returned and BnSize is set to the required buffer size to obtain the key. - - If RsaContext is NULL, then return FALSE. - If BnSize is NULL, then return FALSE. - If BnSize is large enough but BigNumber is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[out] BigNumber Pointer to octet integer buffer. - @param[in, out] BnSize On input, the size of big number buffer in bytes. - On output, the size of data returned in big number buffer in bytes. - - @retval TRUE RSA key component was retrieved successfully. - @retval FALSE Invalid RSA key component tag. - @retval FALSE BnSize is too small. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - OUT UINT8 *BigNumber, - IN OUT UINTN *BnSize - ); - -/** - Generates RSA key components. - - This function generates RSA key components. It takes RSA public exponent E and - length in bits of RSA modulus N as input, and generates all key components. - If PublicExponent is NULL, the default RSA public exponent (0x10001) will be used. - - Before this function can be invoked, pseudorandom number generator must be correctly - initialized by RandomSeed(). - - If RsaContext is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] ModulusLength Length of RSA modulus N in bits. - @param[in] PublicExponent Pointer to RSA public exponent. - @param[in] PublicExponentSize Size of RSA public exponent buffer in bytes. - - @retval TRUE RSA key component was generated successfully. - @retval FALSE Invalid RSA key component tag. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGenerateKey ( - IN OUT VOID *RsaContext, - IN UINTN ModulusLength, - IN CONST UINT8 *PublicExponent, - IN UINTN PublicExponentSize - ); - -/** - Validates key components of RSA context. - NOTE: This function performs integrity checks on all the RSA key material, so - the RSA key structure must contain all the private key data. - - This function validates key components of RSA context in following aspects: - - Whether p is a prime - - Whether q is a prime - - Whether n = p * q - - Whether d*e = 1 mod lcm(p-1,q-1) - - If RsaContext is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] RsaContext Pointer to RSA context to check. - - @retval TRUE RSA key components are valid. - @retval FALSE RSA key components are not valid. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaCheckKey ( - IN VOID *RsaContext - ); - -/** - Carries out the RSA-SSA signature generation with EMSA-PKCS1-v1_5 encoding scheme. - - This function carries out the RSA-SSA signature generation with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - If the Signature buffer is too small to hold the contents of signature, FALSE - is returned and SigSize is set to the required buffer size to obtain the signature. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If HashSize is not equal to the size of MD5, SHA-1 or SHA-256 digest, then return FALSE. - If SigSize is large enough but Signature is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature generation. - @param[in] MessageHash Pointer to octet message hash to be signed. - @param[in] HashSize Size of the message hash in bytes. - @param[out] Signature Pointer to buffer to receive RSA PKCS1-v1_5 signature. - @param[in, out] SigSize On input, the size of Signature buffer in bytes. - On output, the size of data returned in Signature buffer in bytes. - - @retval TRUE Signature successfully generated in PKCS1-v1_5. - @retval FALSE Signature generation failed. - @retval FALSE SigSize is too small. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaPkcs1Sign ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashSize, - OUT UINT8 *Signature, - IN OUT UINTN *SigSize - ); - -/** - Verifies the RSA-SSA signature with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If Signature is NULL, then return FALSE. - If HashSize is not equal to the size of MD5, SHA-1, SHA-256 digest, then return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature verification. - @param[in] MessageHash Pointer to octet message hash to be checked. - @param[in] HashSize Size of the message hash in bytes. - @param[in] Signature Pointer to RSA PKCS1-v1_5 signature to be verified. - @param[in] SigSize Size of signature in bytes. - - @retval TRUE Valid signature encoded in PKCS1-v1_5. - @retval FALSE Invalid signature or invalid RSA context. - -**/ -BOOLEAN -EFIAPI -RsaPkcs1Verify ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashSize, - IN CONST UINT8 *Signature, - IN UINTN SigSize - ); - -/** - Retrieve the RSA Private Key from the password-protected PEM key data. - - If PemData is NULL, then return FALSE. - If RsaContext is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] PemData Pointer to the PEM-encoded key data to be retrieved. - @param[in] PemSize Size of the PEM key data in bytes. - @param[in] Password NULL-terminated passphrase used for encrypted PEM key data. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA private key component. Use RsaFree() function to free the - resource. - - @retval TRUE RSA Private Key was retrieved successfully. - @retval FALSE Invalid PEM key data or incorrect password. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetPrivateKeyFromPem ( - IN CONST UINT8 *PemData, - IN UINTN PemSize, - IN CONST CHAR8 *Password, - OUT VOID **RsaContext - ); - -/** - Retrieve the RSA Public Key from one DER-encoded X509 certificate. - - If Cert is NULL, then return FALSE. - If RsaContext is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA public key component. Use RsaFree() function to free the - resource. - - @retval TRUE RSA Public Key was retrieved successfully. - @retval FALSE Fail to retrieve RSA public key from X509 certificate. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetPublicKeyFromX509 ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT VOID **RsaContext - ); - -/** - Retrieve the subject bytes from one X.509 certificate. - - If Cert is NULL, then return FALSE. - If SubjectSize is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] CertSubject Pointer to the retrieved certificate subject bytes. - @param[in, out] SubjectSize The size in bytes of the CertSubject buffer on input, - and the size of buffer returned CertSubject on output. - - @retval TRUE The certificate subject retrieved successfully. - @retval FALSE Invalid certificate, or the SubjectSize is too small for the result. - The SubjectSize will be updated with the required size. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509GetSubjectName ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 *CertSubject, - IN OUT UINTN *SubjectSize - ); - -/** - Verify one X509 certificate was issued by the trusted CA. - - If Cert is NULL, then return FALSE. - If CACert is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Cert Pointer to the DER-encoded X509 certificate to be verified. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[in] CACert Pointer to the DER-encoded trusted CA certificate. - @param[in] CACertSize Size of the CA Certificate in bytes. - - @retval TRUE The certificate was issued by the trusted CA. - @retval FALSE Invalid certificate or the certificate was not issued by the given - trusted CA. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509VerifyCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - IN CONST UINT8 *CACert, - IN UINTN CACertSize - ); - -/** - Construct a X509 object from DER-encoded certificate data. - - If Cert is NULL, then return FALSE. - If SingleX509Cert is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Cert Pointer to the DER-encoded certificate data. - @param[in] CertSize The size of certificate data in bytes. - @param[out] SingleX509Cert The generated X509 object. - - @retval TRUE The X509 object generation succeeded. - @retval FALSE The operation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificate ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **SingleX509Cert - ); - -/** - Construct a X509 stack object from a list of DER-encoded certificate data. - - If X509Stack is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] X509Stack On input, pointer to an existing or NULL X509 stack object. - On output, pointer to the X509 stack object with new - inserted X509 certificate. - @param ... A list of DER-encoded single certificate data followed - by certificate size. A NULL terminates the list. The - pairs are the arguments to X509ConstructCertificate(). - - @retval TRUE The X509 stack construction succeeded. - @retval FALSE The construction operation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificateStack ( - IN OUT UINT8 **X509Stack, - ... - ); - -/** - Release the specified X509 object. - - If the interface is not supported, then ASSERT(). - - @param[in] X509Cert Pointer to the X509 object to be released. - -**/ -VOID -EFIAPI -X509Free ( - IN VOID *X509Cert - ); - -/** - Release the specified X509 stack object. - - If the interface is not supported, then ASSERT(). - - @param[in] X509Stack Pointer to the X509 stack object to be released. - -**/ -VOID -EFIAPI -X509StackFree ( - IN VOID *X509Stack - ); - -/** - Retrieve the TBSCertificate from one given X.509 certificate. - - @param[in] Cert Pointer to the given DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] TBSCert DER-Encoded To-Be-Signed certificate. - @param[out] TBSCertSize Size of the TBS certificate in bytes. - - If Cert is NULL, then return FALSE. - If TBSCert is NULL, then return FALSE. - If TBSCertSize is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @retval TRUE The TBSCertificate was retrieved successfully. - @retval FALSE Invalid X.509 certificate. - -**/ -BOOLEAN -EFIAPI -X509GetTBSCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **TBSCert, - OUT UINTN *TBSCertSize - ); - -/** - Derives a key from a password using a salt and iteration count, based on PKCS#5 v2.0 - password based encryption key derivation function PBKDF2, as specified in RFC 2898. - - If Password or Salt or OutKey is NULL, then return FALSE. - If the hash algorithm could not be determined, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] PasswordLength Length of input password in bytes. - @param[in] Password Pointer to the array for the password. - @param[in] SaltLength Size of the Salt in bytes. - @param[in] Salt Pointer to the Salt. - @param[in] IterationCount Number of iterations to perform. Its value should be - greater than or equal to 1. - @param[in] DigestSize Size of the message digest to be used (eg. SHA256_DIGEST_SIZE). - NOTE: DigestSize will be used to determine the hash algorithm. - Only SHA1_DIGEST_SIZE or SHA256_DIGEST_SIZE is supported. - @param[in] KeyLength Size of the derived key buffer in bytes. - @param[out] OutKey Pointer to the output derived key buffer. - - @retval TRUE A key was derived successfully. - @retval FALSE One of the pointers was NULL or one of the sizes was too large. - @retval FALSE The hash algorithm could not be determined from the digest size. - @retval FALSE The key derivation operation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs5HashPassword ( - IN UINTN PasswordLength, - IN CONST CHAR8 *Password, - IN UINTN SaltLength, - IN CONST UINT8 *Salt, - IN UINTN IterationCount, - IN UINTN DigestSize, - IN UINTN KeyLength, - OUT UINT8 *OutKey - ); - -/** - Get the signer's certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - If P7Data, CertStack, StackLength, TrustedCert or CertLength is NULL, then - return FALSE. If P7Length overflow, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] CertStack Pointer to Signer's certificates retrieved from P7Data. - It's caller's responsibility to free the buffer. - @param[out] StackLength Length of signer's certificates in bytes. - @param[out] TrustedCert Pointer to a trusted certificate from Signer's certificates. - It's caller's responsibility to free the buffer. - @param[out] CertLength Length of the trusted certificate in bytes. - - @retval TRUE The operation is finished successfully. - @retval FALSE Error occurs during the operation. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetSigners ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **CertStack, - OUT UINTN *StackLength, - OUT UINT8 **TrustedCert, - OUT UINTN *CertLength - ); - -/** - Wrap function to use free() to free allocated memory for certificates. - - If this interface is not supported, then ASSERT(). - - @param[in] Certs Pointer to the certificates to be freed. - -**/ -VOID -EFIAPI -Pkcs7FreeSigners ( - IN UINT8 *Certs - ); - -/** - Retrieves all embedded certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard", and outputs two certificate lists chained and - unchained to the signer's certificates. - The input signed data could be wrapped in a ContentInfo structure. - - @param[in] P7Data Pointer to the PKCS#7 message. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] SignerChainCerts Pointer to the certificates list chained to signer's - certificate. It's caller's responsibility to free the buffer. - @param[out] ChainLength Length of the chained certificates list buffer in bytes. - @param[out] UnchainCerts Pointer to the unchained certificates lists. It's caller's - responsibility to free the buffer. - @param[out] UnchainLength Length of the unchained certificates list buffer in bytes. - - @retval TRUE The operation is finished successfully. - @retval FALSE Error occurs during the operation. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetCertificatesList ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **SignerChainCerts, - OUT UINTN *ChainLength, - OUT UINT8 **UnchainCerts, - OUT UINTN *UnchainLength - ); - -/** - Creates a PKCS#7 signedData as described in "PKCS #7: Cryptographic Message - Syntax Standard, version 1.5". This interface is only intended to be used for - application to perform PKCS#7 functionality validation. - - If this interface is not supported, then return FALSE. - - @param[in] PrivateKey Pointer to the PEM-formatted private key data for - data signing. - @param[in] PrivateKeySize Size of the PEM private key data in bytes. - @param[in] KeyPassword NULL-terminated passphrase used for encrypted PEM - key data. - @param[in] InData Pointer to the content to be signed. - @param[in] InDataSize Size of InData in bytes. - @param[in] SignCert Pointer to signer's DER-encoded certificate to sign with. - @param[in] OtherCerts Pointer to an optional additional set of certificates to - include in the PKCS#7 signedData (e.g. any intermediate - CAs in the chain). - @param[out] SignedData Pointer to output PKCS#7 signedData. - @param[out] SignedDataSize Size of SignedData in bytes. - - @retval TRUE PKCS#7 data signing succeeded. - @retval FALSE PKCS#7 data signing failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7Sign ( - IN CONST UINT8 *PrivateKey, - IN UINTN PrivateKeySize, - IN CONST UINT8 *KeyPassword, - IN UINT8 *InData, - IN UINTN InDataSize, - IN UINT8 *SignCert, - IN UINT8 *OtherCerts OPTIONAL, - OUT UINT8 **SignedData, - OUT UINTN *SignedDataSize - ); - -/** - Verifies the validity of a PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - If P7Data, TrustedCert or InData is NULL, then return FALSE. - If P7Length, CertLength or DataLength overflow, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertLength Length of the trusted certificate in bytes. - @param[in] InData Pointer to the content to be verified. - @param[in] DataLength Length of InData in bytes. - - @retval TRUE The specified PKCS#7 signed data is valid. - @retval FALSE Invalid PKCS#7 signed data. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7Verify ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - IN CONST UINT8 *TrustedCert, - IN UINTN CertLength, - IN CONST UINT8 *InData, - IN UINTN DataLength - ); - -/** - Extracts the attached content from a PKCS#7 signed data if existed. The input signed - data could be wrapped in a ContentInfo structure. - - If P7Data, Content, or ContentSize is NULL, then return FALSE. If P7Length overflow, - then return FALSE. If the P7Data is not correctly formatted, then return FALSE. - - Caution: This function may receive untrusted input. So this function will do - basic check for PKCS#7 data structure. - - @param[in] P7Data Pointer to the PKCS#7 signed data to process. - @param[in] P7Length Length of the PKCS#7 signed data in bytes. - @param[out] Content Pointer to the extracted content from the PKCS#7 signedData. - It's caller's responsibility to free the buffer. - @param[out] ContentSize The size of the extracted content in bytes. - - @retval TRUE The P7Data was correctly formatted for processing. - @retval FALSE The P7Data was not correctly formatted for processing. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetAttachedContent ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT VOID **Content, - OUT UINTN *ContentSize - ); - -/** - Verifies the validity of a PE/COFF Authenticode Signature as described in "Windows - Authenticode Portable Executable Signature Format". - - If AuthData is NULL, then return FALSE. - If ImageHash is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] AuthData Pointer to the Authenticode Signature retrieved from signed - PE/COFF image to be verified. - @param[in] DataSize Size of the Authenticode Signature in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertSize Size of the trusted certificate in bytes. - @param[in] ImageHash Pointer to the original image file hash value. The procedure - for calculating the image hash value is described in Authenticode - specification. - @param[in] HashSize Size of Image hash value in bytes. - - @retval TRUE The specified Authenticode Signature is valid. - @retval FALSE Invalid Authenticode Signature. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AuthenticodeVerify ( - IN CONST UINT8 *AuthData, - IN UINTN DataSize, - IN CONST UINT8 *TrustedCert, - IN UINTN CertSize, - IN CONST UINT8 *ImageHash, - IN UINTN HashSize - ); - -/** - Verifies the validity of a RFC3161 Timestamp CounterSignature embedded in PE/COFF Authenticode - signature. - - If AuthData is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] AuthData Pointer to the Authenticode Signature retrieved from signed - PE/COFF image to be verified. - @param[in] DataSize Size of the Authenticode Signature in bytes. - @param[in] TsaCert Pointer to a trusted/root TSA certificate encoded in DER, which - is used for TSA certificate chain verification. - @param[in] CertSize Size of the trusted certificate in bytes. - @param[out] SigningTime Return the time of timestamp generation time if the timestamp - signature is valid. - - @retval TRUE The specified Authenticode includes a valid RFC3161 Timestamp CounterSignature. - @retval FALSE No valid RFC3161 Timestamp CounterSignature in the specified Authenticode data. - -**/ -BOOLEAN -EFIAPI -ImageTimestampVerify ( - IN CONST UINT8 *AuthData, - IN UINTN DataSize, - IN CONST UINT8 *TsaCert, - IN UINTN CertSize, - OUT EFI_TIME *SigningTime - ); - -//===================================================================================== -// DH Key Exchange Primitive -//===================================================================================== - -/** - Allocates and Initializes one Diffie-Hellman Context for subsequent use. - - @return Pointer to the Diffie-Hellman Context that has been initialized. - If the allocations fails, DhNew() returns NULL. - If the interface is not supported, DhNew() returns NULL. - -**/ -VOID * -EFIAPI -DhNew ( - VOID - ); - -/** - Release the specified DH context. - - If the interface is not supported, then ASSERT(). - - @param[in] DhContext Pointer to the DH context to be released. - -**/ -VOID -EFIAPI -DhFree ( - IN VOID *DhContext - ); - -/** - Generates DH parameter. - - Given generator g, and length of prime number p in bits, this function generates p, - and sets DH context according to value of g and p. - - Before this function can be invoked, pseudorandom number generator must be correctly - initialized by RandomSeed(). - - If DhContext is NULL, then return FALSE. - If Prime is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[out] Prime Pointer to the buffer to receive the generated prime number. - - @retval TRUE DH parameter generation succeeded. - @retval FALSE Value of Generator is not supported. - @retval FALSE PRNG fails to generate random prime number with PrimeLength. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhGenerateParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - OUT UINT8 *Prime - ); - -/** - Sets generator and prime parameters for DH. - - Given generator g, and prime number p, this function and sets DH - context accordingly. - - If DhContext is NULL, then return FALSE. - If Prime is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[in] Prime Pointer to the prime number. - - @retval TRUE DH parameter setting succeeded. - @retval FALSE Value of Generator is not supported. - @retval FALSE Value of Generator is not suitable for the Prime. - @retval FALSE Value of Prime is not a prime number. - @retval FALSE Value of Prime is not a safe prime number. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhSetParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - IN CONST UINT8 *Prime - ); - -/** - Generates DH public key. - - This function generates random secret exponent, and computes the public key, which is - returned via parameter PublicKey and PublicKeySize. DH context is updated accordingly. - If the PublicKey buffer is too small to hold the public key, FALSE is returned and - PublicKeySize is set to the required buffer size to obtain the public key. - - If DhContext is NULL, then return FALSE. - If PublicKeySize is NULL, then return FALSE. - If PublicKeySize is large enough but PublicKey is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[out] PublicKey Pointer to the buffer to receive generated public key. - @param[in, out] PublicKeySize On input, the size of PublicKey buffer in bytes. - On output, the size of data returned in PublicKey buffer in bytes. - - @retval TRUE DH public key generation succeeded. - @retval FALSE DH public key generation failed. - @retval FALSE PublicKeySize is not large enough. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhGenerateKey ( - IN OUT VOID *DhContext, - OUT UINT8 *PublicKey, - IN OUT UINTN *PublicKeySize - ); - -/** - Computes exchanged common key. - - Given peer's public key, this function computes the exchanged common key, based on its own - context including value of prime modulus and random secret exponent. - - If DhContext is NULL, then return FALSE. - If PeerPublicKey is NULL, then return FALSE. - If KeySize is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeySize is not large enough, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] PeerPublicKey Pointer to the peer's public key. - @param[in] PeerPublicKeySize Size of peer's public key in bytes. - @param[out] Key Pointer to the buffer to receive generated key. - @param[in, out] KeySize On input, the size of Key buffer in bytes. - On output, the size of data returned in Key buffer in bytes. - - @retval TRUE DH exchanged key generation succeeded. - @retval FALSE DH exchanged key generation failed. - @retval FALSE KeySize is not large enough. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhComputeKey ( - IN OUT VOID *DhContext, - IN CONST UINT8 *PeerPublicKey, - IN UINTN PeerPublicKeySize, - OUT UINT8 *Key, - IN OUT UINTN *KeySize - ); - -//===================================================================================== -// Pseudo-Random Generation Primitive -//===================================================================================== - -/** - Sets up the seed value for the pseudorandom number generator. - - This function sets up the seed value for the pseudorandom number generator. - If Seed is not NULL, then the seed passed in is used. - If Seed is NULL, then default seed is used. - If this interface is not supported, then return FALSE. - - @param[in] Seed Pointer to seed value. - If NULL, default seed is used. - @param[in] SeedSize Size of seed value. - If Seed is NULL, this parameter is ignored. - - @retval TRUE Pseudorandom number generator has enough entropy for random generation. - @retval FALSE Pseudorandom number generator does not have enough entropy for random generation. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RandomSeed ( - IN CONST UINT8 *Seed OPTIONAL, - IN UINTN SeedSize - ); - -/** - Generates a pseudorandom byte stream of the specified size. - - If Output is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[out] Output Pointer to buffer to receive random value. - @param[in] Size Size of random bytes to generate. - - @retval TRUE Pseudorandom byte stream generated successfully. - @retval FALSE Pseudorandom number generator fails to generate due to lack of entropy. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RandomBytes ( - OUT UINT8 *Output, - IN UINTN Size - ); - -#endif // __BASE_CRYPT_LIB_H__ diff --git a/Core/CryptoPkg/Include/Library/TlsLib.h b/Core/CryptoPkg/Include/Library/TlsLib.h deleted file mode 100644 index fa6cb99d78..0000000000 --- a/Core/CryptoPkg/Include/Library/TlsLib.h +++ /dev/null @@ -1,788 +0,0 @@ -/** @file - Defines TLS Library APIs. - -Copyright (c) 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __TLS_LIB_H__ -#define __TLS_LIB_H__ - -/** - Initializes the OpenSSL library. - - This function registers ciphers and digests used directly and indirectly - by SSL/TLS, and initializes the readable error messages. - This function must be called before any other action takes places. - -**/ -VOID -EFIAPI -TlsInitialize ( - VOID - ); - -/** - Free an allocated SSL_CTX object. - - @param[in] TlsCtx Pointer to the SSL_CTX object to be released. - -**/ -VOID -EFIAPI -TlsCtxFree ( - IN VOID *TlsCtx - ); - -/** - Creates a new SSL_CTX object as framework to establish TLS/SSL enabled - connections. - - @param[in] MajorVer Major Version of TLS/SSL Protocol. - @param[in] MinorVer Minor Version of TLS/SSL Protocol. - - @return Pointer to an allocated SSL_CTX object. - If the creation failed, TlsCtxNew() returns NULL. - -**/ -VOID * -EFIAPI -TlsCtxNew ( - IN UINT8 MajorVer, - IN UINT8 MinorVer - ); - -/** - Free an allocated TLS object. - - This function removes the TLS object pointed to by Tls and frees up the - allocated memory. If Tls is NULL, nothing is done. - - @param[in] Tls Pointer to the TLS object to be freed. - -**/ -VOID -EFIAPI -TlsFree ( - IN VOID *Tls - ); - -/** - Create a new TLS object for a connection. - - This function creates a new TLS object for a connection. The new object - inherits the setting of the underlying context TlsCtx: connection method, - options, verification setting. - - @param[in] TlsCtx Pointer to the SSL_CTX object. - - @return Pointer to an allocated SSL object. - If the creation failed, TlsNew() returns NULL. - -**/ -VOID * -EFIAPI -TlsNew ( - IN VOID *TlsCtx - ); - -/** - Checks if the TLS handshake was done. - - This function will check if the specified TLS handshake was done. - - @param[in] Tls Pointer to the TLS object for handshake state checking. - - @retval TRUE The TLS handshake was done. - @retval FALSE The TLS handshake was not done. - -**/ -BOOLEAN -EFIAPI -TlsInHandshake ( - IN VOID *Tls - ); - -/** - Perform a TLS/SSL handshake. - - This function will perform a TLS/SSL handshake. - - @param[in] Tls Pointer to the TLS object for handshake operation. - @param[in] BufferIn Pointer to the most recently received TLS Handshake packet. - @param[in] BufferInSize Packet size in bytes for the most recently received TLS - Handshake packet. - @param[out] BufferOut Pointer to the buffer to hold the built packet. - @param[in, out] BufferOutSize Pointer to the buffer size in bytes. On input, it is - the buffer size provided by the caller. On output, it - is the buffer size in fact needed to contain the - packet. - - @retval EFI_SUCCESS The required TLS packet is built successfully. - @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: - Tls is NULL. - BufferIn is NULL but BufferInSize is NOT 0. - BufferInSize is 0 but BufferIn is NOT NULL. - BufferOutSize is NULL. - BufferOut is NULL if *BufferOutSize is not zero. - @retval EFI_BUFFER_TOO_SMALL BufferOutSize is too small to hold the response packet. - @retval EFI_ABORTED Something wrong during handshake. - -**/ -EFI_STATUS -EFIAPI -TlsDoHandshake ( - IN VOID *Tls, - IN UINT8 *BufferIn, OPTIONAL - IN UINTN BufferInSize, OPTIONAL - OUT UINT8 *BufferOut, OPTIONAL - IN OUT UINTN *BufferOutSize - ); - -/** - Handle Alert message recorded in BufferIn. If BufferIn is NULL and BufferInSize is zero, - TLS session has errors and the response packet needs to be Alert message based on error type. - - @param[in] Tls Pointer to the TLS object for state checking. - @param[in] BufferIn Pointer to the most recently received TLS Alert packet. - @param[in] BufferInSize Packet size in bytes for the most recently received TLS - Alert packet. - @param[out] BufferOut Pointer to the buffer to hold the built packet. - @param[in, out] BufferOutSize Pointer to the buffer size in bytes. On input, it is - the buffer size provided by the caller. On output, it - is the buffer size in fact needed to contain the - packet. - - @retval EFI_SUCCESS The required TLS packet is built successfully. - @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: - Tls is NULL. - BufferIn is NULL but BufferInSize is NOT 0. - BufferInSize is 0 but BufferIn is NOT NULL. - BufferOutSize is NULL. - BufferOut is NULL if *BufferOutSize is not zero. - @retval EFI_ABORTED An error occurred. - @retval EFI_BUFFER_TOO_SMALL BufferOutSize is too small to hold the response packet. - -**/ -EFI_STATUS -EFIAPI -TlsHandleAlert ( - IN VOID *Tls, - IN UINT8 *BufferIn, OPTIONAL - IN UINTN BufferInSize, OPTIONAL - OUT UINT8 *BufferOut, OPTIONAL - IN OUT UINTN *BufferOutSize - ); - -/** - Build the CloseNotify packet. - - @param[in] Tls Pointer to the TLS object for state checking. - @param[in, out] Buffer Pointer to the buffer to hold the built packet. - @param[in, out] BufferSize Pointer to the buffer size in bytes. On input, it is - the buffer size provided by the caller. On output, it - is the buffer size in fact needed to contain the - packet. - - @retval EFI_SUCCESS The required TLS packet is built successfully. - @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: - Tls is NULL. - BufferSize is NULL. - Buffer is NULL if *BufferSize is not zero. - @retval EFI_BUFFER_TOO_SMALL BufferSize is too small to hold the response packet. - -**/ -EFI_STATUS -EFIAPI -TlsCloseNotify ( - IN VOID *Tls, - IN OUT UINT8 *Buffer, - IN OUT UINTN *BufferSize - ); - -/** - Attempts to read bytes from one TLS object and places the data in Buffer. - - This function will attempt to read BufferSize bytes from the TLS object - and places the data in Buffer. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] Buffer Pointer to the buffer to store the data. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The amount of data successfully read from the TLS object. - @retval <=0 No data was successfully read. - -**/ -INTN -EFIAPI -TlsCtrlTrafficOut ( - IN VOID *Tls, - IN OUT VOID *Buffer, - IN UINTN BufferSize - ); - -/** - Attempts to write data from the buffer to TLS object. - - This function will attempt to write BufferSize bytes data from the Buffer - to the TLS object. - - @param[in] Tls Pointer to the TLS object. - @param[in] Buffer Pointer to the data buffer. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The amount of data successfully written to the TLS object. - @retval <=0 No data was successfully written. - -**/ -INTN -EFIAPI -TlsCtrlTrafficIn ( - IN VOID *Tls, - IN VOID *Buffer, - IN UINTN BufferSize - ); - -/** - Attempts to read bytes from the specified TLS connection into the buffer. - - This function tries to read BufferSize bytes data from the specified TLS - connection into the Buffer. - - @param[in] Tls Pointer to the TLS connection for data reading. - @param[in,out] Buffer Pointer to the data buffer. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The read operation was successful, and return value is the - number of bytes actually read from the TLS connection. - @retval <=0 The read operation was not successful. - -**/ -INTN -EFIAPI -TlsRead ( - IN VOID *Tls, - IN OUT VOID *Buffer, - IN UINTN BufferSize - ); - -/** - Attempts to write data to a TLS connection. - - This function tries to write BufferSize bytes data from the Buffer into the - specified TLS connection. - - @param[in] Tls Pointer to the TLS connection for data writing. - @param[in] Buffer Pointer to the data buffer. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The write operation was successful, and return value is the - number of bytes actually written to the TLS connection. - @retval <=0 The write operation was not successful. - -**/ -INTN -EFIAPI -TlsWrite ( - IN VOID *Tls, - IN VOID *Buffer, - IN UINTN BufferSize - ); - -/** - Set a new TLS/SSL method for a particular TLS object. - - This function sets a new TLS/SSL method for a particular TLS object. - - @param[in] Tls Pointer to a TLS object. - @param[in] MajorVer Major Version of TLS/SSL Protocol. - @param[in] MinorVer Minor Version of TLS/SSL Protocol. - - @retval EFI_SUCCESS The TLS/SSL method was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported TLS/SSL method. - -**/ -EFI_STATUS -EFIAPI -TlsSetVersion ( - IN VOID *Tls, - IN UINT8 MajorVer, - IN UINT8 MinorVer - ); - -/** - Set TLS object to work in client or server mode. - - This function prepares a TLS object to work in client or server mode. - - @param[in] Tls Pointer to a TLS object. - @param[in] IsServer Work in server mode. - - @retval EFI_SUCCESS The TLS/SSL work mode was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported TLS/SSL work mode. - -**/ -EFI_STATUS -EFIAPI -TlsSetConnectionEnd ( - IN VOID *Tls, - IN BOOLEAN IsServer - ); - -/** - Set the ciphers list to be used by the TLS object. - - This function sets the ciphers for use by a specified TLS object. - - @param[in] Tls Pointer to a TLS object. - @param[in] CipherId Pointer to a string that contains one or more - ciphers separated by a colon. - @param[in] CipherNum The number of cipher in the list. - - @retval EFI_SUCCESS The ciphers list was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported TLS cipher in the list. - -**/ -EFI_STATUS -EFIAPI -TlsSetCipherList ( - IN VOID *Tls, - IN UINT16 *CipherId, - IN UINTN CipherNum - ); - -/** - Set the compression method for TLS/SSL operations. - - This function handles TLS/SSL integrated compression methods. - - @param[in] CompMethod The compression method ID. - - @retval EFI_SUCCESS The compression method for the communication was - set successfully. - @retval EFI_UNSUPPORTED Unsupported compression method. - -**/ -EFI_STATUS -EFIAPI -TlsSetCompressionMethod ( - IN UINT8 CompMethod - ); - -/** - Set peer certificate verification mode for the TLS connection. - - This function sets the verification mode flags for the TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in] VerifyMode A set of logically or'ed verification mode flags. - -**/ -VOID -EFIAPI -TlsSetVerify ( - IN VOID *Tls, - IN UINT32 VerifyMode - ); - -/** - Sets a TLS/SSL session ID to be used during TLS/SSL connect. - - This function sets a session ID to be used when the TLS/SSL connection is - to be established. - - @param[in] Tls Pointer to the TLS object. - @param[in] SessionId Session ID data used for session resumption. - @param[in] SessionIdLen Length of Session ID in bytes. - - @retval EFI_SUCCESS Session ID was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED No available session for ID setting. - -**/ -EFI_STATUS -EFIAPI -TlsSetSessionId ( - IN VOID *Tls, - IN UINT8 *SessionId, - IN UINT16 SessionIdLen - ); - -/** - Adds the CA to the cert store when requesting Server or Client authentication. - - This function adds the CA certificate to the list of CAs when requesting - Server or Client authentication for the chosen TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in] Data Pointer to the data buffer of a DER-encoded binary - X.509 certificate or PEM-encoded X.509 certificate. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_OUT_OF_RESOURCES Required resources could not be allocated. - @retval EFI_ABORTED Invalid X.509 certificate. - -**/ -EFI_STATUS -EFIAPI -TlsSetCaCertificate ( - IN VOID *Tls, - IN VOID *Data, - IN UINTN DataSize - ); - -/** - Loads the local public certificate into the specified TLS object. - - This function loads the X.509 certificate into the specified TLS object - for TLS negotiation. - - @param[in] Tls Pointer to the TLS object. - @param[in] Data Pointer to the data buffer of a DER-encoded binary - X.509 certificate or PEM-encoded X.509 certificate. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_OUT_OF_RESOURCES Required resources could not be allocated. - @retval EFI_ABORTED Invalid X.509 certificate. - -**/ -EFI_STATUS -EFIAPI -TlsSetHostPublicCert ( - IN VOID *Tls, - IN VOID *Data, - IN UINTN DataSize - ); - -/** - Adds the local private key to the specified TLS object. - - This function adds the local private key (PEM-encoded RSA or PKCS#8 private - key) into the specified TLS object for TLS negotiation. - - @param[in] Tls Pointer to the TLS object. - @param[in] Data Pointer to the data buffer of a PEM-encoded RSA - or PKCS#8 private key. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_ABORTED Invalid private key data. - -**/ -EFI_STATUS -EFIAPI -TlsSetHostPrivateKey ( - IN VOID *Tls, - IN VOID *Data, - IN UINTN DataSize - ); - -/** - Adds the CA-supplied certificate revocation list for certificate validation. - - This function adds the CA-supplied certificate revocation list data for - certificate validity checking. - - @param[in] Data Pointer to the data buffer of a DER-encoded CRL data. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_ABORTED Invalid CRL data. - -**/ -EFI_STATUS -EFIAPI -TlsSetCertRevocationList ( - IN VOID *Data, - IN UINTN DataSize - ); - -/** - Gets the protocol version used by the specified TLS connection. - - This function returns the protocol version used by the specified TLS - connection. - - @param[in] Tls Pointer to the TLS object. - - @return The protocol version of the specified TLS connection. - -**/ -UINT16 -EFIAPI -TlsGetVersion ( - IN VOID *Tls - ); - -/** - Gets the connection end of the specified TLS connection. - - This function returns the connection end (as client or as server) used by - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - - @return The connection end used by the specified TLS connection. - -**/ -UINT8 -EFIAPI -TlsGetConnectionEnd ( - IN VOID *Tls - ); - -/** - Gets the cipher suite used by the specified TLS connection. - - This function returns current cipher suite used by the specified - TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] CipherId The cipher suite used by the TLS object. - - @retval EFI_SUCCESS The cipher suite was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported cipher suite. - -**/ -EFI_STATUS -EFIAPI -TlsGetCurrentCipher ( - IN VOID *Tls, - IN OUT UINT16 *CipherId - ); - -/** - Gets the compression methods used by the specified TLS connection. - - This function returns current integrated compression methods used by - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] CompressionId The current compression method used by - the TLS object. - - @retval EFI_SUCCESS The compression method was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_ABORTED Invalid Compression method. - @retval EFI_UNSUPPORTED This function is not supported. - -**/ -EFI_STATUS -EFIAPI -TlsGetCurrentCompressionId ( - IN VOID *Tls, - IN OUT UINT8 *CompressionId - ); - -/** - Gets the verification mode currently set in the TLS connection. - - This function returns the peer verification mode currently set in the - specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - - @return The verification mode set in the specified TLS connection. - -**/ -UINT32 -EFIAPI -TlsGetVerify ( - IN VOID *Tls - ); - -/** - Gets the session ID used by the specified TLS connection. - - This function returns the TLS/SSL session ID currently used by the - specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] SessionId Buffer to contain the returned session ID. - @param[in,out] SessionIdLen The length of Session ID in bytes. - - @retval EFI_SUCCESS The Session ID was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Invalid TLS/SSL session. - -**/ -EFI_STATUS -EFIAPI -TlsGetSessionId ( - IN VOID *Tls, - IN OUT UINT8 *SessionId, - IN OUT UINT16 *SessionIdLen - ); - -/** - Gets the client random data used in the specified TLS connection. - - This function returns the TLS/SSL client random data currently used in - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] ClientRandom Buffer to contain the returned client - random data (32 bytes). - -**/ -VOID -EFIAPI -TlsGetClientRandom ( - IN VOID *Tls, - IN OUT UINT8 *ClientRandom - ); - -/** - Gets the server random data used in the specified TLS connection. - - This function returns the TLS/SSL server random data currently used in - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] ServerRandom Buffer to contain the returned server - random data (32 bytes). - -**/ -VOID -EFIAPI -TlsGetServerRandom ( - IN VOID *Tls, - IN OUT UINT8 *ServerRandom - ); - -/** - Gets the master key data used in the specified TLS connection. - - This function returns the TLS/SSL master key material currently used in - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] KeyMaterial Buffer to contain the returned key material. - - @retval EFI_SUCCESS Key material was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Invalid TLS/SSL session. - -**/ -EFI_STATUS -EFIAPI -TlsGetKeyMaterial ( - IN VOID *Tls, - IN OUT UINT8 *KeyMaterial - ); - -/** - Gets the CA Certificate from the cert store. - - This function returns the CA certificate for the chosen - TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[out] Data Pointer to the data buffer to receive the CA - certificate data sent to the client. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetCaCertificate ( - IN VOID *Tls, - OUT VOID *Data, - IN OUT UINTN *DataSize - ); - -/** - Gets the local public Certificate set in the specified TLS object. - - This function returns the local public certificate which was currently set - in the specified TLS object. - - @param[in] Tls Pointer to the TLS object. - @param[out] Data Pointer to the data buffer to receive the local - public certificate. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_NOT_FOUND The certificate is not found. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetHostPublicCert ( - IN VOID *Tls, - OUT VOID *Data, - IN OUT UINTN *DataSize - ); - -/** - Gets the local private key set in the specified TLS object. - - This function returns the local private key data which was currently set - in the specified TLS object. - - @param[in] Tls Pointer to the TLS object. - @param[out] Data Pointer to the data buffer to receive the local - private key data. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetHostPrivateKey ( - IN VOID *Tls, - OUT VOID *Data, - IN OUT UINTN *DataSize - ); - -/** - Gets the CA-supplied certificate revocation list data set in the specified - TLS object. - - This function returns the CA-supplied certificate revocation list data which - was currently set in the specified TLS object. - - @param[out] Data Pointer to the data buffer to receive the CRL data. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetCertRevocationList ( - OUT VOID *Data, - IN OUT UINTN *DataSize - ); - -#endif // __TLS_LIB_H__ - diff --git a/Core/CryptoPkg/Include/Protocol/RuntimeCrypt.h b/Core/CryptoPkg/Include/Protocol/RuntimeCrypt.h deleted file mode 100644 index 35fd43cd75..0000000000 --- a/Core/CryptoPkg/Include/Protocol/RuntimeCrypt.h +++ /dev/null @@ -1,204 +0,0 @@ -/** @file - The runtime cryptographic protocol. - Only limited crypto primitives (SHA-256 and RSA) are provided for runtime - authenticated variable service. - -Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __EFI_RUNTIME_CRYPT_PROTOCOL_H__ -#define __EFI_RUNTIME_CRYPT_PROTOCOL_H__ - -#include - -/// -/// Runtime Cryptographic Protocol GUID. -/// -#define EFI_RUNTIME_CRYPT_PROTOCOL_GUID \ - { \ - 0xe1475e0c, 0x1746, 0x4802, { 0x86, 0x2e, 0x1, 0x1c, 0x2c, 0x2d, 0x9d, 0x86 } \ - } - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-256 operations. - - @return The size, in bytes, of the context buffer required for SHA-256 operations. - -**/ -typedef -UINTN -(EFIAPI *EFI_RUNTIME_CRYPT_SHA256_GET_CONTEXT_SIZE) ( - VOID - ); - - -/** - Initializes user-supplied memory pointed by Sha256Context as SHA-256 hash context for - subsequent use. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 Context being initialized. - - @retval TRUE SHA-256 context initialization succeeded. - @retval FALSE SHA-256 context initialization failed. - -**/ -typedef -BOOLEAN -(EFIAPI *EFI_RUNTIME_CRYPT_SHA256_INIT) ( - IN OUT VOID *Sha256Context - ); - - -/** - Performs SHA-256 digest on a data buffer of the specified length. This function can - be called multiple times to compute the digest of long or discontinuous data streams. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataLength Length of Data buffer in bytes. - - @retval TRUE SHA-256 data digest succeeded. - @retval FALSE Invalid SHA-256 context. After Sha256Final function has been called, the - SHA-256 context cannot be reused. - -**/ -typedef -BOOLEAN -(EFIAPI *EFI_RUNTIME_CRYPT_SHA256_UPDATE) ( - IN OUT VOID *Sha256Context, - IN CONST VOID *Data, - IN UINTN DataLength - ); - - -/** - Completes SHA-256 hash computation and retrieves the digest value into the specified - memory. After this function has been called, the SHA-256 context cannot be used again. - - If Sha256Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 context - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - -**/ -typedef -BOOLEAN -(EFIAPI *EFI_RUNTIME_CRYPT_SHA256_FINAL) ( - IN OUT VOID *Sha256Context, - OUT UINT8 *HashValue - ); - - -/** - Allocates and Initializes one RSA Context for subsequent use. - - @return Pointer to the RSA Context that has been initialized. - If the allocations fails, RsaNew() returns NULL. - -**/ -typedef -VOID * -(EFIAPI *EFI_RUNTIME_CRYPT_RSA_NEW) ( - VOID - ); - -/** - Release the specified RSA Context. - - @param[in] RsaContext Pointer to the RSA context to be released. - -**/ -typedef -VOID -(EFIAPI *EFI_RUNTIME_CRYPT_RSA_FREE) ( - IN VOID *RsaContext - ); - -/** - Sets the tag-designated RSA key component into the established RSA context from - the user-specified nonnegative integer (octet string format represented in RSA - PKCS#1). - - If RsaContext is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[in] BigNumber Pointer to octet integer buffer. - @param[in] BnLength Length of big number buffer in bytes. - - @return TRUE RSA key component was set successfully. - @return FALSE Invalid RSA key component tag. - -**/ -typedef -BOOLEAN -(EFIAPI *EFI_RUNTIME_CRYPT_RSA_SET_KEY) ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - IN CONST UINT8 *BigNumber, - IN UINTN BnLength - ); - -/** - Verifies the RSA-SSA signature with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If Signature is NULL, then return FALSE. - If HashLength is not equal to the size of MD5, SHA-1 or SHA-256 digest, then return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature verification. - @param[in] MessageHash Pointer to octet message hash to be checked. - @param[in] HashLength Length of the message hash in bytes. - @param[in] Signature Pointer to RSA PKCS1-v1_5 signature to be verified. - @param[in] SigLength Length of signature in bytes. - - @return TRUE Valid signature encoded in PKCS1-v1_5. - @return FALSE Invalid signature or invalid RSA context. - -**/ -typedef -BOOLEAN -(EFIAPI *EFI_RUNTIME_CRYPT_RSA_PKCS1_VERIFY) ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashLength, - IN CONST UINT8 *Signature, - IN UINTN SigLength - ); - -/// -/// Runtime Cryptographic Protocol Structure. -/// -typedef struct { - EFI_RUNTIME_CRYPT_SHA256_GET_CONTEXT_SIZE Sha256GetContextSize; - EFI_RUNTIME_CRYPT_SHA256_INIT Sha256Init; - EFI_RUNTIME_CRYPT_SHA256_UPDATE Sha256Update; - EFI_RUNTIME_CRYPT_SHA256_FINAL Sha256Final; - EFI_RUNTIME_CRYPT_RSA_NEW RsaNew; - EFI_RUNTIME_CRYPT_RSA_FREE RsaFree; - EFI_RUNTIME_CRYPT_RSA_SET_KEY RsaSetKey; - EFI_RUNTIME_CRYPT_RSA_PKCS1_VERIFY RsaPkcs1Verify; -} EFI_RUNTIME_CRYPT_PROTOCOL; - -extern EFI_GUID gEfiRuntimeCryptProtocolGuid; - -#endif diff --git a/Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf b/Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf deleted file mode 100644 index bb91f899ff..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf +++ /dev/null @@ -1,106 +0,0 @@ -## @file -# Cryptographic Library Instance for DXE_DRIVER. -# -# Caution: This module requires additional review when modified. -# This library will have external input - signature. -# This external input must be validated carefully to avoid security issues such as -# buffer overflow or integer overflow. -# -# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BaseCryptLib - MODULE_UNI_FILE = BaseCryptLib.uni - FILE_GUID = be3bb803-91b6-4da0-bd91-a8b21c18ca5d - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = BaseCryptLib|DXE_DRIVER DXE_CORE UEFI_APPLICATION UEFI_DRIVER - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF ARM AARCH64 -# - -[Sources] - InternalCryptLib.h - Hash/CryptMd4.c - Hash/CryptMd5.c - Hash/CryptSha1.c - Hash/CryptSha256.c - Hash/CryptSha512.c - Hmac/CryptHmacMd5.c - Hmac/CryptHmacSha1.c - Hmac/CryptHmacSha256.c - Cipher/CryptAes.c - Cipher/CryptTdes.c - Cipher/CryptArc4.c - Pk/CryptRsaBasic.c - Pk/CryptRsaExt.c - Pk/CryptPkcs5Pbkdf2.c - Pk/CryptPkcs7Sign.c - Pk/CryptPkcs7Verify.c - Pk/CryptDh.c - Pk/CryptX509.c - Pk/CryptAuthenticode.c - Pk/CryptTs.c - Pem/CryptPem.c - - SysCall/CrtWrapper.c - SysCall/TimerWrapper.c - SysCall/BaseMemAllocation.c - -[Sources.Ia32] - Rand/CryptRandTsc.c - -[Sources.X64] - Rand/CryptRandTsc.c - -[Sources.IPF] - Rand/CryptRandItc.c - -[Sources.ARM] - Rand/CryptRand.c - -[Sources.AARCH64] - Rand/CryptRand.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - BaseLib - BaseMemoryLib - MemoryAllocationLib - UefiRuntimeServicesTableLib - DebugLib - OpensslLib - IntrinsicLib - PrintLib - -# -# Remove these [BuildOptions] after this library is cleaned up -# -[BuildOptions] - # - # suppress the following warnings so we do not break the build with warnings-as-errors: - # C4090: 'function' : different 'const' qualifiers - # - MSFT:*_*_*_CC_FLAGS = /wd4090 - - GCC:*_GCC44_IA32_CC_FLAGS = "-D__cdecl=__attribute__((cdecl))" "-D__declspec(t)=__attribute__((t))" - - # -JCryptoPkg/Include : To disable the use of the system includes provided by RVCT - # --diag_remark=1 : Reduce severity of "#1-D: last line of file ends without a newline" - RVCT:*_*_ARM_CC_FLAGS = -JCryptoPkg/Include --diag_remark=1 diff --git a/Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni b/Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni deleted file mode 100644 index 00609947e5..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.uni +++ /dev/null @@ -1,25 +0,0 @@ -// /** @file -// Cryptographic Library Instance for DXE_DRIVER. -// -// Caution: This module requires additional review when modified. -// This library will have external input - signature. -// This external input must be validated carefully to avoid security issues such as -// buffer overflow or integer overflow. -// -// Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Cryptographic Library Instance for DXE_DRIVER" - -#string STR_MODULE_DESCRIPTION #language en-US "Caution: This module requires additional review when modified. This library will have external input - signature. This external input must be validated carefully to avoid security issues such as buffer overflow or integer overflow." - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAes.c b/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAes.c deleted file mode 100644 index 753d79814f..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAes.c +++ /dev/null @@ -1,323 +0,0 @@ -/** @file - AES Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -/** - Retrieves the size, in bytes, of the context buffer required for AES operations. - - @return The size, in bytes, of the context buffer required for AES operations. - -**/ -UINTN -EFIAPI -AesGetContextSize ( - VOID - ) -{ - // - // AES uses different key contexts for encryption and decryption, so here memory - // for 2 copies of AES_KEY is allocated. - // - return (UINTN) (2 * sizeof (AES_KEY)); -} - -/** - Initializes user-supplied memory as AES context for subsequent use. - - This function initializes user-supplied memory pointed by AesContext as AES context. - In addition, it sets up all AES key materials for subsequent encryption and decryption - operations. - There are 3 options for key length, 128 bits, 192 bits, and 256 bits. - - If AesContext is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeyLength is not valid, then return FALSE. - - @param[out] AesContext Pointer to AES context being initialized. - @param[in] Key Pointer to the user-supplied AES key. - @param[in] KeyLength Length of AES key in bits. - - @retval TRUE AES context initialization succeeded. - @retval FALSE AES context initialization failed. - -**/ -BOOLEAN -EFIAPI -AesInit ( - OUT VOID *AesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ) -{ - AES_KEY *AesKey; - - // - // Check input parameters. - // - if (AesContext == NULL || Key == NULL || (KeyLength != 128 && KeyLength != 192 && KeyLength != 256)) { - return FALSE; - } - - // - // Initialize AES encryption & decryption key schedule. - // - AesKey = (AES_KEY *) AesContext; - if (AES_set_encrypt_key (Key, (UINT32) KeyLength, AesKey) != 0) { - return FALSE; - } - if (AES_set_decrypt_key (Key, (UINT32) KeyLength, AesKey + 1) != 0) { - return FALSE; - } - return TRUE; -} - -/** - Performs AES encryption on a data buffer of the specified size in ECB mode. - - This function performs AES encryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval TRUE AES encryption succeeded. - @retval FALSE AES encryption failed. - -**/ -BOOLEAN -EFIAPI -AesEcbEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - AES_KEY *AesKey; - - // - // Check input parameters. - // - if (AesContext == NULL || Input == NULL || (InputSize % AES_BLOCK_SIZE) != 0 || Output == NULL) { - return FALSE; - } - - AesKey = (AES_KEY *) AesContext; - - // - // Perform AES data encryption with ECB mode (block-by-block) - // - while (InputSize > 0) { - AES_ecb_encrypt (Input, Output, AesKey, AES_ENCRYPT); - Input += AES_BLOCK_SIZE; - Output += AES_BLOCK_SIZE; - InputSize -= AES_BLOCK_SIZE; - } - - return TRUE; -} - -/** - Performs AES decryption on a data buffer of the specified size in ECB mode. - - This function performs AES decryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES decryption output. - - @retval TRUE AES decryption succeeded. - @retval FALSE AES decryption failed. - -**/ -BOOLEAN -EFIAPI -AesEcbDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - AES_KEY *AesKey; - - // - // Check input parameters. - // - if (AesContext == NULL || Input == NULL || (InputSize % AES_BLOCK_SIZE) != 0 || Output == NULL) { - return FALSE; - } - - AesKey = (AES_KEY *) AesContext; - - // - // Perform AES data decryption with ECB mode (block-by-block) - // - while (InputSize > 0) { - AES_ecb_encrypt (Input, Output, AesKey + 1, AES_DECRYPT); - Input += AES_BLOCK_SIZE; - Output += AES_BLOCK_SIZE; - InputSize -= AES_BLOCK_SIZE; - } - - return TRUE; -} - -/** - Performs AES encryption on a data buffer of the specified size in CBC mode. - - This function performs AES encryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (16 bytes). - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval TRUE AES encryption succeeded. - @retval FALSE AES encryption failed. - -**/ -BOOLEAN -EFIAPI -AesCbcEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - AES_KEY *AesKey; - UINT8 IvecBuffer[AES_BLOCK_SIZE]; - - // - // Check input parameters. - // - if (AesContext == NULL || Input == NULL || (InputSize % AES_BLOCK_SIZE) != 0) { - return FALSE; - } - - if (Ivec == NULL || Output == NULL || InputSize > INT_MAX) { - return FALSE; - } - - AesKey = (AES_KEY *) AesContext; - CopyMem (IvecBuffer, Ivec, AES_BLOCK_SIZE); - - // - // Perform AES data encryption with CBC mode - // - AES_cbc_encrypt (Input, Output, (UINT32) InputSize, AesKey, IvecBuffer, AES_ENCRYPT); - - return TRUE; -} - -/** - Performs AES decryption on a data buffer of the specified size in CBC mode. - - This function performs AES decryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (16 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (16 bytes). - AesContext should be already correctly initialized by AesInit(). Behavior with - invalid AES context is undefined. - - If AesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (16 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval TRUE AES decryption succeeded. - @retval FALSE AES decryption failed. - -**/ -BOOLEAN -EFIAPI -AesCbcDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - AES_KEY *AesKey; - UINT8 IvecBuffer[AES_BLOCK_SIZE]; - - // - // Check input parameters. - // - if (AesContext == NULL || Input == NULL || (InputSize % AES_BLOCK_SIZE) != 0) { - return FALSE; - } - - if (Ivec == NULL || Output == NULL || InputSize > INT_MAX) { - return FALSE; - } - - AesKey = (AES_KEY *) AesContext; - CopyMem (IvecBuffer, Ivec, AES_BLOCK_SIZE); - - // - // Perform AES data decryption with CBC mode - // - AES_cbc_encrypt (Input, Output, (UINT32) InputSize, AesKey + 1, IvecBuffer, AES_DECRYPT); - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAesNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAesNull.c deleted file mode 100644 index 074b07247b..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptAesNull.c +++ /dev/null @@ -1,165 +0,0 @@ -/** @file - AES Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for AES operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -AesGetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory as AES context for subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] AesContext Pointer to AES context being initialized. - @param[in] Key Pointer to the user-supplied AES key. - @param[in] KeyLength Length of AES key in bits. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesInit ( - OUT VOID *AesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES encryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesEcbEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES decryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES decryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesEcbDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES encryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesCbcEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES decryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesCbcDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4.c b/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4.c deleted file mode 100644 index f3c4d31a2d..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4.c +++ /dev/null @@ -1,211 +0,0 @@ -/** @file - ARC4 Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -/** - Retrieves the size, in bytes, of the context buffer required for ARC4 operations. - - @return The size, in bytes, of the context buffer required for ARC4 operations. - -**/ -UINTN -EFIAPI -Arc4GetContextSize ( - VOID - ) -{ - // - // Memory for 2 copies of RC4_KEY is allocated, one for working copy, and the other - // for backup copy. When Arc4Reset() is called, we can use the backup copy to restore - // the working copy to the initial state. - // - return (UINTN) (2 * sizeof (RC4_KEY)); -} - -/** - Initializes user-supplied memory as ARC4 context for subsequent use. - - This function initializes user-supplied memory pointed by Arc4Context as ARC4 context. - In addition, it sets up all ARC4 key materials for subsequent encryption and decryption - operations. - - If Arc4Context is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeySize does not in the range of [5, 256] bytes, then return FALSE. - - @param[out] Arc4Context Pointer to ARC4 context being initialized. - @param[in] Key Pointer to the user-supplied ARC4 key. - @param[in] KeySize Size of ARC4 key in bytes. - - @retval TRUE ARC4 context initialization succeeded. - @retval FALSE ARC4 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Arc4Init ( - OUT VOID *Arc4Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - RC4_KEY *Rc4Key; - - // - // Check input parameters. - // - if (Arc4Context == NULL || Key == NULL || (KeySize < 5 || KeySize > 256)) { - return FALSE; - } - - Rc4Key = (RC4_KEY *) Arc4Context; - - RC4_set_key (Rc4Key, (UINT32) KeySize, Key); - - CopyMem (Rc4Key + 1, Rc4Key, sizeof (RC4_KEY)); - - return TRUE; -} - -/** - Performs ARC4 encryption on a data buffer of the specified size. - - This function performs ARC4 encryption on data buffer pointed by Input, of specified - size of InputSize. - Arc4Context should be already correctly initialized by Arc4Init(). Behavior with - invalid ARC4 context is undefined. - - If Arc4Context is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If Output is NULL, then return FALSE. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 encryption output. - - @retval TRUE ARC4 encryption succeeded. - @retval FALSE ARC4 encryption failed. - -**/ -BOOLEAN -EFIAPI -Arc4Encrypt ( - IN OUT VOID *Arc4Context, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - RC4_KEY *Rc4Key; - - // - // Check input parameters. - // - if (Arc4Context == NULL || Input == NULL || Output == NULL || InputSize > INT_MAX) { - return FALSE; - } - - Rc4Key = (RC4_KEY *) Arc4Context; - - RC4 (Rc4Key, (UINT32) InputSize, Input, Output); - - return TRUE; -} - -/** - Performs ARC4 decryption on a data buffer of the specified size. - - This function performs ARC4 decryption on data buffer pointed by Input, of specified - size of InputSize. - Arc4Context should be already correctly initialized by Arc4Init(). Behavior with - invalid ARC4 context is undefined. - - If Arc4Context is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If Output is NULL, then return FALSE. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 decryption output. - - @retval TRUE ARC4 decryption succeeded. - @retval FALSE ARC4 decryption failed. - -**/ -BOOLEAN -EFIAPI -Arc4Decrypt ( - IN OUT VOID *Arc4Context, - IN UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - RC4_KEY *Rc4Key; - - // - // Check input parameters. - // - if (Arc4Context == NULL || Input == NULL || Output == NULL || InputSize > INT_MAX) { - return FALSE; - } - - Rc4Key = (RC4_KEY *) Arc4Context; - - RC4 (Rc4Key, (UINT32) InputSize, Input, Output); - - return TRUE; -} - -/** - Resets the ARC4 context to the initial state. - - The function resets the ARC4 context to the state it had immediately after the - ARC4Init() function call. - Contrary to ARC4Init(), Arc4Reset() requires no secret key as input, but ARC4 context - should be already correctly initialized by ARC4Init(). - - If Arc4Context is NULL, then return FALSE. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - - @retval TRUE ARC4 reset succeeded. - @retval FALSE ARC4 reset failed. - -**/ -BOOLEAN -EFIAPI -Arc4Reset ( - IN OUT VOID *Arc4Context - ) -{ - RC4_KEY *Rc4Key; - - // - // Check input parameters. - // - if (Arc4Context == NULL) { - return FALSE; - } - - Rc4Key = (RC4_KEY *) Arc4Context; - - CopyMem (Rc4Key, Rc4Key + 1, sizeof (RC4_KEY)); - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4Null.c deleted file mode 100644 index 1275e20f89..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4Null.c +++ /dev/null @@ -1,130 +0,0 @@ -/** @file - ARC4 Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for ARC4 operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - - -**/ -UINTN -EFIAPI -Arc4GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory as ARC4 context for subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Arc4Context Pointer to ARC4 context being initialized. - @param[in] Key Pointer to the user-supplied ARC4 key. - @param[in] KeySize Size of ARC4 key in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Init ( - OUT VOID *Arc4Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs ARC4 encryption on a data buffer of the specified size. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Encrypt ( - IN OUT VOID *Arc4Context, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs ARC4 decryption on a data buffer of the specified size. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 decryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Decrypt ( - IN OUT VOID *Arc4Context, - IN UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Resets the ARC4 context to the initial state. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Reset ( - IN OUT VOID *Arc4Context - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdes.c b/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdes.c deleted file mode 100644 index 8025a49cc8..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdes.c +++ /dev/null @@ -1,370 +0,0 @@ -/** @file - TDES Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -/** - Retrieves the size, in bytes, of the context buffer required for TDES operations. - - @return The size, in bytes, of the context buffer required for TDES operations. - -**/ -UINTN -EFIAPI -TdesGetContextSize ( - VOID - ) -{ - // - // Memory for 3 copies of DES_key_schedule is allocated, for K1, K2 and K3 each. - // - return (UINTN) (3 * sizeof (DES_key_schedule)); -} - -/** - Initializes user-supplied memory as TDES context for subsequent use. - - This function initializes user-supplied memory pointed by TdesContext as TDES context. - In addition, it sets up all TDES key materials for subsequent encryption and decryption - operations. - There are 3 key options as follows: - KeyLength = 64, Keying option 1: K1 == K2 == K3 (Backward compatibility with DES) - KeyLength = 128, Keying option 2: K1 != K2 and K3 = K1 (Less Security) - KeyLength = 192 Keying option 3: K1 != K2 != K3 (Strongest) - - If TdesContext is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeyLength is not valid, then return FALSE. - - @param[out] TdesContext Pointer to TDES context being initialized. - @param[in] Key Pointer to the user-supplied TDES key. - @param[in] KeyLength Length of TDES key in bits. - - @retval TRUE TDES context initialization succeeded. - @retval FALSE TDES context initialization failed. - -**/ -BOOLEAN -EFIAPI -TdesInit ( - OUT VOID *TdesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ) -{ - DES_key_schedule *KeySchedule; - - // - // Check input parameters. - // - if (TdesContext == NULL || Key == NULL || (KeyLength != 64 && KeyLength != 128 && KeyLength != 192)) { - return FALSE; - } - - KeySchedule = (DES_key_schedule *) TdesContext; - - // - // If input Key is a weak key, return error. - // - if (DES_is_weak_key ((const_DES_cblock *) Key) == 1) { - return FALSE; - } - - DES_set_key_unchecked ((const_DES_cblock *) Key, KeySchedule); - - if (KeyLength == 64) { - CopyMem (KeySchedule + 1, KeySchedule, sizeof (DES_key_schedule)); - CopyMem (KeySchedule + 2, KeySchedule, sizeof (DES_key_schedule)); - return TRUE; - } - - if (DES_is_weak_key ((const_DES_cblock *) (Key + 8)) == 1) { - return FALSE; - } - - DES_set_key_unchecked ((const_DES_cblock *) (Key + 8), KeySchedule + 1); - - if (KeyLength == 128) { - CopyMem (KeySchedule + 2, KeySchedule, sizeof (DES_key_schedule)); - return TRUE; - } - - if (DES_is_weak_key ((const_DES_cblock *) (Key + 16)) == 1) { - return FALSE; - } - - DES_set_key_unchecked ((const_DES_cblock *) (Key + 16), KeySchedule + 2); - - return TRUE; -} - -/** - Performs TDES encryption on a data buffer of the specified size in ECB mode. - - This function performs TDES encryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval TRUE TDES encryption succeeded. - @retval FALSE TDES encryption failed. - -**/ -BOOLEAN -EFIAPI -TdesEcbEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - DES_key_schedule *KeySchedule; - - // - // Check input parameters. - // - if (TdesContext == NULL || Input == NULL || (InputSize % TDES_BLOCK_SIZE) != 0 || Output == NULL) { - return FALSE; - } - - KeySchedule = (DES_key_schedule *) TdesContext; - - while (InputSize > 0) { - DES_ecb3_encrypt ( - (const_DES_cblock *) Input, - (DES_cblock *) Output, - KeySchedule, - KeySchedule + 1, - KeySchedule + 2, - DES_ENCRYPT - ); - Input += TDES_BLOCK_SIZE; - Output += TDES_BLOCK_SIZE; - InputSize -= TDES_BLOCK_SIZE; - } - - return TRUE; -} - -/** - Performs TDES decryption on a data buffer of the specified size in ECB mode. - - This function performs TDES decryption on data buffer pointed by Input, of specified - size of InputSize, in ECB mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES decryption output. - - @retval TRUE TDES decryption succeeded. - @retval FALSE TDES decryption failed. - -**/ -BOOLEAN -EFIAPI -TdesEcbDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - DES_key_schedule *KeySchedule; - - // - // Check input parameters. - // - if (TdesContext == NULL || Input == NULL || (InputSize % TDES_BLOCK_SIZE) != 0 || Output == NULL) { - return FALSE; - } - - KeySchedule = (DES_key_schedule *) TdesContext; - - while (InputSize > 0) { - DES_ecb3_encrypt ( - (const_DES_cblock *) Input, - (DES_cblock *) Output, - KeySchedule, - KeySchedule + 1, - KeySchedule + 2, - DES_DECRYPT - ); - Input += TDES_BLOCK_SIZE; - Output += TDES_BLOCK_SIZE; - InputSize -= TDES_BLOCK_SIZE; - } - - return TRUE; -} - -/** - Performs TDES encryption on a data buffer of the specified size in CBC mode. - - This function performs TDES encryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (8 bytes). - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval TRUE TDES encryption succeeded. - @retval FALSE TDES encryption failed. - -**/ -BOOLEAN -EFIAPI -TdesCbcEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - DES_key_schedule *KeySchedule; - UINT8 IvecBuffer[TDES_BLOCK_SIZE]; - - // - // Check input parameters. - // - if (TdesContext == NULL || Input == NULL || (InputSize % TDES_BLOCK_SIZE) != 0) { - return FALSE; - } - - if (Ivec == NULL || Output == NULL || InputSize > INT_MAX) { - return FALSE; - } - - KeySchedule = (DES_key_schedule *) TdesContext; - CopyMem (IvecBuffer, Ivec, TDES_BLOCK_SIZE); - - DES_ede3_cbc_encrypt ( - Input, - Output, - (UINT32) InputSize, - KeySchedule, - KeySchedule + 1, - KeySchedule + 2, - (DES_cblock *) IvecBuffer, - DES_ENCRYPT - ); - - return TRUE; -} - -/** - Performs TDES decryption on a data buffer of the specified size in CBC mode. - - This function performs TDES decryption on data buffer pointed by Input, of specified - size of InputSize, in CBC mode. - InputSize must be multiple of block size (8 bytes). This function does not perform - padding. Caller must perform padding, if necessary, to ensure valid input data size. - Initialization vector should be one block size (8 bytes). - TdesContext should be already correctly initialized by TdesInit(). Behavior with - invalid TDES context is undefined. - - If TdesContext is NULL, then return FALSE. - If Input is NULL, then return FALSE. - If InputSize is not multiple of block size (8 bytes), then return FALSE. - If Ivec is NULL, then return FALSE. - If Output is NULL, then return FALSE. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval TRUE TDES decryption succeeded. - @retval FALSE TDES decryption failed. - -**/ -BOOLEAN -EFIAPI -TdesCbcDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - DES_key_schedule *KeySchedule; - UINT8 IvecBuffer[TDES_BLOCK_SIZE]; - - // - // Check input parameters. - // - if (TdesContext == NULL || Input == NULL || (InputSize % TDES_BLOCK_SIZE) != 0) { - return FALSE; - } - - if (Ivec == NULL || Output == NULL || InputSize > INT_MAX) { - return FALSE; - } - - KeySchedule = (DES_key_schedule *) TdesContext; - CopyMem (IvecBuffer, Ivec, TDES_BLOCK_SIZE); - - DES_ede3_cbc_encrypt ( - Input, - Output, - (UINT32) InputSize, - KeySchedule, - KeySchedule + 1, - KeySchedule + 2, - (DES_cblock *) IvecBuffer, - DES_DECRYPT - ); - - return TRUE; -} - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdesNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdesNull.c deleted file mode 100644 index cec33b6275..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdesNull.c +++ /dev/null @@ -1,166 +0,0 @@ -/** @file - TDES Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for TDES operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -TdesGetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory as TDES context for subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] TdesContext Pointer to TDES context being initialized. - @param[in] Key Pointer to the user-supplied TDES key. - @param[in] KeyLength Length of TDES key in bits. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesInit ( - OUT VOID *TdesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES encryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesEcbEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES decryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES decryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesEcbDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES encryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesCbcEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES decryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesCbcDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4.c b/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4.c deleted file mode 100644 index fb7dd48753..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4.c +++ /dev/null @@ -1,229 +0,0 @@ -/** @file - MD4 Digest Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -/** - Retrieves the size, in bytes, of the context buffer required for MD4 hash operations. - - @return The size, in bytes, of the context buffer required for MD4 hash operations. - -**/ -UINTN -EFIAPI -Md4GetContextSize ( - VOID - ) -{ - // - // Retrieves the OpenSSL MD4 Context Size - // - return (UINTN) (sizeof (MD4_CTX)); -} - -/** - Initializes user-supplied memory pointed by Md4Context as MD4 hash context for - subsequent use. - - If Md4Context is NULL, then return FALSE. - - @param[out] Md4Context Pointer to MD4 context being initialized. - - @retval TRUE MD4 context initialization succeeded. - @retval FALSE MD4 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Md4Init ( - OUT VOID *Md4Context - ) -{ - // - // Check input parameters. - // - if (Md4Context == NULL) { - return FALSE; - } - - // - // OpenSSL MD4 Context Initialization - // - return (BOOLEAN) (MD4_Init ((MD4_CTX *) Md4Context)); -} - -/** - Makes a copy of an existing MD4 context. - - If Md4Context is NULL, then return FALSE. - If NewMd4Context is NULL, then return FALSE. - - @param[in] Md4Context Pointer to MD4 context being copied. - @param[out] NewMd4Context Pointer to new MD4 context. - - @retval TRUE MD4 context copy succeeded. - @retval FALSE MD4 context copy failed. - -**/ -BOOLEAN -EFIAPI -Md4Duplicate ( - IN CONST VOID *Md4Context, - OUT VOID *NewMd4Context - ) -{ - // - // Check input parameters. - // - if (Md4Context == NULL || NewMd4Context == NULL) { - return FALSE; - } - - CopyMem (NewMd4Context, Md4Context, sizeof (MD4_CTX)); - - return TRUE; -} - -/** - Digests the input data and updates MD4 context. - - This function performs MD4 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - MD4 context should be already correctly initialized by Md4Init(), and should not be finalized - by Md4Final(). Behavior with invalid context is undefined. - - If Md4Context is NULL, then return FALSE. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE MD4 data digest succeeded. - @retval FALSE MD4 data digest failed. - -**/ -BOOLEAN -EFIAPI -Md4Update ( - IN OUT VOID *Md4Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (Md4Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL MD4 Hash Update - // - return (BOOLEAN) (MD4_Update ((MD4_CTX *) Md4Context, Data, DataSize)); -} - -/** - Completes computation of the MD4 digest value. - - This function completes MD4 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the MD4 context cannot - be used again. - MD4 context should be already correctly initialized by Md4Init(), and should not be - finalized by Md4Final(). Behavior with invalid MD4 context is undefined. - - If Md4Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[out] HashValue Pointer to a buffer that receives the MD4 digest - value (16 bytes). - - @retval TRUE MD4 digest computation succeeded. - @retval FALSE MD4 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Md4Final ( - IN OUT VOID *Md4Context, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (Md4Context == NULL || HashValue == NULL) { - return FALSE; - } - - // - // OpenSSL MD4 Hash Finalization - // - return (BOOLEAN) (MD4_Final (HashValue, (MD4_CTX *) Md4Context)); -} - -/** - Computes the MD4 message digest of a input data buffer. - - This function performs the MD4 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the MD4 digest - value (16 bytes). - - @retval TRUE MD4 digest computation succeeded. - @retval FALSE MD4 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (HashValue == NULL) { - return FALSE; - } - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL MD4 Hash Computation. - // - if (MD4 (Data, DataSize, HashValue) == NULL) { - return FALSE; - } else { - return TRUE; - } -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4Null.c deleted file mode 100644 index 01b3f23da7..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4Null.c +++ /dev/null @@ -1,149 +0,0 @@ -/** @file - MD4 Digest Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for MD4 hash - operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Md4GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory pointed by Md4Context as MD4 hash context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Md4Context Pointer to MD4 context being initialized. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Init ( - OUT VOID *Md4Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing MD4 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] Md4Context Pointer to MD4 context being copied. - @param[out] NewMd4Context Pointer to new MD4 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Duplicate ( - IN CONST VOID *Md4Context, - OUT VOID *NewMd4Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates MD4 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Update ( - IN OUT VOID *Md4Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the MD4 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[out] HashValue Pointer to a buffer that receives the MD4 digest - value (16 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Final ( - IN OUT VOID *Md4Context, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Computes the MD4 message digest of a input data buffer. - - Return FALSE to indicate this interface is not supported. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the MD4 digest - value (16 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd5.c b/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd5.c deleted file mode 100644 index ccf6ad0017..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptMd5.c +++ /dev/null @@ -1,231 +0,0 @@ -/** @file - MD5 Digest Wrapper Implementation over OpenSSL. - -Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - - -/** - Retrieves the size, in bytes, of the context buffer required for MD5 hash operations. - - @return The size, in bytes, of the context buffer required for MD5 hash operations. - -**/ -UINTN -EFIAPI -Md5GetContextSize ( - VOID - ) -{ - // - // Retrieves the OpenSSL MD5 Context Size - // - return (UINTN) (sizeof (MD5_CTX)); -} - - -/** - Initializes user-supplied memory pointed by Md5Context as MD5 hash context for - subsequent use. - - If Md5Context is NULL, then return FALSE. - - @param[out] Md5Context Pointer to MD5 context being initialized. - - @retval TRUE MD5 context initialization succeeded. - @retval FALSE MD5 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Md5Init ( - OUT VOID *Md5Context - ) -{ - // - // Check input parameters. - // - if (Md5Context == NULL) { - return FALSE; - } - - // - // OpenSSL MD5 Context Initialization - // - return (BOOLEAN) (MD5_Init ((MD5_CTX *) Md5Context)); -} - -/** - Makes a copy of an existing MD5 context. - - If Md5Context is NULL, then return FALSE. - If NewMd5Context is NULL, then return FALSE. - - @param[in] Md5Context Pointer to MD5 context being copied. - @param[out] NewMd5Context Pointer to new MD5 context. - - @retval TRUE MD5 context copy succeeded. - @retval FALSE MD5 context copy failed. - -**/ -BOOLEAN -EFIAPI -Md5Duplicate ( - IN CONST VOID *Md5Context, - OUT VOID *NewMd5Context - ) -{ - // - // Check input parameters. - // - if (Md5Context == NULL || NewMd5Context == NULL) { - return FALSE; - } - - CopyMem (NewMd5Context, Md5Context, sizeof (MD5_CTX)); - - return TRUE; -} - -/** - Digests the input data and updates MD5 context. - - This function performs MD5 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - MD5 context should be already correctly initialized by Md5Init(), and should not be finalized - by Md5Final(). Behavior with invalid context is undefined. - - If Md5Context is NULL, then return FALSE. - - @param[in, out] Md5Context Pointer to the MD5 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE MD5 data digest succeeded. - @retval FALSE MD5 data digest failed. - -**/ -BOOLEAN -EFIAPI -Md5Update ( - IN OUT VOID *Md5Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (Md5Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && (DataSize != 0)) { - return FALSE; - } - - // - // OpenSSL MD5 Hash Update - // - return (BOOLEAN) (MD5_Update ((MD5_CTX *) Md5Context, Data, DataSize)); -} - -/** - Completes computation of the MD5 digest value. - - This function completes MD5 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the MD5 context cannot - be used again. - MD5 context should be already correctly initialized by Md5Init(), and should not be - finalized by Md5Final(). Behavior with invalid MD5 context is undefined. - - If Md5Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Md5Context Pointer to the MD5 context. - @param[out] HashValue Pointer to a buffer that receives the MD5 digest - value (16 bytes). - - @retval TRUE MD5 digest computation succeeded. - @retval FALSE MD5 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Md5Final ( - IN OUT VOID *Md5Context, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (Md5Context == NULL || HashValue == NULL) { - return FALSE; - } - - // - // OpenSSL MD5 Hash Finalization - // - return (BOOLEAN) (MD5_Final (HashValue, (MD5_CTX *) Md5Context)); -} - -/** - Computes the MD5 message digest of a input data buffer. - - This function performs the MD5 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the MD5 digest - value (16 bytes). - - @retval TRUE MD5 digest computation succeeded. - @retval FALSE MD5 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (HashValue == NULL) { - return FALSE; - } - if (Data == NULL && (DataSize != 0)) { - return FALSE; - } - - // - // OpenSSL MD5 Hash Computation. - // - if (MD5 (Data, DataSize, HashValue) == NULL) { - return FALSE; - } else { - return TRUE; - } -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha1.c b/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha1.c deleted file mode 100644 index 42cfd08a28..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha1.c +++ /dev/null @@ -1,230 +0,0 @@ -/** @file - SHA-1 Digest Wrapper Implementation over OpenSSL. - -Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-1 hash operations. - - @return The size, in bytes, of the context buffer required for SHA-1 hash operations. - -**/ -UINTN -EFIAPI -Sha1GetContextSize ( - VOID - ) -{ - // - // Retrieves OpenSSL SHA Context Size - // - return (UINTN) (sizeof (SHA_CTX)); -} - -/** - Initializes user-supplied memory pointed by Sha1Context as SHA-1 hash context for - subsequent use. - - If Sha1Context is NULL, then return FALSE. - - @param[out] Sha1Context Pointer to SHA-1 context being initialized. - - @retval TRUE SHA-1 context initialization succeeded. - @retval FALSE SHA-1 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha1Init ( - OUT VOID *Sha1Context - ) -{ - // - // Check input parameters. - // - if (Sha1Context == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-1 Context Initialization - // - return (BOOLEAN) (SHA1_Init ((SHA_CTX *) Sha1Context)); -} - -/** - Makes a copy of an existing SHA-1 context. - - If Sha1Context is NULL, then return FALSE. - If NewSha1Context is NULL, then return FALSE. - - @param[in] Sha1Context Pointer to SHA-1 context being copied. - @param[out] NewSha1Context Pointer to new SHA-1 context. - - @retval TRUE SHA-1 context copy succeeded. - @retval FALSE SHA-1 context copy failed. - -**/ -BOOLEAN -EFIAPI -Sha1Duplicate ( - IN CONST VOID *Sha1Context, - OUT VOID *NewSha1Context - ) -{ - // - // Check input parameters. - // - if (Sha1Context == NULL || NewSha1Context == NULL) { - return FALSE; - } - - CopyMem (NewSha1Context, Sha1Context, sizeof (SHA_CTX)); - - return TRUE; -} - -/** - Digests the input data and updates SHA-1 context. - - This function performs SHA-1 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-1 context should be already correctly initialized by Sha1Init(), and should not be finalized - by Sha1Final(). Behavior with invalid context is undefined. - - If Sha1Context is NULL, then return FALSE. - - @param[in, out] Sha1Context Pointer to the SHA-1 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-1 data digest succeeded. - @retval FALSE SHA-1 data digest failed. - -**/ -BOOLEAN -EFIAPI -Sha1Update ( - IN OUT VOID *Sha1Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (Sha1Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-1 Hash Update - // - return (BOOLEAN) (SHA1_Update ((SHA_CTX *) Sha1Context, Data, DataSize)); -} - -/** - Completes computation of the SHA-1 digest value. - - This function completes SHA-1 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-1 context cannot - be used again. - SHA-1 context should be already correctly initialized by Sha1Init(), and should not be - finalized by Sha1Final(). Behavior with invalid SHA-1 context is undefined. - - If Sha1Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha1Context Pointer to the SHA-1 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-1 digest - value (20 bytes). - - @retval TRUE SHA-1 digest computation succeeded. - @retval FALSE SHA-1 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha1Final ( - IN OUT VOID *Sha1Context, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (Sha1Context == NULL || HashValue == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-1 Hash Finalization - // - return (BOOLEAN) (SHA1_Final (HashValue, (SHA_CTX *) Sha1Context)); -} - -/** - Computes the SHA-1 message digest of a input data buffer. - - This function performs the SHA-1 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-1 digest - value (20 bytes). - - @retval TRUE SHA-1 digest computation succeeded. - @retval FALSE SHA-1 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (HashValue == NULL) { - return FALSE; - } - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-1 Hash Computation. - // - if (SHA1 (Data, DataSize, HashValue) == NULL) { - return FALSE; - } else { - return TRUE; - } -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha256.c b/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha256.c deleted file mode 100644 index 06ecb2e980..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha256.c +++ /dev/null @@ -1,229 +0,0 @@ -/** @file - SHA-256 Digest Wrapper Implementation over OpenSSL. - -Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-256 hash operations. - - @return The size, in bytes, of the context buffer required for SHA-256 hash operations. - -**/ -UINTN -EFIAPI -Sha256GetContextSize ( - VOID - ) -{ - // - // Retrieves OpenSSL SHA-256 Context Size - // - return (UINTN) (sizeof (SHA256_CTX)); -} - -/** - Initializes user-supplied memory pointed by Sha256Context as SHA-256 hash context for - subsequent use. - - If Sha256Context is NULL, then return FALSE. - - @param[out] Sha256Context Pointer to SHA-256 context being initialized. - - @retval TRUE SHA-256 context initialization succeeded. - @retval FALSE SHA-256 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha256Init ( - OUT VOID *Sha256Context - ) -{ - // - // Check input parameters. - // - if (Sha256Context == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-256 Context Initialization - // - return (BOOLEAN) (SHA256_Init ((SHA256_CTX *) Sha256Context)); -} - -/** - Makes a copy of an existing SHA-256 context. - - If Sha256Context is NULL, then return FALSE. - If NewSha256Context is NULL, then return FALSE. - - @param[in] Sha256Context Pointer to SHA-256 context being copied. - @param[out] NewSha256Context Pointer to new SHA-256 context. - - @retval TRUE SHA-256 context copy succeeded. - @retval FALSE SHA-256 context copy failed. - -**/ -BOOLEAN -EFIAPI -Sha256Duplicate ( - IN CONST VOID *Sha256Context, - OUT VOID *NewSha256Context - ) -{ - // - // Check input parameters. - // - if (Sha256Context == NULL || NewSha256Context == NULL) { - return FALSE; - } - - CopyMem (NewSha256Context, Sha256Context, sizeof (SHA256_CTX)); - - return TRUE; -} - -/** - Digests the input data and updates SHA-256 context. - - This function performs SHA-256 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-256 context should be already correctly initialized by Sha256Init(), and should not be finalized - by Sha256Final(). Behavior with invalid context is undefined. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-256 data digest succeeded. - @retval FALSE SHA-256 data digest failed. - -**/ -BOOLEAN -EFIAPI -Sha256Update ( - IN OUT VOID *Sha256Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (Sha256Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-256 Hash Update - // - return (BOOLEAN) (SHA256_Update ((SHA256_CTX *) Sha256Context, Data, DataSize)); -} - -/** - Completes computation of the SHA-256 digest value. - - This function completes SHA-256 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-256 context cannot - be used again. - SHA-256 context should be already correctly initialized by Sha256Init(), and should not be - finalized by Sha256Final(). Behavior with invalid SHA-256 context is undefined. - - If Sha256Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha256Final ( - IN OUT VOID *Sha256Context, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (Sha256Context == NULL || HashValue == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-256 Hash Finalization - // - return (BOOLEAN) (SHA256_Final (HashValue, (SHA256_CTX *) Sha256Context)); -} - -/** - Computes the SHA-256 message digest of a input data buffer. - - This function performs the SHA-256 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha256HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (HashValue == NULL) { - return FALSE; - } - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-256 Hash Computation. - // - if (SHA256 (Data, DataSize, HashValue) == NULL) { - return FALSE; - } else { - return TRUE; - } -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512.c b/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512.c deleted file mode 100644 index 3ce372a066..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512.c +++ /dev/null @@ -1,446 +0,0 @@ -/** @file - SHA-384 and SHA-512 Digest Wrapper Implementations over OpenSSL. - -Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-384 hash operations. - - @return The size, in bytes, of the context buffer required for SHA-384 hash operations. - -**/ -UINTN -EFIAPI -Sha384GetContextSize ( - VOID - ) -{ - // - // Retrieves OpenSSL SHA-384 Context Size - // - return (UINTN) (sizeof (SHA512_CTX)); -} - -/** - Initializes user-supplied memory pointed by Sha384Context as SHA-384 hash context for - subsequent use. - - If Sha384Context is NULL, then return FALSE. - - @param[out] Sha384Context Pointer to SHA-384 context being initialized. - - @retval TRUE SHA-384 context initialization succeeded. - @retval FALSE SHA-384 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha384Init ( - OUT VOID *Sha384Context - ) -{ - // - // Check input parameters. - // - if (Sha384Context == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-384 Context Initialization - // - return (BOOLEAN) (SHA384_Init ((SHA512_CTX *) Sha384Context)); -} - -/** - Makes a copy of an existing SHA-384 context. - - If Sha384Context is NULL, then return FALSE. - If NewSha384Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Sha384Context Pointer to SHA-384 context being copied. - @param[out] NewSha384Context Pointer to new SHA-384 context. - - @retval TRUE SHA-384 context copy succeeded. - @retval FALSE SHA-384 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384Duplicate ( - IN CONST VOID *Sha384Context, - OUT VOID *NewSha384Context - ) -{ - // - // Check input parameters. - // - if (Sha384Context == NULL || NewSha384Context == NULL) { - return FALSE; - } - - CopyMem (NewSha384Context, Sha384Context, sizeof (SHA512_CTX)); - - return TRUE; -} - -/** - Digests the input data and updates SHA-384 context. - - This function performs SHA-384 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-384 context should be already correctly initialized by Sha384Init(), and should not be finalized - by Sha384Final(). Behavior with invalid context is undefined. - - If Sha384Context is NULL, then return FALSE. - - @param[in, out] Sha384Context Pointer to the SHA-384 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-384 data digest succeeded. - @retval FALSE SHA-384 data digest failed. - -**/ -BOOLEAN -EFIAPI -Sha384Update ( - IN OUT VOID *Sha384Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (Sha384Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-384 Hash Update - // - return (BOOLEAN) (SHA384_Update ((SHA512_CTX *) Sha384Context, Data, DataSize)); -} - -/** - Completes computation of the SHA-384 digest value. - - This function completes SHA-384 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-384 context cannot - be used again. - SHA-384 context should be already correctly initialized by Sha384Init(), and should not be - finalized by Sha384Final(). Behavior with invalid SHA-384 context is undefined. - - If Sha384Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha384Context Pointer to the SHA-384 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-384 digest - value (48 bytes). - - @retval TRUE SHA-384 digest computation succeeded. - @retval FALSE SHA-384 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha384Final ( - IN OUT VOID *Sha384Context, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (Sha384Context == NULL || HashValue == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-384 Hash Finalization - // - return (BOOLEAN) (SHA384_Final (HashValue, (SHA512_CTX *) Sha384Context)); -} - -/** - Computes the SHA-384 message digest of a input data buffer. - - This function performs the SHA-384 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-384 digest - value (48 bytes). - - @retval TRUE SHA-384 digest computation succeeded. - @retval FALSE SHA-384 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (HashValue == NULL) { - return FALSE; - } - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-384 Hash Computation. - // - if (SHA384 (Data, DataSize, HashValue) == NULL) { - return FALSE; - } else { - return TRUE; - } -} - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-512 hash operations. - - @return The size, in bytes, of the context buffer required for SHA-512 hash operations. - -**/ -UINTN -EFIAPI -Sha512GetContextSize ( - VOID - ) -{ - // - // Retrieves OpenSSL SHA-512 Context Size - // - return (UINTN) (sizeof (SHA512_CTX)); -} - -/** - Initializes user-supplied memory pointed by Sha512Context as SHA-512 hash context for - subsequent use. - - If Sha512Context is NULL, then return FALSE. - - @param[out] Sha512Context Pointer to SHA-512 context being initialized. - - @retval TRUE SHA-512 context initialization succeeded. - @retval FALSE SHA-512 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha512Init ( - OUT VOID *Sha512Context - ) -{ - // - // Check input parameters. - // - if (Sha512Context == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-512 Context Initialization - // - return (BOOLEAN) (SHA512_Init ((SHA512_CTX *) Sha512Context)); -} - -/** - Makes a copy of an existing SHA-512 context. - - If Sha512Context is NULL, then return FALSE. - If NewSha512Context is NULL, then return FALSE. - If this interface is not supported, then return FALSE. - - @param[in] Sha512Context Pointer to SHA-512 context being copied. - @param[out] NewSha512Context Pointer to new SHA-512 context. - - @retval TRUE SHA-512 context copy succeeded. - @retval FALSE SHA-512 context copy failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512Duplicate ( - IN CONST VOID *Sha512Context, - OUT VOID *NewSha512Context - ) -{ - // - // Check input parameters. - // - if (Sha512Context == NULL || NewSha512Context == NULL) { - return FALSE; - } - - CopyMem (NewSha512Context, Sha512Context, sizeof (SHA512_CTX)); - - return TRUE; -} - -/** - Digests the input data and updates SHA-512 context. - - This function performs SHA-512 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - SHA-512 context should be already correctly initialized by Sha512Init(), and should not be finalized - by Sha512Final(). Behavior with invalid context is undefined. - - If Sha512Context is NULL, then return FALSE. - - @param[in, out] Sha512Context Pointer to the SHA-512 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE SHA-512 data digest succeeded. - @retval FALSE SHA-512 data digest failed. - -**/ -BOOLEAN -EFIAPI -Sha512Update ( - IN OUT VOID *Sha512Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (Sha512Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-512 Hash Update - // - return (BOOLEAN) (SHA512_Update ((SHA512_CTX *) Sha512Context, Data, DataSize)); -} - -/** - Completes computation of the SHA-512 digest value. - - This function completes SHA-512 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the SHA-512 context cannot - be used again. - SHA-512 context should be already correctly initialized by Sha512Init(), and should not be - finalized by Sha512Final(). Behavior with invalid SHA-512 context is undefined. - - If Sha512Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha512Context Pointer to the SHA-512 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-512 digest - value (64 bytes). - - @retval TRUE SHA-512 digest computation succeeded. - @retval FALSE SHA-512 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha512Final ( - IN OUT VOID *Sha512Context, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (Sha512Context == NULL || HashValue == NULL) { - return FALSE; - } - - // - // OpenSSL SHA-512 Hash Finalization - // - return (BOOLEAN) (SHA384_Final (HashValue, (SHA512_CTX *) Sha512Context)); -} - -/** - Computes the SHA-512 message digest of a input data buffer. - - This function performs the SHA-512 message digest of a given data buffer, and places - the digest value into the specified memory. - - If this interface is not supported, then return FALSE. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-512 digest - value (64 bytes). - - @retval TRUE SHA-512 digest computation succeeded. - @retval FALSE SHA-512 digest computation failed. - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - // - // Check input parameters. - // - if (HashValue == NULL) { - return FALSE; - } - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL SHA-512 Hash Computation. - // - if (SHA512 (Data, DataSize, HashValue) == NULL) { - return FALSE; - } else { - return TRUE; - } -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512Null.c deleted file mode 100644 index 8cd754f358..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hash/CryptSha512Null.c +++ /dev/null @@ -1,281 +0,0 @@ -/** @file - SHA-384 and SHA-512 Digest Wrapper Implementations which does not provide real capabilities. - -Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-384 hash operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Sha384GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory pointed by Sha384Context as SHA-384 hash context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Sha384Context Pointer to SHA-384 context being initialized. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384Init ( - OUT VOID *Sha384Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing SHA-384 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] Sha384Context Pointer to SHA-384 context being copied. - @param[out] NewSha384Context Pointer to new SHA-384 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384Duplicate ( - IN CONST VOID *Sha384Context, - OUT VOID *NewSha384Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates SHA-384 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Sha384Context Pointer to the SHA-384 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384Update ( - IN OUT VOID *Sha384Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the SHA-384 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Sha384Context Pointer to the SHA-384 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-384 digest - value (48 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384Final ( - IN OUT VOID *Sha384Context, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Computes the SHA-384 message digest of a input data buffer. - - Return FALSE to indicate this interface is not supported. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-384 digest - value (48 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha384HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-512 hash operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Sha512GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory pointed by Sha512Context as SHA-512 hash context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Sha512Context Pointer to SHA-512 context being initialized. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512Init ( - OUT VOID *Sha512Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing SHA-512 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] Sha512Context Pointer to SHA-512 context being copied. - @param[out] NewSha512Context Pointer to new SHA-512 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512Duplicate ( - IN CONST VOID *Sha512Context, - OUT VOID *NewSha512Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates SHA-512 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Sha512Context Pointer to the SHA-512 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512Update ( - IN OUT VOID *Sha512Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the SHA-512 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Sha512Context Pointer to the SHA-512 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-512 digest - value (64 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512Final ( - IN OUT VOID *Sha512Context, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Computes the SHA-512 message digest of a input data buffer. - - Return FALSE to indicate this interface is not supported. - - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - @param[out] HashValue Pointer to a buffer that receives the SHA-512 digest - value (64 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha512HashAll ( - IN CONST VOID *Data, - IN UINTN DataSize, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5.c b/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5.c deleted file mode 100644 index ff7b8e5466..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5.c +++ /dev/null @@ -1,256 +0,0 @@ -/** @file - HMAC-MD5 Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -#define HMAC_MD5_CTX_SIZE sizeof(void *) * 4 + sizeof(unsigned int) + \ - sizeof(unsigned char) * HMAC_MAX_MD_CBLOCK - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-MD5 operations. - (NOTE: This API is deprecated. - Use HmacMd5New() / HmacMd5Free() for HMAC-MD5 Context operations.) - - @return The size, in bytes, of the context buffer required for HMAC-MD5 operations. - -**/ -UINTN -EFIAPI -HmacMd5GetContextSize ( - VOID - ) -{ - // - // Retrieves the OpenSSL HMAC-MD5 Context Size - // NOTE: HMAC_CTX object was made opaque in openssl-1.1.x, here we just use the - // fixed size as a workaround to make this API work for compatibility. - // We should retire HmacMd5GetContextSize() in future, and use HmacMd5New() - // and HmacMd5Free() for context allocation and release. - // - return (UINTN) HMAC_MD5_CTX_SIZE; -} - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-MD5 use. - - @return Pointer to the HMAC_CTX context that has been initialized. - If the allocations fails, HmacMd5New() returns NULL. - -**/ -VOID * -EFIAPI -HmacMd5New ( - VOID - ) -{ - // - // Allocates & Initializes HMAC_CTX Context by OpenSSL HMAC_CTX_new() - // - return (VOID *) HMAC_CTX_new (); -} - -/** - Release the specified HMAC_CTX context. - - @param[in] HmacMd5Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacMd5Free ( - IN VOID *HmacMd5Ctx - ) -{ - // - // Free OpenSSL HMAC_CTX Context - // - HMAC_CTX_free ((HMAC_CTX *)HmacMd5Ctx); -} - -/** - Initializes user-supplied memory pointed by HmacMd5Context as HMAC-MD5 context for - subsequent use. - - If HmacMd5Context is NULL, then return FALSE. - - @param[out] HmacMd5Context Pointer to HMAC-MD5 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval TRUE HMAC-MD5 context initialization succeeded. - @retval FALSE HMAC-MD5 context initialization failed. - -**/ -BOOLEAN -EFIAPI -HmacMd5Init ( - OUT VOID *HmacMd5Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - // - // Check input parameters. - // - if (HmacMd5Context == NULL || KeySize > INT_MAX) { - return FALSE; - } - - // - // OpenSSL HMAC-MD5 Context Initialization - // - memset(HmacMd5Context, 0, HMAC_MD5_CTX_SIZE); - if (HMAC_CTX_reset ((HMAC_CTX *)HmacMd5Context) != 1) { - return FALSE; - } - if (HMAC_Init_ex ((HMAC_CTX *)HmacMd5Context, Key, (UINT32) KeySize, EVP_md5(), NULL) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Makes a copy of an existing HMAC-MD5 context. - - If HmacMd5Context is NULL, then return FALSE. - If NewHmacMd5Context is NULL, then return FALSE. - - @param[in] HmacMd5Context Pointer to HMAC-MD5 context being copied. - @param[out] NewHmacMd5Context Pointer to new HMAC-MD5 context. - - @retval TRUE HMAC-MD5 context copy succeeded. - @retval FALSE HMAC-MD5 context copy failed. - -**/ -BOOLEAN -EFIAPI -HmacMd5Duplicate ( - IN CONST VOID *HmacMd5Context, - OUT VOID *NewHmacMd5Context - ) -{ - // - // Check input parameters. - // - if (HmacMd5Context == NULL || NewHmacMd5Context == NULL) { - return FALSE; - } - - if (HMAC_CTX_copy ((HMAC_CTX *)NewHmacMd5Context, (HMAC_CTX *)HmacMd5Context) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Digests the input data and updates HMAC-MD5 context. - - This function performs HMAC-MD5 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - HMAC-MD5 context should be already correctly initialized by HmacMd5Init(), and should not be - finalized by HmacMd5Final(). Behavior with invalid context is undefined. - - If HmacMd5Context is NULL, then return FALSE. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE HMAC-MD5 data digest succeeded. - @retval FALSE HMAC-MD5 data digest failed. - -**/ -BOOLEAN -EFIAPI -HmacMd5Update ( - IN OUT VOID *HmacMd5Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (HmacMd5Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL HMAC-MD5 digest update - // - if (HMAC_Update ((HMAC_CTX *)HmacMd5Context, Data, DataSize) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Completes computation of the HMAC-MD5 digest value. - - This function completes HMAC-MD5 digest computation and retrieves the digest value into - the specified memory. After this function has been called, the HMAC-MD5 context cannot - be used again. - HMAC-MD5 context should be already correctly initialized by HmacMd5Init(), and should not be - finalized by HmacMd5Final(). Behavior with invalid HMAC-MD5 context is undefined. - - If HmacMd5Context is NULL, then return FALSE. - If HmacValue is NULL, then return FALSE. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-MD5 digest - value (16 bytes). - - @retval TRUE HMAC-MD5 digest computation succeeded. - @retval FALSE HMAC-MD5 digest computation failed. - -**/ -BOOLEAN -EFIAPI -HmacMd5Final ( - IN OUT VOID *HmacMd5Context, - OUT UINT8 *HmacValue - ) -{ - UINT32 Length; - - // - // Check input parameters. - // - if (HmacMd5Context == NULL || HmacValue == NULL) { - return FALSE; - } - - // - // OpenSSL HMAC-MD5 digest finalization - // - if (HMAC_Final ((HMAC_CTX *)HmacMd5Context, HmacValue, &Length) != 1) { - return FALSE; - } - if (HMAC_CTX_reset ((HMAC_CTX *)HmacMd5Context) != 1) { - return FALSE; - } - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5Null.c deleted file mode 100644 index bfe68ab916..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacMd5Null.c +++ /dev/null @@ -1,165 +0,0 @@ -/** @file - HMAC-MD5 Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-MD5 operations. - (NOTE: This API is deprecated. - Use HmacMd5New() / HmacMd5Free() for HMAC-MD5 Context operations.) - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacMd5GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-MD5 use. - - Return NULL to indicate this interface is not supported. - - @retval NULL This interface is not supported. - -**/ -VOID * -EFIAPI -HmacMd5New ( - VOID - ) -{ - ASSERT (FALSE); - return NULL; -} - -/** - Release the specified HMAC_CTX context. - - This function will do nothing. - - @param[in] HmacMd5Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacMd5Free ( - IN VOID *HmacMd5Ctx - ) -{ - ASSERT (FALSE); - return; -} - -/** - Initializes user-supplied memory pointed by HmacMd5Context as HMAC-MD5 context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] HmacMd5Context Pointer to HMAC-MD5 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Init ( - OUT VOID *HmacMd5Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing HMAC-MD5 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] HmacMd5Context Pointer to HMAC-MD5 context being copied. - @param[out] NewHmacMd5Context Pointer to new HMAC-MD5 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Duplicate ( - IN CONST VOID *HmacMd5Context, - OUT VOID *NewHmacMd5Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates HMAC-MD5 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Update ( - IN OUT VOID *HmacMd5Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the HMAC-MD5 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-MD5 digest - value (16 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Final ( - IN OUT VOID *HmacMd5Context, - OUT UINT8 *HmacValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1.c b/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1.c deleted file mode 100644 index 09c5867d53..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1.c +++ /dev/null @@ -1,256 +0,0 @@ -/** @file - HMAC-SHA1 Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -#define HMAC_SHA1_CTX_SIZE sizeof(void *) * 4 + sizeof(unsigned int) + \ - sizeof(unsigned char) * HMAC_MAX_MD_CBLOCK - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-SHA1 operations. - (NOTE: This API is deprecated. - Use HmacSha1New() / HmacSha1Free() for HMAC-SHA1 Context operations.) - - @return The size, in bytes, of the context buffer required for HMAC-SHA1 operations. - -**/ -UINTN -EFIAPI -HmacSha1GetContextSize ( - VOID - ) -{ - // - // Retrieves the OpenSSL HMAC-SHA1 Context Size - // NOTE: HMAC_CTX object was made opaque in openssl-1.1.x, here we just use the - // fixed size as a workaround to make this API work for compatibility. - // We should retire HmacSha15GetContextSize() in future, and use HmacSha1New() - // and HmacSha1Free() for context allocation and release. - // - return (UINTN) HMAC_SHA1_CTX_SIZE; -} - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA1 use. - - @return Pointer to the HMAC_CTX context that has been initialized. - If the allocations fails, HmacSha1New() returns NULL. - -**/ -VOID * -EFIAPI -HmacSha1New ( - VOID - ) -{ - // - // Allocates & Initializes HMAC_CTX Context by OpenSSL HMAC_CTX_new() - // - return (VOID *) HMAC_CTX_new (); -} - -/** - Release the specified HMAC_CTX context. - - @param[in] HmacSha1Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacSha1Free ( - IN VOID *HmacSha1Ctx - ) -{ - // - // Free OpenSSL HMAC_CTX Context - // - HMAC_CTX_free ((HMAC_CTX *)HmacSha1Ctx); -} - -/** - Initializes user-supplied memory pointed by HmacSha1Context as HMAC-SHA1 context for - subsequent use. - - If HmacSha1Context is NULL, then return FALSE. - - @param[out] HmacSha1Context Pointer to HMAC-SHA1 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval TRUE HMAC-SHA1 context initialization succeeded. - @retval FALSE HMAC-SHA1 context initialization failed. - -**/ -BOOLEAN -EFIAPI -HmacSha1Init ( - OUT VOID *HmacSha1Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - // - // Check input parameters. - // - if (HmacSha1Context == NULL || KeySize > INT_MAX) { - return FALSE; - } - - // - // OpenSSL HMAC-SHA1 Context Initialization - // - memset(HmacSha1Context, 0, HMAC_SHA1_CTX_SIZE); - if (HMAC_CTX_reset ((HMAC_CTX *)HmacSha1Context) != 1) { - return FALSE; - } - if (HMAC_Init_ex ((HMAC_CTX *)HmacSha1Context, Key, (UINT32) KeySize, EVP_sha1(), NULL) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Makes a copy of an existing HMAC-SHA1 context. - - If HmacSha1Context is NULL, then return FALSE. - If NewHmacSha1Context is NULL, then return FALSE. - - @param[in] HmacSha1Context Pointer to HMAC-SHA1 context being copied. - @param[out] NewHmacSha1Context Pointer to new HMAC-SHA1 context. - - @retval TRUE HMAC-SHA1 context copy succeeded. - @retval FALSE HMAC-SHA1 context copy failed. - -**/ -BOOLEAN -EFIAPI -HmacSha1Duplicate ( - IN CONST VOID *HmacSha1Context, - OUT VOID *NewHmacSha1Context - ) -{ - // - // Check input parameters. - // - if (HmacSha1Context == NULL || NewHmacSha1Context == NULL) { - return FALSE; - } - - if (HMAC_CTX_copy ((HMAC_CTX *)NewHmacSha1Context, (HMAC_CTX *)HmacSha1Context) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Digests the input data and updates HMAC-SHA1 context. - - This function performs HMAC-SHA1 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - HMAC-SHA1 context should be already correctly initialized by HmacSha1Init(), and should not - be finalized by HmacSha1Final(). Behavior with invalid context is undefined. - - If HmacSha1Context is NULL, then return FALSE. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE HMAC-SHA1 data digest succeeded. - @retval FALSE HMAC-SHA1 data digest failed. - -**/ -BOOLEAN -EFIAPI -HmacSha1Update ( - IN OUT VOID *HmacSha1Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (HmacSha1Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL HMAC-SHA1 digest update - // - if (HMAC_Update ((HMAC_CTX *)HmacSha1Context, Data, DataSize) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Completes computation of the HMAC-SHA1 digest value. - - This function completes HMAC-SHA1 digest computation and retrieves the digest value into - the specified memory. After this function has been called, the HMAC-SHA1 context cannot - be used again. - HMAC-SHA1 context should be already correctly initialized by HmacSha1Init(), and should - not be finalized by HmacSha1Final(). Behavior with invalid HMAC-SHA1 context is undefined. - - If HmacSha1Context is NULL, then return FALSE. - If HmacValue is NULL, then return FALSE. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-SHA1 digest - value (20 bytes). - - @retval TRUE HMAC-SHA1 digest computation succeeded. - @retval FALSE HMAC-SHA1 digest computation failed. - -**/ -BOOLEAN -EFIAPI -HmacSha1Final ( - IN OUT VOID *HmacSha1Context, - OUT UINT8 *HmacValue - ) -{ - UINT32 Length; - - // - // Check input parameters. - // - if (HmacSha1Context == NULL || HmacValue == NULL) { - return FALSE; - } - - // - // OpenSSL HMAC-SHA1 digest finalization - // - if (HMAC_Final ((HMAC_CTX *)HmacSha1Context, HmacValue, &Length) != 1) { - return FALSE; - } - if (HMAC_CTX_reset ((HMAC_CTX *)HmacSha1Context) != 1) { - return FALSE; - } - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1Null.c deleted file mode 100644 index 466c4885c3..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha1Null.c +++ /dev/null @@ -1,165 +0,0 @@ -/** @file - HMAC-SHA1 Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-SHA1 operations. - (NOTE: This API is deprecated. - Use HmacSha1New() / HmacSha1Free() for HMAC-SHA1 Context operations.) - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacSha1GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA1 use. - - Return NULL to indicate this interface is not supported. - - @return NULL This interface is not supported.. - -**/ -VOID * -EFIAPI -HmacSha1New ( - VOID - ) -{ - ASSERT (FALSE); - return NULL; -} - -/** - Release the specified HMAC_CTX context. - - This function will do nothing. - - @param[in] HmacSha1Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacSha1Free ( - IN VOID *HmacSha1Ctx - ) -{ - ASSERT (FALSE); - return; -} - -/** - Initializes user-supplied memory pointed by HmacSha1Context as HMAC-SHA1 context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] HmacSha1Context Pointer to HMAC-SHA1 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Init ( - OUT VOID *HmacSha1Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing HMAC-SHA1 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] HmacSha1Context Pointer to HMAC-SHA1 context being copied. - @param[out] NewHmacSha1Context Pointer to new HMAC-SHA1 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Duplicate ( - IN CONST VOID *HmacSha1Context, - OUT VOID *NewHmacSha1Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates HMAC-SHA1 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Update ( - IN OUT VOID *HmacSha1Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the HMAC-SHA1 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-SHA1 digest - value (20 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Final ( - IN OUT VOID *HmacSha1Context, - OUT UINT8 *HmacValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256.c b/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256.c deleted file mode 100644 index d6b3ae4883..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256.c +++ /dev/null @@ -1,256 +0,0 @@ -/** @file - HMAC-SHA256 Wrapper Implementation over OpenSSL. - -Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -#define HMAC_SHA256_CTX_SIZE sizeof(void *) * 4 + sizeof(unsigned int) + \ - sizeof(unsigned char) * HMAC_MAX_MD_CBLOCK - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-SHA256 operations. - (NOTE: This API is deprecated. - Use HmacSha256New() / HmacSha256Free() for HMAC-SHA256 Context operations.) - - @return The size, in bytes, of the context buffer required for HMAC-SHA256 operations. - -**/ -UINTN -EFIAPI -HmacSha256GetContextSize ( - VOID - ) -{ - // - // Retrieves the OpenSSL HMAC-SHA256 Context Size - // NOTE: HMAC_CTX object was made opaque in openssl-1.1.x, here we just use the - // fixed size as a workaround to make this API work for compatibility. - // We should retire HmacSha256GetContextSize() in future, and use HmacSha256New() - // and HmacSha256Free() for context allocation and release. - // - return (UINTN)HMAC_SHA256_CTX_SIZE; -} - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA256 use. - - @return Pointer to the HMAC_CTX context that has been initialized. - If the allocations fails, HmacSha256New() returns NULL. - -**/ -VOID * -EFIAPI -HmacSha256New ( - VOID - ) -{ - // - // Allocates & Initializes HMAC_CTX Context by OpenSSL HMAC_CTX_new() - // - return (VOID *) HMAC_CTX_new (); -} - -/** - Release the specified HMAC_CTX context. - - @param[in] HmacSha256Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacSha256Free ( - IN VOID *HmacSha256Ctx - ) -{ - // - // Free OpenSSL HMAC_CTX Context - // - HMAC_CTX_free ((HMAC_CTX *)HmacSha256Ctx); -} - -/** - Initializes user-supplied memory pointed by HmacSha256Context as HMAC-SHA256 context for - subsequent use. - - If HmacSha256Context is NULL, then return FALSE. - - @param[out] HmacSha256Context Pointer to HMAC-SHA256 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval TRUE HMAC-SHA256 context initialization succeeded. - @retval FALSE HMAC-SHA256 context initialization failed. - -**/ -BOOLEAN -EFIAPI -HmacSha256Init ( - OUT VOID *HmacSha256Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - // - // Check input parameters. - // - if (HmacSha256Context == NULL || KeySize > INT_MAX) { - return FALSE; - } - - // - // OpenSSL HMAC-SHA256 Context Initialization - // - memset(HmacSha256Context, 0, HMAC_SHA256_CTX_SIZE); - if (HMAC_CTX_reset ((HMAC_CTX *)HmacSha256Context) != 1) { - return FALSE; - } - if (HMAC_Init_ex ((HMAC_CTX *)HmacSha256Context, Key, (UINT32) KeySize, EVP_sha256(), NULL) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Makes a copy of an existing HMAC-SHA256 context. - - If HmacSha256Context is NULL, then return FALSE. - If NewHmacSha256Context is NULL, then return FALSE. - - @param[in] HmacSha256Context Pointer to HMAC-SHA256 context being copied. - @param[out] NewHmacSha256Context Pointer to new HMAC-SHA256 context. - - @retval TRUE HMAC-SHA256 context copy succeeded. - @retval FALSE HMAC-SHA256 context copy failed. - -**/ -BOOLEAN -EFIAPI -HmacSha256Duplicate ( - IN CONST VOID *HmacSha256Context, - OUT VOID *NewHmacSha256Context - ) -{ - // - // Check input parameters. - // - if (HmacSha256Context == NULL || NewHmacSha256Context == NULL) { - return FALSE; - } - - if (HMAC_CTX_copy ((HMAC_CTX *)NewHmacSha256Context, (HMAC_CTX *)HmacSha256Context) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Digests the input data and updates HMAC-SHA256 context. - - This function performs HMAC-SHA256 digest on a data buffer of the specified size. - It can be called multiple times to compute the digest of long or discontinuous data streams. - HMAC-SHA256 context should be already correctly initialized by HmacSha256Init(), and should not - be finalized by HmacSha256Final(). Behavior with invalid context is undefined. - - If HmacSha256Context is NULL, then return FALSE. - - @param[in, out] HmacSha256Context Pointer to the HMAC-SHA256 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval TRUE HMAC-SHA256 data digest succeeded. - @retval FALSE HMAC-SHA256 data digest failed. - -**/ -BOOLEAN -EFIAPI -HmacSha256Update ( - IN OUT VOID *HmacSha256Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - // - // Check input parameters. - // - if (HmacSha256Context == NULL) { - return FALSE; - } - - // - // Check invalid parameters, in case that only DataLength was checked in OpenSSL - // - if (Data == NULL && DataSize != 0) { - return FALSE; - } - - // - // OpenSSL HMAC-SHA256 digest update - // - if (HMAC_Update ((HMAC_CTX *)HmacSha256Context, Data, DataSize) != 1) { - return FALSE; - } - - return TRUE; -} - -/** - Completes computation of the HMAC-SHA256 digest value. - - This function completes HMAC-SHA256 hash computation and retrieves the digest value into - the specified memory. After this function has been called, the HMAC-SHA256 context cannot - be used again. - HMAC-SHA256 context should be already correctly initialized by HmacSha256Init(), and should - not be finalized by HmacSha256Final(). Behavior with invalid HMAC-SHA256 context is undefined. - - If HmacSha256Context is NULL, then return FALSE. - If HmacValue is NULL, then return FALSE. - - @param[in, out] HmacSha256Context Pointer to the HMAC-SHA256 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-SHA256 digest - value (32 bytes). - - @retval TRUE HMAC-SHA256 digest computation succeeded. - @retval FALSE HMAC-SHA256 digest computation failed. - -**/ -BOOLEAN -EFIAPI -HmacSha256Final ( - IN OUT VOID *HmacSha256Context, - OUT UINT8 *HmacValue - ) -{ - UINT32 Length; - - // - // Check input parameters. - // - if (HmacSha256Context == NULL || HmacValue == NULL) { - return FALSE; - } - - // - // OpenSSL HMAC-SHA256 digest finalization - // - if (HMAC_Final ((HMAC_CTX *)HmacSha256Context, HmacValue, &Length) != 1) { - return FALSE; - } - if (HMAC_CTX_reset ((HMAC_CTX *)HmacSha256Context) != 1) { - return FALSE; - } - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256Null.c deleted file mode 100644 index 1696fa1eb9..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Hmac/CryptHmacSha256Null.c +++ /dev/null @@ -1,165 +0,0 @@ -/** @file - HMAC-SHA256 Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-SHA256 operations. - (NOTE: This API is deprecated. - Use HmacSha256New() / HmacSha256Free() for HMAC-SHA256 Context operations.) - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacSha256GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA256 use. - - Return NULL to indicate this interface is not supported. - - @return NULL This interface is not supported.. - -**/ -VOID * -EFIAPI -HmacSha256New ( - VOID - ) -{ - ASSERT (FALSE); - return NULL; -} - -/** - Release the specified HMAC_CTX context. - - This function will do nothing. - - @param[in] HmacSha256Ctx Pointer to the HMAC_CTX context to be released. - -**/ -VOID -EFIAPI -HmacSha256Free ( - IN VOID *HmacSha256Ctx - ) -{ - ASSERT (FALSE); - return; -} - -/** - Initializes user-supplied memory pointed by HmacSha256Context as HMAC-SHA256 context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] HmacSha256Context Pointer to HMAC-SHA256 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Init ( - OUT VOID *HmacSha256Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing HMAC-SHA256 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] HmacSha256Context Pointer to HMAC-SHA256 context being copied. - @param[out] NewHmacSha256Context Pointer to new HMAC-SHA256 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Duplicate ( - IN CONST VOID *HmacSha256Context, - OUT VOID *NewHmacSha256Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates HMAC-SHA256 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacSha256Context Pointer to the HMAC-SHA256 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Update ( - IN OUT VOID *HmacSha256Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the HMAC-SHA256 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacSha256Context Pointer to the HMAC-SHA256 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-SHA256 digest - value (32 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha256Final ( - IN OUT VOID *HmacSha256Context, - OUT UINT8 *HmacValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/InternalCryptLib.h b/Core/CryptoPkg/Library/BaseCryptLib/InternalCryptLib.h deleted file mode 100644 index 8cccf72567..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/InternalCryptLib.h +++ /dev/null @@ -1,36 +0,0 @@ -/** @file - Internal include file for BaseCryptLib. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __INTERNAL_CRYPT_LIB_H__ -#define __INTERNAL_CRYPT_LIB_H__ - -#undef _WIN32 -#undef _WIN64 - -#include -#include -#include -#include -#include - -#include "CrtLibSupport.h" - -#include - -#if OPENSSL_VERSION_NUMBER < 0x10100000L -#define OBJ_get0_data(o) ((o)->data) -#define OBJ_length(o) ((o)->length) -#endif - -#endif diff --git a/Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf b/Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf deleted file mode 100644 index f1f709ef6d..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf +++ /dev/null @@ -1,100 +0,0 @@ -## @file -# Cryptographic Library Instance for PEIM. -# -# Caution: This module requires additional review when modified. -# This library will have external input - signature. -# This external input must be validated carefully to avoid security issues such as -# buffer overflow or integer overflow. -# -# Note: MD4 Digest functions, SHA-384 Digest functions, SHA-512 Digest functions, -# HMAC-MD5 functions, HMAC-SHA1/SHA256 functions, AES/TDES/ARC4 functions, RSA external -# functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, X.509 -# certificate handler functions, authenticode signature verification functions, -# PEM handler functions, and pseudorandom number generator functions are not -# supported in this instance. -# -# Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PeiCryptLib - MODULE_UNI_FILE = PeiCryptLib.uni - FILE_GUID = 9a2a4375-194c-4e97-9f67-547ec98d96ca - MODULE_TYPE = PEIM - VERSION_STRING = 1.0 - LIBRARY_CLASS = BaseCryptLib|PEIM PEI_CORE - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 -# - -[Sources] - Hash/CryptMd4Null.c - Hash/CryptMd5.c - Hash/CryptSha1.c - Hash/CryptSha256.c - Hash/CryptSha512Null.c - Hmac/CryptHmacMd5Null.c - Hmac/CryptHmacSha1Null.c - Hmac/CryptHmacSha256Null.c - Cipher/CryptAesNull.c - Cipher/CryptTdesNull.c - Cipher/CryptArc4Null.c - - Pk/CryptRsaBasic.c - Pk/CryptRsaExtNull.c - Pk/CryptPkcs5Pbkdf2Null.c - Pk/CryptPkcs7SignNull.c - Pk/CryptPkcs7Verify.c - - Pk/CryptDhNull.c - Pk/CryptX509Null.c - Pk/CryptAuthenticodeNull.c - Pk/CryptTsNull.c - Pem/CryptPemNull.c - - Rand/CryptRandNull.c - - SysCall/CrtWrapper.c - SysCall/ConstantTimeClock.c - SysCall/BaseMemAllocation.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - BaseLib - BaseMemoryLib - MemoryAllocationLib - DebugLib - OpensslLib - IntrinsicLib - -# -# Remove these [BuildOptions] after this library is cleaned up -# -[BuildOptions] - # - # suppress the following warnings so we do not break the build with warnings-as-errors: - # C4090: 'function' : different 'const' qualifiers - # C4718: 'function call' : recursive call has no side effects, deleting - # - MSFT:*_*_*_CC_FLAGS = /wd4090 /wd4718 - - GCC:*_GCC44_IA32_CC_FLAGS = "-D__cdecl=__attribute__((cdecl))" "-D__declspec(t)=__attribute__((t))" - - # -JCryptoPkg/Include : To disable the use of the system includes provided by RVCT - # --diag_remark=1 : Reduce severity of "#1-D: last line of file ends without a newline" - RVCT:*_*_ARM_CC_FLAGS = -JCryptoPkg/Include --diag_remark=1 diff --git a/Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni b/Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni deleted file mode 100644 index 41fdbbd2cd..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.uni +++ /dev/null @@ -1,31 +0,0 @@ -// /** @file -// Cryptographic Library Instance for PEIM. -// -// Caution: This module requires additional review when modified. -// This library will have external input - signature. -// This external input must be validated carefully to avoid security issues such as -// buffer overflow or integer overflow. -// -// Note: MD4 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/ -// TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign functions, -// Diffie-Hellman functions, X.509 certificate handler functions, authenticode -// signature verification functions, PEM handler functions, and pseudorandom number -// generator functions are not supported in this instance. -// -// Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Cryptographic Library Instance for PEIM" - -#string STR_MODULE_DESCRIPTION #language en-US "Caution: This module requires additional review when modified. This library will have external input - signature. This external input must be validated carefully to avoid security issues such as buffer overflow or integer overflow. Note: MD4 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/ TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, X.509 certificate handler functions, authenticode signature verification functions, PEM handler functions, and pseudorandom number generator functions are not supported in this instance." - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPem.c b/Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPem.c deleted file mode 100644 index 51e648b736..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPem.c +++ /dev/null @@ -1,135 +0,0 @@ -/** @file - PEM (Privacy Enhanced Mail) Format Handler Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include - -/** - Callback function for password phrase conversion used for retrieving the encrypted PEM. - - @param[out] Buf Pointer to the buffer to write the passphrase to. - @param[in] Size Maximum length of the passphrase (i.e. the size of Buf). - @param[in] Flag A flag which is set to 0 when reading and 1 when writing. - @param[in] Key Key data to be passed to the callback routine. - - @retval The number of characters in the passphrase or 0 if an error occurred. - -**/ -INTN -PasswordCallback ( - OUT CHAR8 *Buf, - IN INTN Size, - IN INTN Flag, - IN VOID *Key - ) -{ - INTN KeyLength; - - ZeroMem ((VOID *) Buf, (UINTN) Size); - if (Key != NULL) { - // - // Duplicate key phrase directly. - // - KeyLength = (INTN) AsciiStrLen ((CHAR8 *)Key); - KeyLength = (KeyLength > Size ) ? Size : KeyLength; - CopyMem (Buf, Key, (UINTN) KeyLength); - return KeyLength; - } else { - return 0; - } -} - -/** - Retrieve the RSA Private Key from the password-protected PEM key data. - - @param[in] PemData Pointer to the PEM-encoded key data to be retrieved. - @param[in] PemSize Size of the PEM key data in bytes. - @param[in] Password NULL-terminated passphrase used for encrypted PEM key data. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA private key component. Use RsaFree() function to free the - resource. - - If PemData is NULL, then return FALSE. - If RsaContext is NULL, then return FALSE. - - @retval TRUE RSA Private Key was retrieved successfully. - @retval FALSE Invalid PEM key data or incorrect password. - -**/ -BOOLEAN -EFIAPI -RsaGetPrivateKeyFromPem ( - IN CONST UINT8 *PemData, - IN UINTN PemSize, - IN CONST CHAR8 *Password, - OUT VOID **RsaContext - ) -{ - BOOLEAN Status; - BIO *PemBio; - - // - // Check input parameters. - // - if (PemData == NULL || RsaContext == NULL || PemSize > INT_MAX) { - return FALSE; - } - - // - // Add possible block-cipher descriptor for PEM data decryption. - // NOTE: Only support most popular ciphers (3DES, AES) for the encrypted PEM. - // - if (EVP_add_cipher (EVP_des_ede3_cbc ()) == 0) { - return FALSE; - } - if (EVP_add_cipher (EVP_aes_128_cbc ()) == 0) { - return FALSE; - } - if (EVP_add_cipher (EVP_aes_192_cbc ()) == 0) { - return FALSE; - } - if (EVP_add_cipher (EVP_aes_256_cbc ()) == 0) { - return FALSE; - } - - Status = FALSE; - - // - // Read encrypted PEM Data. - // - PemBio = BIO_new (BIO_s_mem ()); - if (PemBio == NULL) { - goto _Exit; - } - - if (BIO_write (PemBio, PemData, (int) PemSize) <= 0) { - goto _Exit; - } - - // - // Retrieve RSA Private Key from encrypted PEM data. - // - *RsaContext = PEM_read_bio_RSAPrivateKey (PemBio, NULL, (pem_password_cb *) &PasswordCallback, (void *) Password); - if (*RsaContext != NULL) { - Status = TRUE; - } - -_Exit: - // - // Release Resources. - // - BIO_free (PemBio); - - return Status; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPemNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPemNull.c deleted file mode 100644 index 8c9e4f0bb5..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pem/CryptPemNull.c +++ /dev/null @@ -1,44 +0,0 @@ -/** @file - PEM (Privacy Enhanced Mail) Format Handler Wrapper Implementation which does - not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieve the RSA Private Key from the password-protected PEM key data. - - Return FALSE to indicate this interface is not supported. - - @param[in] PemData Pointer to the PEM-encoded key data to be retrieved. - @param[in] PemSize Size of the PEM key data in bytes. - @param[in] Password NULL-terminated passphrase used for encrypted PEM key data. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA private key component. Use RsaFree() function to free the - resource. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetPrivateKeyFromPem ( - IN CONST UINT8 *PemData, - IN UINTN PemSize, - IN CONST CHAR8 *Password, - OUT VOID **RsaContext - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticode.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticode.c deleted file mode 100644 index 74e50a2e86..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticode.c +++ /dev/null @@ -1,198 +0,0 @@ -/** @file - Authenticode Portable Executable Signature Verification over OpenSSL. - - Caution: This module requires additional review when modified. - This library will have external input - signature (e.g. PE/COFF Authenticode). - This external input must be validated carefully to avoid security issue like - buffer overflow, integer overflow. - - AuthenticodeVerify() will get PE/COFF Authenticode and will do basic check for - data structure. - -Copyright (c) 2011 - 2015, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -#include -#include -#include - -// -// OID ASN.1 Value for SPC_INDIRECT_DATA_OBJID -// -UINT8 mSpcIndirectOidValue[] = { - 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04 - }; - -/** - Verifies the validity of a PE/COFF Authenticode Signature as described in "Windows - Authenticode Portable Executable Signature Format". - - If AuthData is NULL, then return FALSE. - If ImageHash is NULL, then return FALSE. - - Caution: This function may receive untrusted input. - PE/COFF Authenticode is external input, so this function will do basic check for - Authenticode data structure. - - @param[in] AuthData Pointer to the Authenticode Signature retrieved from signed - PE/COFF image to be verified. - @param[in] DataSize Size of the Authenticode Signature in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertSize Size of the trusted certificate in bytes. - @param[in] ImageHash Pointer to the original image file hash value. The procedure - for calculating the image hash value is described in Authenticode - specification. - @param[in] HashSize Size of Image hash value in bytes. - - @retval TRUE The specified Authenticode Signature is valid. - @retval FALSE Invalid Authenticode Signature. - -**/ -BOOLEAN -EFIAPI -AuthenticodeVerify ( - IN CONST UINT8 *AuthData, - IN UINTN DataSize, - IN CONST UINT8 *TrustedCert, - IN UINTN CertSize, - IN CONST UINT8 *ImageHash, - IN UINTN HashSize - ) -{ - BOOLEAN Status; - PKCS7 *Pkcs7; - CONST UINT8 *Temp; - CONST UINT8 *OrigAuthData; - UINT8 *SpcIndirectDataContent; - UINT8 Asn1Byte; - UINTN ContentSize; - CONST UINT8 *SpcIndirectDataOid; - - // - // Check input parameters. - // - if ((AuthData == NULL) || (TrustedCert == NULL) || (ImageHash == NULL)) { - return FALSE; - } - - if ((DataSize > INT_MAX) || (CertSize > INT_MAX) || (HashSize > INT_MAX)) { - return FALSE; - } - - Status = FALSE; - Pkcs7 = NULL; - OrigAuthData = AuthData; - - // - // Retrieve & Parse PKCS#7 Data (DER encoding) from Authenticode Signature - // - Temp = AuthData; - Pkcs7 = d2i_PKCS7 (NULL, &Temp, (int)DataSize); - if (Pkcs7 == NULL) { - goto _Exit; - } - - // - // Check if it's PKCS#7 Signed Data (for Authenticode Scenario) - // - if (!PKCS7_type_is_signed (Pkcs7)) { - goto _Exit; - } - - // - // NOTE: OpenSSL PKCS7 Decoder didn't work for Authenticode-format signed data due to - // some authenticode-specific structure. Use opaque ASN.1 string to retrieve - // PKCS#7 ContentInfo here. - // - SpcIndirectDataOid = OBJ_get0_data(Pkcs7->d.sign->contents->type); - if (OBJ_length(Pkcs7->d.sign->contents->type) != sizeof(mSpcIndirectOidValue) || - CompareMem ( - SpcIndirectDataOid, - mSpcIndirectOidValue, - sizeof (mSpcIndirectOidValue) - ) != 0) { - // - // Un-matched SPC_INDIRECT_DATA_OBJID. - // - goto _Exit; - } - - - SpcIndirectDataContent = (UINT8 *)(Pkcs7->d.sign->contents->d.other->value.asn1_string->data); - - // - // Retrieve the SEQUENCE data size from ASN.1-encoded SpcIndirectDataContent. - // - Asn1Byte = *(SpcIndirectDataContent + 1); - - if ((Asn1Byte & 0x80) == 0) { - // - // Short Form of Length Encoding (Length < 128) - // - ContentSize = (UINTN) (Asn1Byte & 0x7F); - // - // Skip the SEQUENCE Tag; - // - SpcIndirectDataContent += 2; - - } else if ((Asn1Byte & 0x81) == 0x81) { - // - // Long Form of Length Encoding (128 <= Length < 255, Single Octet) - // - ContentSize = (UINTN) (*(UINT8 *)(SpcIndirectDataContent + 2)); - // - // Skip the SEQUENCE Tag; - // - SpcIndirectDataContent += 3; - - } else if ((Asn1Byte & 0x82) == 0x82) { - // - // Long Form of Length Encoding (Length > 255, Two Octet) - // - ContentSize = (UINTN) (*(UINT8 *)(SpcIndirectDataContent + 2)); - ContentSize = (ContentSize << 8) + (UINTN)(*(UINT8 *)(SpcIndirectDataContent + 3)); - // - // Skip the SEQUENCE Tag; - // - SpcIndirectDataContent += 4; - - } else { - goto _Exit; - } - - // - // Compare the original file hash value to the digest retrieve from SpcIndirectDataContent - // defined in Authenticode - // NOTE: Need to double-check HashLength here! - // - if (CompareMem (SpcIndirectDataContent + ContentSize - HashSize, ImageHash, HashSize) != 0) { - // - // Un-matched PE/COFF Hash Value - // - goto _Exit; - } - - // - // Verifies the PKCS#7 Signed Data in PE/COFF Authenticode Signature - // - Status = (BOOLEAN) Pkcs7Verify (OrigAuthData, DataSize, TrustedCert, CertSize, SpcIndirectDataContent, ContentSize); - -_Exit: - // - // Release Resources - // - PKCS7_free (Pkcs7); - - return Status; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticodeNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticodeNull.c deleted file mode 100644 index afec025dfa..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptAuthenticodeNull.c +++ /dev/null @@ -1,51 +0,0 @@ -/** @file - Authenticode Portable Executable Signature Verification which does not provide - real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Verifies the validity of a PE/COFF Authenticode Signature as described in "Windows - Authenticode Portable Executable Signature Format". - - Return FALSE to indicate this interface is not supported. - - @param[in] AuthData Pointer to the Authenticode Signature retrieved from signed - PE/COFF image to be verified. - @param[in] DataSize Size of the Authenticode Signature in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertSize Size of the trusted certificate in bytes. - @param[in] ImageHash Pointer to the original image file hash value. The procedure - for calculating the image hash value is described in Authenticode - specification. - @param[in] HashSize Size of Image hash value in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AuthenticodeVerify ( - IN CONST UINT8 *AuthData, - IN UINTN DataSize, - IN CONST UINT8 *TrustedCert, - IN UINTN CertSize, - IN CONST UINT8 *ImageHash, - IN UINTN HashSize - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDh.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDh.c deleted file mode 100644 index 391efd5c14..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDh.c +++ /dev/null @@ -1,312 +0,0 @@ -/** @file - Diffie-Hellman Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include -#include - -/** - Allocates and Initializes one Diffie-Hellman Context for subsequent use. - - @return Pointer to the Diffie-Hellman Context that has been initialized. - If the allocations fails, DhNew() returns NULL. - -**/ -VOID * -EFIAPI -DhNew ( - VOID - ) -{ - // - // Allocates & Initializes DH Context by OpenSSL DH_new() - // - return (VOID *) DH_new (); -} - -/** - Release the specified DH context. - - If DhContext is NULL, then return FALSE. - - @param[in] DhContext Pointer to the DH context to be released. - -**/ -VOID -EFIAPI -DhFree ( - IN VOID *DhContext - ) -{ - // - // Free OpenSSL DH Context - // - DH_free ((DH *) DhContext); -} - -/** - Generates DH parameter. - - Given generator g, and length of prime number p in bits, this function generates p, - and sets DH context according to value of g and p. - - Before this function can be invoked, pseudorandom number generator must be correctly - initialized by RandomSeed(). - - If DhContext is NULL, then return FALSE. - If Prime is NULL, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[out] Prime Pointer to the buffer to receive the generated prime number. - - @retval TRUE DH parameter generation succeeded. - @retval FALSE Value of Generator is not supported. - @retval FALSE PRNG fails to generate random prime number with PrimeLength. - -**/ -BOOLEAN -EFIAPI -DhGenerateParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - OUT UINT8 *Prime - ) -{ - BOOLEAN RetVal; - BIGNUM *BnP; - - // - // Check input parameters. - // - if (DhContext == NULL || Prime == NULL || PrimeLength > INT_MAX) { - return FALSE; - } - - if (Generator != DH_GENERATOR_2 && Generator != DH_GENERATOR_5) { - return FALSE; - } - - RetVal = (BOOLEAN) DH_generate_parameters_ex (DhContext, (UINT32) PrimeLength, (UINT32) Generator, NULL); - if (!RetVal) { - return FALSE; - } - - DH_get0_pqg (DhContext, (const BIGNUM **)&BnP, NULL, NULL); - BN_bn2bin (BnP, Prime); - - return TRUE; -} - -/** - Sets generator and prime parameters for DH. - - Given generator g, and prime number p, this function and sets DH - context accordingly. - - If DhContext is NULL, then return FALSE. - If Prime is NULL, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[in] Prime Pointer to the prime number. - - @retval TRUE DH parameter setting succeeded. - @retval FALSE Value of Generator is not supported. - @retval FALSE Value of Generator is not suitable for the Prime. - @retval FALSE Value of Prime is not a prime number. - @retval FALSE Value of Prime is not a safe prime number. - -**/ -BOOLEAN -EFIAPI -DhSetParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - IN CONST UINT8 *Prime - ) -{ - DH *Dh; - BIGNUM *BnP; - BIGNUM *BnG; - - // - // Check input parameters. - // - if (DhContext == NULL || Prime == NULL || PrimeLength > INT_MAX) { - return FALSE; - } - - if (Generator != DH_GENERATOR_2 && Generator != DH_GENERATOR_5) { - return FALSE; - } - - // - // Set the generator and prime parameters for DH object. - // - Dh = (DH *)DhContext; - BnP = BN_bin2bn ((const unsigned char *)Prime, (int)(PrimeLength / 8), NULL); - BnG = BN_bin2bn ((const unsigned char *)&Generator, 1, NULL); - if ((BnP == NULL) || (BnG == NULL) || !DH_set0_pqg (Dh, BnP, NULL, BnG)) { - goto Error; - } - - return TRUE; - -Error: - BN_free (BnP); - BN_free (BnG); - - return FALSE; -} - -/** - Generates DH public key. - - This function generates random secret exponent, and computes the public key, which is - returned via parameter PublicKey and PublicKeySize. DH context is updated accordingly. - If the PublicKey buffer is too small to hold the public key, FALSE is returned and - PublicKeySize is set to the required buffer size to obtain the public key. - - If DhContext is NULL, then return FALSE. - If PublicKeySize is NULL, then return FALSE. - If PublicKeySize is large enough but PublicKey is NULL, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[out] PublicKey Pointer to the buffer to receive generated public key. - @param[in, out] PublicKeySize On input, the size of PublicKey buffer in bytes. - On output, the size of data returned in PublicKey buffer in bytes. - - @retval TRUE DH public key generation succeeded. - @retval FALSE DH public key generation failed. - @retval FALSE PublicKeySize is not large enough. - -**/ -BOOLEAN -EFIAPI -DhGenerateKey ( - IN OUT VOID *DhContext, - OUT UINT8 *PublicKey, - IN OUT UINTN *PublicKeySize - ) -{ - BOOLEAN RetVal; - DH *Dh; - BIGNUM *DhPubKey; - INTN Size; - - // - // Check input parameters. - // - if (DhContext == NULL || PublicKeySize == NULL) { - return FALSE; - } - - if (PublicKey == NULL && *PublicKeySize != 0) { - return FALSE; - } - - Dh = (DH *) DhContext; - - RetVal = (BOOLEAN) DH_generate_key (DhContext); - if (RetVal) { - DH_get0_key (Dh, (const BIGNUM **)&DhPubKey, NULL); - Size = BN_num_bytes (DhPubKey); - if ((Size > 0) && (*PublicKeySize < (UINTN) Size)) { - *PublicKeySize = Size; - return FALSE; - } - - if (PublicKey != NULL) { - BN_bn2bin (DhPubKey, PublicKey); - } - *PublicKeySize = Size; - } - - return RetVal; -} - -/** - Computes exchanged common key. - - Given peer's public key, this function computes the exchanged common key, based on its own - context including value of prime modulus and random secret exponent. - - If DhContext is NULL, then return FALSE. - If PeerPublicKey is NULL, then return FALSE. - If KeySize is NULL, then return FALSE. - If Key is NULL, then return FALSE. - If KeySize is not large enough, then return FALSE. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] PeerPublicKey Pointer to the peer's public key. - @param[in] PeerPublicKeySize Size of peer's public key in bytes. - @param[out] Key Pointer to the buffer to receive generated key. - @param[in, out] KeySize On input, the size of Key buffer in bytes. - On output, the size of data returned in Key buffer in bytes. - - @retval TRUE DH exchanged key generation succeeded. - @retval FALSE DH exchanged key generation failed. - @retval FALSE KeySize is not large enough. - -**/ -BOOLEAN -EFIAPI -DhComputeKey ( - IN OUT VOID *DhContext, - IN CONST UINT8 *PeerPublicKey, - IN UINTN PeerPublicKeySize, - OUT UINT8 *Key, - IN OUT UINTN *KeySize - ) -{ - BIGNUM *Bn; - INTN Size; - - // - // Check input parameters. - // - if (DhContext == NULL || PeerPublicKey == NULL || KeySize == NULL || Key == NULL) { - return FALSE; - } - - if (PeerPublicKeySize > INT_MAX) { - return FALSE; - } - - Bn = BN_bin2bn (PeerPublicKey, (UINT32) PeerPublicKeySize, NULL); - if (Bn == NULL) { - return FALSE; - } - - Size = DH_compute_key (Key, Bn, DhContext); - if (Size < 0) { - BN_free (Bn); - return FALSE; - } - - if (*KeySize < (UINTN) Size) { - *KeySize = Size; - BN_free (Bn); - return FALSE; - } - - *KeySize = Size; - BN_free (Bn); - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDhNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDhNull.c deleted file mode 100644 index 35045db3c8..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptDhNull.c +++ /dev/null @@ -1,156 +0,0 @@ -/** @file - Diffie-Hellman Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Allocates and Initializes one Diffie-Hellman Context for subsequent use. - - @return Pointer to the Diffie-Hellman Context that has been initialized. - If the interface is not supported, DhNew() returns NULL. - -**/ -VOID * -EFIAPI -DhNew ( - VOID - ) -{ - ASSERT (FALSE); - return NULL; -} - -/** - Release the specified DH context. - - If the interface is not supported, then ASSERT(). - - @param[in] DhContext Pointer to the DH context to be released. - -**/ -VOID -EFIAPI -DhFree ( - IN VOID *DhContext - ) -{ - ASSERT (FALSE); -} - -/** - Generates DH parameter. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[out] Prime Pointer to the buffer to receive the generated prime number. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhGenerateParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - OUT UINT8 *Prime - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Sets generator and prime parameters for DH. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[in] Prime Pointer to the prime number. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhSetParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - IN CONST UINT8 *Prime - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Generates DH public key. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[out] PublicKey Pointer to the buffer to receive generated public key. - @param[in, out] PublicKeySize On input, the size of PublicKey buffer in bytes. - On output, the size of data returned in PublicKey buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhGenerateKey ( - IN OUT VOID *DhContext, - OUT UINT8 *PublicKey, - IN OUT UINTN *PublicKeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Computes exchanged common key. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] PeerPublicKey Pointer to the peer's public key. - @param[in] PeerPublicKeySize Size of peer's public key in bytes. - @param[out] Key Pointer to the buffer to receive generated key. - @param[in, out] KeySize On input, the size of Key buffer in bytes. - On output, the size of data returned in Key buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhComputeKey ( - IN OUT VOID *DhContext, - IN CONST UINT8 *PeerPublicKey, - IN UINTN PeerPublicKeySize, - OUT UINT8 *Key, - IN OUT UINTN *KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2.c deleted file mode 100644 index 78c3a34f52..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2.c +++ /dev/null @@ -1,101 +0,0 @@ -/** @file - PBKDF2 Key Derivation Function Wrapper Implementation over OpenSSL. - -Copyright (c) 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include -#include - -/** - Derives a key from a password using a salt and iteration count, based on PKCS#5 v2.0 - password based encryption key derivation function PBKDF2, as specified in RFC 2898. - - If Password or Salt or OutKey is NULL, then return FALSE. - If the hash algorithm could not be determined, then return FALSE. - - @param[in] PasswordLength Length of input password in bytes. - @param[in] Password Pointer to the array for the password. - @param[in] SaltLength Size of the Salt in bytes. - @param[in] Salt Pointer to the Salt. - @param[in] IterationCount Number of iterations to perform. Its value should be - greater than or equal to 1. - @param[in] DigestSize Size of the message digest to be used (eg. SHA256_DIGEST_SIZE). - NOTE: DigestSize will be used to determine the hash algorithm. - Only SHA1_DIGEST_SIZE or SHA256_DIGEST_SIZE is supported. - @param[in] KeyLength Size of the derived key buffer in bytes. - @param[out] OutKey Pointer to the output derived key buffer. - - @retval TRUE A key was derived successfully. - @retval FALSE One of the pointers was NULL or one of the sizes was too large. - @retval FALSE The hash algorithm could not be determined from the digest size. - @retval FALSE The key derivation operation failed. - -**/ -BOOLEAN -EFIAPI -Pkcs5HashPassword ( - IN UINTN PasswordLength, - IN CONST CHAR8 *Password, - IN UINTN SaltLength, - IN CONST UINT8 *Salt, - IN UINTN IterationCount, - IN UINTN DigestSize, - IN UINTN KeyLength, - OUT UINT8 *OutKey - ) -{ - CONST EVP_MD *HashAlg; - - HashAlg = NULL; - - // - // Parameter Checking. - // - if ((Password == NULL) || (Salt == NULL) || (OutKey == NULL)) { - return FALSE; - } - if ((PasswordLength == 0) || (PasswordLength > INT_MAX) || - (SaltLength == 0) || (SaltLength > INT_MAX) || - (KeyLength == 0) || (KeyLength > INT_MAX) || - (IterationCount < 1) || (IterationCount > INT_MAX)) { - return FALSE; - } - // - // Make sure the digest algorithm is supported. - // - switch (DigestSize) { - case SHA1_DIGEST_SIZE: - HashAlg = EVP_sha1(); - break; - case SHA256_DIGEST_SIZE: - HashAlg = EVP_sha256(); - break; - default: - return FALSE; - break; - } - - // - // Perform password-based key derivation routines. - // - return (BOOLEAN)PKCS5_PBKDF2_HMAC ( - (const char *)Password, - (int)PasswordLength, - (const unsigned char *)Salt, - (int)SaltLength, - (int)IterationCount, - HashAlg, - (int)KeyLength, - (unsigned char *)OutKey - ); -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2Null.c deleted file mode 100644 index 54d2637d6c..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs5Pbkdf2Null.c +++ /dev/null @@ -1,56 +0,0 @@ -/** @file - PBKDF2 Key Derivation Function Wrapper Implementation which does not provide real - capabilities. - -Copyright (c) 2016, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include -#include - -/** - Derives a key from a password using a salt and iteration count, based on PKCS#5 v2.0 - password based encryption key derivation function PBKDF2, as specified in RFC 2898. - - Return FALSE to indicate this interface is not supported. - - @param[in] PasswordLength Length of input password in bytes. - @param[in] Password Pointer to the array for the password. - @param[in] SaltLength Size of the Salt in bytes. - @param[in] Salt Pointer to the Salt. - @param[in] IterationCount Number of iterations to perform. Its value should be - greater than or equal to 1. - @param[in] DigestSize Size of the message digest to be used (eg. SHA256_DIGEST_SIZE). - NOTE: DigestSize will be used to determine the hash algorithm. - Only SHA1_DIGEST_SIZE or SHA256_DIGEST_SIZE is supported. - @param[in] KeyLength Size of the derived key buffer in bytes. - @param[out] OutKey Pointer to the output derived key buffer. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs5HashPassword ( - IN UINTN PasswordLength, - IN CONST CHAR8 *Password, - IN UINTN SaltLength, - IN CONST UINT8 *Salt, - IN UINTN IterationCount, - IN UINTN DigestSize, - IN UINTN KeyLength, - OUT UINT8 *OutKey - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Sign.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Sign.c deleted file mode 100644 index d3b1a907aa..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Sign.c +++ /dev/null @@ -1,199 +0,0 @@ -/** @file - PKCS#7 SignedData Sign Wrapper Implementation over OpenSSL. - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -#include -#include -#include - -/** - Creates a PKCS#7 signedData as described in "PKCS #7: Cryptographic Message - Syntax Standard, version 1.5". This interface is only intended to be used for - application to perform PKCS#7 functionality validation. - - @param[in] PrivateKey Pointer to the PEM-formatted private key data for - data signing. - @param[in] PrivateKeySize Size of the PEM private key data in bytes. - @param[in] KeyPassword NULL-terminated passphrase used for encrypted PEM - key data. - @param[in] InData Pointer to the content to be signed. - @param[in] InDataSize Size of InData in bytes. - @param[in] SignCert Pointer to signer's DER-encoded certificate to sign with. - @param[in] OtherCerts Pointer to an optional additional set of certificates to - include in the PKCS#7 signedData (e.g. any intermediate - CAs in the chain). - @param[out] SignedData Pointer to output PKCS#7 signedData. - @param[out] SignedDataSize Size of SignedData in bytes. - - @retval TRUE PKCS#7 data signing succeeded. - @retval FALSE PKCS#7 data signing failed. - -**/ -BOOLEAN -EFIAPI -Pkcs7Sign ( - IN CONST UINT8 *PrivateKey, - IN UINTN PrivateKeySize, - IN CONST UINT8 *KeyPassword, - IN UINT8 *InData, - IN UINTN InDataSize, - IN UINT8 *SignCert, - IN UINT8 *OtherCerts OPTIONAL, - OUT UINT8 **SignedData, - OUT UINTN *SignedDataSize - ) -{ - BOOLEAN Status; - EVP_PKEY *Key; - BIO *DataBio; - PKCS7 *Pkcs7; - UINT8 *RsaContext; - UINT8 *P7Data; - UINTN P7DataSize; - UINT8 *Tmp; - - // - // Check input parameters. - // - if (PrivateKey == NULL || KeyPassword == NULL || InData == NULL || - SignCert == NULL || SignedData == NULL || SignedDataSize == NULL || InDataSize > INT_MAX) { - return FALSE; - } - - RsaContext = NULL; - Key = NULL; - Pkcs7 = NULL; - DataBio = NULL; - Status = FALSE; - - // - // Retrieve RSA private key from PEM data. - // - Status = RsaGetPrivateKeyFromPem ( - PrivateKey, - PrivateKeySize, - (CONST CHAR8 *) KeyPassword, - (VOID **) &RsaContext - ); - if (!Status) { - return Status; - } - - Status = FALSE; - - // - // Register & Initialize necessary digest algorithms and PRNG for PKCS#7 Handling - // - if (EVP_add_digest (EVP_md5 ()) == 0) { - goto _Exit; - } - if (EVP_add_digest (EVP_sha1 ()) == 0) { - goto _Exit; - } - if (EVP_add_digest (EVP_sha256 ()) == 0) { - goto _Exit; - } - - RandomSeed (NULL, 0); - - // - // Construct OpenSSL EVP_PKEY for private key. - // - Key = EVP_PKEY_new (); - if (Key == NULL) { - goto _Exit; - } - if (EVP_PKEY_assign_RSA (Key, (RSA *) RsaContext) == 0) { - goto _Exit; - } - - // - // Convert the data to be signed to BIO format. - // - DataBio = BIO_new (BIO_s_mem ()); - if (DataBio == NULL) { - goto _Exit; - } - - if (BIO_write (DataBio, InData, (int) InDataSize) <= 0) { - goto _Exit; - } - - // - // Create the PKCS#7 signedData structure. - // - Pkcs7 = PKCS7_sign ( - (X509 *) SignCert, - Key, - (STACK_OF(X509) *) OtherCerts, - DataBio, - PKCS7_BINARY | PKCS7_NOATTR | PKCS7_DETACHED - ); - if (Pkcs7 == NULL) { - goto _Exit; - } - - // - // Convert PKCS#7 signedData structure into DER-encoded buffer. - // - P7DataSize = i2d_PKCS7 (Pkcs7, NULL); - if (P7DataSize <= 19) { - goto _Exit; - } - - P7Data = malloc (P7DataSize); - if (P7Data == NULL) { - goto _Exit; - } - - Tmp = P7Data; - P7DataSize = i2d_PKCS7 (Pkcs7, (unsigned char **) &Tmp); - ASSERT (P7DataSize > 19); - - // - // Strip ContentInfo to content only for signeddata. The data be trimmed off - // is totally 19 bytes. - // - *SignedDataSize = P7DataSize - 19; - *SignedData = malloc (*SignedDataSize); - if (*SignedData == NULL) { - OPENSSL_free (P7Data); - goto _Exit; - } - - CopyMem (*SignedData, P7Data + 19, *SignedDataSize); - - OPENSSL_free (P7Data); - - Status = TRUE; - -_Exit: - // - // Release Resources - // - if (Key != NULL) { - EVP_PKEY_free (Key); - } - - if (DataBio != NULL) { - BIO_free (DataBio); - } - - if (Pkcs7 != NULL) { - PKCS7_free (Pkcs7); - } - - return Status; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7SignNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7SignNull.c deleted file mode 100644 index 539bb6b7d5..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7SignNull.c +++ /dev/null @@ -1,59 +0,0 @@ -/** @file - PKCS#7 SignedData Sign Wrapper Implementation which does not provide real - capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Creates a PKCS#7 signedData as described in "PKCS #7: Cryptographic Message - Syntax Standard, version 1.5". This interface is only intended to be used for - application to perform PKCS#7 functionality validation. - - Return FALSE to indicate this interface is not supported. - - @param[in] PrivateKey Pointer to the PEM-formatted private key data for - data signing. - @param[in] PrivateKeySize Size of the PEM private key data in bytes. - @param[in] KeyPassword NULL-terminated passphrase used for encrypted PEM - key data. - @param[in] InData Pointer to the content to be signed. - @param[in] InDataSize Size of InData in bytes. - @param[in] SignCert Pointer to signer's DER-encoded certificate to sign with. - @param[in] OtherCerts Pointer to an optional additional set of certificates to - include in the PKCS#7 signedData (e.g. any intermediate - CAs in the chain). - @param[out] SignedData Pointer to output PKCS#7 signedData. - @param[out] SignedDataSize Size of SignedData in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7Sign ( - IN CONST UINT8 *PrivateKey, - IN UINTN PrivateKeySize, - IN CONST UINT8 *KeyPassword, - IN UINT8 *InData, - IN UINTN InDataSize, - IN UINT8 *SignCert, - IN UINT8 *OtherCerts OPTIONAL, - OUT UINT8 **SignedData, - OUT UINTN *SignedDataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c deleted file mode 100644 index d564591cb7..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7Verify.c +++ /dev/null @@ -1,1022 +0,0 @@ -/** @file - PKCS#7 SignedData Verification Wrapper Implementation over OpenSSL. - - Caution: This module requires additional review when modified. - This library will have external input - signature (e.g. UEFI Authenticated - Variable). It may by input in SMM mode. - This external input must be validated carefully to avoid security issue like - buffer overflow, integer overflow. - - WrapPkcs7Data(), Pkcs7GetSigners(), Pkcs7Verify() will get UEFI Authenticated - Variable and will do basic check for data structure. - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -#include -#include -#include -#include - -UINT8 mOidValue[9] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02 }; - -/** - Check input P7Data is a wrapped ContentInfo structure or not. If not construct - a new structure to wrap P7Data. - - Caution: This function may receive untrusted input. - UEFI Authenticated Variable is external input, so this function will do basic - check for PKCS#7 data structure. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] WrapFlag If TRUE P7Data is a ContentInfo structure, otherwise - return FALSE. - @param[out] WrapData If return status of this function is TRUE: - 1) when WrapFlag is TRUE, pointer to P7Data. - 2) when WrapFlag is FALSE, pointer to a new ContentInfo - structure. It's caller's responsibility to free this - buffer. - @param[out] WrapDataSize Length of ContentInfo structure in bytes. - - @retval TRUE The operation is finished successfully. - @retval FALSE The operation is failed due to lack of resources. - -**/ -BOOLEAN -WrapPkcs7Data ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT BOOLEAN *WrapFlag, - OUT UINT8 **WrapData, - OUT UINTN *WrapDataSize - ) -{ - BOOLEAN Wrapped; - UINT8 *SignedData; - - // - // Check whether input P7Data is a wrapped ContentInfo structure or not. - // - Wrapped = FALSE; - if ((P7Data[4] == 0x06) && (P7Data[5] == 0x09)) { - if (CompareMem (P7Data + 6, mOidValue, sizeof (mOidValue)) == 0) { - if ((P7Data[15] == 0xA0) && (P7Data[16] == 0x82)) { - Wrapped = TRUE; - } - } - } - - if (Wrapped) { - *WrapData = (UINT8 *) P7Data; - *WrapDataSize = P7Length; - } else { - // - // Wrap PKCS#7 signeddata to a ContentInfo structure - add a header in 19 bytes. - // - *WrapDataSize = P7Length + 19; - *WrapData = malloc (*WrapDataSize); - if (*WrapData == NULL) { - *WrapFlag = Wrapped; - return FALSE; - } - - SignedData = *WrapData; - - // - // Part1: 0x30, 0x82. - // - SignedData[0] = 0x30; - SignedData[1] = 0x82; - - // - // Part2: Length1 = P7Length + 19 - 4, in big endian. - // - SignedData[2] = (UINT8) (((UINT16) (*WrapDataSize - 4)) >> 8); - SignedData[3] = (UINT8) (((UINT16) (*WrapDataSize - 4)) & 0xff); - - // - // Part3: 0x06, 0x09. - // - SignedData[4] = 0x06; - SignedData[5] = 0x09; - - // - // Part4: OID value -- 0x2A 0x86 0x48 0x86 0xF7 0x0D 0x01 0x07 0x02. - // - CopyMem (SignedData + 6, mOidValue, sizeof (mOidValue)); - - // - // Part5: 0xA0, 0x82. - // - SignedData[15] = 0xA0; - SignedData[16] = 0x82; - - // - // Part6: Length2 = P7Length, in big endian. - // - SignedData[17] = (UINT8) (((UINT16) P7Length) >> 8); - SignedData[18] = (UINT8) (((UINT16) P7Length) & 0xff); - - // - // Part7: P7Data. - // - CopyMem (SignedData + 19, P7Data, P7Length); - } - - *WrapFlag = Wrapped; - return TRUE; -} - -/** - Pop single certificate from STACK_OF(X509). - - If X509Stack, Cert, or CertSize is NULL, then return FALSE. - - @param[in] X509Stack Pointer to a X509 stack object. - @param[out] Cert Pointer to a X509 certificate. - @param[out] CertSize Length of output X509 certificate in bytes. - - @retval TRUE The X509 stack pop succeeded. - @retval FALSE The pop operation failed. - -**/ -BOOLEAN -X509PopCertificate ( - IN VOID *X509Stack, - OUT UINT8 **Cert, - OUT UINTN *CertSize - ) -{ - BIO *CertBio; - X509 *X509Cert; - STACK_OF(X509) *CertStack; - BOOLEAN Status; - INT32 Result; - BUF_MEM *Ptr; - INT32 Length; - VOID *Buffer; - - Status = FALSE; - - if ((X509Stack == NULL) || (Cert == NULL) || (CertSize == NULL)) { - return Status; - } - - CertStack = (STACK_OF(X509) *) X509Stack; - - X509Cert = sk_X509_pop (CertStack); - - if (X509Cert == NULL) { - return Status; - } - - Buffer = NULL; - - CertBio = BIO_new (BIO_s_mem ()); - if (CertBio == NULL) { - return Status; - } - - Result = i2d_X509_bio (CertBio, X509Cert); - if (Result == 0) { - goto _Exit; - } - - BIO_get_mem_ptr (CertBio, &Ptr); - Length = (INT32)(Ptr->length); - if (Length <= 0) { - goto _Exit; - } - - Buffer = malloc (Length); - if (Buffer == NULL) { - goto _Exit; - } - - Result = BIO_read (CertBio, Buffer, Length); - if (Result != Length) { - goto _Exit; - } - - *Cert = Buffer; - *CertSize = Length; - - Status = TRUE; - -_Exit: - - BIO_free (CertBio); - - if (!Status && (Buffer != NULL)) { - free (Buffer); - } - - return Status; -} - -/** - Get the signer's certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - If P7Data, CertStack, StackLength, TrustedCert or CertLength is NULL, then - return FALSE. If P7Length overflow, then return FALSE. - - Caution: This function may receive untrusted input. - UEFI Authenticated Variable is external input, so this function will do basic - check for PKCS#7 data structure. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] CertStack Pointer to Signer's certificates retrieved from P7Data. - It's caller's responsibility to free the buffer. - @param[out] StackLength Length of signer's certificates in bytes. - @param[out] TrustedCert Pointer to a trusted certificate from Signer's certificates. - It's caller's responsibility to free the buffer. - @param[out] CertLength Length of the trusted certificate in bytes. - - @retval TRUE The operation is finished successfully. - @retval FALSE Error occurs during the operation. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetSigners ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **CertStack, - OUT UINTN *StackLength, - OUT UINT8 **TrustedCert, - OUT UINTN *CertLength - ) -{ - PKCS7 *Pkcs7; - BOOLEAN Status; - UINT8 *SignedData; - CONST UINT8 *Temp; - UINTN SignedDataSize; - BOOLEAN Wrapped; - STACK_OF(X509) *Stack; - UINT8 Index; - UINT8 *CertBuf; - UINT8 *OldBuf; - UINTN BufferSize; - UINTN OldSize; - UINT8 *SingleCert; - UINTN SingleCertSize; - - if ((P7Data == NULL) || (CertStack == NULL) || (StackLength == NULL) || - (TrustedCert == NULL) || (CertLength == NULL) || (P7Length > INT_MAX)) { - return FALSE; - } - - Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); - if (!Status) { - return Status; - } - - Status = FALSE; - Pkcs7 = NULL; - Stack = NULL; - CertBuf = NULL; - OldBuf = NULL; - SingleCert = NULL; - - // - // Retrieve PKCS#7 Data (DER encoding) - // - if (SignedDataSize > INT_MAX) { - goto _Exit; - } - - Temp = SignedData; - Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &Temp, (int) SignedDataSize); - if (Pkcs7 == NULL) { - goto _Exit; - } - - // - // Check if it's PKCS#7 Signed Data (for Authenticode Scenario) - // - if (!PKCS7_type_is_signed (Pkcs7)) { - goto _Exit; - } - - Stack = PKCS7_get0_signers(Pkcs7, NULL, PKCS7_BINARY); - if (Stack == NULL) { - goto _Exit; - } - - // - // Convert CertStack to buffer in following format: - // UINT8 CertNumber; - // UINT32 Cert1Length; - // UINT8 Cert1[]; - // UINT32 Cert2Length; - // UINT8 Cert2[]; - // ... - // UINT32 CertnLength; - // UINT8 Certn[]; - // - BufferSize = sizeof (UINT8); - OldSize = BufferSize; - - for (Index = 0; ; Index++) { - Status = X509PopCertificate (Stack, &SingleCert, &SingleCertSize); - if (!Status) { - break; - } - - OldSize = BufferSize; - OldBuf = CertBuf; - BufferSize = OldSize + SingleCertSize + sizeof (UINT32); - CertBuf = malloc (BufferSize); - - if (CertBuf == NULL) { - goto _Exit; - } - - if (OldBuf != NULL) { - CopyMem (CertBuf, OldBuf, OldSize); - free (OldBuf); - OldBuf = NULL; - } - - WriteUnaligned32 ((UINT32 *) (CertBuf + OldSize), (UINT32) SingleCertSize); - CopyMem (CertBuf + OldSize + sizeof (UINT32), SingleCert, SingleCertSize); - - free (SingleCert); - SingleCert = NULL; - } - - if (CertBuf != NULL) { - // - // Update CertNumber. - // - CertBuf[0] = Index; - - *CertLength = BufferSize - OldSize - sizeof (UINT32); - *TrustedCert = malloc (*CertLength); - if (*TrustedCert == NULL) { - goto _Exit; - } - - CopyMem (*TrustedCert, CertBuf + OldSize + sizeof (UINT32), *CertLength); - *CertStack = CertBuf; - *StackLength = BufferSize; - Status = TRUE; - } - -_Exit: - // - // Release Resources - // - if (!Wrapped) { - free (SignedData); - } - - if (Pkcs7 != NULL) { - PKCS7_free (Pkcs7); - } - - if (Stack != NULL) { - sk_X509_pop_free(Stack, X509_free); - } - - if (SingleCert != NULL) { - free (SingleCert); - } - - if (!Status && (CertBuf != NULL)) { - free (CertBuf); - *CertStack = NULL; - } - - if (OldBuf != NULL) { - free (OldBuf); - } - - return Status; -} - -/** - Wrap function to use free() to free allocated memory for certificates. - - @param[in] Certs Pointer to the certificates to be freed. - -**/ -VOID -EFIAPI -Pkcs7FreeSigners ( - IN UINT8 *Certs - ) -{ - if (Certs == NULL) { - return; - } - - free (Certs); -} - -/** - Retrieves all embedded certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard", and outputs two certificate lists chained and - unchained to the signer's certificates. - The input signed data could be wrapped in a ContentInfo structure. - - @param[in] P7Data Pointer to the PKCS#7 message. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] SignerChainCerts Pointer to the certificates list chained to signer's - certificate. It's caller's responsibility to free the buffer. - @param[out] ChainLength Length of the chained certificates list buffer in bytes. - @param[out] UnchainCerts Pointer to the unchained certificates lists. It's caller's - responsibility to free the buffer. - @param[out] UnchainLength Length of the unchained certificates list buffer in bytes. - - @retval TRUE The operation is finished successfully. - @retval FALSE Error occurs during the operation. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetCertificatesList ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **SignerChainCerts, - OUT UINTN *ChainLength, - OUT UINT8 **UnchainCerts, - OUT UINTN *UnchainLength - ) -{ - BOOLEAN Status; - UINT8 *NewP7Data; - UINTN NewP7Length; - BOOLEAN Wrapped; - UINT8 Index; - PKCS7 *Pkcs7; - X509_STORE_CTX *CertCtx; - STACK_OF(X509) *CtxChain; - STACK_OF(X509) *CtxUntrusted; - X509 *CtxCert; - STACK_OF(X509) *Signers; - X509 *Signer; - X509 *Cert; - X509 *Issuer; - X509_NAME *IssuerName; - UINT8 *CertBuf; - UINT8 *OldBuf; - UINTN BufferSize; - UINTN OldSize; - UINT8 *SingleCert; - UINTN CertSize; - - // - // Initializations - // - Status = FALSE; - NewP7Data = NULL; - Pkcs7 = NULL; - CertCtx = NULL; - CtxChain = NULL; - CtxCert = NULL; - CtxUntrusted = NULL; - Cert = NULL; - SingleCert = NULL; - CertBuf = NULL; - OldBuf = NULL; - Signers = NULL; - - ZeroMem (&CertCtx, sizeof (CertCtx)); - - // - // Parameter Checking - // - if ((P7Data == NULL) || (SignerChainCerts == NULL) || (ChainLength == NULL) || - (UnchainCerts == NULL) || (UnchainLength == NULL) || (P7Length > INT_MAX)) { - return Status; - } - - *SignerChainCerts = NULL; - *ChainLength = 0; - *UnchainCerts = NULL; - *UnchainLength = 0; - - // - // Construct a new PKCS#7 data wrapping with ContentInfo structure if needed. - // - Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &NewP7Data, &NewP7Length); - if (!Status || (NewP7Length > INT_MAX)) { - goto _Error; - } - - // - // Decodes PKCS#7 SignedData - // - Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &NewP7Data, (int) NewP7Length); - if ((Pkcs7 == NULL) || (!PKCS7_type_is_signed (Pkcs7))) { - goto _Error; - } - - // - // Obtains Signer's Certificate from PKCS#7 data - // NOTE: Only one signer case will be handled in this function, which means SignerInfos - // should include only one signer's certificate. - // - Signers = PKCS7_get0_signers (Pkcs7, NULL, PKCS7_BINARY); - if ((Signers == NULL) || (sk_X509_num (Signers) != 1)) { - goto _Error; - } - Signer = sk_X509_value (Signers, 0); - - CertCtx = X509_STORE_CTX_new (); - if (CertCtx == NULL) { - goto _Error; - } - if (!X509_STORE_CTX_init (CertCtx, NULL, Signer, Pkcs7->d.sign->cert)) { - goto _Error; - } - // - // Initialize Chained & Untrusted stack - // - CtxChain = X509_STORE_CTX_get0_chain (CertCtx); - CtxCert = X509_STORE_CTX_get0_cert (CertCtx); - if (CtxChain == NULL) { - if (((CtxChain = sk_X509_new_null ()) == NULL) || - (!sk_X509_push (CtxChain, CtxCert))) { - goto _Error; - } - } - CtxUntrusted = X509_STORE_CTX_get0_untrusted (CertCtx); - if (CtxUntrusted != NULL) { - (VOID)sk_X509_delete_ptr (CtxUntrusted, Signer); - } - - // - // Build certificates stack chained from Signer's certificate. - // - Cert = Signer; - for (; ;) { - // - // Self-Issue checking - // - Issuer = NULL; - if (X509_STORE_CTX_get1_issuer (&Issuer, CertCtx, Cert) == 1) { - if (X509_cmp (Issuer, Cert) == 0) { - break; - } - } - - // - // Found the issuer of the current certificate - // - if (CtxUntrusted != NULL) { - Issuer = NULL; - IssuerName = X509_get_issuer_name (Cert); - Issuer = X509_find_by_subject (CtxUntrusted, IssuerName); - if (Issuer != NULL) { - if (!sk_X509_push (CtxChain, Issuer)) { - goto _Error; - } - (VOID)sk_X509_delete_ptr (CtxUntrusted, Issuer); - - Cert = Issuer; - continue; - } - } - - break; - } - - // - // Converts Chained and Untrusted Certificate to Certificate Buffer in following format: - // UINT8 CertNumber; - // UINT32 Cert1Length; - // UINT8 Cert1[]; - // UINT32 Cert2Length; - // UINT8 Cert2[]; - // ... - // UINT32 CertnLength; - // UINT8 Certn[]; - // - - if (CtxChain != NULL) { - BufferSize = sizeof (UINT8); - OldSize = BufferSize; - CertBuf = NULL; - - for (Index = 0; ; Index++) { - Status = X509PopCertificate (CtxChain, &SingleCert, &CertSize); - if (!Status) { - break; - } - - OldSize = BufferSize; - OldBuf = CertBuf; - BufferSize = OldSize + CertSize + sizeof (UINT32); - CertBuf = malloc (BufferSize); - - if (CertBuf == NULL) { - Status = FALSE; - goto _Error; - } - if (OldBuf != NULL) { - CopyMem (CertBuf, OldBuf, OldSize); - free (OldBuf); - OldBuf = NULL; - } - - WriteUnaligned32 ((UINT32 *) (CertBuf + OldSize), (UINT32) CertSize); - CopyMem (CertBuf + OldSize + sizeof (UINT32), SingleCert, CertSize); - - free (SingleCert); - SingleCert = NULL; - } - - if (CertBuf != NULL) { - // - // Update CertNumber. - // - CertBuf[0] = Index; - - *SignerChainCerts = CertBuf; - *ChainLength = BufferSize; - } - } - - if (CtxUntrusted != NULL) { - BufferSize = sizeof (UINT8); - OldSize = BufferSize; - CertBuf = NULL; - - for (Index = 0; ; Index++) { - Status = X509PopCertificate (CtxUntrusted, &SingleCert, &CertSize); - if (!Status) { - break; - } - - OldSize = BufferSize; - OldBuf = CertBuf; - BufferSize = OldSize + CertSize + sizeof (UINT32); - CertBuf = malloc (BufferSize); - - if (CertBuf == NULL) { - Status = FALSE; - goto _Error; - } - if (OldBuf != NULL) { - CopyMem (CertBuf, OldBuf, OldSize); - free (OldBuf); - OldBuf = NULL; - } - - WriteUnaligned32 ((UINT32 *) (CertBuf + OldSize), (UINT32) CertSize); - CopyMem (CertBuf + OldSize + sizeof (UINT32), SingleCert, CertSize); - - free (SingleCert); - SingleCert = NULL; - } - - if (CertBuf != NULL) { - // - // Update CertNumber. - // - CertBuf[0] = Index; - - *UnchainCerts = CertBuf; - *UnchainLength = BufferSize; - } - } - - Status = TRUE; - -_Error: - // - // Release Resources. - // - if (!Wrapped && (NewP7Data != NULL)) { - free (NewP7Data); - } - - if (Pkcs7 != NULL) { - PKCS7_free (Pkcs7); - } - sk_X509_free (Signers); - - if (CertCtx != NULL) { - X509_STORE_CTX_cleanup (CertCtx); - X509_STORE_CTX_free (CertCtx); - } - - if (SingleCert != NULL) { - free (SingleCert); - } - - if (OldBuf != NULL) { - free (OldBuf); - } - - if (!Status && (CertBuf != NULL)) { - free (CertBuf); - *SignerChainCerts = NULL; - *UnchainCerts = NULL; - } - - return Status; -} - -/** - Verifies the validity of a PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - If P7Data, TrustedCert or InData is NULL, then return FALSE. - If P7Length, CertLength or DataLength overflow, then return FALSE. - - Caution: This function may receive untrusted input. - UEFI Authenticated Variable is external input, so this function will do basic - check for PKCS#7 data structure. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertLength Length of the trusted certificate in bytes. - @param[in] InData Pointer to the content to be verified. - @param[in] DataLength Length of InData in bytes. - - @retval TRUE The specified PKCS#7 signed data is valid. - @retval FALSE Invalid PKCS#7 signed data. - -**/ -BOOLEAN -EFIAPI -Pkcs7Verify ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - IN CONST UINT8 *TrustedCert, - IN UINTN CertLength, - IN CONST UINT8 *InData, - IN UINTN DataLength - ) -{ - PKCS7 *Pkcs7; - BIO *DataBio; - BOOLEAN Status; - X509 *Cert; - X509_STORE *CertStore; - UINT8 *SignedData; - CONST UINT8 *Temp; - UINTN SignedDataSize; - BOOLEAN Wrapped; - - // - // Check input parameters. - // - if (P7Data == NULL || TrustedCert == NULL || InData == NULL || - P7Length > INT_MAX || CertLength > INT_MAX || DataLength > INT_MAX) { - return FALSE; - } - - Pkcs7 = NULL; - DataBio = NULL; - Cert = NULL; - CertStore = NULL; - - // - // Register & Initialize necessary digest algorithms for PKCS#7 Handling - // - if (EVP_add_digest (EVP_md5 ()) == 0) { - return FALSE; - } - if (EVP_add_digest (EVP_sha1 ()) == 0) { - return FALSE; - } - if (EVP_add_digest (EVP_sha256 ()) == 0) { - return FALSE; - } - if (EVP_add_digest (EVP_sha384 ()) == 0) { - return FALSE; - } - if (EVP_add_digest (EVP_sha512 ()) == 0) { - return FALSE; - } - if (EVP_add_digest_alias (SN_sha1WithRSAEncryption, SN_sha1WithRSA) == 0) { - return FALSE; - } - - Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); - if (!Status) { - return Status; - } - - Status = FALSE; - - // - // Retrieve PKCS#7 Data (DER encoding) - // - if (SignedDataSize > INT_MAX) { - goto _Exit; - } - - Temp = SignedData; - Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &Temp, (int) SignedDataSize); - if (Pkcs7 == NULL) { - goto _Exit; - } - - // - // Check if it's PKCS#7 Signed Data (for Authenticode Scenario) - // - if (!PKCS7_type_is_signed (Pkcs7)) { - goto _Exit; - } - - // - // Read DER-encoded root certificate and Construct X509 Certificate - // - Temp = TrustedCert; - Cert = d2i_X509 (NULL, &Temp, (long) CertLength); - if (Cert == NULL) { - goto _Exit; - } - - // - // Setup X509 Store for trusted certificate - // - CertStore = X509_STORE_new (); - if (CertStore == NULL) { - goto _Exit; - } - if (!(X509_STORE_add_cert (CertStore, Cert))) { - goto _Exit; - } - - // - // For generic PKCS#7 handling, InData may be NULL if the content is present - // in PKCS#7 structure. So ignore NULL checking here. - // - DataBio = BIO_new (BIO_s_mem ()); - if (DataBio == NULL) { - goto _Exit; - } - - if (BIO_write (DataBio, InData, (int) DataLength) <= 0) { - goto _Exit; - } - - // - // Allow partial certificate chains, terminated by a non-self-signed but - // still trusted intermediate certificate. Also disable time checks. - // - X509_STORE_set_flags (CertStore, - X509_V_FLAG_PARTIAL_CHAIN | X509_V_FLAG_NO_CHECK_TIME); - - // - // OpenSSL PKCS7 Verification by default checks for SMIME (email signing) and - // doesn't support the extended key usage for Authenticode Code Signing. - // Bypass the certificate purpose checking by enabling any purposes setting. - // - X509_STORE_set_purpose (CertStore, X509_PURPOSE_ANY); - - // - // Verifies the PKCS#7 signedData structure - // - Status = (BOOLEAN) PKCS7_verify (Pkcs7, NULL, CertStore, DataBio, NULL, PKCS7_BINARY); - -_Exit: - // - // Release Resources - // - BIO_free (DataBio); - X509_free (Cert); - X509_STORE_free (CertStore); - PKCS7_free (Pkcs7); - - if (!Wrapped) { - OPENSSL_free (SignedData); - } - - return Status; -} - -/** - Extracts the attached content from a PKCS#7 signed data if existed. The input signed - data could be wrapped in a ContentInfo structure. - - If P7Data, Content, or ContentSize is NULL, then return FALSE. If P7Length overflow, - then return FALSE. If the P7Data is not correctly formatted, then return FALSE. - - Caution: This function may receive untrusted input. So this function will do - basic check for PKCS#7 data structure. - - @param[in] P7Data Pointer to the PKCS#7 signed data to process. - @param[in] P7Length Length of the PKCS#7 signed data in bytes. - @param[out] Content Pointer to the extracted content from the PKCS#7 signedData. - It's caller's responsibility to free the buffer. - @param[out] ContentSize The size of the extracted content in bytes. - - @retval TRUE The P7Data was correctly formatted for processing. - @retval FALSE The P7Data was not correctly formatted for processing. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetAttachedContent ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT VOID **Content, - OUT UINTN *ContentSize - ) -{ - BOOLEAN Status; - PKCS7 *Pkcs7; - UINT8 *SignedData; - UINTN SignedDataSize; - BOOLEAN Wrapped; - CONST UINT8 *Temp; - ASN1_OCTET_STRING *OctStr; - - // - // Check input parameter. - // - if ((P7Data == NULL) || (P7Length > INT_MAX) || (Content == NULL) || (ContentSize == NULL)) { - return FALSE; - } - - *Content = NULL; - Pkcs7 = NULL; - SignedData = NULL; - OctStr = NULL; - - Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); - if (!Status || (SignedDataSize > INT_MAX)) { - goto _Exit; - } - - Status = FALSE; - - // - // Decoding PKCS#7 SignedData - // - Temp = SignedData; - Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **)&Temp, (int)SignedDataSize); - if (Pkcs7 == NULL) { - goto _Exit; - } - - // - // The type of Pkcs7 must be signedData - // - if (!PKCS7_type_is_signed (Pkcs7)) { - goto _Exit; - } - - // - // Check for detached or attached content - // - if (PKCS7_get_detached (Pkcs7)) { - // - // No Content supplied for PKCS7 detached signedData - // - *Content = NULL; - *ContentSize = 0; - } else { - // - // Retrieve the attached content in PKCS7 signedData - // - OctStr = Pkcs7->d.sign->contents->d.data; - if ((OctStr->length > 0) && (OctStr->data != NULL)) { - *ContentSize = OctStr->length; - *Content = malloc (*ContentSize); - if (*Content == NULL) { - *ContentSize = 0; - goto _Exit; - } - CopyMem (*Content, OctStr->data, *ContentSize); - } - } - Status = TRUE; - -_Exit: - // - // Release Resources - // - PKCS7_free (Pkcs7); - - if (!Wrapped) { - OPENSSL_free (SignedData); - } - - return Status; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyNull.c deleted file mode 100644 index 06602ec535..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyNull.c +++ /dev/null @@ -1,163 +0,0 @@ -/** @file - PKCS#7 SignedData Verification Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012 - 2015, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Get the signer's certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - Return FALSE to indicate this interface is not supported. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] CertStack Pointer to Signer's certificates retrieved from P7Data. - It's caller's responsibility to free the buffer. - @param[out] StackLength Length of signer's certificates in bytes. - @param[out] TrustedCert Pointer to a trusted certificate from Signer's certificates. - It's caller's responsibility to free the buffer. - @param[out] CertLength Length of the trusted certificate in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetSigners ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **CertStack, - OUT UINTN *StackLength, - OUT UINT8 **TrustedCert, - OUT UINTN *CertLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Wrap function to use free() to free allocated memory for certificates. - - If the interface is not supported, then ASSERT(). - - @param[in] Certs Pointer to the certificates to be freed. - -**/ -VOID -EFIAPI -Pkcs7FreeSigners ( - IN UINT8 *Certs - ) -{ - ASSERT (FALSE); -} - -/** - Retrieves all embedded certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard", and outputs two certificate lists chained and - unchained to the signer's certificates. - The input signed data could be wrapped in a ContentInfo structure. - - @param[in] P7Data Pointer to the PKCS#7 message. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] SignerChainCerts Pointer to the certificates list chained to signer's - certificate. It's caller's responsibility to free the buffer. - @param[out] ChainLength Length of the chained certificates list buffer in bytes. - @param[out] UnchainCerts Pointer to the unchained certificates lists. It's caller's - responsibility to free the buffer. - @param[out] UnchainLength Length of the unchained certificates list buffer in bytes. - - @retval TRUE The operation is finished successfully. - @retval FALSE Error occurs during the operation. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetCertificatesList ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **SignerChainCerts, - OUT UINTN *ChainLength, - OUT UINT8 **UnchainCerts, - OUT UINTN *UnchainLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Verifies the validity of a PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - Return FALSE to indicate this interface is not supported. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertLength Length of the trusted certificate in bytes. - @param[in] InData Pointer to the content to be verified. - @param[in] DataLength Length of InData in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7Verify ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - IN CONST UINT8 *TrustedCert, - IN UINTN CertLength, - IN CONST UINT8 *InData, - IN UINTN DataLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Extracts the attached content from a PKCS#7 signed data if existed. The input signed - data could be wrapped in a ContentInfo structure. - - Return FALSE to indicate this interface is not supported. - - @param[in] P7Data Pointer to the PKCS#7 signed data to process. - @param[in] P7Length Length of the PKCS#7 signed data in bytes. - @param[out] Content Pointer to the extracted content from the PKCS#7 signedData. - It's caller's responsibility to free the buffer. - @param[out] ContentSize The size of the extracted content in bytes. - - @retval TRUE The P7Data was correctly formatted for processing. - @retval FALSE The P7Data was not correctly formatted for processing. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetAttachedContent ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT VOID **Content, - OUT UINTN *ContentSize - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaBasic.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaBasic.c deleted file mode 100644 index ba1bcf0f0b..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaBasic.c +++ /dev/null @@ -1,325 +0,0 @@ -/** @file - RSA Asymmetric Cipher Wrapper Implementation over OpenSSL. - - This file implements following APIs which provide basic capabilities for RSA: - 1) RsaNew - 2) RsaFree - 3) RsaSetKey - 4) RsaPkcs1Verify - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -#include -#include -#include - -/** - Allocates and initializes one RSA context for subsequent use. - - @return Pointer to the RSA context that has been initialized. - If the allocations fails, RsaNew() returns NULL. - -**/ -VOID * -EFIAPI -RsaNew ( - VOID - ) -{ - // - // Allocates & Initializes RSA Context by OpenSSL RSA_new() - // - return (VOID *) RSA_new (); -} - -/** - Release the specified RSA context. - - @param[in] RsaContext Pointer to the RSA context to be released. - -**/ -VOID -EFIAPI -RsaFree ( - IN VOID *RsaContext - ) -{ - // - // Free OpenSSL RSA Context - // - RSA_free ((RSA *) RsaContext); -} - -/** - Sets the tag-designated key component into the established RSA context. - - This function sets the tag-designated RSA key component into the established - RSA context from the user-specified non-negative integer (octet string format - represented in RSA PKCS#1). - If BigNumber is NULL, then the specified key component in RSA context is cleared. - - If RsaContext is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[in] BigNumber Pointer to octet integer buffer. - If NULL, then the specified key component in RSA - context is cleared. - @param[in] BnSize Size of big number buffer in bytes. - If BigNumber is NULL, then it is ignored. - - @retval TRUE RSA key component was set successfully. - @retval FALSE Invalid RSA key component tag. - -**/ -BOOLEAN -EFIAPI -RsaSetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - IN CONST UINT8 *BigNumber, - IN UINTN BnSize - ) -{ - RSA *RsaKey; - BIGNUM *BnN; - BIGNUM *BnE; - BIGNUM *BnD; - BIGNUM *BnP; - BIGNUM *BnQ; - BIGNUM *BnDp; - BIGNUM *BnDq; - BIGNUM *BnQInv; - - // - // Check input parameters. - // - if (RsaContext == NULL || BnSize > INT_MAX) { - return FALSE; - } - - BnN = NULL; - BnE = NULL; - BnD = NULL; - BnP = NULL; - BnQ = NULL; - BnDp = NULL; - BnDq = NULL; - BnQInv = NULL; - - // - // Retrieve the components from RSA object. - // - RsaKey = (RSA *) RsaContext; - RSA_get0_key (RsaKey, (const BIGNUM **)&BnN, (const BIGNUM **)&BnE, (const BIGNUM **)&BnD); - RSA_get0_factors (RsaKey, (const BIGNUM **)&BnP, (const BIGNUM **)&BnQ); - RSA_get0_crt_params (RsaKey, (const BIGNUM **)&BnDp, (const BIGNUM **)&BnDq, (const BIGNUM **)&BnQInv); - - // - // Set RSA Key Components by converting octet string to OpenSSL BN representation. - // NOTE: For RSA public key (used in signature verification), only public components - // (N, e) are needed. - // - switch (KeyTag) { - - // - // RSA Public Modulus (N), Public Exponent (e) and Private Exponent (d) - // - case RsaKeyN: - case RsaKeyE: - case RsaKeyD: - if (BnN == NULL) { - BnN = BN_new (); - } - if (BnE == NULL) { - BnE = BN_new (); - } - if (BnD == NULL) { - BnD = BN_new (); - } - - if ((BnN == NULL) || (BnE == NULL) || (BnD == NULL)) { - return FALSE; - } - - switch (KeyTag) { - case RsaKeyN: - BnN = BN_bin2bn (BigNumber, (UINT32)BnSize, BnN); - break; - case RsaKeyE: - BnE = BN_bin2bn (BigNumber, (UINT32)BnSize, BnE); - break; - case RsaKeyD: - BnD = BN_bin2bn (BigNumber, (UINT32)BnSize, BnD); - break; - default: - return FALSE; - } - if (RSA_set0_key (RsaKey, BN_dup(BnN), BN_dup(BnE), BN_dup(BnD)) == 0) { - return FALSE; - } - - break; - - // - // RSA Secret Prime Factor of Modulus (p and q) - // - case RsaKeyP: - case RsaKeyQ: - if (BnP == NULL) { - BnP = BN_new (); - } - if (BnQ == NULL) { - BnQ = BN_new (); - } - if ((BnP == NULL) || (BnQ == NULL)) { - return FALSE; - } - - switch (KeyTag) { - case RsaKeyP: - BnP = BN_bin2bn (BigNumber, (UINT32)BnSize, BnP); - break; - case RsaKeyQ: - BnQ = BN_bin2bn (BigNumber, (UINT32)BnSize, BnQ); - break; - default: - return FALSE; - } - if (RSA_set0_factors (RsaKey, BN_dup(BnP), BN_dup(BnQ)) == 0) { - return FALSE; - } - - break; - - // - // p's CRT Exponent (== d mod (p - 1)), q's CRT Exponent (== d mod (q - 1)), - // and CRT Coefficient (== 1/q mod p) - // - case RsaKeyDp: - case RsaKeyDq: - case RsaKeyQInv: - if (BnDp == NULL) { - BnDp = BN_new (); - } - if (BnDq == NULL) { - BnDq = BN_new (); - } - if (BnQInv == NULL) { - BnQInv = BN_new (); - } - if ((BnDp == NULL) || (BnDq == NULL) || (BnQInv == NULL)) { - return FALSE; - } - - switch (KeyTag) { - case RsaKeyDp: - BnDp = BN_bin2bn (BigNumber, (UINT32)BnSize, BnDp); - break; - case RsaKeyDq: - BnDq = BN_bin2bn (BigNumber, (UINT32)BnSize, BnDq); - break; - case RsaKeyQInv: - BnQInv = BN_bin2bn (BigNumber, (UINT32)BnSize, BnQInv); - break; - default: - return FALSE; - } - if (RSA_set0_crt_params (RsaKey, BN_dup(BnDp), BN_dup(BnDq), BN_dup(BnQInv)) == 0) { - return FALSE; - } - - break; - - default: - return FALSE; - } - - return TRUE; -} - -/** - Verifies the RSA-SSA signature with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If Signature is NULL, then return FALSE. - If HashSize is not equal to the size of MD5, SHA-1 or SHA-256 digest, then return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature verification. - @param[in] MessageHash Pointer to octet message hash to be checked. - @param[in] HashSize Size of the message hash in bytes. - @param[in] Signature Pointer to RSA PKCS1-v1_5 signature to be verified. - @param[in] SigSize Size of signature in bytes. - - @retval TRUE Valid signature encoded in PKCS1-v1_5. - @retval FALSE Invalid signature or invalid RSA context. - -**/ -BOOLEAN -EFIAPI -RsaPkcs1Verify ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashSize, - IN CONST UINT8 *Signature, - IN UINTN SigSize - ) -{ - INT32 DigestType; - UINT8 *SigBuf; - - // - // Check input parameters. - // - if (RsaContext == NULL || MessageHash == NULL || Signature == NULL) { - return FALSE; - } - - if (SigSize > INT_MAX || SigSize == 0) { - return FALSE; - } - - // - // Determine the message digest algorithm according to digest size. - // Only MD5, SHA-1 or SHA-256 algorithm is supported. - // - switch (HashSize) { - case MD5_DIGEST_SIZE: - DigestType = NID_md5; - break; - - case SHA1_DIGEST_SIZE: - DigestType = NID_sha1; - break; - - case SHA256_DIGEST_SIZE: - DigestType = NID_sha256; - break; - - default: - return FALSE; - } - - SigBuf = (UINT8 *) Signature; - return (BOOLEAN) RSA_verify ( - DigestType, - MessageHash, - (UINT32) HashSize, - SigBuf, - (UINT32) SigSize, - (RSA *) RsaContext - ); -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExt.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExt.c deleted file mode 100644 index ca32b1ecc3..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExt.c +++ /dev/null @@ -1,362 +0,0 @@ -/** @file - RSA Asymmetric Cipher Wrapper Implementation over OpenSSL. - - This file implements following APIs which provide more capabilities for RSA: - 1) RsaGetKey - 2) RsaGenerateKey - 3) RsaCheckKey - 4) RsaPkcs1Sign - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -#include -#include -#include -#include - -/** - Gets the tag-designated RSA key component from the established RSA context. - - This function retrieves the tag-designated RSA key component from the - established RSA context as a non-negative integer (octet string format - represented in RSA PKCS#1). - If specified key component has not been set or has been cleared, then returned - BnSize is set to 0. - If the BigNumber buffer is too small to hold the contents of the key, FALSE - is returned and BnSize is set to the required buffer size to obtain the key. - - If RsaContext is NULL, then return FALSE. - If BnSize is NULL, then return FALSE. - If BnSize is large enough but BigNumber is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[out] BigNumber Pointer to octet integer buffer. - @param[in, out] BnSize On input, the size of big number buffer in bytes. - On output, the size of data returned in big number buffer in bytes. - - @retval TRUE RSA key component was retrieved successfully. - @retval FALSE Invalid RSA key component tag. - @retval FALSE BnSize is too small. - -**/ -BOOLEAN -EFIAPI -RsaGetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - OUT UINT8 *BigNumber, - IN OUT UINTN *BnSize - ) -{ - RSA *RsaKey; - BIGNUM *BnKey; - UINTN Size; - - // - // Check input parameters. - // - if (RsaContext == NULL || BnSize == NULL) { - return FALSE; - } - - RsaKey = (RSA *) RsaContext; - Size = *BnSize; - *BnSize = 0; - BnKey = NULL; - - switch (KeyTag) { - - // - // RSA Public Modulus (N) - // - case RsaKeyN: - RSA_get0_key (RsaKey, (const BIGNUM **)&BnKey, NULL, NULL); - break; - - // - // RSA Public Exponent (e) - // - case RsaKeyE: - RSA_get0_key (RsaKey, NULL, (const BIGNUM **)&BnKey, NULL); - break; - - // - // RSA Private Exponent (d) - // - case RsaKeyD: - RSA_get0_key (RsaKey, NULL, NULL, (const BIGNUM **)&BnKey); - break; - - // - // RSA Secret Prime Factor of Modulus (p) - // - case RsaKeyP: - RSA_get0_factors (RsaKey, (const BIGNUM **)&BnKey, NULL); - break; - - // - // RSA Secret Prime Factor of Modules (q) - // - case RsaKeyQ: - RSA_get0_factors (RsaKey, NULL, (const BIGNUM **)&BnKey); - break; - - // - // p's CRT Exponent (== d mod (p - 1)) - // - case RsaKeyDp: - RSA_get0_crt_params (RsaKey, (const BIGNUM **)&BnKey, NULL, NULL); - break; - - // - // q's CRT Exponent (== d mod (q - 1)) - // - case RsaKeyDq: - RSA_get0_crt_params (RsaKey, NULL, (const BIGNUM **)&BnKey, NULL); - break; - - // - // The CRT Coefficient (== 1/q mod p) - // - case RsaKeyQInv: - RSA_get0_crt_params (RsaKey, NULL, NULL, (const BIGNUM **)&BnKey); - break; - - default: - return FALSE; - } - - if (BnKey == NULL) { - return FALSE; - } - - *BnSize = Size; - Size = BN_num_bytes (BnKey); - - if (*BnSize < Size) { - *BnSize = Size; - return FALSE; - } - - if (BigNumber == NULL) { - *BnSize = Size; - return TRUE; - } - *BnSize = BN_bn2bin (BnKey, BigNumber) ; - - return TRUE; -} - -/** - Generates RSA key components. - - This function generates RSA key components. It takes RSA public exponent E and - length in bits of RSA modulus N as input, and generates all key components. - If PublicExponent is NULL, the default RSA public exponent (0x10001) will be used. - - Before this function can be invoked, pseudorandom number generator must be correctly - initialized by RandomSeed(). - - If RsaContext is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] ModulusLength Length of RSA modulus N in bits. - @param[in] PublicExponent Pointer to RSA public exponent. - @param[in] PublicExponentSize Size of RSA public exponent buffer in bytes. - - @retval TRUE RSA key component was generated successfully. - @retval FALSE Invalid RSA key component tag. - -**/ -BOOLEAN -EFIAPI -RsaGenerateKey ( - IN OUT VOID *RsaContext, - IN UINTN ModulusLength, - IN CONST UINT8 *PublicExponent, - IN UINTN PublicExponentSize - ) -{ - BIGNUM *KeyE; - BOOLEAN RetVal; - - // - // Check input parameters. - // - if (RsaContext == NULL || ModulusLength > INT_MAX || PublicExponentSize > INT_MAX) { - return FALSE; - } - - KeyE = BN_new (); - if (KeyE == NULL) { - return FALSE; - } - - RetVal = FALSE; - - if (PublicExponent == NULL) { - if (BN_set_word (KeyE, 0x10001) == 0) { - goto _Exit; - } - } else { - if (BN_bin2bn (PublicExponent, (UINT32) PublicExponentSize, KeyE) == NULL) { - goto _Exit; - } - } - - if (RSA_generate_key_ex ((RSA *) RsaContext, (UINT32) ModulusLength, KeyE, NULL) == 1) { - RetVal = TRUE; - } - -_Exit: - BN_free (KeyE); - return RetVal; -} - -/** - Validates key components of RSA context. - NOTE: This function performs integrity checks on all the RSA key material, so - the RSA key structure must contain all the private key data. - - This function validates key components of RSA context in following aspects: - - Whether p is a prime - - Whether q is a prime - - Whether n = p * q - - Whether d*e = 1 mod lcm(p-1,q-1) - - If RsaContext is NULL, then return FALSE. - - @param[in] RsaContext Pointer to RSA context to check. - - @retval TRUE RSA key components are valid. - @retval FALSE RSA key components are not valid. - -**/ -BOOLEAN -EFIAPI -RsaCheckKey ( - IN VOID *RsaContext - ) -{ - UINTN Reason; - - // - // Check input parameters. - // - if (RsaContext == NULL) { - return FALSE; - } - - if (RSA_check_key ((RSA *) RsaContext) != 1) { - Reason = ERR_GET_REASON (ERR_peek_last_error ()); - if (Reason == RSA_R_P_NOT_PRIME || - Reason == RSA_R_Q_NOT_PRIME || - Reason == RSA_R_N_DOES_NOT_EQUAL_P_Q || - Reason == RSA_R_D_E_NOT_CONGRUENT_TO_1) { - return FALSE; - } - } - - return TRUE; -} - -/** - Carries out the RSA-SSA signature generation with EMSA-PKCS1-v1_5 encoding scheme. - - This function carries out the RSA-SSA signature generation with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - If the Signature buffer is too small to hold the contents of signature, FALSE - is returned and SigSize is set to the required buffer size to obtain the signature. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If HashSize is not equal to the size of MD5, SHA-1 or SHA-256 digest, then return FALSE. - If SigSize is large enough but Signature is NULL, then return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature generation. - @param[in] MessageHash Pointer to octet message hash to be signed. - @param[in] HashSize Size of the message hash in bytes. - @param[out] Signature Pointer to buffer to receive RSA PKCS1-v1_5 signature. - @param[in, out] SigSize On input, the size of Signature buffer in bytes. - On output, the size of data returned in Signature buffer in bytes. - - @retval TRUE Signature successfully generated in PKCS1-v1_5. - @retval FALSE Signature generation failed. - @retval FALSE SigSize is too small. - -**/ -BOOLEAN -EFIAPI -RsaPkcs1Sign ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashSize, - OUT UINT8 *Signature, - IN OUT UINTN *SigSize - ) -{ - RSA *Rsa; - UINTN Size; - INT32 DigestType; - - // - // Check input parameters. - // - if (RsaContext == NULL || MessageHash == NULL) { - return FALSE; - } - - Rsa = (RSA *) RsaContext; - Size = RSA_size (Rsa); - - if (*SigSize < Size) { - *SigSize = Size; - return FALSE; - } - - if (Signature == NULL) { - return FALSE; - } - - // - // Determine the message digest algorithm according to digest size. - // Only MD5, SHA-1 or SHA-256 algorithm is supported. - // - switch (HashSize) { - case MD5_DIGEST_SIZE: - DigestType = NID_md5; - break; - - case SHA1_DIGEST_SIZE: - DigestType = NID_sha1; - break; - - case SHA256_DIGEST_SIZE: - DigestType = NID_sha256; - break; - - default: - return FALSE; - } - - return (BOOLEAN) RSA_sign ( - DigestType, - MessageHash, - (UINT32) HashSize, - Signature, - (UINT32 *) SigSize, - (RSA *) RsaContext - ); -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExtNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExtNull.c deleted file mode 100644 index e44cdde44f..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptRsaExtNull.c +++ /dev/null @@ -1,125 +0,0 @@ -/** @file - RSA Asymmetric Cipher Wrapper Implementation over OpenSSL. - - This file does not provide real capabilities for following APIs in RSA handling: - 1) RsaGetKey - 2) RsaGenerateKey - 3) RsaCheckKey - 4) RsaPkcs1Sign - -Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Gets the tag-designated RSA key component from the established RSA context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[out] BigNumber Pointer to octet integer buffer. - @param[in, out] BnSize On input, the size of big number buffer in bytes. - On output, the size of data returned in big number buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - OUT UINT8 *BigNumber, - IN OUT UINTN *BnSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Generates RSA key components. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] ModulusLength Length of RSA modulus N in bits. - @param[in] PublicExponent Pointer to RSA public exponent. - @param[in] PublicExponentSize Size of RSA public exponent buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGenerateKey ( - IN OUT VOID *RsaContext, - IN UINTN ModulusLength, - IN CONST UINT8 *PublicExponent, - IN UINTN PublicExponentSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Validates key components of RSA context. - - Return FALSE to indicate this interface is not supported. - - @param[in] RsaContext Pointer to RSA context to check. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaCheckKey ( - IN VOID *RsaContext - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Carries out the RSA-SSA signature generation with EMSA-PKCS1-v1_5 encoding scheme. - - Return FALSE to indicate this interface is not supported. - - @param[in] RsaContext Pointer to RSA context for signature generation. - @param[in] MessageHash Pointer to octet message hash to be signed. - @param[in] HashSize Size of the message hash in bytes. - @param[out] Signature Pointer to buffer to receive RSA PKCS1-v1_5 signature. - @param[in, out] SigSize On input, the size of Signature buffer in bytes. - On output, the size of data returned in Signature buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaPkcs1Sign ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashSize, - OUT UINT8 *Signature, - IN OUT UINTN *SigSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTs.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTs.c deleted file mode 100644 index d63c23df09..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTs.c +++ /dev/null @@ -1,665 +0,0 @@ -/** @file - RFC3161 Timestamp Countersignature Verification over OpenSSL. - The timestamp is generated by a TimeStamping Authority (TSA) and asserts that a - publisher's signature existed before the specified time. The timestamp extends - the lifetime of the signature when a signing certificate expires or is later - revoked. - -Copyright (c) 2014 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -#include -#include -#include -#include -#include - -// -// OID ASN.1 Value for SPC_RFC3161_OBJID ("1.3.6.1.4.1.311.3.3.1") -// -UINT8 mSpcRFC3161OidValue[] = { - 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x03, 0x03, 0x01 - }; - -/// -/// The messageImprint field SHOULD contain the hash of the datum to be -/// time-stamped. The hash is represented as an OCTET STRING. Its -/// length MUST match the length of the hash value for that algorithm -/// (e.g., 20 bytes for SHA-1 or 16 bytes for MD5). -/// -/// MessageImprint ::= SEQUENCE { -/// hashAlgorithm AlgorithmIdentifier, -/// hashedMessage OCTET STRING } -/// -typedef struct { - X509_ALGOR *HashAlgorithm; - ASN1_OCTET_STRING *HashedMessage; -} TS_MESSAGE_IMPRINT; - -// -// ASN.1 Functions for TS_MESSAGE_IMPRINT -// -DECLARE_ASN1_FUNCTIONS (TS_MESSAGE_IMPRINT) -ASN1_SEQUENCE (TS_MESSAGE_IMPRINT) = { - ASN1_SIMPLE (TS_MESSAGE_IMPRINT, HashAlgorithm, X509_ALGOR), - ASN1_SIMPLE (TS_MESSAGE_IMPRINT, HashedMessage, ASN1_OCTET_STRING) -} ASN1_SEQUENCE_END (TS_MESSAGE_IMPRINT) -IMPLEMENT_ASN1_FUNCTIONS (TS_MESSAGE_IMPRINT) - -/// -/// Accuracy represents the time deviation around the UTC time contained -/// in GeneralizedTime of time-stamp token. -/// -/// Accuracy ::= SEQUENCE { -/// seconds INTEGER OPTIONAL, -/// millis [0] INTEGER (1..999) OPTIONAL, -/// micros [1] INTEGER (1..999) OPTIONAL } -/// -typedef struct { - ASN1_INTEGER *Seconds; - ASN1_INTEGER *Millis; - ASN1_INTEGER *Micros; -} TS_ACCURACY; - -// -// ASN.1 Functions for TS_ACCURACY -// -DECLARE_ASN1_FUNCTIONS (TS_ACCURACY) -ASN1_SEQUENCE (TS_ACCURACY) = { - ASN1_OPT (TS_ACCURACY, Seconds, ASN1_INTEGER), - ASN1_IMP_OPT (TS_ACCURACY, Millis, ASN1_INTEGER, 0), - ASN1_IMP_OPT (TS_ACCURACY, Micros, ASN1_INTEGER, 1) -} ASN1_SEQUENCE_END (TS_ACCURACY) -IMPLEMENT_ASN1_FUNCTIONS (TS_ACCURACY) - -/// -/// The timestamp token info resulting from a successful timestamp request, -/// as defined in RFC 3161. -/// -/// TSTInfo ::= SEQUENCE { -/// version INTEGER { v1(1) }, -/// policy TSAPolicyId, -/// messageImprint MessageImprint, -/// -- MUST have the same value as the similar field in -/// -- TimeStampReq -/// serialNumber INTEGER, -/// -- Time-Stamping users MUST be ready to accommodate integers -/// -- up to 160 bits. -/// genTime GeneralizedTime, -/// accuracy Accuracy OPTIONAL, -/// ordering BOOLEAN DEFAULT FALSE, -/// nonce INTEGER OPTIONAL, -/// -- MUST be present if the similar field was present -/// -- in TimeStampReq. In that case it MUST have the same value. -/// tsa [0] GeneralName OPTIONAL, -/// extensions [1] IMPLICIT Extensions OPTIONAL } -/// -typedef struct { - ASN1_INTEGER *Version; - ASN1_OBJECT *Policy; - TS_MESSAGE_IMPRINT *MessageImprint; - ASN1_INTEGER *SerialNumber; - ASN1_GENERALIZEDTIME *GenTime; - TS_ACCURACY *Accuracy; - ASN1_BOOLEAN Ordering; - ASN1_INTEGER *Nonce; - GENERAL_NAME *Tsa; - STACK_OF(X509_EXTENSION) *Extensions; -} TS_TST_INFO; - -// -// ASN.1 Functions for TS_TST_INFO -// -DECLARE_ASN1_FUNCTIONS (TS_TST_INFO) -ASN1_SEQUENCE (TS_TST_INFO) = { - ASN1_SIMPLE (TS_TST_INFO, Version, ASN1_INTEGER), - ASN1_SIMPLE (TS_TST_INFO, Policy, ASN1_OBJECT), - ASN1_SIMPLE (TS_TST_INFO, MessageImprint, TS_MESSAGE_IMPRINT), - ASN1_SIMPLE (TS_TST_INFO, SerialNumber, ASN1_INTEGER), - ASN1_SIMPLE (TS_TST_INFO, GenTime, ASN1_GENERALIZEDTIME), - ASN1_OPT (TS_TST_INFO, Accuracy, TS_ACCURACY), - ASN1_OPT (TS_TST_INFO, Ordering, ASN1_FBOOLEAN), - ASN1_OPT (TS_TST_INFO, Nonce, ASN1_INTEGER), - ASN1_EXP_OPT(TS_TST_INFO, Tsa, GENERAL_NAME, 0), - ASN1_IMP_SEQUENCE_OF_OPT (TS_TST_INFO, Extensions, X509_EXTENSION, 1) -} ASN1_SEQUENCE_END (TS_TST_INFO) -IMPLEMENT_ASN1_FUNCTIONS (TS_TST_INFO) - - -/** - Convert ASN.1 GeneralizedTime to EFI Time. - - @param[in] Asn1Time Pointer to the ASN.1 GeneralizedTime to be converted. - @param[out] SigningTime Return the corresponding EFI Time. - - @retval TRUE The time convertion succeeds. - @retval FALSE Invalid parameters. - -**/ -BOOLEAN -EFIAPI -ConvertAsn1TimeToEfiTime ( - IN ASN1_TIME *Asn1Time, - OUT EFI_TIME *EfiTime - ) -{ - CONST CHAR8 *Str; - UINTN Index; - - if ((Asn1Time == NULL) || (EfiTime == NULL)) { - return FALSE; - } - - Str = (CONST CHAR8*)Asn1Time->data; - SetMem (EfiTime, 0, sizeof (EFI_TIME)); - - Index = 0; - if (Asn1Time->type == V_ASN1_UTCTIME) { /* two digit year */ - EfiTime->Year = (Str[Index++] - '0') * 10; - EfiTime->Year += (Str[Index++] - '0'); - if (EfiTime->Year < 70) { - EfiTime->Year += 100; - } - } else if (Asn1Time->type == V_ASN1_GENERALIZEDTIME) { /* four digit year */ - EfiTime->Year = (Str[Index++] - '0') * 1000; - EfiTime->Year += (Str[Index++] - '0') * 100; - EfiTime->Year += (Str[Index++] - '0') * 10; - EfiTime->Year += (Str[Index++] - '0'); - if ((EfiTime->Year < 1900) || (EfiTime->Year > 9999)) { - return FALSE; - } - } - - EfiTime->Month = (Str[Index++] - '0') * 10; - EfiTime->Month += (Str[Index++] - '0'); - if ((EfiTime->Month < 1) || (EfiTime->Month > 12)) { - return FALSE; - } - - EfiTime->Day = (Str[Index++] - '0') * 10; - EfiTime->Day += (Str[Index++] - '0'); - if ((EfiTime->Day < 1) || (EfiTime->Day > 31)) { - return FALSE; - } - - EfiTime->Hour = (Str[Index++] - '0') * 10; - EfiTime->Hour += (Str[Index++] - '0'); - if (EfiTime->Hour > 23) { - return FALSE; - } - - EfiTime->Minute = (Str[Index++] - '0') * 10; - EfiTime->Minute += (Str[Index++] - '0'); - if (EfiTime->Minute > 59) { - return FALSE; - } - - EfiTime->Second = (Str[Index++] - '0') * 10; - EfiTime->Second += (Str[Index++] - '0'); - if (EfiTime->Second > 59) { - return FALSE; - } - - /* Note: we did not adjust the time based on time zone information */ - - return TRUE; -} - -/** - - Check the validity of TimeStamp Token Information. - - @param[in] TstInfo Pointer to the TS_TST_INFO structure. - @param[in] TimestampedData Pointer to the data to be time-stamped. - @param[in] DataSize Size of timestamped data in bytes. - - @retval TRUE The TimeStamp Token Information is valid. - @retval FALSE Invalid TimeStamp Token Information. - -**/ -BOOLEAN -EFIAPI -CheckTSTInfo ( - IN CONST TS_TST_INFO *TstInfo, - IN CONST UINT8 *TimestampedData, - IN UINTN DataSize - ) -{ - BOOLEAN Status; - TS_MESSAGE_IMPRINT *Imprint; - X509_ALGOR *HashAlgo; - CONST EVP_MD *Md; - EVP_MD_CTX *MdCtx; - UINTN MdSize; - UINT8 *HashedMsg; - - // - // Initialization - // - Status = FALSE; - HashAlgo = NULL; - HashedMsg = NULL; - MdCtx = NULL; - - // - // -- Check version number of Timestamp: - // The version field (currently v1) describes the version of the time-stamp token. - // Conforming time-stamping servers MUST be able to provide version 1 time-stamp tokens. - // - if ((ASN1_INTEGER_get (TstInfo->Version)) != 1) { - return FALSE; - } - - // - // -- Check Policies - // The policy field MUST indicate the TSA's policy under which the response was produced. - // - if (TstInfo->Policy == NULL) { - /// NOTE: Need to check if the requested and returned policies. - /// We have no information about the Requested TSA Policy. - return FALSE; - } - - // - // -- Compute & Check Message Imprint - // - Imprint = TstInfo->MessageImprint; - HashAlgo = X509_ALGOR_dup (Imprint->HashAlgorithm); - - Md = EVP_get_digestbyobj (HashAlgo->algorithm); - if (Md == NULL) { - goto _Exit; - } - - MdSize = EVP_MD_size (Md); - HashedMsg = AllocateZeroPool (MdSize); - if (HashedMsg == NULL) { - goto _Exit; - } - MdCtx = EVP_MD_CTX_new (); - if (MdCtx == NULL) { - goto _Exit; - } - if ((EVP_DigestInit_ex (MdCtx, Md, NULL) != 1) || - (EVP_DigestUpdate (MdCtx, TimestampedData, DataSize) != 1) || - (EVP_DigestFinal (MdCtx, HashedMsg, NULL) != 1)) { - goto _Exit; - } - if ((MdSize == (UINTN)ASN1_STRING_length (Imprint->HashedMessage)) && - (CompareMem (HashedMsg, ASN1_STRING_get0_data (Imprint->HashedMessage), MdSize) != 0)) { - goto _Exit; - } - - // - // -- Check Nonces - // - if (TstInfo->Nonce != NULL) { - // - // Nonces is optional, No error if no nonce is returned; - // - } - - // - // -- Check if the TSA name and signer certificate is matched. - // - if (TstInfo->Tsa != NULL) { - // - // Ignored the optional Tsa field checking. - // - } - - Status = TRUE; - -_Exit: - X509_ALGOR_free (HashAlgo); - EVP_MD_CTX_free (MdCtx); - if (HashedMsg != NULL) { - FreePool (HashedMsg); - } - - return Status; -} - -/** - Verifies the validity of a TimeStamp Token as described in RFC 3161 ("Internet - X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)"). - - If TSToken is NULL, then return FALSE. - If TimestampedData is NULL, then return FALSE. - - @param[in] TSToken Pointer to the RFC3161 TimeStamp Token, which is generated - by a TSA and located in the software publisher's SignerInfo - structure. - @param[in] TokenSize Size of the TimeStamp Token in bytes. - @param[in] TsaCert Pointer to a trusted/root TSA certificate encoded in DER. - @param[in] CertSize Size of the trusted TSA certificate in bytes. - @param[in] TimestampedData Pointer to the data to be time-stamped. - @param[in] DataSize Size of timestamped data in bytes. - @param[out] SigningTime Return the time of timestamp generation time if the timestamp - signature is valid. - - @retval TRUE The specified timestamp token is valid. - @retval FALSE Invalid timestamp token. - -**/ -BOOLEAN -EFIAPI -TimestampTokenVerify ( - IN CONST UINT8 *TSToken, - IN UINTN TokenSize, - IN CONST UINT8 *TsaCert, - IN UINTN CertSize, - IN CONST UINT8 *TimestampedData, - IN UINTN DataSize, - OUT EFI_TIME *SigningTime - ) -{ - BOOLEAN Status; - CONST UINT8 *TokenTemp; - PKCS7 *Pkcs7; - X509 *Cert; - CONST UINT8 *CertTemp; - X509_STORE *CertStore; - BIO *OutBio; - UINT8 *TstData; - UINTN TstSize; - CONST UINT8 *TstTemp; - TS_TST_INFO *TstInfo; - - Status = FALSE; - - // - // Check input parameters - // - if ((TSToken == NULL) || (TsaCert == NULL) || (TimestampedData == NULL) || - (TokenSize > INT_MAX) || (CertSize > INT_MAX) || (DataSize > INT_MAX)) { - return FALSE; - } - - // - // Initializations - // - if (SigningTime != NULL) { - SetMem (SigningTime, sizeof (EFI_TIME), 0); - } - Pkcs7 = NULL; - Cert = NULL; - CertStore = NULL; - OutBio = NULL; - TstData = NULL; - TstInfo = NULL; - - // - // TimeStamp Token should contain one valid DER-encoded ASN.1 PKCS#7 structure. - // - TokenTemp = TSToken; - Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &TokenTemp, (int) TokenSize); - if (Pkcs7 == NULL) { - goto _Exit; - } - - // - // The timestamp signature (TSA's response) will be one PKCS#7 signed data. - // - if (!PKCS7_type_is_signed (Pkcs7)) { - goto _Exit; - } - - // - // Read the trusted TSA certificate (DER-encoded), and Construct X509 Certificate. - // - CertTemp = TsaCert; - Cert = d2i_X509 (NULL, &CertTemp, (long) CertSize); - if (Cert == NULL) { - goto _Exit; - } - - // - // Setup X509 Store for trusted certificate. - // - CertStore = X509_STORE_new (); - if ((CertStore == NULL) || !(X509_STORE_add_cert (CertStore, Cert))) { - goto _Exit; - } - - // - // Allow partial certificate chains, terminated by a non-self-signed but - // still trusted intermediate certificate. Also disable time checks. - // - X509_STORE_set_flags (CertStore, - X509_V_FLAG_PARTIAL_CHAIN | X509_V_FLAG_NO_CHECK_TIME); - - X509_STORE_set_purpose (CertStore, X509_PURPOSE_ANY); - - // - // Verifies the PKCS#7 signedData structure, and output the signed contents. - // - OutBio = BIO_new (BIO_s_mem ()); - if (OutBio == NULL) { - goto _Exit; - } - if (!PKCS7_verify (Pkcs7, NULL, CertStore, NULL, OutBio, PKCS7_BINARY)) { - goto _Exit; - } - - // - // Read the signed contents detached in timestamp signature. - // - TstData = AllocateZeroPool (2048); - if (TstData == NULL) { - goto _Exit; - } - TstSize = BIO_read (OutBio, (void *) TstData, 2048); - - // - // Construct TS_TST_INFO structure from the signed contents. - // - TstTemp = TstData; - TstInfo = d2i_TS_TST_INFO (NULL, (const unsigned char **) &TstTemp, - (int)TstSize); - if (TstInfo == NULL) { - goto _Exit; - } - - // - // Check TS_TST_INFO structure. - // - Status = CheckTSTInfo (TstInfo, TimestampedData, DataSize); - if (!Status) { - goto _Exit; - } - - // - // Retrieve the signing time from TS_TST_INFO structure. - // - if (SigningTime != NULL) { - SetMem (SigningTime, sizeof (EFI_TIME), 0); - Status = ConvertAsn1TimeToEfiTime (TstInfo->GenTime, SigningTime); - } - -_Exit: - // - // Release Resources - // - PKCS7_free (Pkcs7); - X509_free (Cert); - X509_STORE_free (CertStore); - BIO_free (OutBio); - TS_TST_INFO_free (TstInfo); - - if (TstData != NULL) { - FreePool (TstData); - } - - return Status; -} - -/** - Verifies the validity of a RFC3161 Timestamp CounterSignature embedded in PE/COFF Authenticode - signature. - - If AuthData is NULL, then return FALSE. - - @param[in] AuthData Pointer to the Authenticode Signature retrieved from signed - PE/COFF image to be verified. - @param[in] DataSize Size of the Authenticode Signature in bytes. - @param[in] TsaCert Pointer to a trusted/root TSA certificate encoded in DER, which - is used for TSA certificate chain verification. - @param[in] CertSize Size of the trusted certificate in bytes. - @param[out] SigningTime Return the time of timestamp generation time if the timestamp - signature is valid. - - @retval TRUE The specified Authenticode includes a valid RFC3161 Timestamp CounterSignature. - @retval FALSE No valid RFC3161 Timestamp CounterSignature in the specified Authenticode data. - -**/ -BOOLEAN -EFIAPI -ImageTimestampVerify ( - IN CONST UINT8 *AuthData, - IN UINTN DataSize, - IN CONST UINT8 *TsaCert, - IN UINTN CertSize, - OUT EFI_TIME *SigningTime - ) -{ - BOOLEAN Status; - PKCS7 *Pkcs7; - CONST UINT8 *Temp; - STACK_OF(PKCS7_SIGNER_INFO) *SignerInfos; - PKCS7_SIGNER_INFO *SignInfo; - UINTN Index; - STACK_OF(X509_ATTRIBUTE) *Sk; - X509_ATTRIBUTE *Xa; - ASN1_OBJECT *XaObj; - ASN1_TYPE *Asn1Type; - ASN1_OCTET_STRING *EncDigest; - UINT8 *TSToken; - UINTN TokenSize; - - // - // Input Parameters Checking. - // - if ((AuthData == NULL) || (TsaCert == NULL)) { - return FALSE; - } - - if ((DataSize > INT_MAX) || (CertSize > INT_MAX)) { - return FALSE; - } - - // - // Register & Initialize necessary digest algorithms for PKCS#7 Handling. - // - if ((EVP_add_digest (EVP_md5 ()) == 0) || (EVP_add_digest (EVP_sha1 ()) == 0) || - (EVP_add_digest (EVP_sha256 ()) == 0) || (EVP_add_digest_alias (SN_sha1WithRSAEncryption, SN_sha1WithRSA)) == 0) { - return FALSE; - } - - // - // Initialization. - // - Status = FALSE; - Pkcs7 = NULL; - SignInfo = NULL; - - // - // Decode ASN.1-encoded Authenticode data into PKCS7 structure. - // - Temp = AuthData; - Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &Temp, (int) DataSize); - if (Pkcs7 == NULL) { - goto _Exit; - } - - // - // Check if there is one and only one signer. - // - SignerInfos = PKCS7_get_signer_info (Pkcs7); - if (!SignerInfos || (sk_PKCS7_SIGNER_INFO_num (SignerInfos) != 1)) { - goto _Exit; - } - - // - // Locate the TimeStamp CounterSignature. - // - SignInfo = sk_PKCS7_SIGNER_INFO_value (SignerInfos, 0); - if (SignInfo == NULL) { - goto _Exit; - } - - // - // Locate Message Digest which will be the data to be time-stamped. - // - EncDigest = SignInfo->enc_digest; - if (EncDigest == NULL) { - goto _Exit; - } - - // - // The RFC3161 timestamp counterSignature is contained in unauthenticatedAttributes field - // of SignerInfo. - // - Sk = SignInfo->unauth_attr; - if (Sk == NULL) { // No timestamp counterSignature. - goto _Exit; - } - - Asn1Type = NULL; - for (Index = 0; Index < (UINTN) sk_X509_ATTRIBUTE_num (Sk); Index++) { - // - // Search valid RFC3161 timestamp counterSignature based on OBJID. - // - Xa = sk_X509_ATTRIBUTE_value (Sk, (int)Index); - if (Xa == NULL) { - continue; - } - XaObj = X509_ATTRIBUTE_get0_object(Xa); - if (XaObj == NULL) { - continue; - } - if ((OBJ_length(XaObj) != sizeof (mSpcRFC3161OidValue)) || - (CompareMem (OBJ_get0_data(XaObj), mSpcRFC3161OidValue, sizeof (mSpcRFC3161OidValue)) != 0)) { - continue; - } - Asn1Type = X509_ATTRIBUTE_get0_type(Xa, 0); - } - - if (Asn1Type == NULL) { - Status = FALSE; - goto _Exit; - } - TSToken = Asn1Type->value.octet_string->data; - TokenSize = Asn1Type->value.octet_string->length; - - // - // TimeStamp counterSignature (Token) verification. - // - Status = TimestampTokenVerify ( - TSToken, - TokenSize, - TsaCert, - CertSize, - EncDigest->data, - EncDigest->length, - SigningTime - ); - -_Exit: - // - // Release Resources - // - PKCS7_free (Pkcs7); - - return Status; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTsNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTsNull.c deleted file mode 100644 index a43f733c86..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptTsNull.c +++ /dev/null @@ -1,48 +0,0 @@ -/** @file - RFC3161 Timestamp Countersignature Verification Wrapper Implementation which does - not provide real capabilities. - -Copyright (c) 2014, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Verifies the validity of a RFC3161 Timestamp CounterSignature embedded in PE/COFF Authenticode - signature. - - Return FALSE to indicate this interface is not supported. - - @param[in] AuthData Pointer to the Authenticode Signature retrieved from signed - PE/COFF image to be verified. - @param[in] DataSize Size of the Authenticode Signature in bytes. - @param[in] TsaCert Pointer to a trusted/root TSA certificate encoded in DER, which - is used for TSA certificate chain verification. - @param[in] CertSize Size of the trusted certificate in bytes. - @param[out] SigningTime Return the time of timestamp generation time if the timestamp - signature is valid. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -ImageTimestampVerify ( - IN CONST UINT8 *AuthData, - IN UINTN DataSize, - IN CONST UINT8 *TsaCert, - IN UINTN CertSize, - OUT EFI_TIME *SigningTime - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509.c deleted file mode 100644 index 7d275977c5..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509.c +++ /dev/null @@ -1,587 +0,0 @@ -/** @file - X.509 Certificate Handler Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include -#include - -/** - Construct a X509 object from DER-encoded certificate data. - - If Cert is NULL, then return FALSE. - If SingleX509Cert is NULL, then return FALSE. - - @param[in] Cert Pointer to the DER-encoded certificate data. - @param[in] CertSize The size of certificate data in bytes. - @param[out] SingleX509Cert The generated X509 object. - - @retval TRUE The X509 object generation succeeded. - @retval FALSE The operation failed. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificate ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **SingleX509Cert - ) -{ - X509 *X509Cert; - CONST UINT8 *Temp; - - // - // Check input parameters. - // - if (Cert == NULL || SingleX509Cert == NULL || CertSize > INT_MAX) { - return FALSE; - } - - // - // Read DER-encoded X509 Certificate and Construct X509 object. - // - Temp = Cert; - X509Cert = d2i_X509 (NULL, &Temp, (long) CertSize); - if (X509Cert == NULL) { - return FALSE; - } - - *SingleX509Cert = (UINT8 *) X509Cert; - - return TRUE; -} - -/** - Construct a X509 stack object from a list of DER-encoded certificate data. - - If X509Stack is NULL, then return FALSE. - - @param[in, out] X509Stack On input, pointer to an existing or NULL X509 stack object. - On output, pointer to the X509 stack object with new - inserted X509 certificate. - @param ... A list of DER-encoded single certificate data followed - by certificate size. A NULL terminates the list. The - pairs are the arguments to X509ConstructCertificate(). - - @retval TRUE The X509 stack construction succeeded. - @retval FALSE The construction operation failed. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificateStack ( - IN OUT UINT8 **X509Stack, - ... - ) -{ - UINT8 *Cert; - UINTN CertSize; - X509 *X509Cert; - STACK_OF(X509) *CertStack; - BOOLEAN Status; - VA_LIST Args; - UINTN Index; - - // - // Check input parameters. - // - if (X509Stack == NULL) { - return FALSE; - } - - Status = FALSE; - - // - // Initialize X509 stack object. - // - CertStack = (STACK_OF(X509) *) (*X509Stack); - if (CertStack == NULL) { - CertStack = sk_X509_new_null (); - if (CertStack == NULL) { - return Status; - } - } - - VA_START (Args, X509Stack); - - for (Index = 0; ; Index++) { - // - // If Cert is NULL, then it is the end of the list. - // - Cert = VA_ARG (Args, UINT8 *); - if (Cert == NULL) { - break; - } - - CertSize = VA_ARG (Args, UINTN); - if (CertSize == 0) { - break; - } - - // - // Construct X509 Object from the given DER-encoded certificate data. - // - X509Cert = NULL; - Status = X509ConstructCertificate ( - (CONST UINT8 *) Cert, - CertSize, - (UINT8 **) &X509Cert - ); - if (!Status) { - if (X509Cert != NULL) { - X509_free (X509Cert); - } - break; - } - - // - // Insert the new X509 object into X509 stack object. - // - sk_X509_push (CertStack, X509Cert); - } - - VA_END (Args); - - if (!Status) { - sk_X509_pop_free (CertStack, X509_free); - } else { - *X509Stack = (UINT8 *) CertStack; - } - - return Status; -} - -/** - Release the specified X509 object. - - If X509Cert is NULL, then return FALSE. - - @param[in] X509Cert Pointer to the X509 object to be released. - -**/ -VOID -EFIAPI -X509Free ( - IN VOID *X509Cert - ) -{ - // - // Check input parameters. - // - if (X509Cert == NULL) { - return; - } - - // - // Free OpenSSL X509 object. - // - X509_free ((X509 *) X509Cert); -} - -/** - Release the specified X509 stack object. - - If X509Stack is NULL, then return FALSE. - - @param[in] X509Stack Pointer to the X509 stack object to be released. - -**/ -VOID -EFIAPI -X509StackFree ( - IN VOID *X509Stack - ) -{ - // - // Check input parameters. - // - if (X509Stack == NULL) { - return; - } - - // - // Free OpenSSL X509 stack object. - // - sk_X509_pop_free ((STACK_OF(X509) *) X509Stack, X509_free); -} - -/** - Retrieve the subject bytes from one X.509 certificate. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] CertSubject Pointer to the retrieved certificate subject bytes. - @param[in, out] SubjectSize The size in bytes of the CertSubject buffer on input, - and the size of buffer returned CertSubject on output. - - If Cert is NULL, then return FALSE. - If SubjectSize is NULL, then return FALSE. - - @retval TRUE The certificate subject retrieved successfully. - @retval FALSE Invalid certificate, or the SubjectSize is too small for the result. - The SubjectSize will be updated with the required size. - -**/ -BOOLEAN -EFIAPI -X509GetSubjectName ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 *CertSubject, - IN OUT UINTN *SubjectSize - ) -{ - BOOLEAN Status; - X509 *X509Cert; - X509_NAME *X509Name; - UINTN X509NameSize; - - // - // Check input parameters. - // - if (Cert == NULL || SubjectSize == NULL) { - return FALSE; - } - - X509Cert = NULL; - - // - // Read DER-encoded X509 Certificate and Construct X509 object. - // - Status = X509ConstructCertificate (Cert, CertSize, (UINT8 **) &X509Cert); - if ((X509Cert == NULL) || (!Status)) { - Status = FALSE; - goto _Exit; - } - - Status = FALSE; - - // - // Retrieve subject name from certificate object. - // - X509Name = X509_get_subject_name (X509Cert); - if (X509Name == NULL) { - goto _Exit; - } - - X509NameSize = i2d_X509_NAME(X509Name, NULL); - if (*SubjectSize < X509NameSize) { - *SubjectSize = X509NameSize; - goto _Exit; - } - *SubjectSize = X509NameSize; - if (CertSubject != NULL) { - i2d_X509_NAME(X509Name, &CertSubject); - Status = TRUE; - } - -_Exit: - // - // Release Resources. - // - if (X509Cert != NULL) { - X509_free (X509Cert); - } - - return Status; -} - -/** - Retrieve the RSA Public Key from one DER-encoded X509 certificate. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA public key component. Use RsaFree() function to free the - resource. - - If Cert is NULL, then return FALSE. - If RsaContext is NULL, then return FALSE. - - @retval TRUE RSA Public Key was retrieved successfully. - @retval FALSE Fail to retrieve RSA public key from X509 certificate. - -**/ -BOOLEAN -EFIAPI -RsaGetPublicKeyFromX509 ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT VOID **RsaContext - ) -{ - BOOLEAN Status; - EVP_PKEY *Pkey; - X509 *X509Cert; - - // - // Check input parameters. - // - if (Cert == NULL || RsaContext == NULL) { - return FALSE; - } - - Pkey = NULL; - X509Cert = NULL; - - // - // Read DER-encoded X509 Certificate and Construct X509 object. - // - Status = X509ConstructCertificate (Cert, CertSize, (UINT8 **) &X509Cert); - if ((X509Cert == NULL) || (!Status)) { - Status = FALSE; - goto _Exit; - } - - Status = FALSE; - - // - // Retrieve and check EVP_PKEY data from X509 Certificate. - // - Pkey = X509_get_pubkey (X509Cert); - if ((Pkey == NULL) || (EVP_PKEY_id (Pkey) != EVP_PKEY_RSA)) { - goto _Exit; - } - - // - // Duplicate RSA Context from the retrieved EVP_PKEY. - // - if ((*RsaContext = RSAPublicKey_dup (EVP_PKEY_get0_RSA (Pkey))) != NULL) { - Status = TRUE; - } - -_Exit: - // - // Release Resources. - // - if (X509Cert != NULL) { - X509_free (X509Cert); - } - - if (Pkey != NULL) { - EVP_PKEY_free (Pkey); - } - - return Status; -} - -/** - Verify one X509 certificate was issued by the trusted CA. - - @param[in] Cert Pointer to the DER-encoded X509 certificate to be verified. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[in] CACert Pointer to the DER-encoded trusted CA certificate. - @param[in] CACertSize Size of the CA Certificate in bytes. - - If Cert is NULL, then return FALSE. - If CACert is NULL, then return FALSE. - - @retval TRUE The certificate was issued by the trusted CA. - @retval FALSE Invalid certificate or the certificate was not issued by the given - trusted CA. - -**/ -BOOLEAN -EFIAPI -X509VerifyCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - IN CONST UINT8 *CACert, - IN UINTN CACertSize - ) -{ - BOOLEAN Status; - X509 *X509Cert; - X509 *X509CACert; - X509_STORE *CertStore; - X509_STORE_CTX *CertCtx; - - // - // Check input parameters. - // - if (Cert == NULL || CACert == NULL) { - return FALSE; - } - - Status = FALSE; - X509Cert = NULL; - X509CACert = NULL; - CertStore = NULL; - CertCtx = NULL; - - // - // Register & Initialize necessary digest algorithms for certificate verification. - // - if (EVP_add_digest (EVP_md5 ()) == 0) { - goto _Exit; - } - if (EVP_add_digest (EVP_sha1 ()) == 0) { - goto _Exit; - } - if (EVP_add_digest (EVP_sha256 ()) == 0) { - goto _Exit; - } - - // - // Read DER-encoded certificate to be verified and Construct X509 object. - // - Status = X509ConstructCertificate (Cert, CertSize, (UINT8 **) &X509Cert); - if ((X509Cert == NULL) || (!Status)) { - Status = FALSE; - goto _Exit; - } - - // - // Read DER-encoded root certificate and Construct X509 object. - // - Status = X509ConstructCertificate (CACert, CACertSize, (UINT8 **) &X509CACert); - if ((X509CACert == NULL) || (!Status)) { - Status = FALSE; - goto _Exit; - } - - Status = FALSE; - - // - // Set up X509 Store for trusted certificate. - // - CertStore = X509_STORE_new (); - if (CertStore == NULL) { - goto _Exit; - } - if (!(X509_STORE_add_cert (CertStore, X509CACert))) { - goto _Exit; - } - - // - // Allow partial certificate chains, terminated by a non-self-signed but - // still trusted intermediate certificate. Also disable time checks. - // - X509_STORE_set_flags (CertStore, - X509_V_FLAG_PARTIAL_CHAIN | X509_V_FLAG_NO_CHECK_TIME); - - // - // Set up X509_STORE_CTX for the subsequent verification operation. - // - CertCtx = X509_STORE_CTX_new (); - if (CertCtx == NULL) { - goto _Exit; - } - if (!X509_STORE_CTX_init (CertCtx, CertStore, X509Cert, NULL)) { - goto _Exit; - } - - // - // X509 Certificate Verification. - // - Status = (BOOLEAN) X509_verify_cert (CertCtx); - X509_STORE_CTX_cleanup (CertCtx); - -_Exit: - // - // Release Resources. - // - if (X509Cert != NULL) { - X509_free (X509Cert); - } - - if (X509CACert != NULL) { - X509_free (X509CACert); - } - - if (CertStore != NULL) { - X509_STORE_free (CertStore); - } - - X509_STORE_CTX_free (CertCtx); - - return Status; -} - -/** - Retrieve the TBSCertificate from one given X.509 certificate. - - @param[in] Cert Pointer to the given DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] TBSCert DER-Encoded To-Be-Signed certificate. - @param[out] TBSCertSize Size of the TBS certificate in bytes. - - If Cert is NULL, then return FALSE. - If TBSCert is NULL, then return FALSE. - If TBSCertSize is NULL, then return FALSE. - - @retval TRUE The TBSCertificate was retrieved successfully. - @retval FALSE Invalid X.509 certificate. - -**/ -BOOLEAN -EFIAPI -X509GetTBSCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **TBSCert, - OUT UINTN *TBSCertSize - ) -{ - CONST UINT8 *Temp; - INTN Asn1Tag; - INTN ObjClass; - UINTN Length; - - // - // Check input parameters. - // - if ((Cert == NULL) || (TBSCert == NULL) || - (TBSCertSize == NULL) || (CertSize > INT_MAX)) { - return FALSE; - } - - // - // An X.509 Certificate is: (defined in RFC3280) - // Certificate ::= SEQUENCE { - // tbsCertificate TBSCertificate, - // signatureAlgorithm AlgorithmIdentifier, - // signature BIT STRING } - // - // and - // - // TBSCertificate ::= SEQUENCE { - // version [0] Version DEFAULT v1, - // ... - // } - // - // So we can just ASN1-parse the x.509 DER-encoded data. If we strip - // the first SEQUENCE, the second SEQUENCE is the TBSCertificate. - // - Temp = Cert; - ASN1_get_object (&Temp, (long *)&Length, (int *)&Asn1Tag, (int *)&ObjClass, (long)CertSize); - - if (Asn1Tag != V_ASN1_SEQUENCE) { - return FALSE; - } - - *TBSCert = (UINT8 *)Temp; - - ASN1_get_object (&Temp, (long *)&Length, (int *)&Asn1Tag, (int *)&ObjClass, (long)Length); - // - // Verify the parsed TBSCertificate is one correct SEQUENCE data. - // - if (Asn1Tag != V_ASN1_SEQUENCE) { - return FALSE; - } - - *TBSCertSize = Length + (Temp - *TBSCert); - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509Null.c b/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509Null.c deleted file mode 100644 index 51aa0633a8..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Pk/CryptX509Null.c +++ /dev/null @@ -1,206 +0,0 @@ -/** @file - X.509 Certificate Handler Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Construct a X509 object from DER-encoded certificate data. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded certificate data. - @param[in] CertSize The size of certificate data in bytes. - @param[out] SingleX509Cert The generated X509 object. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificate ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **SingleX509Cert - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Construct a X509 stack object from a list of DER-encoded certificate data. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] X509Stack On input, pointer to an existing or NULL X509 stack object. - On output, pointer to the X509 stack object with new - inserted X509 certificate. - @param ... A list of DER-encoded single certificate data followed - by certificate size. A NULL terminates the list. The - pairs are the arguments to X509ConstructCertificate(). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificateStack ( - IN OUT UINT8 **X509Stack, - ... - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Release the specified X509 object. - - If the interface is not supported, then ASSERT(). - - @param[in] X509Cert Pointer to the X509 object to be released. - -**/ -VOID -EFIAPI -X509Free ( - IN VOID *X509Cert - ) -{ - ASSERT (FALSE); -} - -/** - Release the specified X509 stack object. - - If the interface is not supported, then ASSERT(). - - @param[in] X509Stack Pointer to the X509 stack object to be released. - -**/ -VOID -EFIAPI -X509StackFree ( - IN VOID *X509Stack - ) -{ - ASSERT (FALSE); -} - -/** - Retrieve the subject bytes from one X.509 certificate. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] CertSubject Pointer to the retrieved certificate subject bytes. - @param[in, out] SubjectSize The size in bytes of the CertSubject buffer on input, - and the size of buffer returned CertSubject on output. - - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509GetSubjectName ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 *CertSubject, - IN OUT UINTN *SubjectSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Retrieve the RSA Public Key from one DER-encoded X509 certificate. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA public key component. Use RsaFree() function to free the - resource. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetPublicKeyFromX509 ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT VOID **RsaContext - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Verify one X509 certificate was issued by the trusted CA. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded X509 certificate to be verified. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[in] CACert Pointer to the DER-encoded trusted CA certificate. - @param[in] CACertSize Size of the CA Certificate in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509VerifyCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - IN CONST UINT8 *CACert, - IN UINTN CACertSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Retrieve the TBSCertificate from one given X.509 certificate. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the given DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] TBSCert DER-Encoded To-Be-Signed certificate. - @param[out] TBSCertSize Size of the TBS certificate in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509GetTBSCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **TBSCert, - OUT UINTN *TBSCertSize - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRand.c b/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRand.c deleted file mode 100644 index fd3c6d4adb..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRand.c +++ /dev/null @@ -1,110 +0,0 @@ -/** @file - Pseudorandom Number Generator Wrapper Implementation over OpenSSL. - -Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include -#include - -// -// Default seed for UEFI Crypto Library -// -CONST UINT8 DefaultSeed[] = "UEFI Crypto Library default seed"; - -/** - Sets up the seed value for the pseudorandom number generator. - - This function sets up the seed value for the pseudorandom number generator. - If Seed is not NULL, then the seed passed in is used. - If Seed is NULL, then default seed is used. - - @param[in] Seed Pointer to seed value. - If NULL, default seed is used. - @param[in] SeedSize Size of seed value. - If Seed is NULL, this parameter is ignored. - - @retval TRUE Pseudorandom number generator has enough entropy for random generation. - @retval FALSE Pseudorandom number generator does not have enough entropy for random generation. - -**/ -BOOLEAN -EFIAPI -RandomSeed ( - IN CONST UINT8 *Seed OPTIONAL, - IN UINTN SeedSize - ) -{ - if (SeedSize > INT_MAX) { - return FALSE; - } - - // - // The software PRNG implementation built in OpenSSL depends on message digest algorithm. - // Make sure SHA-1 digest algorithm is available here. - // - if (EVP_add_digest (EVP_sha1 ()) == 0) { - return FALSE; - } - - // - // Seed the pseudorandom number generator with user-supplied value. - // NOTE: A cryptographic PRNG must be seeded with unpredictable data. - // - if (Seed != NULL) { - RAND_seed (Seed, (UINT32) SeedSize); - } else { - RAND_seed (DefaultSeed, sizeof (DefaultSeed)); - } - - if (RAND_status () == 1) { - return TRUE; - } - - return FALSE; -} - -/** - Generates a pseudorandom byte stream of the specified size. - - If Output is NULL, then return FALSE. - - @param[out] Output Pointer to buffer to receive random value. - @param[in] Size Size of random bytes to generate. - - @retval TRUE Pseudorandom byte stream generated successfully. - @retval FALSE Pseudorandom number generator fails to generate due to lack of entropy. - -**/ -BOOLEAN -EFIAPI -RandomBytes ( - OUT UINT8 *Output, - IN UINTN Size - ) -{ - // - // Check input parameters. - // - if (Output == NULL || Size > INT_MAX) { - return FALSE; - } - - // - // Generate random data. - // - if (RAND_bytes (Output, (UINT32) Size) != 1) { - return FALSE; - } - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandItc.c b/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandItc.c deleted file mode 100644 index 3db5157a37..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandItc.c +++ /dev/null @@ -1,118 +0,0 @@ -/** @file - Pseudorandom Number Generator Wrapper Implementation over OpenSSL. - -Copyright (c) 2012 - 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include -#include -#include - -/** - Sets up the seed value for the pseudorandom number generator. - - This function sets up the seed value for the pseudorandom number generator. - If Seed is not NULL, then the seed passed in is used. - If Seed is NULL, then default seed is used. - - @param[in] Seed Pointer to seed value. - If NULL, default seed is used. - @param[in] SeedSize Size of seed value. - If Seed is NULL, this parameter is ignored. - - @retval TRUE Pseudorandom number generator has enough entropy for random generation. - @retval FALSE Pseudorandom number generator does not have enough entropy for random generation. - -**/ -BOOLEAN -EFIAPI -RandomSeed ( - IN CONST UINT8 *Seed OPTIONAL, - IN UINTN SeedSize - ) -{ - CHAR8 DefaultSeed[128]; - - if (SeedSize > INT_MAX) { - return FALSE; - } - - // - // The software PRNG implementation built in OpenSSL depends on message digest algorithm. - // Make sure SHA-1 digest algorithm is available here. - // - if (EVP_add_digest (EVP_sha1 ()) == 0) { - return FALSE; - } - - // - // Seed the pseudorandom number generator with user-supplied value. - // NOTE: A cryptographic PRNG must be seeded with unpredictable data. - // - if (Seed != NULL) { - RAND_seed (Seed, (UINT32) SeedSize); - } else { - // - // Retrieve current time. - // - AsciiSPrint ( - DefaultSeed, - sizeof (DefaultSeed), - "UEFI Crypto Library default seed (%ld)", - AsmReadItc () - ); - - RAND_seed (DefaultSeed, sizeof (DefaultSeed)); - } - - if (RAND_status () == 1) { - return TRUE; - } - - return FALSE; -} - -/** - Generates a pseudorandom byte stream of the specified size. - - If Output is NULL, then return FALSE. - - @param[out] Output Pointer to buffer to receive random value. - @param[in] Size Size of random bytes to generate. - - @retval TRUE Pseudorandom byte stream generated successfully. - @retval FALSE Pseudorandom number generator fails to generate due to lack of entropy. - -**/ -BOOLEAN -EFIAPI -RandomBytes ( - OUT UINT8 *Output, - IN UINTN Size - ) -{ - // - // Check input parameters. - // - if (Output == NULL || Size > INT_MAX) { - return FALSE; - } - - // - // Generate random data. - // - if (RAND_bytes (Output, (UINT32) Size) != 1) { - return FALSE; - } - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandNull.c b/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandNull.c deleted file mode 100644 index c292a2301e..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandNull.c +++ /dev/null @@ -1,63 +0,0 @@ -/** @file - Pseudorandom Number Generator Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - - -/** - Sets up the seed value for the pseudorandom number generator. - - Return FALSE to indicate this interface is not supported. - - @param[in] Seed Pointer to seed value. - If NULL, default seed is used. - @param[in] SeedSize Size of seed value. - If Seed is NULL, this parameter is ignored. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RandomSeed ( - IN CONST UINT8 *Seed OPTIONAL, - IN UINTN SeedSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Generates a pseudorandom byte stream of the specified size. - - Return FALSE to indicate this interface is not supported. - - @param[out] Output Pointer to buffer to receive random value. - @param[in] Size Size of random bytes to generate. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RandomBytes ( - OUT UINT8 *Output, - IN UINTN Size - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandTsc.c b/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandTsc.c deleted file mode 100644 index 15f0b3feca..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/Rand/CryptRandTsc.c +++ /dev/null @@ -1,118 +0,0 @@ -/** @file - Pseudorandom Number Generator Wrapper Implementation over OpenSSL. - -Copyright (c) 2012 - 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" -#include -#include -#include - -/** - Sets up the seed value for the pseudorandom number generator. - - This function sets up the seed value for the pseudorandom number generator. - If Seed is not NULL, then the seed passed in is used. - If Seed is NULL, then default seed is used. - - @param[in] Seed Pointer to seed value. - If NULL, default seed is used. - @param[in] SeedSize Size of seed value. - If Seed is NULL, this parameter is ignored. - - @retval TRUE Pseudorandom number generator has enough entropy for random generation. - @retval FALSE Pseudorandom number generator does not have enough entropy for random generation. - -**/ -BOOLEAN -EFIAPI -RandomSeed ( - IN CONST UINT8 *Seed OPTIONAL, - IN UINTN SeedSize - ) -{ - CHAR8 DefaultSeed[128]; - - if (SeedSize > INT_MAX) { - return FALSE; - } - - // - // The software PRNG implementation built in OpenSSL depends on message digest algorithm. - // Make sure SHA-1 digest algorithm is available here. - // - if (EVP_add_digest (EVP_sha1 ()) == 0) { - return FALSE; - } - - // - // Seed the pseudorandom number generator with user-supplied value. - // NOTE: A cryptographic PRNG must be seeded with unpredictable data. - // - if (Seed != NULL) { - RAND_seed (Seed, (UINT32) SeedSize); - } else { - // - // Retrieve current time. - // - AsciiSPrint ( - DefaultSeed, - sizeof (DefaultSeed), - "UEFI Crypto Library default seed (%ld)", - AsmReadTsc () - ); - - RAND_seed (DefaultSeed, sizeof (DefaultSeed)); - } - - if (RAND_status () == 1) { - return TRUE; - } - - return FALSE; -} - -/** - Generates a pseudorandom byte stream of the specified size. - - If Output is NULL, then return FALSE. - - @param[out] Output Pointer to buffer to receive random value. - @param[in] Size Size of random bytes to generate. - - @retval TRUE Pseudorandom byte stream generated successfully. - @retval FALSE Pseudorandom number generator fails to generate due to lack of entropy. - -**/ -BOOLEAN -EFIAPI -RandomBytes ( - OUT UINT8 *Output, - IN UINTN Size - ) -{ - // - // Check input parameters. - // - if (Output == NULL || Size > INT_MAX) { - return FALSE; - } - - // - // Generate random data. - // - if (RAND_bytes (Output, (UINT32) Size) != 1) { - return FALSE; - } - - return TRUE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf b/Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf deleted file mode 100644 index 05cd31674f..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf +++ /dev/null @@ -1,112 +0,0 @@ -## @file -# Cryptographic Library Instance for DXE_RUNTIME_DRIVER. -# -# Caution: This module requires additional review when modified. -# This library will have external input - signature. -# This external input must be validated carefully to avoid security issues such as -# buffer overflow or integer overflow. -# -# Note: MD4 Digest functions, SHA-384 Digest functions, SHA-512 Digest functions, -# HMAC-MD5 functions, HMAC-SHA1/SHA256 functions, AES/TDES/ARC4 functions, RSA external -# functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, and -# authenticode signature verification functions are not supported in this instance. -# -# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = RuntimeCryptLib - MODULE_UNI_FILE = RuntimeCryptLib.uni - FILE_GUID = 78189cc0-727d-46a4-84ea-f7dd860de64a - MODULE_TYPE = DXE_RUNTIME_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = BaseCryptLib|DXE_RUNTIME_DRIVER - CONSTRUCTOR = RuntimeCryptLibConstructor - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF ARM AARCH64 -# - -[Sources] - Hash/CryptMd4Null.c - Hash/CryptMd5.c - Hash/CryptSha1.c - Hash/CryptSha256.c - Hash/CryptSha512Null.c - Hmac/CryptHmacMd5Null.c - Hmac/CryptHmacSha1Null.c - Hmac/CryptHmacSha256Null.c - Cipher/CryptAesNull.c - Cipher/CryptTdesNull.c - Cipher/CryptArc4Null.c - Pk/CryptRsaBasic.c - Pk/CryptRsaExtNull.c - Pk/CryptPkcs5Pbkdf2Null.c - Pk/CryptPkcs7SignNull.c - Pk/CryptPkcs7Verify.c - Pk/CryptDhNull.c - Pk/CryptX509.c - Pk/CryptAuthenticodeNull.c - Pk/CryptTsNull.c - Pem/CryptPem.c - - SysCall/CrtWrapper.c - SysCall/TimerWrapper.c - SysCall/RuntimeMemAllocation.c - -[Sources.Ia32] - Rand/CryptRandTsc.c - -[Sources.X64] - Rand/CryptRandTsc.c - -[Sources.IPF] - Rand/CryptRandItc.c - -[Sources.ARM] - Rand/CryptRand.c - -[Sources.AARCH64] - Rand/CryptRand.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - BaseLib - BaseMemoryLib - MemoryAllocationLib - UefiBootServicesTableLib - UefiRuntimeServicesTableLib - DebugLib - OpensslLib - IntrinsicLib - PrintLib - -# -# Remove these [BuildOptions] after this library is cleaned up -# -[BuildOptions] - # - # suppress the following warnings so we do not break the build with warnings-as-errors: - # C4090: 'function' : different 'const' qualifiers - # - MSFT:*_*_*_CC_FLAGS = /wd4090 - - GCC:*_GCC44_IA32_CC_FLAGS = "-D__cdecl=__attribute__((cdecl))" "-D__declspec(t)=__attribute__((t))" - - # -JCryptoPkg/Include : To disable the use of the system includes provided by RVCT - # --diag_remark=1 : Reduce severity of "#1-D: last line of file ends without a newline" - RVCT:*_*_ARM_CC_FLAGS = -JCryptoPkg/Include --diag_remark=1 diff --git a/Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.uni b/Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.uni deleted file mode 100644 index 593faa7b06..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.uni +++ /dev/null @@ -1,30 +0,0 @@ -// /** @file -// Cryptographic Library Instance for DXE_RUNTIME_DRIVER. -// -// Caution: This module requires additional review when modified. -// This library will have external input - signature. -// This external input must be validated carefully to avoid security issues such as -// buffer overflow or integer overflow. -// -// Note: MD4 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/ -// TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign functions, -// Diffie-Hellman functions, and authenticode signature verification functions are -// not supported in this instance. -// -// Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Cryptographic Library Instance for DXE_RUNTIME_DRIVER" - -#string STR_MODULE_DESCRIPTION #language en-US "Caution: This module requires additional review when modified. This library will have external input - signature. This external input must be validated carefully to avoid security issues such as buffer overflow or integer overflow. Note: MD4 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/ TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, and authenticode signature verification functions are not supported in this instance." - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf b/Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf deleted file mode 100644 index b1ddc78b4f..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf +++ /dev/null @@ -1,107 +0,0 @@ -## @file -# Cryptographic Library Instance for SMM driver. -# -# Caution: This module requires additional review when modified. -# This library will have external input - signature. -# This external input must be validated carefully to avoid security issues such as -# buffer overflow or integer overflow. -# -# Note: MD4 Digest functions, SHA-384 Digest functions, SHA-512 Digest functions, -# HMAC-MD5 functions, HMAC-SHA1/SHA256 functions, TDES/ARC4 functions, RSA external -# functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, and -# authenticode signature verification functions are not supported in this instance. -# -# Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = SmmCryptLib - MODULE_UNI_FILE = SmmCryptLib.uni - FILE_GUID = 028080a3-8958-4a62-a1a8-0fa1da162007 - MODULE_TYPE = DXE_SMM_DRIVER - VERSION_STRING = 1.0 - PI_SPECIFICATION_VERSION = 0x0001000A - LIBRARY_CLASS = BaseCryptLib|DXE_SMM_DRIVER SMM_CORE - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 ARM AARCH64 -# - -[Sources] - Hash/CryptMd4Null.c - Hash/CryptMd5.c - Hash/CryptSha1.c - Hash/CryptSha256.c - Hash/CryptSha512Null.c - Hmac/CryptHmacMd5Null.c - Hmac/CryptHmacSha1Null.c - Hmac/CryptHmacSha256.c - Cipher/CryptAes.c - Cipher/CryptTdesNull.c - Cipher/CryptArc4Null.c - Pk/CryptRsaBasic.c - Pk/CryptRsaExtNull.c - Pk/CryptPkcs5Pbkdf2.c - Pk/CryptPkcs7SignNull.c - Pk/CryptPkcs7Verify.c - Pk/CryptDhNull.c - Pk/CryptX509.c - Pk/CryptAuthenticodeNull.c - Pk/CryptTsNull.c - Pem/CryptPem.c - - SysCall/CrtWrapper.c - SysCall/ConstantTimeClock.c - SysCall/BaseMemAllocation.c - -[Sources.Ia32] - Rand/CryptRandTsc.c - -[Sources.X64] - Rand/CryptRandTsc.c - -[Sources.IPF] - Rand/CryptRandItc.c - -[Sources.ARM] - Rand/CryptRand.c - -[Sources.AARCH64] - Rand/CryptRand.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - BaseLib - IoLib - BaseMemoryLib - MemoryAllocationLib - OpensslLib - IntrinsicLib - PrintLib - -# -# Remove these [BuildOptions] after this library is cleaned up -# -[BuildOptions] - # - # suppress the following warnings so we do not break the build with warnings-as-errors: - # C4090: 'function' : different 'const' qualifiers - # - MSFT:*_*_*_CC_FLAGS = /wd4090 - - GCC:*_GCC44_IA32_CC_FLAGS = "-D__cdecl=__attribute__((cdecl))" "-D__declspec(t)=__attribute__((t))" - XCODE:*_*_*_CC_FLAGS = -mmmx -msse diff --git a/Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.uni b/Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.uni deleted file mode 100644 index 9b2df98582..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.uni +++ /dev/null @@ -1,30 +0,0 @@ -// /** @file -// Cryptographic Library Instance for SMM driver. -// -// Caution: This module requires additional review when modified. -// This library will have external input - signature. -// This external input must be validated carefully to avoid security issues such as -// buffer overflow or integer overflow. -// -// Note: MD4 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/ -// TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign functions, -// Diffie-Hellman functions, and authenticode signature verification functions are -// not supported in this instance. -// -// Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Cryptographic Library Instance for SMM driver" - -#string STR_MODULE_DESCRIPTION #language en-US "Caution: This module requires additional review when modified. This library will have external input - signature. This external input must be validated carefully to avoid security issues such as buffer overflow or integer overflow. Note: MD4 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/ TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign functions, Diffie-Hellman functions, and authenticode signature verification functions are not supported in this instance." - diff --git a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/BaseMemAllocation.c b/Core/CryptoPkg/Library/BaseCryptLib/SysCall/BaseMemAllocation.c deleted file mode 100644 index f390e0d449..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/BaseMemAllocation.c +++ /dev/null @@ -1,49 +0,0 @@ -/** @file - Base Memory Allocation Routines Wrapper for Crypto library over OpenSSL - during PEI & DXE phases. - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include - -// -// -- Memory-Allocation Routines -- -// - -/* Allocates memory blocks */ -void *malloc (size_t size) -{ - return AllocatePool ((UINTN) size); -} - -/* Reallocate memory blocks */ -void *realloc (void *ptr, size_t size) -{ - // - // BUG: hardcode OldSize == size! We have no any knowledge about - // memory size of original pointer ptr. - // - return ReallocatePool ((UINTN) size, (UINTN) size, ptr); -} - -/* De-allocates or frees a memory block */ -void free (void *ptr) -{ - // - // In Standard C, free() handles a null pointer argument transparently. This - // is not true of FreePool() below, so protect it. - // - if (ptr != NULL) { - FreePool (ptr); - } -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c b/Core/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c deleted file mode 100644 index 0cd90434ca..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/ConstantTimeClock.c +++ /dev/null @@ -1,43 +0,0 @@ -/** @file - C Run-Time Libraries (CRT) Time Management Routines Wrapper Implementation - for OpenSSL-based Cryptographic Library. - - This C file implements constant time value for time() and NULL for gmtime() - thus should not be used in library instances which require functionality - of following APIs which need system time support: - 1) RsaGenerateKey - 2) RsaCheckKey - 3) RsaPkcs1Sign - 4) Pkcs7Sign - 5) DhGenerateParameter - 6) DhGenerateKey - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -// -// -- Time Management Routines -- -// - -time_t time (time_t *timer) -{ - if (timer != NULL) { - *timer = 0; - } - return 0; -} - -struct tm * gmtime (const time_t *timer) -{ - return NULL; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c b/Core/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c deleted file mode 100644 index 20c96563d2..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c +++ /dev/null @@ -1,461 +0,0 @@ -/** @file - C Run-Time Libraries (CRT) Wrapper Implementation for OpenSSL-based - Cryptographic Library. - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -int errno = 0; - -FILE *stderr = NULL; -FILE *stdin = NULL; -FILE *stdout = NULL; - -typedef -int -(*SORT_COMPARE)( - IN VOID *Buffer1, - IN VOID *Buffer2 - ); - -// -// Duplicated from EDKII BaseSortLib for qsort() wrapper -// -STATIC -VOID -QuickSortWorker ( - IN OUT VOID *BufferToSort, - IN CONST UINTN Count, - IN CONST UINTN ElementSize, - IN SORT_COMPARE CompareFunction, - IN VOID *Buffer - ) -{ - VOID *Pivot; - UINTN LoopCount; - UINTN NextSwapLocation; - - ASSERT(BufferToSort != NULL); - ASSERT(CompareFunction != NULL); - ASSERT(Buffer != NULL); - - if (Count < 2 || ElementSize < 1) { - return; - } - - NextSwapLocation = 0; - - // - // Pick a pivot (we choose last element) - // - Pivot = ((UINT8 *)BufferToSort + ((Count - 1) * ElementSize)); - - // - // Now get the pivot such that all on "left" are below it - // and everything "right" are above it - // - for (LoopCount = 0; LoopCount < Count - 1; LoopCount++) - { - // - // If the element is less than the pivot - // - if (CompareFunction ((VOID *)((UINT8 *)BufferToSort + ((LoopCount) * ElementSize)), Pivot) <= 0) { - // - // Swap - // - CopyMem (Buffer, (UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), ElementSize); - CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), (UINT8 *)BufferToSort + ((LoopCount) * ElementSize), ElementSize); - CopyMem ((UINT8 *)BufferToSort + ((LoopCount) * ElementSize), Buffer, ElementSize); - - // - // Increment NextSwapLocation - // - NextSwapLocation++; - } - } - // - // Swap pivot to it's final position (NextSwapLocaiton) - // - CopyMem (Buffer, Pivot, ElementSize); - CopyMem (Pivot, (UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), ElementSize); - CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), Buffer, ElementSize); - - // - // Now recurse on 2 paritial lists. Neither of these will have the 'pivot' element. - // IE list is sorted left half, pivot element, sorted right half... - // - QuickSortWorker ( - BufferToSort, - NextSwapLocation, - ElementSize, - CompareFunction, - Buffer - ); - - QuickSortWorker ( - (UINT8 *)BufferToSort + (NextSwapLocation + 1) * ElementSize, - Count - NextSwapLocation - 1, - ElementSize, - CompareFunction, - Buffer - ); - - return; -} - -//--------------------------------------------------------- -// Standard C Run-time Library Interface Wrapper -//--------------------------------------------------------- - -// -// -- String Manipulation Routines -- -// - -/* Scan a string for the last occurrence of a character */ -char *strrchr (const char *str, int c) -{ - char * save; - - for (save = NULL; ; ++str) { - if (*str == c) { - save = (char *)str; - } - if (*str == 0) { - return (save); - } - } -} - -/* Compare first n bytes of string s1 with string s2, ignoring case */ -int strncasecmp (const char *s1, const char *s2, size_t n) -{ - int Val; - - ASSERT(s1 != NULL); - ASSERT(s2 != NULL); - - if (n != 0) { - do { - Val = tolower(*s1) - tolower(*s2); - if (Val != 0) { - return Val; - } - ++s1; - ++s2; - if (*s1 == '\0') { - break; - } - } while (--n != 0); - } - return 0; -} - -/* Read formatted data from a string */ -int sscanf (const char *buffer, const char *format, ...) -{ - // - // Null sscanf() function implementation to satisfy the linker, since - // no direct functionality logic dependency in present UEFI cases. - // - return 0; -} - -/* Maps errnum to an error-message string */ -char * strerror (int errnum) -{ - return NULL; -} - -/* Computes the length of the maximum initial segment of the string pointed to by s1 - which consists entirely of characters from the string pointed to by s2. */ -size_t strspn (const char *s1 , const char *s2) -{ - UINT8 Map[32]; - UINT32 Index; - size_t Count; - - for (Index = 0; Index < 32; Index++) { - Map[Index] = 0; - } - - while (*s2) { - Map[*s2 >> 3] |= (1 << (*s2 & 7)); - s2++; - } - - if (*s1) { - Count = 0; - while (Map[*s1 >> 3] & (1 << (*s1 & 7))) { - Count++; - s1++; - } - - return Count; - } - - return 0; -} - -/* Computes the length of the maximum initial segment of the string pointed to by s1 - which consists entirely of characters not from the string pointed to by s2. */ -size_t strcspn (const char *s1, const char *s2) -{ - UINT8 Map[32]; - UINT32 Index; - size_t Count; - - for (Index = 0; Index < 32; Index++) { - Map[Index] = 0; - } - - while (*s2) { - Map[*s2 >> 3] |= (1 << (*s2 & 7)); - s2++; - } - - Map[0] |= 1; - - Count = 0; - while (!(Map[*s1 >> 3] & (1 << (*s1 & 7)))) { - Count ++; - s1++; - } - - return Count; -} - -// -// -- Character Classification Routines -- -// - -/* Determines if a particular character is a decimal-digit character */ -int isdigit (int c) -{ - // - // ::= [0-9] - // - return (('0' <= (c)) && ((c) <= '9')); -} - -/* Determine if an integer represents character that is a hex digit */ -int isxdigit (int c) -{ - // - // ::= [0-9] | [a-f] | [A-F] - // - return ((('0' <= (c)) && ((c) <= '9')) || - (('a' <= (c)) && ((c) <= 'f')) || - (('A' <= (c)) && ((c) <= 'F'))); -} - -/* Determines if a particular character represents a space character */ -int isspace (int c) -{ - // - // ::= [ ] - // - return ((c) == ' '); -} - -/* Determine if a particular character is an alphanumeric character */ -int isalnum (int c) -{ - // - // ::= [0-9] | [a-z] | [A-Z] - // - return ((('0' <= (c)) && ((c) <= '9')) || - (('a' <= (c)) && ((c) <= 'z')) || - (('A' <= (c)) && ((c) <= 'Z'))); -} - -/* Determines if a particular character is in upper case */ -int isupper (int c) -{ - // - // := [A-Z] - // - return (('A' <= (c)) && ((c) <= 'Z')); -} - -// -// -- Data Conversion Routines -- -// - -/* Convert strings to a long-integer value */ -long strtol (const char *nptr, char **endptr, int base) -{ - // - // Null strtol() function implementation to satisfy the linker, since there is - // no direct functionality logic dependency in present UEFI cases. - // - return 0; -} - -/* Convert strings to an unsigned long-integer value */ -unsigned long strtoul (const char *nptr, char **endptr, int base) -{ - // - // Null strtoul() function implementation to satisfy the linker, since there is - // no direct functionality logic dependency in present UEFI cases. - // - return 0; -} - -/* Convert character to lowercase */ -int tolower (int c) -{ - if (('A' <= (c)) && ((c) <= 'Z')) { - return (c - ('A' - 'a')); - } - return (c); -} - -// -// -- Searching and Sorting Routines -- -// - -/* Performs a quick sort */ -void qsort (void *base, size_t num, size_t width, int (*compare)(const void *, const void *)) -{ - VOID *Buffer; - - ASSERT (base != NULL); - ASSERT (compare != NULL); - - // - // Use CRT-style malloc to cover BS and RT memory allocation. - // - Buffer = malloc (width); - ASSERT (Buffer != NULL); - - // - // Re-use PerformQuickSort() function Implementation in EDKII BaseSortLib. - // - QuickSortWorker (base, (UINTN)num, (UINTN)width, (SORT_COMPARE)compare, Buffer); - - free (Buffer); - return; -} - -// -// -- Process and Environment Control Routines -- -// - -/* Get a value from the current environment */ -char *getenv (const char *varname) -{ - // - // Null getenv() function implementation to satisfy the linker, since there is - // no direct functionality logic dependency in present UEFI cases. - // - return NULL; -} - -// -// -- Stream I/O Routines -- -// - -/* Write data to a stream */ -size_t fwrite (const void *buffer, size_t size, size_t count, FILE *stream) -{ - return 0; -} - -// -// -- Dummy OpenSSL Support Routines -- -// - -int BIO_printf (void *bio, const char *format, ...) -{ - return 0; -} - -int BIO_snprintf(char *buf, size_t n, const char *format, ...) -{ - return 0; -} - -#ifdef __GNUC__ - -typedef -VOID -(EFIAPI *NoReturnFuncPtr)( - VOID - ) __attribute__((__noreturn__)); - -STATIC -VOID -EFIAPI -NopFunction ( - VOID - ) -{ -} - -void abort (void) -{ - NoReturnFuncPtr NoReturnFunc; - - NoReturnFunc = (NoReturnFuncPtr) NopFunction; - - NoReturnFunc (); -} - -#else - -void abort (void) -{ - // Do nothing -} - -#endif - -int fclose (FILE *f) -{ - return 0; -} - -FILE *fopen (const char *c, const char *m) -{ - return NULL; -} - -size_t fread (void *b, size_t c, size_t i, FILE *f) -{ - return 0; -} - -uid_t getuid (void) -{ - return 0; -} - -uid_t geteuid (void) -{ - return 0; -} - -gid_t getgid (void) -{ - return 0; -} - -gid_t getegid (void) -{ - return 0; -} - -int printf (char const *fmt, ...) -{ - return 0; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c b/Core/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c deleted file mode 100644 index 463f2bf855..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/RuntimeMemAllocation.c +++ /dev/null @@ -1,449 +0,0 @@ -/** @file - Light-weight Memory Management Routines for OpenSSL-based Crypto - Library at Runtime Phase. - -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include -#include -#include -#include - -//---------------------------------------------------------------- -// Initial version. Needs further optimizations. -//---------------------------------------------------------------- - -// -// Definitions for Runtime Memory Operations -// -#define RT_PAGE_SIZE 0x200 -#define RT_PAGE_MASK 0x1FF -#define RT_PAGE_SHIFT 9 - -#define RT_SIZE_TO_PAGES(a) (((a) >> RT_PAGE_SHIFT) + (((a) & RT_PAGE_MASK) ? 1 : 0)) -#define RT_PAGES_TO_SIZE(a) ((a) << RT_PAGE_SHIFT) - -// -// Page Flag Definitions -// -#define RT_PAGE_FREE 0x00000000 -#define RT_PAGE_USED 0x00000001 - -#define MIN_REQUIRED_BLOCKS 600 - -// -// Memory Page Table -// -typedef struct { - UINTN StartPageOffset; // Offset of the starting page allocated. - // Only available for USED pages. - UINT32 PageFlag; // Page Attributes. -} RT_MEMORY_PAGE_ENTRY; - -typedef struct { - UINTN PageCount; - UINTN LastEmptyPageOffset; - UINT8 *DataAreaBase; // Pointer to data Area. - RT_MEMORY_PAGE_ENTRY Pages[1]; // Page Table Entries. -} RT_MEMORY_PAGE_TABLE; - -// -// Global Page Table for Runtime Cryptographic Provider. -// -RT_MEMORY_PAGE_TABLE *mRTPageTable = NULL; - -// -// Event for Runtime Address Conversion. -// -STATIC EFI_EVENT mVirtualAddressChangeEvent; - - -/** - Initializes pre-allocated memory pointed by ScratchBuffer for subsequent - runtime use. - - @param[in, out] ScratchBuffer Pointer to user-supplied memory buffer. - @param[in] ScratchBufferSize Size of supplied buffer in bytes. - - @retval EFI_SUCCESS Successful initialization. - -**/ -EFI_STATUS -InitializeScratchMemory ( - IN OUT UINT8 *ScratchBuffer, - IN UINTN ScratchBufferSize - ) -{ - UINTN Index; - UINTN MemorySize; - - // - // Parameters Checking - // - if (ScratchBuffer == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (ScratchBufferSize < MIN_REQUIRED_BLOCKS * 1024) { - return EFI_BUFFER_TOO_SMALL; - } - - mRTPageTable = (RT_MEMORY_PAGE_TABLE *)ScratchBuffer; - - // - // Initialize Internal Page Table for Memory Management - // - SetMem (mRTPageTable, ScratchBufferSize, 0xFF); - MemorySize = ScratchBufferSize - sizeof (RT_MEMORY_PAGE_TABLE) + sizeof (RT_MEMORY_PAGE_ENTRY); - - mRTPageTable->PageCount = MemorySize / (RT_PAGE_SIZE + sizeof (RT_MEMORY_PAGE_ENTRY)); - mRTPageTable->LastEmptyPageOffset = 0x0; - - for (Index = 0; Index < mRTPageTable->PageCount; Index++) { - mRTPageTable->Pages[Index].PageFlag = RT_PAGE_FREE; - mRTPageTable->Pages[Index].StartPageOffset = 0; - } - - mRTPageTable->DataAreaBase = ScratchBuffer + sizeof (RT_MEMORY_PAGE_TABLE) + - (mRTPageTable->PageCount - 1) * sizeof (RT_MEMORY_PAGE_ENTRY); - - return EFI_SUCCESS; -} - - -/** - Look-up Free memory Region for object allocation. - - @param[in] AllocationSize Bytes to be allocated. - - @return Return available page offset for object allocation. - -**/ -UINTN -LookupFreeMemRegion ( - IN UINTN AllocationSize - ) -{ - UINTN StartPageIndex; - UINTN Index; - UINTN SubIndex; - UINTN ReqPages; - - StartPageIndex = RT_SIZE_TO_PAGES (mRTPageTable->LastEmptyPageOffset); - ReqPages = RT_SIZE_TO_PAGES (AllocationSize); - - // - // Look up the free memory region with in current memory map table. - // - for (Index = StartPageIndex; Index <= (mRTPageTable->PageCount - ReqPages); ) { - // - // Check consecutive ReqPages pages. - // - for (SubIndex = 0; SubIndex < ReqPages; SubIndex++) { - if ((mRTPageTable->Pages[SubIndex + Index].PageFlag & RT_PAGE_USED) != 0) { - break; - } - } - - if (SubIndex == ReqPages) { - // - // Succeed! Return the Starting Offset. - // - return RT_PAGES_TO_SIZE (Index); - } - - // - // Failed! Skip current free memory pages and adjacent Used pages - // - while ((mRTPageTable->Pages[SubIndex + Index].PageFlag & RT_PAGE_USED) != 0) { - SubIndex++; - } - - Index += SubIndex; - } - - // - // Look up the free memory region from the beginning of the memory table - // until the StartCursorOffset - // - for (Index = 0; Index < (StartPageIndex - ReqPages); ) { - // - // Check Consecutive ReqPages Pages. - // - for (SubIndex = 0; SubIndex < ReqPages; SubIndex++) { - if ((mRTPageTable->Pages[SubIndex + Index].PageFlag & RT_PAGE_USED) != 0) { - break; - } - } - - if (SubIndex == ReqPages) { - // - // Succeed! Return the Starting Offset. - // - return RT_PAGES_TO_SIZE (Index); - } - - // - // Failed! Skip current adjacent Used pages - // - while ((SubIndex < (StartPageIndex - ReqPages)) && - ((mRTPageTable->Pages[SubIndex + Index].PageFlag & RT_PAGE_USED) != 0)) { - SubIndex++; - } - - Index += SubIndex; - } - - // - // No available region for object allocation! - // - return (UINTN)(-1); -} - - -/** - Allocates a buffer at runtime phase. - - @param[in] AllocationSize Bytes to be allocated. - - @return A pointer to the allocated buffer or NULL if allocation fails. - -**/ -VOID * -RuntimeAllocateMem ( - IN UINTN AllocationSize - ) -{ - UINT8 *AllocPtr; - UINTN ReqPages; - UINTN Index; - UINTN StartPage; - UINTN AllocOffset; - - AllocPtr = NULL; - ReqPages = 0; - - // - // Look for available consecutive memory region starting from LastEmptyPageOffset. - // If no proper memory region found, look up from the beginning. - // If still not found, return NULL to indicate failed allocation. - // - AllocOffset = LookupFreeMemRegion (AllocationSize); - if (AllocOffset == (UINTN)(-1)) { - return NULL; - } - - // - // Allocates consecutive memory pages with length of Size. Update the page - // table status. Returns the starting address. - // - ReqPages = RT_SIZE_TO_PAGES (AllocationSize); - AllocPtr = mRTPageTable->DataAreaBase + AllocOffset; - StartPage = RT_SIZE_TO_PAGES (AllocOffset); - Index = 0; - while (Index < ReqPages) { - mRTPageTable->Pages[StartPage + Index].PageFlag |= RT_PAGE_USED; - mRTPageTable->Pages[StartPage + Index].StartPageOffset = AllocOffset; - - Index++; - } - - mRTPageTable->LastEmptyPageOffset = AllocOffset + RT_PAGES_TO_SIZE (ReqPages); - - ZeroMem (AllocPtr, AllocationSize); - - // - // Returns a void pointer to the allocated space - // - return AllocPtr; -} - - -/** - Frees a buffer that was previously allocated at runtime phase. - - @param[in] Buffer Pointer to the buffer to free. - -**/ -VOID -RuntimeFreeMem ( - IN VOID *Buffer - ) -{ - UINTN StartOffset; - UINTN StartPageIndex; - - StartOffset = (UINTN)Buffer - (UINTN)mRTPageTable->DataAreaBase; - StartPageIndex = RT_SIZE_TO_PAGES (mRTPageTable->Pages[RT_SIZE_TO_PAGES(StartOffset)].StartPageOffset); - - while (StartPageIndex < mRTPageTable->PageCount) { - if (((mRTPageTable->Pages[StartPageIndex].PageFlag & RT_PAGE_USED) != 0) && - (mRTPageTable->Pages[StartPageIndex].StartPageOffset == StartOffset)) { - // - // Free this page - // - mRTPageTable->Pages[StartPageIndex].PageFlag &= ~RT_PAGE_USED; - mRTPageTable->Pages[StartPageIndex].PageFlag |= RT_PAGE_FREE; - mRTPageTable->Pages[StartPageIndex].StartPageOffset = 0; - - StartPageIndex++; - } else { - break; - } - } - - return; -} - - -/** - Notification function of EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE. - - This is a notification function registered on EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE - event. It converts a pointer to a new virtual address. - - @param[in] Event The event whose notification function is being invoked. - @param[in] Context The pointer to the notification function's context. - -**/ -VOID -EFIAPI -RuntimeCryptLibAddressChangeEvent ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - // - // Converts a pointer for runtime memory management to a new virtual address. - // - EfiConvertPointer (0x0, (VOID **) &mRTPageTable->DataAreaBase); - EfiConvertPointer (0x0, (VOID **) &mRTPageTable); -} - - -/** - Constructor routine for runtime crypt library instance. - - The constructor function pre-allocates space for runtime cryptographic operation. - - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The construction succeeded. - @retval EFI_OUT_OF_RESOURCE Failed to allocate memory. - -**/ -EFI_STATUS -EFIAPI -RuntimeCryptLibConstructor ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - VOID *Buffer; - - // - // Pre-allocates runtime space for possible cryptographic operations - // - Buffer = AllocateRuntimePool (MIN_REQUIRED_BLOCKS * 1024); - Status = InitializeScratchMemory (Buffer, MIN_REQUIRED_BLOCKS * 1024); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Create address change event - // - Status = gBS->CreateEventEx ( - EVT_NOTIFY_SIGNAL, - TPL_NOTIFY, - RuntimeCryptLibAddressChangeEvent, - NULL, - &gEfiEventVirtualAddressChangeGuid, - &mVirtualAddressChangeEvent - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} - - -// -// -- Memory-Allocation Routines Wrapper for UEFI-OpenSSL Library -- -// - -/* Allocates memory blocks */ -void *malloc (size_t size) -{ - return RuntimeAllocateMem ((UINTN) size); -} - -/* Reallocate memory blocks */ -void *realloc (void *ptr, size_t size) -{ - VOID *NewPtr; - UINTN StartOffset; - UINTN StartPageIndex; - UINTN PageCount; - - if (ptr == NULL) { - return malloc (size); - } - - // - // Get Original Size of ptr - // - StartOffset = (UINTN)ptr - (UINTN)mRTPageTable->DataAreaBase; - StartPageIndex = RT_SIZE_TO_PAGES (mRTPageTable->Pages[RT_SIZE_TO_PAGES (StartOffset)].StartPageOffset); - PageCount = 0; - while (StartPageIndex < mRTPageTable->PageCount) { - if (((mRTPageTable->Pages[StartPageIndex].PageFlag & RT_PAGE_USED) != 0) && - (mRTPageTable->Pages[StartPageIndex].StartPageOffset == StartOffset)) { - StartPageIndex++; - PageCount++; - } else { - break; - } - } - - if (size <= RT_PAGES_TO_SIZE (PageCount)) { - // - // Return the original pointer, if Caller try to reduce region size; - // - return ptr; - } - - NewPtr = RuntimeAllocateMem ((UINTN) size); - if (NewPtr == NULL) { - return NULL; - } - - CopyMem (NewPtr, ptr, RT_PAGES_TO_SIZE (PageCount)); - - RuntimeFreeMem (ptr); - - return NewPtr; -} - -/* Deallocates or frees a memory block */ -void free (void *ptr) -{ - // - // In Standard C, free() handles a null pointer argument transparently. This - // is not true of RuntimeFreeMem() below, so protect it. - // - if (ptr != NULL) { - RuntimeFreeMem (ptr); - } -} diff --git a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c b/Core/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c deleted file mode 100644 index 581b8fb028..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLib/SysCall/TimerWrapper.c +++ /dev/null @@ -1,170 +0,0 @@ -/** @file - C Run-Time Libraries (CRT) Time Management Routines Wrapper Implementation - for OpenSSL-based Cryptographic Library (used in DXE & RUNTIME). - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include -#include - -// -// -- Time Management Routines -- -// - -#define IsLeap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) -#define SECSPERMIN (60) -#define SECSPERHOUR (60 * 60) -#define SECSPERDAY (24 * SECSPERHOUR) - -// -// The arrays give the cumulative number of days up to the first of the -// month number used as the index (1 -> 12) for regular and leap years. -// The value at index 13 is for the whole year. -// -UINTN CumulativeDays[2][14] = { - { - 0, - 0, - 31, - 31 + 28, - 31 + 28 + 31, - 31 + 28 + 31 + 30, - 31 + 28 + 31 + 30 + 31, - 31 + 28 + 31 + 30 + 31 + 30, - 31 + 28 + 31 + 30 + 31 + 30 + 31, - 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31, - 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30, - 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, - 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30, - 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 - }, - { - 0, - 0, - 31, - 31 + 29, - 31 + 29 + 31, - 31 + 29 + 31 + 30, - 31 + 29 + 31 + 30 + 31, - 31 + 29 + 31 + 30 + 31 + 30, - 31 + 29 + 31 + 30 + 31 + 30 + 31, - 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31, - 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30, - 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, - 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30, - 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31 - } -}; - -/* Get the system time as seconds elapsed since midnight, January 1, 1970. */ -//INTN time( -// INTN *timer -// ) -time_t time (time_t *timer) -{ - EFI_TIME Time; - time_t CalTime; - UINTN Year; - - // - // Get the current time and date information - // - gRT->GetTime (&Time, NULL); - - // - // Years Handling - // UTime should now be set to 00:00:00 on Jan 1 of the current year. - // - for (Year = 1970, CalTime = 0; Year != Time.Year; Year++) { - CalTime = CalTime + (time_t)(CumulativeDays[IsLeap(Year)][13] * SECSPERDAY); - } - - // - // Add in number of seconds for current Month, Day, Hour, Minute, Seconds, and TimeZone adjustment - // - CalTime = CalTime + - (time_t)((Time.TimeZone != EFI_UNSPECIFIED_TIMEZONE) ? (Time.TimeZone * 60) : 0) + - (time_t)(CumulativeDays[IsLeap(Time.Year)][Time.Month] * SECSPERDAY) + - (time_t)(((Time.Day > 0) ? Time.Day - 1 : 0) * SECSPERDAY) + - (time_t)(Time.Hour * SECSPERHOUR) + - (time_t)(Time.Minute * 60) + - (time_t)Time.Second; - - if (timer != NULL) { - *timer = CalTime; - } - - return CalTime; -} - -// -// Convert a time value from type time_t to struct tm. -// -struct tm * gmtime (const time_t *timer) -{ - struct tm *GmTime; - UINT16 DayNo; - UINT16 DayRemainder; - time_t Year; - time_t YearNo; - UINT16 TotalDays; - UINT16 MonthNo; - - if (timer == NULL) { - return NULL; - } - - GmTime = malloc (sizeof (struct tm)); - if (GmTime == NULL) { - return NULL; - } - - ZeroMem ((VOID *) GmTime, (UINTN) sizeof (struct tm)); - - DayNo = (UINT16) (*timer / SECSPERDAY); - DayRemainder = (UINT16) (*timer % SECSPERDAY); - - GmTime->tm_sec = (int) (DayRemainder % SECSPERMIN); - GmTime->tm_min = (int) ((DayRemainder % SECSPERHOUR) / SECSPERMIN); - GmTime->tm_hour = (int) (DayRemainder / SECSPERHOUR); - GmTime->tm_wday = (int) ((DayNo + 4) % 7); - - for (Year = 1970, YearNo = 0; DayNo > 0; Year++) { - TotalDays = (UINT16) (IsLeap (Year) ? 366 : 365); - if (DayNo >= TotalDays) { - DayNo = (UINT16) (DayNo - TotalDays); - YearNo++; - } else { - break; - } - } - - GmTime->tm_year = (int) (YearNo + (1970 - 1900)); - GmTime->tm_yday = (int) DayNo; - - for (MonthNo = 12; MonthNo > 1; MonthNo--) { - if (DayNo >= CumulativeDays[IsLeap(Year)][MonthNo]) { - DayNo = (UINT16) (DayNo - (UINT16) (CumulativeDays[IsLeap(Year)][MonthNo])); - break; - } - } - - GmTime->tm_mon = (int) MonthNo - 1; - GmTime->tm_mday = (int) DayNo + 1; - - GmTime->tm_isdst = 0; - GmTime->tm_gmtoff = 0; - GmTime->tm_zone = NULL; - - return GmTime; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.inf b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.inf deleted file mode 100644 index 1e840a5d1e..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.inf +++ /dev/null @@ -1,76 +0,0 @@ -## @file -# Cryptographic Library Instance based on Runtime Crypt Protocol. -# This instance will be only used by the Authenticated Variable driver for IPF. -# -# Note: MD4/MD5/SHA1 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, -# AES/TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign/verify -# functions, Diffie-Hellman functions, X.509 certificate handler functions, -# authenticode signature verification functions, PEM handler functions, -# pseudorandom number generator functions, and Sha256Duplicate() are not supported -# in this instance. -# -# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BaseCryptLibRuntimeCryptProtocol - MODULE_UNI_FILE = BaseCryptLibRuntimeCryptProtocol.uni - FILE_GUID = BBB31581-855A-44D7-A550-8A585D9B2DE9 - MODULE_TYPE = DXE_RUNTIME_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = BaseCryptLib|DXE_RUNTIME_DRIVER DXE_SAL_DRIVER - CONSTRUCTOR = RuntimeDxeIpfCryptLibConstructor - DESTRUCTOR = RuntimeDxeIpfCryptLibDestructor -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IPF -# - -[Sources] - RuntimeDxeIpfCryptLib.c - InternalCryptLib.h - Hash/CryptMd4Null.c - Hash/CryptMd5Null.c - Hash/CryptSha1Null.c - Hmac/CryptHmacMd5Null.c - Hmac/CryptHmacSha1Null.c - Cipher/CryptAesNull.c - Cipher/CryptTdesNull.c - Cipher/CryptArc4Null.c - Pk/CryptRsaExtNull.c - Pk/CryptPkcs7SignNull.c - Pk/CryptPkcs7VerifyNull.c - Pk/CryptDhNull.c - Pk/CryptX509Null.c - Pk/CryptAuthenticodeNull.c - Pem/CryptPemNull.c - Rand/CryptRandNull.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - BaseLib - DebugLib - UefiBootServicesTableLib - UefiRuntimeLib - -[Guids] - gEfiEventVirtualAddressChangeGuid ## CONSUMES ## Event - -[Protocols] - gEfiRuntimeCryptProtocolGuid ## CONSUMES - -[Depex] - gEfiRuntimeCryptProtocolGuid diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.uni b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.uni deleted file mode 100644 index 533fffa8c3..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/BaseCryptLibRuntimeCryptProtocol.uni +++ /dev/null @@ -1,29 +0,0 @@ -// /** @file -// Cryptographic Library Instance based on Runtime Crypt Protocol. -// -// This instance will be only used by the Authenticated Variable driver for IPF. -// -// Note: MD4/MD5/SHA1 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, -// AES/TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign/verify -// functions, Diffie-Hellman functions, X.509 certificate handler functions, -// authenticode signature verification functions, PEM handler functions, -// pseudorandom number generator functions, and Sha256Duplicate() are not supported -// in this instance. -// -// Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Cryptographic Library Instance based on Runtime Crypt Protocol" - -#string STR_MODULE_DESCRIPTION #language en-US "This instance will be only used by the Authenticated Variable driver for IPF. Note: MD4/MD5/SHA1 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign/verify functions, Diffie-Hellman functions, X.509 certificate handler functions, authenticode signature verification functions, PEM handler functions, pseudorandom number generator functions, and Sha256Duplicate() are not supported in this instance." - diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptAesNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptAesNull.c deleted file mode 100644 index 074b07247b..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptAesNull.c +++ /dev/null @@ -1,165 +0,0 @@ -/** @file - AES Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for AES operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -AesGetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory as AES context for subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] AesContext Pointer to AES context being initialized. - @param[in] Key Pointer to the user-supplied AES key. - @param[in] KeyLength Length of AES key in bits. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesInit ( - OUT VOID *AesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES encryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesEcbEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES decryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the AES decryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesEcbDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES encryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesCbcEncrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs AES decryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] AesContext Pointer to the AES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the AES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AesCbcDecrypt ( - IN VOID *AesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptArc4Null.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptArc4Null.c deleted file mode 100644 index 1275e20f89..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptArc4Null.c +++ /dev/null @@ -1,130 +0,0 @@ -/** @file - ARC4 Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for ARC4 operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - - -**/ -UINTN -EFIAPI -Arc4GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory as ARC4 context for subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Arc4Context Pointer to ARC4 context being initialized. - @param[in] Key Pointer to the user-supplied ARC4 key. - @param[in] KeySize Size of ARC4 key in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Init ( - OUT VOID *Arc4Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs ARC4 encryption on a data buffer of the specified size. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Encrypt ( - IN OUT VOID *Arc4Context, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs ARC4 decryption on a data buffer of the specified size. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the ARC4 decryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Decrypt ( - IN OUT VOID *Arc4Context, - IN UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Resets the ARC4 context to the initial state. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Arc4Context Pointer to the ARC4 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Arc4Reset ( - IN OUT VOID *Arc4Context - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptTdesNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptTdesNull.c deleted file mode 100644 index cec33b6275..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Cipher/CryptTdesNull.c +++ /dev/null @@ -1,166 +0,0 @@ -/** @file - TDES Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for TDES operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -TdesGetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory as TDES context for subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] TdesContext Pointer to TDES context being initialized. - @param[in] Key Pointer to the user-supplied TDES key. - @param[in] KeyLength Length of TDES key in bits. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesInit ( - OUT VOID *TdesContext, - IN CONST UINT8 *Key, - IN UINTN KeyLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES encryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesEcbEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES decryption on a data buffer of the specified size in ECB mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be decrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[out] Output Pointer to a buffer that receives the TDES decryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesEcbDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES encryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesCbcEncrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Performs TDES decryption on a data buffer of the specified size in CBC mode. - - Return FALSE to indicate this interface is not supported. - - @param[in] TdesContext Pointer to the TDES context. - @param[in] Input Pointer to the buffer containing the data to be encrypted. - @param[in] InputSize Size of the Input buffer in bytes. - @param[in] Ivec Pointer to initialization vector. - @param[out] Output Pointer to a buffer that receives the TDES encryption output. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -TdesCbcDecrypt ( - IN VOID *TdesContext, - IN CONST UINT8 *Input, - IN UINTN InputSize, - IN CONST UINT8 *Ivec, - OUT UINT8 *Output - ) -{ - ASSERT (FALSE); - return FALSE; -} - diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd4Null.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd4Null.c deleted file mode 100644 index fc634fd163..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd4Null.c +++ /dev/null @@ -1,124 +0,0 @@ -/** @file - MD4 Digest Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for MD4 hash - operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Md4GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory pointed by Md4Context as MD4 hash context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Md4Context Pointer to MD4 context being initialized. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Init ( - OUT VOID *Md4Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing MD4 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] Md4Context Pointer to MD4 context being copied. - @param[out] NewMd4Context Pointer to new MD4 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Duplicate ( - IN CONST VOID *Md4Context, - OUT VOID *NewMd4Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates MD4 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Update ( - IN OUT VOID *Md4Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the MD4 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Md4Context Pointer to the MD4 context. - @param[out] HashValue Pointer to a buffer that receives the MD4 digest - value (16 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md4Final ( - IN OUT VOID *Md4Context, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd5Null.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd5Null.c deleted file mode 100644 index b9283d1746..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptMd5Null.c +++ /dev/null @@ -1,125 +0,0 @@ -/** @file - MD5 Digest Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - - -/** - Retrieves the size, in bytes, of the context buffer required for MD5 hash operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Md5GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - - -/** - Initializes user-supplied memory pointed by Md5Context as MD5 hash context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Md5Context Pointer to MD5 context being initialized. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Init ( - OUT VOID *Md5Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing MD5 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] Md5Context Pointer to MD5 context being copied. - @param[out] NewMd5Context Pointer to new MD5 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Duplicate ( - IN CONST VOID *Md5Context, - OUT VOID *NewMd5Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates MD5 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Md5Context Pointer to the MD5 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Update ( - IN OUT VOID *Md5Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the MD5 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Md5Context Pointer to the MD5 context. - @param[out] HashValue Pointer to a buffer that receives the MD5 digest - value (16 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Md5Final ( - IN OUT VOID *Md5Context, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptSha1Null.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptSha1Null.c deleted file mode 100644 index 7054365e80..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hash/CryptSha1Null.c +++ /dev/null @@ -1,125 +0,0 @@ -/** @file - SHA-1 Digest Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-1 hash operations. - - Return zero to indicate this interface is not supported. - - @return The size, in bytes, of the context buffer required for SHA-1 hash operations. - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -Sha1GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory pointed by Sha1Context as SHA-1 hash context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] Sha1Context Pointer to SHA-1 context being initialized. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Init ( - OUT VOID *Sha1Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing SHA-1 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] Sha1Context Pointer to SHA-1 context being copied. - @param[out] NewSha1Context Pointer to new SHA-1 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Duplicate ( - IN CONST VOID *Sha1Context, - OUT VOID *NewSha1Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates SHA-1 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Sha1Context Pointer to the SHA-1 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Update ( - IN OUT VOID *Sha1Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the SHA-1 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] Sha1Context Pointer to the SHA-1 context. - @param[out] HashValue Pointer to a buffer that receives the SHA-1 digest - value (20 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha1Final ( - IN OUT VOID *Sha1Context, - OUT UINT8 *HashValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacMd5Null.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacMd5Null.c deleted file mode 100644 index b4bdde0433..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacMd5Null.c +++ /dev/null @@ -1,127 +0,0 @@ -/** @file - HMAC-MD5 Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-MD5 operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacMd5GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory pointed by HmacMd5Context as HMAC-MD5 context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] HmacMd5Context Pointer to HMAC-MD5 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Init ( - OUT VOID *HmacMd5Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing HMAC-MD5 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] HmacMd5Context Pointer to HMAC-MD5 context being copied. - @param[out] NewHmacMd5Context Pointer to new HMAC-MD5 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Duplicate ( - IN CONST VOID *HmacMd5Context, - OUT VOID *NewHmacMd5Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates HMAC-MD5 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Update ( - IN OUT VOID *HmacMd5Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the HMAC-MD5 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacMd5Context Pointer to the HMAC-MD5 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-MD5 digest - value (16 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacMd5Final ( - IN OUT VOID *HmacMd5Context, - OUT UINT8 *HmacValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacSha1Null.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacSha1Null.c deleted file mode 100644 index b31d0d1402..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Hmac/CryptHmacSha1Null.c +++ /dev/null @@ -1,127 +0,0 @@ -/** @file - HMAC-SHA1 Wrapper Implementation which does not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieves the size, in bytes, of the context buffer required for HMAC-SHA1 operations. - - Return zero to indicate this interface is not supported. - - @retval 0 This interface is not supported. - -**/ -UINTN -EFIAPI -HmacSha1GetContextSize ( - VOID - ) -{ - ASSERT (FALSE); - return 0; -} - -/** - Initializes user-supplied memory pointed by HmacSha1Context as HMAC-SHA1 context for - subsequent use. - - Return FALSE to indicate this interface is not supported. - - @param[out] HmacSha1Context Pointer to HMAC-SHA1 context being initialized. - @param[in] Key Pointer to the user-supplied key. - @param[in] KeySize Key size in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Init ( - OUT VOID *HmacSha1Context, - IN CONST UINT8 *Key, - IN UINTN KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Makes a copy of an existing HMAC-SHA1 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] HmacSha1Context Pointer to HMAC-SHA1 context being copied. - @param[out] NewHmacSha1Context Pointer to new HMAC-SHA1 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Duplicate ( - IN CONST VOID *HmacSha1Context, - OUT VOID *NewHmacSha1Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Digests the input data and updates HMAC-SHA1 context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[in] Data Pointer to the buffer containing the data to be digested. - @param[in] DataSize Size of Data buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Update ( - IN OUT VOID *HmacSha1Context, - IN CONST VOID *Data, - IN UINTN DataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Completes computation of the HMAC-SHA1 digest value. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] HmacSha1Context Pointer to the HMAC-SHA1 context. - @param[out] HmacValue Pointer to a buffer that receives the HMAC-SHA1 digest - value (20 bytes). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -HmacSha1Final ( - IN OUT VOID *HmacSha1Context, - OUT UINT8 *HmacValue - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/InternalCryptLib.h b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/InternalCryptLib.h deleted file mode 100644 index 24c767ced6..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/InternalCryptLib.h +++ /dev/null @@ -1,23 +0,0 @@ -/** @file - Internal include file for BaseCryptLibRuntimeCryptProtocol. - -Copyright (c) 2012 - 2015, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __INTERNAL_CRYPT_LIB_H__ -#define __INTERNAL_CRYPT_LIB_H__ - -#include -#include -#include - -#endif - diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pem/CryptPemNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pem/CryptPemNull.c deleted file mode 100644 index 8c9e4f0bb5..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pem/CryptPemNull.c +++ /dev/null @@ -1,44 +0,0 @@ -/** @file - PEM (Privacy Enhanced Mail) Format Handler Wrapper Implementation which does - not provide real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Retrieve the RSA Private Key from the password-protected PEM key data. - - Return FALSE to indicate this interface is not supported. - - @param[in] PemData Pointer to the PEM-encoded key data to be retrieved. - @param[in] PemSize Size of the PEM key data in bytes. - @param[in] Password NULL-terminated passphrase used for encrypted PEM key data. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA private key component. Use RsaFree() function to free the - resource. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetPrivateKeyFromPem ( - IN CONST UINT8 *PemData, - IN UINTN PemSize, - IN CONST CHAR8 *Password, - OUT VOID **RsaContext - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptAuthenticodeNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptAuthenticodeNull.c deleted file mode 100644 index afec025dfa..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptAuthenticodeNull.c +++ /dev/null @@ -1,51 +0,0 @@ -/** @file - Authenticode Portable Executable Signature Verification which does not provide - real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Verifies the validity of a PE/COFF Authenticode Signature as described in "Windows - Authenticode Portable Executable Signature Format". - - Return FALSE to indicate this interface is not supported. - - @param[in] AuthData Pointer to the Authenticode Signature retrieved from signed - PE/COFF image to be verified. - @param[in] DataSize Size of the Authenticode Signature in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertSize Size of the trusted certificate in bytes. - @param[in] ImageHash Pointer to the original image file hash value. The procedure - for calculating the image hash value is described in Authenticode - specification. - @param[in] HashSize Size of Image hash value in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -AuthenticodeVerify ( - IN CONST UINT8 *AuthData, - IN UINTN DataSize, - IN CONST UINT8 *TrustedCert, - IN UINTN CertSize, - IN CONST UINT8 *ImageHash, - IN UINTN HashSize - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptDhNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptDhNull.c deleted file mode 100644 index 35045db3c8..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptDhNull.c +++ /dev/null @@ -1,156 +0,0 @@ -/** @file - Diffie-Hellman Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Allocates and Initializes one Diffie-Hellman Context for subsequent use. - - @return Pointer to the Diffie-Hellman Context that has been initialized. - If the interface is not supported, DhNew() returns NULL. - -**/ -VOID * -EFIAPI -DhNew ( - VOID - ) -{ - ASSERT (FALSE); - return NULL; -} - -/** - Release the specified DH context. - - If the interface is not supported, then ASSERT(). - - @param[in] DhContext Pointer to the DH context to be released. - -**/ -VOID -EFIAPI -DhFree ( - IN VOID *DhContext - ) -{ - ASSERT (FALSE); -} - -/** - Generates DH parameter. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[out] Prime Pointer to the buffer to receive the generated prime number. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhGenerateParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - OUT UINT8 *Prime - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Sets generator and prime parameters for DH. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] Generator Value of generator. - @param[in] PrimeLength Length in bits of prime to be generated. - @param[in] Prime Pointer to the prime number. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhSetParameter ( - IN OUT VOID *DhContext, - IN UINTN Generator, - IN UINTN PrimeLength, - IN CONST UINT8 *Prime - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Generates DH public key. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[out] PublicKey Pointer to the buffer to receive generated public key. - @param[in, out] PublicKeySize On input, the size of PublicKey buffer in bytes. - On output, the size of data returned in PublicKey buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhGenerateKey ( - IN OUT VOID *DhContext, - OUT UINT8 *PublicKey, - IN OUT UINTN *PublicKeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Computes exchanged common key. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] DhContext Pointer to the DH context. - @param[in] PeerPublicKey Pointer to the peer's public key. - @param[in] PeerPublicKeySize Size of peer's public key in bytes. - @param[out] Key Pointer to the buffer to receive generated key. - @param[in, out] KeySize On input, the size of Key buffer in bytes. - On output, the size of data returned in Key buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -DhComputeKey ( - IN OUT VOID *DhContext, - IN CONST UINT8 *PeerPublicKey, - IN UINTN PeerPublicKeySize, - OUT UINT8 *Key, - IN OUT UINTN *KeySize - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7SignNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7SignNull.c deleted file mode 100644 index 539bb6b7d5..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7SignNull.c +++ /dev/null @@ -1,59 +0,0 @@ -/** @file - PKCS#7 SignedData Sign Wrapper Implementation which does not provide real - capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Creates a PKCS#7 signedData as described in "PKCS #7: Cryptographic Message - Syntax Standard, version 1.5". This interface is only intended to be used for - application to perform PKCS#7 functionality validation. - - Return FALSE to indicate this interface is not supported. - - @param[in] PrivateKey Pointer to the PEM-formatted private key data for - data signing. - @param[in] PrivateKeySize Size of the PEM private key data in bytes. - @param[in] KeyPassword NULL-terminated passphrase used for encrypted PEM - key data. - @param[in] InData Pointer to the content to be signed. - @param[in] InDataSize Size of InData in bytes. - @param[in] SignCert Pointer to signer's DER-encoded certificate to sign with. - @param[in] OtherCerts Pointer to an optional additional set of certificates to - include in the PKCS#7 signedData (e.g. any intermediate - CAs in the chain). - @param[out] SignedData Pointer to output PKCS#7 signedData. - @param[out] SignedDataSize Size of SignedData in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7Sign ( - IN CONST UINT8 *PrivateKey, - IN UINTN PrivateKeySize, - IN CONST UINT8 *KeyPassword, - IN UINT8 *InData, - IN UINTN InDataSize, - IN UINT8 *SignCert, - IN UINT8 *OtherCerts OPTIONAL, - OUT UINT8 **SignedData, - OUT UINTN *SignedDataSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7VerifyNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7VerifyNull.c deleted file mode 100644 index 06602ec535..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptPkcs7VerifyNull.c +++ /dev/null @@ -1,163 +0,0 @@ -/** @file - PKCS#7 SignedData Verification Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012 - 2015, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Get the signer's certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - Return FALSE to indicate this interface is not supported. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] CertStack Pointer to Signer's certificates retrieved from P7Data. - It's caller's responsibility to free the buffer. - @param[out] StackLength Length of signer's certificates in bytes. - @param[out] TrustedCert Pointer to a trusted certificate from Signer's certificates. - It's caller's responsibility to free the buffer. - @param[out] CertLength Length of the trusted certificate in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetSigners ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **CertStack, - OUT UINTN *StackLength, - OUT UINT8 **TrustedCert, - OUT UINTN *CertLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Wrap function to use free() to free allocated memory for certificates. - - If the interface is not supported, then ASSERT(). - - @param[in] Certs Pointer to the certificates to be freed. - -**/ -VOID -EFIAPI -Pkcs7FreeSigners ( - IN UINT8 *Certs - ) -{ - ASSERT (FALSE); -} - -/** - Retrieves all embedded certificates from PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard", and outputs two certificate lists chained and - unchained to the signer's certificates. - The input signed data could be wrapped in a ContentInfo structure. - - @param[in] P7Data Pointer to the PKCS#7 message. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[out] SignerChainCerts Pointer to the certificates list chained to signer's - certificate. It's caller's responsibility to free the buffer. - @param[out] ChainLength Length of the chained certificates list buffer in bytes. - @param[out] UnchainCerts Pointer to the unchained certificates lists. It's caller's - responsibility to free the buffer. - @param[out] UnchainLength Length of the unchained certificates list buffer in bytes. - - @retval TRUE The operation is finished successfully. - @retval FALSE Error occurs during the operation. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetCertificatesList ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT UINT8 **SignerChainCerts, - OUT UINTN *ChainLength, - OUT UINT8 **UnchainCerts, - OUT UINTN *UnchainLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Verifies the validity of a PKCS#7 signed data as described in "PKCS #7: - Cryptographic Message Syntax Standard". The input signed data could be wrapped - in a ContentInfo structure. - - Return FALSE to indicate this interface is not supported. - - @param[in] P7Data Pointer to the PKCS#7 message to verify. - @param[in] P7Length Length of the PKCS#7 message in bytes. - @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which - is used for certificate chain verification. - @param[in] CertLength Length of the trusted certificate in bytes. - @param[in] InData Pointer to the content to be verified. - @param[in] DataLength Length of InData in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Pkcs7Verify ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - IN CONST UINT8 *TrustedCert, - IN UINTN CertLength, - IN CONST UINT8 *InData, - IN UINTN DataLength - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Extracts the attached content from a PKCS#7 signed data if existed. The input signed - data could be wrapped in a ContentInfo structure. - - Return FALSE to indicate this interface is not supported. - - @param[in] P7Data Pointer to the PKCS#7 signed data to process. - @param[in] P7Length Length of the PKCS#7 signed data in bytes. - @param[out] Content Pointer to the extracted content from the PKCS#7 signedData. - It's caller's responsibility to free the buffer. - @param[out] ContentSize The size of the extracted content in bytes. - - @retval TRUE The P7Data was correctly formatted for processing. - @retval FALSE The P7Data was not correctly formatted for processing. - -**/ -BOOLEAN -EFIAPI -Pkcs7GetAttachedContent ( - IN CONST UINT8 *P7Data, - IN UINTN P7Length, - OUT VOID **Content, - OUT UINTN *ContentSize - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptRsaExtNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptRsaExtNull.c deleted file mode 100644 index e44cdde44f..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptRsaExtNull.c +++ /dev/null @@ -1,125 +0,0 @@ -/** @file - RSA Asymmetric Cipher Wrapper Implementation over OpenSSL. - - This file does not provide real capabilities for following APIs in RSA handling: - 1) RsaGetKey - 2) RsaGenerateKey - 3) RsaCheckKey - 4) RsaPkcs1Sign - -Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Gets the tag-designated RSA key component from the established RSA context. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[out] BigNumber Pointer to octet integer buffer. - @param[in, out] BnSize On input, the size of big number buffer in bytes. - On output, the size of data returned in big number buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - OUT UINT8 *BigNumber, - IN OUT UINTN *BnSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Generates RSA key components. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] ModulusLength Length of RSA modulus N in bits. - @param[in] PublicExponent Pointer to RSA public exponent. - @param[in] PublicExponentSize Size of RSA public exponent buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGenerateKey ( - IN OUT VOID *RsaContext, - IN UINTN ModulusLength, - IN CONST UINT8 *PublicExponent, - IN UINTN PublicExponentSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Validates key components of RSA context. - - Return FALSE to indicate this interface is not supported. - - @param[in] RsaContext Pointer to RSA context to check. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaCheckKey ( - IN VOID *RsaContext - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Carries out the RSA-SSA signature generation with EMSA-PKCS1-v1_5 encoding scheme. - - Return FALSE to indicate this interface is not supported. - - @param[in] RsaContext Pointer to RSA context for signature generation. - @param[in] MessageHash Pointer to octet message hash to be signed. - @param[in] HashSize Size of the message hash in bytes. - @param[out] Signature Pointer to buffer to receive RSA PKCS1-v1_5 signature. - @param[in, out] SigSize On input, the size of Signature buffer in bytes. - On output, the size of data returned in Signature buffer in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaPkcs1Sign ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashSize, - OUT UINT8 *Signature, - IN OUT UINTN *SigSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - - diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptX509Null.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptX509Null.c deleted file mode 100644 index f5d9aa1076..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Pk/CryptX509Null.c +++ /dev/null @@ -1,206 +0,0 @@ -/** @file - X.509 Certificate Handler Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - -/** - Construct a X509 object from DER-encoded certificate data. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded certificate data. - @param[in] CertSize The size of certificate data in bytes. - @param[out] SingleX509Cert The generated X509 object. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificate ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **SingleX509Cert - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Construct a X509 stack object from a list of DER-encoded certificate data. - - Return FALSE to indicate this interface is not supported. - - @param[in, out] X509Stack On input, pointer to an existing or NULL X509 stack object. - On output, pointer to the X509 stack object with new - inserted X509 certificate. - @param ... A list of DER-encoded single certificate data followed - by certificate size. A NULL terminates the list. The - pairs are the arguments to X509ConstructCertificate(). - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509ConstructCertificateStack ( - IN OUT UINT8 **X509Stack, - ... - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Release the specified X509 object. - - If the interface is not supported, then ASSERT(). - - @param[in] X509Cert Pointer to the X509 object to be released. - -**/ -VOID -EFIAPI -X509Free ( - IN VOID *X509Cert - ) -{ - ASSERT (FALSE); -} - -/** - Release the specified X509 stack object. - - If the interface is not supported, then ASSERT(). - - @param[in] X509Stack Pointer to the X509 stack object to be released. - -**/ -VOID -EFIAPI -X509StackFree ( - IN VOID *X509Stack - ) -{ - ASSERT (FALSE); -} - -/** - Retrieve the subject bytes from one X.509 certificate. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] CertSubject Pointer to the retrieved certificate subject bytes. - @param[in, out] SubjectSize The size in bytes of the CertSubject buffer on input, - and the size of buffer returned CertSubject on output. - - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509GetSubjectName ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 *CertSubject, - IN OUT UINTN *SubjectSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Retrieve the RSA Public Key from one DER-encoded X509 certificate. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] RsaContext Pointer to new-generated RSA context which contain the retrieved - RSA public key component. Use RsaFree() function to free the - resource. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RsaGetPublicKeyFromX509 ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT VOID **RsaContext - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Verify one X509 certificate was issued by the trusted CA. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the DER-encoded X509 certificate to be verified. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[in] CACert Pointer to the DER-encoded trusted CA certificate. - @param[in] CACertSize Size of the CA Certificate in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509VerifyCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - IN CONST UINT8 *CACert, - IN UINTN CACertSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Retrieve the TBSCertificate from one given X.509 certificate. - - Return FALSE to indicate this interface is not supported. - - @param[in] Cert Pointer to the given DER-encoded X509 certificate. - @param[in] CertSize Size of the X509 certificate in bytes. - @param[out] TBSCert DER-Encoded To-Be-Signed certificate. - @param[out] TBSCertSize Size of the TBS certificate in bytes. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -X509GetTBSCert ( - IN CONST UINT8 *Cert, - IN UINTN CertSize, - OUT UINT8 **TBSCert, - OUT UINTN *TBSCertSize - ) -{ - ASSERT (FALSE); - return FALSE; -} \ No newline at end of file diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Rand/CryptRandNull.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Rand/CryptRandNull.c deleted file mode 100644 index c292a2301e..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/Rand/CryptRandNull.c +++ /dev/null @@ -1,63 +0,0 @@ -/** @file - Pseudorandom Number Generator Wrapper Implementation which does not provide - real capabilities. - -Copyright (c) 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalCryptLib.h" - - -/** - Sets up the seed value for the pseudorandom number generator. - - Return FALSE to indicate this interface is not supported. - - @param[in] Seed Pointer to seed value. - If NULL, default seed is used. - @param[in] SeedSize Size of seed value. - If Seed is NULL, this parameter is ignored. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RandomSeed ( - IN CONST UINT8 *Seed OPTIONAL, - IN UINTN SeedSize - ) -{ - ASSERT (FALSE); - return FALSE; -} - -/** - Generates a pseudorandom byte stream of the specified size. - - Return FALSE to indicate this interface is not supported. - - @param[out] Output Pointer to buffer to receive random value. - @param[in] Size Size of random bytes to generate. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -RandomBytes ( - OUT UINT8 *Output, - IN UINTN Size - ) -{ - ASSERT (FALSE); - return FALSE; -} diff --git a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/RuntimeDxeIpfCryptLib.c b/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/RuntimeDxeIpfCryptLib.c deleted file mode 100644 index 9babc7e952..0000000000 --- a/Core/CryptoPkg/Library/BaseCryptLibRuntimeCryptProtocol/RuntimeDxeIpfCryptLib.c +++ /dev/null @@ -1,419 +0,0 @@ -/** @file - Implementation of The runtime cryptographic library instance (for IPF). - -Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -#include -#include -#include -#include - -#include - -#include - -EFI_RUNTIME_CRYPT_PROTOCOL *mCryptProtocol = NULL; -EFI_EVENT mIpfCryptLibVirtualNotifyEvent; - -/** - Notification function of EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE, which converts - pointer to new virtual address. - - @param Event Event whose notification function is being invoked. - @param Context Pointer to the notification function's context - -**/ -VOID -EFIAPI -IpfCryptLibAddressChangeEvent ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - // - // Convert Address of Runtime Crypto Protocol. - // - EfiConvertPointer (0x0, (VOID **) &mCryptProtocol); -} - -/** - Constructor of IPF Crypto Library Instance. - This function locates the Runtime Crypt Protocol and register notification - function for EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE event. - - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. - -**/ -EFI_STATUS -EFIAPI -RuntimeDxeIpfCryptLibConstructor ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - // - // Locate Runtime Crypt Protocol Instance - // - Status = gBS->LocateProtocol ( - &gEfiRuntimeCryptProtocolGuid, - NULL, - (VOID**) &mCryptProtocol - ); - ASSERT_EFI_ERROR (Status); - ASSERT (mCryptProtocol != NULL); - - // - // Register SetVirtualAddressMap () notify function - // - Status = gBS->CreateEventEx ( - EVT_NOTIFY_SIGNAL, - TPL_NOTIFY, - IpfCryptLibAddressChangeEvent, - NULL, - &gEfiEventVirtualAddressChangeGuid, - &mIpfCryptLibVirtualNotifyEvent - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} - -/** - Destructor of IPF Crypto Library Instance. - - @param ImageHandle The firmware allocated handle for the EFI image. - @param SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The destructor completed successfully. - @retval Other value The destructor did not complete successfully. - -**/ -EFI_STATUS -EFIAPI -RuntimeDxeIpfCryptLibDestructor ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - // - // Close the Set Virtual Address Map event - // - Status = gBS->CloseEvent (mIpfCryptLibVirtualNotifyEvent); - ASSERT_EFI_ERROR (Status); - - return Status; -} - -/** - Check whether crypto service provided by Runtime Crypt protocol is ready to use. - - Crypto service is available if the call is in physical mode prior to - SetVirtualAddressMap() or virtual mode after SetVirtualAddressMap(). If either - of these two conditions are met, this routine will return TRUE; if neither of - these conditions are met, this routine will return FALSE. - - @retval TRUE The Crypto service is ready to use. - @retval FALSE The Crypto service is not available. - -**/ -BOOLEAN -EFIAPI -InternalIsCryptServiveAvailable ( - VOID - ) -{ - INT64 CpuMode; - BOOLEAN GoneVirtual; - - CpuMode = AsmCpuVirtual(); - if (CpuMode < 0) { - // - // CPU is in mixed mode, return failing the operation gracefully. - // - return FALSE; - } - - GoneVirtual = EfiGoneVirtual(); - - if ((CpuMode > 0) && !GoneVirtual) { - // - // CPU is in virtual mode, but SetVirtualAddressMap() has not been called, - // so return failing the operation gracefully. - // - return FALSE; - } - - if ((CpuMode == 0) && GoneVirtual) { - // - // CPU is in physical mode, but SetVirtualAddressMap() has been called, - // so return failing the operation gracefully. - // - return FALSE; - } - - return TRUE; -} - -/** - Retrieves the size, in bytes, of the context buffer required for SHA-256 operations. - - @return The size, in bytes, of the context buffer required for SHA-256 operations. - -**/ -UINTN -EFIAPI -Sha256GetContextSize ( - VOID - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return 0; - } - - return mCryptProtocol->Sha256GetContextSize (); -} - -/** - Initializes user-supplied memory pointed by Sha256Context as SHA-256 hash context for - subsequent use. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 Context being initialized. - - @retval TRUE SHA-256 context initialization succeeded. - @retval FALSE SHA-256 context initialization failed. - -**/ -BOOLEAN -EFIAPI -Sha256Init ( - IN OUT VOID *Sha256Context - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return FALSE; - } - - return mCryptProtocol->Sha256Init (Sha256Context); -} - - -/** - Makes a copy of an existing SHA-256 context. - - Return FALSE to indicate this interface is not supported. - - @param[in] Sha256Context Pointer to SHA-256 context being copied. - @param[out] NewSha256Context Pointer to new SHA-256 context. - - @retval FALSE This interface is not supported. - -**/ -BOOLEAN -EFIAPI -Sha256Duplicate ( - IN CONST VOID *Sha256Context, - OUT VOID *NewSha256Context - ) -{ - ASSERT (FALSE); - return FALSE; -} - - -/** - Performs SHA-256 digest on a data buffer of the specified length. This function can - be called multiple times to compute the digest of long or discontinuous data streams. - - If Sha256Context is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to the SHA-256 context. - @param[in] Data Pointer to the buffer containing the data to be hashed. - @param[in] DataLength Length of Data buffer in bytes. - - @retval TRUE SHA-256 data digest succeeded. - @retval FALSE Invalid SHA-256 context. After Sha256Final function has been called, the - SHA-256 context cannot be reused. - -**/ -BOOLEAN -EFIAPI -Sha256Update ( - IN OUT VOID *Sha256Context, - IN CONST VOID *Data, - IN UINTN DataLength - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return FALSE; - } - - return mCryptProtocol->Sha256Update (Sha256Context, Data, DataLength); -} - -/** - Completes SHA-256 hash computation and retrieves the digest value into the specified - memory. After this function has been called, the SHA-256 context cannot be used again. - - If Sha256Context is NULL, then return FALSE. - If HashValue is NULL, then return FALSE. - - @param[in, out] Sha256Context Pointer to SHA-256 context - @param[out] HashValue Pointer to a buffer that receives the SHA-256 digest - value (32 bytes). - - @retval TRUE SHA-256 digest computation succeeded. - @retval FALSE SHA-256 digest computation failed. - -**/ -BOOLEAN -EFIAPI -Sha256Final ( - IN OUT VOID *Sha256Context, - OUT UINT8 *HashValue - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return FALSE; - } - - return mCryptProtocol->Sha256Final (Sha256Context, HashValue); -} - -/** - Allocates and initializes one RSA context for subsequent use. - - @return Pointer to the RSA context that has been initialized. - If the allocations fails, RsaNew() returns NULL. - -**/ -VOID * -EFIAPI -RsaNew ( - VOID - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return FALSE; - } - - return mCryptProtocol->RsaNew (); -} - -/** - Release the specified RSA context. - - @param[in] RsaContext Pointer to the RSA context to be released. - -**/ -VOID -EFIAPI -RsaFree ( - IN VOID *RsaContext - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return; - } - - mCryptProtocol->RsaFree (RsaContext); -} - -/** - Sets the tag-designated key component into the established RSA context. - - This function sets the tag-designated RSA key component into the established - RSA context from the user-specified non-negative integer (octet string format - represented in RSA PKCS#1). - If BigNumber is NULL, then the specified key component in RSA context is cleared. - - If RsaContext is NULL, then return FALSE. - - @param[in, out] RsaContext Pointer to RSA context being set. - @param[in] KeyTag Tag of RSA key component being set. - @param[in] BigNumber Pointer to octet integer buffer. - If NULL, then the specified key component in RSA - context is cleared. - @param[in] BnSize Size of big number buffer in bytes. - If BigNumber is NULL, then it is ignored. - - @retval TRUE RSA key component was set successfully. - @retval FALSE Invalid RSA key component tag. - -**/ -BOOLEAN -EFIAPI -RsaSetKey ( - IN OUT VOID *RsaContext, - IN RSA_KEY_TAG KeyTag, - IN CONST UINT8 *BigNumber, - IN UINTN BnSize - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return FALSE; - } - - return mCryptProtocol->RsaSetKey (RsaContext, KeyTag, BigNumber, BnSize); -} - -/** - Verifies the RSA-SSA signature with EMSA-PKCS1-v1_5 encoding scheme defined in - RSA PKCS#1. - - If RsaContext is NULL, then return FALSE. - If MessageHash is NULL, then return FALSE. - If Signature is NULL, then return FALSE. - If HashSize is not equal to the size of MD5, SHA-1 or SHA-256 digest, then return FALSE. - - @param[in] RsaContext Pointer to RSA context for signature verification. - @param[in] MessageHash Pointer to octet message hash to be checked. - @param[in] HashSize Size of the message hash in bytes. - @param[in] Signature Pointer to RSA PKCS1-v1_5 signature to be verified. - @param[in] SigSize Size of signature in bytes. - - @retval TRUE Valid signature encoded in PKCS1-v1_5. - @retval FALSE Invalid signature or invalid RSA context. - -**/ -BOOLEAN -EFIAPI -RsaPkcs1Verify ( - IN VOID *RsaContext, - IN CONST UINT8 *MessageHash, - IN UINTN HashSize, - IN CONST UINT8 *Signature, - IN UINTN SigSize - ) -{ - if (!InternalIsCryptServiveAvailable ()) { - return FALSE; - } - - return mCryptProtocol->RsaPkcs1Verify ( - RsaContext, - MessageHash, - HashSize, - Signature, - SigSize - ); -} diff --git a/Core/CryptoPkg/Library/Include/CrtLibSupport.h b/Core/CryptoPkg/Library/Include/CrtLibSupport.h deleted file mode 100644 index 7f1ec12302..0000000000 --- a/Core/CryptoPkg/Library/Include/CrtLibSupport.h +++ /dev/null @@ -1,194 +0,0 @@ -/** @file - Root include file of C runtime library to support building the third-party - cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __CRT_LIB_SUPPORT_H__ -#define __CRT_LIB_SUPPORT_H__ - -#include -#include -#include -#include - -#define OPENSSLDIR "" -#define ENGINESDIR "" - -#define MAX_STRING_SIZE 0x1000 - -// -// OpenSSL relies on explicit configuration for word size in crypto/bn, -// but we want it to be automatically inferred from the target. So we -// bypass what's in for OPENSSL_SYS_UEFI, and -// define our own here. -// -#ifdef CONFIG_HEADER_BN_H -#error CONFIG_HEADER_BN_H already defined -#endif - -#define CONFIG_HEADER_BN_H - -#if defined(MDE_CPU_X64) || defined(MDE_CPU_AARCH64) || defined(MDE_CPU_IA64) -// -// With GCC we would normally use SIXTY_FOUR_BIT_LONG, but MSVC needs -// SIXTY_FOUR_BIT, because 'long' is 32-bit and only 'long long' is -// 64-bit. Since using 'long long' works fine on GCC too, just do that. -// -#define SIXTY_FOUR_BIT -#elif defined(MDE_CPU_IA32) || defined(MDE_CPU_ARM) || defined(MDE_CPU_EBC) -#define THIRTY_TWO_BIT -#else -#error Unknown target architecture -#endif - -// -// Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h -// -#if !defined(__CC_ARM) // if va_list is not already defined -#define va_list VA_LIST -#define va_arg VA_ARG -#define va_start VA_START -#define va_end VA_END -#else // __CC_ARM -#define va_start(Marker, Parameter) __va_start(Marker, Parameter) -#define va_arg(Marker, TYPE) __va_arg(Marker, TYPE) -#define va_end(Marker) ((void)0) -#endif - -// -// Definitions for global constants used by CRT library routines -// -#define EINVAL 22 /* Invalid argument */ -#define INT_MAX 0x7FFFFFFF /* Maximum (signed) int value */ -#define LONG_MAX 0X7FFFFFFFL /* max value for a long */ -#define LONG_MIN (-LONG_MAX-1) /* min value for a long */ -#define ULONG_MAX 0xFFFFFFFF /* Maximum unsigned long value */ -#define CHAR_BIT 8 /* Number of bits in a char */ - -// -// Basic types mapping -// -typedef UINTN size_t; -typedef INTN ssize_t; -typedef INT32 time_t; -typedef UINT8 __uint8_t; -typedef UINT8 sa_family_t; -typedef UINT32 uid_t; -typedef UINT32 gid_t; - -// -// File operations are not required for EFI building, -// so FILE is mapped to VOID * to pass build -// -typedef VOID *FILE; - -// -// Structures Definitions -// -struct tm { - int tm_sec; /* seconds after the minute [0-60] */ - int tm_min; /* minutes after the hour [0-59] */ - int tm_hour; /* hours since midnight [0-23] */ - int tm_mday; /* day of the month [1-31] */ - int tm_mon; /* months since January [0-11] */ - int tm_year; /* years since 1900 */ - int tm_wday; /* days since Sunday [0-6] */ - int tm_yday; /* days since January 1 [0-365] */ - int tm_isdst; /* Daylight Savings Time flag */ - long tm_gmtoff; /* offset from CUT in seconds */ - char *tm_zone; /* timezone abbreviation */ -}; - -struct timeval { - long tv_sec; /* time value, in seconds */ - long tv_usec; /* time value, in microseconds */ -}; - -struct sockaddr { - __uint8_t sa_len; /* total length */ - sa_family_t sa_family; /* address family */ - char sa_data[14]; /* actually longer; address value */ -}; - -// -// Global variables -// -extern int errno; -extern FILE *stderr; - -// -// Function prototypes of CRT Library routines -// -void *malloc (size_t); -void *realloc (void *, size_t); -void free (void *); -void *memset (void *, int, size_t); -int memcmp (const void *, const void *, size_t); -int isdigit (int); -int isspace (int); -int isxdigit (int); -int isalnum (int); -int isupper (int); -int tolower (int); -int strcmp (const char *, const char *); -int strncasecmp (const char *, const char *, size_t); -char *strrchr (const char *, int); -unsigned long strtoul (const char *, char **, int); -long strtol (const char *, char **, int); -char *strerror (int); -size_t strspn (const char *, const char *); -size_t strcspn (const char *, const char *); -int printf (const char *, ...); -int sscanf (const char *, const char *, ...); -FILE *fopen (const char *, const char *); -size_t fread (void *, size_t, size_t, FILE *); -size_t fwrite (const void *, size_t, size_t, FILE *); -int fclose (FILE *); -int fprintf (FILE *, const char *, ...); -time_t time (time_t *); -struct tm *gmtime (const time_t *); -uid_t getuid (void); -uid_t geteuid (void); -gid_t getgid (void); -gid_t getegid (void); -void qsort (void *, size_t, size_t, int (*)(const void *, const void *)); -char *getenv (const char *); -#if defined(__GNUC__) && (__GNUC__ >= 2) -void abort (void) __attribute__((__noreturn__)); -#else -void abort (void); -#endif - -// -// Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions -// -#define memcpy(dest,source,count) CopyMem(dest,source,(UINTN)(count)) -#define memset(dest,ch,count) SetMem(dest,(UINTN)(count),(UINT8)(ch)) -#define memchr(buf,ch,count) ScanMem8(buf,(UINTN)(count),(UINT8)ch) -#define memcmp(buf1,buf2,count) (int)(CompareMem(buf1,buf2,(UINTN)(count))) -#define memmove(dest,source,count) CopyMem(dest,source,(UINTN)(count)) -#define strlen(str) (size_t)(AsciiStrnLenS(str,MAX_STRING_SIZE)) -#define strcpy(strDest,strSource) AsciiStrCpyS(strDest,MAX_STRING_SIZE,strSource) -#define strncpy(strDest,strSource,count) AsciiStrnCpyS(strDest,MAX_STRING_SIZE,strSource,(UINTN)count) -#define strcat(strDest,strSource) AsciiStrCatS(strDest,MAX_STRING_SIZE,strSource) -#define strchr(str,ch) ScanMem8((VOID *)(str),AsciiStrSize(str),(UINT8)ch) -#define strncmp(string1,string2,count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count))) -#define strcasecmp(str1,str2) (int)AsciiStriCmp(str1,str2) -#define sprintf(buf,...) AsciiSPrint(buf,MAX_STRING_SIZE,__VA_ARGS__) -#define localtime(timer) NULL -#define assert(expression) -#define offsetof(type,member) OFFSET_OF(type,member) -#define atoi(nptr) AsciiStrDecimalToUintn(nptr) -#define gettimeofday(tvp,tz) do { (tvp)->tv_sec = time(NULL); (tvp)->tv_usec = 0; } while (0) - -#endif diff --git a/Core/CryptoPkg/Library/Include/assert.h b/Core/CryptoPkg/Library/Include/assert.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/assert.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/ctype.h b/Core/CryptoPkg/Library/Include/ctype.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/ctype.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/errno.h b/Core/CryptoPkg/Library/Include/errno.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/errno.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/internal/dso_conf.h b/Core/CryptoPkg/Library/Include/internal/dso_conf.h deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Core/CryptoPkg/Library/Include/limits.h b/Core/CryptoPkg/Library/Include/limits.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/limits.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/memory.h b/Core/CryptoPkg/Library/Include/memory.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/memory.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/openssl/opensslconf.h b/Core/CryptoPkg/Library/Include/openssl/opensslconf.h deleted file mode 100644 index 1917d7ab24..0000000000 --- a/Core/CryptoPkg/Library/Include/openssl/opensslconf.h +++ /dev/null @@ -1,308 +0,0 @@ -/* - * WARNING: do not edit! - * Generated from include/openssl/opensslconf.h.in - * - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. - * - * Licensed under the OpenSSL license (the "License"). You may not use - * this file except in compliance with the License. You can obtain a copy - * in the file LICENSE in the source distribution or at - * https://www.openssl.org/source/license.html - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef OPENSSL_ALGORITHM_DEFINES -# error OPENSSL_ALGORITHM_DEFINES no longer supported -#endif - -/* - * OpenSSL was configured with the following options: - */ - -#ifndef OPENSSL_SYS_UEFI -# define OPENSSL_SYS_UEFI 1 -#endif -#define OPENSSL_MIN_API 0x10100000L -#ifndef OPENSSL_NO_BF -# define OPENSSL_NO_BF -#endif -#ifndef OPENSSL_NO_BLAKE2 -# define OPENSSL_NO_BLAKE2 -#endif -#ifndef OPENSSL_NO_CAMELLIA -# define OPENSSL_NO_CAMELLIA -#endif -#ifndef OPENSSL_NO_CAST -# define OPENSSL_NO_CAST -#endif -#ifndef OPENSSL_NO_CHACHA -# define OPENSSL_NO_CHACHA -#endif -#ifndef OPENSSL_NO_CMS -# define OPENSSL_NO_CMS -#endif -#ifndef OPENSSL_NO_CT -# define OPENSSL_NO_CT -#endif -#ifndef OPENSSL_NO_DSA -# define OPENSSL_NO_DSA -#endif -#ifndef OPENSSL_NO_EC -# define OPENSSL_NO_EC -#endif -#ifndef OPENSSL_NO_IDEA -# define OPENSSL_NO_IDEA -#endif -#ifndef OPENSSL_NO_MD2 -# define OPENSSL_NO_MD2 -#endif -#ifndef OPENSSL_NO_MDC2 -# define OPENSSL_NO_MDC2 -#endif -#ifndef OPENSSL_NO_POLY1305 -# define OPENSSL_NO_POLY1305 -#endif -#ifndef OPENSSL_NO_RC2 -# define OPENSSL_NO_RC2 -#endif -#ifndef OPENSSL_NO_RC5 -# define OPENSSL_NO_RC5 -#endif -#ifndef OPENSSL_NO_RMD160 -# define OPENSSL_NO_RMD160 -#endif -#ifndef OPENSSL_NO_SEED -# define OPENSSL_NO_SEED -#endif -#ifndef OPENSSL_NO_SRP -# define OPENSSL_NO_SRP -#endif -#ifndef OPENSSL_NO_TS -# define OPENSSL_NO_TS -#endif -#ifndef OPENSSL_NO_UI -# define OPENSSL_NO_UI -#endif -#ifndef OPENSSL_NO_WHIRLPOOL -# define OPENSSL_NO_WHIRLPOOL -#endif -#ifndef OPENSSL_NO_AFALGENG -# define OPENSSL_NO_AFALGENG -#endif -#ifndef OPENSSL_NO_APPS -# define OPENSSL_NO_APPS -#endif -#ifndef OPENSSL_NO_ASAN -# define OPENSSL_NO_ASAN -#endif -#ifndef OPENSSL_NO_ASM -# define OPENSSL_NO_ASM -#endif -#ifndef OPENSSL_NO_ASYNC -# define OPENSSL_NO_ASYNC -#endif -#ifndef OPENSSL_NO_AUTOALGINIT -# define OPENSSL_NO_AUTOALGINIT -#endif -#ifndef OPENSSL_NO_AUTOERRINIT -# define OPENSSL_NO_AUTOERRINIT -#endif -#ifndef OPENSSL_NO_CAPIENG -# define OPENSSL_NO_CAPIENG -#endif -#ifndef OPENSSL_NO_CRYPTO_MDEBUG -# define OPENSSL_NO_CRYPTO_MDEBUG -#endif -#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE -# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE -#endif -#ifndef OPENSSL_NO_DEPRECATED -# define OPENSSL_NO_DEPRECATED -#endif -#ifndef OPENSSL_NO_DGRAM -# define OPENSSL_NO_DGRAM -#endif -#ifndef OPENSSL_NO_DTLS -# define OPENSSL_NO_DTLS -#endif -#ifndef OPENSSL_NO_DTLS1 -# define OPENSSL_NO_DTLS1 -#endif -#ifndef OPENSSL_NO_DTLS1_2 -# define OPENSSL_NO_DTLS1_2 -#endif -#ifndef OPENSSL_NO_EC2M -# define OPENSSL_NO_EC2M -#endif -#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 -# define OPENSSL_NO_EC_NISTP_64_GCC_128 -#endif -#ifndef OPENSSL_NO_ECDH -# define OPENSSL_NO_ECDH -#endif -#ifndef OPENSSL_NO_ECDSA -# define OPENSSL_NO_ECDSA -#endif -#ifndef OPENSSL_NO_EGD -# define OPENSSL_NO_EGD -#endif -#ifndef OPENSSL_NO_ENGINE -# define OPENSSL_NO_ENGINE -#endif -#ifndef OPENSSL_NO_ERR -# define OPENSSL_NO_ERR -#endif -#ifndef OPENSSL_NO_FILENAMES -# define OPENSSL_NO_FILENAMES -#endif -#ifndef OPENSSL_NO_FUZZ_AFL -# define OPENSSL_NO_FUZZ_AFL -#endif -#ifndef OPENSSL_NO_FUZZ_LIBFUZZER -# define OPENSSL_NO_FUZZ_LIBFUZZER -#endif -#ifndef OPENSSL_NO_GOST -# define OPENSSL_NO_GOST -#endif -#ifndef OPENSSL_NO_HEARTBEATS -# define OPENSSL_NO_HEARTBEATS -#endif -#ifndef OPENSSL_NO_HW -# define OPENSSL_NO_HW -#endif -#ifndef OPENSSL_NO_MSAN -# define OPENSSL_NO_MSAN -#endif -#ifndef OPENSSL_NO_OCB -# define OPENSSL_NO_OCB -#endif -#ifndef OPENSSL_NO_POSIX_IO -# define OPENSSL_NO_POSIX_IO -#endif -#ifndef OPENSSL_NO_RFC3779 -# define OPENSSL_NO_RFC3779 -#endif -#ifndef OPENSSL_NO_SCRYPT -# define OPENSSL_NO_SCRYPT -#endif -#ifndef OPENSSL_NO_SCTP -# define OPENSSL_NO_SCTP -#endif -#ifndef OPENSSL_NO_SOCK -# define OPENSSL_NO_SOCK -#endif -#ifndef OPENSSL_NO_SSL_TRACE -# define OPENSSL_NO_SSL_TRACE -#endif -#ifndef OPENSSL_NO_SSL3 -# define OPENSSL_NO_SSL3 -#endif -#ifndef OPENSSL_NO_SSL3_METHOD -# define OPENSSL_NO_SSL3_METHOD -#endif -#ifndef OPENSSL_NO_STDIO -# define OPENSSL_NO_STDIO -#endif -#ifndef OPENSSL_NO_TESTS -# define OPENSSL_NO_TESTS -#endif -#ifndef OPENSSL_NO_UBSAN -# define OPENSSL_NO_UBSAN -#endif -#ifndef OPENSSL_NO_UNIT_TEST -# define OPENSSL_NO_UNIT_TEST -#endif -#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS -# define OPENSSL_NO_WEAK_SSL_CIPHERS -#endif -#ifndef OPENSSL_NO_AFALGENG -# define OPENSSL_NO_AFALGENG -#endif - - -/* - * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers - * don't like that. This will hopefully silence them. - */ -#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; - -/* - * Applications should use -DOPENSSL_API_COMPAT= to suppress the - * declarations of functions deprecated in or before . Otherwise, they - * still won't see them if the library has been built to disable deprecated - * functions. - */ -#if defined(OPENSSL_NO_DEPRECATED) -# define DECLARE_DEPRECATED(f) -#elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) -# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); -#else -# define DECLARE_DEPRECATED(f) f; -#endif - -#ifndef OPENSSL_FILE -# ifdef OPENSSL_NO_FILENAMES -# define OPENSSL_FILE "" -# define OPENSSL_LINE 0 -# else -# define OPENSSL_FILE __FILE__ -# define OPENSSL_LINE __LINE__ -# endif -#endif - -#ifndef OPENSSL_MIN_API -# define OPENSSL_MIN_API 0 -#endif - -#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API -# undef OPENSSL_API_COMPAT -# define OPENSSL_API_COMPAT OPENSSL_MIN_API -#endif - -#if OPENSSL_API_COMPAT < 0x10100000L -# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) -#else -# define DEPRECATEDIN_1_1_0(f) -#endif - -#if OPENSSL_API_COMPAT < 0x10000000L -# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) -#else -# define DEPRECATEDIN_1_0_0(f) -#endif - -#if OPENSSL_API_COMPAT < 0x00908000L -# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) -#else -# define DEPRECATEDIN_0_9_8(f) -#endif - - - -/* Generate 80386 code? */ -#undef I386_ONLY - -#undef OPENSSL_UNISTD -#define OPENSSL_UNISTD - -#undef OPENSSL_EXPORT_VAR_AS_FUNCTION - -/* - * The following are cipher-specific, but are part of the public API. - */ -#if !defined(OPENSSL_SYS_UEFI) -# undef BN_LLONG -/* Only one for the following should be defined */ -# undef SIXTY_FOUR_BIT_LONG -# undef SIXTY_FOUR_BIT -# define THIRTY_TWO_BIT -#endif - -#define RC4_INT unsigned int - -#ifdef __cplusplus -} -#endif diff --git a/Core/CryptoPkg/Library/Include/stdarg.h b/Core/CryptoPkg/Library/Include/stdarg.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/stdarg.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/stddef.h b/Core/CryptoPkg/Library/Include/stddef.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/stddef.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/stdio.h b/Core/CryptoPkg/Library/Include/stdio.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/stdio.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/stdlib.h b/Core/CryptoPkg/Library/Include/stdlib.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/stdlib.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/string.h b/Core/CryptoPkg/Library/Include/string.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/string.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/strings.h b/Core/CryptoPkg/Library/Include/strings.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/strings.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/sys/time.h b/Core/CryptoPkg/Library/Include/sys/time.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/sys/time.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/sys/types.h b/Core/CryptoPkg/Library/Include/sys/types.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/sys/types.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/syslog.h b/Core/CryptoPkg/Library/Include/syslog.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/syslog.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/time.h b/Core/CryptoPkg/Library/Include/time.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/time.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/Include/unistd.h b/Core/CryptoPkg/Library/Include/unistd.h deleted file mode 100644 index 1a8d1c47de..0000000000 --- a/Core/CryptoPkg/Library/Include/unistd.h +++ /dev/null @@ -1,15 +0,0 @@ -/** @file - Include file to support building the third-party cryptographic library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include diff --git a/Core/CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni b/Core/CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni deleted file mode 100644 index c40b856a49..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni +++ /dev/null @@ -1,22 +0,0 @@ -// /** @file -// Intrinsic Routines Wrapper Library Instance. -// -// This module is intrinsic routines wrapper library instance. -// -// Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "Intrinsic Routines Wrapper Library Instance" - -#string STR_MODULE_DESCRIPTION #language en-US "This module is intrinsic routines wrapper library instance." - diff --git a/Core/CryptoPkg/Library/IntrinsicLib/CopyMem.c b/Core/CryptoPkg/Library/IntrinsicLib/CopyMem.c deleted file mode 100644 index 6cc52b22e1..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/CopyMem.c +++ /dev/null @@ -1,23 +0,0 @@ -/** @file - Intrinsic Memory Routines Wrapper Implementation for OpenSSL-based - Cryptographic Library. - -Copyright (c) 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include - -/* Copies bytes between buffers */ -void * memcpy (void *dest, const void *src, unsigned int count) -{ - return CopyMem (dest, src, (UINTN)count); -} diff --git a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.S b/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.S deleted file mode 100644 index 7031a59a71..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.S +++ /dev/null @@ -1,62 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2014, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php. -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# MathLShiftS64.S -# -# Abstract: -# -# 64-bit Math Worker Function. -# Shifts a 64-bit signed value left by a certain number of bits. -# -#------------------------------------------------------------------------------ - - .686: - .code: - -ASM_GLOBAL ASM_PFX(__ashldi3) - -#------------------------------------------------------------------------------ -# -# void __cdecl __ashldi3 (void) -# -#------------------------------------------------------------------------------ -ASM_PFX(__ashldi3): - # - # Handle shifting of 64 or more bits (return 0) - # - cmpb $64, %cl - jae ReturnZero - - # - # Handle shifting of between 0 and 31 bits - # - cmpb $32, %cl - jae More32 - shld %cl, %eax, %edx - shl %cl, %eax - ret - - # - # Handle shifting of between 32 and 63 bits - # -More32: - movl %eax, %edx - xor %eax, %eax - and $31, %cl - shl %cl, %edx - ret - -ReturnZero: - xor %eax, %eax - xor %edx, %edx - ret diff --git a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.c b/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.c deleted file mode 100644 index 0c0835d400..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.c +++ /dev/null @@ -1,54 +0,0 @@ -/** @file - 64-bit Math Worker Function. - The 32-bit versions of C compiler generate calls to library routines - to handle 64-bit math. These functions use non-standard calling conventions. - -Copyright (c) 2014, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -/* - * Shifts a 64-bit signed value left by a particular number of bits. - */ -__declspec(naked) void __cdecl _allshl (void) -{ - _asm { - ; - ; Handle shifting of 64 or more bits (return 0) - ; - cmp cl, 64 - jae short ReturnZero - - ; - ; Handle shifting of between 0 and 31 bits - ; - cmp cl, 32 - jae short More32 - shld edx, eax, cl - shl eax, cl - ret - - ; - ; Handle shifting of between 32 and 63 bits - ; -More32: - mov edx, eax - xor eax, eax - and cl, 31 - shl edx, cl - ret - -ReturnZero: - xor eax,eax - xor edx,edx - ret - } -} diff --git a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm b/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm deleted file mode 100644 index a30edbf7d2..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathLShiftS64.nasm +++ /dev/null @@ -1,48 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2016, Intel Corporation. All rights reserved.
-; This program and the accompanying materials -; are licensed and made available under the terms and conditions of the BSD License -; which accompanies this distribution. The full text of the license may be found at -; http://opensource.org/licenses/bsd-license.php. -; -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -; -; Module Name: -; -; MathLShiftS64.nasm -; -; Abstract: -; -; 64-bit Math Worker Function. -; Shifts a 64-bit signed value left by a certain number of bits. -; -;------------------------------------------------------------------------------ - - SECTION .text - -global ASM_PFX(__ashldi3) -;------------------------------------------------------------------------------ -; -; void __cdecl __ashldi3 (void) -; -;------------------------------------------------------------------------------ -ASM_PFX(__ashldi3): - cmp cl,0x40 - jnc ReturnZero - cmp cl,0x20 - jnc More32 - shld edx,eax,cl - shl eax,cl - ret -More32: - mov edx,eax - xor eax,eax - and cl,0x1f - shl edx,cl - ret -ReturnZero: - xor eax,eax - xor edx,edx - ret diff --git a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.S b/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.S deleted file mode 100644 index 24142b088e..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.S +++ /dev/null @@ -1,66 +0,0 @@ -#------------------------------------------------------------------------------ -# -# Copyright (c) 2014, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php. -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# Module Name: -# -# MathRShiftU64.S -# -# Abstract: -# -# 64-bit Math Worker Function. -# Shifts a 64-bit unsigned value right by a certain number of bits. -# -#------------------------------------------------------------------------------ - - - .686: - .code: - -ASM_GLOBAL ASM_PFX(__ashrdi3) - -#------------------------------------------------------------------------------ -# -# void __cdecl __ashrdi3 (void) -# -#------------------------------------------------------------------------------ -ASM_PFX(__ashrdi3): - # - # Checking: Only handle 64bit shifting or more - # - cmpb $64, %cl - jae _Exit - - # - # Handle shifting between 0 and 31 bits - # - cmpb $32, %cl - jae More32 - shrd %cl, %edx, %eax - shr %cl, %edx - ret - - # - # Handle shifting of 32-63 bits - # -More32: - movl %edx, %eax - xor %edx, %edx - and $31, %cl - shr %cl, %eax - ret - - # - # Invalid number (less then 32bits), return 0 - # -_Exit: - xor %eax, %eax - xor %edx, %edx - ret diff --git a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.c b/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.c deleted file mode 100644 index 86b10040dd..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.c +++ /dev/null @@ -1,57 +0,0 @@ -/** @file - 64-bit Math Worker Function. - The 32-bit versions of C compiler generate calls to library routines - to handle 64-bit math. These functions use non-standard calling conventions. - -Copyright (c) 2014, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -/* - * Shifts a 64-bit unsigned value right by a certain number of bits. - */ -__declspec(naked) void __cdecl _aullshr (void) -{ - _asm { - ; - ; Checking: Only handle 64bit shifting or more - ; - cmp cl, 64 - jae _Exit - - ; - ; Handle shifting between 0 and 31 bits - ; - cmp cl, 32 - jae More32 - shrd eax, edx, cl - shr edx, cl - ret - - ; - ; Handle shifting of 32-63 bits - ; -More32: - mov eax, edx - xor edx, edx - and cl, 31 - shr eax, cl - ret - - ; - ; Invalid number (less then 32bits), return 0 - ; -_Exit: - xor eax, eax - xor edx, edx - ret - } -} diff --git a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm b/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm deleted file mode 100644 index 9bf1711c9b..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/Ia32/MathRShiftU64.nasm +++ /dev/null @@ -1,49 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2016, Intel Corporation. All rights reserved.
-; This program and the accompanying materials -; are licensed and made available under the terms and conditions of the BSD License -; which accompanies this distribution. The full text of the license may be found at -; http://opensource.org/licenses/bsd-license.php. -; -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -; -; Module Name: -; -; MathRShiftU64.nasm -; -; Abstract: -; -; 64-bit Math Worker Function. -; Shifts a 64-bit unsigned value right by a certain number of bits. -; -;------------------------------------------------------------------------------ - - SECTION .text - -;------------------------------------------------------------------------------ -; -; void __cdecl __ashrdi3 (void) -; -;------------------------------------------------------------------------------ -global ASM_PFX(__ashrdi3) -ASM_PFX(__ashrdi3): - cmp cl,0x40 - jnc _Exit - cmp cl,0x20 - jnc More32 - shrd eax,edx,cl - shr edx,cl - ret -More32: - mov eax,edx - xor edx,edx - and cl,0x1f - shr eax,cl - ret -_Exit: - xor eax,eax - xor edx,edx - ret - diff --git a/Core/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf b/Core/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf deleted file mode 100644 index 91e5eb79b2..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf +++ /dev/null @@ -1,83 +0,0 @@ -## @file -# Intrinsic Routines Wrapper Library Instance. -# -# Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BaseIntrinsicLib - MODULE_UNI_FILE = BaseIntrinsicLib.uni - FILE_GUID = 63850097-3E97-4c4f-A52D-C811A0106105 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = IntrinsicLib - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF -# - -[Sources] - MemoryIntrinsics.c - -[Sources.IA32] - CopyMem.c - - Ia32/MathLShiftS64.c | MSFT - Ia32/MathRShiftU64.c | MSFT - - Ia32/MathLShiftS64.c | INTEL - Ia32/MathRShiftU64.c | INTEL - - Ia32/MathLShiftS64.S | GCC - Ia32/MathRShiftU64.S | GCC - Ia32/MathLShiftS64.nasm | GCC - Ia32/MathRShiftU64.nasm | GCC - -[Sources.X64] - CopyMem.c - -[Sources.IPF] - CopyMem.c | MSFT - CopyMem.c | INTEL -# -# In tools_def.txt, GCC rename symbol name memcpy to be CopyMem for IPF, -# i.e. "DEFINE GCC_IPF_SYMRENAME_FLAGS = --redefine-sym memcpy=CopyMem", -# so there will be no source file CopyMem.c for GCC compiler family. -# - -[Packages] - MdePkg/MdePkg.dec - -[LibraryClasses] - BaseMemoryLib - -[BuildOptions] - # - # Override MSFT build option to remove /Oi and /GL - # - MSFT:DEBUG_VS2003_IA32_CC_FLAGS == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- /Zi /Gm - MSFT:RELEASE_VS2003_IA32_CC_FLAGS == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- - MSFT:DEBUG_VS2003xASL_IA32_CC_FLAGS == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- /Zi /Gm - MSFT:RELEASE_VS2003xASL_IA32_CC_FLAGS == /nologo /c /WX /W4 /Gs32768 /Gy /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /GX- - MSFT:DEBUG_DDK3790_IA32_CC_FLAGS == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm - MSFT:RELEASE_DDK3790_IA32_CC_FLAGS == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF - MSFT:DEBUG_DDK3790xASL_IA32_CC_FLAGS == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm - MSFT:RELEASE_DDK3790xASL_IA32_CC_FLAGS == /nologo /c /WX /Gy /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF - MSFT:DEBUG_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm - MSFT:RELEASE_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /FIAutoGen.h /EHs-c- /GR- /GF - MSFT:DEBUG_*_X64_CC_FLAGS == /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1b2s /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm - MSFT:RELEASE_*_X64_CC_FLAGS == /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1b2s /Gy /FIAutoGen.h /EHs-c- /GR- /GF - MSFT:DEBUG_*_IPF_CC_FLAGS == /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 /Zi - MSFT:RELEASE_*_IPF_CC_FLAGS == /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 - INTEL:*_*_*_CC_FLAGS = /Oi- diff --git a/Core/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c b/Core/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c deleted file mode 100644 index bf485d680d..0000000000 --- a/Core/CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c +++ /dev/null @@ -1,60 +0,0 @@ -/** @file - Intrinsic Memory Routines Wrapper Implementation for OpenSSL-based - Cryptographic Library. - -Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include -#include - -typedef UINTN size_t; - -/* OpenSSL will use floating point support, and C compiler produces the _fltused - symbol by default. Simply define this symbol here to satisfy the linker. */ -int _fltused = 1; - -/* Sets buffers to a specified character */ -void * memset (void *dest, char ch, size_t count) -{ - // - // NOTE: Here we use one base implementation for memset, instead of the direct - // optimized SetMem() wrapper. Because the IntrinsicLib has to be built - // without whole program optimization option, and there will be some - // potential register usage errors when calling other optimized codes. - // - - // - // Declare the local variables that actually move the data elements as - // volatile to prevent the optimizer from replacing this function with - // the intrinsic memset() - // - volatile UINT8 *Pointer; - - Pointer = (UINT8 *)dest; - while (count-- != 0) { - *(Pointer++) = ch; - } - - return dest; -} - -/* Compare bytes in two buffers. */ -int memcmp (const void *buf1, const void *buf2, size_t count) -{ - return (int)CompareMem(buf1, buf2, count); -} - -int strcmp (const char *s1, const char *s2) -{ - return (int)AsciiStrCmp(s1, s2); -} diff --git a/Core/CryptoPkg/Library/OpensslLib/OpenSSL-HOWTO.txt b/Core/CryptoPkg/Library/OpensslLib/OpenSSL-HOWTO.txt deleted file mode 100644 index e8b0bab010..0000000000 --- a/Core/CryptoPkg/Library/OpensslLib/OpenSSL-HOWTO.txt +++ /dev/null @@ -1,53 +0,0 @@ - -============================================================================= - Introduction -============================================================================= - OpenSSL is a well-known open source implementation of SSL/TLS protocols. -The core library implements the cryptographic and SSL/TLS functions and -also provides various utility functions. The OpenSSL library is widely used -in variety of security products development as base crypto provider. -(See http://www.openssl.org/ for more information about OpenSSL). - UEFI (Unified Extensible Firmware Interface) is a specification detailing -the interfaces between OS and platform firmware. Several security features -were introduced (e.g. Authenticated Variable Service, Driver Signing, etc) -from UEFI 2.2 (http://www.uefi.org/). These security features highly depend -on the cryptography. - This HOWTO documents OpenSSL building under UEFI/EDKII environment. - -============================================================================= - OpenSSL-Version -============================================================================= - EDKII supports building with the latest release of OpenSSL. - The latest official release is OpenSSL-1.1.0e (Released at 2017-Feb-16). - NOTE: Only latest release version was fully validated. - And no guarantees on build & functionality if using other versions. - -============================================================================= - HOW to Install OpenSSL for UEFI Building -============================================================================= -1. Clone the latest official OpenSSL release into the directory - CryptoPkg/Library/OpensslLib/openssl/ - - Use OpenSSL-1.1.0e release as one example: - (OpenSSL_1_1_0e below is the tag name for the OpenSSL-1.1.0e release) - > cd CryptoPkg/Library/OpensslLib - > git clone -b OpenSSL_1_1_0e https://github.com/openssl/openssl openssl - or - > git clone https://github.com/openssl/openssl openssl - > git checkout OpenSSL_1_1_0e -Or -2. Download the latest OpenSSL release package from the official website: - https://www.openssl.org/source/ - and unpack the OpenSSL source into: - CryptoPkg/Library/OpensslLib/openssl/ - -============================================================================= - About process_files.pl -============================================================================= - "process_files.pl" is one Perl script which runs the OpenSSL Configure, -then processes the resulting file list into our local OpensslLib.inf and -OpensslLibCrypto.inf. - This only needs to be done once by the maintainer / developer when -updating to a new version of OpenSSL (or changing options, etc.). -Normal users do not need do this, since the results are already stored in -the EDKII git repository for them. diff --git a/Core/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/Core/CryptoPkg/Library/OpensslLib/OpensslLib.inf deleted file mode 100644 index cbabb34bdd..0000000000 --- a/Core/CryptoPkg/Library/OpensslLib/OpensslLib.inf +++ /dev/null @@ -1,582 +0,0 @@ -## @file -# This module provides OpenSSL Library implementation. -# -# Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = OpensslLib - MODULE_UNI_FILE = OpensslLib.uni - FILE_GUID = C873A7D0-9824-409f-9B42-2C158B992E69 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = OpensslLib - DEFINE OPENSSL_PATH = openssl - DEFINE OPENSSL_FLAGS = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DNO_SYSLOG - -# -# VALID_ARCHITECTURES = IA32 X64 IPF ARM AARCH64 -# - -[Sources] - $(OPENSSL_PATH)/e_os.h -# Autogenerated files list starts here - $(OPENSSL_PATH)/crypto/aes/aes_cbc.c - $(OPENSSL_PATH)/crypto/aes/aes_cfb.c - $(OPENSSL_PATH)/crypto/aes/aes_core.c - $(OPENSSL_PATH)/crypto/aes/aes_ecb.c - $(OPENSSL_PATH)/crypto/aes/aes_ige.c - $(OPENSSL_PATH)/crypto/aes/aes_misc.c - $(OPENSSL_PATH)/crypto/aes/aes_ofb.c - $(OPENSSL_PATH)/crypto/aes/aes_wrap.c - $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c - $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c - $(OPENSSL_PATH)/crypto/asn1/a_digest.c - $(OPENSSL_PATH)/crypto/asn1/a_dup.c - $(OPENSSL_PATH)/crypto/asn1/a_gentm.c - $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c - $(OPENSSL_PATH)/crypto/asn1/a_int.c - $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c - $(OPENSSL_PATH)/crypto/asn1/a_object.c - $(OPENSSL_PATH)/crypto/asn1/a_octet.c - $(OPENSSL_PATH)/crypto/asn1/a_print.c - $(OPENSSL_PATH)/crypto/asn1/a_sign.c - $(OPENSSL_PATH)/crypto/asn1/a_strex.c - $(OPENSSL_PATH)/crypto/asn1/a_strnid.c - $(OPENSSL_PATH)/crypto/asn1/a_time.c - $(OPENSSL_PATH)/crypto/asn1/a_type.c - $(OPENSSL_PATH)/crypto/asn1/a_utctm.c - $(OPENSSL_PATH)/crypto/asn1/a_utf8.c - $(OPENSSL_PATH)/crypto/asn1/a_verify.c - $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c - $(OPENSSL_PATH)/crypto/asn1/asn1_err.c - $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c - $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c - $(OPENSSL_PATH)/crypto/asn1/asn1_par.c - $(OPENSSL_PATH)/crypto/asn1/asn_mime.c - $(OPENSSL_PATH)/crypto/asn1/asn_moid.c - $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c - $(OPENSSL_PATH)/crypto/asn1/asn_pack.c - $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c - $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c - $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c - $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c - $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c - $(OPENSSL_PATH)/crypto/asn1/f_int.c - $(OPENSSL_PATH)/crypto/asn1/f_string.c - $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c - $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c - $(OPENSSL_PATH)/crypto/asn1/n_pkey.c - $(OPENSSL_PATH)/crypto/asn1/nsseq.c - $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c - $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c - $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c - $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c - $(OPENSSL_PATH)/crypto/asn1/t_bitst.c - $(OPENSSL_PATH)/crypto/asn1/t_pkey.c - $(OPENSSL_PATH)/crypto/asn1/t_spki.c - $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c - $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c - $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c - $(OPENSSL_PATH)/crypto/asn1/tasn_new.c - $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c - $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c - $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c - $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c - $(OPENSSL_PATH)/crypto/asn1/x_algor.c - $(OPENSSL_PATH)/crypto/asn1/x_bignum.c - $(OPENSSL_PATH)/crypto/asn1/x_info.c - $(OPENSSL_PATH)/crypto/asn1/x_long.c - $(OPENSSL_PATH)/crypto/asn1/x_pkey.c - $(OPENSSL_PATH)/crypto/asn1/x_sig.c - $(OPENSSL_PATH)/crypto/asn1/x_spki.c - $(OPENSSL_PATH)/crypto/asn1/x_val.c - $(OPENSSL_PATH)/crypto/async/arch/async_null.c - $(OPENSSL_PATH)/crypto/async/arch/async_posix.c - $(OPENSSL_PATH)/crypto/async/arch/async_win.c - $(OPENSSL_PATH)/crypto/async/async.c - $(OPENSSL_PATH)/crypto/async/async_err.c - $(OPENSSL_PATH)/crypto/async/async_wait.c - $(OPENSSL_PATH)/crypto/bio/b_addr.c - $(OPENSSL_PATH)/crypto/bio/b_dump.c - $(OPENSSL_PATH)/crypto/bio/b_sock.c - $(OPENSSL_PATH)/crypto/bio/b_sock2.c - $(OPENSSL_PATH)/crypto/bio/bf_buff.c - $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c - $(OPENSSL_PATH)/crypto/bio/bf_nbio.c - $(OPENSSL_PATH)/crypto/bio/bf_null.c - $(OPENSSL_PATH)/crypto/bio/bio_cb.c - $(OPENSSL_PATH)/crypto/bio/bio_err.c - $(OPENSSL_PATH)/crypto/bio/bio_lib.c - $(OPENSSL_PATH)/crypto/bio/bio_meth.c - $(OPENSSL_PATH)/crypto/bio/bss_acpt.c - $(OPENSSL_PATH)/crypto/bio/bss_bio.c - $(OPENSSL_PATH)/crypto/bio/bss_conn.c - $(OPENSSL_PATH)/crypto/bio/bss_dgram.c - $(OPENSSL_PATH)/crypto/bio/bss_fd.c - $(OPENSSL_PATH)/crypto/bio/bss_file.c - $(OPENSSL_PATH)/crypto/bio/bss_log.c - $(OPENSSL_PATH)/crypto/bio/bss_mem.c - $(OPENSSL_PATH)/crypto/bio/bss_null.c - $(OPENSSL_PATH)/crypto/bio/bss_sock.c - $(OPENSSL_PATH)/crypto/bn/bn_add.c - $(OPENSSL_PATH)/crypto/bn/bn_asm.c - $(OPENSSL_PATH)/crypto/bn/bn_blind.c - $(OPENSSL_PATH)/crypto/bn/bn_const.c - $(OPENSSL_PATH)/crypto/bn/bn_ctx.c - $(OPENSSL_PATH)/crypto/bn/bn_depr.c - $(OPENSSL_PATH)/crypto/bn/bn_dh.c - $(OPENSSL_PATH)/crypto/bn/bn_div.c - $(OPENSSL_PATH)/crypto/bn/bn_err.c - $(OPENSSL_PATH)/crypto/bn/bn_exp.c - $(OPENSSL_PATH)/crypto/bn/bn_exp2.c - $(OPENSSL_PATH)/crypto/bn/bn_gcd.c - $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c - $(OPENSSL_PATH)/crypto/bn/bn_intern.c - $(OPENSSL_PATH)/crypto/bn/bn_kron.c - $(OPENSSL_PATH)/crypto/bn/bn_lib.c - $(OPENSSL_PATH)/crypto/bn/bn_mod.c - $(OPENSSL_PATH)/crypto/bn/bn_mont.c - $(OPENSSL_PATH)/crypto/bn/bn_mpi.c - $(OPENSSL_PATH)/crypto/bn/bn_mul.c - $(OPENSSL_PATH)/crypto/bn/bn_nist.c - $(OPENSSL_PATH)/crypto/bn/bn_prime.c - $(OPENSSL_PATH)/crypto/bn/bn_print.c - $(OPENSSL_PATH)/crypto/bn/bn_rand.c - $(OPENSSL_PATH)/crypto/bn/bn_recp.c - $(OPENSSL_PATH)/crypto/bn/bn_shift.c - $(OPENSSL_PATH)/crypto/bn/bn_sqr.c - $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c - $(OPENSSL_PATH)/crypto/bn/bn_srp.c - $(OPENSSL_PATH)/crypto/bn/bn_word.c - $(OPENSSL_PATH)/crypto/bn/bn_x931p.c - $(OPENSSL_PATH)/crypto/buffer/buf_err.c - $(OPENSSL_PATH)/crypto/buffer/buffer.c - $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c - $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c - $(OPENSSL_PATH)/crypto/cmac/cmac.c - $(OPENSSL_PATH)/crypto/comp/c_zlib.c - $(OPENSSL_PATH)/crypto/comp/comp_err.c - $(OPENSSL_PATH)/crypto/comp/comp_lib.c - $(OPENSSL_PATH)/crypto/conf/conf_api.c - $(OPENSSL_PATH)/crypto/conf/conf_def.c - $(OPENSSL_PATH)/crypto/conf/conf_err.c - $(OPENSSL_PATH)/crypto/conf/conf_lib.c - $(OPENSSL_PATH)/crypto/conf/conf_mall.c - $(OPENSSL_PATH)/crypto/conf/conf_mod.c - $(OPENSSL_PATH)/crypto/conf/conf_sap.c - $(OPENSSL_PATH)/crypto/cpt_err.c - $(OPENSSL_PATH)/crypto/cryptlib.c - $(OPENSSL_PATH)/crypto/cversion.c - $(OPENSSL_PATH)/crypto/des/cbc_cksm.c - $(OPENSSL_PATH)/crypto/des/cbc_enc.c - $(OPENSSL_PATH)/crypto/des/cfb64ede.c - $(OPENSSL_PATH)/crypto/des/cfb64enc.c - $(OPENSSL_PATH)/crypto/des/cfb_enc.c - $(OPENSSL_PATH)/crypto/des/des_enc.c - $(OPENSSL_PATH)/crypto/des/ecb3_enc.c - $(OPENSSL_PATH)/crypto/des/ecb_enc.c - $(OPENSSL_PATH)/crypto/des/fcrypt.c - $(OPENSSL_PATH)/crypto/des/fcrypt_b.c - $(OPENSSL_PATH)/crypto/des/ofb64ede.c - $(OPENSSL_PATH)/crypto/des/ofb64enc.c - $(OPENSSL_PATH)/crypto/des/ofb_enc.c - $(OPENSSL_PATH)/crypto/des/pcbc_enc.c - $(OPENSSL_PATH)/crypto/des/qud_cksm.c - $(OPENSSL_PATH)/crypto/des/rand_key.c - $(OPENSSL_PATH)/crypto/des/rpc_enc.c - $(OPENSSL_PATH)/crypto/des/set_key.c - $(OPENSSL_PATH)/crypto/des/str2key.c - $(OPENSSL_PATH)/crypto/des/xcbc_enc.c - $(OPENSSL_PATH)/crypto/dh/dh_ameth.c - $(OPENSSL_PATH)/crypto/dh/dh_asn1.c - $(OPENSSL_PATH)/crypto/dh/dh_check.c - $(OPENSSL_PATH)/crypto/dh/dh_depr.c - $(OPENSSL_PATH)/crypto/dh/dh_err.c - $(OPENSSL_PATH)/crypto/dh/dh_gen.c - $(OPENSSL_PATH)/crypto/dh/dh_kdf.c - $(OPENSSL_PATH)/crypto/dh/dh_key.c - $(OPENSSL_PATH)/crypto/dh/dh_lib.c - $(OPENSSL_PATH)/crypto/dh/dh_meth.c - $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c - $(OPENSSL_PATH)/crypto/dh/dh_prn.c - $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c - $(OPENSSL_PATH)/crypto/dso/dso_dl.c - $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c - $(OPENSSL_PATH)/crypto/dso/dso_err.c - $(OPENSSL_PATH)/crypto/dso/dso_lib.c - $(OPENSSL_PATH)/crypto/dso/dso_openssl.c - $(OPENSSL_PATH)/crypto/dso/dso_vms.c - $(OPENSSL_PATH)/crypto/dso/dso_win32.c - $(OPENSSL_PATH)/crypto/ebcdic.c - $(OPENSSL_PATH)/crypto/err/err.c - $(OPENSSL_PATH)/crypto/err/err_all.c - $(OPENSSL_PATH)/crypto/err/err_prn.c - $(OPENSSL_PATH)/crypto/evp/bio_b64.c - $(OPENSSL_PATH)/crypto/evp/bio_enc.c - $(OPENSSL_PATH)/crypto/evp/bio_md.c - $(OPENSSL_PATH)/crypto/evp/bio_ok.c - $(OPENSSL_PATH)/crypto/evp/c_allc.c - $(OPENSSL_PATH)/crypto/evp/c_alld.c - $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c - $(OPENSSL_PATH)/crypto/evp/digest.c - $(OPENSSL_PATH)/crypto/evp/e_aes.c - $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c - $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c - $(OPENSSL_PATH)/crypto/evp/e_bf.c - $(OPENSSL_PATH)/crypto/evp/e_camellia.c - $(OPENSSL_PATH)/crypto/evp/e_cast.c - $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c - $(OPENSSL_PATH)/crypto/evp/e_des.c - $(OPENSSL_PATH)/crypto/evp/e_des3.c - $(OPENSSL_PATH)/crypto/evp/e_idea.c - $(OPENSSL_PATH)/crypto/evp/e_null.c - $(OPENSSL_PATH)/crypto/evp/e_old.c - $(OPENSSL_PATH)/crypto/evp/e_rc2.c - $(OPENSSL_PATH)/crypto/evp/e_rc4.c - $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c - $(OPENSSL_PATH)/crypto/evp/e_rc5.c - $(OPENSSL_PATH)/crypto/evp/e_seed.c - $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c - $(OPENSSL_PATH)/crypto/evp/encode.c - $(OPENSSL_PATH)/crypto/evp/evp_cnf.c - $(OPENSSL_PATH)/crypto/evp/evp_enc.c - $(OPENSSL_PATH)/crypto/evp/evp_err.c - $(OPENSSL_PATH)/crypto/evp/evp_key.c - $(OPENSSL_PATH)/crypto/evp/evp_lib.c - $(OPENSSL_PATH)/crypto/evp/evp_pbe.c - $(OPENSSL_PATH)/crypto/evp/evp_pkey.c - $(OPENSSL_PATH)/crypto/evp/m_md2.c - $(OPENSSL_PATH)/crypto/evp/m_md4.c - $(OPENSSL_PATH)/crypto/evp/m_md5.c - $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c - $(OPENSSL_PATH)/crypto/evp/m_mdc2.c - $(OPENSSL_PATH)/crypto/evp/m_null.c - $(OPENSSL_PATH)/crypto/evp/m_ripemd.c - $(OPENSSL_PATH)/crypto/evp/m_sha1.c - $(OPENSSL_PATH)/crypto/evp/m_sigver.c - $(OPENSSL_PATH)/crypto/evp/m_wp.c - $(OPENSSL_PATH)/crypto/evp/names.c - $(OPENSSL_PATH)/crypto/evp/p5_crpt.c - $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c - $(OPENSSL_PATH)/crypto/evp/p_dec.c - $(OPENSSL_PATH)/crypto/evp/p_enc.c - $(OPENSSL_PATH)/crypto/evp/p_lib.c - $(OPENSSL_PATH)/crypto/evp/p_open.c - $(OPENSSL_PATH)/crypto/evp/p_seal.c - $(OPENSSL_PATH)/crypto/evp/p_sign.c - $(OPENSSL_PATH)/crypto/evp/p_verify.c - $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c - $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c - $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c - $(OPENSSL_PATH)/crypto/evp/scrypt.c - $(OPENSSL_PATH)/crypto/ex_data.c - $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c - $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c - $(OPENSSL_PATH)/crypto/hmac/hmac.c - $(OPENSSL_PATH)/crypto/init.c - $(OPENSSL_PATH)/crypto/kdf/hkdf.c - $(OPENSSL_PATH)/crypto/kdf/kdf_err.c - $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c - $(OPENSSL_PATH)/crypto/lhash/lh_stats.c - $(OPENSSL_PATH)/crypto/lhash/lhash.c - $(OPENSSL_PATH)/crypto/md4/md4_dgst.c - $(OPENSSL_PATH)/crypto/md4/md4_one.c - $(OPENSSL_PATH)/crypto/md5/md5_dgst.c - $(OPENSSL_PATH)/crypto/md5/md5_one.c - $(OPENSSL_PATH)/crypto/mem.c - $(OPENSSL_PATH)/crypto/mem_clr.c - $(OPENSSL_PATH)/crypto/mem_dbg.c - $(OPENSSL_PATH)/crypto/mem_sec.c - $(OPENSSL_PATH)/crypto/modes/cbc128.c - $(OPENSSL_PATH)/crypto/modes/ccm128.c - $(OPENSSL_PATH)/crypto/modes/cfb128.c - $(OPENSSL_PATH)/crypto/modes/ctr128.c - $(OPENSSL_PATH)/crypto/modes/cts128.c - $(OPENSSL_PATH)/crypto/modes/gcm128.c - $(OPENSSL_PATH)/crypto/modes/ocb128.c - $(OPENSSL_PATH)/crypto/modes/ofb128.c - $(OPENSSL_PATH)/crypto/modes/wrap128.c - $(OPENSSL_PATH)/crypto/modes/xts128.c - $(OPENSSL_PATH)/crypto/o_dir.c - $(OPENSSL_PATH)/crypto/o_fips.c - $(OPENSSL_PATH)/crypto/o_fopen.c - $(OPENSSL_PATH)/crypto/o_init.c - $(OPENSSL_PATH)/crypto/o_str.c - $(OPENSSL_PATH)/crypto/o_time.c - $(OPENSSL_PATH)/crypto/objects/o_names.c - $(OPENSSL_PATH)/crypto/objects/obj_dat.c - $(OPENSSL_PATH)/crypto/objects/obj_err.c - $(OPENSSL_PATH)/crypto/objects/obj_lib.c - $(OPENSSL_PATH)/crypto/objects/obj_xref.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c - $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c - $(OPENSSL_PATH)/crypto/pem/pem_all.c - $(OPENSSL_PATH)/crypto/pem/pem_err.c - $(OPENSSL_PATH)/crypto/pem/pem_info.c - $(OPENSSL_PATH)/crypto/pem/pem_lib.c - $(OPENSSL_PATH)/crypto/pem/pem_oth.c - $(OPENSSL_PATH)/crypto/pem/pem_pk8.c - $(OPENSSL_PATH)/crypto/pem/pem_pkey.c - $(OPENSSL_PATH)/crypto/pem/pem_sign.c - $(OPENSSL_PATH)/crypto/pem/pem_x509.c - $(OPENSSL_PATH)/crypto/pem/pem_xaux.c - $(OPENSSL_PATH)/crypto/pem/pvkfmt.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c - $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c - $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c - $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c - $(OPENSSL_PATH)/crypto/rand/md_rand.c - $(OPENSSL_PATH)/crypto/rand/rand_egd.c - $(OPENSSL_PATH)/crypto/rand/rand_err.c - $(OPENSSL_PATH)/crypto/rand/rand_lib.c - $(OPENSSL_PATH)/crypto/rand/rand_unix.c - $(OPENSSL_PATH)/crypto/rand/rand_vms.c - $(OPENSSL_PATH)/crypto/rand/rand_win.c - $(OPENSSL_PATH)/crypto/rand/randfile.c - $(OPENSSL_PATH)/crypto/rc4/rc4_enc.c - $(OPENSSL_PATH)/crypto/rc4/rc4_skey.c - $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c - $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c - $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c - $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c - $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c - $(OPENSSL_PATH)/crypto/rsa/rsa_err.c - $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c - $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c - $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c - $(OPENSSL_PATH)/crypto/rsa/rsa_none.c - $(OPENSSL_PATH)/crypto/rsa/rsa_null.c - $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c - $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c - $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c - $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c - $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c - $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c - $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c - $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c - $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c - $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c - $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c - $(OPENSSL_PATH)/crypto/sha/sha1_one.c - $(OPENSSL_PATH)/crypto/sha/sha1dgst.c - $(OPENSSL_PATH)/crypto/sha/sha256.c - $(OPENSSL_PATH)/crypto/sha/sha512.c - $(OPENSSL_PATH)/crypto/stack/stack.c - $(OPENSSL_PATH)/crypto/threads_none.c - $(OPENSSL_PATH)/crypto/threads_pthread.c - $(OPENSSL_PATH)/crypto/threads_win.c - $(OPENSSL_PATH)/crypto/txt_db/txt_db.c - $(OPENSSL_PATH)/crypto/uid.c - $(OPENSSL_PATH)/crypto/x509/by_dir.c - $(OPENSSL_PATH)/crypto/x509/by_file.c - $(OPENSSL_PATH)/crypto/x509/t_crl.c - $(OPENSSL_PATH)/crypto/x509/t_req.c - $(OPENSSL_PATH)/crypto/x509/t_x509.c - $(OPENSSL_PATH)/crypto/x509/x509_att.c - $(OPENSSL_PATH)/crypto/x509/x509_cmp.c - $(OPENSSL_PATH)/crypto/x509/x509_d2.c - $(OPENSSL_PATH)/crypto/x509/x509_def.c - $(OPENSSL_PATH)/crypto/x509/x509_err.c - $(OPENSSL_PATH)/crypto/x509/x509_ext.c - $(OPENSSL_PATH)/crypto/x509/x509_lu.c - $(OPENSSL_PATH)/crypto/x509/x509_obj.c - $(OPENSSL_PATH)/crypto/x509/x509_r2x.c - $(OPENSSL_PATH)/crypto/x509/x509_req.c - $(OPENSSL_PATH)/crypto/x509/x509_set.c - $(OPENSSL_PATH)/crypto/x509/x509_trs.c - $(OPENSSL_PATH)/crypto/x509/x509_txt.c - $(OPENSSL_PATH)/crypto/x509/x509_v3.c - $(OPENSSL_PATH)/crypto/x509/x509_vfy.c - $(OPENSSL_PATH)/crypto/x509/x509_vpm.c - $(OPENSSL_PATH)/crypto/x509/x509cset.c - $(OPENSSL_PATH)/crypto/x509/x509name.c - $(OPENSSL_PATH)/crypto/x509/x509rset.c - $(OPENSSL_PATH)/crypto/x509/x509spki.c - $(OPENSSL_PATH)/crypto/x509/x509type.c - $(OPENSSL_PATH)/crypto/x509/x_all.c - $(OPENSSL_PATH)/crypto/x509/x_attrib.c - $(OPENSSL_PATH)/crypto/x509/x_crl.c - $(OPENSSL_PATH)/crypto/x509/x_exten.c - $(OPENSSL_PATH)/crypto/x509/x_name.c - $(OPENSSL_PATH)/crypto/x509/x_pubkey.c - $(OPENSSL_PATH)/crypto/x509/x_req.c - $(OPENSSL_PATH)/crypto/x509/x_x509.c - $(OPENSSL_PATH)/crypto/x509/x_x509a.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c - $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c - $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c - $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c - $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c - $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c - $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c - $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c - $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c - $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c - $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c - $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c - $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c - $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c - $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c - $(OPENSSL_PATH)/crypto/x509v3/v3_info.c - $(OPENSSL_PATH)/crypto/x509v3/v3_int.c - $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c - $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c - $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c - $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c - $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c - $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c - $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c - $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c - $(OPENSSL_PATH)/crypto/x509v3/v3err.c - $(OPENSSL_PATH)/ssl/bio_ssl.c - $(OPENSSL_PATH)/ssl/d1_lib.c - $(OPENSSL_PATH)/ssl/d1_msg.c - $(OPENSSL_PATH)/ssl/d1_srtp.c - $(OPENSSL_PATH)/ssl/methods.c - $(OPENSSL_PATH)/ssl/pqueue.c - $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c - $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c - $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c - $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c - $(OPENSSL_PATH)/ssl/record/ssl3_record.c - $(OPENSSL_PATH)/ssl/s3_cbc.c - $(OPENSSL_PATH)/ssl/s3_enc.c - $(OPENSSL_PATH)/ssl/s3_lib.c - $(OPENSSL_PATH)/ssl/s3_msg.c - $(OPENSSL_PATH)/ssl/ssl_asn1.c - $(OPENSSL_PATH)/ssl/ssl_cert.c - $(OPENSSL_PATH)/ssl/ssl_ciph.c - $(OPENSSL_PATH)/ssl/ssl_conf.c - $(OPENSSL_PATH)/ssl/ssl_err.c - $(OPENSSL_PATH)/ssl/ssl_init.c - $(OPENSSL_PATH)/ssl/ssl_lib.c - $(OPENSSL_PATH)/ssl/ssl_mcnf.c - $(OPENSSL_PATH)/ssl/ssl_rsa.c - $(OPENSSL_PATH)/ssl/ssl_sess.c - $(OPENSSL_PATH)/ssl/ssl_stat.c - $(OPENSSL_PATH)/ssl/ssl_txt.c - $(OPENSSL_PATH)/ssl/ssl_utst.c - $(OPENSSL_PATH)/ssl/statem/statem.c - $(OPENSSL_PATH)/ssl/statem/statem_clnt.c - $(OPENSSL_PATH)/ssl/statem/statem_dtls.c - $(OPENSSL_PATH)/ssl/statem/statem_lib.c - $(OPENSSL_PATH)/ssl/statem/statem_srvr.c - $(OPENSSL_PATH)/ssl/t1_enc.c - $(OPENSSL_PATH)/ssl/t1_ext.c - $(OPENSSL_PATH)/ssl/t1_lib.c - $(OPENSSL_PATH)/ssl/t1_reneg.c - $(OPENSSL_PATH)/ssl/t1_trce.c - $(OPENSSL_PATH)/ssl/tls_srp.c -# Autogenerated files list ends here - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - DebugLib - -[LibraryClasses.ARM] - ArmSoftFloatLib - -[BuildOptions] - # - # Disables the following Visual Studio compiler warnings brought by openssl source, - # so we do not break the build with /WX option: - # C4090: 'function' : different 'const' qualifiers - # C4244: conversion from type1 to type2, possible loss of data - # C4245: conversion from type1 to type2, signed/unsigned mismatch - # C4267: conversion from size_t to type, possible loss of data - # C4306: 'identifier' : conversion from 'type1' to 'type2' of greater size - # C4389: 'operator' : signed/unsigned mismatch (xxxx) - # C4702: unreachable code - # C4706: assignment within conditional expression - # - MSFT:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706 - MSFT:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706 - MSFT:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706 - - INTEL:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w - INTEL:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w - INTEL:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w - - # - # Suppress the following build warnings in openssl so we don't break the build with -Werror - # -Werror=maybe-uninitialized: there exist some other paths for which the variable is not initialized. - # - GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized - GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -DNO_MSABI_VA_FUNCS - GCC:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized - GCC:*_*_ARM_CC_FLAGS = $(OPENSSL_FLAGS) - GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) - - # suppress the following warnings in openssl so we don't break the build with warnings-as-errors: - # 1295: Deprecated declaration - give arg types - # 550: was set but never used - # 1293: assignment in condition - # 111: statement is unreachable (invariably "break;" after "return X;" in case statement) - # 68: integer conversion resulted in a change of sign ("if (Status == -1)") - # 177: was declared but never referenced - # 223: function declared implicitly - # 144: a value of type cannot be used to initialize an entity of type - # 513: a value of type cannot be assigned to an entity of type - # 188: enumerated type mixed with another type (i.e. passing an integer as an enum without a cast) - # 1296: Extended constant initialiser used - # 128: loop is not reachable - may be emitted inappropriately if code follows a conditional return - # from the function that evaluates to true at compile time - # 546: transfer of control bypasses initialization - may be emitted inappropriately if the uninitialized - # variable is never referenced after the jump - # 1: ignore "#1-D: last line of file ends without a newline" - # 3017: may be used before being set (NOTE: This was fixed in OpenSSL 1.1 HEAD with - # commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be dropped then.) - RVCT:*_*_ARM_CC_FLAGS = $(OPENSSL_FLAGS) --library_interface=aeabi_clib99 --diag_suppress=1296,1295,550,1293,111,68,177,223,144,513,188,128,546,1,3017 -JCryptoPkg/Include - XCODE:*_*_IA32_CC_FLAGS = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w - XCODE:*_*_X64_CC_FLAGS = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w diff --git a/Core/CryptoPkg/Library/OpensslLib/OpensslLib.uni b/Core/CryptoPkg/Library/OpensslLib/OpensslLib.uni deleted file mode 100644 index 0dffec1c98..0000000000 --- a/Core/CryptoPkg/Library/OpensslLib/OpensslLib.uni +++ /dev/null @@ -1,22 +0,0 @@ -// /** @file -// This module provides openSSL Library implementation. -// -// This module provides OpenSSL Library implementation. -// -// Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "OpenSSL Library implementation" - -#string STR_MODULE_DESCRIPTION #language en-US "This module provides OpenSSL Library implementation." - diff --git a/Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf deleted file mode 100644 index 026b551bca..0000000000 --- a/Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf +++ /dev/null @@ -1,543 +0,0 @@ -## @file -# This module provides OpenSSL Library implementation. -# -# Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = OpensslLibCrypto - MODULE_UNI_FILE = OpensslLibCrypto.uni - FILE_GUID = E29FC209-8B64-4500-BD20-AF4EAE47EA0E - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = OpensslLib - DEFINE OPENSSL_PATH = openssl - DEFINE OPENSSL_FLAGS = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DNO_SYSLOG - -# -# VALID_ARCHITECTURES = IA32 X64 IPF ARM AARCH64 -# - -[Sources] - $(OPENSSL_PATH)/e_os.h -# Autogenerated files list starts here - $(OPENSSL_PATH)/crypto/aes/aes_cbc.c - $(OPENSSL_PATH)/crypto/aes/aes_cfb.c - $(OPENSSL_PATH)/crypto/aes/aes_core.c - $(OPENSSL_PATH)/crypto/aes/aes_ecb.c - $(OPENSSL_PATH)/crypto/aes/aes_ige.c - $(OPENSSL_PATH)/crypto/aes/aes_misc.c - $(OPENSSL_PATH)/crypto/aes/aes_ofb.c - $(OPENSSL_PATH)/crypto/aes/aes_wrap.c - $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c - $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c - $(OPENSSL_PATH)/crypto/asn1/a_digest.c - $(OPENSSL_PATH)/crypto/asn1/a_dup.c - $(OPENSSL_PATH)/crypto/asn1/a_gentm.c - $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c - $(OPENSSL_PATH)/crypto/asn1/a_int.c - $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c - $(OPENSSL_PATH)/crypto/asn1/a_object.c - $(OPENSSL_PATH)/crypto/asn1/a_octet.c - $(OPENSSL_PATH)/crypto/asn1/a_print.c - $(OPENSSL_PATH)/crypto/asn1/a_sign.c - $(OPENSSL_PATH)/crypto/asn1/a_strex.c - $(OPENSSL_PATH)/crypto/asn1/a_strnid.c - $(OPENSSL_PATH)/crypto/asn1/a_time.c - $(OPENSSL_PATH)/crypto/asn1/a_type.c - $(OPENSSL_PATH)/crypto/asn1/a_utctm.c - $(OPENSSL_PATH)/crypto/asn1/a_utf8.c - $(OPENSSL_PATH)/crypto/asn1/a_verify.c - $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c - $(OPENSSL_PATH)/crypto/asn1/asn1_err.c - $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c - $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c - $(OPENSSL_PATH)/crypto/asn1/asn1_par.c - $(OPENSSL_PATH)/crypto/asn1/asn_mime.c - $(OPENSSL_PATH)/crypto/asn1/asn_moid.c - $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c - $(OPENSSL_PATH)/crypto/asn1/asn_pack.c - $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c - $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c - $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c - $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c - $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c - $(OPENSSL_PATH)/crypto/asn1/f_int.c - $(OPENSSL_PATH)/crypto/asn1/f_string.c - $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c - $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c - $(OPENSSL_PATH)/crypto/asn1/n_pkey.c - $(OPENSSL_PATH)/crypto/asn1/nsseq.c - $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c - $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c - $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c - $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c - $(OPENSSL_PATH)/crypto/asn1/t_bitst.c - $(OPENSSL_PATH)/crypto/asn1/t_pkey.c - $(OPENSSL_PATH)/crypto/asn1/t_spki.c - $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c - $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c - $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c - $(OPENSSL_PATH)/crypto/asn1/tasn_new.c - $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c - $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c - $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c - $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c - $(OPENSSL_PATH)/crypto/asn1/x_algor.c - $(OPENSSL_PATH)/crypto/asn1/x_bignum.c - $(OPENSSL_PATH)/crypto/asn1/x_info.c - $(OPENSSL_PATH)/crypto/asn1/x_long.c - $(OPENSSL_PATH)/crypto/asn1/x_pkey.c - $(OPENSSL_PATH)/crypto/asn1/x_sig.c - $(OPENSSL_PATH)/crypto/asn1/x_spki.c - $(OPENSSL_PATH)/crypto/asn1/x_val.c - $(OPENSSL_PATH)/crypto/async/arch/async_null.c - $(OPENSSL_PATH)/crypto/async/arch/async_posix.c - $(OPENSSL_PATH)/crypto/async/arch/async_win.c - $(OPENSSL_PATH)/crypto/async/async.c - $(OPENSSL_PATH)/crypto/async/async_err.c - $(OPENSSL_PATH)/crypto/async/async_wait.c - $(OPENSSL_PATH)/crypto/bio/b_addr.c - $(OPENSSL_PATH)/crypto/bio/b_dump.c - $(OPENSSL_PATH)/crypto/bio/b_sock.c - $(OPENSSL_PATH)/crypto/bio/b_sock2.c - $(OPENSSL_PATH)/crypto/bio/bf_buff.c - $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c - $(OPENSSL_PATH)/crypto/bio/bf_nbio.c - $(OPENSSL_PATH)/crypto/bio/bf_null.c - $(OPENSSL_PATH)/crypto/bio/bio_cb.c - $(OPENSSL_PATH)/crypto/bio/bio_err.c - $(OPENSSL_PATH)/crypto/bio/bio_lib.c - $(OPENSSL_PATH)/crypto/bio/bio_meth.c - $(OPENSSL_PATH)/crypto/bio/bss_acpt.c - $(OPENSSL_PATH)/crypto/bio/bss_bio.c - $(OPENSSL_PATH)/crypto/bio/bss_conn.c - $(OPENSSL_PATH)/crypto/bio/bss_dgram.c - $(OPENSSL_PATH)/crypto/bio/bss_fd.c - $(OPENSSL_PATH)/crypto/bio/bss_file.c - $(OPENSSL_PATH)/crypto/bio/bss_log.c - $(OPENSSL_PATH)/crypto/bio/bss_mem.c - $(OPENSSL_PATH)/crypto/bio/bss_null.c - $(OPENSSL_PATH)/crypto/bio/bss_sock.c - $(OPENSSL_PATH)/crypto/bn/bn_add.c - $(OPENSSL_PATH)/crypto/bn/bn_asm.c - $(OPENSSL_PATH)/crypto/bn/bn_blind.c - $(OPENSSL_PATH)/crypto/bn/bn_const.c - $(OPENSSL_PATH)/crypto/bn/bn_ctx.c - $(OPENSSL_PATH)/crypto/bn/bn_depr.c - $(OPENSSL_PATH)/crypto/bn/bn_dh.c - $(OPENSSL_PATH)/crypto/bn/bn_div.c - $(OPENSSL_PATH)/crypto/bn/bn_err.c - $(OPENSSL_PATH)/crypto/bn/bn_exp.c - $(OPENSSL_PATH)/crypto/bn/bn_exp2.c - $(OPENSSL_PATH)/crypto/bn/bn_gcd.c - $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c - $(OPENSSL_PATH)/crypto/bn/bn_intern.c - $(OPENSSL_PATH)/crypto/bn/bn_kron.c - $(OPENSSL_PATH)/crypto/bn/bn_lib.c - $(OPENSSL_PATH)/crypto/bn/bn_mod.c - $(OPENSSL_PATH)/crypto/bn/bn_mont.c - $(OPENSSL_PATH)/crypto/bn/bn_mpi.c - $(OPENSSL_PATH)/crypto/bn/bn_mul.c - $(OPENSSL_PATH)/crypto/bn/bn_nist.c - $(OPENSSL_PATH)/crypto/bn/bn_prime.c - $(OPENSSL_PATH)/crypto/bn/bn_print.c - $(OPENSSL_PATH)/crypto/bn/bn_rand.c - $(OPENSSL_PATH)/crypto/bn/bn_recp.c - $(OPENSSL_PATH)/crypto/bn/bn_shift.c - $(OPENSSL_PATH)/crypto/bn/bn_sqr.c - $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c - $(OPENSSL_PATH)/crypto/bn/bn_srp.c - $(OPENSSL_PATH)/crypto/bn/bn_word.c - $(OPENSSL_PATH)/crypto/bn/bn_x931p.c - $(OPENSSL_PATH)/crypto/buffer/buf_err.c - $(OPENSSL_PATH)/crypto/buffer/buffer.c - $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c - $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c - $(OPENSSL_PATH)/crypto/cmac/cmac.c - $(OPENSSL_PATH)/crypto/comp/c_zlib.c - $(OPENSSL_PATH)/crypto/comp/comp_err.c - $(OPENSSL_PATH)/crypto/comp/comp_lib.c - $(OPENSSL_PATH)/crypto/conf/conf_api.c - $(OPENSSL_PATH)/crypto/conf/conf_def.c - $(OPENSSL_PATH)/crypto/conf/conf_err.c - $(OPENSSL_PATH)/crypto/conf/conf_lib.c - $(OPENSSL_PATH)/crypto/conf/conf_mall.c - $(OPENSSL_PATH)/crypto/conf/conf_mod.c - $(OPENSSL_PATH)/crypto/conf/conf_sap.c - $(OPENSSL_PATH)/crypto/cpt_err.c - $(OPENSSL_PATH)/crypto/cryptlib.c - $(OPENSSL_PATH)/crypto/cversion.c - $(OPENSSL_PATH)/crypto/des/cbc_cksm.c - $(OPENSSL_PATH)/crypto/des/cbc_enc.c - $(OPENSSL_PATH)/crypto/des/cfb64ede.c - $(OPENSSL_PATH)/crypto/des/cfb64enc.c - $(OPENSSL_PATH)/crypto/des/cfb_enc.c - $(OPENSSL_PATH)/crypto/des/des_enc.c - $(OPENSSL_PATH)/crypto/des/ecb3_enc.c - $(OPENSSL_PATH)/crypto/des/ecb_enc.c - $(OPENSSL_PATH)/crypto/des/fcrypt.c - $(OPENSSL_PATH)/crypto/des/fcrypt_b.c - $(OPENSSL_PATH)/crypto/des/ofb64ede.c - $(OPENSSL_PATH)/crypto/des/ofb64enc.c - $(OPENSSL_PATH)/crypto/des/ofb_enc.c - $(OPENSSL_PATH)/crypto/des/pcbc_enc.c - $(OPENSSL_PATH)/crypto/des/qud_cksm.c - $(OPENSSL_PATH)/crypto/des/rand_key.c - $(OPENSSL_PATH)/crypto/des/rpc_enc.c - $(OPENSSL_PATH)/crypto/des/set_key.c - $(OPENSSL_PATH)/crypto/des/str2key.c - $(OPENSSL_PATH)/crypto/des/xcbc_enc.c - $(OPENSSL_PATH)/crypto/dh/dh_ameth.c - $(OPENSSL_PATH)/crypto/dh/dh_asn1.c - $(OPENSSL_PATH)/crypto/dh/dh_check.c - $(OPENSSL_PATH)/crypto/dh/dh_depr.c - $(OPENSSL_PATH)/crypto/dh/dh_err.c - $(OPENSSL_PATH)/crypto/dh/dh_gen.c - $(OPENSSL_PATH)/crypto/dh/dh_kdf.c - $(OPENSSL_PATH)/crypto/dh/dh_key.c - $(OPENSSL_PATH)/crypto/dh/dh_lib.c - $(OPENSSL_PATH)/crypto/dh/dh_meth.c - $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c - $(OPENSSL_PATH)/crypto/dh/dh_prn.c - $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c - $(OPENSSL_PATH)/crypto/dso/dso_dl.c - $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c - $(OPENSSL_PATH)/crypto/dso/dso_err.c - $(OPENSSL_PATH)/crypto/dso/dso_lib.c - $(OPENSSL_PATH)/crypto/dso/dso_openssl.c - $(OPENSSL_PATH)/crypto/dso/dso_vms.c - $(OPENSSL_PATH)/crypto/dso/dso_win32.c - $(OPENSSL_PATH)/crypto/ebcdic.c - $(OPENSSL_PATH)/crypto/err/err.c - $(OPENSSL_PATH)/crypto/err/err_all.c - $(OPENSSL_PATH)/crypto/err/err_prn.c - $(OPENSSL_PATH)/crypto/evp/bio_b64.c - $(OPENSSL_PATH)/crypto/evp/bio_enc.c - $(OPENSSL_PATH)/crypto/evp/bio_md.c - $(OPENSSL_PATH)/crypto/evp/bio_ok.c - $(OPENSSL_PATH)/crypto/evp/c_allc.c - $(OPENSSL_PATH)/crypto/evp/c_alld.c - $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c - $(OPENSSL_PATH)/crypto/evp/digest.c - $(OPENSSL_PATH)/crypto/evp/e_aes.c - $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c - $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c - $(OPENSSL_PATH)/crypto/evp/e_bf.c - $(OPENSSL_PATH)/crypto/evp/e_camellia.c - $(OPENSSL_PATH)/crypto/evp/e_cast.c - $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c - $(OPENSSL_PATH)/crypto/evp/e_des.c - $(OPENSSL_PATH)/crypto/evp/e_des3.c - $(OPENSSL_PATH)/crypto/evp/e_idea.c - $(OPENSSL_PATH)/crypto/evp/e_null.c - $(OPENSSL_PATH)/crypto/evp/e_old.c - $(OPENSSL_PATH)/crypto/evp/e_rc2.c - $(OPENSSL_PATH)/crypto/evp/e_rc4.c - $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c - $(OPENSSL_PATH)/crypto/evp/e_rc5.c - $(OPENSSL_PATH)/crypto/evp/e_seed.c - $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c - $(OPENSSL_PATH)/crypto/evp/encode.c - $(OPENSSL_PATH)/crypto/evp/evp_cnf.c - $(OPENSSL_PATH)/crypto/evp/evp_enc.c - $(OPENSSL_PATH)/crypto/evp/evp_err.c - $(OPENSSL_PATH)/crypto/evp/evp_key.c - $(OPENSSL_PATH)/crypto/evp/evp_lib.c - $(OPENSSL_PATH)/crypto/evp/evp_pbe.c - $(OPENSSL_PATH)/crypto/evp/evp_pkey.c - $(OPENSSL_PATH)/crypto/evp/m_md2.c - $(OPENSSL_PATH)/crypto/evp/m_md4.c - $(OPENSSL_PATH)/crypto/evp/m_md5.c - $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c - $(OPENSSL_PATH)/crypto/evp/m_mdc2.c - $(OPENSSL_PATH)/crypto/evp/m_null.c - $(OPENSSL_PATH)/crypto/evp/m_ripemd.c - $(OPENSSL_PATH)/crypto/evp/m_sha1.c - $(OPENSSL_PATH)/crypto/evp/m_sigver.c - $(OPENSSL_PATH)/crypto/evp/m_wp.c - $(OPENSSL_PATH)/crypto/evp/names.c - $(OPENSSL_PATH)/crypto/evp/p5_crpt.c - $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c - $(OPENSSL_PATH)/crypto/evp/p_dec.c - $(OPENSSL_PATH)/crypto/evp/p_enc.c - $(OPENSSL_PATH)/crypto/evp/p_lib.c - $(OPENSSL_PATH)/crypto/evp/p_open.c - $(OPENSSL_PATH)/crypto/evp/p_seal.c - $(OPENSSL_PATH)/crypto/evp/p_sign.c - $(OPENSSL_PATH)/crypto/evp/p_verify.c - $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c - $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c - $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c - $(OPENSSL_PATH)/crypto/evp/scrypt.c - $(OPENSSL_PATH)/crypto/ex_data.c - $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c - $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c - $(OPENSSL_PATH)/crypto/hmac/hmac.c - $(OPENSSL_PATH)/crypto/init.c - $(OPENSSL_PATH)/crypto/kdf/hkdf.c - $(OPENSSL_PATH)/crypto/kdf/kdf_err.c - $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c - $(OPENSSL_PATH)/crypto/lhash/lh_stats.c - $(OPENSSL_PATH)/crypto/lhash/lhash.c - $(OPENSSL_PATH)/crypto/md4/md4_dgst.c - $(OPENSSL_PATH)/crypto/md4/md4_one.c - $(OPENSSL_PATH)/crypto/md5/md5_dgst.c - $(OPENSSL_PATH)/crypto/md5/md5_one.c - $(OPENSSL_PATH)/crypto/mem.c - $(OPENSSL_PATH)/crypto/mem_clr.c - $(OPENSSL_PATH)/crypto/mem_dbg.c - $(OPENSSL_PATH)/crypto/mem_sec.c - $(OPENSSL_PATH)/crypto/modes/cbc128.c - $(OPENSSL_PATH)/crypto/modes/ccm128.c - $(OPENSSL_PATH)/crypto/modes/cfb128.c - $(OPENSSL_PATH)/crypto/modes/ctr128.c - $(OPENSSL_PATH)/crypto/modes/cts128.c - $(OPENSSL_PATH)/crypto/modes/gcm128.c - $(OPENSSL_PATH)/crypto/modes/ocb128.c - $(OPENSSL_PATH)/crypto/modes/ofb128.c - $(OPENSSL_PATH)/crypto/modes/wrap128.c - $(OPENSSL_PATH)/crypto/modes/xts128.c - $(OPENSSL_PATH)/crypto/o_dir.c - $(OPENSSL_PATH)/crypto/o_fips.c - $(OPENSSL_PATH)/crypto/o_fopen.c - $(OPENSSL_PATH)/crypto/o_init.c - $(OPENSSL_PATH)/crypto/o_str.c - $(OPENSSL_PATH)/crypto/o_time.c - $(OPENSSL_PATH)/crypto/objects/o_names.c - $(OPENSSL_PATH)/crypto/objects/obj_dat.c - $(OPENSSL_PATH)/crypto/objects/obj_err.c - $(OPENSSL_PATH)/crypto/objects/obj_lib.c - $(OPENSSL_PATH)/crypto/objects/obj_xref.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c - $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c - $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c - $(OPENSSL_PATH)/crypto/pem/pem_all.c - $(OPENSSL_PATH)/crypto/pem/pem_err.c - $(OPENSSL_PATH)/crypto/pem/pem_info.c - $(OPENSSL_PATH)/crypto/pem/pem_lib.c - $(OPENSSL_PATH)/crypto/pem/pem_oth.c - $(OPENSSL_PATH)/crypto/pem/pem_pk8.c - $(OPENSSL_PATH)/crypto/pem/pem_pkey.c - $(OPENSSL_PATH)/crypto/pem/pem_sign.c - $(OPENSSL_PATH)/crypto/pem/pem_x509.c - $(OPENSSL_PATH)/crypto/pem/pem_xaux.c - $(OPENSSL_PATH)/crypto/pem/pvkfmt.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c - $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c - $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c - $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c - $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c - $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c - $(OPENSSL_PATH)/crypto/rand/md_rand.c - $(OPENSSL_PATH)/crypto/rand/rand_egd.c - $(OPENSSL_PATH)/crypto/rand/rand_err.c - $(OPENSSL_PATH)/crypto/rand/rand_lib.c - $(OPENSSL_PATH)/crypto/rand/rand_unix.c - $(OPENSSL_PATH)/crypto/rand/rand_vms.c - $(OPENSSL_PATH)/crypto/rand/rand_win.c - $(OPENSSL_PATH)/crypto/rand/randfile.c - $(OPENSSL_PATH)/crypto/rc4/rc4_enc.c - $(OPENSSL_PATH)/crypto/rc4/rc4_skey.c - $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c - $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c - $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c - $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c - $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c - $(OPENSSL_PATH)/crypto/rsa/rsa_err.c - $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c - $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c - $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c - $(OPENSSL_PATH)/crypto/rsa/rsa_none.c - $(OPENSSL_PATH)/crypto/rsa/rsa_null.c - $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c - $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c - $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c - $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c - $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c - $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c - $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c - $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c - $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c - $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c - $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c - $(OPENSSL_PATH)/crypto/sha/sha1_one.c - $(OPENSSL_PATH)/crypto/sha/sha1dgst.c - $(OPENSSL_PATH)/crypto/sha/sha256.c - $(OPENSSL_PATH)/crypto/sha/sha512.c - $(OPENSSL_PATH)/crypto/stack/stack.c - $(OPENSSL_PATH)/crypto/threads_none.c - $(OPENSSL_PATH)/crypto/threads_pthread.c - $(OPENSSL_PATH)/crypto/threads_win.c - $(OPENSSL_PATH)/crypto/txt_db/txt_db.c - $(OPENSSL_PATH)/crypto/uid.c - $(OPENSSL_PATH)/crypto/x509/by_dir.c - $(OPENSSL_PATH)/crypto/x509/by_file.c - $(OPENSSL_PATH)/crypto/x509/t_crl.c - $(OPENSSL_PATH)/crypto/x509/t_req.c - $(OPENSSL_PATH)/crypto/x509/t_x509.c - $(OPENSSL_PATH)/crypto/x509/x509_att.c - $(OPENSSL_PATH)/crypto/x509/x509_cmp.c - $(OPENSSL_PATH)/crypto/x509/x509_d2.c - $(OPENSSL_PATH)/crypto/x509/x509_def.c - $(OPENSSL_PATH)/crypto/x509/x509_err.c - $(OPENSSL_PATH)/crypto/x509/x509_ext.c - $(OPENSSL_PATH)/crypto/x509/x509_lu.c - $(OPENSSL_PATH)/crypto/x509/x509_obj.c - $(OPENSSL_PATH)/crypto/x509/x509_r2x.c - $(OPENSSL_PATH)/crypto/x509/x509_req.c - $(OPENSSL_PATH)/crypto/x509/x509_set.c - $(OPENSSL_PATH)/crypto/x509/x509_trs.c - $(OPENSSL_PATH)/crypto/x509/x509_txt.c - $(OPENSSL_PATH)/crypto/x509/x509_v3.c - $(OPENSSL_PATH)/crypto/x509/x509_vfy.c - $(OPENSSL_PATH)/crypto/x509/x509_vpm.c - $(OPENSSL_PATH)/crypto/x509/x509cset.c - $(OPENSSL_PATH)/crypto/x509/x509name.c - $(OPENSSL_PATH)/crypto/x509/x509rset.c - $(OPENSSL_PATH)/crypto/x509/x509spki.c - $(OPENSSL_PATH)/crypto/x509/x509type.c - $(OPENSSL_PATH)/crypto/x509/x_all.c - $(OPENSSL_PATH)/crypto/x509/x_attrib.c - $(OPENSSL_PATH)/crypto/x509/x_crl.c - $(OPENSSL_PATH)/crypto/x509/x_exten.c - $(OPENSSL_PATH)/crypto/x509/x_name.c - $(OPENSSL_PATH)/crypto/x509/x_pubkey.c - $(OPENSSL_PATH)/crypto/x509/x_req.c - $(OPENSSL_PATH)/crypto/x509/x_x509.c - $(OPENSSL_PATH)/crypto/x509/x_x509a.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c - $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c - $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c - $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c - $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c - $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c - $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c - $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c - $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c - $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c - $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c - $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c - $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c - $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c - $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c - $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c - $(OPENSSL_PATH)/crypto/x509v3/v3_info.c - $(OPENSSL_PATH)/crypto/x509v3/v3_int.c - $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c - $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c - $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c - $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c - $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c - $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c - $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c - $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c - $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c - $(OPENSSL_PATH)/crypto/x509v3/v3err.c -# Autogenerated files list ends here - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - DebugLib - -[LibraryClasses.ARM] - ArmSoftFloatLib - -[BuildOptions] - # - # Disables the following Visual Studio compiler warnings brought by openssl source, - # so we do not break the build with /WX option: - # C4090: 'function' : different 'const' qualifiers - # C4244: conversion from type1 to type2, possible loss of data - # C4245: conversion from type1 to type2, signed/unsigned mismatch - # C4267: conversion from size_t to type, possible loss of data - # C4306: 'identifier' : conversion from 'type1' to 'type2' of greater size - # C4389: 'operator' : signed/unsigned mismatch (xxxx) - # C4702: unreachable code - # C4706: assignment within conditional expression - # - MSFT:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4389 /wd4702 /wd4706 - MSFT:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706 - MSFT:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4090 /wd4244 /wd4245 /wd4267 /wd4306 /wd4389 /wd4702 /wd4706 - - INTEL:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w - INTEL:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w - INTEL:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPENSSL_FLAGS) /w - - # - # Suppress the following build warnings in openssl so we don't break the build with -Werror - # -Werror=maybe-uninitialized: there exist some other paths for which the variable is not initialized. - # - GCC:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized - GCC:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -DNO_MSABI_VA_FUNCS - GCC:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized - GCC:*_*_ARM_CC_FLAGS = $(OPENSSL_FLAGS) - GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) - - # suppress the following warnings in openssl so we don't break the build with warnings-as-errors: - # 1295: Deprecated declaration - give arg types - # 550: was set but never used - # 1293: assignment in condition - # 111: statement is unreachable (invariably "break;" after "return X;" in case statement) - # 68: integer conversion resulted in a change of sign ("if (Status == -1)") - # 177: was declared but never referenced - # 223: function declared implicitly - # 144: a value of type cannot be used to initialize an entity of type - # 513: a value of type cannot be assigned to an entity of type - # 188: enumerated type mixed with another type (i.e. passing an integer as an enum without a cast) - # 1296: Extended constant initialiser used - # 128: loop is not reachable - may be emitted inappropriately if code follows a conditional return - # from the function that evaluates to true at compile time - # 546: transfer of control bypasses initialization - may be emitted inappropriately if the uninitialized - # variable is never referenced after the jump - # 1: ignore "#1-D: last line of file ends without a newline" - # 3017: may be used before being set (NOTE: This was fixed in OpenSSL 1.1 HEAD with - # commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be dropped then.) - RVCT:*_*_ARM_CC_FLAGS = $(OPENSSL_FLAGS) --library_interface=aeabi_clib99 --diag_suppress=1296,1295,550,1293,111,68,177,223,144,513,188,128,546,1,3017 -JCryptoPkg/Include - XCODE:*_*_IA32_CC_FLAGS = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w - XCODE:*_*_X64_CC_FLAGS = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w diff --git a/Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni b/Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni deleted file mode 100644 index 7891b13595..0000000000 --- a/Core/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni +++ /dev/null @@ -1,22 +0,0 @@ -// /** @file -// This module provides openSSL Library implementation (libcrypto only, no libssl). -// -// This module provides OpenSSL Library implementation (libcrypto only, no libssl). -// -// Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "OpenSSL Library implementation (libcrypto only, no libssl)" - -#string STR_MODULE_DESCRIPTION #language en-US "This module provides OpenSSL Library implementation (libcrypto only, no libssl)." - diff --git a/Core/CryptoPkg/Library/OpensslLib/buildinf.h b/Core/CryptoPkg/Library/OpensslLib/buildinf.h deleted file mode 100644 index 3d967d2a86..0000000000 --- a/Core/CryptoPkg/Library/OpensslLib/buildinf.h +++ /dev/null @@ -1,2 +0,0 @@ -#define PLATFORM "UEFI" -#define DATE "Tues Mar 21 01:23:45 PDT 2017" diff --git a/Core/CryptoPkg/Library/OpensslLib/process_files.pl b/Core/CryptoPkg/Library/OpensslLib/process_files.pl deleted file mode 100644 index f6e1f43641..0000000000 --- a/Core/CryptoPkg/Library/OpensslLib/process_files.pl +++ /dev/null @@ -1,224 +0,0 @@ -#!/usr/bin/perl -w -# -# This script runs the OpenSSL Configure script, then processes the -# resulting file list into our local OpensslLib[Crypto].inf and also -# takes a copy of opensslconf.h. -# -# This only needs to be done once by a developer when updating to a -# new version of OpenSSL (or changing options, etc.). Normal users -# do not need to do this, since the results are stored in the EDK2 -# git repository for them. -# -use strict; -use Cwd; -use File::Copy; - -# -# Find the openssl directory name for use lib. We have to do this -# inside of BEGIN. The variables we create here, however, don't seem -# to be available to the main script, so we have to repeat the -# exercise. -# -my $inf_file; -my $OPENSSL_PATH; -my @inf; - -BEGIN { - $inf_file = "OpensslLib.inf"; - - # Read the contents of the inf file - open( FD, "<" . $inf_file ) || - die "Cannot open \"" . $inf_file . "\"!"; - @inf = (); - close(FD) || - die "Cannot close \"" . $inf_file . "\"!"; - - foreach (@inf) { - if (/DEFINE\s+OPENSSL_PATH\s*=\s*([a-z]+)/) { - - # We need to run Configure before we can include its result... - $OPENSSL_PATH = $1; - - my $basedir = getcwd(); - - chdir($OPENSSL_PATH) || - die "Cannot change to OpenSSL directory \"" . $OPENSSL_PATH . "\""; - - # Configure UEFI - system( - "./Configure", - "UEFI", - "no-afalgeng", - "no-asm", - "no-async", - "no-autoalginit", - "no-autoerrinit", - "no-bf", - "no-blake2", - "no-camellia", - "no-capieng", - "no-cast", - "no-chacha", - "no-cms", - "no-ct", - "no-deprecated", - "no-dgram", - "no-dsa", - "no-dynamic-engine", - "no-ec", - "no-ec2m", - "no-engine", - "no-err", - "no-filenames", - "no-gost", - "no-hw", - "no-idea", - "no-mdc2", - "no-pic", - "no-ocb", - "no-poly1305", - "no-posix-io", - "no-rc2", - "no-rfc3779", - "no-rmd160", - "no-scrypt", - "no-seed", - "no-sock", - "no-srp", - "no-ssl", - "no-stdio", - "no-threads", - "no-ts", - "no-ui", - "no-whirlpool" - ) == 0 || - die "OpenSSL Configure failed!\n"; - - # Generate opensslconf.h per config data - system( - "perl -I. -Mconfigdata util/dofile.pl " . - "include/openssl/opensslconf.h.in " . - "> include/openssl/opensslconf.h" - ) == 0 || - die "Failed to generate opensslconf.h!\n"; - - chdir($basedir) || - die "Cannot change to base directory \"" . $basedir . "\""; - - push @INC, $1; - last; - } - } -} - -# -# Retrieve file lists from OpenSSL configdata -# -use configdata qw/%unified_info/; - -my @cryptofilelist = (); -my @sslfilelist = (); -foreach my $product ((@{$unified_info{libraries}}, - @{$unified_info{engines}})) { - foreach my $o (@{$unified_info{sources}->{$product}}) { - foreach my $s (@{$unified_info{sources}->{$o}}) { - next if ($unified_info{generate}->{$s}); - next if $s =~ "crypto/bio/b_print.c"; - if ($product =~ "libssl") { - push @sslfilelist, ' $(OPENSSL_PATH)/' . $s . "\r\n"; - next; - } - push @cryptofilelist, ' $(OPENSSL_PATH)/' . $s . "\r\n"; - } - } -} - -# -# Update OpensslLib.inf with autogenerated file list -# -my @new_inf = (); -my $subbing = 0; -print "\n--> Updating OpensslLib.inf ... "; -foreach (@inf) { - if ( $_ =~ "# Autogenerated files list starts here" ) { - push @new_inf, $_, @cryptofilelist, @sslfilelist; - $subbing = 1; - next; - } - if ( $_ =~ "# Autogenerated files list ends here" ) { - push @new_inf, $_; - $subbing = 0; - next; - } - - push @new_inf, $_ - unless ($subbing); -} - -my $new_inf_file = $inf_file . ".new"; -open( FD, ">" . $new_inf_file ) || - die $new_inf_file; -print( FD @new_inf ) || - die $new_inf_file; -close(FD) || - die $new_inf_file; -rename( $new_inf_file, $inf_file ) || - die "rename $inf_file"; -print "Done!"; - -# -# Update OpensslLibCrypto.inf with auto-generated file list (no libssl) -# -$inf_file = "OpensslLibCrypto.inf"; - -# Read the contents of the inf file -@inf = (); -@new_inf = (); -open( FD, "<" . $inf_file ) || - die "Cannot open \"" . $inf_file . "\"!"; -@inf = (); -close(FD) || - die "Cannot close \"" . $inf_file . "\"!"; - -$subbing = 0; -print "\n--> Updating OpensslLibCrypto.inf ... "; -foreach (@inf) { - if ( $_ =~ "# Autogenerated files list starts here" ) { - push @new_inf, $_, @cryptofilelist; - $subbing = 1; - next; - } - if ( $_ =~ "# Autogenerated files list ends here" ) { - push @new_inf, $_; - $subbing = 0; - next; - } - - push @new_inf, $_ - unless ($subbing); -} - -$new_inf_file = $inf_file . ".new"; -open( FD, ">" . $new_inf_file ) || - die $new_inf_file; -print( FD @new_inf ) || - die $new_inf_file; -close(FD) || - die $new_inf_file; -rename( $new_inf_file, $inf_file ) || - die "rename $inf_file"; -print "Done!"; - -# -# Copy opensslconf.h generated from OpenSSL Configuration -# -print "\n--> Duplicating opensslconf.h into Include/openssl ... "; -copy($OPENSSL_PATH . "/include/openssl/opensslconf.h", - $OPENSSL_PATH . "/../../Include/openssl/") || - die "Cannot copy opensslconf.h!"; -print "Done!\n"; - -print "\nProcessing Files Done!\n"; - -exit(0); - diff --git a/Core/CryptoPkg/Library/TlsLib/InternalTlsLib.h b/Core/CryptoPkg/Library/TlsLib/InternalTlsLib.h deleted file mode 100644 index 88c4e3b38e..0000000000 --- a/Core/CryptoPkg/Library/TlsLib/InternalTlsLib.h +++ /dev/null @@ -1,43 +0,0 @@ -/** @file - Internal include file for TlsLib. - -Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __INTERNAL_TLS_LIB_H__ -#define __INTERNAL_TLS_LIB_H__ - -#undef _WIN32 -#undef _WIN64 - -#include -#include -#include -#include - -typedef struct { - // - // Main SSL Connection which is created by a server or a client - // per established connection. - // - SSL *Ssl; - // - // Memory BIO for the TLS/SSL Reading operations. - // - BIO *InBio; - // - // Memory BIO for the TLS/SSL Writing operations. - // - BIO *OutBio; -} TLS_CONNECTION; - -#endif - diff --git a/Core/CryptoPkg/Library/TlsLib/TlsConfig.c b/Core/CryptoPkg/Library/TlsLib/TlsConfig.c deleted file mode 100644 index 4c88229b89..0000000000 --- a/Core/CryptoPkg/Library/TlsLib/TlsConfig.c +++ /dev/null @@ -1,1060 +0,0 @@ -/** @file - SSL/TLS Configuration Library Wrapper Implementation over OpenSSL. - -Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
-(C) Copyright 2016 Hewlett Packard Enterprise Development LP
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalTlsLib.h" - -typedef struct { - // - // IANA/IETF defined Cipher Suite ID - // - UINT16 IanaCipher; - // - // OpenSSL-used Cipher Suite String - // - CONST CHAR8 *OpensslCipher; -} TLS_CIPHER_PAIR; - -// -// The mapping table between IANA/IETF Cipher Suite definitions and -// OpenSSL-used Cipher Suite name. -// -STATIC CONST TLS_CIPHER_PAIR TlsCipherMappingTable[] = { - { 0x0001, "NULL-MD5" }, /// TLS_RSA_WITH_NULL_MD5 - { 0x0002, "NULL-SHA" }, /// TLS_RSA_WITH_NULL_SHA - { 0x0004, "RC4-MD5" }, /// TLS_RSA_WITH_RC4_128_MD5 - { 0x0005, "RC4-SHA" }, /// TLS_RSA_WITH_RC4_128_SHA - { 0x000A, "DES-CBC3-SHA" }, /// TLS_RSA_WITH_3DES_EDE_CBC_SHA, mandatory TLS 1.1 - { 0x0016, "DHE-RSA-DES-CBC3-SHA" }, /// TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - { 0x002F, "AES128-SHA" }, /// TLS_RSA_WITH_AES_128_CBC_SHA, mandatory TLS 1.2 - { 0x0030, "DH-DSS-AES128-SHA" }, /// TLS_DH_DSS_WITH_AES_128_CBC_SHA - { 0x0031, "DH-RSA-AES128-SHA" }, /// TLS_DH_RSA_WITH_AES_128_CBC_SHA - { 0x0033, "DHE-RSA-AES128-SHA" }, /// TLS_DHE_RSA_WITH_AES_128_CBC_SHA - { 0x0035, "AES256-SHA" }, /// TLS_RSA_WITH_AES_256_CBC_SHA - { 0x0036, "DH-DSS-AES256-SHA" }, /// TLS_DH_DSS_WITH_AES_256_CBC_SHA - { 0x0037, "DH-RSA-AES256-SHA" }, /// TLS_DH_RSA_WITH_AES_256_CBC_SHA - { 0x0039, "DHE-RSA-AES256-SHA" }, /// TLS_DHE_RSA_WITH_AES_256_CBC_SHA - { 0x003B, "NULL-SHA256" }, /// TLS_RSA_WITH_NULL_SHA256 - { 0x003C, "AES128-SHA256" }, /// TLS_RSA_WITH_AES_128_CBC_SHA256 - { 0x003D, "AES256-SHA256" }, /// TLS_RSA_WITH_AES_256_CBC_SHA256 - { 0x003E, "DH-DSS-AES128-SHA256" }, /// TLS_DH_DSS_WITH_AES_128_CBC_SHA256 - { 0x003F, "DH-RSA-AES128-SHA256" }, /// TLS_DH_RSA_WITH_AES_128_CBC_SHA256 - { 0x0067, "DHE-RSA-AES128-SHA256" }, /// TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - { 0x0068, "DH-DSS-AES256-SHA256" }, /// TLS_DH_DSS_WITH_AES_256_CBC_SHA256 - { 0x0069, "DH-RSA-AES256-SHA256" }, /// TLS_DH_RSA_WITH_AES_256_CBC_SHA256 - { 0x006B, "DHE-RSA-AES256-SHA256" } /// TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 -}; - -/** - Gets the OpenSSL cipher suite string for the supplied IANA TLS cipher suite. - - @param[in] CipherId The supplied IANA TLS cipher suite ID. - - @return The corresponding OpenSSL cipher suite string if found, - NULL otherwise. - -**/ -STATIC -CONST CHAR8 * -TlsGetCipherString ( - IN UINT16 CipherId - ) -{ - CONST TLS_CIPHER_PAIR *CipherEntry; - UINTN TableSize; - UINTN Index; - - CipherEntry = TlsCipherMappingTable; - TableSize = sizeof (TlsCipherMappingTable) / sizeof (TLS_CIPHER_PAIR); - - // - // Search Cipher Mapping Table for IANA-OpenSSL Cipher Translation - // - for (Index = 0; Index < TableSize; Index++, CipherEntry++) { - // - // Translate IANA cipher suite name to OpenSSL name. - // - if (CipherEntry->IanaCipher == CipherId) { - return CipherEntry->OpensslCipher; - } - } - - // - // No Cipher Mapping found, return NULL. - // - return NULL; -} - -/** - Set a new TLS/SSL method for a particular TLS object. - - This function sets a new TLS/SSL method for a particular TLS object. - - @param[in] Tls Pointer to a TLS object. - @param[in] MajorVer Major Version of TLS/SSL Protocol. - @param[in] MinorVer Minor Version of TLS/SSL Protocol. - - @retval EFI_SUCCESS The TLS/SSL method was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported TLS/SSL method. - -**/ -EFI_STATUS -EFIAPI -TlsSetVersion ( - IN VOID *Tls, - IN UINT8 MajorVer, - IN UINT8 MinorVer - ) -{ - TLS_CONNECTION *TlsConn; - UINT16 ProtoVersion; - - TlsConn = (TLS_CONNECTION *)Tls; - if (TlsConn == NULL || TlsConn->Ssl == NULL) { - return EFI_INVALID_PARAMETER; - } - - ProtoVersion = (MajorVer << 8) | MinorVer; - - // - // Bound TLS method to the particular specified version. - // - switch (ProtoVersion) { - case TLS1_VERSION: - // - // TLS 1.0 - // - SSL_set_min_proto_version (TlsConn->Ssl, TLS1_VERSION); - SSL_set_max_proto_version (TlsConn->Ssl, TLS1_VERSION); - break; - case TLS1_1_VERSION: - // - // TLS 1.1 - // - SSL_set_min_proto_version (TlsConn->Ssl, TLS1_1_VERSION); - SSL_set_max_proto_version (TlsConn->Ssl, TLS1_1_VERSION); - break; - case TLS1_2_VERSION: - // - // TLS 1.2 - // - SSL_set_min_proto_version (TlsConn->Ssl, TLS1_2_VERSION); - SSL_set_max_proto_version (TlsConn->Ssl, TLS1_2_VERSION); - break; - default: - // - // Unsupported Protocol Version - // - return EFI_UNSUPPORTED; - } - - return EFI_SUCCESS;; -} - -/** - Set TLS object to work in client or server mode. - - This function prepares a TLS object to work in client or server mode. - - @param[in] Tls Pointer to a TLS object. - @param[in] IsServer Work in server mode. - - @retval EFI_SUCCESS The TLS/SSL work mode was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported TLS/SSL work mode. - -**/ -EFI_STATUS -EFIAPI -TlsSetConnectionEnd ( - IN VOID *Tls, - IN BOOLEAN IsServer - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->Ssl == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (!IsServer) { - // - // Set TLS to work in Client mode. - // - SSL_set_connect_state (TlsConn->Ssl); - } else { - // - // Set TLS to work in Server mode. - // It is unsupported for UEFI version currently. - // - //SSL_set_accept_state (TlsConn->Ssl); - return EFI_UNSUPPORTED; - } - - return EFI_SUCCESS; -} - -/** - Set the ciphers list to be used by the TLS object. - - This function sets the ciphers for use by a specified TLS object. - - @param[in] Tls Pointer to a TLS object. - @param[in] CipherId Pointer to a UINT16 cipher Id. - @param[in] CipherNum The number of cipher in the list. - - @retval EFI_SUCCESS The ciphers list was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported TLS cipher in the list. - -**/ -EFI_STATUS -EFIAPI -TlsSetCipherList ( - IN VOID *Tls, - IN UINT16 *CipherId, - IN UINTN CipherNum - ) -{ - TLS_CONNECTION *TlsConn; - UINTN Index; - CONST CHAR8 *MappingName; - CHAR8 CipherString[500]; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->Ssl == NULL || CipherId == NULL) { - return EFI_INVALID_PARAMETER; - } - - MappingName = NULL; - - memset (CipherString, 0, sizeof (CipherString)); - - for (Index = 0; Index < CipherNum; Index++) { - // - // Handling OpenSSL / RFC Cipher name mapping. - // - MappingName = TlsGetCipherString (*(CipherId + Index)); - if (MappingName == NULL) { - return EFI_UNSUPPORTED; - } - - if (Index != 0) { - // - // The ciphers were separated by a colon. - // - AsciiStrCatS (CipherString, sizeof (CipherString), ":"); - } - - AsciiStrCatS (CipherString, sizeof (CipherString), MappingName); - } - - AsciiStrCatS (CipherString, sizeof (CipherString), ":@STRENGTH"); - - // - // Sets the ciphers for use by the Tls object. - // - if (SSL_set_cipher_list (TlsConn->Ssl, CipherString) <= 0) { - return EFI_UNSUPPORTED; - } - - return EFI_SUCCESS; -} - -/** - Set the compression method for TLS/SSL operations. - - This function handles TLS/SSL integrated compression methods. - - @param[in] CompMethod The compression method ID. - - @retval EFI_SUCCESS The compression method for the communication was - set successfully. - @retval EFI_UNSUPPORTED Unsupported compression method. - -**/ -EFI_STATUS -EFIAPI -TlsSetCompressionMethod ( - IN UINT8 CompMethod - ) -{ - COMP_METHOD *Cm; - INTN Ret; - - Cm = NULL; - Ret = 0; - - if (CompMethod == 0) { - // - // TLS defines one standard compression method, CompressionMethod.null (0), - // which specifies that data exchanged via the record protocol will not be compressed. - // So, return EFI_SUCCESS directly (RFC 3749). - // - return EFI_SUCCESS; - } else if (CompMethod == 1) { - Cm = COMP_zlib(); - } else { - return EFI_UNSUPPORTED; - } - - // - // Adds the compression method to the list of available - // compression methods. - // - Ret = SSL_COMP_add_compression_method (CompMethod, Cm); - if (Ret != 0) { - return EFI_UNSUPPORTED; - } - - return EFI_SUCCESS; -} - -/** - Set peer certificate verification mode for the TLS connection. - - This function sets the verification mode flags for the TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in] VerifyMode A set of logically or'ed verification mode flags. - -**/ -VOID -EFIAPI -TlsSetVerify ( - IN VOID *Tls, - IN UINT32 VerifyMode - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->Ssl == NULL) { - return; - } - - // - // Set peer certificate verification parameters with NULL callback. - // - SSL_set_verify (TlsConn->Ssl, VerifyMode, NULL); -} - -/** - Sets a TLS/SSL session ID to be used during TLS/SSL connect. - - This function sets a session ID to be used when the TLS/SSL connection is - to be established. - - @param[in] Tls Pointer to the TLS object. - @param[in] SessionId Session ID data used for session resumption. - @param[in] SessionIdLen Length of Session ID in bytes. - - @retval EFI_SUCCESS Session ID was set successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED No available session for ID setting. - -**/ -EFI_STATUS -EFIAPI -TlsSetSessionId ( - IN VOID *Tls, - IN UINT8 *SessionId, - IN UINT16 SessionIdLen - ) -{ - TLS_CONNECTION *TlsConn; - SSL_SESSION *Session; - - TlsConn = (TLS_CONNECTION *) Tls; - Session = NULL; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || SessionId == NULL) { - return EFI_INVALID_PARAMETER; - } - - Session = SSL_get_session (TlsConn->Ssl); - if (Session == NULL) { - return EFI_UNSUPPORTED; - } - - SSL_SESSION_set1_id (Session, (const unsigned char *)SessionId, SessionIdLen); - - return EFI_SUCCESS; -} - -/** - Adds the CA to the cert store when requesting Server or Client authentication. - - This function adds the CA certificate to the list of CAs when requesting - Server or Client authentication for the chosen TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in] Data Pointer to the data buffer of a DER-encoded binary - X.509 certificate or PEM-encoded X.509 certificate. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_OUT_OF_RESOURCES Required resources could not be allocated. - @retval EFI_ABORTED Invalid X.509 certificate. - -**/ -EFI_STATUS -EFIAPI -TlsSetCaCertificate ( - IN VOID *Tls, - IN VOID *Data, - IN UINTN DataSize - ) -{ - BIO *BioCert; - X509 *Cert; - X509_STORE *X509Store; - EFI_STATUS Status; - TLS_CONNECTION *TlsConn; - SSL_CTX *SslCtx; - INTN Ret; - UINTN ErrorCode; - - BioCert = NULL; - Cert = NULL; - X509Store = NULL; - Status = EFI_SUCCESS; - TlsConn = (TLS_CONNECTION *) Tls; - Ret = 0; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || Data == NULL || DataSize == 0) { - return EFI_INVALID_PARAMETER; - } - - // - // DER-encoded binary X.509 certificate or PEM-encoded X.509 certificate. - // Determine whether certificate is from DER encoding, if so, translate it to X509 structure. - // - Cert = d2i_X509 (NULL, (const unsigned char ** )&Data, (long) DataSize); - if (Cert == NULL) { - // - // Certificate is from PEM encoding. - // - BioCert = BIO_new (BIO_s_mem ()); - if (BioCert == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - - if (BIO_write (BioCert, Data, (UINT32) DataSize) <= 0) { - Status = EFI_ABORTED; - goto ON_EXIT; - } - - Cert = PEM_read_bio_X509 (BioCert, NULL, NULL, NULL); - if (Cert == NULL) { - Status = EFI_ABORTED; - goto ON_EXIT; - } - } - - SslCtx = SSL_get_SSL_CTX (TlsConn->Ssl); - X509Store = SSL_CTX_get_cert_store (SslCtx); - if (X509Store == NULL) { - Status = EFI_ABORTED; - goto ON_EXIT; - } - - // - // Add certificate to X509 store - // - Ret = X509_STORE_add_cert (X509Store, Cert); - if (Ret != 1) { - ErrorCode = ERR_peek_last_error (); - // - // Ignore "already in table" errors - // - if (!(ERR_GET_FUNC (ErrorCode) == X509_F_X509_STORE_ADD_CERT && - ERR_GET_REASON (ErrorCode) == X509_R_CERT_ALREADY_IN_HASH_TABLE)) { - Status = EFI_ABORTED; - goto ON_EXIT; - } - } - -ON_EXIT: - if (BioCert != NULL) { - BIO_free (BioCert); - } - - if (Cert != NULL) { - X509_free (Cert); - } - - return Status; -} - -/** - Loads the local public certificate into the specified TLS object. - - This function loads the X.509 certificate into the specified TLS object - for TLS negotiation. - - @param[in] Tls Pointer to the TLS object. - @param[in] Data Pointer to the data buffer of a DER-encoded binary - X.509 certificate or PEM-encoded X.509 certificate. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_OUT_OF_RESOURCES Required resources could not be allocated. - @retval EFI_ABORTED Invalid X.509 certificate. - -**/ -EFI_STATUS -EFIAPI -TlsSetHostPublicCert ( - IN VOID *Tls, - IN VOID *Data, - IN UINTN DataSize - ) -{ - BIO *BioCert; - X509 *Cert; - EFI_STATUS Status; - TLS_CONNECTION *TlsConn; - - BioCert = NULL; - Cert = NULL; - Status = EFI_SUCCESS; - TlsConn = (TLS_CONNECTION *) Tls; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || Data == NULL || DataSize == 0) { - return EFI_INVALID_PARAMETER; - } - - // - // DER-encoded binary X.509 certificate or PEM-encoded X.509 certificate. - // Determine whether certificate is from DER encoding, if so, translate it to X509 structure. - // - Cert = d2i_X509 (NULL, (const unsigned char ** )&Data, (long) DataSize); - if (Cert == NULL) { - // - // Certificate is from PEM encoding. - // - BioCert = BIO_new (BIO_s_mem ()); - if (BioCert == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - - if (BIO_write (BioCert, Data, (UINT32) DataSize) <= 0) { - Status = EFI_ABORTED; - goto ON_EXIT; - } - - Cert = PEM_read_bio_X509 (BioCert, NULL, NULL, NULL); - if (Cert == NULL) { - Status = EFI_ABORTED; - goto ON_EXIT; - } - } - - if (SSL_use_certificate (TlsConn->Ssl, Cert) != 1) { - Status = EFI_ABORTED; - goto ON_EXIT; - } - -ON_EXIT: - if (BioCert != NULL) { - BIO_free (BioCert); - } - - if (Cert != NULL) { - X509_free (Cert); - } - - return Status; -} - -/** - Adds the local private key to the specified TLS object. - - This function adds the local private key (PEM-encoded RSA or PKCS#8 private - key) into the specified TLS object for TLS negotiation. - - @param[in] Tls Pointer to the TLS object. - @param[in] Data Pointer to the data buffer of a PEM-encoded RSA - or PKCS#8 private key. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_ABORTED Invalid private key data. - -**/ -EFI_STATUS -EFIAPI -TlsSetHostPrivateKey ( - IN VOID *Tls, - IN VOID *Data, - IN UINTN DataSize - ) -{ - return EFI_UNSUPPORTED; -} - -/** - Adds the CA-supplied certificate revocation list for certificate validation. - - This function adds the CA-supplied certificate revocation list data for - certificate validity checking. - - @param[in] Data Pointer to the data buffer of a DER-encoded CRL data. - @param[in] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_ABORTED Invalid CRL data. - -**/ -EFI_STATUS -EFIAPI -TlsSetCertRevocationList ( - IN VOID *Data, - IN UINTN DataSize - ) -{ - return EFI_UNSUPPORTED; -} - -/** - Gets the protocol version used by the specified TLS connection. - - This function returns the protocol version used by the specified TLS - connection. - - @param[in] Tls Pointer to the TLS object. - - @return The protocol version of the specified TLS connection. - -**/ -UINT16 -EFIAPI -TlsGetVersion ( - IN VOID *Tls - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - - ASSERT (TlsConn != NULL); - - return (UINT16)(SSL_version (TlsConn->Ssl)); -} - -/** - Gets the connection end of the specified TLS connection. - - This function returns the connection end (as client or as server) used by - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - - @return The connection end used by the specified TLS connection. - -**/ -UINT8 -EFIAPI -TlsGetConnectionEnd ( - IN VOID *Tls - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - - ASSERT (TlsConn != NULL); - - return (UINT8)SSL_is_server (TlsConn->Ssl); -} - -/** - Gets the cipher suite used by the specified TLS connection. - - This function returns current cipher suite used by the specified - TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] CipherId The cipher suite used by the TLS object. - - @retval EFI_SUCCESS The cipher suite was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Unsupported cipher suite. - -**/ -EFI_STATUS -EFIAPI -TlsGetCurrentCipher ( - IN VOID *Tls, - IN OUT UINT16 *CipherId - ) -{ - TLS_CONNECTION *TlsConn; - CONST SSL_CIPHER *Cipher; - - TlsConn = (TLS_CONNECTION *) Tls; - Cipher = NULL; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || CipherId == NULL) { - return EFI_INVALID_PARAMETER; - } - - Cipher = SSL_get_current_cipher (TlsConn->Ssl); - if (Cipher == NULL) { - return EFI_UNSUPPORTED; - } - - *CipherId = (SSL_CIPHER_get_id (Cipher)) & 0xFFFF; - - return EFI_SUCCESS; -} - -/** - Gets the compression methods used by the specified TLS connection. - - This function returns current integrated compression methods used by - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] CompressionId The current compression method used by - the TLS object. - - @retval EFI_SUCCESS The compression method was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_ABORTED Invalid Compression method. - @retval EFI_UNSUPPORTED This function is not supported. - -**/ -EFI_STATUS -EFIAPI -TlsGetCurrentCompressionId ( - IN VOID *Tls, - IN OUT UINT8 *CompressionId - ) -{ - return EFI_UNSUPPORTED; -} - -/** - Gets the verification mode currently set in the TLS connection. - - This function returns the peer verification mode currently set in the - specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - - @return The verification mode set in the specified TLS connection. - -**/ -UINT32 -EFIAPI -TlsGetVerify ( - IN VOID *Tls - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - - ASSERT (TlsConn != NULL); - - return SSL_get_verify_mode (TlsConn->Ssl); -} - -/** - Gets the session ID used by the specified TLS connection. - - This function returns the TLS/SSL session ID currently used by the - specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] SessionId Buffer to contain the returned session ID. - @param[in,out] SessionIdLen The length of Session ID in bytes. - - @retval EFI_SUCCESS The Session ID was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Invalid TLS/SSL session. - -**/ -EFI_STATUS -EFIAPI -TlsGetSessionId ( - IN VOID *Tls, - IN OUT UINT8 *SessionId, - IN OUT UINT16 *SessionIdLen - ) -{ - TLS_CONNECTION *TlsConn; - SSL_SESSION *Session; - CONST UINT8 *SslSessionId; - - TlsConn = (TLS_CONNECTION *) Tls; - Session = NULL; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || SessionId == NULL || SessionIdLen == NULL) { - return EFI_INVALID_PARAMETER; - } - - Session = SSL_get_session (TlsConn->Ssl); - if (Session == NULL) { - return EFI_UNSUPPORTED; - } - - SslSessionId = SSL_SESSION_get_id (Session, (unsigned int *)SessionIdLen); - CopyMem (SessionId, SslSessionId, *SessionIdLen); - - return EFI_SUCCESS; -} - -/** - Gets the client random data used in the specified TLS connection. - - This function returns the TLS/SSL client random data currently used in - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] ClientRandom Buffer to contain the returned client - random data (32 bytes). - -**/ -VOID -EFIAPI -TlsGetClientRandom ( - IN VOID *Tls, - IN OUT UINT8 *ClientRandom - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || ClientRandom == NULL) { - return; - } - - SSL_get_client_random (TlsConn->Ssl, ClientRandom, SSL3_RANDOM_SIZE); -} - -/** - Gets the server random data used in the specified TLS connection. - - This function returns the TLS/SSL server random data currently used in - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] ServerRandom Buffer to contain the returned server - random data (32 bytes). - -**/ -VOID -EFIAPI -TlsGetServerRandom ( - IN VOID *Tls, - IN OUT UINT8 *ServerRandom - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || ServerRandom == NULL) { - return; - } - - SSL_get_server_random (TlsConn->Ssl, ServerRandom, SSL3_RANDOM_SIZE); -} - -/** - Gets the master key data used in the specified TLS connection. - - This function returns the TLS/SSL master key material currently used in - the specified TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] KeyMaterial Buffer to contain the returned key material. - - @retval EFI_SUCCESS Key material was returned successfully. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_UNSUPPORTED Invalid TLS/SSL session. - -**/ -EFI_STATUS -EFIAPI -TlsGetKeyMaterial ( - IN VOID *Tls, - IN OUT UINT8 *KeyMaterial - ) -{ - TLS_CONNECTION *TlsConn; - SSL_SESSION *Session; - - TlsConn = (TLS_CONNECTION *) Tls; - Session = NULL; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || KeyMaterial == NULL) { - return EFI_INVALID_PARAMETER; - } - - Session = SSL_get_session (TlsConn->Ssl); - - if (Session == NULL) { - return EFI_UNSUPPORTED; - } - - SSL_SESSION_get_master_key (Session, KeyMaterial, SSL3_MASTER_SECRET_SIZE); - - return EFI_SUCCESS; -} - -/** - Gets the CA Certificate from the cert store. - - This function returns the CA certificate for the chosen - TLS connection. - - @param[in] Tls Pointer to the TLS object. - @param[out] Data Pointer to the data buffer to receive the CA - certificate data sent to the client. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetCaCertificate ( - IN VOID *Tls, - OUT VOID *Data, - IN OUT UINTN *DataSize - ) -{ - return EFI_UNSUPPORTED; -} - -/** - Gets the local public Certificate set in the specified TLS object. - - This function returns the local public certificate which was currently set - in the specified TLS object. - - @param[in] Tls Pointer to the TLS object. - @param[out] Data Pointer to the data buffer to receive the local - public certificate. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_INVALID_PARAMETER The parameter is invalid. - @retval EFI_NOT_FOUND The certificate is not found. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetHostPublicCert ( - IN VOID *Tls, - OUT VOID *Data, - IN OUT UINTN *DataSize - ) -{ - X509 *Cert; - TLS_CONNECTION *TlsConn; - - Cert = NULL; - TlsConn = (TLS_CONNECTION *) Tls; - - if (TlsConn == NULL || TlsConn->Ssl == NULL || DataSize == NULL) { - return EFI_INVALID_PARAMETER; - } - - Cert = SSL_get_certificate(TlsConn->Ssl); - if (Cert == NULL) { - return EFI_NOT_FOUND; - } - - // - // Only DER encoding is supported currently. - // - if (*DataSize < (UINTN) i2d_X509 (Cert, NULL)) { - *DataSize = (UINTN) i2d_X509 (Cert, NULL); - return EFI_BUFFER_TOO_SMALL; - } - - *DataSize = (UINTN) i2d_X509 (Cert, (unsigned char **) &Data); - - return EFI_SUCCESS; -} - -/** - Gets the local private key set in the specified TLS object. - - This function returns the local private key data which was currently set - in the specified TLS object. - - @param[in] Tls Pointer to the TLS object. - @param[out] Data Pointer to the data buffer to receive the local - private key data. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetHostPrivateKey ( - IN VOID *Tls, - OUT VOID *Data, - IN OUT UINTN *DataSize - ) -{ - return EFI_UNSUPPORTED; -} - -/** - Gets the CA-supplied certificate revocation list data set in the specified - TLS object. - - This function returns the CA-supplied certificate revocation list data which - was currently set in the specified TLS object. - - @param[out] Data Pointer to the data buffer to receive the CRL data. - @param[in,out] DataSize The size of data buffer in bytes. - - @retval EFI_SUCCESS The operation succeeded. - @retval EFI_UNSUPPORTED This function is not supported. - @retval EFI_BUFFER_TOO_SMALL The Data is too small to hold the data. - -**/ -EFI_STATUS -EFIAPI -TlsGetCertRevocationList ( - OUT VOID *Data, - IN OUT UINTN *DataSize - ) -{ - return EFI_UNSUPPORTED; -} - diff --git a/Core/CryptoPkg/Library/TlsLib/TlsInit.c b/Core/CryptoPkg/Library/TlsLib/TlsInit.c deleted file mode 100644 index e2c9744a44..0000000000 --- a/Core/CryptoPkg/Library/TlsLib/TlsInit.c +++ /dev/null @@ -1,269 +0,0 @@ -/** @file - SSL/TLS Initialization Library Wrapper Implementation over OpenSSL. - -Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
-(C) Copyright 2016 Hewlett Packard Enterprise Development LP
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalTlsLib.h" - -/** - Initializes the OpenSSL library. - - This function registers ciphers and digests used directly and indirectly - by SSL/TLS, and initializes the readable error messages. - This function must be called before any other action takes places. - -**/ -VOID -EFIAPI -TlsInitialize ( - VOID - ) -{ - // - // Performs initialization of crypto and ssl library, and loads required - // algorithms. - // - OPENSSL_init_ssl ( - OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, - NULL - ); - - // - // Initialize the pseudorandom number generator. - // - RandomSeed (NULL, 0); -} - -/** - Free an allocated SSL_CTX object. - - @param[in] TlsCtx Pointer to the SSL_CTX object to be released. - -**/ -VOID -EFIAPI -TlsCtxFree ( - IN VOID *TlsCtx - ) -{ - if (TlsCtx == NULL) { - return; - } - - if (TlsCtx != NULL) { - SSL_CTX_free ((SSL_CTX *) (TlsCtx)); - } -} - -/** - Creates a new SSL_CTX object as framework to establish TLS/SSL enabled - connections. - - @param[in] MajorVer Major Version of TLS/SSL Protocol. - @param[in] MinorVer Minor Version of TLS/SSL Protocol. - - @return Pointer to an allocated SSL_CTX object. - If the creation failed, TlsCtxNew() returns NULL. - -**/ -VOID * -EFIAPI -TlsCtxNew ( - IN UINT8 MajorVer, - IN UINT8 MinorVer - ) -{ - SSL_CTX *TlsCtx; - UINT16 ProtoVersion; - - ProtoVersion = (MajorVer << 8) | MinorVer; - - TlsCtx = SSL_CTX_new (SSLv23_client_method ()); - if (TlsCtx == NULL) { - return NULL; - } - - // - // Ensure SSLv3 is disabled - // - SSL_CTX_set_options (TlsCtx, SSL_OP_NO_SSLv3); - - // - // Treat as minimum accepted versions by setting the minimal bound. - // Client can use higher TLS version if server supports it - // - SSL_CTX_set_min_proto_version (TlsCtx, ProtoVersion); - - return (VOID *) TlsCtx; -} - -/** - Free an allocated TLS object. - - This function removes the TLS object pointed to by Tls and frees up the - allocated memory. If Tls is NULL, nothing is done. - - @param[in] Tls Pointer to the TLS object to be freed. - -**/ -VOID -EFIAPI -TlsFree ( - IN VOID *Tls - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL) { - return; - } - - // - // Free the internal TLS and BIO objects. - // - if (TlsConn->Ssl != NULL) { - SSL_free (TlsConn->Ssl); - } - - if (TlsConn->InBio != NULL) { - BIO_free (TlsConn->InBio); - } - - if (TlsConn->OutBio != NULL) { - BIO_free (TlsConn->OutBio); - } - - OPENSSL_free (Tls); -} - -/** - Create a new TLS object for a connection. - - This function creates a new TLS object for a connection. The new object - inherits the setting of the underlying context TlsCtx: connection method, - options, verification setting. - - @param[in] TlsCtx Pointer to the SSL_CTX object. - - @return Pointer to an allocated SSL object. - If the creation failed, TlsNew() returns NULL. - -**/ -VOID * -EFIAPI -TlsNew ( - IN VOID *TlsCtx - ) -{ - TLS_CONNECTION *TlsConn; - SSL_CTX *SslCtx; - X509_STORE *X509Store; - - TlsConn = NULL; - - // - // Allocate one new TLS_CONNECTION object - // - TlsConn = (TLS_CONNECTION *) OPENSSL_malloc (sizeof (TLS_CONNECTION)); - if (TlsConn == NULL) { - return NULL; - } - - TlsConn->Ssl = NULL; - - // - // Create a new SSL Object - // - TlsConn->Ssl = SSL_new ((SSL_CTX *) TlsCtx); - if (TlsConn->Ssl == NULL) { - TlsFree ((VOID *) TlsConn); - return NULL; - } - - // - // This retains compatibility with previous version of OpenSSL. - // - SSL_set_security_level (TlsConn->Ssl, 0); - - // - // Initialize the created SSL Object - // - SSL_set_info_callback (TlsConn->Ssl, NULL); - - TlsConn->InBio = NULL; - - // - // Set up Reading BIO for TLS connection - // - TlsConn->InBio = BIO_new (BIO_s_mem ()); - if (TlsConn->InBio == NULL) { - TlsFree ((VOID *) TlsConn); - return NULL; - } - - // - // Sets the behaviour of memory BIO when it is empty. It will set the - // read retry flag. - // - BIO_set_mem_eof_return (TlsConn->InBio, -1); - - TlsConn->OutBio = NULL; - - // - // Set up Writing BIO for TLS connection - // - TlsConn->OutBio = BIO_new (BIO_s_mem ()); - if (TlsConn->OutBio == NULL) { - TlsFree ((VOID *) TlsConn); - return NULL; - } - - // - // Sets the behaviour of memory BIO when it is empty. It will set the - // write retry flag. - // - BIO_set_mem_eof_return (TlsConn->OutBio, -1); - - ASSERT (TlsConn->Ssl != NULL && TlsConn->InBio != NULL && TlsConn->OutBio != NULL); - - // - // Connects the InBio and OutBio for the read and write operations. - // - SSL_set_bio (TlsConn->Ssl, TlsConn->InBio, TlsConn->OutBio); - - // - // Create new X509 store if needed - // - SslCtx = SSL_get_SSL_CTX (TlsConn->Ssl); - X509Store = SSL_CTX_get_cert_store (SslCtx); - if (X509Store == NULL) { - X509Store = X509_STORE_new (); - if (X509Store == NULL) { - TlsFree ((VOID *) TlsConn); - return NULL; - } - SSL_CTX_set1_verify_cert_store (SslCtx, X509Store); - X509_STORE_free (X509Store); - } - - // - // Set X509_STORE flags used in certificate validation - // - X509_STORE_set_flags ( - X509Store, - X509_V_FLAG_PARTIAL_CHAIN | X509_V_FLAG_NO_CHECK_TIME - ); - return (VOID *) TlsConn; -} - diff --git a/Core/CryptoPkg/Library/TlsLib/TlsLib.inf b/Core/CryptoPkg/Library/TlsLib/TlsLib.inf deleted file mode 100644 index a3f93e7165..0000000000 --- a/Core/CryptoPkg/Library/TlsLib/TlsLib.inf +++ /dev/null @@ -1,57 +0,0 @@ -## @file -# SSL/TLS Wrapper Library Instance based on OpenSSL. -# -# Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
-# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = TlsLib - MODULE_UNI_FILE = TlsLib.uni - FILE_GUID = CC729DC5-4E21-0B36-1A00-3A8E1B86A155 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = TlsLib|DXE_DRIVER DXE_CORE UEFI_APPLICATION UEFI_DRIVER - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 IPF ARM AARCH64 -# - -[Sources] - InternalTlsLib.h - TlsInit.c - TlsConfig.c - TlsProcess.c - -[Packages] - MdePkg/MdePkg.dec - CryptoPkg/CryptoPkg.dec - -[LibraryClasses] - BaseLib - BaseMemoryLib - MemoryAllocationLib - UefiRuntimeServicesTableLib - DebugLib - OpensslLib - IntrinsicLib - PrintLib - -[BuildOptions] - # - # suppress the following warnings so we do not break the build with warnings-as-errors: - # C4090: 'function' : different 'const' qualifiers - # - MSFT:*_*_*_CC_FLAGS = /wd4090 - diff --git a/Core/CryptoPkg/Library/TlsLib/TlsLib.uni b/Core/CryptoPkg/Library/TlsLib/TlsLib.uni deleted file mode 100644 index e43a5df8e6..0000000000 --- a/Core/CryptoPkg/Library/TlsLib/TlsLib.uni +++ /dev/null @@ -1,19 +0,0 @@ -// /** @file -// SSL/TLS Wrapper Library Instance based on OpenSSL. -// -// Copyright (c) 2016, Intel Corporation. All rights reserved.
-// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// **/ - - -#string STR_MODULE_ABSTRACT #language en-US "SSL/TLS Wrapper Library Instance" - -#string STR_MODULE_DESCRIPTION #language en-US "This module provides SSL/TLS Wrapper Library Instance." diff --git a/Core/CryptoPkg/Library/TlsLib/TlsProcess.c b/Core/CryptoPkg/Library/TlsLib/TlsProcess.c deleted file mode 100644 index 38baac0e8b..0000000000 --- a/Core/CryptoPkg/Library/TlsLib/TlsProcess.c +++ /dev/null @@ -1,463 +0,0 @@ -/** @file - SSL/TLS Process Library Wrapper Implementation over OpenSSL. - The process includes the TLS handshake and packet I/O. - -Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
-(C) Copyright 2016 Hewlett Packard Enterprise Development LP
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "InternalTlsLib.h" - -#define MAX_BUFFER_SIZE 32768 - -/** - Checks if the TLS handshake was done. - - This function will check if the specified TLS handshake was done. - - @param[in] Tls Pointer to the TLS object for handshake state checking. - - @retval TRUE The TLS handshake was done. - @retval FALSE The TLS handshake was not done. - -**/ -BOOLEAN -EFIAPI -TlsInHandshake ( - IN VOID *Tls - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->Ssl == NULL) { - return FALSE; - } - - // - // Return the status which indicates if the TLS handshake was done. - // - return !SSL_is_init_finished (TlsConn->Ssl); -} - -/** - Perform a TLS/SSL handshake. - - This function will perform a TLS/SSL handshake. - - @param[in] Tls Pointer to the TLS object for handshake operation. - @param[in] BufferIn Pointer to the most recently received TLS Handshake packet. - @param[in] BufferInSize Packet size in bytes for the most recently received TLS - Handshake packet. - @param[out] BufferOut Pointer to the buffer to hold the built packet. - @param[in, out] BufferOutSize Pointer to the buffer size in bytes. On input, it is - the buffer size provided by the caller. On output, it - is the buffer size in fact needed to contain the - packet. - - @retval EFI_SUCCESS The required TLS packet is built successfully. - @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: - Tls is NULL. - BufferIn is NULL but BufferInSize is NOT 0. - BufferInSize is 0 but BufferIn is NOT NULL. - BufferOutSize is NULL. - BufferOut is NULL if *BufferOutSize is not zero. - @retval EFI_BUFFER_TOO_SMALL BufferOutSize is too small to hold the response packet. - @retval EFI_ABORTED Something wrong during handshake. - -**/ -EFI_STATUS -EFIAPI -TlsDoHandshake ( - IN VOID *Tls, - IN UINT8 *BufferIn, OPTIONAL - IN UINTN BufferInSize, OPTIONAL - OUT UINT8 *BufferOut, OPTIONAL - IN OUT UINTN *BufferOutSize - ) -{ - TLS_CONNECTION *TlsConn; - UINTN PendingBufferSize; - INTN Ret; - UINTN ErrorCode; - - TlsConn = (TLS_CONNECTION *) Tls; - PendingBufferSize = 0; - Ret = 1; - - if (TlsConn == NULL || \ - TlsConn->Ssl == NULL || TlsConn->InBio == NULL || TlsConn->OutBio == NULL || \ - BufferOutSize == NULL || \ - (BufferIn == NULL && BufferInSize != 0) || \ - (BufferIn != NULL && BufferInSize == 0) || \ - (BufferOut == NULL && *BufferOutSize != 0)) { - return EFI_INVALID_PARAMETER; - } - - if(BufferIn == NULL && BufferInSize == 0) { - // - // If RequestBuffer is NULL and RequestSize is 0, and TLS session - // status is EfiTlsSessionNotStarted, the TLS session will be initiated - // and the response packet needs to be ClientHello. - // - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - if (PendingBufferSize == 0) { - SSL_set_connect_state (TlsConn->Ssl); - Ret = SSL_do_handshake (TlsConn->Ssl); - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - } - } else { - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - if (PendingBufferSize == 0) { - BIO_write (TlsConn->InBio, BufferIn, (UINT32) BufferInSize); - Ret = SSL_do_handshake (TlsConn->Ssl); - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - } - } - - if (Ret < 1) { - Ret = SSL_get_error (TlsConn->Ssl, (int) Ret); - if (Ret == SSL_ERROR_SSL || - Ret == SSL_ERROR_SYSCALL || - Ret == SSL_ERROR_ZERO_RETURN) { - DEBUG (( - DEBUG_ERROR, - "%a SSL_HANDSHAKE_ERROR State=0x%x SSL_ERROR_%a\n", - __FUNCTION__, - SSL_get_state (TlsConn->Ssl), - Ret == SSL_ERROR_SSL ? "SSL" : Ret == SSL_ERROR_SYSCALL ? "SYSCALL" : "ZERO_RETURN" - )); - DEBUG_CODE_BEGIN (); - while (TRUE) { - ErrorCode = ERR_get_error (); - if (ErrorCode == 0) { - break; - } - DEBUG (( - DEBUG_ERROR, - "%a ERROR 0x%x=L%x:F%x:R%x\n", - __FUNCTION__, - ErrorCode, - ERR_GET_LIB (ErrorCode), - ERR_GET_FUNC (ErrorCode), - ERR_GET_REASON (ErrorCode) - )); - } - DEBUG_CODE_END (); - return EFI_ABORTED; - } - } - - if (PendingBufferSize > *BufferOutSize) { - *BufferOutSize = PendingBufferSize; - return EFI_BUFFER_TOO_SMALL; - } - - if (PendingBufferSize > 0) { - *BufferOutSize = BIO_read (TlsConn->OutBio, BufferOut, (UINT32) PendingBufferSize); - } else { - *BufferOutSize = 0; - } - - return EFI_SUCCESS; -} - -/** - Handle Alert message recorded in BufferIn. If BufferIn is NULL and BufferInSize is zero, - TLS session has errors and the response packet needs to be Alert message based on error type. - - @param[in] Tls Pointer to the TLS object for state checking. - @param[in] BufferIn Pointer to the most recently received TLS Alert packet. - @param[in] BufferInSize Packet size in bytes for the most recently received TLS - Alert packet. - @param[out] BufferOut Pointer to the buffer to hold the built packet. - @param[in, out] BufferOutSize Pointer to the buffer size in bytes. On input, it is - the buffer size provided by the caller. On output, it - is the buffer size in fact needed to contain the - packet. - - @retval EFI_SUCCESS The required TLS packet is built successfully. - @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: - Tls is NULL. - BufferIn is NULL but BufferInSize is NOT 0. - BufferInSize is 0 but BufferIn is NOT NULL. - BufferOutSize is NULL. - BufferOut is NULL if *BufferOutSize is not zero. - @retval EFI_ABORTED An error occurred. - @retval EFI_BUFFER_TOO_SMALL BufferOutSize is too small to hold the response packet. - -**/ -EFI_STATUS -EFIAPI -TlsHandleAlert ( - IN VOID *Tls, - IN UINT8 *BufferIn, OPTIONAL - IN UINTN BufferInSize, OPTIONAL - OUT UINT8 *BufferOut, OPTIONAL - IN OUT UINTN *BufferOutSize - ) -{ - TLS_CONNECTION *TlsConn; - UINTN PendingBufferSize; - UINT8 *TempBuffer; - INTN Ret; - - TlsConn = (TLS_CONNECTION *) Tls; - PendingBufferSize = 0; - TempBuffer = NULL; - Ret = 0; - - if (TlsConn == NULL || \ - TlsConn->Ssl == NULL || TlsConn->InBio == NULL || TlsConn->OutBio == NULL || \ - BufferOutSize == NULL || \ - (BufferIn == NULL && BufferInSize != 0) || \ - (BufferIn != NULL && BufferInSize == 0) || \ - (BufferOut == NULL && *BufferOutSize != 0)) { - return EFI_INVALID_PARAMETER; - } - - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - if (PendingBufferSize == 0 && BufferIn != NULL && BufferInSize != 0) { - Ret = BIO_write (TlsConn->InBio, BufferIn, (UINT32) BufferInSize); - if (Ret != (INTN) BufferInSize) { - return EFI_ABORTED; - } - - TempBuffer = (UINT8 *) OPENSSL_malloc (MAX_BUFFER_SIZE); - - // - // ssl3_send_alert() will be called in ssl3_read_bytes() function. - // TempBuffer is invalid since it's a Alert message, so just ignore it. - // - SSL_read (TlsConn->Ssl, TempBuffer, MAX_BUFFER_SIZE); - - OPENSSL_free (TempBuffer); - - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - } - - if (PendingBufferSize > *BufferOutSize) { - *BufferOutSize = PendingBufferSize; - return EFI_BUFFER_TOO_SMALL; - } - - if (PendingBufferSize > 0) { - *BufferOutSize = BIO_read (TlsConn->OutBio, BufferOut, (UINT32) PendingBufferSize); - } else { - *BufferOutSize = 0; - } - - return EFI_SUCCESS; -} - -/** - Build the CloseNotify packet. - - @param[in] Tls Pointer to the TLS object for state checking. - @param[in, out] Buffer Pointer to the buffer to hold the built packet. - @param[in, out] BufferSize Pointer to the buffer size in bytes. On input, it is - the buffer size provided by the caller. On output, it - is the buffer size in fact needed to contain the - packet. - - @retval EFI_SUCCESS The required TLS packet is built successfully. - @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: - Tls is NULL. - BufferSize is NULL. - Buffer is NULL if *BufferSize is not zero. - @retval EFI_BUFFER_TOO_SMALL BufferSize is too small to hold the response packet. - -**/ -EFI_STATUS -EFIAPI -TlsCloseNotify ( - IN VOID *Tls, - IN OUT UINT8 *Buffer, - IN OUT UINTN *BufferSize - ) -{ - TLS_CONNECTION *TlsConn; - UINTN PendingBufferSize; - - TlsConn = (TLS_CONNECTION *) Tls; - PendingBufferSize = 0; - - if (TlsConn == NULL || \ - TlsConn->Ssl == NULL || TlsConn->InBio == NULL || TlsConn->OutBio == NULL || \ - BufferSize == NULL || \ - (Buffer == NULL && *BufferSize != 0)) { - return EFI_INVALID_PARAMETER; - } - - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - if (PendingBufferSize == 0) { - // - // ssl3_send_alert() and ssl3_dispatch_alert() function will be called. - // - SSL_shutdown (TlsConn->Ssl); - PendingBufferSize = (UINTN) BIO_ctrl_pending (TlsConn->OutBio); - } - - if (PendingBufferSize > *BufferSize) { - *BufferSize = PendingBufferSize; - return EFI_BUFFER_TOO_SMALL; - } - - if (PendingBufferSize > 0) { - *BufferSize = BIO_read (TlsConn->OutBio, Buffer, (UINT32) PendingBufferSize); - } else { - *BufferSize = 0; - } - - return EFI_SUCCESS; -} - -/** - Attempts to read bytes from one TLS object and places the data in Buffer. - - This function will attempt to read BufferSize bytes from the TLS object - and places the data in Buffer. - - @param[in] Tls Pointer to the TLS object. - @param[in,out] Buffer Pointer to the buffer to store the data. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The amount of data successfully read from the TLS object. - @retval <=0 No data was successfully read. - -**/ -INTN -EFIAPI -TlsCtrlTrafficOut ( - IN VOID *Tls, - IN OUT VOID *Buffer, - IN UINTN BufferSize - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->OutBio == 0) { - return -1; - } - - // - // Read and return the amount of data from the BIO. - // - return BIO_read (TlsConn->OutBio, Buffer, (UINT32) BufferSize); -} - -/** - Attempts to write data from the buffer to TLS object. - - This function will attempt to write BufferSize bytes data from the Buffer - to the TLS object. - - @param[in] Tls Pointer to the TLS object. - @param[in] Buffer Pointer to the data buffer. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The amount of data successfully written to the TLS object. - @retval <=0 No data was successfully written. - -**/ -INTN -EFIAPI -TlsCtrlTrafficIn ( - IN VOID *Tls, - IN VOID *Buffer, - IN UINTN BufferSize - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->InBio == 0) { - return -1; - } - - // - // Write and return the amount of data to the BIO. - // - return BIO_write (TlsConn->InBio, Buffer, (UINT32) BufferSize); -} -/** - Attempts to read bytes from the specified TLS connection into the buffer. - - This function tries to read BufferSize bytes data from the specified TLS - connection into the Buffer. - - @param[in] Tls Pointer to the TLS connection for data reading. - @param[in,out] Buffer Pointer to the data buffer. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The read operation was successful, and return value is the - number of bytes actually read from the TLS connection. - @retval <=0 The read operation was not successful. - -**/ -INTN -EFIAPI -TlsRead ( - IN VOID *Tls, - IN OUT VOID *Buffer, - IN UINTN BufferSize - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->Ssl == NULL) { - return -1; - } - - // - // Read bytes from the specified TLS connection. - // - return SSL_read (TlsConn->Ssl, Buffer, (UINT32) BufferSize); -} - -/** - Attempts to write data to a TLS connection. - - This function tries to write BufferSize bytes data from the Buffer into the - specified TLS connection. - - @param[in] Tls Pointer to the TLS connection for data writing. - @param[in] Buffer Pointer to the data buffer. - @param[in] BufferSize The size of Buffer in bytes. - - @retval >0 The write operation was successful, and return value is the - number of bytes actually written to the TLS connection. - @retval <=0 The write operation was not successful. - -**/ -INTN -EFIAPI -TlsWrite ( - IN VOID *Tls, - IN VOID *Buffer, - IN UINTN BufferSize - ) -{ - TLS_CONNECTION *TlsConn; - - TlsConn = (TLS_CONNECTION *) Tls; - if (TlsConn == NULL || TlsConn->Ssl == NULL) { - return -1; - } - - // - // Write bytes to the specified TLS connection. - // - return SSL_write (TlsConn->Ssl, Buffer, (UINT32) BufferSize); -} - diff --git a/Core/CryptoPkg/License.txt b/Core/CryptoPkg/License.txt deleted file mode 100644 index be68999be6..0000000000 --- a/Core/CryptoPkg/License.txt +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2012, Intel Corporation. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -* Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -- cgit v1.2.3