public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Yao, Jiewen" <jiewen.yao@intel.com>
To: "matthewfcarlson@gmail.com" <matthewfcarlson@gmail.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Wang, Jian J" <jian.j.wang@intel.com>,
	"Lu, XiaoyuX" <xiaoyux.lu@intel.com>,
	"Jiang, Guomin" <guomin.jiang@intel.com>
Subject: Re: [PATCH v6 1/2] CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based)
Date: Tue, 13 Oct 2020 00:34:07 +0000	[thread overview]
Message-ID: <CY4PR11MB128866DBDBADB101157467848C040@CY4PR11MB1288.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20201008223747.151-2-matthewfcarlson@gmail.com>

I like this. Thanks to contribute to the unit test zoo.

Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>

> -----Original Message-----
> From: matthewfcarlson@gmail.com <matthewfcarlson@gmail.com>
> Sent: Friday, October 9, 2020 6:38 AM
> To: devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
> Yao, Jiewen <jiewen.yao@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>;
> Matthew Carlson <matthewfcarlson@gmail.com>
> Subject: [PATCH v6 1/2] CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell
> based)
> 
> From: Matthew Carlson <macarl@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.
> 
> In addition, this also adds a UnitTestHostCrtWrapper.c file, which provides
> some of the functionality not provided by the default host based unit test
> system that OpenSSL expects. This is used by UnitTestHostBaseCryptLib, a
> version of the BaseCryptLib meant specifically for host based unit testing.
> 
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Guomin Jiang <guomin.jiang@intel.com>
> Signed-off-by: Matthew Carlson <matthewfcarlson@gmail.com>
> ---
>  CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.c
> |   93 ++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AuthenticodeTests.c
> | 1002 ++++++++++++++++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.c
> |   66 ++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipherTests.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/OaepEncryptTests.c
> |  308 ++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2Tests.c
> |   71 ++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTests.c
> |  524 ++++++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RandTests.c
> |   51 +
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7Tests.c
> |  415 ++++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaTests.c
> |  310 ++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TSTests.c
> |  335 +++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c
> |   81 ++
>  CryptoPkg/CryptoPkg.ci.yaml                                                                    |    8 +
>  CryptoPkg/CryptoPkg.dsc                                                                        |   23 +
>  CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf
> |   90 ++
>  CryptoPkg/Test/CryptoPkgHostUnitTest.dsc                                                       |   35
> +
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSignatures.h
> |  789 +++++++++++++++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h
> |  121 +++
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf
> |   46 +
>  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf
> |   49 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreationInst
> ructions.txt        |   92 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCerts.c
> md                  |   11 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/SignFirmwareWith
> EKUs.cmd             |   76 ++
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingIss
> uingCA.ini          |   45 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingLe
> afSigner.ini         |   25 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingLe
> afSignerPid1.ini     |   24 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingLe
> afSignerPid12345.ini |   27 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingN
> oEKUsInSigner.ini     |   16 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingPo
> licyCA.ini           |   28 +
> 
> CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingRo
> ot.ini               |   28 +
>  33 files changed, 5569 insertions(+)
> 
> diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.c
> b/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.c
> new file mode 100644
> index 000000000000..a9c288e8f2be
> --- /dev/null
> +++ b/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.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/AuthenticodeTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AuthenticodeTests.c
> new file mode 100644
> index 000000000000..8935f289d87a
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AuthenticodeTests.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/BaseCryptLibUnitTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.c
> new file mode 100644
> index 000000000000..b7fcea3ff7e4
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitTests.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/BlockCipherTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipherTests.c
> new file mode 100644
> index 000000000000..b3493073965f
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipherTests.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/OaepEncryptTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c
> new file mode 100644
> index 000000000000..404020f96726
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.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/Pkcs5Pbkdf2Tests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2Tests.c
> new file mode 100644
> index 000000000000..b64248aa5619
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2Tests.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/Pkcs7EkuTests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTests.c
> new file mode 100644
> index 000000000000..b5ae4f6a89e0
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTests.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(TestSignEKUsWith3CertsInSignature,
> 
> +                                      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(TestSignEKUsWith2CertsInSignature,
> 
> +                                      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(TestSignEKUsWith1CertInSignature,
> 
> +                                      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(TestSignedWithMultipleEKUsInCert,
> 
> +                                      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(TestSignedWithMultipleEKUsInCert,
> 
> +                                      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(TestSignatureWithNoEKUsPresent,
> 
> +                                      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(TestSignatureWithNoEKUsPresent,
> 
> +                                      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/RsaPkcs7Tests.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7Tests.c
> new file mode 100644
> index 000000000000..85a3d6a5a13b
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaPkcs7Tests.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/UnitTestMain.c
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.c
> new file mode 100644
> index 000000000000..88a3f96305c3
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMain.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/CryptoPkg.ci.yaml b/CryptoPkg/CryptoPkg.ci.yaml
> index 2ade777aadc5..5d7c340ae504 100644
> --- a/CryptoPkg/CryptoPkg.ci.yaml
> +++ b/CryptoPkg/CryptoPkg.ci.yaml
> @@ -19,6 +19,10 @@
>          ## Both file path and directory path are accepted.
> 
>          "IgnoreFiles": [
> 
>              "Library/OpensslLib/openssl",
> 
> +            # The unit testing folder is not to be checked
> 
> +            "Test/UnitTest",
> 
> +            # This has OpenSSL interfaces that aren't UEFI spec compliant
> 
> +            "Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.c",
> 
>              # this has OpenSSL interfaces that aren't UEFI spec compliant
> 
>              "Library/OpensslLib/rand_pool.c"
> 
>          ]
> 
> @@ -26,6 +30,10 @@
>      "CompilerPlugin": {
> 
>          "DscPath": "CryptoPkg.dsc"
> 
>      },
> 
> +    ## options defined .pytool/Plugin/HostUnitTestCompilerPlugin
> 
> +    "HostUnitTestCompilerPlugin": {
> 
> +        "DscPath": "Test/CryptoPkgHostUnitTest.dsc"
> 
> +    },
> 
>      "CharEncodingCheck": {
> 
>          "IgnoreFiles": []
> 
>      },
> 
> diff --git a/CryptoPkg/CryptoPkg.dsc b/CryptoPkg/CryptoPkg.dsc
> index 0490eeb7e22f..7e51f6fac525 100644
> --- a/CryptoPkg/CryptoPkg.dsc
> +++ b/CryptoPkg/CryptoPkg.dsc
> @@ -224,6 +224,29 @@
>  #       generated for it, but the binary will not be put into any firmware volume.
> 
>  #
> 
> 
> #################################################################
> ##################################
> 
> +[Components]
> 
> +  CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> 
> +  CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf {
> 
> +    <LibraryClasses>
> 
> +      PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
> 
> +
> UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoin
> t.inf
> 
> +
> UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiAppli
> cationEntryPoint.inf
> 
> +
> 
> +      BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
> 
> +      BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
> 
> +      DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
> 
> +
> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryA
> llocationLib.inf
> 
> +      PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> 
> +      PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
> 
> +
> PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLib
> Null.inf
> 
> +      PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
> 
> +
> UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootS
> ervicesTableLib.inf
> 
> +
> 
> +      UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/UnitTestLib.inf
> 
> +
> UnitTestPersistenceLib|UnitTestFrameworkPkg/Library/UnitTestPersistenceLibN
> ull/UnitTestPersistenceLibNull.inf
> 
> +
> UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultReportL
> ib/UnitTestResultReportLibDebugLib.inf
> 
> +  }
> 
> +
> 
>  !if $(CRYPTO_SERVICES) == PACKAGE
> 
>  [Components]
> 
>    CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> 
> diff --git a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf
> b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf
> new file mode 100644
> index 000000000000..db506c32f724
> --- /dev/null
> +++ b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.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|HOST_APPLICATION
> 
> +
> 
> +#
> 
> +# 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/CryptoPkgHostUnitTest.dsc
> b/CryptoPkg/Test/CryptoPkgHostUnitTest.dsc
> new file mode 100644
> index 000000000000..d8605176e697
> --- /dev/null
> +++ b/CryptoPkg/Test/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/UnitTestHostBaseCryptLib.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/TestBaseCryptLibHost.inf
> 
> diff --git
> a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSignatures.h
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSignatures.h
> new file mode 100644
> index 000000000000..9f5f813ef8b1
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSignatures.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/TestBaseCryptLib.h
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h
> new file mode 100644
> index 000000000000..9d1cb150a113
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.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/TestBaseCryptLibHost.inf
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf
> new file mode 100644
> index 000000000000..300b98e40b33
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.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/TestBaseCryptLibShell.inf
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf
> new file mode 100644
> index 000000000000..d5e7e0d01446
> --- /dev/null
> +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.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      = BaseCryptLibUnitTestShell
> 
> +  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/TestEKUCerts/ChainCreationIn
> structions.txt
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreationIn
> structions.txt
> new file mode 100644
> index 000000000000..98dbc464f2da
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreationIn
> structions.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 unit tests.
> 
> +
> 
> +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/TestEKUCerts/CreateTestCerts
> .cmd
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCerts
> .cmd
> new file mode 100644
> index 000000000000..6d68afdab77d
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCerts
> .cmd
> @@ -0,0 +1,11 @@
> +@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/TestEKUCerts/SignFirmwareW
> ithEKUs.cmd
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/SignFirmwareW
> ithEKUs.cmd
> new file mode 100644
> index 000000000000..ce03e33a7169
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/SignFirmwareW
> ithEKUs.cmd
> @@ -0,0 +1,76 @@
> +@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/TestEKUCerts/TestEKUParsing
> IssuingCA.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> IssuingCA.ini
> new file mode 100644
> index 000000000000..8576783473e9
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> IssuingCA.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/TestEKUCerts/TestEKUParsing
> LeafSigner.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> LeafSigner.ini
> new file mode 100644
> index 000000000000..f501537343ca
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> LeafSigner.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/TestEKUCerts/TestEKUParsing
> LeafSignerPid1.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> LeafSignerPid1.ini
> new file mode 100644
> index 000000000000..35aa78c493b0
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> LeafSignerPid1.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/TestEKUCerts/TestEKUParsing
> LeafSignerPid12345.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> LeafSignerPid12345.ini
> new file mode 100644
> index 000000000000..67c5741f4d26
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> LeafSignerPid12345.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/TestEKUCerts/TestEKUParsing
> NoEKUsInSigner.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> NoEKUsInSigner.ini
> new file mode 100644
> index 000000000000..60743b02a94b
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> NoEKUsInSigner.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/TestEKUCerts/TestEKUParsing
> PolicyCA.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> PolicyCA.ini
> new file mode 100644
> index 000000000000..2ccda66596bc
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> PolicyCA.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/TestEKUCerts/TestEKUParsing
> Root.ini
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> Root.ini
> new file mode 100644
> index 000000000000..d8cd7d1f82a3
> --- /dev/null
> +++
> b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsing
> Root.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.28.0.vfs.0.0


  reply	other threads:[~2020-10-13  0:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-08 22:37 [PATCH v6 0/2] Add Unit Tests for BaseCryptLib to CryptoPkg Matthew Carlson
2020-10-08 22:37 ` [PATCH v6 1/2] CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based) Matthew Carlson
2020-10-13  0:34   ` Yao, Jiewen [this message]
2020-10-08 22:37 ` [PATCH v6 2/2] AzurePipelines : Pr Gate: Turn on HBUT for CryptoPkg Matthew Carlson
2020-10-18  0:54 ` [PATCH v6 0/2] Add Unit Tests for BaseCryptLib to CryptoPkg Yao, Jiewen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CY4PR11MB128866DBDBADB101157467848C040@CY4PR11MB1288.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox