[edk2-devel] [PATCH v3 2/3] CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based)

Michael D Kinney michael.d.kinney at intel.com
Wed Jul 15 02:52:55 UTC 2020


Hi Matt,

I think the BaseCryptLib unit tests may need some more work.

1) The DSC file for host based tests is in the wrong directory.
   It should be in CryptoPkg/Test to match the MdePkg, MdeModulePkg
   and UnitTestFrameworkPkg location.

2) CryptoPkg/CryptoPkg.dsc includes a reference to the host based
   library UnitTestHostBaseCryptLib.inf.  This should only be 
   listed in the host based DSC file.

3) CryptoPkg\Library\BaseCryptLib\UnitTestHostBaseCryptLib.inf
   This file appears to only be for host based tests, but it 
   lists compatibility with DXE_DRIVER DXE_CORE UEFI_APPLICATION UEFI_DRIVER
   and does not list HOST_APPLICATION as expected.

4) Why do we need a new lib instance of the BaseCryptLib for
   host based unit testing.  I would think we would want to perform
   unit tests on the BaseCryptLib instances that would actually be 
   used in FW components.  Can we update the unit tests to test
   the services provided in the Base, Pei, Runtime, and Smm 
   instances of the BaseCryptLib?

5) Why do we need a host based specific version of the CrtWrapper, 
   UnitTestHostCrtWrapper.c? 

6) The file CryptoPkg/Test/UnitTest/Librray/BaseCryptLib/TestEKUCerts/
   ChainCreationInstructions.txt makes reference to a bintohex tool
   and putting the results in a file called AllTestSignatures.h.
   But I do not see this file in the patch.  Are these instructions
   out of date?

Thanks,

Mike


> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On
> Behalf Of matthewfcarlson at gmail.com
> Sent: Tuesday, July 14, 2020 11:23 AM
> To: devel at edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang at intel.com>; Lu, XiaoyuX
> <xiaoyux.lu at intel.com>
> Subject: [edk2-devel] [PATCH v3 2/3] CryptoPkg:
> BaseCryptLib: Add unit tests (Host and Shell based)
> 
> From: Matthew Carlson <macarl at microsoft.com>
> 
> This adds a new INF for BaseCryptLib suitable for
> host based environments. It adds a host based unit test
> for
> BaseCryptLib that can also be built as a shell based
> Unit Test.
> 
> Cc: Jian J Wang <jian.j.wang at intel.com>
> Cc: Xiaoyu Lu <xiaoyux.lu at intel.com>
> Signed-off-by: Matthew Carlson
> <matthewfcarlson at gmail.com>
> ---
> 
> CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWr
> apper.c                                |   93 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Authenticod
> eTests.c                               | 1002
> ++++++++++++++++++++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLi
> bUnitTests.c                           |   66 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipher
> Tests.c                                |  293 ++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c
> |  106 +++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HashTests.c
> |  197 ++++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HmacTests.c
> |  184 ++++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncrypt
> Tests.c                                |  308 ++++++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2
> Tests.c                                |   71 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTes
> ts.c                                   |  524 ++++++++++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RandTests.c
> |   51 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7Tes
> ts.c                                   |  415 ++++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaTests.c
> |  310 ++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TSTests.c
> |  335 +++++++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMai
> n.c                                    |   81 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMai
> nBCOP.c                                |   58 ++
>  CryptoPkg/CryptoPkg.ci.yaml
> |    4 +
>  CryptoPkg/CryptoPkg.dsc
> |   26 +
> 
> CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.
> inf                                    |   90 ++
>  CryptoPkg/Test/UnitTest/CryptoPkgHostUnitTest.dsc
> |   35 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTes
> tSignatures.h                          |  789
> +++++++++++++++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCry
> ptLib.h                                |  121 +++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCry
> ptLibHost.inf                          |   46 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCry
> ptLibUefiShell.inf                     |   49 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/ChainCreationInstructions.txt        |   92 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/CreateTestCerts.cmd                  |   11 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/SignFirmwareWithEKUs.cmd             |   76 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/TestEKUParsingIssuingCA.ini          |   45 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/TestEKUParsingLeafSigner.ini         |   25 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/TestEKUParsingLeafSignerPid1.ini     |   24 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/TestEKUParsingLeafSignerPid12345.ini |   27 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/TestEKUParsingNoEKUsInSigner.ini     |   16 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/TestEKUParsingPolicyCA.ini           |   28 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCert
> s/TestEKUParsingRoot.ini               |   28 +
>  34 files changed, 5626 insertions(+)
> 
> diff --git
> a/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrt
> Wrapper.c
> b/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrt
> Wrapper.c
> new file mode 100644
> index 000000000000..a9c288e8f2be
> --- /dev/null
> +++
> b/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrt
> Wrapper.c
> @@ -0,0 +1,93 @@
> +/** @file
> 
> +  C Run-Time Libraries (CRT) Wrapper Implementation for
> OpenSSL-based
> 
> +  Cryptographic Library.
> 
> +
> 
> +Copyright (c) 2009 - 2017, Intel Corporation. All
> rights reserved.<BR>
> 
> +Copyright (c) Microsoft Corporation
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include <stdio.h>
> 
> +
> 
> +#include <Base.h>
> 
> +#include <Library/DebugLib.h>
> 
> +
> 
> +/* Convert character to lowercase */
> 
> +int tolower (int c)
> 
> +{
> 
> +  if (('A' <= (c)) && ((c) <= 'Z')) {
> 
> +    return (c - ('A' - 'a'));
> 
> +  }
> 
> +  return (c);
> 
> +}
> 
> +
> 
> +/* 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;
> 
> +}
> 
> +
> 
> +//
> 
> +//  -- 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;
> 
> +}
> 
> +
> 
> +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 errno = 0;
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Authentic
> odeTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Authentic
> odeTests.c
> new file mode 100644
> index 000000000000..8935f289d87a
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Authentic
> odeTests.c
> @@ -0,0 +1,1002 @@
> +/** @file
> 
> +  Sample Implementation for Microsoft Authenticode
> Verification.
> 
> +
> 
> +Copyright (c) 2009 - 2011, Intel Corporation. All
> rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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
> 
> +  };
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyAuthenticodeVerify (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN  Status;
> 
> +
> 
> +  //
> 
> +  // 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
> 
> +               );
> 
> +    UT_ASSERT_TRUE (Status);
> 
> +  }
> 
> +
> 
> +  if (CompareMem (AuthenticodeWithSha256 + 32,
> &HashOidValue[22], 9) == 0) {
> 
> +    Status = AuthenticodeVerify (
> 
> +               AuthenticodeWithSha256,
> 
> +               sizeof (AuthenticodeWithSha256),
> 
> +               TestRootCert2,
> 
> +               sizeof (TestRootCert2),
> 
> +               PeSha256Hash,
> 
> +               SHA256_DIGEST_SIZE
> 
> +               );
> 
> +    UT_ASSERT_TRUE (Status);
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mAuthenticodeTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> ------Class----------------------Function---------------
> --Pre---Post--Context
> 
> +    //
> 
> +    {"TestVerifyAuthenticodeVerify()",
> "CryptoPkg.BaseCryptLib.Authenticode",
> TestVerifyAuthenticodeVerify,        NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mAuthenticodeTestNum =
> ARRAY_SIZE(mAuthenticodeTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCrypt
> LibUnitTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCrypt
> LibUnitTests.c
> new file mode 100644
> index 000000000000..b7fcea3ff7e4
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCrypt
> LibUnitTests.c
> @@ -0,0 +1,66 @@
> +/** @file
> 
> +  This is defines the tests that will run on
> BaseCryptLib
> 
> +
> 
> +  Copyright (c) Microsoft Corporation.<BR>
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +#include "TestBaseCryptLib.h"
> 
> +
> 
> +SUITE_DESC  mSuiteDesc[] = {
> 
> +    //
> 
> +    // Title--------------------------Package----------
> ---------Sup--Tdn----TestNum------------TestDesc
> 
> +    //
> 
> +    {"EKU verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mPkcs7EkuTestNum,
> mPkcs7EkuTest},
> 
> +    {"HASH verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mHashTestNum,
> mHashTest},
> 
> +    {"HMAC verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mHmacTestNum,
> mHmacTest},
> 
> +    {"BlockCipher verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL,
> &mBlockCipherTestNum,    mBlockCipherTest},
> 
> +    {"RSA verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mRsaTestNum,
> mRsaTest},
> 
> +    {"RSACert verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mRsaCertTestNum,
> mRsaCertTest},
> 
> +    {"PKCS7 verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mPkcs7TestNum,
> mPkcs7Test},
> 
> +    {"PKCS5 verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mPkcs5TestNum,
> mPkcs5Test},
> 
> +    {"Authenticode verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL,
> &mAuthenticodeTestNum,   mAuthenticodeTest},
> 
> +    {"ImageTimestamp verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL,
> &mImageTimestampTestNum, mImageTimestampTest},
> 
> +    {"DH verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mDhTestNum,
> mDhTest},
> 
> +    {"PRNG verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mPrngTestNum,
> mPrngTest},
> 
> +    {"OAEP encrypt verify tests",
> "CryptoPkg.BaseCryptLib", NULL, NULL, &mOaepTestNum,
> mOaepTest},
> 
> +};
> 
> +
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +CreateUnitTest (
> 
> +    IN     CHAR8*                     UnitTestName,
> 
> +    IN     CHAR8*                     UnitTestVersion,
> 
> +    IN OUT UNIT_TEST_FRAMEWORK_HANDLE* Framework
> 
> +) {
> 
> +    EFI_STATUS                  Status;
> 
> +    UINTN                       SuiteIndex;
> 
> +    UINTN                       TestIndex;
> 
> +
> 
> +    if ( Framework == NULL || UnitTestVersion == NULL
> || UnitTestName == NULL) {
> 
> +        return EFI_INVALID_PARAMETER;
> 
> +    }
> 
> +    Status = EFI_SUCCESS;
> 
> +    //
> 
> +    // Start setting up the test framework for running
> the tests.
> 
> +    //
> 
> +    Status = InitUnitTestFramework (Framework,
> UnitTestName, gEfiCallerBaseName, UnitTestVersion);
> 
> +    if (EFI_ERROR (Status)) {
> 
> +        DEBUG((DEBUG_ERROR, "Failed in
> InitUnitTestFramework. Status = %r\n", Status));
> 
> +        goto EXIT;
> 
> +    }
> 
> +
> 
> +    for (SuiteIndex = 0; SuiteIndex <
> ARRAY_SIZE(mSuiteDesc); SuiteIndex++) {
> 
> +        UNIT_TEST_SUITE_HANDLE Suite = NULL;
> 
> +        Status = CreateUnitTestSuite (&Suite,
> *Framework, mSuiteDesc[SuiteIndex].Title,
> mSuiteDesc[SuiteIndex].Package,
> mSuiteDesc[SuiteIndex].Sup, mSuiteDesc[SuiteIndex].Tdn);
> 
> +        if (EFI_ERROR (Status)) {
> 
> +            Status = EFI_OUT_OF_RESOURCES;
> 
> +            goto EXIT;
> 
> +        }
> 
> +        for (TestIndex = 0; TestIndex <
> *mSuiteDesc[SuiteIndex].TestNum; TestIndex++) {
> 
> +            AddTestCase (Suite,
> (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)-
> >Description, (mSuiteDesc[SuiteIndex].TestDesc +
> TestIndex)->ClassName, (mSuiteDesc[SuiteIndex].TestDesc
> + TestIndex)->Func, (mSuiteDesc[SuiteIndex].TestDesc +
> TestIndex)->PreReq, (mSuiteDesc[SuiteIndex].TestDesc +
> TestIndex)->CleanUp, (mSuiteDesc[SuiteIndex].TestDesc +
> TestIndex)->Context);
> 
> +        }
> 
> +    }
> 
> +    EXIT:
> 
> +    return Status;
> 
> +}
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCiph
> erTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCiph
> erTests.c
> new file mode 100644
> index 000000000000..b3493073965f
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCiph
> erTests.c
> @@ -0,0 +1,293 @@
> +/** @file
> 
> +  Application for Block Cipher Primitives Validation.
> 
> +
> 
> +Copyright (c) 2010, Intel Corporation. All rights
> reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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
> 
> +  };
> 
> +
> 
> +
> 
> +typedef
> 
> +UINTN
> 
> +(EFIAPI *EFI_BLOCK_CIPHER_GET_CONTEXT_SIZE) (
> 
> +  VOID
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_BLOCK_CIPHER_INIT) (
> 
> +  OUT  VOID         *BlockCipherContext,
> 
> +  IN   CONST UINT8  *Key,
> 
> +  IN   UINTN        KeyLength
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT) (
> 
> +  IN   VOID         *BlockCipherContext,
> 
> +  IN   CONST UINT8  *Input,
> 
> +  IN   UINTN        InputSize,
> 
> +  OUT  UINT8        *Output
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT) (
> 
> +  IN   VOID         *BlockCipherContext,
> 
> +  IN   CONST UINT8  *Input,
> 
> +  IN   UINTN        InputSize,
> 
> +  IN   CONST UINT8  *Ivec,
> 
> +  OUT  UINT8        *Output
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_BLOCK_CIPHER_RESET) (
> 
> +  IN OUT  VOID  *BlockCipherContext
> 
> +  );
> 
> +
> 
> +typedef struct {
> 
> +  EFI_BLOCK_CIPHER_GET_CONTEXT_SIZE
> GetContextSize;
> 
> +  EFI_BLOCK_CIPHER_INIT                  Init;
> 
> +  EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT   EcbEncrypt;
> 
> +  EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT   EcbDecrypt;
> 
> +  EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT   CbcEncrypt;
> 
> +  EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT   CbcDecrypt;
> 
> +  EFI_BLOCK_CIPHER_RESET                 Reset;
> 
> +  CONST UINT8                            *Key;
> 
> +  UINTN                                  KeySize;
> 
> +  CONST UINT8                            *Ivec;
> 
> +  CONST UINT8                            *Data;
> 
> +  UINTN                                  DataSize;
> 
> +  CONST UINT8                            *Cipher;
> 
> +  UINTN                                  CipherSize;
> 
> +  VOID                                   *Ctx;
> 
> +} BLOCK_CIPHER_TEST_CONTEXT;
> 
> +
> 
> +// These are commented out as they are deprecated, but
> are left in should they be used again
> 
> +//BLOCK_CIPHER_TEST_CONTEXT mTdesEcbTestCtx   =
> {TdesGetContextSize, TdesInit, TdesEcbEncrypt,
> TdesEcbDecrypt, NULL,           NULL,           NULL,
> TdesEcbKey,   64,              NULL,
> TdesEcbData,   8,                     TdesEcbCipher,
> 8};
> 
> +//BLOCK_CIPHER_TEST_CONTEXT mTdesCbcTestCtx   =
> {TdesGetContextSize, TdesInit, NULL,           NULL,
> TdesCbcEncrypt, TdesCbcDecrypt, NULL,      TdesCbcKey,
> 192,             TdesCbcIvec,   TdesCbcData,
> sizeof(TdesCbcData),   TdesCbc3Cipher,
> sizeof(TdesCbc3Cipher)};
> 
> +//BLOCK_CIPHER_TEST_CONTEXT mAes128EcbTestCtx =
> {AesGetContextSize,  AesInit,  AesEcbEncrypt,
> AesEcbDecrypt,  NULL,           NULL,           NULL,
> Aes128EcbKey, 128,             NULL,
> Aes128EcbData, sizeof(Aes128EcbData), Aes128EcbCipher,
> sizeof(Aes128EcbCipher)};
> 
> +//BLOCK_CIPHER_TEST_CONTEXT mAes192EcbTestCtx =
> {AesGetContextSize,  AesInit,  AesEcbEncrypt,
> AesEcbDecrypt,  NULL,           NULL,           NULL,
> Aes192EcbKey, 192,             NULL,
> Aes192EcbData, sizeof(Aes192EcbData), Aes192EcbCipher,
> sizeof(Aes192EcbCipher)};
> 
> +//BLOCK_CIPHER_TEST_CONTEXT mAes256EcbTestCtx =
> {AesGetContextSize,  AesInit,  AesEcbEncrypt,
> AesEcbDecrypt,  NULL,           NULL,           NULL,
> Aes256EcbKey, 256,             NULL,
> Aes256EcbData, sizeof(Aes256EcbData), Aes256EcbCipher,
> sizeof(Aes256EcbCipher)};
> 
> +//BLOCK_CIPHER_TEST_CONTEXT mArc4TestCtx      =
> {Arc4GetContextSize, Arc4Init, Arc4Encrypt,
> (EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT), Arc4Decrypt,
> NULL,           NULL,           Arc4Reset, Arc4Key,
> sizeof(Arc4Key), NULL,          Arc4Data,
> sizeof(Arc4Data),      Arc4Cipher,
> sizeof(Arc4Cipher)};
> 
> +BLOCK_CIPHER_TEST_CONTEXT mAes128CbcTestCtx =
> {AesGetContextSize,  AesInit,  NULL,           NULL,
> AesCbcEncrypt,  AesCbcDecrypt,  NULL,      Aes128CbcKey,
> 128,             Aes128CbcIvec, Aes128CbcData,
> sizeof(Aes128CbcData), Aes128CbcCipher,
> sizeof(Aes128CbcCipher)};
> 
> +
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyBLockCiperPreReq (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BLOCK_CIPHER_TEST_CONTEXT *TestContext;
> 
> +  UINTN             CtxSize;
> 
> +
> 
> +  TestContext = Context;
> 
> +  CtxSize = TestContext->GetContextSize ();
> 
> +  TestContext->Ctx = AllocatePool (CtxSize);
> 
> +  if (TestContext->Ctx == NULL) {
> 
> +    return UNIT_TEST_ERROR_TEST_FAILED;
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +VOID
> 
> +EFIAPI
> 
> +TestVerifyBLockCiperCleanUp (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BLOCK_CIPHER_TEST_CONTEXT *TestContext;
> 
> +
> 
> +  TestContext = Context;
> 
> +  if (TestContext->Ctx != NULL) {
> 
> +    FreePool (TestContext->Ctx);
> 
> +  }
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyBLockCiper (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  UINT8    Encrypt[256];
> 
> +  UINT8    Decrypt[256];
> 
> +  BOOLEAN  Status;
> 
> +  BLOCK_CIPHER_TEST_CONTEXT *TestContext;
> 
> +
> 
> +  TestContext = Context;
> 
> +
> 
> +  ZeroMem (Encrypt, sizeof (Encrypt));
> 
> +  ZeroMem (Decrypt, sizeof (Decrypt));
> 
> +
> 
> +  Status = TestContext->Init (TestContext->Ctx,
> TestContext->Key, TestContext->KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  if (TestContext->Ivec == NULL) {
> 
> +    Status = TestContext->EcbEncrypt (TestContext->Ctx,
> TestContext->Data, TestContext->DataSize, Encrypt);
> 
> +    UT_ASSERT_TRUE (Status);
> 
> +
> 
> +    if (TestContext->Reset != NULL) {
> 
> +      Status = TestContext->Reset (TestContext->Ctx);
> 
> +      UT_ASSERT_TRUE (Status);
> 
> +    }
> 
> +
> 
> +    Status = TestContext->EcbDecrypt (TestContext->Ctx,
> Encrypt, TestContext->DataSize, Decrypt);
> 
> +    UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  } else {
> 
> +    Status = TestContext->CbcEncrypt (TestContext->Ctx,
> TestContext->Data, TestContext->DataSize, TestContext-
> >Ivec, Encrypt);
> 
> +    UT_ASSERT_TRUE (Status);
> 
> +
> 
> +    if (TestContext->Reset != NULL) {
> 
> +      Status = TestContext->Reset (TestContext->Ctx);
> 
> +      UT_ASSERT_TRUE (Status);
> 
> +    }
> 
> +
> 
> +    Status = TestContext->CbcDecrypt (TestContext->Ctx,
> Encrypt, TestContext->DataSize, TestContext->Ivec,
> Decrypt);
> 
> +    UT_ASSERT_TRUE (Status);
> 
> +  }
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (Encrypt, TestContext->Cipher,
> TestContext->CipherSize);
> 
> +  UT_ASSERT_MEM_EQUAL (Decrypt, TestContext->Data,
> TestContext->DataSize);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mBlockCipherTest[] = {
> 
> +    //
> 
> +    // -----Description-------------------------Class--
> -----------------------Function---------------Pre-------
> --------------------Post------------------Context
> 
> +    //
> 
> +    {"TestVerifyAes128Cbc()",
> "CryptoPkg.BaseCryptLib.BlockCipher",
> TestVerifyBLockCiper, TestVerifyBLockCiperPreReq,
> TestVerifyBLockCiperCleanUp, &mAes128CbcTestCtx},
> 
> +    // These are commented out as these functions have
> been deprecated, but they have been left in for future
> reference
> 
> +    //{"TestVerifyTdesEcb()",
> "CryptoPkg.BaseCryptLib.BlockCipher",
> TestVerifyBLockCiper, TestVerifyBLockCiperPreReq,
> TestVerifyBLockCiperCleanUp, &mTdesEcbTestCtx},
> 
> +    //{"TestVerifyTdesCbc()",
> "CryptoPkg.BaseCryptLib.BlockCipher",
> TestVerifyBLockCiper, TestVerifyBLockCiperPreReq,
> TestVerifyBLockCiperCleanUp, &mTdesCbcTestCtx},
> 
> +    //{"TestVerifyAes128Ecb()",
> "CryptoPkg.BaseCryptLib.BlockCipher",
> TestVerifyBLockCiper, TestVerifyBLockCiperPreReq,
> TestVerifyBLockCiperCleanUp, &mAes128EcbTestCtx},
> 
> +    //{"TestVerifyAes192Ecb()",
> "CryptoPkg.BaseCryptLib.BlockCipher",
> TestVerifyBLockCiper, TestVerifyBLockCiperPreReq,
> TestVerifyBLockCiperCleanUp, &mAes192EcbTestCtx},
> 
> +    //{"TestVerifyAes256Ecb()",
> "CryptoPkg.BaseCryptLib.BlockCipher",
> TestVerifyBLockCiper, TestVerifyBLockCiperPreReq,
> TestVerifyBLockCiperCleanUp, &mAes256EcbTestCtx},
> 
> +    //{"TestVerifyArc4()",
> "CryptoPkg.BaseCryptLib.BlockCipher",
> TestVerifyBLockCiper, TestVerifyBLockCiperPreReq,
> TestVerifyBLockCiperCleanUp, &mArc4TestCtx},
> 
> +};
> 
> +
> 
> +UINTN mBlockCipherTestNum =
> ARRAY_SIZE(mBlockCipherTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c
> new file mode 100644
> index 000000000000..422b990f2c2d
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c
> @@ -0,0 +1,106 @@
> +/** @file
> 
> +  Application for Diffie-Hellman Primitives Validation.
> 
> +
> 
> +Copyright (c) 2010 - 2014, Intel Corporation. All
> rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.h"
> 
> +
> 
> +VOID    *mDh1;
> 
> +VOID    *mDh2;
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyDhPreReq (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  mDh1 = DhNew ();
> 
> +  if (mDh1 == NULL) {
> 
> +    return UNIT_TEST_ERROR_TEST_FAILED;
> 
> +  }
> 
> +
> 
> +  mDh2 = DhNew ();
> 
> +  if (mDh2 == NULL) {
> 
> +    return UNIT_TEST_ERROR_TEST_FAILED;
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +VOID
> 
> +EFIAPI
> 
> +TestVerifyDhCleanUp (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  if (mDh1 != NULL) {
> 
> +    DhFree (mDh1);
> 
> +    mDh1 = NULL;
> 
> +  }
> 
> +  if (mDh2 != NULL) {
> 
> +    DhFree (mDh2);
> 
> +    mDh2 = NULL;
> 
> +  }
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyDhGenerateKey (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  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;
> 
> +
> 
> +  //
> 
> +  // Initialize Key Length
> 
> +  //
> 
> +  PublicKey1Length = sizeof (PublicKey1);
> 
> +  PublicKey2Length = sizeof (PublicKey2);
> 
> +  Key1Length       = sizeof (Key1);
> 
> +  Key2Length       = sizeof (Key2);
> 
> +
> 
> +  Status = DhGenerateParameter (mDh1, 2, 64, Prime);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = DhSetParameter (mDh2, 2, 64, Prime);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = DhGenerateKey (mDh1, PublicKey1,
> &PublicKey1Length);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = DhGenerateKey (mDh2, PublicKey2,
> &PublicKey2Length);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = DhComputeKey (mDh1, PublicKey2,
> PublicKey2Length, Key1, &Key1Length);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = DhComputeKey (mDh2, PublicKey1,
> PublicKey1Length, Key2, &Key2Length);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  UT_ASSERT_EQUAL (Key1Length, Key2Length);
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (Key1, Key2, Key1Length);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mDhTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> Class---------------------Function----------------Pre---
> --------------Post------------Context
> 
> +    //
> 
> +    {"TestVerifyDhGenerateKey()",
> "CryptoPkg.BaseCryptLib.Dh",   TestVerifyDhGenerateKey,
> TestVerifyDhPreReq, TestVerifyDhCleanUp, NULL},
> 
> +};
> 
> +
> 
> +UINTN mDhTestNum = ARRAY_SIZE(mDhTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HashTests
> .c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HashTests
> .c
> new file mode 100644
> index 000000000000..bc47c5736246
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HashTests
> .c
> @@ -0,0 +1,197 @@
> +/** @file
> 
> +  Application for Hash Primitives Validation.
> 
> +
> 
> +Copyright (c) 2010 - 2016, Intel Corporation. All
> rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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 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
> 
> +  };
> 
> +
> 
> +typedef
> 
> +UINTN
> 
> +(EFIAPI *EFI_HASH_GET_CONTEXT_SIZE) (
> 
> +  VOID
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_HASH_INIT) (
> 
> +  OUT  VOID  *HashContext
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_HASH_UPDATE) (
> 
> +  IN OUT  VOID        *HashContext,
> 
> +  IN      CONST VOID  *Data,
> 
> +  IN      UINTN       DataSize
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_HASH_FINAL) (
> 
> +  IN OUT  VOID   *HashContext,
> 
> +  OUT     UINT8  *HashValue
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_HASH_ALL) (
> 
> +  IN   CONST VOID  *Data,
> 
> +  IN   UINTN       DataSize,
> 
> +  OUT  UINT8       *HashValue
> 
> +  );
> 
> +
> 
> +typedef struct {
> 
> +  UINT32                     DigestSize;
> 
> +  EFI_HASH_GET_CONTEXT_SIZE  GetContextSize;
> 
> +  EFI_HASH_INIT              HashInit;
> 
> +  EFI_HASH_UPDATE            HashUpdate;
> 
> +  EFI_HASH_FINAL             HashFinal;
> 
> +  EFI_HASH_ALL               HashAll;
> 
> +  CONST UINT8                *Digest;
> 
> +  VOID                       *HashCtx;
> 
> +} HASH_TEST_CONTEXT;
> 
> +
> 
> +HASH_TEST_CONTEXT       mMd5TestCtx    =
> {MD5_DIGEST_SIZE,    Md5GetContextSize,    Md5Init,
> Md5Update,    Md5Final,    Md5HashAll,    Md5Digest};
> 
> +HASH_TEST_CONTEXT       mSha1TestCtx   =
> {SHA1_DIGEST_SIZE,   Sha1GetContextSize,   Sha1Init,
> Sha1Update,   Sha1Final,   Sha1HashAll,   Sha1Digest};
> 
> +HASH_TEST_CONTEXT       mSha256TestCtx =
> {SHA256_DIGEST_SIZE, Sha256GetContextSize, Sha256Init,
> Sha256Update, Sha256Final, Sha256HashAll, Sha256Digest};
> 
> +HASH_TEST_CONTEXT       mSha384TestCtx =
> {SHA384_DIGEST_SIZE, Sha384GetContextSize, Sha384Init,
> Sha384Update, Sha384Final, Sha384HashAll, Sha384Digest};
> 
> +HASH_TEST_CONTEXT       mSha512TestCtx =
> {SHA512_DIGEST_SIZE, Sha512GetContextSize, Sha512Init,
> Sha512Update, Sha512Final, Sha512HashAll, Sha512Digest};
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyHashPreReq (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  HASH_TEST_CONTEXT *HashTestContext;
> 
> +  UINTN             CtxSize;
> 
> +
> 
> +  HashTestContext = Context;
> 
> +  CtxSize = HashTestContext->GetContextSize ();
> 
> +  HashTestContext->HashCtx = AllocatePool (CtxSize);
> 
> +  if (HashTestContext->HashCtx == NULL) {
> 
> +    return UNIT_TEST_ERROR_TEST_FAILED;
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +VOID
> 
> +EFIAPI
> 
> +TestVerifyHashCleanUp (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  HASH_TEST_CONTEXT *HashTestContext;
> 
> +
> 
> +  HashTestContext = Context;
> 
> +  if (HashTestContext->HashCtx != NULL) {
> 
> +    FreePool (HashTestContext->HashCtx);
> 
> +  }
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyHash (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  UINTN    DataSize;
> 
> +  UINT8    Digest[MAX_DIGEST_SIZE];
> 
> +  BOOLEAN  Status;
> 
> +  HASH_TEST_CONTEXT *HashTestContext;
> 
> +
> 
> +  HashTestContext = Context;
> 
> +
> 
> +  DataSize = AsciiStrLen (HashData);
> 
> +
> 
> +  ZeroMem (Digest, MAX_DIGEST_SIZE);
> 
> +
> 
> +  Status  = HashTestContext->HashInit (HashTestContext-
> >HashCtx);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status  = HashTestContext->HashUpdate
> (HashTestContext->HashCtx, HashData, DataSize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status  = HashTestContext->HashFinal
> (HashTestContext->HashCtx, Digest);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (Digest, HashTestContext->Digest,
> HashTestContext->DigestSize);
> 
> +
> 
> +  ZeroMem (Digest, MAX_DIGEST_SIZE);
> 
> +  Status  = HashTestContext->HashAll (HashData,
> DataSize, Digest);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (Digest, HashTestContext->Digest,
> HashTestContext->DigestSize);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mHashTest[] = {
> 
> +    //
> 
> +    // -----Description----------------Class-----------
> ----------Function---------------Pre------------------
> Post------------Context
> 
> +    //
> 
> +    {"TestVerifyMd5()",
> "CryptoPkg.BaseCryptLib.Hash",   TestVerifyHash,
> TestVerifyHashPreReq, TestVerifyHashCleanUp,
> &mMd5TestCtx},
> 
> +    {"TestVerifySha1()",
> "CryptoPkg.BaseCryptLib.Hash",   TestVerifyHash,
> TestVerifyHashPreReq, TestVerifyHashCleanUp,
> &mSha1TestCtx},
> 
> +    {"TestVerifySha256()",
> "CryptoPkg.BaseCryptLib.Hash",   TestVerifyHash,
> TestVerifyHashPreReq, TestVerifyHashCleanUp,
> &mSha256TestCtx},
> 
> +    {"TestVerifySha384()",
> "CryptoPkg.BaseCryptLib.Hash",   TestVerifyHash,
> TestVerifyHashPreReq, TestVerifyHashCleanUp,
> &mSha384TestCtx},
> 
> +    {"TestVerifySha512()",
> "CryptoPkg.BaseCryptLib.Hash",   TestVerifyHash,
> TestVerifyHashPreReq, TestVerifyHashCleanUp,
> &mSha512TestCtx},
> 
> +};
> 
> +
> 
> +UINTN mHashTestNum = ARRAY_SIZE(mHashTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HmacTests
> .c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HmacTests
> .c
> new file mode 100644
> index 000000000000..2e0cdd7c4570
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HmacTests
> .c
> @@ -0,0 +1,184 @@
> +/** @file
> 
> +  Application for HMAC Primitives Validation.
> 
> +
> 
> +Copyright (c) 2010 - 2016, Intel Corporation. All
> rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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
> 
> +  };
> 
> +
> 
> +typedef
> 
> +VOID*
> 
> +(EFIAPI *EFI_HMAC_NEW) (
> 
> +  VOID
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_HMAC_INIT) (
> 
> +  IN OUT  VOID        *HashContext,
> 
> +  IN   CONST UINT8    *Key,
> 
> +  IN   UINTN           KeySize
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_HMAC_UPDATE) (
> 
> +  IN OUT  VOID        *HashContext,
> 
> +  IN      CONST VOID  *Data,
> 
> +  IN      UINTN       DataSize
> 
> +  );
> 
> +
> 
> +typedef
> 
> +BOOLEAN
> 
> +(EFIAPI *EFI_HMAC_FINAL) (
> 
> +  IN OUT  VOID   *HashContext,
> 
> +  OUT     UINT8  *HashValue
> 
> +  );
> 
> +
> 
> +typedef struct {
> 
> +  UINT32                     DigestSize;
> 
> +  EFI_HMAC_NEW               HmacNew;
> 
> +  EFI_HMAC_INIT              HmacInit;
> 
> +  EFI_HMAC_UPDATE            HmacUpdate;
> 
> +  EFI_HMAC_FINAL             HmacFinal;
> 
> +  CONST UINT8                *Key;
> 
> +  UINTN                      KeySize;
> 
> +  CONST UINT8                *Digest;
> 
> +  VOID                       *HmacCtx;
> 
> +} HMAC_TEST_CONTEXT;
> 
> +
> 
> +// These functions have been deprecated but they've
> been left commented out for future reference
> 
> +//HMAC_TEST_CONTEXT       mHmacMd5TestCtx    =
> {MD5_DIGEST_SIZE,    HmacMd5New,    HmacMd5SetKey,
> HmacMd5Update,    HmacMd5Final,    HmacMd5Key,
> sizeof(HmacMd5Key),    HmacMd5Digest};
> 
> +//HMAC_TEST_CONTEXT       mHmacSha1TestCtx   =
> {SHA1_DIGEST_SIZE,   HmacSha1New,   HmacSha1SetKey,
> HmacSha1Update,   HmacSha1Final,   HmacSha1Key,
> sizeof(HmacSha1Key),   HmacSha1Digest};
> 
> +HMAC_TEST_CONTEXT       mHmacSha256TestCtx =
> {SHA256_DIGEST_SIZE, HmacSha256New, HmacSha256SetKey,
> HmacSha256Update, HmacSha256Final, HmacSha256Key,
> sizeof(HmacSha256Key), HmacSha256Digest};
> 
> +
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyHmacPreReq (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  HMAC_TEST_CONTEXT *HmacTestContext;
> 
> +
> 
> +  HmacTestContext = Context;
> 
> +  HmacTestContext->HmacCtx = HmacTestContext-
> >HmacNew();
> 
> +  if (HmacTestContext->HmacCtx == NULL) {
> 
> +    return UNIT_TEST_ERROR_TEST_FAILED;
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +VOID
> 
> +EFIAPI
> 
> +TestVerifyHmacCleanUp (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  HMAC_TEST_CONTEXT *HmacTestContext;
> 
> +
> 
> +  HmacTestContext = Context;
> 
> +  if (HmacTestContext->HmacCtx != NULL) {
> 
> +    FreePool (HmacTestContext->HmacCtx);
> 
> +  }
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyHmac (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  UINT8    Digest[MAX_DIGEST_SIZE];
> 
> +  BOOLEAN  Status;
> 
> +  HMAC_TEST_CONTEXT *HmacTestContext;
> 
> +
> 
> +  HmacTestContext = Context;
> 
> +
> 
> +  ZeroMem (Digest, MAX_DIGEST_SIZE);
> 
> +
> 
> +  Status  = HmacTestContext->HmacInit (HmacTestContext-
> >HmacCtx, HmacTestContext->Key, HmacTestContext-
> >KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status  = HmacTestContext->HmacUpdate
> (HmacTestContext->HmacCtx, HmacData, 8);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status  = HmacTestContext->HmacFinal
> (HmacTestContext->HmacCtx, Digest);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (Digest, HmacTestContext->Digest,
> HmacTestContext->DigestSize);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mHmacTest[] = {
> 
> +    //
> 
> +    // -----Description---------------------Class------
> ---------------Function---------------Pre---------------
> ---Post------------Context
> 
> +    //
> 
> +    {"TestVerifyHmacSha256()",
> "CryptoPkg.BaseCryptLib.Hmac",   TestVerifyHmac,
> TestVerifyHmacPreReq, TestVerifyHmacCleanUp,
> &mHmacSha256TestCtx},
> 
> +    // These functions have been deprecated but they've
> been left commented out for future reference
> 
> +    //{"TestVerifyHmacMd5()",
> "CryptoPkg.BaseCryptLib.Hmac",   TestVerifyHmac,
> TestVerifyHmacPreReq, TestVerifyHmacCleanUp,
> &mHmacMd5TestCtx},
> 
> +    //{"TestVerifyHmacSha1()",
> "CryptoPkg.BaseCryptLib.Hmac",   TestVerifyHmac,
> TestVerifyHmacPreReq, TestVerifyHmacCleanUp,
> &mHmacSha1TestCtx},
> 
> +
> 
> +};
> 
> +
> 
> +UINTN mHmacTestNum = ARRAY_SIZE(mHmacTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncry
> ptTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncry
> ptTests.c
> new file mode 100644
> index 000000000000..404020f96726
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncry
> ptTests.c
> @@ -0,0 +1,308 @@
> +/** @file
> 
> +  This is a unit test for RSA OAEP encrypt.
> 
> +
> 
> +  Copyright (c) 2019, Intel Corporation. All rights
> reserved.<BR>
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.h"
> 
> +
> 
> +CONST  UINT8  RandSeed[] = "This is the random seed for
> PRNG verification.";
> 
> +
> 
> +//
> 
> +// Self signed X509 certificate
> 
> +// CN = ca.self
> 
> +// O = Intel
> 
> +//
> 
> +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8
> SelfTestCert[] = {
> 
> +  0x30, 0x82, 0x03, 0x90, 0x30, 0x82, 0x02, 0x78, 0x02,
> 0x09, 0x00, 0xE4, 0xDF, 0x47, 0x80, 0xEF,
> 
> +  0x4B, 0x3C, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86,
> 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B,
> 
> +  0x05, 0x00, 0x30, 0x81, 0x89, 0x31, 0x0B, 0x30, 0x09,
> 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
> 
> +  0x43, 0x4E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55,
> 0x04, 0x08, 0x0C, 0x08, 0x53, 0x68, 0x61,
> 
> +  0x6E, 0x67, 0x48, 0x61, 0x69, 0x31, 0x11, 0x30, 0x0F,
> 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x08,
> 
> +  0x53, 0x68, 0x61, 0x6E, 0x67, 0x48, 0x61, 0x69, 0x31,
> 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04,
> 
> +  0x0A, 0x0C, 0x05, 0x49, 0x6E, 0x74, 0x65, 0x6C, 0x31,
> 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55, 0x04,
> 
> +  0x0B, 0x0C, 0x03, 0x46, 0x49, 0x45, 0x31, 0x10, 0x30,
> 0x0E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x07, 0x63, 0x61, 0x2E, 0x73, 0x65, 0x6C, 0x66, 0x31,
> 0x24, 0x30, 0x22, 0x06, 0x09, 0x2A, 0x86,
> 
> +  0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x15,
> 0x7A, 0x68, 0x69, 0x63, 0x68, 0x61, 0x6F,
> 
> +  0x2E, 0x67, 0x61, 0x6F, 0x40, 0x69, 0x6E, 0x74, 0x65,
> 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x1E,
> 
> +  0x17, 0x0D, 0x31, 0x39, 0x30, 0x33, 0x32, 0x37, 0x30,
> 0x35, 0x35, 0x37, 0x30, 0x39, 0x5A, 0x17,
> 
> +  0x0D, 0x32, 0x30, 0x30, 0x33, 0x32, 0x36, 0x30, 0x35,
> 0x35, 0x37, 0x30, 0x39, 0x5A, 0x30, 0x81,
> 
> +  0x89, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
> 0x06, 0x13, 0x02, 0x43, 0x4E, 0x31, 0x11,
> 
> +  0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x08,
> 0x53, 0x68, 0x61, 0x6E, 0x67, 0x48, 0x61,
> 
> +  0x69, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04,
> 0x07, 0x0C, 0x08, 0x53, 0x68, 0x61, 0x6E,
> 
> +  0x67, 0x48, 0x61, 0x69, 0x31, 0x0E, 0x30, 0x0C, 0x06,
> 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x05, 0x49,
> 
> +  0x6E, 0x74, 0x65, 0x6C, 0x31, 0x0C, 0x30, 0x0A, 0x06,
> 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x03, 0x46,
> 
> +  0x49, 0x45, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55,
> 0x04, 0x03, 0x0C, 0x07, 0x63, 0x61, 0x2E,
> 
> +  0x73, 0x65, 0x6C, 0x66, 0x31, 0x24, 0x30, 0x22, 0x06,
> 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
> 
> +  0x01, 0x09, 0x01, 0x16, 0x15, 0x7A, 0x68, 0x69, 0x63,
> 0x68, 0x61, 0x6F, 0x2E, 0x67, 0x61, 0x6F,
> 
> +  0x40, 0x69, 0x6E, 0x74, 0x65, 0x6C, 0x2E, 0x63, 0x6F,
> 0x6D, 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, 0xE4, 0x67, 0xDC, 0xC7,
> 
> +  0xEA, 0x6F, 0x8A, 0xA7, 0xCC, 0xB2, 0x54, 0x47, 0x48,
> 0x6A, 0xE2, 0x39, 0xFF, 0xC2, 0x48, 0x58,
> 
> +  0x34, 0x07, 0x03, 0x6D, 0x39, 0xB3, 0x67, 0x46, 0x4C,
> 0xBC, 0xA0, 0xFA, 0x4E, 0x64, 0x23, 0x56,
> 
> +  0x47, 0x7B, 0xC9, 0x1A, 0x2A, 0x55, 0x42, 0x54, 0x10,
> 0x18, 0x30, 0x92, 0x60, 0x30, 0x5B, 0x9E,
> 
> +  0xC0, 0x65, 0xD2, 0xD4, 0x05, 0x4A, 0xA6, 0x10, 0x66,
> 0x04, 0xA9, 0x54, 0x4E, 0xEE, 0x49, 0x39,
> 
> +  0x43, 0x65, 0x1E, 0x2E, 0x28, 0xDE, 0x79, 0x24, 0xA9,
> 0x7E, 0xD8, 0x5B, 0xBC, 0x2F, 0x46, 0x6A,
> 
> +  0xB7, 0xB6, 0x0D, 0x17, 0x88, 0x37, 0x52, 0x5C, 0xFE,
> 0x93, 0xC0, 0xE2, 0xFD, 0x6A, 0x08, 0x1B,
> 
> +  0xFB, 0xD1, 0x87, 0xBD, 0xBD, 0x58, 0x57, 0x2C, 0x06,
> 0x5D, 0xD2, 0x7D, 0x52, 0xE2, 0x49, 0x8E,
> 
> +  0xDC, 0xE5, 0x26, 0xBD, 0x92, 0x60, 0xB0, 0x3F, 0x58,
> 0x5E, 0x52, 0xD7, 0x91, 0xDA, 0x93, 0x62,
> 
> +  0x8D, 0x71, 0x80, 0x53, 0xBA, 0x15, 0xC4, 0x1F, 0xF3,
> 0xBD, 0xE0, 0xC5, 0xA4, 0xB8, 0xD3, 0x64,
> 
> +  0x12, 0x14, 0x1B, 0x11, 0x6B, 0x7B, 0xC2, 0x92, 0xC7,
> 0xE2, 0x94, 0x0B, 0xB8, 0x67, 0x38, 0x48,
> 
> +  0x63, 0x11, 0x74, 0x25, 0x7C, 0x37, 0xC3, 0xB2, 0xAE,
> 0xD9, 0xA7, 0x17, 0x9C, 0x4B, 0x9D, 0x6C,
> 
> +  0x27, 0xB0, 0x87, 0x16, 0x6B, 0xF2, 0x96, 0xE5, 0x1D,
> 0x37, 0x27, 0xDE, 0xF2, 0x98, 0xB7, 0x81,
> 
> +  0x08, 0xD9, 0x7A, 0xBA, 0x84, 0x14, 0x61, 0x60, 0x48,
> 0xCE, 0xCE, 0x51, 0x73, 0xF4, 0xDB, 0xF1,
> 
> +  0x5F, 0x7A, 0x17, 0x71, 0x4F, 0xC1, 0x0B, 0xCE, 0xC7,
> 0x31, 0xC1, 0x4E, 0xA3, 0xEE, 0x6F, 0x72,
> 
> +  0x97, 0x90, 0xFB, 0x8B, 0x54, 0x9F, 0x82, 0x5B, 0x48,
> 0x5A, 0xF1, 0xAD, 0x8B, 0x3A, 0xCD, 0xCA,
> 
> +  0xB2, 0x8B, 0x7A, 0x53, 0xD4, 0xF7, 0x71, 0x16, 0x75,
> 0xA7, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01,
> 
> +  0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
> 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03,
> 
> +  0x82, 0x01, 0x01, 0x00, 0x78, 0x64, 0xCD, 0x6F, 0xC0,
> 0xF9, 0xE7, 0xAB, 0x19, 0x0B, 0xA4, 0x92,
> 
> +  0x88, 0xD7, 0xE3, 0xC4, 0x9C, 0xCF, 0xF2, 0x49, 0xFC,
> 0xCE, 0x8C, 0xEC, 0x33, 0x3F, 0x24, 0x6F,
> 
> +  0xF7, 0xBC, 0x7C, 0x28, 0xEF, 0xAE, 0xAB, 0x7B, 0xAF,
> 0x84, 0xE3, 0x4E, 0x38, 0xAB, 0x66, 0x20,
> 
> +  0x7C, 0xB9, 0xE0, 0x37, 0xFD, 0x84, 0x28, 0x3C, 0xEE,
> 0x35, 0xC4, 0x75, 0x04, 0x43, 0xCA, 0x4F,
> 
> +  0x36, 0x60, 0xC4, 0x06, 0x16, 0x54, 0x3C, 0xF9, 0x47,
> 0x78, 0xBD, 0xE9, 0x7F, 0xF1, 0xE3, 0x0B,
> 
> +  0xC7, 0x7E, 0x30, 0xA4, 0xCB, 0x3A, 0xC7, 0xCD, 0x50,
> 0x9A, 0x6C, 0xC1, 0xE3, 0xF8, 0xF8, 0x16,
> 
> +  0xAA, 0x67, 0x7F, 0x92, 0xEE, 0x1D, 0x47, 0xF2, 0x96,
> 0xDF, 0xD7, 0x43, 0x64, 0x78, 0xA7, 0xD9,
> 
> +  0xF6, 0xA1, 0xD9, 0xEB, 0x5B, 0x2E, 0xC6, 0x9E, 0xEA,
> 0xD5, 0x04, 0x52, 0xA4, 0x73, 0x97, 0xC8,
> 
> +  0xB3, 0xFD, 0xE1, 0x7E, 0xB1, 0xA4, 0x3F, 0xF4, 0x56,
> 0x66, 0x8E, 0x6B, 0xBC, 0xD8, 0xF0, 0x7C,
> 
> +  0xBF, 0x58, 0xA4, 0xE0, 0x45, 0xDC, 0x2B, 0x0B, 0x2C,
> 0x40, 0x52, 0x4D, 0x4B, 0xA9, 0x8A, 0x77,
> 
> +  0x87, 0x31, 0xF8, 0x45, 0xD9, 0x60, 0xBB, 0xAD, 0x28,
> 0x29, 0x14, 0x0D, 0x0D, 0x8F, 0x0F, 0x34,
> 
> +  0x76, 0x88, 0xF3, 0x5A, 0x65, 0x00, 0x54, 0x22, 0x35,
> 0xBF, 0x3A, 0x2B, 0xE9, 0xB0, 0x24, 0xE5,
> 
> +  0xBE, 0xDF, 0x08, 0xA0, 0x02, 0xB2, 0x81, 0x01, 0xE8,
> 0x14, 0xBE, 0x6E, 0x7E, 0xBD, 0x60, 0x0C,
> 
> +  0x4A, 0xD8, 0x57, 0xA4, 0x50, 0xD3, 0xD0, 0x59, 0xCE,
> 0x57, 0x27, 0xE9, 0xA6, 0x16, 0x15, 0x5F,
> 
> +  0xF2, 0x6C, 0xCC, 0x57, 0x36, 0x20, 0x06, 0xE6, 0xA7,
> 0x24, 0x22, 0xB0, 0xB1, 0xC4, 0xBC, 0x2C,
> 
> +  0x5C, 0xCE, 0x92, 0x11, 0xFF, 0x6F, 0x8C, 0x14, 0x7E,
> 0xC4, 0x10, 0x02, 0xF6, 0x69, 0x86, 0x6D,
> 
> +  0x5B, 0x64, 0x81, 0x13,
> 
> +  };
> 
> +
> 
> +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 PrivateKey[]
> = {
> 
> +  0x30, 0x82, 0x04, 0xA4, 0x02, 0x01, 0x00, 0x02, 0x82,
> 0x01, 0x01, 0x00, 0xBC, 0xE4, 0x67, 0xDC,
> 
> +  0xC7, 0xEA, 0x6F, 0x8A, 0xA7, 0xCC, 0xB2, 0x54, 0x47,
> 0x48, 0x6A, 0xE2, 0x39, 0xFF, 0xC2, 0x48,
> 
> +  0x58, 0x34, 0x07, 0x03, 0x6D, 0x39, 0xB3, 0x67, 0x46,
> 0x4C, 0xBC, 0xA0, 0xFA, 0x4E, 0x64, 0x23,
> 
> +  0x56, 0x47, 0x7B, 0xC9, 0x1A, 0x2A, 0x55, 0x42, 0x54,
> 0x10, 0x18, 0x30, 0x92, 0x60, 0x30, 0x5B,
> 
> +  0x9E, 0xC0, 0x65, 0xD2, 0xD4, 0x05, 0x4A, 0xA6, 0x10,
> 0x66, 0x04, 0xA9, 0x54, 0x4E, 0xEE, 0x49,
> 
> +  0x39, 0x43, 0x65, 0x1E, 0x2E, 0x28, 0xDE, 0x79, 0x24,
> 0xA9, 0x7E, 0xD8, 0x5B, 0xBC, 0x2F, 0x46,
> 
> +  0x6A, 0xB7, 0xB6, 0x0D, 0x17, 0x88, 0x37, 0x52, 0x5C,
> 0xFE, 0x93, 0xC0, 0xE2, 0xFD, 0x6A, 0x08,
> 
> +  0x1B, 0xFB, 0xD1, 0x87, 0xBD, 0xBD, 0x58, 0x57, 0x2C,
> 0x06, 0x5D, 0xD2, 0x7D, 0x52, 0xE2, 0x49,
> 
> +  0x8E, 0xDC, 0xE5, 0x26, 0xBD, 0x92, 0x60, 0xB0, 0x3F,
> 0x58, 0x5E, 0x52, 0xD7, 0x91, 0xDA, 0x93,
> 
> +  0x62, 0x8D, 0x71, 0x80, 0x53, 0xBA, 0x15, 0xC4, 0x1F,
> 0xF3, 0xBD, 0xE0, 0xC5, 0xA4, 0xB8, 0xD3,
> 
> +  0x64, 0x12, 0x14, 0x1B, 0x11, 0x6B, 0x7B, 0xC2, 0x92,
> 0xC7, 0xE2, 0x94, 0x0B, 0xB8, 0x67, 0x38,
> 
> +  0x48, 0x63, 0x11, 0x74, 0x25, 0x7C, 0x37, 0xC3, 0xB2,
> 0xAE, 0xD9, 0xA7, 0x17, 0x9C, 0x4B, 0x9D,
> 
> +  0x6C, 0x27, 0xB0, 0x87, 0x16, 0x6B, 0xF2, 0x96, 0xE5,
> 0x1D, 0x37, 0x27, 0xDE, 0xF2, 0x98, 0xB7,
> 
> +  0x81, 0x08, 0xD9, 0x7A, 0xBA, 0x84, 0x14, 0x61, 0x60,
> 0x48, 0xCE, 0xCE, 0x51, 0x73, 0xF4, 0xDB,
> 
> +  0xF1, 0x5F, 0x7A, 0x17, 0x71, 0x4F, 0xC1, 0x0B, 0xCE,
> 0xC7, 0x31, 0xC1, 0x4E, 0xA3, 0xEE, 0x6F,
> 
> +  0x72, 0x97, 0x90, 0xFB, 0x8B, 0x54, 0x9F, 0x82, 0x5B,
> 0x48, 0x5A, 0xF1, 0xAD, 0x8B, 0x3A, 0xCD,
> 
> +  0xCA, 0xB2, 0x8B, 0x7A, 0x53, 0xD4, 0xF7, 0x71, 0x16,
> 0x75, 0xA7, 0x35, 0x02, 0x03, 0x01, 0x00,
> 
> +  0x01, 0x02, 0x82, 0x01, 0x00, 0x13, 0xF7, 0xD1, 0x42,
> 0xF5, 0x9F, 0x42, 0xCB, 0x55, 0x91, 0xBE,
> 
> +  0x08, 0x4A, 0xC0, 0xCD, 0x0B, 0xBD, 0x35, 0xDC, 0x43,
> 0xE9, 0x8F, 0x16, 0x6E, 0xB6, 0x4D, 0x33,
> 
> +  0x39, 0xE7, 0xA4, 0x95, 0x0C, 0x2F, 0x69, 0xBA, 0x0C,
> 0x42, 0x42, 0xAC, 0x43, 0x46, 0x10, 0xD3,
> 
> +  0x92, 0x7F, 0x70, 0x74, 0x1E, 0x2E, 0x5B, 0x1C, 0xC1,
> 0x92, 0xB6, 0xA4, 0x0C, 0xF5, 0x7C, 0xD9,
> 
> +  0xB7, 0x54, 0x64, 0x74, 0x79, 0xB1, 0xFF, 0xE6, 0x10,
> 0xB7, 0x8C, 0xF8, 0x53, 0x88, 0x6D, 0xA9,
> 
> +  0x97, 0x04, 0xD9, 0x26, 0x1F, 0x99, 0x12, 0xFB, 0xAC,
> 0x65, 0xFB, 0xA5, 0xB3, 0x1C, 0x99, 0xB9,
> 
> +  0xBF, 0x6B, 0x35, 0x3E, 0x49, 0x55, 0xB5, 0x94, 0x4F,
> 0xE7, 0x25, 0x67, 0xB1, 0x01, 0xCD, 0xD2,
> 
> +  0x58, 0xE4, 0xBE, 0x87, 0x8C, 0x88, 0xD3, 0x0A, 0x38,
> 0xDC, 0x71, 0x5D, 0x88, 0x0A, 0xE2, 0x3E,
> 
> +  0x76, 0x63, 0x3B, 0xE4, 0x3C, 0x8F, 0x2F, 0x29, 0x1D,
> 0xD1, 0x66, 0x8D, 0xC0, 0x4A, 0x68, 0x15,
> 
> +  0x90, 0x4C, 0x95, 0x61, 0xF4, 0xFD, 0xE8, 0xFA, 0x9C,
> 0x6C, 0x00, 0x22, 0x23, 0xD5, 0x17, 0x6E,
> 
> +  0xEE, 0xA8, 0xD8, 0x70, 0xC5, 0x74, 0xEA, 0x09, 0x13,
> 0x7F, 0x0C, 0x37, 0x4D, 0x50, 0xCD, 0xE9,
> 
> +  0x16, 0xC2, 0xD5, 0xDE, 0x5E, 0xC3, 0xFC, 0x46, 0x08,
> 0xF1, 0x99, 0xC0, 0xB4, 0x28, 0xFD, 0x2B,
> 
> +  0x29, 0xEF, 0x76, 0xD7, 0x04, 0x4F, 0x02, 0x54, 0x16,
> 0x54, 0x55, 0x20, 0xEC, 0xBC, 0xBF, 0x85,
> 
> +  0x5F, 0x12, 0xCC, 0xFC, 0x0D, 0xF2, 0xEF, 0xFC, 0x4D,
> 0x3E, 0xA2, 0x5E, 0x97, 0xFE, 0x35, 0x10,
> 
> +  0x0F, 0x53, 0x1F, 0x80, 0xD5, 0xC0, 0xB4, 0xE9, 0xE9,
> 0x31, 0x4C, 0x89, 0x14, 0x72, 0x39, 0x65,
> 
> +  0x89, 0xEF, 0x7A, 0x51, 0x4A, 0xB9, 0xA9, 0xCC, 0x1B,
> 0x52, 0xB0, 0x02, 0x52, 0x65, 0x2F, 0x0B,
> 
> +  0x89, 0x41, 0x70, 0x1E, 0x01, 0x02, 0x81, 0x81, 0x00,
> 0xDB, 0xE8, 0x21, 0x9E, 0xDB, 0x58, 0x42,
> 
> +  0x0B, 0x02, 0x35, 0x87, 0xDF, 0x35, 0xF4, 0xC1, 0xEE,
> 0xD5, 0x72, 0x2C, 0xDC, 0x4D, 0xC7, 0xDA,
> 
> +  0x6D, 0x18, 0x0F, 0x68, 0x6F, 0xE7, 0xB0, 0x6C, 0xA0,
> 0xB2, 0x9E, 0xB8, 0x5E, 0x4A, 0x86, 0x81,
> 
> +  0x97, 0xBD, 0x78, 0xFC, 0x06, 0xD5, 0xBE, 0x98, 0x42,
> 0x38, 0x78, 0x78, 0x16, 0xAE, 0x39, 0x56,
> 
> +  0xFB, 0x67, 0x6B, 0xED, 0x7F, 0xB3, 0xC3, 0x7D, 0x95,
> 0x86, 0x05, 0x0C, 0xF1, 0x4C, 0xC2, 0x67,
> 
> +  0x94, 0x93, 0x1B, 0xB7, 0x91, 0x0A, 0x80, 0xE2, 0x85,
> 0xA7, 0x75, 0x20, 0x61, 0xCD, 0x40, 0x5B,
> 
> +  0x39, 0x13, 0x32, 0xF7, 0xB8, 0xD7, 0x0C, 0x39, 0x4C,
> 0x82, 0x4B, 0xA3, 0x9F, 0x5E, 0xB1, 0xB0,
> 
> +  0x38, 0x81, 0x8B, 0x1E, 0xBD, 0x2B, 0xC2, 0x9F, 0x3A,
> 0x68, 0x72, 0xC2, 0x90, 0xCB, 0xA2, 0xE2,
> 
> +  0xAC, 0x86, 0xFF, 0xC8, 0xD7, 0xB8, 0x97, 0x0E, 0x69,
> 0x02, 0x81, 0x81, 0x00, 0xDB, 0xE5, 0x21,
> 
> +  0x1F, 0x4C, 0x83, 0xD9, 0x7A, 0x56, 0x87, 0x82, 0xF1,
> 0x40, 0x1A, 0xD3, 0x5B, 0xC5, 0xB4, 0x4D,
> 
> +  0x18, 0x8A, 0xE3, 0x6B, 0xC9, 0x7E, 0x8F, 0x5D, 0x00,
> 0x33, 0x66, 0xEB, 0xAE, 0x8E, 0x54, 0x49,
> 
> +  0xD7, 0xEA, 0xF3, 0xF9, 0xED, 0xD7, 0xEE, 0x2C, 0xC8,
> 0xD6, 0x8F, 0x40, 0x0A, 0x53, 0xCB, 0x5D,
> 
> +  0x16, 0xB7, 0xEB, 0x4E, 0xFB, 0x11, 0x18, 0x1B, 0x4B,
> 0x6B, 0x43, 0x04, 0xD6, 0x1D, 0x8F, 0x6D,
> 
> +  0x4D, 0x48, 0x8B, 0x6C, 0x82, 0x52, 0xB4, 0x8D, 0x58,
> 0x9B, 0x19, 0x8D, 0xE0, 0x0D, 0xFD, 0x15,
> 
> +  0x9D, 0x35, 0xDF, 0x5E, 0xED, 0xDB, 0x8F, 0x8C, 0x44,
> 0x11, 0xC9, 0x9A, 0xD9, 0x3F, 0xD4, 0xA5,
> 
> +  0xEE, 0x68, 0x3B, 0x38, 0xD1, 0x66, 0xB0, 0x62, 0x7E,
> 0xA5, 0x04, 0xD1, 0x67, 0xA4, 0x1D, 0x93,
> 
> +  0xD6, 0x2A, 0xFB, 0xF6, 0xC1, 0xB2, 0xC4, 0x02, 0x8A,
> 0xB2, 0xA8, 0xD0, 0xED, 0x02, 0x81, 0x81,
> 
> +  0x00, 0xD1, 0x1D, 0x98, 0x43, 0x09, 0x10, 0x8F, 0x95,
> 0x0A, 0x5F, 0xBF, 0x3A, 0x1A, 0x84, 0x0A,
> 
> +  0x9B, 0x44, 0x6C, 0x53, 0x8E, 0x97, 0x84, 0x72, 0x08,
> 0x85, 0xF5, 0xB8, 0xF9, 0x99, 0x58, 0x22,
> 
> +  0xA4, 0x59, 0xD7, 0x27, 0x39, 0xBB, 0x22, 0xD7, 0x3F,
> 0x65, 0x95, 0x14, 0x0C, 0xA7, 0xDB, 0x9B,
> 
> +  0xCC, 0x75, 0x08, 0xD2, 0x21, 0xB7, 0x41, 0x9D, 0x9E,
> 0x6A, 0x85, 0xAE, 0x8E, 0x5E, 0x72, 0x8B,
> 
> +  0x0C, 0xD2, 0x2A, 0x21, 0x59, 0xA1, 0x05, 0xC9, 0x1B,
> 0xF7, 0x1C, 0x47, 0x5E, 0x6C, 0x9F, 0x8D,
> 
> +  0x49, 0x4D, 0xA9, 0xCA, 0xC6, 0x56, 0x39, 0x59, 0xC6,
> 0x17, 0xA4, 0xC2, 0xFF, 0x09, 0xB8, 0x7D,
> 
> +  0x10, 0x6D, 0x62, 0xE2, 0x50, 0x9D, 0xEA, 0xD8, 0xC9,
> 0x93, 0x1E, 0xA9, 0x77, 0x78, 0x92, 0x95,
> 
> +  0x7A, 0x24, 0x72, 0xE4, 0xE4, 0x6E, 0x51, 0x11, 0xBE,
> 0xC0, 0x8D, 0xA1, 0xFE, 0xC9, 0x71, 0x13,
> 
> +  0xE9, 0x02, 0x81, 0x80, 0x38, 0xE5, 0x3F, 0x3D, 0xB6,
> 0xF1, 0x82, 0x8A, 0xD9, 0xEA, 0xB4, 0x21,
> 
> +  0xB1, 0xE1, 0x7F, 0x00, 0x86, 0xD6, 0x11, 0x00, 0xA1,
> 0xA7, 0x18, 0x53, 0x89, 0x50, 0x94, 0xD2,
> 
> +  0xA1, 0x7A, 0x26, 0xCF, 0x02, 0x7A, 0xA2, 0xA4, 0xA0,
> 0x61, 0x42, 0x30, 0x9D, 0x27, 0x3E, 0x25,
> 
> +  0x35, 0x06, 0xD9, 0x9E, 0x12, 0x72, 0x53, 0x02, 0xB6,
> 0xD1, 0xC6, 0x9C, 0xC5, 0x9E, 0x84, 0x29,
> 
> +  0x6E, 0x76, 0x67, 0xC0, 0xF2, 0xE3, 0x12, 0x77, 0xE5,
> 0xA6, 0x55, 0x8C, 0x1E, 0xD4, 0x22, 0xA2,
> 
> +  0x63, 0x77, 0x28, 0x33, 0x69, 0xCB, 0x2B, 0x15, 0x83,
> 0x43, 0xE9, 0x6F, 0x07, 0xD9, 0x4B, 0x84,
> 
> +  0xAD, 0x49, 0x89, 0xAC, 0x5E, 0x8C, 0xA9, 0xE6, 0x56,
> 0xC7, 0xC3, 0xFA, 0xC2, 0x64, 0x2F, 0x07,
> 
> +  0xEF, 0xB0, 0xA0, 0x71, 0xFD, 0x8F, 0xBD, 0x99, 0xB3,
> 0x83, 0x80, 0x24, 0x3C, 0x19, 0xE5, 0x42,
> 
> +  0x77, 0xD9, 0xA0, 0x3D, 0x02, 0x81, 0x81, 0x00, 0xB7,
> 0x35, 0xE9, 0x66, 0x4A, 0xCD, 0x5F, 0x5C,
> 
> +  0x44, 0x9A, 0x7F, 0x23, 0xAE, 0xC2, 0x7F, 0xF0, 0x8D,
> 0xE4, 0xDB, 0xCD, 0x1A, 0x8A, 0x40, 0xD7,
> 
> +  0x0A, 0xC4, 0x3E, 0xC5, 0x03, 0xFB, 0x47, 0xAB, 0x72,
> 0xDF, 0xD7, 0x68, 0x27, 0x6E, 0x86, 0x94,
> 
> +  0x2A, 0x2A, 0xDA, 0x25, 0x9E, 0xF6, 0x5E, 0xE0, 0x6D,
> 0x7C, 0x7D, 0xFE, 0x72, 0xDD, 0xC7, 0xBC,
> 
> +  0x74, 0xC7, 0xAD, 0xEA, 0x44, 0xBE, 0x5C, 0x8A, 0x03,
> 0xCD, 0x35, 0x74, 0x6F, 0x4E, 0x92, 0x31,
> 
> +  0xBE, 0x57, 0x9A, 0x02, 0x0C, 0xFC, 0xD1, 0xD5, 0xE7,
> 0x3E, 0x53, 0x0C, 0x47, 0x12, 0x39, 0x45,
> 
> +  0x6E, 0x35, 0x24, 0xA6, 0xDA, 0x42, 0x63, 0xC6, 0xBF,
> 0xCA, 0xE8, 0x32, 0xFD, 0x61, 0xC0, 0x80,
> 
> +  0x39, 0xD2, 0xB7, 0x0D, 0xF3, 0xA2, 0xF3, 0xE4, 0x49,
> 0x26, 0x89, 0xD0, 0xA0, 0x24, 0xC8, 0x27,
> 
> +  0x86, 0x10, 0x09, 0x88, 0x6C, 0x35, 0x60, 0xF2,
> 
> +  };
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyOaepEncrypt (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN             Status;
> 
> +  UINT8               File[4];
> 
> +  UINT8               *OutBuffer;
> 
> +  UINTN               OutBufferSize;
> 
> +  UINT8               *OutBuffer2;
> 
> +  UINTN               OutBuffer2Size;
> 
> +
> 
> +  // Create a file and add content '123' in it
> 
> +  File[0] = '1';
> 
> +  File[1] = '2';
> 
> +  File[2] = '3';
> 
> +  File[3] = 0;
> 
> +
> 
> +  OutBuffer = NULL;
> 
> +  OutBufferSize = 0;
> 
> +  OutBuffer2 = NULL;
> 
> +  OutBuffer2Size = 0;
> 
> +
> 
> +  Status = Pkcs1v2Encrypt (
> 
> +            SelfTestCert,
> 
> +            (UINTN)sizeof (SelfTestCert),
> 
> +            File,
> 
> +            (UINTN)sizeof (File),
> 
> +            NULL,
> 
> +            0,
> 
> +            &OutBuffer,
> 
> +            (UINTN *)&OutBufferSize
> 
> +            );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = Pkcs1v2Encrypt (
> 
> +            SelfTestCert,
> 
> +            (UINTN)sizeof (SelfTestCert),
> 
> +            File,
> 
> +            (UINTN)4,
> 
> +            NULL,
> 
> +            0,
> 
> +            &OutBuffer2,
> 
> +            (UINTN *)&OutBuffer2Size
> 
> +            );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  // TRUE - the two OutBuffers are indentical. That
> means the Oaep encrypt result is incorrect.
> 
> +  Status = (CompareMem (OutBuffer, OutBuffer2,
> OutBufferSize >= OutBuffer2Size ? OutBufferSize :
> OutBuffer2Size) == 0);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +
> 
> +  if (OutBuffer) {
> 
> +    FreePool (OutBuffer);
> 
> +    OutBuffer = NULL;
> 
> +    OutBufferSize = 0;
> 
> +  }
> 
> +
> 
> +  if (OutBuffer2) {
> 
> +    FreePool (OutBuffer2);
> 
> +    OutBuffer2 = NULL;
> 
> +    OutBuffer2Size = 0;
> 
> +  }
> 
> +
> 
> +  Status = Pkcs1v2Encrypt (
> 
> +              SelfTestCert,
> 
> +              (UINTN)sizeof (SelfTestCert),
> 
> +              File,
> 
> +              (UINTN)4,
> 
> +              RandSeed,
> 
> +              (UINTN)sizeof (RandSeed),
> 
> +              &OutBuffer,
> 
> +              (UINTN *)&OutBufferSize
> 
> +              );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = Pkcs1v2Encrypt (
> 
> +              SelfTestCert,
> 
> +              (UINTN)sizeof (SelfTestCert),
> 
> +              File,
> 
> +              (UINTN)4,
> 
> +              RandSeed,
> 
> +              (UINTN)sizeof (RandSeed),
> 
> +              &OutBuffer2,
> 
> +              (UINTN *)&OutBuffer2Size
> 
> +              );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  // TRUE - the two OutBuffers are indentical. That
> means the Oaep encrypt result is incorrect.
> 
> +  Status = (CompareMem (OutBuffer, OutBuffer2,
> OutBufferSize >= OutBuffer2Size ? OutBufferSize :
> OutBuffer2Size) == 0);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +
> 
> +  if (OutBuffer) {
> 
> +    FreePool (OutBuffer);
> 
> +    OutBuffer = NULL;
> 
> +    OutBufferSize = 0;
> 
> +  }
> 
> +
> 
> +  if (OutBuffer2) {
> 
> +    FreePool (OutBuffer2);
> 
> +    OutBuffer2 = NULL;
> 
> +    OutBuffer2Size = 0;
> 
> +  }
> 
> +
> 
> +  Status = Pkcs1v2Encrypt (
> 
> +              NULL,
> 
> +              (UINTN)sizeof (SelfTestCert),
> 
> +              File,
> 
> +              (UINTN)4,
> 
> +              NULL,
> 
> +              0,
> 
> +              &OutBuffer,
> 
> +              (UINTN *)&OutBufferSize
> 
> +              );
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +
> 
> +  Status = Pkcs1v2Encrypt (
> 
> +              SelfTestCert,
> 
> +              (UINTN)sizeof (SelfTestCert),
> 
> +              File,
> 
> +              (UINTN)4,
> 
> +              NULL,
> 
> +              0,
> 
> +              (UINT8 **)NULL,
> 
> +              (UINTN *)&OutBufferSize
> 
> +              );
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +
> 
> +  Status = Pkcs1v2Encrypt (
> 
> +              SelfTestCert,
> 
> +              (UINTN)sizeof (SelfTestCert),
> 
> +              File,
> 
> +              (UINTN)4,
> 
> +              NULL,
> 
> +              0,
> 
> +              &OutBuffer,
> 
> +              (UINTN *)NULL
> 
> +              );
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mOaepTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> ------Class----------------------Function---------------
> --Pre---Post--Context
> 
> +    //
> 
> +    {"TestVerifyOaepEncrypt()",
> "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt",
> TestVerifyOaepEncrypt, NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mOaepTestNum = ARRAY_SIZE(mOaepTest);
> 
> +
> 
> +
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkd
> f2Tests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkd
> f2Tests.c
> new file mode 100644
> index 000000000000..b64248aa5619
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkd
> f2Tests.c
> @@ -0,0 +1,71 @@
> +/** @file
> 
> +  Application for PKCS#5 PBKDF2 Function Validation.
> 
> +
> 
> +Copyright (c) 2016, Intel Corporation. All rights
> reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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
> 
> +  };
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyPkcs5Pbkdf2 (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN  Status;
> 
> +  UINT8    *OutKey;
> 
> +
> 
> +  OutKey = AllocatePool (KeyLen);
> 
> +
> 
> +  //
> 
> +  // Verify PKCS#5 PBKDF2 Key Derivation Function
> 
> +  //
> 
> +  Status = Pkcs5HashPassword (
> 
> +             PassLen,
> 
> +             Password,
> 
> +             SaltLen,
> 
> +             (CONST UINT8 *)Salt,
> 
> +             Count,
> 
> +             SHA1_DIGEST_SIZE,
> 
> +             KeyLen,
> 
> +             OutKey
> 
> +             );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Check the output key with the expected key result
> 
> +  //
> 
> +  UT_ASSERT_MEM_EQUAL (OutKey, DerivedKey, KeyLen);
> 
> +
> 
> +  //
> 
> +  // Release Resources
> 
> +  //
> 
> +  FreePool (OutKey);
> 
> +
> 
> +  return EFI_SUCCESS;
> 
> +}
> 
> +
> 
> +TEST_DESC mPkcs5Test[] = {
> 
> +    //
> 
> +    // -----Description------------------------------
> Class----------------------Function-----------------Pre-
> --Post--Context
> 
> +    //
> 
> +    {"TestVerifyPkcs5Pbkdf2()",
> "CryptoPkg.BaseCryptLib.Pkcs5",   TestVerifyPkcs5Pbkdf2,
> NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mPkcs5TestNum = ARRAY_SIZE(mPkcs5Test);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuT
> ests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuT
> ests.c
> new file mode 100644
> index 000000000000..b5ae4f6a89e0
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuT
> ests.c
> @@ -0,0 +1,524 @@
> +/** @file -- Pkcs7EkuVerify.c
> 
> + * Copyright (c) Microsoft Corporation.
> 
> + * SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +  This is an test code which verifies specified
> 
> +  Enhanced Key Usages (EKU)'s are present in the leaf
> signer
> 
> +  of a PKCS7 formatted signature.
> 
> +
> 
> +
> 
> +  A typical signing certificate chain looks like this:
> (Could be RSA or ECC).
> 
> +
> 
> +      ------------------------------------------
> 
> +     |                                          | //
> Root of trust. ECDSA P521 curve
> 
> +     |          TestEKUParsingRoot              | //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +     |                                          | //
> CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE
> 
> +      ------------------------------------------
> 
> +                        ^
> 
> +                        |
> 
> +      ------------------------------------------
> 
> +     |                                          | //
> Policy CA.  Issues subordinate CAs. ECC P384 curve.
> 
> +     |       TestEKUParsingPolicyCA             | //
> SHA 256 Key Usage:
> 
> +     |                                          | //
> CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE
> 
> +      ------------------------------------------
> 
> +                        ^
> 
> +                        |
> 
> +      ------------------------------------------
> 
> +     |                                          | //
> Issues end-entity (leaf) signers. ECC P256 curve.
> 
> +     |        TestEKUParsingIssuingCA           | //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +     |                                          | //
> Enhanced Key Usage:
> 
> +      ------------------------------------------  //
> 1.3.6.1.4.1.311.76.9.21.1 (Surface firmware signing)
> 
> +                        ^
> 
> +                        |
> 
> +         --------------------------------------
> 
> +        /     TestEKUParsingLeafSigner &&     /   //
> Leaf signer,  ECC P256 curve.
> 
> +       /    TestEKUParsingLeafSignerPid12345 /    //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +      /                                     /     //
> Enhanced Key usages:
> 
> +      --------------------------------------      //
> 1.3.6.1.4.1.311.76.9.21.1 (Surface firmware signing)
> 
> +                                                  //
> 1.3.6.1.4.1.311.76.9.21.1.N, N == Product ID.
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.h"
> 
> +
> 
> +#include "Pkcs7EkuTestSignatures.h"
> 
> +
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +VerifyEKUsInPkcs7Signature (
> 
> +  IN CONST UINT8  *Pkcs7Signature,
> 
> +  IN CONST UINT32  SignatureSize,
> 
> +  IN CONST CHAR8  *RequiredEKUs[],
> 
> +  IN CONST UINT32  RequiredEKUsSize,
> 
> +  IN BOOLEAN       RequireAllPresent
> 
> +  );
> 
> +
> 
> +///====================================================
> ============================================
> 
> +///====================================================
> ============================================
> 
> +///
> 
> +/// TEST CASES
> 
> +///
> 
> +///====================================================
> ============================================
> 
> +///====================================================
> ============================================
> 
> +
> 
> +CONST CHAR8 FIRMWARE_SIGNER_EKU[] =
> "1.3.6.1.4.1.311.76.9.21.1";
> 
> +
> 
> +
> 
> +/**
> 
> +  TestVerifyEKUsInSignature()
> 
> +
> 
> +  Verify that "1.3.6.1.4.1.311.76.9.21.1" (Firmware
> signature) is in the
> 
> +  leaf signer certificate.
> 
> +
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyEKUsInSignature (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  CONST CHAR8* RequiredEKUs[] = { FIRMWARE_SIGNER_EKU
> };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(ProductionECCSignature,
> 
> +
> ARRAY_SIZE(ProductionECCSignature),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestVerifyEKUsInSignature()
> 
> +
> 
> +
> 
> +/**
> 
> +  TestVerifyEKUsWith3CertsInSignature()
> 
> +
> 
> +  This PKCS7 signature has 3 certificates in it.
> (Policy CA, Issuing CA
> 
> +  and leaf signer). It has one firmware signing EKU in
> it.
> 
> +  "1.3.6.1.4.1.311.76.9.21.1"
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyEKUsWith3CertsInSignature (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  CONST CHAR8* RequiredEKUs[] = { FIRMWARE_SIGNER_EKU
> };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignEKUsWith3CertsInSigna
> ture,
> 
> +
> ARRAY_SIZE(TestSignEKUsWith3CertsInSignature),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestVerifyEKUsWith3CertsInSignature()
> 
> +
> 
> +/**
> 
> +  TestVerifyEKUsWith2CertsInSignature()
> 
> +
> 
> +  This PKCS7 signature has 2 certificates in it.
> (Issuing CA and leaf signer).
> 
> +  It has one firmware signing EKU in it.
> "1.3.6.1.4.1.311.76.9.21.1"
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyEKUsWith2CertsInSignature (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  CONST CHAR8* RequiredEKUs[] = { FIRMWARE_SIGNER_EKU
> };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignEKUsWith2CertsInSigna
> ture,
> 
> +
> ARRAY_SIZE(TestSignEKUsWith2CertsInSignature),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestVerifyEKUsWith2CertsInSignature()
> 
> +
> 
> +
> 
> +/**
> 
> +  TestVerifyEKUsWith1CertInSignature()
> 
> +
> 
> +  This PKCS7 signature only has the leaf signer in it.
> 
> +  It has one firmware signing EKU in it.
> "1.3.6.1.4.1.311.76.9.21.1"
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyEKUsWith1CertInSignature (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  CONST CHAR8* RequiredEKUs[] = { FIRMWARE_SIGNER_EKU
> };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignEKUsWith1CertInSignat
> ure,
> 
> +
> ARRAY_SIZE(TestSignEKUsWith1CertInSignature),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestVerifyEKUsWith1CertInSignature()
> 
> +
> 
> +
> 
> +/**
> 
> +  TestVerifyEKUsWithMultipleEKUsInCert()
> 
> +
> 
> +
> 
> +  This signature has two EKU's in it:
> 
> +  "1.3.6.1.4.1.311.76.9.21.1"
> 
> +  "1.3.6.1.4.1.311.76.9.21.2"
> 
> +  We verify that both EKU's were present in the leaf
> signer.
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyEKUsWithMultipleEKUsInCert (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  CONST CHAR8* RequiredEKUs[] = {
> "1.3.6.1.4.1.311.76.9.21.1",
> 
> +
> "1.3.6.1.4.1.311.76.9.21.1.2" };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignedWithMultipleEKUsInC
> ert,
> 
> +
> ARRAY_SIZE(TestSignedWithMultipleEKUsInCert),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestVerifyEKUsWithMultipleEKUsInCert()
> 
> +
> 
> +
> 
> +/**
> 
> +  TestEkusNotPresentInSignature()
> 
> +
> 
> +  This test verifies that if we send an EKU that is not
> in the signature,
> 
> +  that we get back an error.
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestEkusNotPresentInSignature (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS       Status = EFI_SUCCESS;
> 
> +
> 
> +  //
> 
> +  // This EKU is not in the signature.
> 
> +  //
> 
> +  CONST CHAR8* RequiredEKUs[] = {
> "1.3.6.1.4.1.311.76.9.21.3" };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignedWithMultipleEKUsInC
> ert,
> 
> +
> ARRAY_SIZE(TestSignedWithMultipleEKUsInCert),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestEkusNotPresentInSignature()
> 
> +
> 
> +/**
> 
> +  TestEkusNotPresentInSignature()
> 
> +
> 
> +  This test signature has two EKU's in it:  (Product ID
> is 10001)
> 
> +  "1.3.6.1.4.1.311.76.9.21.1"
> 
> +  "1.3.6.1.4.1.311.76.9.21.1.10001"
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestProductId10001PresentInSignature(
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +)
> 
> +{
> 
> +  EFI_STATUS       Status = EFI_SUCCESS;
> 
> +
> 
> +  //
> 
> +  // These EKU's are present in the leaf signer
> certificate.
> 
> +  //
> 
> +  CONST CHAR8* RequiredEKUs[] = {
> "1.3.6.1.4.1.311.76.9.21.1",
> 
> +
> "1.3.6.1.4.1.311.76.9.21.1.10001" };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,
> 
> +
> ARRAY_SIZE(TestSignedWithProductId10001),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestProductId10001PresentInSignature()
> 
> +
> 
> +
> 
> +/**
> 
> +  TestOnlyOneEkuInListRequired()
> 
> +
> 
> +  This test will check the BOOLEAN RequireAllPresent
> parameter in the
> 
> +  call to VerifyEKUsInPkcs7Signature() behaves
> properly.  The signature
> 
> +  has two EKU's in it:
> 
> +
> 
> +  "1.3.6.1.4.1.311.76.9.21.1"
> 
> +  "1.3.6.1.4.1.311.76.9.21.1.10001"
> 
> +
> 
> +  but we only pass in one of them, and set
> RequireAllPresent to FALSE.
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestOnlyOneEkuInListRequired(
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +)
> 
> +{
> 
> +  EFI_STATUS       Status = EFI_SUCCESS;
> 
> +
> 
> +  //
> 
> +  // This will test the flag that specifies it is OK to
> succeed if
> 
> +  // any one of the EKU's passed in is found.
> 
> +  //
> 
> +  CONST CHAR8* RequiredEKUs[] = {
> "1.3.6.1.4.1.311.76.9.21.1.10001" };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,
> 
> +
> ARRAY_SIZE(TestSignedWithProductId10001),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      FALSE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestOnlyOneEkuInListRequired()
> 
> +
> 
> +/**
> 
> +  TestNoEKUsInSignature()
> 
> +
> 
> +  This test uses a signature that was signed with a
> certificate that does
> 
> +  not contain any EKUs.
> 
> +
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestNoEKUsInSignature(
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +)
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  //
> 
> +  // This EKU is not in the certificate, so it should
> fail.
> 
> +  //
> 
> +  CONST CHAR8* RequiredEKUs[] = {
> "1.3.6.1.4.1.311.76.9.21.1" };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignatureWithNoEKUsPresen
> t,
> 
> +
> ARRAY_SIZE(TestSignatureWithNoEKUsPresent),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestNoEKUsInSignature()
> 
> +
> 
> +
> 
> +/**
> 
> +  TestInvalidParameters()
> 
> +
> 
> +  Passes the API invalid parameters, and ensures that
> it does not succeed.
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestInvalidParameters(
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +)
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  CONST CHAR8* RequiredEKUs[] = {
> "1.3.6.1.4.1.311.76.9.21.1" };
> 
> +
> 
> +  //
> 
> +  // Check bad signature.
> 
> +  //
> 
> +  Status = VerifyEKUsInPkcs7Signature(NULL,
> 
> +                                      0,
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs,
> 
> +
> ARRAY_SIZE(RequiredEKUs),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status,
> EFI_INVALID_PARAMETER);
> 
> +
> 
> +  //
> 
> +  // Check invalid EKU's
> 
> +  //
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignatureWithNoEKUsPresen
> t,
> 
> +
> ARRAY_SIZE(TestSignatureWithNoEKUsPresent),
> 
> +                                      (CONST
> CHAR8**)NULL,
> 
> +                                      0,
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_STATUS_EQUAL (Status,
> EFI_INVALID_PARAMETER);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestInvalidParameters()
> 
> +
> 
> +
> 
> +/**
> 
> +  TestEKUSubStringFails()
> 
> +
> 
> +  Pass the API a sub set and super set of an EKU and
> ensure that they
> 
> +  don't pass.
> 
> +
> 
> +  @param[in]  Framework - Unit-test framework handle.
> 
> +  @param[in]  Context   - Optional context pointer for
> this test.
> 
> +
> 
> +  @retval UNIT_TEST_PASSED            - The required
> EKUs were found in the signature.
> 
> +  @retval UNIT_TEST_ERROR_TEST_FAILED - Something
> failed, check the debug output.
> 
> +**/
> 
> +static
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestEKUSubsetSupersetFails(
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +)
> 
> +{
> 
> +  EFI_STATUS       Status     = EFI_SUCCESS;
> 
> +
> 
> +  //
> 
> +  // This signature has an EKU of:
> 
> +  // "1.3.6.1.4.1.311.76.9.21.1.10001"
> 
> +  // so ensure that
> 
> +  // "1.3.6.1.4.1.311.76.9.21"
> 
> +  // does not pass.
> 
> +  //
> 
> +  CONST CHAR8* RequiredEKUs1[] = {
> "1.3.6.1.4.1.311.76.9.21" };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,
> 
> +
> ARRAY_SIZE(TestSignedWithProductId10001),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs1,
> 
> +
> ARRAY_SIZE(RequiredEKUs1),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  //
> 
> +  // This signature has an EKU of:
> 
> +  // "1.3.6.1.4.1.311.76.9.21.1.10001"
> 
> +  // so ensure that a super set
> 
> +  // "1.3.6.1.4.1.311.76.9.21.1.10001.1"
> 
> +  // does not pass.
> 
> +  //
> 
> +  CONST CHAR8* RequiredEKUs2[] = {
> "1.3.6.1.4.1.311.76.9.21.1.10001.1" };
> 
> +
> 
> +  Status =
> VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,
> 
> +
> ARRAY_SIZE(TestSignedWithProductId10001),
> 
> +                                      (CONST
> CHAR8**)RequiredEKUs2,
> 
> +
> ARRAY_SIZE(RequiredEKUs2),
> 
> +                                      TRUE);
> 
> +  UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}// TestEKUSubsetSupersetFails()
> 
> +
> 
> +TEST_DESC mPkcs7EkuTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> Class----------------------------Function---------------
> ---------------Pre---Post--Context
> 
> +    //
> 
> +    {"TestVerifyEKUsInSignature()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestVerifyEKUsInSignature,            NULL, NULL, NULL},
> 
> +    {"TestVerifyEKUsWith3CertsInSignature()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestVerifyEKUsWith3CertsInSignature,  NULL, NULL, NULL},
> 
> +    {"TestVerifyEKUsWith2CertsInSignature()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestVerifyEKUsWith2CertsInSignature,  NULL, NULL, NULL},
> 
> +    {"TestVerifyEKUsWith1CertInSignature()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestVerifyEKUsWith1CertInSignature,   NULL, NULL, NULL},
> 
> +    {"TestVerifyEKUsWithMultipleEKUsInCert()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestVerifyEKUsWithMultipleEKUsInCert, NULL, NULL, NULL},
> 
> +    {"TestEkusNotPresentInSignature()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestEkusNotPresentInSignature,        NULL, NULL, NULL},
> 
> +    {"TestProductId10001PresentInSignature()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestProductId10001PresentInSignature, NULL, NULL, NULL},
> 
> +    {"TestOnlyOneEkuInListRequired()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestOnlyOneEkuInListRequired,         NULL, NULL, NULL},
> 
> +    {"TestNoEKUsInSignature()",
> "CryptoPkg.BaseCryptLib.Eku",   TestNoEKUsInSignature,
> NULL, NULL, NULL},
> 
> +    {"TestInvalidParameters()",
> "CryptoPkg.BaseCryptLib.Eku",   TestInvalidParameters,
> NULL, NULL, NULL},
> 
> +    {"TestEKUSubsetSupersetFails()",
> "CryptoPkg.BaseCryptLib.Eku",
> TestEKUSubsetSupersetFails,           NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mPkcs7EkuTestNum = ARRAY_SIZE(mPkcs7EkuTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RandTests
> .c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RandTests
> .c
> new file mode 100644
> index 000000000000..cc6b2ca46ba1
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RandTests
> .c
> @@ -0,0 +1,51 @@
> +/** @file
> 
> +  Application for Pseudorandom Number Generator
> Validation.
> 
> +
> 
> +Copyright (c) 2010, Intel Corporation. All rights
> reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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 };
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyPrngGeneration (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  UINTN    Index;
> 
> +  BOOLEAN  Status;
> 
> +
> 
> +  Status = RandomSeed (SeedString, sizeof
> (SeedString));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  for (Index = 0; Index < 10; Index ++) {
> 
> +    Status = RandomBytes (RandomBuffer,
> RANDOM_NUMBER_SIZE);
> 
> +    UT_ASSERT_TRUE (Status);
> 
> +
> 
> +    Status = (CompareMem (PreviousRandomBuffer,
> RandomBuffer, RANDOM_NUMBER_SIZE) == 0);
> 
> +    UT_ASSERT_FALSE (Status);
> 
> +
> 
> +    CopyMem (PreviousRandomBuffer, RandomBuffer,
> RANDOM_NUMBER_SIZE);
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mPrngTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> Class--------------------Function----------------Pre---
> Post--Context
> 
> +    //
> 
> +    {"TestVerifyPrngGeneration()",
> "CryptoPkg.BaseCryptLib.Prng",
> TestVerifyPrngGeneration,   NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mPrngTestNum = ARRAY_SIZE(mPrngTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7T
> ests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7T
> ests.c
> new file mode 100644
> index 000000000000..85a3d6a5a13b
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7T
> ests.c
> @@ -0,0 +1,415 @@
> +/** @file
> 
> +  Application for RSA Key Retrieving (from PEM and
> X509) & Signature Validation.
> 
> +
> 
> +  Copyright (c) 2010 - 2011, Intel Corporation. All
> rights reserved.<BR>
> 
> +  Copyright (c) Microsoft Corporation.
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.h"
> 
> +
> 
> +
> 
> +//
> 
> +// Password-protected PEM Key data for RSA Private Key
> Retrieving (encryption key is "client").
> 
> +// (Generated by OpenSSL utility).
> 
> +// $ openssl genrsa -aes256 -out TestKeyPem -passout
> pass:client 1024
> 
> +// password should match PemPass in this file
> 
> +// $ xxd --include TestKeyPem
> 
> +//
> 
> +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, 0x41, 0x45, 0x53, 0x2d,
> 0x32, 0x35, 0x36,
> 
> +  0x2d, 0x43, 0x42, 0x43, 0x2c, 0x34, 0x42, 0x44, 0x31,
> 0x30, 0x45, 0x39,
> 
> +  0x35, 0x42, 0x38, 0x33, 0x39, 0x42, 0x30, 0x44, 0x33,
> 0x35, 0x36, 0x31,
> 
> +  0x38, 0x41, 0x44, 0x36, 0x45, 0x46, 0x44, 0x36, 0x34,
> 0x32, 0x34, 0x44,
> 
> +  0x36, 0x0a, 0x0a, 0x42, 0x50, 0x39, 0x49, 0x32, 0x42,
> 0x30, 0x6c, 0x50,
> 
> +  0x7a, 0x4c, 0x50, 0x50, 0x38, 0x2f, 0x4b, 0x71, 0x35,
> 0x34, 0x2f, 0x56,
> 
> +  0x68, 0x75, 0x4b, 0x35, 0x5a, 0x63, 0x72, 0x32, 0x55,
> 0x6c, 0x32, 0x75,
> 
> +  0x43, 0x57, 0x4a, 0x62, 0x59, 0x33, 0x50, 0x77, 0x39,
> 0x6e, 0x4c, 0x6d,
> 
> +  0x45, 0x41, 0x6a, 0x47, 0x74, 0x4a, 0x68, 0x57, 0x46,
> 0x66, 0x50, 0x47,
> 
> +  0x38, 0x62, 0x6d, 0x41, 0x6f, 0x73, 0x56, 0x0a, 0x47,
> 0x76, 0x42, 0x30,
> 
> +  0x6d, 0x2b, 0x7a, 0x5a, 0x43, 0x2b, 0x30, 0x6c, 0x57,
> 0x6c, 0x72, 0x59,
> 
> +  0x7a, 0x51, 0x4b, 0x6a, 0x57, 0x79, 0x44, 0x6e, 0x4d,
> 0x58, 0x72, 0x33,
> 
> +  0x51, 0x39, 0x69, 0x57, 0x32, 0x4b, 0x33, 0x68, 0x4d,
> 0x6b, 0x71, 0x51,
> 
> +  0x4c, 0x31, 0x68, 0x65, 0x71, 0x52, 0x66, 0x66, 0x74,
> 0x47, 0x57, 0x51,
> 
> +  0x5a, 0x36, 0x78, 0x4e, 0x6a, 0x72, 0x30, 0x7a, 0x6f,
> 0x51, 0x59, 0x73,
> 
> +  0x0a, 0x34, 0x76, 0x69, 0x55, 0x46, 0x72, 0x7a, 0x2b,
> 0x52, 0x76, 0x4b,
> 
> +  0x43, 0x2f, 0x33, 0x69, 0x71, 0x57, 0x59, 0x78, 0x55,
> 0x35, 0x4c, 0x6a,
> 
> +  0x45, 0x74, 0x63, 0x5a, 0x4f, 0x2b, 0x53, 0x6d, 0x39,
> 0x42, 0x4c, 0x62,
> 
> +  0x66, 0x58, 0x49, 0x71, 0x56, 0x72, 0x53, 0x6a, 0x54,
> 0x79, 0x58, 0x49,
> 
> +  0x39, 0x70, 0x76, 0x78, 0x6f, 0x67, 0x50, 0x39, 0x38,
> 0x6b, 0x2b, 0x6c,
> 
> +  0x41, 0x66, 0x37, 0x47, 0x36, 0x0a, 0x75, 0x39, 0x2b,
> 0x30, 0x31, 0x4d,
> 
> +  0x47, 0x5a, 0x69, 0x36, 0x6b, 0x53, 0x73, 0x67, 0x48,
> 0x57, 0x7a, 0x43,
> 
> +  0x41, 0x49, 0x51, 0x75, 0x38, 0x72, 0x6a, 0x4d, 0x34,
> 0x65, 0x74, 0x64,
> 
> +  0x50, 0x62, 0x4a, 0x49, 0x77, 0x34, 0x65, 0x47, 0x6f,
> 0x32, 0x45, 0x49,
> 
> +  0x44, 0x45, 0x54, 0x61, 0x52, 0x70, 0x73, 0x76, 0x47,
> 0x6a, 0x54, 0x6f,
> 
> +  0x30, 0x51, 0x56, 0x69, 0x79, 0x79, 0x4a, 0x4f, 0x48,
> 0x32, 0x0a, 0x61,
> 
> +  0x32, 0x71, 0x69, 0x2f, 0x47, 0x7a, 0x2f, 0x64, 0x48,
> 0x61, 0x62, 0x68,
> 
> +  0x4d, 0x4e, 0x35, 0x4e, 0x53, 0x58, 0x56, 0x4d, 0x31,
> 0x54, 0x2f, 0x6d,
> 
> +  0x69, 0x6f, 0x74, 0x68, 0x78, 0x59, 0x72, 0x2f, 0x4a,
> 0x69, 0x37, 0x6d,
> 
> +  0x4e, 0x45, 0x75, 0x4a, 0x57, 0x38, 0x74, 0x6d, 0x75,
> 0x55, 0x4b, 0x58,
> 
> +  0x33, 0x66, 0x63, 0x39, 0x42, 0x39, 0x32, 0x51, 0x6e,
> 0x54, 0x68, 0x43,
> 
> +  0x69, 0x49, 0x2f, 0x0a, 0x79, 0x4f, 0x31, 0x32, 0x4c,
> 0x46, 0x58, 0x38,
> 
> +  0x74, 0x4b, 0x4a, 0x37, 0x4b, 0x7a, 0x6f, 0x6b, 0x36,
> 0x44, 0x74, 0x6d,
> 
> +  0x35, 0x73, 0x41, 0x74, 0x2b, 0x65, 0x4b, 0x76, 0x6f,
> 0x61, 0x47, 0x62,
> 
> +  0x75, 0x4a, 0x78, 0x62, 0x52, 0x63, 0x36, 0x63, 0x4d,
> 0x58, 0x57, 0x46,
> 
> +  0x36, 0x4d, 0x72, 0x4d, 0x30, 0x53, 0x78, 0x65, 0x4e,
> 0x6b, 0x5a, 0x77,
> 
> +  0x5a, 0x36, 0x6c, 0x62, 0x4d, 0x39, 0x63, 0x55, 0x0a,
> 0x6c, 0x75, 0x34,
> 
> +  0x4c, 0x56, 0x64, 0x34, 0x73, 0x56, 0x4c, 0x61, 0x76,
> 0x68, 0x75, 0x32,
> 
> +  0x58, 0x48, 0x48, 0x53, 0x56, 0x30, 0x32, 0x32, 0x6d,
> 0x51, 0x72, 0x73,
> 
> +  0x32, 0x69, 0x68, 0x74, 0x58, 0x44, 0x2b, 0x6c, 0x4d,
> 0x63, 0x2f, 0x35,
> 
> +  0x62, 0x54, 0x41, 0x55, 0x6b, 0x4b, 0x4f, 0x42, 0x73,
> 0x43, 0x69, 0x4f,
> 
> +  0x4b, 0x42, 0x56, 0x2b, 0x66, 0x70, 0x49, 0x62, 0x2b,
> 0x6d, 0x44, 0x33,
> 
> +  0x58, 0x0a, 0x39, 0x37, 0x66, 0x36, 0x54, 0x66, 0x68,
> 0x37, 0x4f, 0x4f,
> 
> +  0x6a, 0x74, 0x44, 0x79, 0x31, 0x6f, 0x52, 0x36, 0x70,
> 0x68, 0x48, 0x47,
> 
> +  0x6e, 0x73, 0x43, 0x78, 0x72, 0x53, 0x72, 0x64, 0x48,
> 0x73, 0x2f, 0x34,
> 
> +  0x33, 0x72, 0x61, 0x65, 0x42, 0x78, 0x59, 0x45, 0x41,
> 0x42, 0x4e, 0x59,
> 
> +  0x68, 0x54, 0x47, 0x57, 0x49, 0x4d, 0x4a, 0x6b, 0x50,
> 0x63, 0x54, 0x53,
> 
> +  0x73, 0x76, 0x77, 0x46, 0x37, 0x6d, 0x0a, 0x33, 0x6c,
> 0x38, 0x6b, 0x44,
> 
> +  0x50, 0x48, 0x43, 0x4e, 0x68, 0x6e, 0x6e, 0x42, 0x69,
> 0x7a, 0x36, 0x2f,
> 
> +  0x43, 0x38, 0x56, 0x31, 0x37, 0x78, 0x57, 0x34, 0x50,
> 0x2b, 0x79, 0x71,
> 
> +  0x4a, 0x78, 0x58, 0x63, 0x49, 0x53, 0x72, 0x7a, 0x57,
> 0x53, 0x55, 0x72,
> 
> +  0x34, 0x74, 0x71, 0x6b, 0x55, 0x58, 0x43, 0x57, 0x4c,
> 0x43, 0x66, 0x76,
> 
> +  0x57, 0x7a, 0x4e, 0x65, 0x5a, 0x34, 0x4f, 0x34, 0x34,
> 0x54, 0x65, 0x0a,
> 
> +  0x74, 0x31, 0x59, 0x65, 0x36, 0x77, 0x2b, 0x71, 0x4f,
> 0x55, 0x38, 0x50,
> 
> +  0x42, 0x68, 0x72, 0x65, 0x4d, 0x38, 0x75, 0x32, 0x32,
> 0x42, 0x4f, 0x31,
> 
> +  0x65, 0x2b, 0x44, 0x7a, 0x63, 0x74, 0x6c, 0x67, 0x43,
> 0x43, 0x6c, 0x38,
> 
> +  0x79, 0x69, 0x37, 0x6f, 0x43, 0x56, 0x74, 0x66, 0x75,
> 0x59, 0x2f, 0x4c,
> 
> +  0x72, 0x42, 0x61, 0x31, 0x74, 0x69, 0x43, 0x41, 0x37,
> 0x6c, 0x34, 0x75,
> 
> +  0x58, 0x6b, 0x73, 0x4c, 0x0a, 0x2b, 0x31, 0x51, 0x79,
> 0x69, 0x4b, 0x31,
> 
> +  0x6e, 0x43, 0x4f, 0x76, 0x74, 0x30, 0x46, 0x7a, 0x71,
> 0x62, 0x71, 0x78,
> 
> +  0x54, 0x37, 0x53, 0x35, 0x4c, 0x56, 0x33, 0x5a, 0x33,
> 0x74, 0x34, 0x4a,
> 
> +  0x46, 0x4f, 0x50, 0x62, 0x67, 0x63, 0x7a, 0x4e, 0x6b,
> 0x58, 0x55, 0x2b,
> 
> +  0x4f, 0x74, 0x50, 0x6b, 0x6e, 0x45, 0x45, 0x76, 0x67,
> 0x57, 0x64, 0x76,
> 
> +  0x31, 0x4f, 0x30, 0x6d, 0x52, 0x4a, 0x50, 0x31, 0x4e,
> 0x0a, 0x71, 0x43,
> 
> +  0x32, 0x33, 0x4a, 0x6a, 0x36, 0x38, 0x4c, 0x30, 0x46,
> 0x63, 0x46, 0x4c,
> 
> +  0x56, 0x56, 0x59, 0x76, 0x61, 0x44, 0x53, 0x76, 0x54,
> 0x45, 0x64, 0x50,
> 
> +  0x54, 0x34, 0x62, 0x2f, 0x7a, 0x66, 0x64, 0x36, 0x51,
> 0x52, 0x6b, 0x38,
> 
> +  0x70, 0x4d, 0x36, 0x77, 0x66, 0x61, 0x32, 0x50, 0x63,
> 0x75, 0x57, 0x65,
> 
> +  0x79, 0x38, 0x48, 0x38, 0x76, 0x4e, 0x4b, 0x67, 0x2f,
> 0x65, 0x76, 0x34,
> 
> +  0x77, 0x37, 0x0a, 0x6b, 0x6f, 0x6f, 0x4e, 0x59, 0x64,
> 0x77, 0x59, 0x69,
> 
> +  0x6c, 0x37, 0x41, 0x50, 0x76, 0x42, 0x50, 0x4d, 0x63,
> 0x6c, 0x51, 0x76,
> 
> +  0x63, 0x64, 0x71, 0x7a, 0x52, 0x7a, 0x4a, 0x6e, 0x4a,
> 0x74, 0x37, 0x70,
> 
> +  0x35, 0x7a, 0x69, 0x2b, 0x2b, 0x4c, 0x43, 0x59, 0x55,
> 0x4d, 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, 0x0a
> 
> + };
> 
> +
> 
> +//
> 
> +// Password for private key retrieving from encrypted
> PEM ("TestKeyPem").
> 
> +//
> 
> +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *PemPass =
> "client";
> 
> +
> 
> +//
> 
> +// Test CA X509 Certificate for X509 Verification
> Routine (Generated by OpenSSL utility).
> 
> +// $ openssl req -x509 -days 10000 -key TestKeyPem -out
> TestCACert -outform DER -subj
> "/C=US/ST=WA/L=Seattle/O=Tianocore/OU=EDK2/CN=UEFI"
> 
> +// use password from PemPass variable in this file
> 
> +// $ xxd --include TestCACert
> 
> +//
> 
> +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCACert[]
> = {
> 
> +  0x30, 0x82, 0x02, 0x98, 0x30, 0x82, 0x02, 0x01, 0xa0,
> 0x03, 0x02, 0x01,
> 
> +  0x02, 0x02, 0x14, 0x39, 0xde, 0x9e, 0xce, 0x3a, 0x36,
> 0x11, 0x38, 0x6f,
> 
> +  0x64, 0xb4, 0x69, 0xa7, 0x93, 0xdd, 0xff, 0xbd, 0x3e,
> 0x75, 0x6a, 0x30,
> 
> +  0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
> 0x01, 0x01, 0x0b,
> 
> +  0x05, 0x00, 0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09, 0x06,
> 0x03, 0x55, 0x04,
> 
> +  0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09,
> 0x06, 0x03, 0x55,
> 
> +  0x04, 0x08, 0x0c, 0x02, 0x57, 0x41, 0x31, 0x10, 0x30,
> 0x0e, 0x06, 0x03,
> 
> +  0x55, 0x04, 0x07, 0x0c, 0x07, 0x53, 0x65, 0x61, 0x74,
> 0x74, 0x6c, 0x65,
> 
> +  0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a,
> 0x0c, 0x09, 0x54,
> 
> +  0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31,
> 0x0d, 0x30, 0x0b,
> 
> +  0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x04, 0x45, 0x44,
> 0x4b, 0x32, 0x31,
> 
> +  0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
> 0x04, 0x55, 0x45,
> 
> +  0x46, 0x49, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x30,
> 0x36, 0x32, 0x39,
> 
> +  0x32, 0x32, 0x34, 0x37, 0x33, 0x36, 0x5a, 0x17, 0x0d,
> 0x34, 0x37, 0x31,
> 
> +  0x31, 0x31, 0x35, 0x32, 0x32, 0x34, 0x37, 0x33, 0x36,
> 0x5a, 0x30, 0x5e,
> 
> +  0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
> 0x13, 0x02, 0x55,
> 
> +  0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
> 0x08, 0x0c, 0x02,
> 
> +  0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
> 0x04, 0x07, 0x0c,
> 
> +  0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x31,
> 0x12, 0x30, 0x10,
> 
> +  0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54, 0x69,
> 0x61, 0x6e, 0x6f,
> 
> +  0x63, 0x6f, 0x72, 0x65, 0x31, 0x0d, 0x30, 0x0b, 0x06,
> 0x03, 0x55, 0x04,
> 
> +  0x0b, 0x0c, 0x04, 0x45, 0x44, 0x4b, 0x32, 0x31, 0x0d,
> 0x30, 0x0b, 0x06,
> 
> +  0x03, 0x55, 0x04, 0x03, 0x0c, 0x04, 0x55, 0x45, 0x46,
> 0x49, 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, 0x9f, 0xef, 0x1b, 0x46, 0x45, 0x55,
> 0x33, 0x4b, 0xee,
> 
> +  0x95, 0x14, 0xd3, 0x5a, 0x3e, 0xd9, 0x29, 0xfb, 0xd9,
> 0x29, 0x4e, 0x8b,
> 
> +  0xf1, 0xf5, 0x68, 0x7c, 0x58, 0x86, 0x0c, 0xda, 0xd7,
> 0xe0, 0xd2, 0x9a,
> 
> +  0xe8, 0x37, 0x16, 0x4d, 0x54, 0x92, 0x18, 0x20, 0x4c,
> 0x09, 0xa1, 0xcf,
> 
> +  0xe1, 0xaa, 0x7a, 0x5a, 0x64, 0x7e, 0x5c, 0xeb, 0x4e,
> 0x15, 0x8e, 0x40,
> 
> +  0xd1, 0xcb, 0x7d, 0x01, 0x71, 0x15, 0x11, 0xd2, 0xc7,
> 0xdb, 0x6b, 0x00,
> 
> +  0xdc, 0x02, 0xcb, 0x5a, 0x6d, 0x2b, 0x2a, 0x75, 0xb6,
> 0x3f, 0xec, 0xc1,
> 
> +  0x9d, 0xbf, 0xda, 0xe5, 0x3a, 0x77, 0x4b, 0x21, 0x1c,
> 0x99, 0x42, 0x84,
> 
> +  0x5e, 0x27, 0x53, 0x9b, 0xe6, 0xc1, 0xa1, 0x95, 0x58,
> 0xba, 0xbe, 0x62,
> 
> +  0x58, 0xd5, 0x09, 0xa8, 0xe6, 0xb6, 0x1b, 0xb1, 0x18,
> 0x28, 0x13, 0xc7,
> 
> +  0x89, 0x1c, 0x68, 0xce, 0x15, 0xaf, 0x2e, 0x68, 0xac,
> 0x1c, 0xf7, 0x02,
> 
> +  0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30,
> 0x1d, 0x06, 0x03,
> 
> +  0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x50, 0xe5,
> 0x05, 0xa3, 0x6e,
> 
> +  0x8f, 0x00, 0xf7, 0x93, 0x30, 0xe5, 0x25, 0x20, 0xdc,
> 0x8a, 0xc3, 0xad,
> 
> +  0x14, 0x6d, 0x90, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d,
> 0x23, 0x04, 0x18,
> 
> +  0x30, 0x16, 0x80, 0x14, 0x50, 0xe5, 0x05, 0xa3, 0x6e,
> 0x8f, 0x00, 0xf7,
> 
> +  0x93, 0x30, 0xe5, 0x25, 0x20, 0xdc, 0x8a, 0xc3, 0xad,
> 0x14, 0x6d, 0x90,
> 
> +  0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01,
> 0xff, 0x04, 0x05,
> 
> +  0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09,
> 0x2a, 0x86, 0x48,
> 
> +  0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03,
> 0x81, 0x81, 0x00,
> 
> +  0x8e, 0xe4, 0x27, 0x42, 0x16, 0x6e, 0xbd, 0x28, 0x47,
> 0x09, 0x99, 0xc1,
> 
> +  0x55, 0x02, 0x82, 0x1a, 0xe1, 0xd0, 0xf3, 0xef, 0x4d,
> 0xaf, 0x30, 0x9a,
> 
> +  0x29, 0x4b, 0x74, 0x03, 0x6a, 0x95, 0x28, 0xf1, 0xbe,
> 0x62, 0x68, 0x9f,
> 
> +  0x82, 0x59, 0x7a, 0x49, 0x91, 0xb6, 0xaf, 0x6b, 0x23,
> 0x30, 0xb4, 0xf4,
> 
> +  0xdd, 0xfa, 0x30, 0x3f, 0xb6, 0xed, 0x74, 0x3f, 0x91,
> 0xe8, 0xd7, 0x84,
> 
> +  0x1a, 0xf3, 0xc6, 0x3d, 0xd8, 0x59, 0x8d, 0x68, 0x6e,
> 0xb3, 0x66, 0x9e,
> 
> +  0xe8, 0xeb, 0x1a, 0x8b, 0x1e, 0x92, 0x71, 0x73, 0x8c,
> 0x4f, 0x63, 0xce,
> 
> +  0x71, 0x7b, 0x97, 0x3b, 0x59, 0xd2, 0x9b, 0xe4, 0xd0,
> 0xef, 0x31, 0x9f,
> 
> +  0x0d, 0x61, 0x27, 0x97, 0x9d, 0xe8, 0xe0, 0xcd, 0x8d,
> 0xc1, 0x4d, 0xad,
> 
> +  0xf7, 0x3a, 0x8d, 0xb8, 0x86, 0x8c, 0x23, 0x1d, 0x4c,
> 0x02, 0x5c, 0x53,
> 
> +  0x46, 0x84, 0xb2, 0x97, 0x0c, 0xd3, 0x35, 0x6b
> 
> +};
> 
> +
> 
> +//
> 
> +// X509 Cert Data for RSA Public Key Retrieving and
> X509 Verification (Generated by OpenSSL utility).
> 
> +// $ openssl req -new -key TestKeyPem -out TestCertCsr
> -subj
> "/C=US/ST=WA/L=Seattle/O=Tianocore/OU=EDK2CHILD/CN=UEFI"
> 
> +// $ openssl x509 -days 10000 -CA TestCACert.pem -CAkey
> TestKeyPem -req -out TestCert -set_serial 3432 --outform
> DER -in TestCertCsr
> 
> +// password should be in the PemPass variable
> 
> +// $ xxd --include TestCert
> 
> +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCert[] =
> {
> 
> +  0x30, 0x82, 0x02, 0x31, 0x30, 0x82, 0x01, 0x9a, 0x02,
> 0x02, 0x0d, 0x68,
> 
> +  0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
> 0x0d, 0x01, 0x01,
> 
> +  0x0b, 0x05, 0x00, 0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09,
> 0x06, 0x03, 0x55,
> 
> +  0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30,
> 0x09, 0x06, 0x03,
> 
> +  0x55, 0x04, 0x08, 0x0c, 0x02, 0x57, 0x41, 0x31, 0x10,
> 0x30, 0x0e, 0x06,
> 
> +  0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x53, 0x65, 0x61,
> 0x74, 0x74, 0x6c,
> 
> +  0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
> 0x0a, 0x0c, 0x09,
> 
> +  0x54, 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65,
> 0x31, 0x0d, 0x30,
> 
> +  0x0b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x04, 0x45,
> 0x44, 0x4b, 0x32,
> 
> +  0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03,
> 0x0c, 0x04, 0x55,
> 
> +  0x45, 0x46, 0x49, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30,
> 0x30, 0x36, 0x32,
> 
> +  0x39, 0x32, 0x33, 0x31, 0x35, 0x33, 0x36, 0x5a, 0x17,
> 0x0d, 0x34, 0x37,
> 
> +  0x31, 0x31, 0x31, 0x35, 0x32, 0x33, 0x31, 0x35, 0x33,
> 0x36, 0x5a, 0x30,
> 
> +  0x63, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
> 0x06, 0x13, 0x02,
> 
> +  0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
> 0x04, 0x08, 0x0c,
> 
> +  0x02, 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03,
> 0x55, 0x04, 0x07,
> 
> +  0x0c, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65,
> 0x31, 0x12, 0x30,
> 
> +  0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54,
> 0x69, 0x61, 0x6e,
> 
> +  0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10,
> 0x06, 0x03, 0x55,
> 
> +  0x04, 0x0b, 0x0c, 0x09, 0x45, 0x44, 0x4b, 0x32, 0x43,
> 0x48, 0x49, 0x4c,
> 
> +  0x44, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04,
> 0x03, 0x0c, 0x04,
> 
> +  0x55, 0x45, 0x46, 0x49, 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,
> 0x9f, 0xef, 0x1b,
> 
> +  0x46, 0x45, 0x55, 0x33, 0x4b, 0xee, 0x95, 0x14, 0xd3,
> 0x5a, 0x3e, 0xd9,
> 
> +  0x29, 0xfb, 0xd9, 0x29, 0x4e, 0x8b, 0xf1, 0xf5, 0x68,
> 0x7c, 0x58, 0x86,
> 
> +  0x0c, 0xda, 0xd7, 0xe0, 0xd2, 0x9a, 0xe8, 0x37, 0x16,
> 0x4d, 0x54, 0x92,
> 
> +  0x18, 0x20, 0x4c, 0x09, 0xa1, 0xcf, 0xe1, 0xaa, 0x7a,
> 0x5a, 0x64, 0x7e,
> 
> +  0x5c, 0xeb, 0x4e, 0x15, 0x8e, 0x40, 0xd1, 0xcb, 0x7d,
> 0x01, 0x71, 0x15,
> 
> +  0x11, 0xd2, 0xc7, 0xdb, 0x6b, 0x00, 0xdc, 0x02, 0xcb,
> 0x5a, 0x6d, 0x2b,
> 
> +  0x2a, 0x75, 0xb6, 0x3f, 0xec, 0xc1, 0x9d, 0xbf, 0xda,
> 0xe5, 0x3a, 0x77,
> 
> +  0x4b, 0x21, 0x1c, 0x99, 0x42, 0x84, 0x5e, 0x27, 0x53,
> 0x9b, 0xe6, 0xc1,
> 
> +  0xa1, 0x95, 0x58, 0xba, 0xbe, 0x62, 0x58, 0xd5, 0x09,
> 0xa8, 0xe6, 0xb6,
> 
> +  0x1b, 0xb1, 0x18, 0x28, 0x13, 0xc7, 0x89, 0x1c, 0x68,
> 0xce, 0x15, 0xaf,
> 
> +  0x2e, 0x68, 0xac, 0x1c, 0xf7, 0x02, 0x03, 0x01, 0x00,
> 0x01, 0x30, 0x0d,
> 
> +  0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
> 0x01, 0x0b, 0x05,
> 
> +  0x00, 0x03, 0x81, 0x81, 0x00, 0x0d, 0xa4, 0x18, 0xa2,
> 0xb6, 0x09, 0xe1,
> 
> +  0x77, 0x22, 0x97, 0x46, 0x29, 0x1b, 0xd8, 0x67, 0x0a,
> 0xc0, 0x91, 0x36,
> 
> +  0x53, 0xe1, 0x4c, 0x73, 0x1b, 0xc1, 0x90, 0x6d, 0x98,
> 0x46, 0x7e, 0x65,
> 
> +  0x71, 0x1c, 0xf0, 0x62, 0x9f, 0x9e, 0x62, 0x0b, 0x8b,
> 0x73, 0x35, 0x4c,
> 
> +  0x2d, 0xc3, 0x5d, 0x38, 0x22, 0xfe, 0x43, 0x0f, 0xf2,
> 0x57, 0x17, 0x75,
> 
> +  0xa8, 0x76, 0x79, 0xab, 0x4e, 0x33, 0xa5, 0x91, 0xbd,
> 0x55, 0x5b, 0xc0,
> 
> +  0x7e, 0xfb, 0x1d, 0xc9, 0xf3, 0x5f, 0x12, 0x6f, 0x7c,
> 0xdc, 0x24, 0x5a,
> 
> +  0x84, 0x16, 0x28, 0x5b, 0xf9, 0xcc, 0x8b, 0xfe, 0x11,
> 0xe6, 0x29, 0xcf,
> 
> +  0xac, 0x90, 0x66, 0xc0, 0x70, 0x25, 0xf8, 0x71, 0xdb,
> 0x29, 0xcb, 0x6b,
> 
> +  0x10, 0xa7, 0xbe, 0x3e, 0x9d, 0x61, 0xd8, 0x04, 0xe0,
> 0x71, 0x63, 0x83,
> 
> +  0xa3, 0xca, 0x26, 0x6d, 0x7f, 0xf3, 0xaa, 0x8e, 0xb2,
> 0x66, 0x98, 0x41,
> 
> +  0xd6
> 
> +};
> 
> +
> 
> +//
> 
> +// 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";
> 
> +
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyRsaCertPkcs1SignVerify (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN        Status;
> 
> +  VOID           *RsaPrivKey;
> 
> +  VOID           *RsaPubKey;
> 
> +  UINT8          *Signature;
> 
> +  UINTN          SigSize;
> 
> +  UINT8          *Subject;
> 
> +  UINTN          SubjectSize;
> 
> +  RETURN_STATUS  ReturnStatus;
> 
> +  CHAR8          CommonName[64];
> 
> +  UINTN          CommonNameSize;
> 
> +  CHAR8          OrgName[64];
> 
> +  UINTN          OrgNameSize;
> 
> +
> 
> +  //
> 
> +  // Retrieve RSA private key from encrypted PEM data.
> 
> +  //
> 
> +  Status = RsaGetPrivateKeyFromPem (TestKeyPem, sizeof
> (TestKeyPem), PemPass, &RsaPrivKey);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Retrieve RSA public key from X509 Certificate.
> 
> +  //
> 
> +  RsaPubKey = NULL;
> 
> +  Status    = RsaGetPublicKeyFromX509 (TestCert, sizeof
> (TestCert), &RsaPubKey);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Generate RSA PKCS#1 Signature.
> 
> +  //
> 
> +  SigSize = 0;
> 
> +  Status  = RsaPkcs1Sign (RsaPrivKey, MsgHash,
> SHA1_DIGEST_SIZE, NULL, &SigSize);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +  UT_ASSERT_NOT_EQUAL (SigSize, 0);
> 
> +
> 
> +  Signature = AllocatePool (SigSize);
> 
> +  Status    = RsaPkcs1Sign (RsaPrivKey, MsgHash,
> SHA1_DIGEST_SIZE, Signature, &SigSize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Verify RSA PKCS#1-encoded Signature.
> 
> +  //
> 
> +  Status = RsaPkcs1Verify (RsaPubKey, MsgHash,
> SHA1_DIGEST_SIZE, Signature, SigSize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // X509 Certificate Subject Retrieving.
> 
> +  //
> 
> +  SubjectSize = 0;
> 
> +  Status  = X509GetSubjectName (TestCert, sizeof
> (TestCert), NULL, &SubjectSize);
> 
> +  Subject = (UINT8 *)AllocatePool (SubjectSize);
> 
> +  Status  = X509GetSubjectName (TestCert, sizeof
> (TestCert), Subject, &SubjectSize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Get CommonName from X509 Certificate Subject
> 
> +  //
> 
> +  CommonNameSize = 64;
> 
> +  ZeroMem (CommonName, CommonNameSize);
> 
> +  ReturnStatus = X509GetCommonName (TestCert, sizeof
> (TestCert), CommonName, &CommonNameSize);
> 
> +  UT_ASSERT_NOT_EFI_ERROR (ReturnStatus);
> 
> +
> 
> +  UT_ASSERT_EQUAL (CommonNameSize, 5);
> 
> +  UT_ASSERT_MEM_EQUAL (CommonName, "UEFI", 5);
> 
> +
> 
> +  OrgNameSize = 64;
> 
> +  ZeroMem (OrgName, OrgNameSize);
> 
> +  ReturnStatus = X509GetOrganizationName (TestCert,
> sizeof (TestCert), OrgName, &OrgNameSize);
> 
> +  UT_ASSERT_NOT_EFI_ERROR (ReturnStatus);
> 
> +
> 
> +  UT_ASSERT_EQUAL (OrgNameSize, 10);
> 
> +  UT_ASSERT_MEM_EQUAL (OrgName, "Tianocore", 10);
> 
> +
> 
> +  //
> 
> +  // X509 Certificate Verification.
> 
> +  //
> 
> +  Status = X509VerifyCert (TestCert, sizeof (TestCert),
> TestCACert, sizeof (TestCACert));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Release Resources.
> 
> +  //
> 
> +  RsaFree  (RsaPubKey);
> 
> +  RsaFree  (RsaPrivKey);
> 
> +  FreePool (Signature);
> 
> +  FreePool (Subject);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyPkcs7SignVerify (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN  Status;
> 
> +  UINT8    *P7SignedData;
> 
> +  UINTN    P7SignedDataSize;
> 
> +  UINT8    *SignCert;
> 
> +
> 
> +  P7SignedData = NULL;
> 
> +  SignCert     = NULL;
> 
> +
> 
> +  //
> 
> +  // Construct Signer Certificate from RAW data.
> 
> +  //
> 
> +  Status = X509ConstructCertificate (TestCert, sizeof
> (TestCert), (UINT8 **) &SignCert);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_NOT_NULL (SignCert);
> 
> +
> 
> +  //
> 
> +  // 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
> 
> +             );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_NOT_EQUAL (P7SignedDataSize, 0);
> 
> +
> 
> +  Status = Pkcs7Verify (
> 
> +             P7SignedData,
> 
> +             P7SignedDataSize,
> 
> +             TestCACert,
> 
> +             sizeof (TestCACert),
> 
> +             (UINT8 *) Payload,
> 
> +             AsciiStrLen (Payload)
> 
> +             );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  if (P7SignedData != NULL) {
> 
> +    FreePool (P7SignedData);
> 
> +  }
> 
> +  if (SignCert != NULL) {
> 
> +    X509Free (SignCert);
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mRsaCertTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> ------Class----------------------Function---------------
> --Pre---Post--Context
> 
> +    //
> 
> +    {"TestVerifyRsaCertPkcs1SignVerify()",
> "CryptoPkg.BaseCryptLib.RsaCert",
> TestVerifyRsaCertPkcs1SignVerify, NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mRsaCertTestNum = ARRAY_SIZE(mRsaCertTest);
> 
> +
> 
> +TEST_DESC mPkcs7Test[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> ------Class----------------------Function---------------
> --Pre---Post--Context
> 
> +    //
> 
> +    {"TestVerifyPkcs7SignVerify()",
> "CryptoPkg.BaseCryptLib.Pkcs7",
> TestVerifyPkcs7SignVerify,        NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mPkcs7TestNum = ARRAY_SIZE(mPkcs7Test);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaTests.
> c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaTests.
> c
> new file mode 100644
> index 000000000000..7ce20d2e778f
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaTests.
> c
> @@ -0,0 +1,310 @@
> +/** @file
> 
> +  Application for RSA Primitives Validation.
> 
> +
> 
> +Copyright (c) 2010, Intel Corporation. All rights
> reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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
> 
> +};
> 
> +
> 
> +VOID     *mRsa;
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyRsaPreReq (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  mRsa = RsaNew ();
> 
> +
> 
> +  if (mRsa == NULL) {
> 
> +    return UNIT_TEST_ERROR_TEST_FAILED;
> 
> +  }
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +VOID
> 
> +EFIAPI
> 
> +TestVerifyRsaCleanUp (
> 
> +  UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  if (mRsa != NULL) {
> 
> +    RsaFree (mRsa);
> 
> +    mRsa = NULL;
> 
> +  }
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyRsaSetGetKeyComponents (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN  Status;
> 
> +  UINTN    KeySize;
> 
> +  UINT8    *KeyBuffer;
> 
> +
> 
> +  //
> 
> +  // Set/Get RSA Key Components
> 
> +  //
> 
> +
> 
> +  //
> 
> +  // Set/Get RSA Key N
> 
> +  //
> 
> +  Status = RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof
> (RsaN));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  KeySize = 0;
> 
> +  Status = RsaGetKey (mRsa, RsaKeyN, NULL, &KeySize);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, sizeof (RsaN));
> 
> +
> 
> +  KeyBuffer = AllocatePool (KeySize);
> 
> +  Status = RsaGetKey (mRsa, RsaKeyN, KeyBuffer,
> &KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, sizeof (RsaN));
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (KeyBuffer, RsaN, KeySize);
> 
> +
> 
> +  FreePool (KeyBuffer);
> 
> +
> 
> +  //
> 
> +  // Set/Get RSA Key E
> 
> +  //
> 
> +  Status = RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof
> (RsaE));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  KeySize = 0;
> 
> +  Status = RsaGetKey (mRsa, RsaKeyE, NULL, &KeySize);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, sizeof (RsaE));
> 
> +
> 
> +  KeyBuffer = AllocatePool (KeySize);
> 
> +  Status = RsaGetKey (mRsa, RsaKeyE, KeyBuffer,
> &KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, sizeof (RsaE));
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (KeyBuffer, RsaE, KeySize);
> 
> +
> 
> +  FreePool (KeyBuffer);
> 
> +
> 
> +  //
> 
> +  // Clear/Get RSA Key Components
> 
> +  //
> 
> +
> 
> +  //
> 
> +  // Clear/Get RSA Key N
> 
> +  //
> 
> +  Status = RsaSetKey (mRsa, RsaKeyN, NULL, 0);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  KeySize = 1;
> 
> +  Status = RsaGetKey (mRsa, RsaKeyN, NULL, &KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, 0);
> 
> +
> 
> +  //
> 
> +  // Clear/Get RSA Key E
> 
> +  //
> 
> +  Status = RsaSetKey (mRsa, RsaKeyE, NULL, 0);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  KeySize = 1;
> 
> +  Status = RsaGetKey (mRsa, RsaKeyE, NULL, &KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, 0);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyRsaGenerateKeyComponents (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN  Status;
> 
> +  UINTN    KeySize;
> 
> +  UINT8    *KeyBuffer;
> 
> +
> 
> +  //
> 
> +  // Generate RSA Key Components
> 
> +  //
> 
> +
> 
> +  Status = RsaGenerateKey (mRsa, RSA_MODULUS_LENGTH,
> NULL, 0);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  KeySize = RSA_MODULUS_LENGTH / 8;
> 
> +  KeyBuffer = AllocatePool (KeySize);
> 
> +  Status = RsaGetKey (mRsa, RsaKeyE, KeyBuffer,
> &KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, 3);
> 
> +  UT_ASSERT_MEM_EQUAL (KeyBuffer, DefaultPublicKey, 3);
> 
> +
> 
> +  KeySize = RSA_MODULUS_LENGTH / 8;
> 
> +  Status = RsaGetKey (mRsa, RsaKeyN, KeyBuffer,
> &KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_EQUAL (KeySize, RSA_MODULUS_LENGTH / 8);
> 
> +
> 
> +  Status = RsaCheckKey (mRsa);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Check invalid RSA key components
> 
> +  //
> 
> +  Status = RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof
> (RsaN));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = RsaCheckKey (mRsa);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +
> 
> +  Status = RsaSetKey (mRsa, RsaKeyN, KeyBuffer,
> KeySize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = RsaCheckKey (mRsa);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof
> (RsaE));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = RsaCheckKey (mRsa);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +
> 
> +  FreePool (KeyBuffer);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyRsaPkcs1SignVerify (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  UINT8    HashValue[SHA1_DIGEST_SIZE];
> 
> +  UINTN    HashSize;
> 
> +  UINT8    *Signature;
> 
> +  UINTN    SigSize;
> 
> +  BOOLEAN  Status;
> 
> +
> 
> +  //
> 
> +  // SHA-1 Digest Message for PKCS#1 Signature
> 
> +  //
> 
> +  HashSize = SHA1_DIGEST_SIZE;
> 
> +  ZeroMem (HashValue, HashSize);
> 
> +
> 
> +  Status  = Sha1HashAll (RsaSignData, AsciiStrLen
> (RsaSignData), HashValue);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  //
> 
> +  // Sign RSA PKCS#1-encoded Signature
> 
> +  //
> 
> +
> 
> +  Status = RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof
> (RsaN));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof
> (RsaE));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  Status = RsaSetKey (mRsa, RsaKeyD, RsaD, sizeof
> (RsaD));
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  SigSize = 0;
> 
> +  Status  = RsaPkcs1Sign (mRsa, HashValue, HashSize,
> NULL, &SigSize);
> 
> +  UT_ASSERT_FALSE (Status);
> 
> +  UT_ASSERT_NOT_EQUAL (SigSize, 0);
> 
> +
> 
> +  Signature = AllocatePool (SigSize);
> 
> +  Status  = RsaPkcs1Sign (mRsa, HashValue, HashSize,
> Signature, &SigSize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +  UT_ASSERT_EQUAL (SigSize, sizeof
> (RsaPkcs1Signature));
> 
> +
> 
> +  UT_ASSERT_MEM_EQUAL (Signature, RsaPkcs1Signature,
> SigSize);
> 
> +
> 
> +  //
> 
> +  // Verify RSA PKCS#1-encoded Signature
> 
> +  //
> 
> +  Status = RsaPkcs1Verify (mRsa, HashValue, HashSize,
> Signature, SigSize);
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  return UNIT_TEST_PASSED;
> 
> +}
> 
> +
> 
> +TEST_DESC mRsaTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> ------Class----------------------Function---------------
> ------------------Pre---------------------Post---------
> Context
> 
> +    //
> 
> +    {"TestVerifyRsaSetGetKeyComponents()",
> "CryptoPkg.BaseCryptLib.Rsa",
> TestVerifyRsaSetGetKeyComponents,
> TestVerifyRsaPreReq, TestVerifyRsaCleanUp, NULL},
> 
> +    {"TestVerifyRsaGenerateKeyComponents()",
> "CryptoPkg.BaseCryptLib.Rsa",
> TestVerifyRsaGenerateKeyComponents,
> TestVerifyRsaPreReq, TestVerifyRsaCleanUp, NULL},
> 
> +    {"TestVerifyRsaPkcs1SignVerify()",
> "CryptoPkg.BaseCryptLib.Rsa",
> TestVerifyRsaPkcs1SignVerify,
> TestVerifyRsaPreReq, TestVerifyRsaCleanUp, NULL},
> 
> +};
> 
> +
> 
> +UINTN mRsaTestNum = ARRAY_SIZE(mRsaTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TSTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TSTests.c
> new file mode 100644
> index 000000000000..2a891ef8bcb0
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TSTests.c
> @@ -0,0 +1,335 @@
> +/** @file
> 
> +  Sample Implementation for RFC3161 Time Stamping
> Verification.
> 
> +
> 
> +Copyright (c) 2014, Intel Corporation. All rights
> reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#include "TestBaseCryptLib.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 <xxx.cer> / f <xxx.pfx> /p
> <pass> /fd <digestAlg>
> 
> +//     /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
> 
> +  };
> 
> +
> 
> +UNIT_TEST_STATUS
> 
> +EFIAPI
> 
> +TestVerifyImageTimestampVerify (
> 
> +  IN UNIT_TEST_CONTEXT           Context
> 
> +  )
> 
> +{
> 
> +  BOOLEAN   Status;
> 
> +  EFI_TIME  SigningTime;
> 
> +
> 
> +  Status = FALSE;
> 
> +
> 
> +  //
> 
> +  // Verify RFC3161 Timestamp CounterSignature.
> 
> +  //
> 
> +  Status = ImageTimestampVerify (
> 
> +             AuthenticodeWithTS,
> 
> +             sizeof (AuthenticodeWithTS),
> 
> +             TSTrustedCert,
> 
> +             sizeof (TSTrustedCert),
> 
> +             &SigningTime
> 
> +             );
> 
> +  UT_ASSERT_TRUE (Status);
> 
> +
> 
> +  UT_ASSERT_EQUAL (SigningTime.Year, 2014);
> 
> +  UT_ASSERT_EQUAL (SigningTime.Month, 7);
> 
> +  UT_ASSERT_EQUAL (SigningTime.Day, 28);
> 
> +  UT_ASSERT_EQUAL (SigningTime.Hour, 8);
> 
> +  UT_ASSERT_EQUAL (SigningTime.Minute, 50);
> 
> +  UT_ASSERT_EQUAL (SigningTime.Second, 3);
> 
> +
> 
> +  return Status;
> 
> +}
> 
> +
> 
> +TEST_DESC mImageTimestampTest[] = {
> 
> +    //
> 
> +    // -----Description--------------------------------
> ------Class----------------------------Function---------
> --------Pre---Post--Context
> 
> +    //
> 
> +    {"TestVerifyImageTimestampVerify()",
> "CryptoPkg.BaseCryptLib.ImageTimestamp",
> TestVerifyImageTimestampVerify, NULL, NULL, NULL},
> 
> +};
> 
> +
> 
> +UINTN mImageTimestampTestNum =
> ARRAY_SIZE(mImageTimestampTest);
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestM
> ain.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestM
> ain.c
> new file mode 100644
> index 000000000000..88a3f96305c3
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestM
> ain.c
> @@ -0,0 +1,81 @@
> +/** @file
> 
> +  This is a sample to demostrate the usage of the Unit
> Test Library that
> 
> +  supports the PEI, DXE, SMM, UEFI SHell, and host
> execution environments.
> 
> +
> 
> +  Copyright (c) Microsoft Corporation.<BR>
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +#include "TestBaseCryptLib.h"
> 
> +
> 
> +
> 
> +/**
> 
> +  Initialize the unit test framework, suite, and unit
> tests for the
> 
> +  sample unit tests and run the unit tests.
> 
> +
> 
> +  @retval  EFI_SUCCESS           All test cases were
> dispatched.
> 
> +  @retval  EFI_OUT_OF_RESOURCES  There are not enough
> resources available to
> 
> +                                 initialize the unit
> tests.
> 
> +**/
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +UefiTestMain (
> 
> +  VOID
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS                  Status;
> 
> +  UNIT_TEST_FRAMEWORK_HANDLE  Framework;
> 
> +
> 
> +  DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME,
> UNIT_TEST_VERSION ));
> 
> +  CreateUnitTest(UNIT_TEST_NAME, UNIT_TEST_VERSION,
> &Framework);
> 
> +
> 
> +  //
> 
> +  // Execute the tests.
> 
> +  //
> 
> +  Status = RunAllTestSuites (Framework);
> 
> +
> 
> +  if (Framework) {
> 
> +    FreeUnitTestFramework (Framework);
> 
> +  }
> 
> +
> 
> +  return Status;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Standard PEIM entry point for target based unit test
> execution from PEI.
> 
> +**/
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +PeiEntryPoint (
> 
> +  IN EFI_PEI_FILE_HANDLE     FileHandle,
> 
> +  IN CONST EFI_PEI_SERVICES  **PeiServices
> 
> +  )
> 
> +{
> 
> +  return UefiTestMain ();
> 
> +}
> 
> +
> 
> +/**
> 
> +  Standard UEFI entry point for target based unit test
> execution from DXE, SMM,
> 
> +  UEFI Shell.
> 
> +**/
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +DxeEntryPoint (
> 
> +  IN EFI_HANDLE        ImageHandle,
> 
> +  IN EFI_SYSTEM_TABLE  *SystemTable
> 
> +  )
> 
> +{
> 
> +  return UefiTestMain ();
> 
> +}
> 
> +
> 
> +/**
> 
> +  Standard POSIX C entry point for host based unit test
> execution.
> 
> +**/
> 
> +int
> 
> +main (
> 
> +  int argc,
> 
> +  char *argv[]
> 
> +  )
> 
> +{
> 
> +  return UefiTestMain ();
> 
> +}
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestM
> ainBCOP.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestM
> ainBCOP.c
> new file mode 100644
> index 000000000000..69bd1142e396
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestM
> ainBCOP.c
> @@ -0,0 +1,58 @@
> +/** @file
> 
> +  This is a sample to demostrate the usage of the Unit
> Test Library that
> 
> +  supports the PEI, DXE, SMM, UEFI SHell, and host
> execution environments.
> 
> +
> 
> +  Copyright (c) Microsoft Corporation.<BR>
> 
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +#include "TestBaseCryptLib.h"
> 
> +
> 
> +
> 
> +/**
> 
> +  Initialize the unit test framework, suite, and unit
> tests for the
> 
> +  sample unit tests and run the unit tests.
> 
> +
> 
> +  @retval  EFI_SUCCESS           All test cases were
> dispatched.
> 
> +  @retval  EFI_OUT_OF_RESOURCES  There are not enough
> resources available to
> 
> +                                 initialize the unit
> tests.
> 
> +**/
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +UefiTestMain (
> 
> +  VOID
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS                  Status;
> 
> +  UNIT_TEST_FRAMEWORK_HANDLE  Framework;
> 
> +
> 
> +  DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME,
> UNIT_TEST_VERSION ));
> 
> +  CreateUnitTest(UNIT_TEST_NAME, UNIT_TEST_VERSION,
> &Framework);
> 
> +
> 
> +  //
> 
> +  // Execute the tests.
> 
> +  //
> 
> +  Status = RunAllTestSuites (Framework);
> 
> +  if (Framework) {
> 
> +    FreeUnitTestFramework (Framework);
> 
> +  }
> 
> +
> 
> +  return Status;
> 
> +}
> 
> +
> 
> +/**
> 
> +  Standard POSIX C entry point for host based unit test
> execution.
> 
> +**/
> 
> +int
> 
> +main (
> 
> +  int argc,
> 
> +  char *argv[]
> 
> +  )
> 
> +{
> 
> +  EFI_STATUS Status;
> 
> +  // Install the BaseCryptLib protocol
> 
> +  // Run the tests
> 
> +  Status = UefiTestMain ();
> 
> +  // Uninstall it
> 
> +  return Status;
> 
> +}
> 
> diff --git a/CryptoPkg/CryptoPkg.ci.yaml
> b/CryptoPkg/CryptoPkg.ci.yaml
> index f54ebfb22e70..0228e63d6617 100644
> --- a/CryptoPkg/CryptoPkg.ci.yaml
> +++ b/CryptoPkg/CryptoPkg.ci.yaml
> @@ -8,6 +8,10 @@
>      "CompilerPlugin": {
> 
>          "DscPath": "CryptoPkg.dsc"
> 
>      },
> 
> +    ## options defined
> .pytool/Plugin/HostUnitTestCompilerPlugin
> 
> +    "HostUnitTestCompilerPlugin": {
> 
> +        "DscPath":
> "Test/UnitTest/CryptoPkgHostUnitTest.dsc"
> 
> +    },
> 
>      "CharEncodingCheck": {
> 
>          "IgnoreFiles": []
> 
>      },
> 
> diff --git a/CryptoPkg/CryptoPkg.dsc
> b/CryptoPkg/CryptoPkg.dsc
> index 1af78468a19c..28295ec80ec6 100644
> --- a/CryptoPkg/CryptoPkg.dsc
> +++ b/CryptoPkg/CryptoPkg.dsc
> @@ -223,6 +223,32 @@
>  #       generated for it, but the binary will not be
> put into any firmware volume.
> 
>  #
> 
> 
> ########################################################
> ###########################################
> 
> +[Components]
> 
> +  CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> 
> +
> CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.
> inf
> 
> +
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCry
> ptLibUefiShell.inf {
> 
> +    <LibraryClasses>
> 
> +
> PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPo
> int.inf
> 
> +
> UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint
> /UefiDriverEntryPoint.inf
> 
> +
> UefiApplicationEntryPoint|MdePkg/Library/UefiApplication
> EntryPoint/UefiApplicationEntryPoint.inf
> 
> +
> 
> +      BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
> 
> +
> BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib
> .inf
> 
> +
> DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNul
> l.inf
> 
> +
> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationL
> ib/UefiMemoryAllocationLib.inf
> 
> +
> PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> 
> +
> PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServices
> Lib.inf
> 
> +
> PerformanceLib|MdePkg/Library/BasePerformanceLibNull/Bas
> ePerformanceLibNull.inf
> 
> +
> PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
> 
> +
> UefiBootServicesTableLib|MdePkg/Library/UefiBootServices
> TableLib/UefiBootServicesTableLib.inf
> 
> +
> 
> +
> UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/Uni
> tTestLib.inf
> 
> +
> UnitTestPersistenceLib|UnitTestFrameworkPkg/Library/Unit
> TestPersistenceLibNull/UnitTestPersistenceLibNull.inf
> 
> +
> UnitTestResultReportLib|UnitTestFrameworkPkg/Library/Uni
> tTestResultReportLib/UnitTestResultReportLibDebugLib.inf
> 
> +    <LibraryClasses.common.UEFI_APPLICATION>
> 
> +
> UnitTestResultReportLib|UnitTestFrameworkPkg/Library/Uni
> tTestResultReportLib/UnitTestResultReportLibConOut.inf
> 
> +  }
> 
> +
> 
>  !if $(CRYPTO_SERVICES) == PACKAGE
> 
>  [Components]
> 
>    CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> 
> diff --git
> a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLi
> b.inf
> b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLi
> b.inf
> new file mode 100644
> index 000000000000..47515f06687e
> --- /dev/null
> +++
> b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLi
> b.inf
> @@ -0,0 +1,90 @@
> +## @file
> 
> +#  Cryptographic Library Instance for host based unit
> tests
> 
> +#
> 
> +#  Copyright (c) 2009 - 2019, Intel Corporation. All
> rights reserved.<BR>
> 
> +#  Copyright (c) Microsoft Corporation.
> 
> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +#
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  INF_VERSION                    = 0x00010005
> 
> +  BASE_NAME                      = BaseCryptLib
> 
> +  FILE_GUID                      = c97d34aa-caf8-42cd-
> 8261-8705f46304b3
> 
> +  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 ARM AARCH64
> 
> +#
> 
> +
> 
> +[Sources]
> 
> +  InternalCryptLib.h
> 
> +  Hash/CryptMd5.c
> 
> +  Hash/CryptSha1.c
> 
> +  Hash/CryptSha256.c
> 
> +  Hash/CryptSha512.c
> 
> +  Hash/CryptSm3.c
> 
> +  Hmac/CryptHmacSha256.c
> 
> +  Kdf/CryptHkdf.c
> 
> +  Cipher/CryptAes.c
> 
> +  Pk/CryptRsaBasic.c
> 
> +  Pk/CryptRsaExt.c
> 
> +  Pk/CryptPkcs1Oaep.c
> 
> +  Pk/CryptPkcs5Pbkdf2.c
> 
> +  Pk/CryptPkcs7Sign.c
> 
> +  Pk/CryptPkcs7VerifyCommon.c
> 
> +  Pk/CryptPkcs7VerifyBase.c
> 
> +  Pk/CryptPkcs7VerifyEku.c
> 
> +  Pk/CryptDh.c
> 
> +  Pk/CryptX509.c
> 
> +  Pk/CryptAuthenticode.c
> 
> +  Pk/CryptTs.c
> 
> +  Pem/CryptPem.c
> 
> +
> 
> +  SysCall/UnitTestHostCrtWrapper.c
> 
> +
> 
> +[Sources.Ia32]
> 
> +  Rand/CryptRandTsc.c
> 
> +
> 
> +[Sources.X64]
> 
> +  Rand/CryptRandTsc.c
> 
> +
> 
> +[Sources.ARM]
> 
> +  Rand/CryptRand.c
> 
> +
> 
> +[Sources.AARCH64]
> 
> +  Rand/CryptRand.c
> 
> +
> 
> +[Packages]
> 
> +  MdePkg/MdePkg.dec
> 
> +  CryptoPkg/CryptoPkg.dec
> 
> +
> 
> +[LibraryClasses]
> 
> +  BaseLib
> 
> +  BaseMemoryLib
> 
> +  MemoryAllocationLib
> 
> +  DebugLib
> 
> +  OpensslLib
> 
> +
> 
> +#
> 
> +# 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
> 
> +  # C4018: '>': signed/unsigned mismatch
> 
> +  MSFT:*_*_*_CC_FLAGS = /wd4090 /wd4018
> 
> +
> 
> +  # -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
> 
> +
> 
> +  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
> 
> +  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
> 
> +
> 
> +  XCODE:*_*_*_CC_FLAGS = -std=c99
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/CryptoPkgHostUnitTest.dsc
> b/CryptoPkg/Test/UnitTest/CryptoPkgHostUnitTest.dsc
> new file mode 100644
> index 000000000000..d8605176e697
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/CryptoPkgHostUnitTest.dsc
> @@ -0,0 +1,35 @@
> +## @file
> 
> +# CryptoPkg DSC file used to build host-based unit
> tests.
> 
> +#
> 
> +# Copyright (c) Microsoft Corporation.<BR>
> 
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +#
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  PLATFORM_NAME           = CryptoPkgHostTest
> 
> +  PLATFORM_GUID           = C7F97D6D-54AC-45A9-8197-
> CC99B20CC7EC
> 
> +  PLATFORM_VERSION        = 0.1
> 
> +  DSC_SPECIFICATION       = 0x00010005
> 
> +  OUTPUT_DIRECTORY        = Build/CryptoPkg/HostTest
> 
> +  SUPPORTED_ARCHITECTURES = IA32|X64
> 
> +  BUILD_TARGETS           = NOOPT
> 
> +  SKUID_IDENTIFIER        = DEFAULT
> 
> +
> 
> +!include
> UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
> 
> +
> 
> +[LibraryClasses]
> 
> +
> OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf
> 
> +
> BaseCryptLib|CryptoPkg/Library/BaseCryptLib/UnitTestHost
> BaseCryptLib.inf
> 
> +
> 
> +[LibraryClasses.AARCH64, LibraryClasses.ARM]
> 
> +
> RngLib|MdePkg/Library/BaseRngLibNull/BaseRngLibNull.inf
> 
> +
> 
> +[LibraryClasses.X64, LibraryClasses.IA32]
> 
> +  RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf
> 
> +
> 
> +[Components]
> 
> +  #
> 
> +  # Build HOST_APPLICATION that tests the
> SampleUnitTest
> 
> +  #
> 
> +
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCry
> ptLibHost.inf
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuT
> estSignatures.h
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuT
> estSignatures.h
> new file mode 100644
> index 000000000000..9f5f813ef8b1
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuT
> estSignatures.h
> @@ -0,0 +1,789 @@
> +/*++
> 
> +
> 
> +Copyright (C) Microsoft Corporation. All Rights
> Reserved.
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +Module Name:
> 
> +  AllTestSignatures.h
> 
> +
> 
> +Abstract:
> 
> +  This file has test signatures in byte array format
> for Unit-Testing the
> 
> +  Enhanced Key Usage (EKU) parsing function.
> 
> +
> 
> +  EFI_STATUS
> 
> +  EFIAPI
> 
> +  VerifyEKUsInPkcs7Signature (
> 
> +    IN CONST UINT8  *Pkcs7Signature,
> 
> +    IN CONST UINT32  SignatureSize,
> 
> +    IN CONST CHAR8  *RequiredEKUs[],
> 
> +    IN CONST UINT32  RequiredEKUsSize,
> 
> +    IN BOOLEAN       RequireAllPresent
> 
> +  );
> 
> +
> 
> +  Note:  These byte arrays were created by running
> BinToH.exe on the P7B
> 
> +         signature files.
> 
> +--*/
> 
> +
> 
> +
> 
> +//
> 
> +// This is the ProductionECCSignature.p7b in byte array
> format.  It has one
> 
> +// EKU in it. (Firmware signing)
> 
> +// "1.3.6.1.4.1.311.76.9.21.1"
> 
> +//
> 
> +CONST UINT8 ProductionECCSignature[] =
> 
> +{
> 
> + 0x30, 0x82, 0x04, 0xC0, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0x80,
> 0x30, 0x82, 0x03, 0x7C, 0x30, 0x82, 0x03,
> 
> + 0x22, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x13, 0x33,
> 0x00, 0x00, 0x00, 0x03, 0x7E, 0x2E, 0x8F,
> 
> + 0xBD, 0xA5, 0xC9, 0x2C, 0x13, 0x00, 0x00, 0x00, 0x00,
> 0x00, 0x03, 0x30, 0x0A, 0x06, 0x08, 0x2A,
> 
> + 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x81,
> 0x8F, 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, 0x39,
> 
> + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x30,
> 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F,
> 
> + 0x66, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x53, 0x75,
> 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x41,
> 
> + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20,
> 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72,
> 
> + 0x65, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x38,
> 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30,
> 
> + 0x37, 0x31, 0x32, 0x31, 0x38, 0x33, 0x37, 0x30, 0x37,
> 0x5A, 0x17, 0x0D, 0x31, 0x39, 0x30, 0x37,
> 
> + 0x31, 0x32, 0x31, 0x38, 0x33, 0x37, 0x30, 0x37, 0x5A,
> 0x30, 0x3A, 0x31, 0x38, 0x30, 0x36, 0x06,
> 
> + 0x03, 0x55, 0x04, 0x03, 0x13, 0x2F, 0x4D, 0x69, 0x63,
> 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20,
> 
> + 0x45, 0x43, 0x43, 0x20, 0x53, 0x75, 0x72, 0x66, 0x61,
> 0x63, 0x65, 0x20, 0x41, 0x63, 0x63, 0x65,
> 
> + 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20, 0x46, 0x69, 0x72,
> 0x6D, 0x77, 0x61, 0x72, 0x65, 0x20, 0x53,
> 
> + 0x69, 0x67, 0x6E, 0x65, 0x72, 0x30, 0x59, 0x30, 0x13,
> 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D,
> 
> + 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D,
> 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04,
> 
> + 0x7D, 0xDF, 0xDE, 0xFA, 0xEE, 0xA5, 0x66, 0x33, 0xAA,
> 0xCC, 0xA4, 0x18, 0x65, 0x9E, 0x3A, 0xC6,
> 
> + 0x4B, 0xCB, 0xD5, 0x78, 0x94, 0x14, 0xEE, 0xAA, 0xF3,
> 0x9D, 0xCB, 0x38, 0x6C, 0x5D, 0xFE, 0x3F,
> 
> + 0x8A, 0xA9, 0x8D, 0x04, 0xD2, 0xFE, 0xAA, 0x38, 0xF3,
> 0xD6, 0x4A, 0x7E, 0xCF, 0x12, 0x95, 0xCF,
> 
> + 0xAD, 0x92, 0x33, 0xF7, 0x38, 0x83, 0xC5, 0xFD, 0xCF,
> 0xD0, 0x96, 0x08, 0xCA, 0x62, 0x7D, 0x22,
> 
> + 0xA3, 0x82, 0x01, 0xAF, 0x30, 0x82, 0x01, 0xAB, 0x30,
> 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01,
> 
> + 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30,
> 0x16, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04,
> 
> + 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04,
> 0x01, 0x82, 0x37, 0x4C, 0x09, 0x15, 0x01,
> 
> + 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01,
> 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1D,
> 
> + 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14,
> 0xE7, 0xD1, 0xD4, 0x74, 0x71, 0xF4, 0xC9,
> 
> + 0x35, 0x04, 0xA7, 0x9A, 0x1E, 0x0C, 0xDD, 0xF4, 0x8D,
> 0x5C, 0x1E, 0xF2, 0x29, 0x30, 0x37, 0x06,
> 
> + 0x03, 0x55, 0x1D, 0x11, 0x04, 0x30, 0x30, 0x2E, 0xA4,
> 0x2C, 0x30, 0x2A, 0x31, 0x10, 0x30, 0x0E,
> 
> + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x07, 0x53, 0x75,
> 0x72, 0x66, 0x61, 0x63, 0x65, 0x31, 0x16,
> 
> + 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x05, 0x13, 0x0D,
> 0x34, 0x34, 0x30, 0x38, 0x31, 0x31, 0x2B,
> 
> + 0x34, 0x34, 0x30, 0x38, 0x36, 0x32, 0x30, 0x1F, 0x06,
> 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30,
> 
> + 0x16, 0x80, 0x14, 0x6F, 0x3A, 0xCC, 0x1B, 0x2F, 0x17,
> 0x5C, 0xED, 0xEB, 0xC8, 0xBF, 0x93, 0xA7,
> 
> + 0xB5, 0x93, 0xD1, 0x4D, 0x40, 0xAA, 0x03, 0x30, 0x75,
> 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x6E,
> 
> + 0x30, 0x6C, 0x30, 0x6A, 0xA0, 0x68, 0xA0, 0x66, 0x86,
> 0x64, 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, 0x6F, 0x70, 0x73,
> 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x4D, 0x69,
> 
> + 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x25, 0x32,
> 0x30, 0x45, 0x43, 0x43, 0x25, 0x32, 0x30,
> 
> + 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x25, 0x32,
> 0x30, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73,
> 
> + 0x6F, 0x72, 0x79, 0x25, 0x32, 0x30, 0x46, 0x69, 0x72,
> 0x6D, 0x77, 0x61, 0x72, 0x65, 0x25, 0x32,
> 
> + 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x32, 0x30, 0x31,
> 0x38, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x81,
> 
> + 0x82, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07,
> 0x01, 0x01, 0x04, 0x76, 0x30, 0x74, 0x30,
> 
> + 0x72, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07,
> 0x30, 0x02, 0x86, 0x66, 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,
> 0x6F, 0x70, 0x73, 0x2F, 0x63, 0x65, 0x72,
> 
> + 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,
> 0x6F, 0x66, 0x74, 0x25, 0x32, 0x30, 0x45,
> 
> + 0x43, 0x43, 0x25, 0x32, 0x30, 0x53, 0x75, 0x72, 0x66,
> 0x61, 0x63, 0x65, 0x25, 0x32, 0x30, 0x41,
> 
> + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x25,
> 0x32, 0x30, 0x46, 0x69, 0x72, 0x6D, 0x77,
> 
> + 0x61, 0x72, 0x65, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25,
> 0x32, 0x30, 0x32, 0x30, 0x31, 0x38, 0x2E,
> 
> + 0x63, 0x72, 0x74, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86,
> 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03,
> 
> + 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x3D, 0xCF, 0xEF,
> 0xB8, 0xF0, 0x87, 0xEE, 0x7E, 0x80, 0x71,
> 
> + 0x04, 0x77, 0x68, 0xDC, 0x66, 0x2F, 0x09, 0xA7, 0xF0,
> 0x76, 0x57, 0x7C, 0x12, 0x5A, 0xE4, 0x80,
> 
> + 0x5A, 0xA0, 0xF2, 0x2C, 0x45, 0x1B, 0x02, 0x21, 0x00,
> 0xEB, 0x5F, 0x89, 0xD5, 0xEB, 0x03, 0x46,
> 
> + 0x9E, 0x08, 0x95, 0x2A, 0x39, 0x30, 0x5D, 0x49, 0xB6,
> 0x24, 0xCE, 0x78, 0x1B, 0xB8, 0x1D, 0x0F,
> 
> + 0xD1, 0x24, 0xD0, 0xA9, 0x18, 0x0F, 0x45, 0x4F, 0xF6,
> 0x31, 0x82, 0x01, 0x17, 0x30, 0x82, 0x01,
> 
> + 0x13, 0x02, 0x01, 0x01, 0x30, 0x81, 0xA7, 0x30, 0x81,
> 0x8F, 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, 0x39,
> 
> + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x30,
> 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F,
> 
> + 0x66, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x53, 0x75,
> 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x41,
> 
> + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20,
> 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72,
> 
> + 0x65, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x38,
> 0x02, 0x13, 0x33, 0x00, 0x00, 0x00, 0x03,
> 
> + 0x7E, 0x2E, 0x8F, 0xBD, 0xA5, 0xC9, 0x2C, 0x13, 0x00,
> 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x0D,
> 
> + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04,
> 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06,
> 
> + 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05,
> 0x00, 0x04, 0x48, 0x30, 0x46, 0x02, 0x21,
> 
> + 0x00, 0x85, 0xC7, 0x25, 0x5C, 0xF8, 0x5A, 0x13, 0xB7,
> 0xB6, 0x3A, 0xF1, 0x04, 0x72, 0xAC, 0xB3,
> 
> + 0xF8, 0xC3, 0xE0, 0xE3, 0xD7, 0x98, 0x1B, 0xCF, 0x04,
> 0xA8, 0x0C, 0x7B, 0xBB, 0x7D, 0x40, 0xC2,
> 
> + 0x99, 0x02, 0x21, 0x00, 0xA3, 0x83, 0x12, 0xE4, 0xB6,
> 0x3C, 0xC9, 0x3F, 0x05, 0xCF, 0x70, 0x57,
> 
> + 0x54, 0x74, 0x0E, 0xEC, 0x14, 0xAD, 0x2C, 0x66, 0x9D,
> 0x72, 0x73, 0x62, 0x41, 0xA6, 0xC7, 0x90,
> 
> + 0x05, 0x35, 0xF5, 0x80,
> 
> +};
> 
> +
> 
> +//
> 
> +// This is the
> TestSignedWithMultipleCerts.bin.Signature.p7b in byte
> array
> 
> +// format.  It has two certs in it, and the leaf has an
> EKU of
> 
> +//  "1.3.6.1.4.1.311.76.9.21.1"
> 
> +//
> 
> +CONST UINT8 TestSignedMultipleCerts[] =
> 
> +{
> 
> +  0x30, 0x82, 0x04, 0x90, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> +  0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> +  0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0xC2,
> 0x30, 0x82, 0x01, 0xC5, 0x30, 0x82, 0x01,
> 
> +  0x6A, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x16,
> 0x2F, 0xD8, 0x2B, 0x8A, 0x98, 0x6A, 0x8A,
> 
> +  0x43, 0xC2, 0x22, 0xA5, 0x47, 0xA1, 0x18, 0xDD, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x30, 0x26, 0x31, 0x24, 0x30,
> 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54,
> 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D,
> 
> +  0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65,
> 0x72, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D,
> 
> +  0x31, 0x38, 0x30, 0x37, 0x31, 0x38, 0x32, 0x33, 0x31,
> 0x36, 0x31, 0x32, 0x5A, 0x17, 0x0D, 0x33,
> 
> +  0x38, 0x30, 0x37, 0x31, 0x38, 0x32, 0x33, 0x32, 0x36,
> 0x31, 0x32, 0x5A, 0x30, 0x28, 0x31, 0x26,
> 
> +  0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1D,
> 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65,
> 
> +  0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77,
> 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E,
> 
> +  0x65, 0x72, 0x4C, 0x65, 0x61, 0x66, 0x30, 0x59, 0x30,
> 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,
> 
> +  0x04, 0x2E, 0x4C, 0x85, 0xFD, 0x86, 0x85, 0x4C, 0x55,
> 0x96, 0x17, 0xE3, 0x0C, 0xC1, 0xCB, 0xD9,
> 
> +  0x95, 0xCF, 0xC7, 0xEA, 0x57, 0x02, 0x5C, 0x4F, 0x92,
> 0x7C, 0x35, 0xBF, 0x2B, 0x3D, 0xBA, 0x14,
> 
> +  0xE5, 0x39, 0x9D, 0x9B, 0x64, 0x4A, 0x25, 0x29, 0xD5,
> 0x61, 0xDA, 0xFD, 0x51, 0x24, 0xB3, 0xE2,
> 
> +  0x4E, 0x00, 0x59, 0xDF, 0xB4, 0x96, 0x42, 0x59, 0xA4,
> 0xBC, 0xA7, 0x64, 0x8F, 0x3A, 0x17, 0x33,
> 
> +  0x55, 0xA3, 0x78, 0x30, 0x76, 0x30, 0x0E, 0x06, 0x03,
> 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04,
> 
> +  0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03,
> 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D,
> 
> +  0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
> 0x4C, 0x09, 0x15, 0x01, 0x30, 0x0C, 0x06,
> 
> +  0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02,
> 0x30, 0x00, 0x30, 0x1F, 0x06, 0x03, 0x55,
> 
> +  0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x63,
> 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42,
> 
> +  0xEA, 0x55, 0x95, 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2,
> 0xA9, 0x2D, 0x2F, 0x30, 0x1D, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xD6, 0x4A,
> 0xF8, 0x77, 0x21, 0x34, 0xEC, 0xC0, 0xAE,
> 
> +  0x4D, 0x8F, 0x17, 0x86, 0xFF, 0xEA, 0xE3, 0x83, 0x42,
> 0x32, 0x83, 0x30, 0x0A, 0x06, 0x08, 0x2A,
> 
> +  0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x49,
> 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x9A,
> 
> +  0xAB, 0xE3, 0x6F, 0xD7, 0xB3, 0x0F, 0x83, 0x8A, 0xA1,
> 0x64, 0x70, 0xC1, 0xAC, 0x54, 0xE2, 0x59,
> 
> +  0x7C, 0x8B, 0x11, 0x8F, 0x76, 0xB1, 0x9C, 0x5F, 0xDA,
> 0x7D, 0x04, 0x3C, 0x73, 0xB5, 0xCF, 0x02,
> 
> +  0x21, 0x00, 0xB3, 0x31, 0xC1, 0x48, 0x3C, 0xEE, 0xA1,
> 0x6D, 0xA9, 0xF7, 0xF5, 0x9F, 0xD3, 0x6F,
> 
> +  0x7D, 0x6F, 0xAB, 0x76, 0x12, 0xEE, 0x01, 0x4D, 0xFC,
> 0xE6, 0x87, 0xEA, 0xAB, 0x09, 0x98, 0xD8,
> 
> +  0x97, 0x6F, 0x30, 0x82, 0x01, 0xF5, 0x30, 0x82, 0x01,
> 0x58, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02,
> 
> +  0x10, 0x4D, 0x88, 0xBF, 0x04, 0xDF, 0x10, 0x57, 0xBA,
> 0x43, 0x53, 0x6C, 0xFD, 0xA5, 0x90, 0xA7,
> 
> +  0x6F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x04, 0x03, 0x02, 0x30, 0x28, 0x31,
> 
> +  0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 0x1D, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63,
> 
> +  0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D,
> 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67,
> 
> +  0x6E, 0x65, 0x72, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E,
> 0x17, 0x0D, 0x31, 0x38, 0x30, 0x31, 0x31,
> 
> +  0x36, 0x32, 0x33, 0x32, 0x31, 0x31, 0x33, 0x5A, 0x17,
> 0x0D, 0x33, 0x38, 0x30, 0x31, 0x31, 0x36,
> 
> +  0x32, 0x33, 0x33, 0x31, 0x31, 0x33, 0x5A, 0x30, 0x26,
> 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55,
> 
> +  0x04, 0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61,
> 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x46,
> 
> +  0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69,
> 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30,
> 
> +  0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86,
> 
> +  0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,
> 0x04, 0x0E, 0x58, 0xA3, 0xDB, 0xD3, 0x9C,
> 
> +  0x21, 0xFC, 0x63, 0x6F, 0xBD, 0xB9, 0xA7, 0x8A, 0xB3,
> 0xBF, 0x40, 0x87, 0x43, 0x06, 0x53, 0x91,
> 
> +  0x54, 0x31, 0x11, 0x0D, 0x3B, 0x50, 0x32, 0xEA, 0x11,
> 0xA3, 0x3D, 0x77, 0x08, 0x9E, 0xBC, 0x06,
> 
> +  0x5C, 0x21, 0x48, 0x9D, 0x9B, 0x7C, 0x45, 0xFD, 0x4B,
> 0xD7, 0x0C, 0x04, 0xD4, 0xE0, 0x0C, 0xB7,
> 
> +  0x6C, 0xBF, 0x22, 0xE1, 0x00, 0x99, 0x75, 0x39, 0x27,
> 0x59, 0xA3, 0x66, 0x30, 0x64, 0x30, 0x0E,
> 
> +  0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04,
> 0x04, 0x03, 0x02, 0x02, 0x04, 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, 0x6D,
> 
> +  0x8B, 0x24, 0xBF, 0x20, 0x9D, 0x54, 0xAF, 0x04, 0x5B,
> 0x84, 0x91, 0x96, 0xAE, 0x99, 0xC1, 0x23,
> 
> +  0x1C, 0x0E, 0xAC, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D,
> 0x0E, 0x04, 0x16, 0x04, 0x14, 0x63, 0x69,
> 
> +  0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95,
> 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9,
> 
> +  0x2D, 0x2F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48,
> 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81,
> 
> +  0x8A, 0x00, 0x30, 0x81, 0x86, 0x02, 0x41, 0x2A, 0xD4,
> 0xFC, 0x35, 0x28, 0x73, 0x9F, 0xB3, 0x8A,
> 
> +  0xE3, 0x13, 0x7F, 0xCA, 0x36, 0x88, 0x1E, 0xD0, 0x95,
> 0xDC, 0xE9, 0x8A, 0x9D, 0xC0, 0x27, 0x8C,
> 
> +  0xD8, 0x57, 0x57, 0x5F, 0xDC, 0x13, 0x53, 0x68, 0xED,
> 0x2F, 0x4D, 0x6A, 0x77, 0xA2, 0x55, 0x48,
> 
> +  0xCB, 0x24, 0x55, 0x3A, 0x30, 0x32, 0xE5, 0x5C, 0xDF,
> 0x96, 0xF1, 0x15, 0xD4, 0xE7, 0xCD, 0x6A,
> 
> +  0x26, 0xBD, 0x7B, 0x92, 0x50, 0x74, 0xE4, 0x56, 0x02,
> 0x41, 0x46, 0x33, 0x61, 0x30, 0xFF, 0xA8,
> 
> +  0x53, 0x31, 0x38, 0xCA, 0x6B, 0x77, 0x88, 0x36, 0x9A,
> 0x0B, 0x57, 0xC3, 0xD1, 0xB2, 0xA7, 0x40,
> 
> +  0x53, 0x6A, 0xD1, 0x6C, 0x8A, 0x8B, 0x3C, 0x29, 0xC1,
> 0x2B, 0x82, 0x61, 0x2F, 0x1A, 0x9F, 0x2C,
> 
> +  0x9A, 0x81, 0xD0, 0x2B, 0x3E, 0x0D, 0x99, 0xB7, 0xD4,
> 0x7E, 0xA7, 0xEA, 0x0C, 0x8E, 0x13, 0x0E,
> 
> +  0x53, 0x65, 0x48, 0x17, 0xE5, 0xFA, 0x91, 0x79, 0x98,
> 0xC7, 0xA1, 0x31, 0x81, 0xA6, 0x30, 0x81,
> 
> +  0xA3, 0x02, 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31,
> 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04,
> 
> +  0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63,
> 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69,
> 
> +  0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67,
> 0x6E, 0x65, 0x72, 0x43, 0x41, 0x02, 0x10,
> 
> +  0x16, 0x2F, 0xD8, 0x2B, 0x8A, 0x98, 0x6A, 0x8A, 0x43,
> 0xC2, 0x22, 0xA5, 0x47, 0xA1, 0x18, 0xDD,
> 
> +  0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65,
> 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 
> +  0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02,
> 0x01, 0x05, 0x00, 0x04, 0x46, 0x30, 0x44,
> 
> +  0x02, 0x20, 0x40, 0xD4, 0xD4, 0xAF, 0x89, 0xFA, 0x83,
> 0x44, 0x7B, 0x59, 0xB4, 0x2B, 0x99, 0xF0,
> 
> +  0xD4, 0xB0, 0x75, 0x2E, 0x56, 0xAA, 0x0A, 0xDA, 0xCC,
> 0x82, 0xD5, 0xBC, 0x8D, 0xC4, 0x00, 0xF6,
> 
> +  0x46, 0xA4, 0x02, 0x20, 0x6F, 0xA7, 0xE1, 0x32, 0xB2,
> 0xF2, 0x5A, 0x69, 0xC5, 0x45, 0xB6, 0x35,
> 
> +  0x04, 0x05, 0x9B, 0xAC, 0x44, 0xB4, 0xA0, 0xE1, 0x25,
> 0x92, 0xE8, 0x3E, 0x8F, 0x85, 0xA3, 0xBE,
> 
> +  0x34, 0xFE, 0x78, 0x31,
> 
> +};
> 
> +
> 
> +//
> 
> +// This is the
> TestSignedWithMultipleEKUsInCert.bin.Signature.p7b
> signature in
> 
> +// byte array format.  It has two EKU's in it:
> 
> +// "1.3.6.1.4.1.311.76.9.21.1"
> 
> +// "1.3.6.1.4.1.311.76.9.21.2"
> 
> +//
> 
> +CONST UINT8 TestSignedWithMultipleEKUsInCert[] =
> 
> +{
> 
> +  0x30, 0x82, 0x06, 0x2C, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> +  0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> +  0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x04, 0x9E,
> 0x30, 0x82, 0x01, 0xF5, 0x30, 0x82, 0x01,
> 
> +  0x58, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x4D,
> 0x88, 0xBF, 0x04, 0xDF, 0x10, 0x57, 0xBA,
> 
> +  0x43, 0x53, 0x6C, 0xFD, 0xA5, 0x90, 0xA7, 0x6F, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x30, 0x28, 0x31, 0x26, 0x30,
> 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x1D, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54,
> 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D,
> 
> +  0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65,
> 0x72, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E,
> 
> +  0x17, 0x0D, 0x31, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32,
> 0x33, 0x32, 0x31, 0x31, 0x33, 0x5A, 0x17,
> 
> +  0x0D, 0x33, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33,
> 0x33, 0x31, 0x31, 0x33, 0x5A, 0x30, 0x26,
> 
> +  0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03,
> 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61,
> 
> +  0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72,
> 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69,
> 
> +  0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x59, 0x30,
> 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,
> 
> +  0x04, 0x0E, 0x58, 0xA3, 0xDB, 0xD3, 0x9C, 0x21, 0xFC,
> 0x63, 0x6F, 0xBD, 0xB9, 0xA7, 0x8A, 0xB3,
> 
> +  0xBF, 0x40, 0x87, 0x43, 0x06, 0x53, 0x91, 0x54, 0x31,
> 0x11, 0x0D, 0x3B, 0x50, 0x32, 0xEA, 0x11,
> 
> +  0xA3, 0x3D, 0x77, 0x08, 0x9E, 0xBC, 0x06, 0x5C, 0x21,
> 0x48, 0x9D, 0x9B, 0x7C, 0x45, 0xFD, 0x4B,
> 
> +  0xD7, 0x0C, 0x04, 0xD4, 0xE0, 0x0C, 0xB7, 0x6C, 0xBF,
> 0x22, 0xE1, 0x00, 0x99, 0x75, 0x39, 0x27,
> 
> +  0x59, 0xA3, 0x66, 0x30, 0x64, 0x30, 0x0E, 0x06, 0x03,
> 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04,
> 
> +  0x04, 0x03, 0x02, 0x02, 0x04, 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, 0x6D, 0x8B, 0x24,
> 0xBF, 0x20, 0x9D, 0x54, 0xAF, 0x04, 0x5B,
> 
> +  0x84, 0x91, 0x96, 0xAE, 0x99, 0xC1, 0x23, 0x1C, 0x0E,
> 0xAC, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D,
> 
> +  0x0E, 0x04, 0x16, 0x04, 0x14, 0x63, 0x69, 0x95, 0xE3,
> 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95,
> 
> +  0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F,
> 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48,
> 
> +  0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8A, 0x00,
> 0x30, 0x81, 0x86, 0x02, 0x41, 0x2A, 0xD4,
> 
> +  0xFC, 0x35, 0x28, 0x73, 0x9F, 0xB3, 0x8A, 0xE3, 0x13,
> 0x7F, 0xCA, 0x36, 0x88, 0x1E, 0xD0, 0x95,
> 
> +  0xDC, 0xE9, 0x8A, 0x9D, 0xC0, 0x27, 0x8C, 0xD8, 0x57,
> 0x57, 0x5F, 0xDC, 0x13, 0x53, 0x68, 0xED,
> 
> +  0x2F, 0x4D, 0x6A, 0x77, 0xA2, 0x55, 0x48, 0xCB, 0x24,
> 0x55, 0x3A, 0x30, 0x32, 0xE5, 0x5C, 0xDF,
> 
> +  0x96, 0xF1, 0x15, 0xD4, 0xE7, 0xCD, 0x6A, 0x26, 0xBD,
> 0x7B, 0x92, 0x50, 0x74, 0xE4, 0x56, 0x02,
> 
> +  0x41, 0x46, 0x33, 0x61, 0x30, 0xFF, 0xA8, 0x53, 0x31,
> 0x38, 0xCA, 0x6B, 0x77, 0x88, 0x36, 0x9A,
> 
> +  0x0B, 0x57, 0xC3, 0xD1, 0xB2, 0xA7, 0x40, 0x53, 0x6A,
> 0xD1, 0x6C, 0x8A, 0x8B, 0x3C, 0x29, 0xC1,
> 
> +  0x2B, 0x82, 0x61, 0x2F, 0x1A, 0x9F, 0x2C, 0x9A, 0x81,
> 0xD0, 0x2B, 0x3E, 0x0D, 0x99, 0xB7, 0xD4,
> 
> +  0x7E, 0xA7, 0xEA, 0x0C, 0x8E, 0x13, 0x0E, 0x53, 0x65,
> 0x48, 0x17, 0xE5, 0xFA, 0x91, 0x79, 0x98,
> 
> +  0xC7, 0xA1, 0x30, 0x82, 0x02, 0xA1, 0x30, 0x82, 0x02,
> 0x47, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02,
> 
> +  0x10, 0x29, 0xBB, 0x52, 0x25, 0xED, 0x34, 0xB7, 0xBA,
> 0x40, 0xF8, 0xC3, 0x14, 0xB5, 0xC8, 0x86,
> 
> +  0x9E, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x04, 0x03, 0x02, 0x30, 0x26, 0x31,
> 
> +  0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63,
> 
> +  0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D,
> 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67,
> 
> +  0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D,
> 0x31, 0x38, 0x30, 0x37, 0x32, 0x37, 0x32,
> 
> +  0x30, 0x33, 0x34, 0x31, 0x31, 0x5A, 0x17, 0x0D, 0x32,
> 0x33, 0x30, 0x37, 0x32, 0x37, 0x32, 0x30,
> 
> +  0x34, 0x34, 0x31, 0x31, 0x5A, 0x30, 0x3A, 0x31, 0x38,
> 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03,
> 
> +  0x0C, 0x2F, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x72,
> 0x66, 0x61, 0x63, 0x65, 0x46, 0x69, 0x72,
> 
> +  0x6D, 0x77, 0x61, 0x72, 0x65, 0x4C, 0x65, 0x61, 0x66,
> 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x4D,
> 
> +  0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x45, 0x4B,
> 0x55, 0x73, 0x49, 0x6E, 0x43, 0x65, 0x72,
> 
> +  0x74, 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, 0xD0, 0x61, 0xA5, 0xCD, 0x49, 0x4B, 0x5C,
> 0x88, 0x89, 0x09, 0xCA, 0xE7, 0xEB, 0x58,
> 
> +  0x91, 0x8F, 0x59, 0xBE, 0xE8, 0x16, 0xC0, 0xEF, 0x75,
> 0xE5, 0x18, 0x88, 0xE8, 0xCE, 0xFA, 0xD2,
> 
> +  0xB0, 0x77, 0xC1, 0xD2, 0xF2, 0x9E, 0x65, 0xE8, 0xDB,
> 0x6B, 0x8C, 0x93, 0xE5, 0x39, 0x1D, 0xF9,
> 
> +  0x37, 0x2A, 0x52, 0x7F, 0xC3, 0x93, 0xD7, 0x9F, 0x03,
> 0x83, 0xBC, 0x6E, 0xC6, 0x83, 0x64, 0x15,
> 
> +  0x1A, 0x5C, 0x74, 0x41, 0x40, 0x21, 0xC9, 0x25, 0xF0,
> 0x14, 0xA3, 0x29, 0x97, 0x29, 0x8C, 0x5D,
> 
> +  0xED, 0xE9, 0x8D, 0x66, 0xCC, 0xD1, 0xD1, 0xE0, 0x08,
> 0x52, 0xA5, 0x93, 0x07, 0xCB, 0xF8, 0x95,
> 
> +  0x2C, 0x8D, 0x29, 0x84, 0x10, 0x5F, 0x57, 0x52, 0x10,
> 0x75, 0x35, 0x8A, 0x84, 0xE3, 0xAE, 0x10,
> 
> +  0x57, 0x29, 0xE9, 0xEB, 0x6E, 0xD2, 0xC7, 0x6D, 0x35,
> 0x43, 0x67, 0x82, 0xE3, 0x98, 0x29, 0x9C,
> 
> +  0x59, 0x77, 0xA0, 0x00, 0x27, 0xB2, 0x5D, 0xB9, 0x84,
> 0x31, 0x89, 0x2F, 0x77, 0xC5, 0xB9, 0x23,
> 
> +  0xE0, 0x14, 0x94, 0x6F, 0x33, 0xD5, 0x3B, 0x58, 0xFB,
> 0xD6, 0xB6, 0xE5, 0xD4, 0x09, 0x3D, 0xB2,
> 
> +  0xE7, 0x87, 0xC6, 0xEA, 0x73, 0x61, 0x6D, 0xDA, 0xFA,
> 0x95, 0x2B, 0x2B, 0x8A, 0xEC, 0x7E, 0x68,
> 
> +  0x0F, 0x98, 0x16, 0x08, 0xFF, 0xB2, 0xC1, 0xBF, 0xAB,
> 0x3D, 0xB0, 0xC2, 0xD5, 0x16, 0xAE, 0x71,
> 
> +  0x54, 0x48, 0xD1, 0x52, 0x72, 0xFD, 0x42, 0x09, 0x66,
> 0xAF, 0x50, 0xDE, 0x4C, 0x3C, 0x6A, 0xBC,
> 
> +  0x1F, 0xC5, 0x0A, 0xA0, 0xC5, 0x9A, 0xF1, 0xB2, 0xB2,
> 0x3F, 0x14, 0xE1, 0x93, 0x07, 0xF0, 0x00,
> 
> +  0x04, 0xEF, 0x16, 0x76, 0x18, 0x10, 0x65, 0x63, 0x42,
> 0x42, 0x12, 0xD0, 0x65, 0xF5, 0xA2, 0xCF,
> 
> +  0x90, 0xBE, 0x65, 0x57, 0x25, 0x8C, 0xAC, 0x5E, 0x05,
> 0x31, 0x91, 0x9E, 0x4D, 0x18, 0xBC, 0x15,
> 
> +  0x30, 0x7B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x78,
> 0x30, 0x76, 0x30, 0x0E, 0x06, 0x03, 0x55,
> 
> +  0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02,
> 0x01, 0x86, 0x30, 0x24, 0x06, 0x03, 0x55,
> 
> +  0x1D, 0x25, 0x04, 0x1D, 0x30, 0x1B, 0x06, 0x0B, 0x2B,
> 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x4C,
> 
> +  0x09, 0x15, 0x01, 0x06, 0x0C, 0x2B, 0x06, 0x01, 0x04,
> 0x01, 0x82, 0x37, 0x4C, 0x09, 0x15, 0x01,
> 
> +  0x02, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04,
> 0x18, 0x30, 0x16, 0x80, 0x14, 0x63, 0x69,
> 
> +  0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95,
> 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9,
> 
> +  0x2D, 0x2F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E,
> 0x04, 0x16, 0x04, 0x14, 0xC0, 0xDC, 0xCB,
> 
> +  0x76, 0x52, 0x84, 0x91, 0xF5, 0x37, 0x0D, 0x85, 0xB6,
> 0x45, 0x23, 0xFA, 0xA0, 0xAD, 0xC1, 0x1D,
> 
> +  0x92, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00,
> 
> +  0x30, 0x45, 0x02, 0x21, 0x00, 0xF4, 0xB0, 0x8A, 0x91,
> 0x96, 0x61, 0xDF, 0xC3, 0x54, 0xA5, 0xB3,
> 
> +  0x1A, 0x3C, 0x28, 0x06, 0xC0, 0xA1, 0xF5, 0x72, 0xD1,
> 0x02, 0x5C, 0x69, 0xB6, 0x6C, 0xA8, 0xDC,
> 
> +  0x6B, 0x78, 0xD9, 0x0C, 0x9A, 0x02, 0x20, 0x37, 0x2C,
> 0x61, 0x9E, 0x6E, 0x5F, 0xC6, 0xFA, 0x92,
> 
> +  0x52, 0xB0, 0x4E, 0x52, 0xC7, 0xF1, 0xE9, 0x0F, 0xB6,
> 0xD5, 0x08, 0x10, 0x41, 0x3A, 0x61, 0xFD,
> 
> +  0xC5, 0x70, 0x87, 0xBB, 0x49, 0x82, 0xEA, 0x31, 0x82,
> 0x01, 0x65, 0x30, 0x82, 0x01, 0x61, 0x02,
> 
> +  0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31, 0x24, 0x30,
> 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54,
> 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D,
> 
> +  0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65,
> 0x72, 0x43, 0x41, 0x02, 0x10, 0x29, 0xBB,
> 
> +  0x52, 0x25, 0xED, 0x34, 0xB7, 0xBA, 0x40, 0xF8, 0xC3,
> 0x14, 0xB5, 0xC8, 0x86, 0x9E, 0x30, 0x0D,
> 
> +  0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04,
> 0x02, 0x01, 0x05, 0x00, 0x30, 0x0D, 0x06,
> 
> +  0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01,
> 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00,
> 
> +  0xBB, 0x51, 0xDD, 0x8F, 0xB4, 0x99, 0x37, 0x13, 0x94,
> 0x6F, 0x09, 0x05, 0xBA, 0x5B, 0x8D, 0x86,
> 
> +  0x9A, 0xB0, 0x51, 0xEB, 0x6B, 0x10, 0xD7, 0xD1, 0x95,
> 0x4A, 0x4D, 0x23, 0xA3, 0x37, 0x82, 0xDF,
> 
> +  0x1F, 0x24, 0xE4, 0x62, 0x4F, 0xD4, 0x52, 0x73, 0xF8,
> 0x39, 0x2B, 0x46, 0xF4, 0x61, 0xCE, 0xF1,
> 
> +  0x64, 0xD7, 0x60, 0xC9, 0xCC, 0xCA, 0x8D, 0x94, 0xA5,
> 0x67, 0x68, 0x2B, 0xE4, 0xB0, 0xD7, 0x64,
> 
> +  0xC8, 0xF3, 0x9C, 0x98, 0x2C, 0x0A, 0x69, 0x56, 0xD6,
> 0x59, 0xDF, 0x4D, 0x38, 0xE7, 0xD4, 0x63,
> 
> +  0x2B, 0x74, 0xA1, 0xA3, 0xF9, 0xE1, 0x1A, 0x12, 0x2B,
> 0x04, 0x46, 0x11, 0xA8, 0x26, 0x00, 0x15,
> 
> +  0x4F, 0x14, 0x7F, 0xB1, 0xB4, 0x25, 0x0C, 0x87, 0xB0,
> 0x56, 0x8C, 0xBE, 0x0D, 0xFA, 0x66, 0x6F,
> 
> +  0x8A, 0xCB, 0x0A, 0x88, 0x3B, 0xF6, 0x52, 0xCD, 0xBB,
> 0xA2, 0xA9, 0xAD, 0xAD, 0x09, 0x0D, 0xDA,
> 
> +  0x79, 0x8A, 0xAE, 0xE5, 0x9D, 0xCE, 0x5C, 0x60, 0x99,
> 0x67, 0x26, 0xC4, 0xAF, 0xD4, 0x01, 0xB1,
> 
> +  0x6D, 0xD1, 0x8C, 0x4D, 0x1D, 0xBD, 0xAB, 0x42, 0x2C,
> 0xF2, 0xD8, 0x07, 0x3F, 0xDC, 0x5E, 0x68,
> 
> +  0x4C, 0xD9, 0xDB, 0xC0, 0x93, 0xBB, 0x8E, 0xA0, 0xA2,
> 0x09, 0x5F, 0x03, 0x58, 0x48, 0x54, 0xF6,
> 
> +  0xF0, 0xDA, 0x7A, 0x7F, 0xC4, 0xD2, 0x9F, 0x64, 0xF5,
> 0x85, 0x86, 0x48, 0xDF, 0x7F, 0x86, 0x14,
> 
> +  0x7C, 0x62, 0x77, 0x1D, 0x22, 0xE5, 0x34, 0x42, 0xE4,
> 0x49, 0x38, 0xB4, 0xE4, 0x22, 0xFB, 0x5F,
> 
> +  0xB5, 0xEA, 0xBA, 0x90, 0x51, 0xC0, 0xC6, 0x94, 0x09,
> 0xE4, 0xB7, 0x15, 0x3F, 0x07, 0x23, 0xE8,
> 
> +  0x46, 0x93, 0xA5, 0x7B, 0x7A, 0x91, 0xDA, 0x8E, 0x7C,
> 0xAF, 0xBD, 0x41, 0xB9, 0xDE, 0x85, 0x04,
> 
> +  0xBC, 0x08, 0x6C, 0x08, 0x56, 0x16, 0xDB, 0xB5, 0xEE,
> 0x65, 0x76, 0xE9, 0x78, 0xD3, 0xDD, 0xD8,
> 
> +
> 
> +};
> 
> +
> 
> +//
> 
> +// This is the TestSignedWithProductId10001.bin.p7b in
> byte array format.
> 
> +// It has two EKU's in it:  (Product ID is 10001)
> 
> +// "1.3.6.1.4.1.311.76.9.21.1"
> 
> +// "1.3.6.1.4.1.311.76.9.21.1.10001"
> 
> +//
> 
> +CONST UINT8 TestSignedWithProductId10001[] =
> 
> +{
> 
> +  0x30, 0x82, 0x06, 0x1E, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> +  0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> +  0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x04, 0x90,
> 0x30, 0x82, 0x01, 0xF5, 0x30, 0x82, 0x01,
> 
> +  0x58, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x4D,
> 0x88, 0xBF, 0x04, 0xDF, 0x10, 0x57, 0xBA,
> 
> +  0x43, 0x53, 0x6C, 0xFD, 0xA5, 0x90, 0xA7, 0x6F, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x30, 0x28, 0x31, 0x26, 0x30,
> 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x1D, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54,
> 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D,
> 
> +  0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65,
> 0x72, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E,
> 
> +  0x17, 0x0D, 0x31, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32,
> 0x33, 0x32, 0x31, 0x31, 0x33, 0x5A, 0x17,
> 
> +  0x0D, 0x33, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33,
> 0x33, 0x31, 0x31, 0x33, 0x5A, 0x30, 0x26,
> 
> +  0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03,
> 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61,
> 
> +  0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72,
> 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69,
> 
> +  0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x59, 0x30,
> 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00,
> 
> +  0x04, 0x0E, 0x58, 0xA3, 0xDB, 0xD3, 0x9C, 0x21, 0xFC,
> 0x63, 0x6F, 0xBD, 0xB9, 0xA7, 0x8A, 0xB3,
> 
> +  0xBF, 0x40, 0x87, 0x43, 0x06, 0x53, 0x91, 0x54, 0x31,
> 0x11, 0x0D, 0x3B, 0x50, 0x32, 0xEA, 0x11,
> 
> +  0xA3, 0x3D, 0x77, 0x08, 0x9E, 0xBC, 0x06, 0x5C, 0x21,
> 0x48, 0x9D, 0x9B, 0x7C, 0x45, 0xFD, 0x4B,
> 
> +  0xD7, 0x0C, 0x04, 0xD4, 0xE0, 0x0C, 0xB7, 0x6C, 0xBF,
> 0x22, 0xE1, 0x00, 0x99, 0x75, 0x39, 0x27,
> 
> +  0x59, 0xA3, 0x66, 0x30, 0x64, 0x30, 0x0E, 0x06, 0x03,
> 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04,
> 
> +  0x04, 0x03, 0x02, 0x02, 0x04, 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, 0x6D, 0x8B, 0x24,
> 0xBF, 0x20, 0x9D, 0x54, 0xAF, 0x04, 0x5B,
> 
> +  0x84, 0x91, 0x96, 0xAE, 0x99, 0xC1, 0x23, 0x1C, 0x0E,
> 0xAC, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D,
> 
> +  0x0E, 0x04, 0x16, 0x04, 0x14, 0x63, 0x69, 0x95, 0xE3,
> 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95,
> 
> +  0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F,
> 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48,
> 
> +  0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8A, 0x00,
> 0x30, 0x81, 0x86, 0x02, 0x41, 0x2A, 0xD4,
> 
> +  0xFC, 0x35, 0x28, 0x73, 0x9F, 0xB3, 0x8A, 0xE3, 0x13,
> 0x7F, 0xCA, 0x36, 0x88, 0x1E, 0xD0, 0x95,
> 
> +  0xDC, 0xE9, 0x8A, 0x9D, 0xC0, 0x27, 0x8C, 0xD8, 0x57,
> 0x57, 0x5F, 0xDC, 0x13, 0x53, 0x68, 0xED,
> 
> +  0x2F, 0x4D, 0x6A, 0x77, 0xA2, 0x55, 0x48, 0xCB, 0x24,
> 0x55, 0x3A, 0x30, 0x32, 0xE5, 0x5C, 0xDF,
> 
> +  0x96, 0xF1, 0x15, 0xD4, 0xE7, 0xCD, 0x6A, 0x26, 0xBD,
> 0x7B, 0x92, 0x50, 0x74, 0xE4, 0x56, 0x02,
> 
> +  0x41, 0x46, 0x33, 0x61, 0x30, 0xFF, 0xA8, 0x53, 0x31,
> 0x38, 0xCA, 0x6B, 0x77, 0x88, 0x36, 0x9A,
> 
> +  0x0B, 0x57, 0xC3, 0xD1, 0xB2, 0xA7, 0x40, 0x53, 0x6A,
> 0xD1, 0x6C, 0x8A, 0x8B, 0x3C, 0x29, 0xC1,
> 
> +  0x2B, 0x82, 0x61, 0x2F, 0x1A, 0x9F, 0x2C, 0x9A, 0x81,
> 0xD0, 0x2B, 0x3E, 0x0D, 0x99, 0xB7, 0xD4,
> 
> +  0x7E, 0xA7, 0xEA, 0x0C, 0x8E, 0x13, 0x0E, 0x53, 0x65,
> 0x48, 0x17, 0xE5, 0xFA, 0x91, 0x79, 0x98,
> 
> +  0xC7, 0xA1, 0x30, 0x82, 0x02, 0x93, 0x30, 0x82, 0x02,
> 0x39, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02,
> 
> +  0x10, 0x1F, 0x65, 0xF1, 0x29, 0x3B, 0x89, 0x6A, 0xBF,
> 0x43, 0xAF, 0xC7, 0x30, 0x36, 0xD1, 0x0D,
> 
> +  0x2B, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x04, 0x03, 0x02, 0x30, 0x26, 0x31,
> 
> +  0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63,
> 
> +  0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D,
> 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67,
> 
> +  0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D,
> 0x31, 0x38, 0x30, 0x38, 0x30, 0x32, 0x31,
> 
> +  0x36, 0x34, 0x32, 0x32, 0x33, 0x5A, 0x17, 0x0D, 0x32,
> 0x33, 0x30, 0x38, 0x30, 0x32, 0x31, 0x36,
> 
> +  0x35, 0x32, 0x32, 0x33, 0x5A, 0x30, 0x2B, 0x31, 0x29,
> 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03,
> 
> +  0x0C, 0x20, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72,
> 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69,
> 
> +  0x67, 0x6E, 0x65, 0x72, 0x50, 0x72, 0x6F, 0x64, 0x75,
> 0x63, 0x74, 0x49, 0x44, 0x31, 0x30, 0x30,
> 
> +  0x30, 0x31, 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, 0x8C, 0x26, 0x35, 0xBC, 0x18, 0x06,
> 0x44, 0x65, 0xF6, 0x55, 0x29, 0x78, 0x26,
> 
> +  0xCA, 0x57, 0xD0, 0x4C, 0x31, 0x84, 0x5B, 0x64, 0xDE,
> 0x8E, 0x34, 0x84, 0x45, 0x12, 0xE8, 0x5A,
> 
> +  0x86, 0x4B, 0x5A, 0x61, 0x4C, 0xD8, 0xE2, 0x7D, 0x3B,
> 0xBD, 0x25, 0x58, 0x30, 0x1D, 0x5E, 0x65,
> 
> +  0x50, 0xC3, 0x07, 0xF2, 0x50, 0xE1, 0x48, 0x2A, 0xD9,
> 0x70, 0x5F, 0xF3, 0x2B, 0xF1, 0x1F, 0x21,
> 
> +  0x06, 0x62, 0x81, 0xE9, 0x8E, 0xDA, 0xDC, 0x69, 0xA3,
> 0x6E, 0x2F, 0xD2, 0x3A, 0x79, 0x01, 0xAF,
> 
> +  0xA1, 0x2A, 0x28, 0xDD, 0x32, 0x4E, 0xCE, 0x40, 0xB8,
> 0x41, 0xA4, 0x7D, 0x3D, 0x70, 0x3F, 0xC4,
> 
> +  0xDA, 0x61, 0x18, 0xBF, 0xFC, 0xAB, 0x16, 0xE3, 0x65,
> 0x3F, 0x6D, 0x76, 0x37, 0xAD, 0x1F, 0x11,
> 
> +  0x05, 0x0F, 0xC2, 0x56, 0xD1, 0x45, 0xBD, 0x25, 0xCC,
> 0x19, 0xC4, 0x2A, 0x03, 0xED, 0x3B, 0x05,
> 
> +  0xA7, 0x87, 0x30, 0xE6, 0x84, 0x11, 0x88, 0xD0, 0x91,
> 0x4E, 0x52, 0xB5, 0x97, 0xDF, 0x57, 0xEF,
> 
> +  0x5E, 0x72, 0x68, 0x49, 0x85, 0xC8, 0x7F, 0xA7, 0x5F,
> 0x7B, 0xE7, 0xCE, 0xA1, 0x53, 0xBA, 0xF8,
> 
> +  0xA9, 0xDF, 0x8C, 0x8C, 0x72, 0xD2, 0xA9, 0x7A, 0xF5,
> 0x07, 0x4A, 0x75, 0x1A, 0x0F, 0x50, 0x9E,
> 
> +  0xEA, 0x4C, 0xFC, 0xC7, 0x74, 0xE2, 0x4D, 0xD1, 0x01,
> 0xC4, 0xB6, 0xCA, 0xA5, 0xCC, 0x23, 0xFA,
> 
> +  0xDE, 0xF2, 0x9C, 0x8B, 0xA6, 0x32, 0x8D, 0xED, 0x97,
> 0xCC, 0x50, 0xB0, 0xB6, 0x1C, 0x89, 0x64,
> 
> +  0xFC, 0xD7, 0xD0, 0x19, 0x01, 0x50, 0xD9, 0xBC, 0x78,
> 0xB1, 0x76, 0x6D, 0x01, 0xF8, 0xEC, 0x68,
> 
> +  0x97, 0x20, 0x32, 0xD0, 0x57, 0x76, 0x93, 0x73, 0xC9,
> 0x2B, 0x68, 0x9D, 0x5E, 0xE1, 0x70, 0xDD,
> 
> +  0x6F, 0x3A, 0x09, 0x20, 0x63, 0xE9, 0xD9, 0x30, 0x05,
> 0x14, 0x4A, 0x76, 0xA7, 0x3E, 0x61, 0xCD,
> 
> +  0x2F, 0x6D, 0xE3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3,
> 0x79, 0x30, 0x77, 0x30, 0x0E, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03,
> 0x02, 0x01, 0x86, 0x30, 0x25, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x25, 0x04, 0x1E, 0x30, 0x1C, 0x06, 0x0B,
> 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
> 
> +  0x4C, 0x09, 0x15, 0x01, 0x06, 0x0D, 0x2B, 0x06, 0x01,
> 0x04, 0x01, 0x82, 0x37, 0x4C, 0x09, 0x15,
> 
> +  0x01, 0xCE, 0x11, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D,
> 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
> 
> +  0x63, 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA,
> 0x55, 0x95, 0x54, 0x07, 0xC4, 0xC5, 0x2A,
> 
> +  0xD2, 0xA9, 0x2D, 0x2F, 0x30, 0x1D, 0x06, 0x03, 0x55,
> 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x09,
> 
> +  0x10, 0xEE, 0x7B, 0xB0, 0x56, 0xB0, 0xCE, 0x42, 0x83,
> 0x84, 0x90, 0x70, 0xAF, 0x8D, 0x58, 0x1B,
> 
> +  0x77, 0x43, 0x0E, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86,
> 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03,
> 
> +  0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xEE, 0x2A,
> 0x00, 0x7E, 0xC6, 0x4E, 0x6F, 0x22, 0xCC,
> 
> +  0x16, 0xEA, 0xAC, 0x90, 0x3D, 0xD7, 0x6E, 0xAA, 0xBF,
> 0x7E, 0xC7, 0x45, 0x3F, 0x36, 0x22, 0x81,
> 
> +  0xC6, 0x38, 0xD3, 0x1E, 0xDF, 0x5F, 0x2C, 0x02, 0x20,
> 0x21, 0xEC, 0xCF, 0x78, 0x1D, 0xDB, 0x4F,
> 
> +  0x50, 0xE8, 0xD6, 0x07, 0xB0, 0x6A, 0xE9, 0x1E, 0xBF,
> 0x9C, 0xE8, 0xB9, 0xF7, 0xC6, 0xEA, 0x04,
> 
> +  0x7B, 0x5E, 0xD8, 0x67, 0xAB, 0xD2, 0xDE, 0x77, 0xB9,
> 0x31, 0x82, 0x01, 0x65, 0x30, 0x82, 0x01,
> 
> +  0x61, 0x02, 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31,
> 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04,
> 
> +  0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63,
> 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69,
> 
> +  0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67,
> 0x6E, 0x65, 0x72, 0x43, 0x41, 0x02, 0x10,
> 
> +  0x1F, 0x65, 0xF1, 0x29, 0x3B, 0x89, 0x6A, 0xBF, 0x43,
> 0xAF, 0xC7, 0x30, 0x36, 0xD1, 0x0D, 0x2B,
> 
> +  0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65,
> 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 
> +  0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
> 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82,
> 
> +  0x01, 0x00, 0x1F, 0x7F, 0x30, 0xDC, 0xD4, 0x12, 0x9D,
> 0x0B, 0x71, 0x30, 0x69, 0x91, 0xCC, 0x8A,
> 
> +  0xFB, 0xF6, 0x54, 0x14, 0x4C, 0x0B, 0x78, 0xCE, 0xD3,
> 0xC6, 0xCE, 0x3E, 0xAC, 0xCC, 0x0F, 0xCE,
> 
> +  0x3A, 0xFC, 0x63, 0x96, 0xD2, 0x7B, 0xDB, 0xF7, 0xE7,
> 0x6D, 0x64, 0x52, 0x5C, 0x5D, 0x19, 0xBF,
> 
> +  0xE3, 0x04, 0x71, 0x8A, 0xD1, 0x2A, 0xB6, 0x5A, 0x8C,
> 0xFC, 0xE2, 0x51, 0x27, 0x64, 0x9B, 0xA8,
> 
> +  0x84, 0x69, 0x60, 0x4E, 0x56, 0x83, 0x91, 0x4F, 0xEB,
> 0x5A, 0xB7, 0x73, 0xE1, 0xAC, 0x24, 0xD2,
> 
> +  0x60, 0xD8, 0x58, 0x21, 0x51, 0x7B, 0x87, 0x93, 0x5B,
> 0x5F, 0x91, 0x4B, 0x8C, 0xFE, 0xA5, 0x16,
> 
> +  0x2E, 0x33, 0x4D, 0xBB, 0x0C, 0x95, 0x5C, 0xC3, 0x9C,
> 0x3D, 0xBB, 0x58, 0x17, 0x39, 0x1E, 0x10,
> 
> +  0x47, 0xCD, 0xEE, 0xD3, 0xE7, 0x73, 0x44, 0x7D, 0x35,
> 0xD9, 0x9F, 0xC3, 0xAC, 0x11, 0x2E, 0x29,
> 
> +  0x54, 0x80, 0x8F, 0x19, 0xDC, 0xC3, 0x11, 0x3D, 0x75,
> 0xF0, 0x3B, 0x34, 0x63, 0xB1, 0x59, 0x1D,
> 
> +  0x4B, 0x66, 0xBE, 0xB8, 0xAC, 0x36, 0x71, 0x63, 0xD4,
> 0x41, 0xCF, 0x24, 0x2A, 0x3F, 0xC5, 0x25,
> 
> +  0xD2, 0x45, 0x9B, 0xD3, 0x77, 0xD8, 0xD8, 0x1A, 0xC6,
> 0xAE, 0xE3, 0xF5, 0xC5, 0xEB, 0xF3, 0x92,
> 
> +  0x27, 0x3C, 0x3F, 0x48, 0x96, 0xF2, 0xB4, 0x66, 0x0A,
> 0xFB, 0xBF, 0x76, 0xDC, 0x1E, 0xC5, 0xC6,
> 
> +  0x4D, 0xA1, 0x5C, 0x13, 0x22, 0xF8, 0x89, 0xE2, 0x15,
> 0x43, 0x84, 0xEF, 0xC8, 0x30, 0xE5, 0xF0,
> 
> +  0xBA, 0x51, 0x96, 0x3E, 0xF9, 0xCB, 0x41, 0xE6, 0x36,
> 0xD4, 0xE3, 0xDA, 0x71, 0xC8, 0x5E, 0x43,
> 
> +  0x7A, 0xBE, 0x8E, 0xC0, 0xA5, 0xEF, 0x66, 0xFD, 0x63,
> 0xD3, 0xF1, 0xBF, 0x66, 0x4F, 0x35, 0x24,
> 
> +  0x66, 0xC9, 0xCD, 0x1E, 0x3D, 0x71, 0x19, 0x84, 0x1A,
> 0x9D, 0xA5, 0x56, 0xF4, 0xF9, 0xE0, 0x88,
> 
> +  0x7C, 0x52,
> 
> +};
> 
> +
> 
> +//
> 
> +// This is TestSignEKUsWith1CertInSignature.bin.p7b in
> byte array format.
> 
> +// It has one EKU in it:
> 
> +// "1.3.6.1.4.1.311.76.9.21.1"
> 
> +//
> 
> +CONST UINT8 TestSignEKUsWith1CertInSignature[] =
> 
> +{
> 
> +  0x30, 0x82, 0x02, 0x7D, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> +  0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> +  0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x01, 0xB2,
> 0x30, 0x82, 0x01, 0xAE, 0x30, 0x82, 0x01,
> 
> +  0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E,
> 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8, 0x96,
> 
> +  0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30,
> 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50,
> 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49,
> 
> +  0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30,
> 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38,
> 
> +  0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A,
> 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38, 0x31,
> 
> +  0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30,
> 0x23, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03,
> 
> +  0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74,
> 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73,
> 
> +  0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69,
> 0x67, 0x6E, 0x65, 0x72, 0x30, 0x59, 0x30,
> 
> +  0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02,
> 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6,
> 0xEA, 0x5E, 0x14, 0x20, 0x6D, 0x11, 0xC0,
> 
> +  0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8,
> 0x21, 0x21, 0x3A, 0xC2, 0xBA, 0x37, 0x24,
> 
> +  0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F,
> 0xA8, 0xDC, 0x3A, 0x06, 0x30, 0x53, 0xFC,
> 
> +  0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40,
> 0xE8, 0x97, 0x6A, 0x63, 0x30, 0xF7, 0x37,
> 
> +  0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3,
> 0x6A, 0x30, 0x68, 0x30, 0x0E, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03,
> 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B,
> 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
> 
> +  0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55,
> 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
> 
> +  0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B,
> 0xFF, 0x35, 0xD0, 0x40, 0x3C, 0x3E, 0x9C,
> 
> +  0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03,
> 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14,
> 
> +  0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4,
> 0xC8, 0x0D, 0x4C, 0x0A, 0xD3, 0xD4, 0xDE,
> 
> +  0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A,
> 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02,
> 
> +  0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C,
> 0x39, 0xC6, 0x6C, 0xD6, 0x8F, 0x20, 0xA5,
> 
> +  0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC,
> 0x2E, 0x1B, 0x6F, 0x6F, 0x79, 0x9F, 0x8D,
> 
> +  0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02,
> 0x21, 0x00, 0xC5, 0xD8, 0x49, 0xD1, 0x40,
> 
> +  0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10,
> 0x8A, 0x3C, 0x4E, 0xA0, 0xD6, 0x6B, 0x8C,
> 
> +  0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43,
> 0x4B, 0x35, 0x31, 0x81, 0xA3, 0x30, 0x81,
> 
> +  0xA0, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22, 0x31,
> 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04,
> 
> +  0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B,
> 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E,
> 
> +  0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43,
> 0x41, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB,
> 
> +  0x00, 0x35, 0xC8, 0x96, 0x41, 0xF4, 0xF6, 0x57, 0x16,
> 0xAD, 0x20, 0xCB, 0x30, 0x0D, 0x06, 0x09,
> 
> +  0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01,
> 0x05, 0x00, 0x30, 0x0B, 0x06, 0x07, 0x2A,
> 
> +  0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00, 0x04,
> 0x47, 0x30, 0x45, 0x02, 0x21, 0x00, 0xB8,
> 
> +  0xCC, 0x0F, 0xD2, 0x50, 0x47, 0x3A, 0x11, 0x8D, 0xAE,
> 0x6C, 0xE9, 0x03, 0x64, 0xA7, 0x44, 0xE6,
> 
> +  0x0F, 0xF8, 0x6F, 0x7E, 0xE7, 0x61, 0x25, 0x8C, 0x67,
> 0xE8, 0xC2, 0xD6, 0x33, 0x91, 0x62, 0x02,
> 
> +  0x20, 0x78, 0xF8, 0x94, 0x0F, 0x46, 0xD2, 0xE2, 0x2B,
> 0x33, 0xAF, 0xBD, 0x38, 0xA4, 0x43, 0xA6,
> 
> +  0x6F, 0x8A, 0xBE, 0x26, 0xDC, 0xD0, 0x82, 0x01, 0x3D,
> 0x00, 0xF3, 0xC2, 0x07, 0x8A, 0xE8, 0xFD,
> 
> +  0x18,
> 
> +};
> 
> +
> 
> +//
> 
> +// This is TestSignEKUsWith2CertsInSignature.bin.p7b in
> byte array format.
> 
> +// It has one EKU in it:
> 
> +// "1.3.6.1.4.1.311.76.9.21.1"
> 
> +//
> 
> +CONST UINT8 TestSignEKUsWith2CertsInSignature[] =
> 
> +{
> 
> +  0x30, 0x82, 0x04, 0x61, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> +  0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> +  0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0x96,
> 0x30, 0x82, 0x01, 0xAE, 0x30, 0x82, 0x01,
> 
> +  0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E,
> 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8, 0x96,
> 
> +  0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30,
> 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50,
> 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49,
> 
> +  0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30,
> 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38,
> 
> +  0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A,
> 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38, 0x31,
> 
> +  0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30,
> 0x23, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03,
> 
> +  0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74,
> 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73,
> 
> +  0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69,
> 0x67, 0x6E, 0x65, 0x72, 0x30, 0x59, 0x30,
> 
> +  0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02,
> 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6,
> 0xEA, 0x5E, 0x14, 0x20, 0x6D, 0x11, 0xC0,
> 
> +  0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8,
> 0x21, 0x21, 0x3A, 0xC2, 0xBA, 0x37, 0x24,
> 
> +  0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F,
> 0xA8, 0xDC, 0x3A, 0x06, 0x30, 0x53, 0xFC,
> 
> +  0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40,
> 0xE8, 0x97, 0x6A, 0x63, 0x30, 0xF7, 0x37,
> 
> +  0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3,
> 0x6A, 0x30, 0x68, 0x30, 0x0E, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03,
> 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B,
> 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
> 
> +  0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55,
> 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
> 
> +  0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B,
> 0xFF, 0x35, 0xD0, 0x40, 0x3C, 0x3E, 0x9C,
> 
> +  0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03,
> 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14,
> 
> +  0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4,
> 0xC8, 0x0D, 0x4C, 0x0A, 0xD3, 0xD4, 0xDE,
> 
> +  0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A,
> 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02,
> 
> +  0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C,
> 0x39, 0xC6, 0x6C, 0xD6, 0x8F, 0x20, 0xA5,
> 
> +  0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC,
> 0x2E, 0x1B, 0x6F, 0x6F, 0x79, 0x9F, 0x8D,
> 
> +  0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02,
> 0x21, 0x00, 0xC5, 0xD8, 0x49, 0xD1, 0x40,
> 
> +  0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10,
> 0x8A, 0x3C, 0x4E, 0xA0, 0xD6, 0x6B, 0x8C,
> 
> +  0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43,
> 0x4B, 0x35, 0x30, 0x82, 0x01, 0xE0, 0x30,
> 
> +  0x82, 0x01, 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02,
> 0x10, 0x79, 0x28, 0x1A, 0xE8, 0x7F, 0x21,
> 
> +  0x4F, 0xBB, 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60,
> 0xD6, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86,
> 
> +  0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31,
> 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04,
> 
> +  0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B,
> 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E,
> 
> +  0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41,
> 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30,
> 
> +  0x38, 0x31, 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34,
> 0x5A, 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38,
> 
> +  0x31, 0x35, 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A,
> 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06,
> 
> +  0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73,
> 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72,
> 
> +  0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69,
> 0x6E, 0x67, 0x43, 0x41, 0x30, 0x59, 0x30,
> 
> +  0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02,
> 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66,
> 0x41, 0xE6, 0x86, 0x7D, 0x5B, 0x96, 0x6C,
> 
> +  0x99, 0x2A, 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC,
> 0x1C, 0x9F, 0xEB, 0xBE, 0x9D, 0x53, 0xBA,
> 
> +  0x50, 0x0F, 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2,
> 0x6C, 0xC2, 0xC9, 0xAA, 0x99, 0x0B, 0x04,
> 
> +  0xA0, 0x6A, 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3,
> 0xDE, 0x22, 0x57, 0xB1, 0x8A, 0x5C, 0xBC,
> 
> +  0xDF, 0x22, 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3,
> 0x7E, 0x30, 0x7C, 0x30, 0x0E, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03,
> 0x02, 0x02, 0x04, 0x30, 0x16, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B,
> 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
> 
> +  0x4C, 0x09, 0x15, 0x01, 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, 0x0B, 0x8A, 0xC7, 0xA8,
> 0x53, 0x07, 0x40, 0x74, 0x75, 0x0F, 0x85,
> 
> +  0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9,
> 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E,
> 
> +  0x04, 0x16, 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40,
> 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0, 0x40,
> 
> +  0x3C, 0x3E, 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66,
> 0x02, 0x31, 0x00, 0xEE, 0x78, 0xDB, 0x74,
> 
> +  0x56, 0xA3, 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0,
> 0x76, 0xD1, 0xE4, 0xFE, 0xAA, 0xA4, 0xC3,
> 
> +  0x7D, 0x40, 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B,
> 0x9A, 0x60, 0x37, 0x2F, 0xB6, 0xF4, 0xCB,
> 
> +  0xEA, 0xC8, 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB,
> 0xD2, 0x42, 0x05, 0x02, 0x31, 0x00, 0x9E,
> 
> +  0x91, 0xF9, 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC,
> 0x36, 0x05, 0x3B, 0x50, 0x11, 0x91, 0x9A,
> 
> +  0xFA, 0x6B, 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98,
> 0x7E, 0x7D, 0xFD, 0xA8, 0xE3, 0xB2, 0x4F,
> 
> +  0x71, 0x91, 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8,
> 0x19, 0x09, 0xF6, 0x22, 0xBE, 0xC4, 0x31,
> 
> +  0x81, 0xA3, 0x30, 0x81, 0xA0, 0x02, 0x01, 0x01, 0x30,
> 0x36, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E,
> 
> +  0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65,
> 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61,
> 
> +  0x72, 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75,
> 0x69, 0x6E, 0x67, 0x43, 0x41, 0x02, 0x10,
> 
> +  0x3E, 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8, 0x96, 0x41,
> 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB,
> 
> +  0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65,
> 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 
> +  0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02,
> 0x01, 0x05, 0x00, 0x04, 0x47, 0x30, 0x45,
> 
> +  0x02, 0x20, 0x4A, 0xFD, 0xAE, 0xDD, 0x5D, 0xC5, 0x86,
> 0x48, 0xDC, 0xC1, 0xC3, 0xA7, 0xE6, 0x4E,
> 
> +  0x7F, 0x8B, 0x7B, 0xAB, 0x2C, 0x60, 0xDD, 0x79, 0x4C,
> 0xF2, 0x45, 0xED, 0x7A, 0xA5, 0x24, 0xE6,
> 
> +  0x0E, 0x60, 0x02, 0x21, 0x00, 0xAD, 0xCA, 0x3C, 0x29,
> 0x2F, 0xF9, 0xB1, 0x8E, 0x58, 0x29, 0x3F,
> 
> +  0x97, 0x20, 0x03, 0x6A, 0x14, 0xDA, 0x83, 0x4A, 0x8F,
> 0x3E, 0x95, 0x37, 0xC3, 0xF0, 0x12, 0x2A,
> 
> +  0x7B, 0x24, 0x59, 0x69, 0x27,
> 
> +};
> 
> +
> 
> +//
> 
> +// This is TestSignEKUsWith3CertsInSignature.bin.p7b
> 
> +// It has one EKU in it:
> 
> +// "1.3.6.1.4.1.311.76.9.21.1"
> 
> +//
> 
> +const UINT8 TestSignEKUsWith3CertsInSignature[] =
> 
> +{
> 
> +  0x30, 0x82, 0x06, 0x65, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> +  0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> +  0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x05, 0x9B,
> 0x30, 0x82, 0x01, 0xAE, 0x30, 0x82, 0x01,
> 
> +  0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E,
> 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8, 0x96,
> 
> +  0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30,
> 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50,
> 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49,
> 
> +  0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30,
> 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38,
> 
> +  0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A,
> 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38, 0x31,
> 
> +  0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30,
> 0x23, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03,
> 
> +  0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74,
> 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73,
> 
> +  0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69,
> 0x67, 0x6E, 0x65, 0x72, 0x30, 0x59, 0x30,
> 
> +  0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02,
> 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6,
> 0xEA, 0x5E, 0x14, 0x20, 0x6D, 0x11, 0xC0,
> 
> +  0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8,
> 0x21, 0x21, 0x3A, 0xC2, 0xBA, 0x37, 0x24,
> 
> +  0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F,
> 0xA8, 0xDC, 0x3A, 0x06, 0x30, 0x53, 0xFC,
> 
> +  0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40,
> 0xE8, 0x97, 0x6A, 0x63, 0x30, 0xF7, 0x37,
> 
> +  0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3,
> 0x6A, 0x30, 0x68, 0x30, 0x0E, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03,
> 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B,
> 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
> 
> +  0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55,
> 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
> 
> +  0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B,
> 0xFF, 0x35, 0xD0, 0x40, 0x3C, 0x3E, 0x9C,
> 
> +  0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03,
> 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14,
> 
> +  0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4,
> 0xC8, 0x0D, 0x4C, 0x0A, 0xD3, 0xD4, 0xDE,
> 
> +  0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A,
> 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02,
> 
> +  0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C,
> 0x39, 0xC6, 0x6C, 0xD6, 0x8F, 0x20, 0xA5,
> 
> +  0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC,
> 0x2E, 0x1B, 0x6F, 0x6F, 0x79, 0x9F, 0x8D,
> 
> +  0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02,
> 0x21, 0x00, 0xC5, 0xD8, 0x49, 0xD1, 0x40,
> 
> +  0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10,
> 0x8A, 0x3C, 0x4E, 0xA0, 0xD6, 0x6B, 0x8C,
> 
> +  0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43,
> 0x4B, 0x35, 0x30, 0x82, 0x01, 0xE0, 0x30,
> 
> +  0x82, 0x01, 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02,
> 0x10, 0x79, 0x28, 0x1A, 0xE8, 0x7F, 0x21,
> 
> +  0x4F, 0xBB, 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60,
> 0xD6, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86,
> 
> +  0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31,
> 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04,
> 
> +  0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B,
> 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E,
> 
> +  0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41,
> 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30,
> 
> +  0x38, 0x31, 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34,
> 0x5A, 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38,
> 
> +  0x31, 0x35, 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A,
> 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06,
> 
> +  0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73,
> 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72,
> 
> +  0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69,
> 0x6E, 0x67, 0x43, 0x41, 0x30, 0x59, 0x30,
> 
> +  0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02,
> 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66,
> 0x41, 0xE6, 0x86, 0x7D, 0x5B, 0x96, 0x6C,
> 
> +  0x99, 0x2A, 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC,
> 0x1C, 0x9F, 0xEB, 0xBE, 0x9D, 0x53, 0xBA,
> 
> +  0x50, 0x0F, 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2,
> 0x6C, 0xC2, 0xC9, 0xAA, 0x99, 0x0B, 0x04,
> 
> +  0xA0, 0x6A, 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3,
> 0xDE, 0x22, 0x57, 0xB1, 0x8A, 0x5C, 0xBC,
> 
> +  0xDF, 0x22, 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3,
> 0x7E, 0x30, 0x7C, 0x30, 0x0E, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03,
> 0x02, 0x02, 0x04, 0x30, 0x16, 0x06, 0x03,
> 
> +  0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B,
> 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,
> 
> +  0x4C, 0x09, 0x15, 0x01, 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, 0x0B, 0x8A, 0xC7, 0xA8,
> 0x53, 0x07, 0x40, 0x74, 0x75, 0x0F, 0x85,
> 
> +  0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9,
> 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E,
> 
> +  0x04, 0x16, 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40,
> 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0, 0x40,
> 
> +  0x3C, 0x3E, 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66,
> 0x02, 0x31, 0x00, 0xEE, 0x78, 0xDB, 0x74,
> 
> +  0x56, 0xA3, 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0,
> 0x76, 0xD1, 0xE4, 0xFE, 0xAA, 0xA4, 0xC3,
> 
> +  0x7D, 0x40, 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B,
> 0x9A, 0x60, 0x37, 0x2F, 0xB6, 0xF4, 0xCB,
> 
> +  0xEA, 0xC8, 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB,
> 0xD2, 0x42, 0x05, 0x02, 0x31, 0x00, 0x9E,
> 
> +  0x91, 0xF9, 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC,
> 0x36, 0x05, 0x3B, 0x50, 0x11, 0x91, 0x9A,
> 
> +  0xFA, 0x6B, 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98,
> 0x7E, 0x7D, 0xFD, 0xA8, 0xE3, 0xB2, 0x4F,
> 
> +  0x71, 0x91, 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8,
> 0x19, 0x09, 0xF6, 0x22, 0xBE, 0xC4, 0x30,
> 
> +  0x82, 0x02, 0x01, 0x30, 0x82, 0x01, 0x62, 0xA0, 0x03,
> 0x02, 0x01, 0x02, 0x02, 0x10, 0x41, 0x02,
> 
> +  0xBA, 0xF9, 0x87, 0x65, 0x6C, 0xB8, 0x4C, 0xD9, 0xA1,
> 0x04, 0x1C, 0x46, 0x4F, 0xE4, 0x30, 0x0A,
> 
> +  0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03,
> 0x02, 0x30, 0x1D, 0x31, 0x1B, 0x30, 0x19,
> 
> +  0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x12, 0x54, 0x65,
> 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61,
> 
> +  0x72, 0x73, 0x69, 0x6E, 0x67, 0x52, 0x6F, 0x6F, 0x74,
> 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30,
> 
> +  0x38, 0x31, 0x35, 0x31, 0x37, 0x32, 0x39, 0x32, 0x39,
> 0x5A, 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38,
> 
> +  0x31, 0x35, 0x31, 0x37, 0x33, 0x39, 0x32, 0x39, 0x5A,
> 0x30, 0x21, 0x31, 0x1F, 0x30, 0x1D, 0x06,
> 
> +  0x03, 0x55, 0x04, 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73,
> 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72,
> 
> +  0x73, 0x69, 0x6E, 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63,
> 0x79, 0x43, 0x41, 0x30, 0x76, 0x30, 0x10,
> 
> +  0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01,
> 0x06, 0x05, 0x2B, 0x81, 0x04, 0x00, 0x22,
> 
> +  0x03, 0x62, 0x00, 0x04, 0xF9, 0xDC, 0xB9, 0x3F, 0xA8,
> 0xB5, 0x2B, 0x2E, 0xA7, 0xFC, 0x88, 0xC6,
> 
> +  0xEF, 0x9C, 0x36, 0x61, 0x3E, 0xFF, 0x8A, 0x5A, 0x52,
> 0xFF, 0x5A, 0xD0, 0x2C, 0x08, 0xD6, 0x73,
> 
> +  0x12, 0xF9, 0x62, 0x1E, 0x73, 0x76, 0x83, 0x49, 0xC8,
> 0xDE, 0xEB, 0x29, 0xA4, 0x78, 0x2A, 0xC1,
> 
> +  0x30, 0x11, 0x0B, 0x2F, 0x38, 0x00, 0xB7, 0x6B, 0x6B,
> 0x8E, 0x8C, 0x4B, 0x33, 0x09, 0xF1, 0xEA,
> 
> +  0xA4, 0x9E, 0x10, 0x4F, 0xC3, 0xBC, 0x30, 0x16, 0x1A,
> 0x8B, 0xD7, 0x9C, 0x14, 0x11, 0x4E, 0x56,
> 
> +  0x64, 0x7E, 0x51, 0xE7, 0xDA, 0x26, 0x40, 0xB0, 0xD0,
> 0xF8, 0xF2, 0xB2, 0x5D, 0x8C, 0x8B, 0x49,
> 
> +  0x0C, 0x4E, 0x58, 0xB0, 0xA3, 0x63, 0x30, 0x61, 0x30,
> 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01,
> 
> +  0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30,
> 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01,
> 
> +  0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF,
> 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23,
> 
> +  0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x04, 0xA6, 0xCD,
> 0x4D, 0xAE, 0x9C, 0x17, 0xDB, 0xC8, 0x13,
> 
> +  0x57, 0x2D, 0x72, 0x48, 0xAC, 0xBB, 0x6B, 0x1F, 0xFF,
> 0x61, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D,
> 
> +  0x0E, 0x04, 0x16, 0x04, 0x14, 0x0B, 0x8A, 0xC7, 0xA8,
> 0x53, 0x07, 0x40, 0x74, 0x75, 0x0F, 0x85,
> 
> +  0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9,
> 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48,
> 
> +  0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8C, 0x00,
> 0x30, 0x81, 0x88, 0x02, 0x42, 0x01, 0xB4,
> 
> +  0x75, 0x0B, 0x2F, 0x2A, 0xAA, 0x77, 0x03, 0x08, 0xD9,
> 0x95, 0x13, 0x2C, 0xE8, 0x47, 0x69, 0x97,
> 
> +  0xD1, 0x6B, 0xE0, 0x23, 0x94, 0xD5, 0x34, 0x8F, 0x80,
> 0x20, 0xE3, 0x72, 0x07, 0x7C, 0x6A, 0x52,
> 
> +  0xE6, 0xF2, 0xC7, 0x85, 0xBD, 0xB6, 0x65, 0x8F, 0x61,
> 0x73, 0xF9, 0xE7, 0x3A, 0x31, 0x46, 0xC6,
> 
> +  0xF2, 0xCE, 0xA7, 0x9E, 0xD0, 0xE2, 0xEF, 0x07, 0x59,
> 0xD0, 0xF1, 0xC4, 0xF6, 0x58, 0x9A, 0x16,
> 
> +  0x02, 0x42, 0x00, 0x86, 0xE0, 0x25, 0xC1, 0x48, 0xD0,
> 0x33, 0x30, 0x55, 0xA8, 0x60, 0x44, 0xCA,
> 
> +  0x47, 0x04, 0x93, 0x46, 0x81, 0xE9, 0x13, 0xE9, 0x67,
> 0x26, 0x23, 0x2A, 0xBD, 0xEF, 0xC4, 0xCC,
> 
> +  0x12, 0x99, 0xB3, 0x9E, 0x3D, 0x78, 0xC8, 0x42, 0x06,
> 0x40, 0x48, 0xCA, 0x3D, 0xCC, 0xD7, 0xA2,
> 
> +  0x35, 0x37, 0x76, 0x12, 0xDB, 0x9C, 0x90, 0xA4, 0xE4,
> 0x16, 0xAC, 0x5E, 0xD8, 0x04, 0xF1, 0x59,
> 
> +  0x66, 0x85, 0xE2, 0x68, 0x31, 0x81, 0xA2, 0x30, 0x81,
> 0x9F, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30,
> 
> +  0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04,
> 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74,
> 
> +  0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E,
> 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E,
> 
> +  0x67, 0x43, 0x41, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB,
> 0x00, 0x35, 0xC8, 0x96, 0x41, 0xF4, 0xF6,
> 
> +  0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0D, 0x06, 0x09,
> 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04,
> 
> +  0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x07, 0x2A,
> 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05,
> 
> +  0x00, 0x04, 0x46, 0x30, 0x44, 0x02, 0x20, 0x52, 0x90,
> 0x02, 0x9E, 0xE8, 0xBF, 0xE8, 0x7E, 0x05,
> 
> +  0x3B, 0xA3, 0x93, 0xDD, 0x6C, 0x35, 0x31, 0xA3, 0x29,
> 0x4F, 0x9A, 0x78, 0xEF, 0xD1, 0xAD, 0x07,
> 
> +  0x37, 0x2D, 0x9A, 0x81, 0xFD, 0x7D, 0xFC, 0x02, 0x20,
> 0x4C, 0x8A, 0xA4, 0xBD, 0x63, 0x7B, 0x8A,
> 
> +  0x2C, 0x9E, 0xFC, 0x2A, 0x0F, 0x91, 0xF4, 0x97, 0xB5,
> 0x3B, 0xC9, 0xD1, 0xCA, 0xEB, 0x02, 0x6A,
> 
> +  0xB6, 0xFF, 0xE1, 0x15, 0xF5, 0xA2, 0x11, 0xF4, 0xD9,
> 
> +};
> 
> +
> 
> +//
> 
> +// This signature was signed with a leaf that has no
> EKU's present in the certificate.
> 
> +//
> 
> +CONST UINT8 TestSignatureWithNoEKUsPresent[] =
> 
> +{
> 
> +  0x30, 0x82, 0x07, 0xDB, 0x02, 0x01, 0x01, 0x31, 0x0F,
> 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48,
> 
> +  0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30,
> 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
> 
> +  0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x06, 0x51,
> 0x30, 0x82, 0x01, 0xE0, 0x30, 0x82, 0x01,
> 
> +  0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79,
> 0x28, 0x1A, 0xE8, 0x7F, 0x21, 0x4F, 0xBB,
> 
> +  0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60, 0xD6, 0x30,
> 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 
> +  0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31, 0x1F, 0x30,
> 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 
> +  0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50,
> 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x50,
> 
> +  0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x1E,
> 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38, 0x31,
> 
> +  0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34, 0x5A, 0x17,
> 0x0D, 0x33, 0x38, 0x30, 0x38, 0x31, 0x35,
> 
> +  0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A, 0x30, 0x22,
> 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55,
> 
> +  0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45,
> 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69,
> 
> +  0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67,
> 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06,
> 
> +  0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06,
> 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03,
> 
> +  0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66, 0x41, 0xE6,
> 0x86, 0x7D, 0x5B, 0x96, 0x6C, 0x99, 0x2A,
> 
> +  0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC, 0x1C, 0x9F,
> 0xEB, 0xBE, 0x9D, 0x53, 0xBA, 0x50, 0x0F,
> 
> +  0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2, 0x6C, 0xC2,
> 0xC9, 0xAA, 0x99, 0x0B, 0x04, 0xA0, 0x6A,
> 
> +  0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3, 0xDE, 0x22,
> 0x57, 0xB1, 0x8A, 0x5C, 0xBC, 0xDF, 0x22,
> 
> +  0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3, 0x7E, 0x30,
> 0x7C, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D,
> 
> +  0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02,
> 0x04, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1D,
> 
> +  0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06,
> 0x01, 0x04, 0x01, 0x82, 0x37, 0x4C, 0x09,
> 
> +  0x15, 0x01, 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, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07,
> 0x40, 0x74, 0x75, 0x0F, 0x85, 0xCE, 0x5D,
> 
> +  0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x1D,
> 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16,
> 
> +  0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7,
> 0x1B, 0xFF, 0x35, 0xD0, 0x40, 0x3C, 0x3E,
> 
> +  0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x0A, 0x06,
> 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04,
> 
> +  0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66, 0x02, 0x31,
> 0x00, 0xEE, 0x78, 0xDB, 0x74, 0x56, 0xA3,
> 
> +  0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0, 0x76, 0xD1,
> 0xE4, 0xFE, 0xAA, 0xA4, 0xC3, 0x7D, 0x40,
> 
> +  0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B, 0x9A, 0x60,
> 0x37, 0x2F, 0xB6, 0xF4, 0xCB, 0xEA, 0xC8,
> 
> +  0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB, 0xD2, 0x42,
> 0x05, 0x02, 0x31, 0x00, 0x9E, 0x91, 0xF9,
> 
> +  0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC, 0x36, 0x05,
> 0x3B, 0x50, 0x11, 0x91, 0x9A, 0xFA, 0x6B,
> 
> +  0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98, 0x7E, 0x7D,
> 0xFD, 0xA8, 0xE3, 0xB2, 0x4F, 0x71, 0x91,
> 
> +  0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8, 0x19, 0x09,
> 0xF6, 0x22, 0xBE, 0xC4, 0x30, 0x82, 0x02,
> 
> +  0x01, 0x30, 0x82, 0x01, 0x62, 0xA0, 0x03, 0x02, 0x01,
> 0x02, 0x02, 0x10, 0x41, 0x02, 0xBA, 0xF9,
> 
> +  0x87, 0x65, 0x6C, 0xB8, 0x4C, 0xD9, 0xA1, 0x04, 0x1C,
> 0x46, 0x4F, 0xE4, 0x30, 0x0A, 0x06, 0x08,
> 
> +  0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30,
> 0x1D, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03,
> 
> +  0x55, 0x04, 0x03, 0x0C, 0x12, 0x54, 0x65, 0x73, 0x74,
> 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73,
> 
> +  0x69, 0x6E, 0x67, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E,
> 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38, 0x31,
> 
> +  0x35, 0x31, 0x37, 0x32, 0x39, 0x32, 0x39, 0x5A, 0x17,
> 0x0D, 0x33, 0x38, 0x30, 0x38, 0x31, 0x35,
> 
> +  0x31, 0x37, 0x33, 0x39, 0x32, 0x39, 0x5A, 0x30, 0x21,
> 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55,
> 
> +  0x04, 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45,
> 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69,
> 
> +  0x6E, 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43,
> 0x41, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07,
> 
> +  0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x05,
> 0x2B, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62,
> 
> +  0x00, 0x04, 0xF9, 0xDC, 0xB9, 0x3F, 0xA8, 0xB5, 0x2B,
> 0x2E, 0xA7, 0xFC, 0x88, 0xC6, 0xEF, 0x9C,
> 
> +  0x36, 0x61, 0x3E, 0xFF, 0x8A, 0x5A, 0x52, 0xFF, 0x5A,
> 0xD0, 0x2C, 0x08, 0xD6, 0x73, 0x12, 0xF9,
> 
> +  0x62, 0x1E, 0x73, 0x76, 0x83, 0x49, 0xC8, 0xDE, 0xEB,
> 0x29, 0xA4, 0x78, 0x2A, 0xC1, 0x30, 0x11,
> 
> +  0x0B, 0x2F, 0x38, 0x00, 0xB7, 0x6B, 0x6B, 0x8E, 0x8C,
> 0x4B, 0x33, 0x09, 0xF1, 0xEA, 0xA4, 0x9E,
> 
> +  0x10, 0x4F, 0xC3, 0xBC, 0x30, 0x16, 0x1A, 0x8B, 0xD7,
> 0x9C, 0x14, 0x11, 0x4E, 0x56, 0x64, 0x7E,
> 
> +  0x51, 0xE7, 0xDA, 0x26, 0x40, 0xB0, 0xD0, 0xF8, 0xF2,
> 0xB2, 0x5D, 0x8C, 0x8B, 0x49, 0x0C, 0x4E,
> 
> +  0x58, 0xB0, 0xA3, 0x63, 0x30, 0x61, 0x30, 0x0E, 0x06,
> 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF,
> 
> +  0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x0F, 0x06,
> 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF,
> 
> +  0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1F,
> 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18,
> 
> +  0x30, 0x16, 0x80, 0x14, 0x04, 0xA6, 0xCD, 0x4D, 0xAE,
> 0x9C, 0x17, 0xDB, 0xC8, 0x13, 0x57, 0x2D,
> 
> +  0x72, 0x48, 0xAC, 0xBB, 0x6B, 0x1F, 0xFF, 0x61, 0x30,
> 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04,
> 
> +  0x16, 0x04, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07,
> 0x40, 0x74, 0x75, 0x0F, 0x85, 0xCE, 0x5D,
> 
> +  0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x0A,
> 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D,
> 
> +  0x04, 0x03, 0x02, 0x03, 0x81, 0x8C, 0x00, 0x30, 0x81,
> 0x88, 0x02, 0x42, 0x01, 0xB4, 0x75, 0x0B,
> 
> +  0x2F, 0x2A, 0xAA, 0x77, 0x03, 0x08, 0xD9, 0x95, 0x13,
> 0x2C, 0xE8, 0x47, 0x69, 0x97, 0xD1, 0x6B,
> 
> +  0xE0, 0x23, 0x94, 0xD5, 0x34, 0x8F, 0x80, 0x20, 0xE3,
> 0x72, 0x07, 0x7C, 0x6A, 0x52, 0xE6, 0xF2,
> 
> +  0xC7, 0x85, 0xBD, 0xB6, 0x65, 0x8F, 0x61, 0x73, 0xF9,
> 0xE7, 0x3A, 0x31, 0x46, 0xC6, 0xF2, 0xCE,
> 
> +  0xA7, 0x9E, 0xD0, 0xE2, 0xEF, 0x07, 0x59, 0xD0, 0xF1,
> 0xC4, 0xF6, 0x58, 0x9A, 0x16, 0x02, 0x42,
> 
> +  0x00, 0x86, 0xE0, 0x25, 0xC1, 0x48, 0xD0, 0x33, 0x30,
> 0x55, 0xA8, 0x60, 0x44, 0xCA, 0x47, 0x04,
> 
> +  0x93, 0x46, 0x81, 0xE9, 0x13, 0xE9, 0x67, 0x26, 0x23,
> 0x2A, 0xBD, 0xEF, 0xC4, 0xCC, 0x12, 0x99,
> 
> +  0xB3, 0x9E, 0x3D, 0x78, 0xC8, 0x42, 0x06, 0x40, 0x48,
> 0xCA, 0x3D, 0xCC, 0xD7, 0xA2, 0x35, 0x37,
> 
> +  0x76, 0x12, 0xDB, 0x9C, 0x90, 0xA4, 0xE4, 0x16, 0xAC,
> 0x5E, 0xD8, 0x04, 0xF1, 0x59, 0x66, 0x85,
> 
> +  0xE2, 0x68, 0x30, 0x82, 0x02, 0x64, 0x30, 0x82, 0x02,
> 0x0A, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02,
> 
> +  0x10, 0x2B, 0x7B, 0xDA, 0xCD, 0x87, 0xA0, 0xFD, 0x81,
> 0x49, 0x5E, 0x0E, 0xDD, 0x4F, 0x81, 0x48,
> 
> +  0x2D, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
> 0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31,
> 
> +  0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C,
> 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B,
> 
> +  0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49,
> 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43,
> 
> +  0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38,
> 0x32, 0x33, 0x31, 0x39, 0x33, 0x30, 0x30,
> 
> +  0x32, 0x5A, 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38, 0x32,
> 0x33, 0x31, 0x39, 0x34, 0x30, 0x30, 0x32,
> 
> +  0x5A, 0x30, 0x27, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03,
> 0x55, 0x04, 0x03, 0x0C, 0x1C, 0x54, 0x65,
> 
> +  0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73,
> 0x69, 0x6E, 0x67, 0x4E, 0x6F, 0x45, 0x4B,
> 
> +  0x55, 0x73, 0x49, 0x6E, 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, 0xA5, 0x9B, 0x95, 0xF0, 0x63,
> 
> +  0x88, 0xC3, 0x74, 0x26, 0x08, 0x68, 0x25, 0xAA, 0x16,
> 0xBB, 0x2A, 0x15, 0xC1, 0xA2, 0xAF, 0x72,
> 
> +  0x06, 0x51, 0x37, 0xE1, 0x4F, 0x6D, 0x6A, 0xFC, 0x17,
> 0xCE, 0x82, 0x7B, 0x79, 0xFF, 0x2A, 0x84,
> 
> +  0x0F, 0xCB, 0xA9, 0x65, 0x70, 0xC9, 0xF9, 0xE7, 0x61,
> 0x90, 0x28, 0x03, 0x6E, 0x41, 0x25, 0xFF,
> 
> +  0xC2, 0x3A, 0x60, 0x1A, 0x42, 0x37, 0x80, 0x9F, 0x6B,
> 0x99, 0x11, 0x5A, 0x1F, 0xAE, 0x7B, 0x3F,
> 
> +  0xF3, 0x2B, 0x45, 0xDD, 0xDA, 0xC4, 0x32, 0xD7, 0xD8,
> 0xB5, 0x3D, 0x46, 0x0C, 0x8A, 0x11, 0xEE,
> 
> +  0x94, 0x8C, 0xB5, 0x69, 0xD3, 0x91, 0x4F, 0x4E, 0xE5,
> 0xBB, 0x93, 0xDD, 0x1E, 0xA7, 0x20, 0x03,
> 
> +  0xFD, 0xD6, 0x8F, 0x76, 0x91, 0x9A, 0x2B, 0x41, 0x91,
> 0xD8, 0x35, 0x7A, 0x0D, 0x80, 0xB9, 0xD4,
> 
> +  0xD2, 0x56, 0xF1, 0xF9, 0xC5, 0xE6, 0xF2, 0xAE, 0x10,
> 0x7E, 0xD7, 0x6C, 0x40, 0x86, 0x37, 0x99,
> 
> +  0x85, 0xF4, 0xCA, 0x1D, 0x6D, 0x90, 0x63, 0xF7, 0x63,
> 0xC6, 0x00, 0xA1, 0xA9, 0x79, 0x7D, 0x88,
> 
> +  0x05, 0xA2, 0x92, 0x64, 0xA7, 0x8E, 0xA8, 0x9E, 0xC3,
> 0x1F, 0x63, 0xEE, 0x6C, 0xE3, 0x9B, 0xA6,
> 
> +  0xD7, 0x9D, 0x9C, 0x9F, 0x0D, 0x7A, 0xF7, 0x00, 0x92,
> 0x16, 0xE8, 0x64, 0x36, 0x07, 0x66, 0x8E,
> 
> +  0x6E, 0x51, 0x09, 0x3F, 0x2A, 0xD6, 0x6D, 0x4E, 0xCC,
> 0x49, 0xE1, 0xC3, 0x59, 0x63, 0xDC, 0x51,
> 
> +  0xAA, 0xD1, 0xE7, 0x42, 0x2F, 0x72, 0x25, 0x46, 0x83,
> 0x7D, 0x23, 0xCE, 0xF7, 0x96, 0x2F, 0x04,
> 
> +  0xE8, 0xAE, 0xF6, 0x19, 0x6D, 0x2D, 0xB2, 0x64, 0xDB,
> 0x69, 0x33, 0x96, 0x58, 0xA0, 0x6C, 0x77,
> 
> +  0xF0, 0xD0, 0x5E, 0x36, 0xB1, 0x28, 0x89, 0x83, 0xB6,
> 0xA5, 0x13, 0x0E, 0x6B, 0x6E, 0x73, 0x2C,
> 
> +  0x6F, 0xDA, 0xF9, 0x6C, 0x11, 0x4F, 0xCC, 0xF7, 0x89,
> 0x77, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01,
> 
> +  0xA3, 0x52, 0x30, 0x50, 0x30, 0x0E, 0x06, 0x03, 0x55,
> 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04,
> 
> +  0x03, 0x02, 0x01, 0x86, 0x30, 0x1F, 0x06, 0x03, 0x55,
> 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
> 
> +  0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B,
> 0xFF, 0x35, 0xD0, 0x40, 0x3C, 0x3E, 0x9C,
> 
> +  0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03,
> 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14,
> 
> +  0xB6, 0xAF, 0x0D, 0xC1, 0xBE, 0xD1, 0xE4, 0x21, 0x37,
> 0xFF, 0xAC, 0x7D, 0x2D, 0xD4, 0x51, 0x8A,
> 
> +  0x61, 0x95, 0x50, 0x7F, 0x30, 0x0A, 0x06, 0x08, 0x2A,
> 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02,
> 
> +  0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x74, 0x7D,
> 0xF5, 0xAF, 0xC3, 0xA7, 0x06, 0x99, 0x1F,
> 
> +  0x2C, 0xAF, 0x69, 0xAA, 0x40, 0x97, 0xE9, 0xF8, 0x4C,
> 0xD2, 0x71, 0x17, 0x25, 0x85, 0xB7, 0xA6,
> 
> +  0x97, 0x61, 0x89, 0x82, 0xED, 0xF0, 0xF6, 0x02, 0x21,
> 0x00, 0xA6, 0xF4, 0x59, 0x85, 0x53, 0x31,
> 
> +  0xEF, 0x6F, 0x37, 0xB6, 0x8E, 0xA2, 0xDE, 0xC3, 0xFD,
> 0xD6, 0xFB, 0x50, 0x63, 0x4E, 0xB4, 0xBB,
> 
> +  0xC1, 0xB1, 0x07, 0x82, 0x80, 0x14, 0x28, 0x6A, 0x94,
> 0x94, 0x31, 0x82, 0x01, 0x61, 0x30, 0x82,
> 
> +  0x01, 0x5D, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22,
> 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55,
> 
> +  0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45,
> 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69,
> 
> +  0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67,
> 0x43, 0x41, 0x02, 0x10, 0x2B, 0x7B, 0xDA,
> 
> +  0xCD, 0x87, 0xA0, 0xFD, 0x81, 0x49, 0x5E, 0x0E, 0xDD,
> 0x4F, 0x81, 0x48, 0x2D, 0x30, 0x0D, 0x06,
> 
> +  0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02,
> 0x01, 0x05, 0x00, 0x30, 0x0D, 0x06, 0x09,
> 
> +  0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01,
> 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x39,
> 
> +  0xEC, 0xA8, 0x00, 0x4F, 0x7E, 0x2C, 0x3C, 0x48, 0xDF,
> 0x6F, 0x6A, 0x37, 0x69, 0xA4, 0xB1, 0xEB,
> 
> +  0x7D, 0xD2, 0x3B, 0xC5, 0xEE, 0x57, 0x1F, 0x8F, 0xCA,
> 0x60, 0x80, 0x88, 0x24, 0x29, 0xB5, 0x00,
> 
> +  0x28, 0xFF, 0x8F, 0x0A, 0x1E, 0xB0, 0x9E, 0x90, 0x09,
> 0xF1, 0x46, 0xC1, 0x53, 0xE8, 0x27, 0x29,
> 
> +  0xFA, 0xFE, 0xA3, 0x84, 0x79, 0xB2, 0x27, 0x46, 0x9B,
> 0xD8, 0x33, 0xBD, 0x8F, 0x41, 0x06, 0xEE,
> 
> +  0xD6, 0xE7, 0x49, 0xAF, 0x48, 0xD0, 0xD4, 0xF1, 0x06,
> 0xCC, 0xD3, 0x26, 0x47, 0xAE, 0x03, 0x7A,
> 
> +  0xA5, 0xAF, 0xDE, 0x7F, 0x57, 0x32, 0x51, 0x49, 0x8C,
> 0x18, 0xD2, 0x4D, 0x50, 0x27, 0xAC, 0x7C,
> 
> +  0x33, 0xB8, 0xB8, 0x1C, 0xF8, 0x0C, 0x49, 0xEB, 0xF5,
> 0xD7, 0xA0, 0x35, 0x77, 0x61, 0xC0, 0x60,
> 
> +  0xAF, 0x23, 0x8C, 0xCC, 0xB0, 0x58, 0xB3, 0x08, 0x89,
> 0x2B, 0xC0, 0x61, 0x0C, 0xA6, 0x40, 0x7A,
> 
> +  0x37, 0x6D, 0x6D, 0x44, 0xFF, 0xF1, 0xCE, 0xDE, 0x7A,
> 0x0C, 0xC4, 0x51, 0x61, 0xE6, 0x72, 0x6B,
> 
> +  0xA9, 0x6A, 0x7B, 0xCF, 0xAA, 0x9A, 0x28, 0x74, 0x87,
> 0x30, 0xBA, 0xED, 0x40, 0xF0, 0x75, 0x2B,
> 
> +  0xD7, 0xE6, 0x9F, 0xDD, 0x6B, 0xB7, 0xEA, 0x08, 0x0D,
> 0x9F, 0xA3, 0x25, 0x27, 0xB7, 0xBF, 0x41,
> 
> +  0xC2, 0x64, 0xB5, 0x6F, 0x8F, 0xB1, 0x5F, 0xE5, 0xDF,
> 0xCA, 0x16, 0x04, 0x61, 0xFF, 0x74, 0x25,
> 
> +  0xEE, 0xF6, 0x69, 0xF1, 0x7F, 0xE5, 0x97, 0x72, 0x58,
> 0xD8, 0x9F, 0xA5, 0x19, 0x32, 0x46, 0x95,
> 
> +  0x67, 0x63, 0x23, 0x54, 0x46, 0x05, 0x15, 0xC3, 0x3E,
> 0x04, 0x7E, 0x88, 0xD0, 0xB5, 0x52, 0xF0,
> 
> +  0x38, 0x3C, 0x8B, 0xD4, 0x3D, 0x9A, 0x55, 0x1B, 0x14,
> 0xE5, 0x37, 0x8D, 0xB7, 0x6C, 0x39, 0x91,
> 
> +  0x23, 0x31, 0x63, 0x89, 0x7C, 0x75, 0x02, 0x79, 0xCC,
> 0x95, 0x58, 0x99, 0x3A, 0xDB, 0xF5,
> 
> +};
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLib.h
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLib.h
> new file mode 100644
> index 000000000000..9d1cb150a113
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLib.h
> @@ -0,0 +1,121 @@
> +/** @file
> 
> +  Application for Cryptographic Primitives Validation.
> 
> +
> 
> +Copyright (c) 2009 - 2016, Intel Corporation. All
> rights reserved.<BR>
> 
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +
> 
> +**/
> 
> +
> 
> +#ifndef __CRYPTEST_H__
> 
> +#define __CRYPTEST_H__
> 
> +
> 
> +#include <PiPei.h>
> 
> +#include <Uefi.h>
> 
> +#include <Library/UefiLib.h>
> 
> +#include <Library/DebugLib.h>
> 
> +#include <Library/UnitTestLib.h>
> 
> +#include <Library/PrintLib.h>
> 
> +#include <Library/BaseCryptLib.h>
> 
> +#include <Library/BaseLib.h>
> 
> +#include <Library/BaseMemoryLib.h>
> 
> +#include <Library/MemoryAllocationLib.h>
> 
> +//#include <UnitTestTypes.h>
> 
> +#include <Library/UnitTestLib.h>
> 
> +//#include <Library/UnitTestAssertLib.h>
> 
> +
> 
> +#define UNIT_TEST_NAME        "BaseCryptLib Unit Test"
> 
> +#define UNIT_TEST_VERSION     "1.0"
> 
> +
> 
> +typedef struct {
> 
> +  CHAR8                *Description;
> 
> +  CHAR8                *ClassName;
> 
> +  UNIT_TEST_FUNCTION     Func;
> 
> +  UNIT_TEST_PREREQUISITE PreReq;
> 
> +  UNIT_TEST_CLEANUP      CleanUp;
> 
> +  UNIT_TEST_CONTEXT      Context;
> 
> +} TEST_DESC;
> 
> +
> 
> +typedef struct {
> 
> +  CHAR8                     *Title;
> 
> +  CHAR8                     *Package;
> 
> +  UNIT_TEST_SUITE_SETUP      Sup;
> 
> +  UNIT_TEST_SUITE_TEARDOWN   Tdn;
> 
> +  UINTN                      *TestNum;
> 
> +  TEST_DESC                  *TestDesc;
> 
> +} SUITE_DESC;
> 
> +
> 
> +extern UINTN mPkcs7EkuTestNum;
> 
> +extern TEST_DESC mPkcs7EkuTest[];
> 
> +
> 
> +extern UINTN mHashTestNum;
> 
> +extern TEST_DESC mHashTest[];
> 
> +
> 
> +extern UINTN mHmacTestNum;
> 
> +extern TEST_DESC mHmacTest[];
> 
> +
> 
> +extern UINTN mBlockCipherTestNum;
> 
> +extern TEST_DESC mBlockCipherTest[];
> 
> +
> 
> +extern UINTN mRsaTestNum;
> 
> +extern TEST_DESC mRsaTest[];
> 
> +
> 
> +extern UINTN mRsaCertTestNum;
> 
> +extern TEST_DESC mRsaCertTest[];
> 
> +
> 
> +extern UINTN mPkcs7TestNum;
> 
> +extern TEST_DESC mPkcs7Test[];
> 
> +
> 
> +extern UINTN mPkcs5TestNum;
> 
> +extern TEST_DESC mPkcs5Test[];
> 
> +
> 
> +extern UINTN mAuthenticodeTestNum;
> 
> +extern TEST_DESC mAuthenticodeTest[];
> 
> +
> 
> +extern UINTN mImageTimestampTestNum;
> 
> +extern TEST_DESC mImageTimestampTest[];
> 
> +
> 
> +extern UINTN mDhTestNum;
> 
> +extern TEST_DESC mDhTest[];
> 
> +
> 
> +extern UINTN mPrngTestNum;
> 
> +extern TEST_DESC mPrngTest[];
> 
> +
> 
> +extern UINTN mOaepTestNum;
> 
> +extern TEST_DESC mOaepTest[];
> 
> +
> 
> +/** Creates a framework you can use */
> 
> +EFI_STATUS
> 
> +EFIAPI
> 
> +CreateUnitTest (
> 
> +    IN     CHAR8*                     UnitTestName,
> 
> +    IN     CHAR8*                     UnitTestVersion,
> 
> +    IN OUT UNIT_TEST_FRAMEWORK_HANDLE* Framework
> 
> +);
> 
> +
> 
> +/**
> 
> +  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/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLibHost.inf
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLibHost.inf
> new file mode 100644
> index 000000000000..300b98e40b33
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLibHost.inf
> @@ -0,0 +1,46 @@
> +## @file
> 
> +# Host-based UnitTest for BaseCryptLib
> 
> +#
> 
> +# Copyright (c) Microsoft Corporation.<BR>
> 
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  INF_VERSION    = 0x00010005
> 
> +  BASE_NAME      = BaseCryptLibUnitTestHost
> 
> +  FILE_GUID      = 0cb84598-824b-4833-b705-bdefdcbba1d5
> 
> +  MODULE_TYPE    = HOST_APPLICATION
> 
> +  VERSION_STRING = 1.0
> 
> +
> 
> +#
> 
> +# The following information is for reference only and
> not required by the build tools.
> 
> +#
> 
> +#  VALID_ARCHITECTURES           = IA32 X64
> 
> +#
> 
> +
> 
> +[Sources]
> 
> +  UnitTestMain.c
> 
> +  BaseCryptLibUnitTests.c
> 
> +  TestBaseCryptLib.h
> 
> +  HashTests.c
> 
> +  HmacTests.c
> 
> +  BlockCipherTests.c
> 
> +  RsaTests.c
> 
> +  RsaPkcs7Tests.c
> 
> +  Pkcs5Pbkdf2Tests.c
> 
> +  AuthenticodeTests.c
> 
> +  TSTests.c
> 
> +  DhTests.c
> 
> +  RandTests.c
> 
> +  Pkcs7EkuTests.c
> 
> +  OaepEncryptTests.c
> 
> +
> 
> +[Packages]
> 
> +  MdePkg/MdePkg.dec
> 
> +  CryptoPkg/CryptoPkg.dec
> 
> +
> 
> +[LibraryClasses]
> 
> +  BaseLib
> 
> +  DebugLib
> 
> +  BaseCryptLib
> 
> +  UnitTestLib
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLibUefiShell.inf
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLibUefiShell.inf
> new file mode 100644
> index 000000000000..6cd4a31be2c8
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseC
> ryptLibUefiShell.inf
> @@ -0,0 +1,49 @@
> +## @file
> 
> +# BaseCryptLib UnitTest built for execution in UEFI
> Shell.
> 
> +#
> 
> +# Copyright (c) Microsoft Corporation.<BR>
> 
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> +##
> 
> +
> 
> +[Defines]
> 
> +  INF_VERSION    = 0x00010006
> 
> +  BASE_NAME      = BaseCryptLibTestUefiShell
> 
> +  FILE_GUID      = ed54ee8c-ef7a-41f2-83d5-0e0d4cd88c21
> 
> +  MODULE_TYPE    = UEFI_APPLICATION
> 
> +  VERSION_STRING = 1.0
> 
> +  ENTRY_POINT    = DxeEntryPoint
> 
> +
> 
> +#
> 
> +# The following information is for reference only and
> not required by the build tools.
> 
> +#
> 
> +#  VALID_ARCHITECTURES           = IA32 X64
> 
> +#
> 
> +
> 
> +[Sources]
> 
> +  UnitTestMain.c
> 
> +  BaseCryptLibUnitTests.c
> 
> +  TestBaseCryptLib.h
> 
> +  HashTests.c
> 
> +  HmacTests.c
> 
> +  BlockCipherTests.c
> 
> +  RsaTests.c
> 
> +  RsaPkcs7Tests.c
> 
> +  Pkcs5Pbkdf2Tests.c
> 
> +  AuthenticodeTests.c
> 
> +  TSTests.c
> 
> +  DhTests.c
> 
> +  RandTests.c
> 
> +  Pkcs7EkuTests.c
> 
> +  OaepEncryptTests.c
> 
> +
> 
> +[Packages]
> 
> +  MdePkg/MdePkg.dec
> 
> +  CryptoPkg/CryptoPkg.dec
> 
> +
> 
> +[LibraryClasses]
> 
> +  UefiApplicationEntryPoint
> 
> +  BaseLib
> 
> +  DebugLib
> 
> +  UnitTestLib
> 
> +  PrintLib
> 
> +  BaseCryptLib
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/ChainCreationInstructions.txt
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/ChainCreationInstructions.txt
> new file mode 100644
> index 000000000000..0ca6830516ea
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/ChainCreationInstructions.txt
> @@ -0,0 +1,92 @@
> +-------------------------------------------------------
> -------------------------
> 
> +File:           ChainCreationInstructions.txt
> 
> +
> 
> +Description:    This folder contains INI files that are
> required to generate
> 
> +                the following test cert chains. Certs
> will be copied onto the
> 
> +                file system AND MY store when they are
> generated by certreq.exe.
> 
> +
> 
> +Note that typically certreq.exe operates on INF files,
> but in this folder
> 
> +we use INI files so that our build system does not
> complain about INF's being
> 
> +in the tree, but not in the CryptoPkg.dsc file.
> 
> +
> 
> +To create your own certificates and signatures for
> testing, this file demonstrates
> 
> +how the test certificate chains and signatures were
> created.
> 
> +
> 
> +To create test signatures, run SignFirmwareWithEKUs.cmd
> (with SignTool.exe in
> 
> +your path).  You can then use your favorite BinaryToHex
> converter to convert
> 
> +the binary into a byte array that you can include in
> AllTestSignatures.h
> 
> +
> 
> +Copyright (C) Microsoft Corporation.  All Rights
> Reserved.
> 
> +-------------------------------------------------------
> -------------------------
> 
> +Cert Chain:
> 
> +
> 
> +       ------------------------------------------
> 
> +      |                                          | //
> Root of trust. ECDSA P521 curve
> 
> +      |          TestEKUParsingRoot              | //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +      |                                          | //
> CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE
> 
> +       ------------------------------------------
> 
> +                         ^
> 
> +                         |
> 
> +       ------------------------------------------
> 
> +      |                                          | //
> Issues subordinate CAs. ECC P384 curve.
> 
> +      |       TestEKUParsingPolicyCA             | //
> SHA 256 Key Usage:
> 
> +      |                                          | //
> CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE
> 
> +       ------------------------------------------
> 
> +                         ^
> 
> +                         |
> 
> +       ------------------------------------------
> 
> +      |                                          | //
> Issues end-entity (leaf) signers. ECC P256 curve.
> 
> +      |        TestEKUParsingIssuingCA           | //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +      |                                          | //
> Enhanced Key Usage:
> 
> +       ------------------------------------------  //
> 1.3.6.1.4.1.311.76.9.21.1 (Surface firmware signing)
> 
> +                         ^
> 
> +                         |
> 
> +          --------------------------------------
> 
> +         /                                     /   //
> Leaf signer,  ECC P256 curve.
> 
> +        /      TestEKUParsingLeafSigner       /    //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +       /                                     /     //
> Enhanced Key usages:
> 
> +       --------------------------------------      //
> 1.3.6.1.4.1.311.76.9.21.1 (Surface firmware signing)
> 
> +                                                   //
> 1.3.6.1.4.1.311.76.9.21.1.N, N == Product ID.
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +-------------------------------------------------------
> --------------------------
> 
> +
> 
> +
> 
> +--- files required ---
> 
> +
> 
> +TestEKUParsingRoot.ini               - This certificate
> is the root CA under which all CAs live.
> 
> +TestEKUParsingPolicyCA.ini           - This policy CA
> will issue subordinate CA's with EKU constraints.
> 
> +TestEKUParsingIssuingCA.ini          - CA to issue end-
> entity leafs.
> 
> +TestEKUParsingLeafSigner.ini         - End-Entity leaf
> signer.
> 
> +TestEKUParsingLeafSignerPid12345.ini - End-Entity, with
> EKU: 1.3.6.1.4.1.311.76.9.21.1.12345.
> 
> +TestEKUParsingNoEKUsInSigner.ini     - Leaf with no
> EKU's specified.
> 
> +TestEKUParsingLeafSignerPid1.ini     - Test with naming
> files ini, to get around build complaints.
> 
> +--- Commands to execute ---
> 
> +
> 
> +certreq.exe -new
> TestEKUParsingRoot.ini
> TestEKUParsingRoot.cer
> 
> +certreq.exe -new -q -cert "TestEKUParsingRoot"
> TestEKUParsingPolicyCA.ini
> TestEKUParsingPolicyCA.cer
> 
> +certreq.exe -new -q -cert "TestEKUParsingPolicyCA"
> TestEKUParsingIssuingCA.ini
> TestEKUParsingIssuingCA.cer
> 
> +certreq.exe -new -q -cert "TestEKUParsingIssuingCA"
> TestEKUParsingLeafSigner.ini
> TestEKUParsingLeafSigner.cer
> 
> +certreq.exe -new -q -cert "TestEKUParsingIssuingCA"
> TestEKUParsingLeafSignerPid12345.ini
> TestEKUParsingLeafSignerPid12345.cer
> 
> +certreq.exe -new -q -cert "TestEKUParsingIssuingCA"
> TestEKUParsingNoEKUsInSigner.ini
> TestEKUParsingNoEKUsInSigner.cer
> 
> +certreq.exe -new -q -cert "TestEKUParsingIssuingCA"
> TestEKUParsingLeafSignerPid1.ini
> TestEKUParsingLeafSignerPid1.cer
> 
> +
> 
> +-------------------------------------------------------
> --------------------------
> 
> +
> 
> +Then start mmc->Add certificates, Local Computer/open
> Personal/Certs and export the keys into the pfx files
> below.
> 
> +Note:  You should see a little key on the top left of
> each cert icon, which means you have the private key
> 
> +       for this cert.  If you don't see it something is
> wrong.  For each cert, right-click and do all tasks,
> 
> +       export.  Yes, Export the private key.  PCKS#12
> format, include all certs in path if possible.
> 
> +
> 
> +       If we automated the call to certreq above, there
> is a PowerShell "PKI" cmdlet which has
> 
> +       an Export-PfxCertificate command.
> 
> +
> 
> +Passwords:  TestEKUParsingRoot.pfx               ==
> TestEKUParsingRoot
> 
> +            TestEKUParsingPolicyCA.pfx           ==
> TestEKUParsingPolicyCA
> 
> +            TestEKUParsingIssuingCA.pfx          ==
> TestEKUParsingIssuingCA
> 
> +            TestEKUParsingLeafSigner.pfx         ==
> TestEKUParsingLeafSigner
> 
> +            TestEKUParsingLeafSignerPid12345.pfx ==
> TestEKUParsingLeafSignerPid12345
> 
> +            TestEKUParsingNoEKUsInSigner.pfx     ==
> TestEKUParsingNoEKUsInSigner
> 
> +
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/CreateTestCerts.cmd
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/CreateTestCerts.cmd
> new file mode 100644
> index 000000000000..6d68afdab77d
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/CreateTestCerts.cmd
> @@ -0,0 +1,11 @@
> + at ECHO OFF
> 
> +REM
> 
> +REM  Use this file to create test certificates.
> 
> +REM
> 
> +call certreq.exe -new
> TestEKUParsingRoot.ini
> TestEKUParsingRoot.cer
> 
> +call certreq.exe -new -q -cert "TestEKUParsingRoot"
> TestEKUParsingPolicyCA.ini
> TestEKUParsingPolicyCA.cer
> 
> +call certreq.exe -new -q -cert "TestEKUParsingPolicyCA"
> TestEKUParsingIssuingCA.ini
> TestEKUParsingIssuingCA.cer
> 
> +call certreq.exe -new -q -cert
> "TestEKUParsingIssuingCA" TestEKUParsingLeafSigner.ini
> TestEKUParsingLeafSigner.cer
> 
> +call certreq.exe -new -q -cert
> "TestEKUParsingIssuingCA"
> TestEKUParsingLeafSignerPid12345.ini
> TestEKUParsingLeafSignerPid12345.cer
> 
> +call certreq.exe -new -q -cert
> "TestEKUParsingIssuingCA"
> TestEKUParsingNoEKUsInSigner.ini
> TestEKUParsingNoEKUsInSigner.cer
> 
> +call certreq.exe -new -q -cert
> "TestEKUParsingIssuingCA"
> TestEKUParsingLeafSignerPid1.ini
> TestEKUParsingLeafSignerPid1.cer
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/SignFirmwareWithEKUs.cmd
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/SignFirmwareWithEKUs.cmd
> new file mode 100644
> index 000000000000..ce03e33a7169
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/SignFirmwareWithEKUs.cmd
> @@ -0,0 +1,76 @@
> + at ECHO OFF
> 
> +REM   This script will use various certificates to sign
> blobs for testing purposes.
> 
> +REM
> 
> +REM
> 
> +REM   Our EKU test certificate chain:
> 
> +REM   ------------------------------------------
> 
> +REM   |                                          | //
> Root of trust. ECDSA P521 curve
> 
> +REM   |          TestEKUParsingRoot              | //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +REM   |                                          | //
> CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE
> 
> +REM    ------------------------------------------
> 
> +REM                      ^
> 
> +REM                      |
> 
> +REM    ------------------------------------------
> 
> +REM   |                                          | //
> Issues subordinate CAs. ECC P384 curve.
> 
> +REM   |       TestEKUParsingPolicyCA             | //
> SHA 256 Key Usage:
> 
> +REM   |                                          | //
> CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE
> 
> +REM    ------------------------------------------
> 
> +REM                      ^
> 
> +REM                      |
> 
> +REM    ------------------------------------------
> 
> +REM   |                                          | //
> Issues end-entity (leaf) signers. ECC P256 curve.
> 
> +REM   |        TestEKUParsingIssuingCA           | //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +REM   |                                          | //
> Enhanced Key Usage:
> 
> +REM    ------------------------------------------  //
> 1.3.6.1.4.1.311.76.9.21.1 (Surface firmware signing)
> 
> +REM                      ^
> 
> +REM                      |
> 
> +REM       --------------------------------------
> 
> +REM      /     TestEKUParsingLeafSigner &&     /   //
> Leaf signer,  ECC P256 curve.
> 
> +REM     /    TestEKUParsingLeafSignerPid12345 /    //
> SHA 256 Key Usage: CERT_DIGITAL_SIGNATURE_KEY_USAGE
> 
> +REM    /                                     /     //
> Enhanced Key usages:
> 
> +REM    --------------------------------------      //
> 1.3.6.1.4.1.311.76.9.21.1 (Surface firmware signing)
> 
> +REM                                                //
> 1.3.6.1.4.1.311.76.9.21.1.N, N == Product ID.
> 
> +REM
> 
> +REM
> 
> +REM
> 
> +REM  Dev Note:  SignTool.exe must be in your path when
> running this script.
> 
> +
> 
> +del *.p7b
> 
> +ECHO --------------------------------------------------
> -----------------
> 
> +ECHO Press any key 4 times to append time to the test
> blobs to sign.
> 
> +time >> TestSignWithOneEKUInLeafSigner.bin
> 
> +time >> TestSignWithTwoEKUsInLeafSignerPid1.bin
> 
> +time >> TestSignWithTwoEKUsInLeafSignerPid12345.bin
> 
> +time >> TestSignWithNoEKUsInLeafSigner.bin
> 
> +
> 
> +
> 
> +REM
> 
> +REM Create a signature with
> TestEKUParsingLeafSigner.cer which has one EKU in it,
> 
> +REM and add the Policy CA in the signature.
> 
> +REM
> 
> +call signtool.exe sign /fd sha256 /f
> TestEKUParsingLeafSigner.cer
> /p7 .  /u 1.3.6.1.4.1.311.76.9.21.1    /ac
> TestEKUParsingPolicyCA.cer /p7co 1.2.840.113549.1.7.1
> /p7ce DetachedSignedData /v /debug
> TestSignWithOneEKUInLeafSigner.bin
> 
> +
> 
> +REM
> 
> +REM Create a signature with two EKU's in the leaf
> signer.  (1.3.6.1.4.1.311.76.9.21.1, and
> 1.3.6.1.4.1.311.76.9.21.1.1)
> 
> +REM
> 
> +call signtool.exe sign /fd sha256 /f
> TestEKUParsingLeafSignerPid1.cer
> /p7 .  /u 1.3.6.1.4.1.311.76.9.21.1.1  /p7co
> 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug
> TestSignWithTwoEKUsInLeafSignerPid1.bin
> 
> +
> 
> +REM
> 
> +REM Create a signature with two EKUs in the leaf
> (1.3.6.1.4.1.311.76.9.21.1, and
> 1.3.6.1.4.1.311.76.9.21.1.12345)
> 
> +REM
> 
> +call signtool.exe sign /fd sha256 /f
> TestEKUParsingLeafSignerPid12345.cer
> /p7 .  /u 1.3.6.1.4.1.311.76.9.21.1.12345   /p7co
> 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug
> TestSignWithTwoEKUsInLeafSignerPid12345.bin
> 
> +
> 
> +
> 
> +REM
> 
> +REM Create a signature with a leaf that does not have
> any EKUs in the signture.
> 
> +REM
> 
> +call signtool.exe sign /fd sha256 /f
> TestEKUParsingNoEKUsInSigner.cer /p7 .  /p7co
> 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug
> TestSignWithNoEKUsInLeafSigner.bin
> 
> +
> 
> +REM
> 
> +REM Rename *.p7 to *.p7b
> 
> +REM
> 
> +rename *.p7 *.p7b
> 
> +ECHO --------------------------------------------------
> -------------------------
> 
> +ECHO Now you can use your favorite "Binary To Hex"
> converter to convert the
> 
> +ECHO signatures (P7B files) to byte arrays and add them
> to AllTestSignatures.h
> 
> +ECHO --------------------------------------------------
> -------------------------
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingIssuingCA.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingIssuingCA.ini
> new file mode 100644
> index 000000000000..8576783473e9
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingIssuingCA.ini
> @@ -0,0 +1,45 @@
> +[Version]
> 
> +Signature="$Windows NT$
> 
> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 
> +; 2.5.29.19 == Basic Constraints for CA
> 
> +[Strings]
> 
> +szOID_BASIC_CONSTRAINTS2 = "2.5.29.19"
> 
> +
> 
> +[EnhancedKeyUsageExtension]
> 
> +OID = 1.3.6.1.4.1.311.76.9.21.1
> 
> +
> 
> +[NewRequest]
> 
> +Subject = "CN=TestEKUParsingIssuingCA"
> 
> +Exportable = true
> 
> +KeyLength = 256
> 
> +HashAlgorithm = sha256
> 
> +KeyUsage = "CERT_KEY_CERT_SIGN_KEY_USAGE"
> 
> +KeyUsageProperty = "NCRYPT_ALLOW_SIGNING_FLAG"
> 
> +MachineKeySet = True
> 
> +RequestType = cert
> 
> +ValidityPeriodUnits = 20
> 
> +ValidityPeriod = Years
> 
> +ProviderName = "Microsoft Software Key Storage
> Provider"
> 
> +KeyAlgorithm = "ECDSA_P256"
> 
> +
> 
> +
> 
> +[Extensions]
> 
> +%szOID_BASIC_CONSTRAINTS2% = "{text}"
> 
> +    _continue_ = "ca=True"
> 
> +
> 
> +Critical=%szOID_BASIC_CONSTRAINTS2%
> 
> +
> 
> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 
> +; This extension is so the this CA is only allowed to
> 
> +; issue end-entity certs.
> 
> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 
> +[BasicConstraintsExtension]
> 
> +PathLength=0
> 
> +
> 
> +;
> 
> +; Surface Firmware Signing EKU
> 
> +;
> 
> +[Extensions]
> 
> +    2.5.29.37 = "{text}"
> 
> +    _continue_ = "1.3.6.1.4.1.311.76.9.21.1"
> 
> +
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSigner.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSigner.ini
> new file mode 100644
> index 000000000000..f501537343ca
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSigner.ini
> @@ -0,0 +1,25 @@
> +[Version]
> 
> +Signature="$Windows NT$
> 
> +
> 
> +[EnhancedKeyUsageExtension]
> 
> +OID = 1.3.6.1.4.1.311.76.9.21.1
> 
> +
> 
> +[NewRequest]
> 
> +Subject = "CN=TestEKUParsingLeafSigner"
> 
> +Exportable = true
> 
> +KeyLength = 256
> 
> +HashAlgorithm = sha256
> 
> +KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE"
> 
> +KeyUsageProperty = "NCRYPT_ALLOW_SIGNING_FLAG"
> 
> +MachineKeySet = True
> 
> +RequestType = cert
> 
> +ValidityPeriodUnits = 20
> 
> +ValidityPeriod = Years
> 
> +ProviderName = "Microsoft Software Key Storage
> Provider"
> 
> +KeyAlgorithm = "ECDSA_P256"
> 
> +
> 
> +;
> 
> +; Surface test firwmare signing EKU
> 
> +;
> 
> +[Extensions]
> 
> +    _continue_ = "1.3.6.1.4.1.311.76.9.21.1"
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSignerPid1.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSignerPid1.ini
> new file mode 100644
> index 000000000000..35aa78c493b0
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSignerPid1.ini
> @@ -0,0 +1,24 @@
> +[Version]
> 
> +Signature="$Windows NT$
> 
> +
> 
> +[EnhancedKeyUsageExtension]
> 
> +OID = 1.3.6.1.4.1.311.76.9.21.1
> 
> +OID = 1.3.6.1.4.1.311.76.9.21.1.1
> 
> +
> 
> +[NewRequest]
> 
> +Subject = "CN=TestEKUParsingLeafSignerPid1"
> 
> +Exportable = true
> 
> +KeyLength = 2048
> 
> +HashAlgorithm = sha256
> 
> +KeySpec = AT_SIGNATURE
> 
> +KeyUsage = "CERT_KEY_CERT_SIGN_KEY_USAGE |
> CERT_DIGITAL_SIGNATURE_KEY_USAGE |
> CERT_CRL_SIGN_KEY_USAGE"
> 
> +KeyUsageProperty = "NCRYPT_ALLOW_SIGNING_FLAG"
> 
> +MachineKeySet = True
> 
> +RequestType = cert
> 
> +ValidityPeriodUnits = 5
> 
> +ValidityPeriod = Years
> 
> +
> 
> +[Extensions]
> 
> +    2.5.29.37 = "{text}"
> 
> +    _continue_ = "1.3.6.1.4.1.311.76.9.21.1,"
> 
> +    _continue_ = "1.3.6.1.4.1.311.76.9.21.1.1"
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSignerPid12345.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSignerPid12345.ini
> new file mode 100644
> index 000000000000..67c5741f4d26
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingLeafSignerPid12345.ini
> @@ -0,0 +1,27 @@
> +[Version]
> 
> +Signature="$Windows NT$
> 
> +
> 
> +[EnhancedKeyUsageExtension]
> 
> +OID = 1.3.6.1.4.1.311.76.9.21.1
> 
> +OID = 1.3.6.1.4.1.311.76.9.21.1.12345
> 
> +
> 
> +[NewRequest]
> 
> +Subject = "CN=TestEKUParsingLeafSignerPid12345"
> 
> +Exportable = true
> 
> +KeyLength = 2048
> 
> +HashAlgorithm = sha256
> 
> +KeySpec = AT_SIGNATURE
> 
> +KeyUsage = "CERT_KEY_CERT_SIGN_KEY_USAGE |
> CERT_DIGITAL_SIGNATURE_KEY_USAGE |
> CERT_CRL_SIGN_KEY_USAGE"
> 
> +KeyUsageProperty = "NCRYPT_ALLOW_SIGNING_FLAG"
> 
> +MachineKeySet = True
> 
> +RequestType = cert
> 
> +ValidityPeriodUnits = 5
> 
> +ValidityPeriod = Years
> 
> +
> 
> +[Extensions]
> 
> +    2.5.29.37 = "{text}"
> 
> +    _continue_ = "1.3.6.1.4.1.311.76.9.21.1,"
> 
> +    _continue_ = "1.3.6.1.4.1.311.76.9.21.1.12345"
> 
> +
> 
> +
> 
> +
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingNoEKUsInSigner.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingNoEKUsInSigner.ini
> new file mode 100644
> index 000000000000..60743b02a94b
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingNoEKUsInSigner.ini
> @@ -0,0 +1,16 @@
> +[Version]
> 
> +Signature="$Windows NT$
> 
> +
> 
> +
> 
> +[NewRequest]
> 
> +Subject = "CN=TestEKUParsingNoEKUsInSigner"
> 
> +Exportable = true
> 
> +KeyLength = 2048
> 
> +HashAlgorithm = sha256
> 
> +KeySpec = AT_SIGNATURE
> 
> +KeyUsage = "CERT_KEY_CERT_SIGN_KEY_USAGE |
> CERT_DIGITAL_SIGNATURE_KEY_USAGE |
> CERT_CRL_SIGN_KEY_USAGE"
> 
> +KeyUsageProperty = "NCRYPT_ALLOW_SIGNING_FLAG"
> 
> +MachineKeySet = True
> 
> +RequestType = cert
> 
> +ValidityPeriodUnits = 20
> 
> +ValidityPeriod = Years
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingPolicyCA.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingPolicyCA.ini
> new file mode 100644
> index 000000000000..2ccda66596bc
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingPolicyCA.ini
> @@ -0,0 +1,28 @@
> +[Version]
> 
> +Signature="$Windows NT$
> 
> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 
> +; 2.5.29.19 == Basic Constraints for CA
> 
> +[Strings]
> 
> +szOID_BASIC_CONSTRAINTS2 = "2.5.29.19"
> 
> +
> 
> +[NewRequest]
> 
> +Subject = "CN=TestEKUParsingPolicyCA"
> 
> +Exportable = true
> 
> +KeyLength = 384
> 
> +HashAlgorithm = sha256
> 
> +KeyUsage = "CERT_KEY_CERT_SIGN_KEY_USAGE"
> 
> +KeyUsageProperty = "NCRYPT_ALLOW_SIGNING_FLAG"
> 
> +MachineKeySet = True
> 
> +RequestType = cert
> 
> +ValidityPeriodUnits = 20
> 
> +ValidityPeriod = Years
> 
> +ProviderName = "Microsoft Software Key Storage
> Provider"
> 
> +KeyAlgorithm = "ECDSA_P384"
> 
> +
> 
> +
> 
> +[Extensions]
> 
> +%szOID_BASIC_CONSTRAINTS2% = "{text}"
> 
> +    _continue_ = "ca=True"
> 
> +
> 
> +Critical=%szOID_BASIC_CONSTRAINTS2%
> 
> +
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingRoot.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingRoot.ini
> new file mode 100644
> index 000000000000..d8cd7d1f82a3
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe
> rts/TestEKUParsingRoot.ini
> @@ -0,0 +1,28 @@
> +[Version]
> 
> +Signature="$Windows NT$
> 
> +
> 
> +[Strings]
> 
> +szOID_BASIC_CONSTRAINTS2 = "2.5.29.19"
> 
> +
> 
> +[NewRequest]
> 
> +Subject = "CN=TestEKUParsingRoot"
> 
> +Exportable = true
> 
> +KeyLength = 521
> 
> +HashAlgorithm = sha256
> 
> +KeyUsage = "CERT_DIGITAL_SIGNATURE_KEY_USAGE |
> CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE"
> 
> +KeyUsageProperty = "NCRYPT_ALLOW_SIGNING_FLAG"
> 
> +MachineKeySet = True
> 
> +RequestType = cert
> 
> +ValidityPeriodUnits = 30
> 
> +ValidityPeriod = Years
> 
> +ProviderName = "Microsoft Software Key Storage
> Provider"
> 
> +KeyAlgorithm = ECDSA_P521
> 
> +
> 
> +
> 
> +
> 
> +
> 
> +[Extensions]
> 
> +%szOID_BASIC_CONSTRAINTS2% = "{text}"
> 
> +    _continue_ = "ca=True"
> 
> +
> 
> +Critical=%szOID_BASIC_CONSTRAINTS2%
> 
> --
> 2.27.0.windows.1
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this
> group.
> 
> View/Reply Online (#62560):
> https://edk2.groups.io/g/devel/message/62560
> Mute This Topic: https://groups.io/mt/75505002/1643496
> Group Owner: devel+owner at edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [michael.d.kinney at intel.com]
> -=-=-=-=-=-=


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#62575): https://edk2.groups.io/g/devel/message/62575
Mute This Topic: https://groups.io/mt/75505002/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list