From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.905.1602549260638488937 for ; Mon, 12 Oct 2020 17:34:21 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Xw9qVQc9; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: jiewen.yao@intel.com) IronPort-SDR: ge9wAiNJEwy8wL95Q1uUHu7CVIV9Nxi9BigdUG+UChRYPXAhBzdRt5L5FBSYACDyTOXIJaU4Cp u4LtgtHrYbuQ== X-IronPort-AV: E=McAfee;i="6000,8403,9772"; a="230002970" X-IronPort-AV: E=Sophos;i="5.77,368,1596524400"; d="scan'208";a="230002970" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2020 17:34:18 -0700 IronPort-SDR: GNLFXfn16F2vpLV8mHMpNCboy3bDzR8nELTRccsq4+vIjJ1l2WAmPh23kg4xeKRGuVV0ceiB0G EwaLaBI2D51Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,368,1596524400"; d="scan'208";a="350923593" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga002.fm.intel.com with ESMTP; 12 Oct 2020 17:34:18 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 12 Oct 2020 17:34:17 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 12 Oct 2020 17:34:16 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 12 Oct 2020 17:34:16 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.106) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Mon, 12 Oct 2020 17:34:15 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zt7iQ6yH/p7RudYaeO/NFD64O8neTpI7XKKVbrh9ANjdScNjD5+EpgEiUGaNXjO+ae6TzuzxBkoJMZPlL7kdTm/h7GuL5gmdzCJQ66vhYZwck3y3Ou6N5CBED4GoNSAJRMYHr+IGAxL2VlC17NSURYyvSCG0Lc7Bj5fK25iPiQ17AhbyacrOKyF5VDeg+kd9RgGpaFIvIcAp2KCRH63rtsg8Pr/2aON3dYbZCUGfUyYt+kKrVfA1KAE74kEm4+3aUprCDmVF3TMDVixs5hBsuGTQAlLKRsZ+oI5pBAk7lTH4mmBYaQhRk4eMV8mjIy2ZvPiJTeJT54YwjK2qok0o0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VhkPeKO+xosz+edKyfItOCGJaGXDclVc0gM5AREcYDQ=; b=KS4058deCicMXw9gaW3eQHRRfUGkIFMbUnz2G/NWtd+rcqxW1DVQ/8kXI6vLaTOa8LXvk/uQUr2O/69b4Ndf+Z8kCvUCVlYB7CQ1KBQ8SHqIxqTOlbKgUncowUwZKsbZgPC/a3QTyDstQWBvadwZ8moE0PQnlPl1Gonb3MBy0ouMgIV04rRbYPb7ih2tiIVgmu7hqJY5T3gwx7FXCy3pQ5jLpLExklebkYtPYgI2UFBJfRQeaTKqn4JvS4xquURDLWgWhQx7h3yMLCtNYYDBOSFxSmL0Q46zCUnTFsP85F9hQWE7q6PjaGhtZaUzkFr+vPFPW+KdGmEUQQ+7nkqTWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VhkPeKO+xosz+edKyfItOCGJaGXDclVc0gM5AREcYDQ=; b=Xw9qVQc9dxkG5f/QHJoKkoqrMTfJD+JwkNzf5BDHuesmrmyk8j0bLndre1DmCGf+iDCggU/8YaCdjOfKNZHztCQUznZ29224YUiItTltdH3chEwv1u+yr4PAstnWyKqnJxI84EUapkFGlxNe3OX7+/qcPi131a5U5tLPm+px7jo= Received: from CY4PR11MB1288.namprd11.prod.outlook.com (2603:10b6:903:23::8) by CY4PR1101MB2199.namprd11.prod.outlook.com (2603:10b6:910:1a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.28; Tue, 13 Oct 2020 00:34:08 +0000 Received: from CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::8948:caa4:ca1a:23ac]) by CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::8948:caa4:ca1a:23ac%10]) with mapi id 15.20.3455.030; Tue, 13 Oct 2020 00:34:08 +0000 From: "Yao, Jiewen" To: "matthewfcarlson@gmail.com" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Lu, XiaoyuX" , "Jiang, Guomin" Subject: Re: [PATCH v6 1/2] CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based) Thread-Topic: [PATCH v6 1/2] CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based) Thread-Index: AQHWncPEJkt5zOiKzU6kR6NkBKcaJqmUtQFg Date: Tue, 13 Oct 2020 00:34:07 +0000 Message-ID: References: <20201008223747.151-1-matthewfcarlson@gmail.com> <20201008223747.151-2-matthewfcarlson@gmail.com> In-Reply-To: <20201008223747.151-2-matthewfcarlson@gmail.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.192] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 348bdc70-fb6f-4389-6fdb-08d86f0fb26c x-ms-traffictypediagnostic: CY4PR1101MB2199: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7219; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8osun0s/a+/4SSzrWYey4utCrGgO5+Qs469Ll89vpuA5igt8bU801UWWLe5sP2Yt/guYNEkUaIBpUhW0AbbTGuZcAI3tZnyyP2cy4exSO+2Hwokbd/FL+e72ZfZ9tBP0boVY6TMlYyJFkLobsshwqMV1W+cBiKSBE6ofJGa2GBXDNtTRCeMNnOGiVoARPKQu9ftv55YjfqmaK+Re1OkQbzFRlD+7QSFf+2fM85gY3cBSoiGoHDfL3o/wnAI4cz9C4i7vNWuGxYNamNBG94Ky7O4J7zfZ3wnQrGWeQDS6R7YZhQRuGrZIg/jV+Ye60w2o63Hm1drumjO5S1jm95eCyEgzEVCwHrLQcDH85Y7MhzQavBMa3GRtkqd7sHZYUzyvQo/ZMpEL9YywT+o6tCGmGzCOiB7VUZc08GOwTa9SUR0brYPBQQwFbhnjY4U08ejf x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1288.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(346002)(376002)(396003)(136003)(39860400002)(33656002)(9686003)(86362001)(107886003)(2906002)(110136005)(83380400001)(54906003)(316002)(66946007)(55016002)(4326008)(186003)(6506007)(8676002)(71200400001)(5660300002)(26005)(8936002)(966005)(52536014)(76116006)(478600001)(19627235002)(7696005)(83080400001)(66446008)(30864003)(64756008)(66476007)(66556008)(53546011)(45080400002)(569008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 4ulykRTdCfPnOGm5dCqxvbj5nspKaPeb/5wvpWquvH2e+I/b0tTgmWioSWR9zM93Jp/XoeIXSdjHsiNEpEzwGJSyKUB+AvQwAPzXhuNSeQdgZb89783+HMm8loTjOfkwEUrxHTrQWpTT6thEfHcV+Yxze9AYHY0GrXJ1EVQu7F4gj4Hb5/K/WMflqYsdJYjBVwcjcXhxSvYUH7xPZHxqmVs0P3VmlmlKWL5c05Mtem9uzBJoh34ABaHgRBhGRTDR7I9DuG4rGlHmj84ngNxnGNJiTU3qdYb/JNriA6Cs1hUaBUjRMDmUtSzwL4g21mLxHNQAZ9YkwcbxTvRpws1mwyFV5LlLALSiwtG/0b0rQRgWUEayWPYPEAtDnjtK22MK6Gu+jFlUQI4SBc7VCKC7Nevf1Q/A9sO5vt+/sAM+27czBHbCLkSnNiHhPrV5yhj64fHp4hajKuLHyyUkXnV46iNkG/v6+i5m/yz2z1OnKqPT1qtusUUBLV4k0/l3upIPpS4LpK3w14PI1s/DpITX7/x7Oj43Bkejo5lh8ZZRlbGyBm1gy/dtxIJRgk50SsKS2TV14oMnzbCLwnpbJBg8YrDGXX7s7zvnitPqAgtfDouekiK33y272QBpri6EF1GBijMvnRFCdfOiZ/+wjLBDbg== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1288.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 348bdc70-fb6f-4389-6fdb-08d86f0fb26c X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2020 00:34:07.8420 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: B7v7BO80sTwDu54tQG1dasD71AyenE+5uhPuJfX1gaNFd6JzFfPIH4Onahjc7vHUAUzicNbtvIdpdASYLnJUdg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2199 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I like this. Thanks to contribute to the unit test zoo. Reviewed-by: Jiewen Yao > -----Original Message----- > From: matthewfcarlson@gmail.com > Sent: Friday, October 9, 2020 6:38 AM > To: devel@edk2.groups.io > Cc: Wang, Jian J ; Lu, XiaoyuX ; > Yao, Jiewen ; Jiang, Guomin ; > Matthew Carlson > Subject: [PATCH v6 1/2] CryptoPkg: BaseCryptLib: Add unit tests (Host and= Shell > based) >=20 > From: Matthew Carlson >=20 > 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. >=20 > In addition, this also adds a UnitTestHostCrtWrapper.c file, which provid= es > some of the functionality not provided by the default host based unit tes= t > system that OpenSSL expects. This is used by UnitTestHostBaseCryptLib, a > version of the BaseCryptLib meant specifically for host based unit testin= g. >=20 > Cc: Jian J Wang > Cc: Xiaoyu Lu > Cc: Jiewen Yao > Cc: Guomin Jiang > Signed-off-by: Matthew Carlson > --- > 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 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreationIn= st > ructions.txt | 92 ++ >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCerts= .c > md | 11 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/SignFirmwareWit= h > EKUs.cmd | 76 ++ >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingI= ss > uingCA.ini | 45 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingL= e > afSigner.ini | 25 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingL= e > afSignerPid1.ini | 24 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingL= e > afSignerPid12345.ini | 27 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingN > oEKUsInSigner.ini | 16 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingP= o > licyCA.ini | 28 + >=20 > CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingR= o > ot.ini | 28 + > 33 files changed, 5569 insertions(+) >=20 > diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrappe= r.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 >=20 > + C Run-Time Libraries (CRT) Wrapper Implementation for OpenSSL-based >=20 > + Cryptographic Library. >=20 > + >=20 > +Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
>=20 > +Copyright (c) Microsoft Corporation >=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include >=20 > + >=20 > +#include >=20 > +#include >=20 > + >=20 > +/* Convert character to lowercase */ >=20 > +int tolower (int c) >=20 > +{ >=20 > + if (('A' <=3D (c)) && ((c) <=3D 'Z')) { >=20 > + return (c - ('A' - 'a')); >=20 > + } >=20 > + return (c); >=20 > +} >=20 > + >=20 > +/* Compare first n bytes of string s1 with string s2, ignoring case */ >=20 > +int strncasecmp (const char *s1, const char *s2, size_t n) >=20 > +{ >=20 > + int Val; >=20 > + >=20 > + ASSERT(s1 !=3D NULL); >=20 > + ASSERT(s2 !=3D NULL); >=20 > + >=20 > + if (n !=3D 0) { >=20 > + do { >=20 > + Val =3D tolower(*s1) - tolower(*s2); >=20 > + if (Val !=3D 0) { >=20 > + return Val; >=20 > + } >=20 > + ++s1; >=20 > + ++s2; >=20 > + if (*s1 =3D=3D '\0') { >=20 > + break; >=20 > + } >=20 > + } while (--n !=3D 0); >=20 > + } >=20 > + return 0; >=20 > +} >=20 > + >=20 > +/* Read formatted data from a string */ >=20 > +int sscanf (const char *buffer, const char *format, ...) >=20 > +{ >=20 > + // >=20 > + // Null sscanf() function implementation to satisfy the linker, since >=20 > + // no direct functionality logic dependency in present UEFI cases. >=20 > + // >=20 > + return 0; >=20 > +} >=20 > + >=20 > +// >=20 > +// -- Dummy OpenSSL Support Routines -- >=20 > +// >=20 > + >=20 > +int BIO_printf (void *bio, const char *format, ...) >=20 > +{ >=20 > + return 0; >=20 > +} >=20 > + >=20 > +int BIO_snprintf(char *buf, size_t n, const char *format, ...) >=20 > +{ >=20 > + return 0; >=20 > +} >=20 > + >=20 > +uid_t getuid (void) >=20 > +{ >=20 > + return 0; >=20 > +} >=20 > + >=20 > +uid_t geteuid (void) >=20 > +{ >=20 > + return 0; >=20 > +} >=20 > + >=20 > +gid_t getgid (void) >=20 > +{ >=20 > + return 0; >=20 > +} >=20 > + >=20 > +gid_t getegid (void) >=20 > +{ >=20 > + return 0; >=20 > +} >=20 > + >=20 > +int errno =3D 0; >=20 > diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AuthenticodeTes= ts.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 >=20 > + Sample Implementation for Microsoft Authenticode Verification. >=20 > + >=20 > +Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +// >=20 > +// Sample PE/COFF Image Hash Value (Digested by SHA-1). >=20 > +// This value should be calculated following MSFT's Authenticode Specifi= cation >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 PeSha1Hash[] =3D { >=20 > + 0x44, 0xFD, 0x4F, 0xA9, 0x17, 0xEE, 0xAC, 0xCF, 0x1F, 0x0B, 0xE3, 0xA1= , 0x4D, > 0x5B, 0xA6, 0x61, >=20 > + 0x82, 0x97, 0xC4, 0xB6 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Sample PE/COFF Image Hash Value (Digested by SHA-256). >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 PeSha256Hash[] =3D { >=20 > + 0x61, 0x82, 0xB7, 0xF8, 0x8C, 0xFF, 0xC2, 0xEB, 0x79, 0x6E, 0x9D, 0xA9= , 0xDD, > 0x39, 0x52, 0xDD, >=20 > + 0x36, 0xDD, 0xF1, 0x43, 0x27, 0x58, 0x8C, 0xA7, 0xCC, 0xAE, 0xDE, 0xDD= , > 0x3C, 0x02, 0x12, 0x49 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Sample Authenticode Data with SHA-1 hash algorithm. >=20 > +// This data should be retrieved from signed PE/COFF image according to > SECURITY >=20 > +// directory in PE/COFF Header. >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithSha1[] =3D { >=20 > + 0x30, 0x82, 0x1C, 0x43, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D= , 0x01, > 0x07, 0x02, 0xA0, >=20 > + 0x82, 0x1C, 0x34, 0x30, 0x82, 0x1C, 0x30, 0x02, 0x01, 0x01, 0x31, 0x0B= , 0x30, > 0x09, 0x06, 0x05, >=20 > + 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, 0x68, 0x06, 0x0A, 0x2B= , 0x06, > 0x01, 0x04, 0x01, >=20 > + 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x5A, 0x30, 0x58, 0x30, 0x33, 0x06= , 0x0A, > 0x2B, 0x06, 0x01, >=20 > + 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0F, 0x30, 0x25, 0x03, 0x01, 0x00= , 0xA0, > 0x20, 0xA2, 0x1E, >=20 > + 0x80, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x4F, 0x00, 0x62= , 0x00, > 0x73, 0x00, 0x6F, >=20 > + 0x00, 0x6C, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x3E, 0x00, 0x3E= , 0x00, > 0x3E, 0x30, 0x21, >=20 > + 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04= , 0x14, > 0x44, 0xFD, 0x4F, >=20 > + 0xA9, 0x17, 0xEE, 0xAC, 0xCF, 0x1F, 0x0B, 0xE3, 0xA1, 0x4D, 0x5B, 0xA6= , 0x61, > 0x82, 0x97, 0xC4, >=20 > + 0xB6, 0xA0, 0x82, 0x17, 0x18, 0x30, 0x82, 0x04, 0xCA, 0x30, 0x82, 0x03= , 0xB2, > 0xA0, 0x03, 0x02, >=20 > + 0x01, 0x02, 0x02, 0x0A, 0x61, 0x03, 0xDC, 0xF6, 0x00, 0x00, 0x00, 0x00= , 0x00, > 0x0C, 0x30, 0x0D, >=20 > + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05= , 0x00, > 0x30, 0x77, 0x31, >=20 > + 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53= , 0x31, > 0x13, 0x30, 0x11, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69= , 0x6E, > 0x67, 0x74, 0x6F, >=20 > + 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07= , 0x52, > 0x65, 0x64, 0x6D, >=20 > + 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A= , 0x13, > 0x15, 0x4D, 0x69, >=20 > + 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70= , 0x6F, > 0x72, 0x61, 0x74, >=20 > + 0x69, 0x6F, 0x6E, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03= , 0x13, > 0x18, 0x4D, 0x69, >=20 > + 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65= , 0x2D, > 0x53, 0x74, 0x61, >=20 > + 0x6D, 0x70, 0x20, 0x50, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x38= , 0x30, > 0x37, 0x32, 0x35, >=20 > + 0x31, 0x39, 0x31, 0x32, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x31, 0x31, 0x30= , 0x37, > 0x32, 0x35, 0x31, >=20 > + 0x39, 0x32, 0x32, 0x35, 0x30, 0x5A, 0x30, 0x81, 0xB3, 0x31, 0x0B, 0x30= , 0x09, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03= , 0x55, > 0x04, 0x08, 0x13, >=20 > + 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31= , 0x10, > 0x30, 0x0E, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E= , 0x64, > 0x31, 0x1E, 0x30, >=20 > + 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72= , 0x6F, > 0x73, 0x6F, 0x66, >=20 > + 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F= , 0x6E, > 0x31, 0x0D, 0x30, >=20 > + 0x0B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x04, 0x4D, 0x4F, 0x50, 0x52= , 0x31, > 0x27, 0x30, 0x25, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1E, 0x6E, 0x43, 0x69, 0x70, 0x68= , 0x65, > 0x72, 0x20, 0x44, >=20 > + 0x53, 0x45, 0x20, 0x45, 0x53, 0x4E, 0x3A, 0x31, 0x35, 0x39, 0x43, 0x2D= , 0x41, > 0x33, 0x46, 0x37, >=20 > + 0x2D, 0x32, 0x35, 0x37, 0x30, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55= , 0x04, > 0x03, 0x13, 0x1C, >=20 > + 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69= , 0x6D, > 0x65, 0x2D, 0x53, >=20 > + 0x74, 0x61, 0x6D, 0x70, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65= , 0x30, > 0x82, 0x01, 0x22, >=20 > + 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01= , 0x01, > 0x05, 0x00, 0x03, >=20 > + 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01= , 0x00, > 0xC0, 0xED, 0x81, >=20 > + 0x14, 0xA1, 0x5E, 0x77, 0xC0, 0x5B, 0xF4, 0x76, 0x89, 0x62, 0xFA, 0xAD= , 0x7C, > 0x68, 0x14, 0xB4, >=20 > + 0xF7, 0xBD, 0x35, 0xD8, 0x13, 0x79, 0x5A, 0x17, 0xCA, 0xD9, 0x6C, 0x51= , > 0x45, 0x62, 0x26, 0x7A, >=20 > + 0x2F, 0x1F, 0xD8, 0xEA, 0xC1, 0x6E, 0x01, 0x17, 0xF9, 0xC3, 0xA6, 0x1F= , 0x67, > 0xDB, 0x51, 0xB0, >=20 > + 0x2C, 0xDE, 0x8A, 0x17, 0xED, 0xFF, 0x20, 0xAD, 0x34, 0xEA, 0x98, 0xFB= , > 0xA5, 0xD6, 0x2A, 0xD2, >=20 > + 0xF1, 0x44, 0x27, 0x07, 0x5A, 0x2D, 0x3A, 0x93, 0xFF, 0x56, 0x53, 0xB0= , 0xC8, > 0xF5, 0xF3, 0x03, >=20 > + 0xF2, 0x49, 0xCC, 0x16, 0xD0, 0xF5, 0x00, 0x4C, 0x58, 0xF8, 0x9B, 0xF5= , 0x07, > 0x25, 0xB1, 0x66, >=20 > + 0x17, 0xC0, 0xBD, 0xC8, 0xD2, 0x52, 0x85, 0x8D, 0xC2, 0x2B, 0x38, 0xB2= , > 0xC3, 0x36, 0xBE, 0xF9, >=20 > + 0x87, 0xDA, 0xF4, 0x8E, 0x5D, 0x43, 0xD7, 0x06, 0xBF, 0x99, 0x05, 0x9F= , 0xA4, > 0xCE, 0xFE, 0xAB, >=20 > + 0x8D, 0x61, 0x63, 0xE7, 0x39, 0xC5, 0xF3, 0x18, 0xF6, 0xD8, 0xFC, 0x31= , 0x36, > 0x69, 0x72, 0x5A, >=20 > + 0xA2, 0x1A, 0x4C, 0x3E, 0xEA, 0x87, 0x25, 0x42, 0x9D, 0xD1, 0x3E, 0xF1= , 0x97, > 0xD2, 0x18, 0x32, >=20 > + 0x93, 0x70, 0x55, 0x53, 0x81, 0x1E, 0xE3, 0x3B, 0x0D, 0xE8, 0xBE, 0x82= , 0x78, > 0x6D, 0xE6, 0xFA, >=20 > + 0xCD, 0x98, 0xA4, 0x6F, 0xDB, 0xEE, 0x66, 0xF4, 0x95, 0xC8, 0xCD, 0x35= , > 0xC9, 0x9E, 0xBB, 0x36, >=20 > + 0x0D, 0x83, 0x96, 0x94, 0x26, 0xA7, 0x90, 0xE0, 0xA9, 0x34, 0x3B, 0xD5= , 0xC0, > 0x9E, 0x3E, 0xF0, >=20 > + 0xD4, 0x47, 0x8D, 0x86, 0x0C, 0x82, 0xA4, 0x58, 0x30, 0x3A, 0x1C, 0x76= , 0xE3, > 0xAD, 0x95, 0x66, >=20 > + 0xB4, 0xB7, 0xFD, 0x09, 0x8A, 0x05, 0x60, 0x0F, 0xA3, 0x0F, 0xE2, 0x93= , 0x96, > 0x58, 0x22, 0x9C, >=20 > + 0x9D, 0x2B, 0xDB, 0xA2, 0x94, 0x18, 0x90, 0x95, 0x02, 0xBD, 0x06, 0x40= , > 0x95, 0x02, 0x03, 0x01, >=20 > + 0x00, 0x01, 0xA3, 0x82, 0x01, 0x19, 0x30, 0x82, 0x01, 0x15, 0x30, 0x1D= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x0E, 0x04, 0x16, 0x04, 0x14, 0xD2, 0xED, 0x0D, 0x1E, 0x24, 0xBB, 0x37= , > 0xA9, 0xD8, 0x20, 0x6A, >=20 > + 0x4D, 0x1D, 0xD2, 0x16, 0xD5, 0x2E, 0xBE, 0x9E, 0xEB, 0x30, 0x1F, 0x06= , > 0x03, 0x55, 0x1D, 0x23, >=20 > + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x23, 0x34, 0xF8, 0xD9, 0x52, 0x46= , 0x70, > 0x0A, 0xED, 0x40, >=20 > + 0xFB, 0x76, 0xFB, 0xB3, 0x2B, 0xB0, 0xC3, 0x35, 0xB3, 0x0F, 0x30, 0x54= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x1F, 0x04, 0x4D, 0x30, 0x4B, 0x30, 0x49, 0xA0, 0x47, 0xA0, 0x45, 0x86= , 0x43, > 0x68, 0x74, 0x74, >=20 > + 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72= , 0x6F, > 0x73, 0x6F, 0x66, >=20 > + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72= , 0x6C, > 0x2F, 0x70, 0x72, >=20 > + 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F= , 0x73, > 0x6F, 0x66, 0x74, >=20 > + 0x54, 0x69, 0x6D, 0x65, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x50, 0x43, 0x41= , 0x2E, > 0x63, 0x72, 0x6C, >=20 > + 0x30, 0x58, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01= , 0x04, > 0x4C, 0x30, 0x4A, >=20 > + 0x30, 0x48, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02= , 0x86, > 0x3C, 0x68, 0x74, >=20 > + 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63= , 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63= , 0x65, > 0x72, 0x74, 0x73, >=20 > + 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x54, 0x69= , 0x6D, > 0x65, 0x53, 0x74, >=20 > + 0x61, 0x6D, 0x70, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x13= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05= , 0x07, > 0x03, 0x08, 0x30, >=20 > + 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03= , 0x02, > 0x06, 0xC0, 0x30, >=20 > + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05= , 0x05, > 0x00, 0x03, 0x82, >=20 > + 0x01, 0x01, 0x00, 0x9C, 0x0A, 0x55, 0xC8, 0xCC, 0x44, 0x13, 0x34, 0x0C= , 0xD8, > 0x63, 0x27, 0x76, >=20 > + 0x7D, 0x3E, 0xFA, 0x38, 0x32, 0x83, 0x53, 0x9D, 0xF2, 0x08, 0xF9, 0x32= , 0xF5, > 0xC5, 0x6E, 0x70, >=20 > + 0xA1, 0xC9, 0xB1, 0x63, 0x6B, 0x19, 0x9D, 0x09, 0x67, 0xD9, 0x9D, 0xEB= , > 0x8A, 0x6A, 0xDB, 0x60, >=20 > + 0x66, 0xE9, 0xE9, 0x52, 0x26, 0xF3, 0x3B, 0xC6, 0x6A, 0xD3, 0xC2, 0x52= , 0xBE, > 0xA8, 0xB9, 0xEB, >=20 > + 0x6A, 0xAA, 0x78, 0x8C, 0xC9, 0x16, 0x7D, 0x90, 0x95, 0xA0, 0xCC, 0x21= , > 0xB3, 0x9E, 0x81, 0xBD, >=20 > + 0xCD, 0xC1, 0x8B, 0x29, 0xBD, 0x62, 0x25, 0xEF, 0x09, 0x57, 0xE7, 0x86= , 0x4E, > 0x2A, 0xEC, 0x80, >=20 > + 0xCA, 0xBB, 0xFC, 0x21, 0x16, 0xC4, 0x3F, 0x4E, 0x52, 0x19, 0xE6, 0x0E= , 0xB1, > 0xD8, 0xC1, 0xC2, >=20 > + 0x79, 0x90, 0x64, 0xB4, 0x50, 0x73, 0x10, 0x35, 0x5E, 0x5D, 0x11, 0xC1= , 0xB8, > 0xBA, 0xAA, 0xCF, >=20 > + 0x52, 0xF6, 0x80, 0x91, 0x00, 0xE6, 0xEF, 0x51, 0x43, 0x46, 0xE9, 0xD0= , 0xE8, > 0x94, 0xF6, 0x2C, >=20 > + 0x24, 0x0D, 0x8A, 0xC6, 0xB2, 0x31, 0x8A, 0xA3, 0x7E, 0x36, 0x6C, 0xA4= , > 0x05, 0x4C, 0x67, 0x07, >=20 > + 0x2A, 0xBB, 0xBB, 0x10, 0xA5, 0xA5, 0x30, 0x1A, 0x72, 0xD0, 0x06, 0x20= , > 0x3B, 0x24, 0x93, 0x5B, >=20 > + 0x15, 0xD9, 0x39, 0x93, 0xD3, 0x73, 0x2D, 0x1A, 0xC4, 0xD4, 0x6C, 0x1E= , > 0xA1, 0x08, 0xEC, 0xF6, >=20 > + 0x31, 0xB8, 0x6B, 0x4B, 0xEC, 0xEE, 0x5C, 0x33, 0x02, 0x14, 0x32, 0x8C= , 0x7C, > 0x11, 0x20, 0x2F, >=20 > + 0x20, 0x03, 0x7F, 0xF9, 0x0C, 0x9D, 0xB8, 0xD3, 0x9E, 0x5F, 0xD6, 0x08= , 0xFC, > 0x81, 0xA0, 0x99, >=20 > + 0xB8, 0xBB, 0x55, 0x6E, 0xCD, 0x42, 0x4B, 0x3A, 0x4D, 0x8C, 0x14, 0x2B= , > 0xCA, 0xC8, 0x12, 0xD3, >=20 > + 0x62, 0x6E, 0xEA, 0x0D, 0x0A, 0x9D, 0x09, 0xA3, 0x66, 0xD9, 0x79, 0x4F= , 0x8E, > 0x1A, 0xA2, 0xFF, >=20 > + 0xCC, 0x98, 0x04, 0x30, 0x82, 0x05, 0x96, 0x30, 0x82, 0x04, 0x7E, 0xA0= , 0x03, > 0x02, 0x01, 0x02, >=20 > + 0x02, 0x0A, 0x61, 0x01, 0xC6, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07= , 0x30, > 0x0D, 0x06, 0x09, >=20 > + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30= , 0x81, > 0x81, 0x31, 0x0B, >=20 > + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31= , 0x13, > 0x30, 0x11, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E= , 0x67, > 0x74, 0x6F, 0x6E, >=20 > + 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52= , 0x65, > 0x64, 0x6D, 0x6F, >=20 > + 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13= , 0x15, > 0x4D, 0x69, 0x63, >=20 > + 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F= , 0x72, > 0x61, 0x74, 0x69, >=20 > + 0x6F, 0x6E, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13= , 0x22, > 0x4D, 0x69, 0x63, >=20 > + 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F= , 0x77, > 0x73, 0x20, 0x56, >=20 > + 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20= , 0x50, > 0x43, 0x41, 0x30, >=20 > + 0x1E, 0x17, 0x0D, 0x30, 0x38, 0x31, 0x30, 0x32, 0x32, 0x32, 0x30, 0x33= , 0x39, > 0x32, 0x32, 0x5A, >=20 > + 0x17, 0x0D, 0x31, 0x30, 0x30, 0x31, 0x32, 0x32, 0x32, 0x30, 0x34, 0x39= , 0x32, > 0x32, 0x5A, 0x30, >=20 > + 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02= , 0x55, > 0x53, 0x31, 0x13, >=20 > + 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73= , 0x68, > 0x69, 0x6E, 0x67, >=20 > + 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07= , 0x13, > 0x07, 0x52, 0x65, >=20 > + 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55= , 0x04, > 0x0A, 0x13, 0x15, >=20 > + 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F= , 0x72, > 0x70, 0x6F, 0x72, >=20 > + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55= , 0x04, > 0x0B, 0x13, 0x04, >=20 > + 0x4D, 0x4F, 0x50, 0x52, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04= , 0x03, > 0x13, 0x11, 0x4D, >=20 > + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E= , 0x64, > 0x6F, 0x77, 0x73, >=20 > + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86= , 0xF7, > 0x0D, 0x01, 0x01, >=20 > + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A= , 0x02, > 0x82, 0x01, 0x01, >=20 > + 0x00, 0xDC, 0x3A, 0xD3, 0x44, 0xF4, 0x6E, 0x20, 0x9F, 0xDD, 0xA4, 0x0E= , > 0x82, 0x4E, 0xC7, 0x86, >=20 > + 0x5E, 0x63, 0xCC, 0xCA, 0xE5, 0x42, 0x53, 0x4B, 0x85, 0xFA, 0x5D, 0x71= , 0x6C, > 0xCF, 0x76, 0x0C, >=20 > + 0x18, 0x8B, 0xA6, 0x0D, 0xF5, 0x4A, 0xF7, 0xFE, 0x17, 0xF2, 0x90, 0xCC= , 0x62, > 0xC7, 0x24, 0xAD, >=20 > + 0x9B, 0x9A, 0xE1, 0x45, 0x3B, 0x61, 0xD8, 0x0D, 0x05, 0x69, 0xC7, 0xCD= , > 0x88, 0x2A, 0xB8, 0xB9, >=20 > + 0x18, 0x1E, 0x60, 0x10, 0x5F, 0x88, 0xC6, 0xD2, 0x82, 0x4E, 0x6D, 0x49= , 0xC5, > 0xBE, 0x5C, 0x12, >=20 > + 0x86, 0x48, 0x85, 0x89, 0x91, 0x81, 0xCD, 0x1B, 0xAD, 0x1F, 0xB7, 0x2D= , > 0x67, 0x79, 0xF1, 0x7B, >=20 > + 0x9F, 0x25, 0x87, 0x14, 0x76, 0x5F, 0xE3, 0x0E, 0x64, 0xA1, 0x72, 0x61= , 0x25, > 0xE5, 0x75, 0x69, >=20 > + 0xC5, 0x14, 0xF1, 0x5F, 0x07, 0x56, 0xA4, 0x0D, 0x70, 0x06, 0x23, 0xA7= , 0x6C, > 0xDD, 0x82, 0xAE, >=20 > + 0xD9, 0x9B, 0x47, 0xA4, 0xA5, 0x6C, 0x08, 0xB0, 0x58, 0xF1, 0x53, 0x6A= , 0x4F, > 0xDA, 0x85, 0x61, >=20 > + 0xCB, 0x02, 0x7B, 0x49, 0xAF, 0x1F, 0xBB, 0xE0, 0xD7, 0xB9, 0x5E, 0xDB= , > 0x73, 0x89, 0x76, 0xC1, >=20 > + 0x3A, 0xBB, 0x0D, 0xF5, 0x97, 0xF0, 0x88, 0x5D, 0x69, 0x77, 0x80, 0xCF= , 0xF1, > 0x7E, 0x03, 0x9F, >=20 > + 0x73, 0x6D, 0xDE, 0x05, 0xB8, 0x2F, 0x77, 0xB5, 0x54, 0x55, 0x45, 0xD0= , > 0xD2, 0x38, 0xBD, 0x96, >=20 > + 0xE3, 0xF7, 0xEA, 0x40, 0xE5, 0xAC, 0x19, 0xFC, 0x71, 0xCB, 0x28, 0x27= , 0xAA, > 0x71, 0xA1, 0x72, >=20 > + 0xB5, 0x12, 0x27, 0xC1, 0x51, 0xF6, 0x36, 0xC5, 0xC0, 0xC7, 0x7B, 0x3A= , 0x3A, > 0x93, 0x37, 0x04, >=20 > + 0xCC, 0xEE, 0x0B, 0x69, 0x78, 0x64, 0x75, 0x41, 0xB6, 0x78, 0x22, 0x0F= , 0x77, > 0x84, 0xF7, 0x4B, >=20 > + 0x8D, 0x46, 0x65, 0x92, 0x5B, 0x4D, 0x56, 0x6B, 0x75, 0x04, 0x46, 0x3F= , 0x0B, > 0x1B, 0xB4, 0x19, >=20 > + 0xBF, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x02, 0x0F, 0x30, 0x82= , 0x02, > 0x0B, 0x30, 0x1F, >=20 > + 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x18, 0x30, 0x16, 0x06, 0x08, 0x2B= , 0x06, > 0x01, 0x05, 0x05, >=20 > + 0x07, 0x03, 0x03, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37= , 0x0A, > 0x03, 0x06, 0x30, >=20 > + 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xA1, 0xE6= , 0xC3, > 0x65, 0xD0, 0xE6, >=20 > + 0xE8, 0x28, 0x62, 0xC2, 0xF3, 0xC2, 0x23, 0xA6, 0x1C, 0x49, 0x82, 0x0B= , 0xD5, > 0x53, 0x30, 0x0E, >=20 > + 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02= , 0x07, > 0x80, 0x30, 0x1F, >=20 > + 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x90= , 0x8B, > 0x11, >=20 > + 0xA5, 0x70, 0xED, 0xE0, 0xF9, 0xA9, 0xC0, 0xAC, 0x08, 0xC7, 0xB5, 0xF4= , 0x82, > 0xB1, 0x3C, 0xC5, >=20 > + 0x4A, 0x30, 0x7B, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x74, 0x30, 0x72= , 0x30, > 0x70, 0xA0, 0x6E, >=20 > + 0xA0, 0x6C, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63= , 0x72, > 0x6C, 0x2E, 0x6D, >=20 > + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D= , 0x2F, > 0x70, 0x6B, 0x69, >=20 > + 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74= , 0x73, > 0x2F, 0x57, 0x69, >=20 > + 0x6E, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x86, 0x34, 0x68, 0x74= , 0x74, > 0x70, 0x3A, 0x2F, >=20 > + 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F= , 0x66, > 0x74, 0x2E, 0x63, >=20 > + 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70= , 0x72, > 0x6F, 0x64, 0x75, >=20 > + 0x63, 0x74, 0x73, 0x2F, 0x57, 0x69, 0x6E, 0x50, 0x43, 0x41, 0x2E, 0x63= , 0x72, > 0x6C, 0x30, 0x52, >=20 > + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x46= , 0x30, > 0x44, 0x30, 0x42, >=20 > + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x36= , 0x68, > 0x74, 0x74, 0x70, >=20 > + 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F= , 0x73, > 0x6F, 0x66, 0x74, >=20 > + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72= , 0x74, > 0x73, 0x2F, 0x4D, >=20 > + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x57, 0x69, 0x6E, 0x50= , 0x43, > 0x41, 0x2E, 0x63, >=20 > + 0x72, 0x74, 0x30, 0x81, 0xC6, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x81= , 0xBE, > 0x30, 0x81, 0xBB, >=20 > + 0x30, 0x81, 0xB8, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37= , 0x15, > 0x2F, 0x30, 0x81, >=20 > + 0xAA, 0x30, 0x40, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02= , 0x01, > 0x16, 0x34, 0x68, >=20 > + 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D= , 0x69, > 0x63, 0x72, 0x6F, >=20 > + 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69= , 0x2F, > 0x73, 0x73, 0x6C, >=20 > + 0x2F, 0x63, 0x70, 0x73, 0x2F, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73= , 0x50, > 0x43, 0x41, 0x2E, >=20 > + 0x68, 0x74, 0x6D, 0x30, 0x66, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05= , 0x07, > 0x02, 0x02, 0x30, >=20 > + 0x5A, 0x1E, 0x58, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00= , 0x72, > 0x00, 0x69, 0x00, >=20 > + 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0xA9, 0x00, 0x20, 0x00= , 0x31, > 0x00, 0x39, 0x00, >=20 > + 0x39, 0x00, 0x39, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00= , 0x35, > 0x00, 0x20, 0x00, >=20 > + 0x4D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00= , 0x6F, > 0x00, 0x66, 0x00, >=20 > + 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00= , 0x6F, > 0x00, 0x72, 0x00, >=20 > + 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x2E, 0x30= , 0x0D, > 0x06, 0x09, 0x2A, >=20 > + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82= , 0x01, > 0x01, 0x00, 0x73, >=20 > + 0x5F, 0xCA, 0x80, 0x1C, 0x60, 0x46, 0x6F, 0xB9, 0x34, 0x9D, 0x88, 0xE3= , 0xBE, > 0x22, 0x8C, 0xFA, >=20 > + 0xE6, 0x58, 0x9A, 0xAB, 0x7B, 0x1A, 0x97, 0xFD, 0xED, 0x2E, 0x39, 0xCC= , > 0x59, 0x5B, 0x1D, 0x7A, >=20 > + 0x06, 0x8A, 0xBB, 0x43, 0x93, 0x7B, 0x1E, 0xA1, 0x88, 0x53, 0xDF, 0x44= , 0xF8, > 0x53, 0xA9, 0xEA, >=20 > + 0xF6, 0x67, 0x1B, 0x3A, 0x78, 0x84, 0x11, 0x6A, 0x6F, 0x29, 0x47, 0x90= , 0x0A, > 0x0C, 0x7B, 0x22, >=20 > + 0x77, 0x4E, 0x6F, 0xB8, 0x64, 0x29, 0xDF, 0x06, 0xC7, 0xC8, 0x73, 0x84= , 0xD6, > 0x66, 0xA0, 0xCA, >=20 > + 0xD9, 0x5A, 0x26, 0x82, 0x57, 0xF9, 0xE3, 0x4F, 0x39, 0xAF, 0x2E, 0x8E= , 0xB1, > 0x06, 0x5B, 0x72, >=20 > + 0xF2, 0x37, 0x32, 0xAE, 0x4E, 0xCE, 0x3C, 0x7D, 0xB0, 0x12, 0x2B, 0x9E= , 0xA5, > 0x75, 0xE3, 0x43, >=20 > + 0xA6, 0x12, 0x8B, 0x06, 0x14, 0x98, 0x77, 0xE3, 0x58, 0x32, 0x25, 0x60= , 0x07, > 0x8C, 0x59, 0x71, >=20 > + 0xA7, 0x71, 0x41, 0xB3, 0x06, 0x8D, 0x5C, 0xEF, 0x9C, 0x7F, 0x5A, 0x22= , 0x6D, > 0xB7, 0xD3, 0xD9, >=20 > + 0xF5, 0xA6, 0x1B, 0x52, 0xDE, 0xF5, 0x7E, 0x76, 0x7C, 0xFE, 0xF4, 0xC8= , 0x23, > 0x1A, 0x4B, 0x25, >=20 > + 0xEB, 0xE4, 0xEE, 0xAF, 0x10, 0x0B, 0x55, 0xC3, 0xD8, 0xC1, 0x17, 0x85= , 0x61, > 0x6F, 0xD3, 0x3F, >=20 > + 0xB6, 0xE9, 0xEC, 0x84, 0xA5, 0xEE, 0x6D, 0xB2, 0xFF, 0xE8, 0x6C, 0x95= , 0xAB, > 0x2B, 0x5E, 0xC8, >=20 > + 0x85, 0xC3, 0x11, 0x60, 0xAC, 0xFA, 0x02, 0x05, 0xF1, 0x7B, 0xDA, 0xC3= , 0x69, > 0x49, 0x96, 0xA5, >=20 > + 0x70, 0xF9, 0x65, 0x66, 0x46, 0x10, 0x8D, 0x34, 0xE9, 0x21, 0x94, 0x3C= , 0x0F, > 0x71, 0x4A, 0x1C, >=20 > + 0xEA, 0x1F, 0xF7, 0x23, 0xA6, 0x87, 0x60, 0x34, 0xE9, 0x14, 0xE1, 0xDE= , 0x03, > 0x59, 0xB4, 0x02, >=20 > + 0x1D, 0x3A, 0xAF, 0xE3, 0x55, 0x05, 0xF5, 0xED, 0xC1, 0xF4, 0xE4, 0x5D= , 0x0E, > 0xD3, 0x97, 0x30, >=20 > + 0x82, 0x06, 0x07, 0x30, 0x82, 0x03, 0xEF, 0xA0, 0x03, 0x02, 0x01, 0x02= , 0x02, > 0x0A, 0x61, 0x16, >=20 > + 0x68, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x30, 0x0D, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5F, 0x31, 0x13, 0x30= , 0x11, > 0x06, 0x0A, 0x09, >=20 > + 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63= , 0x6F, > 0x6D, 0x31, 0x19, >=20 > + 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64= , 0x01, > 0x19, 0x16, 0x09, >=20 > + 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30= , 0x2B, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66= , 0x74, > 0x20, 0x52, 0x6F, >=20 > + 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61= , 0x74, > 0x65, 0x20, 0x41, >=20 > + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D= , 0x30, > 0x37, 0x30, 0x34, >=20 > + 0x30, 0x33, 0x31, 0x32, 0x35, 0x33, 0x30, 0x39, 0x5A, 0x17, 0x0D, 0x32= , 0x31, > 0x30, 0x34, 0x30, >=20 > + 0x33, 0x31, 0x33, 0x30, 0x33, 0x30, 0x39, 0x5A, 0x30, 0x77, 0x31, 0x0B= , 0x30, > 0x09, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06= , 0x03, > 0x55, 0x04, 0x08, >=20 > + 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E= , 0x31, > 0x10, 0x30, 0x0E, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F= , 0x6E, > 0x64, 0x31, 0x1E, >=20 > + 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63= , 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69= , 0x6F, > 0x6E, 0x31, 0x21, >=20 > + 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63= , 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x6D= , 0x70, > 0x20, 0x50, 0x43, >=20 > + 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48= , 0x86, > 0xF7, 0x0D, 0x01, >=20 > + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01= , 0x0A, > 0x02, 0x82, 0x01, >=20 > + 0x01, 0x00, 0x9F, 0xA1, 0x6C, 0xB1, 0xDF, 0xDB, 0x48, 0x92, 0x2A, 0x7C= , > 0x6B, 0x2E, 0x19, 0xE1, >=20 > + 0xBD, 0xE2, 0xE3, 0xC5, 0x99, 0x51, 0x23, 0x50, 0xAD, 0xCE, 0xDD, 0x18= , > 0x4E, 0x24, 0x0F, 0xEE, >=20 > + 0xD1, 0xA7, 0xD1, 0x4C, 0xAD, 0x74, 0x30, 0x20, 0x11, 0xEB, 0x07, 0xD5= , > 0x54, 0x95, 0x15, 0x49, >=20 > + 0x94, 0x1B, 0x42, 0x92, 0xAE, 0x98, 0x5C, 0x30, 0x26, 0xDA, 0x00, 0x6B= , 0xE8, > 0x7B, 0xBD, 0xEC, >=20 > + 0x89, 0x07, 0x0F, 0xF7, 0x0E, 0x04, 0x98, 0xF0, 0x89, 0xCC, 0x1F, 0xCB= , 0x33, > 0x24, 0x87, 0x9D, >=20 > + 0xF2, 0xF4, 0x67, 0x1C, 0x2C, 0xFC, 0x7B, 0xE7, 0x88, 0x1D, 0xEA, 0xE7= , 0x4E, > 0xA3, 0xA1, 0xC1, >=20 > + 0x23, 0x53, 0xCA, 0x8D, 0xFA, 0x45, 0xCF, 0x09, 0xD0, 0x5E, 0xAF, 0xD0= , > 0xB0, 0x42, 0x04, 0xA2, >=20 > + 0xF9, 0xA6, 0x6C, 0x93, 0x67, 0xD7, 0x28, 0xDC, 0x46, 0x53, 0xB0, 0x86= , > 0xD0, 0xE5, 0x28, 0x46, >=20 > + 0x2E, 0x27, 0xAC, 0x86, 0x4F, 0x55, 0x52, 0x0C, 0xE4, 0x03, 0x2C, 0xFB= , 0x6A, > 0x90, 0x90, 0x30, >=20 > + 0x6E, 0x87, 0xF3, 0x59, 0x30, 0x9D, 0xFA, 0x7E, 0xD6, 0x97, 0xB3, 0xE8= , 0x21, > 0x97, 0x7E, 0xF8, >=20 > + 0xD2, 0x13, 0xF3, 0x08, 0xB7, 0x53, 0x6D, 0x52, 0xB4, 0x45, 0x90, 0x9F= , 0x48, > 0x00, 0x4A, 0x47, >=20 > + 0x66, 0x11, 0x27, 0x29, 0x66, 0xA8, 0x97, 0xE4, 0xD3, 0x06, 0x81, 0x4A= , 0xA2, > 0xF9, 0x84, 0xA7, >=20 > + 0x11, 0x47, 0x14, 0x09, 0x82, 0x9F, 0x84, 0xED, 0x55, 0x78, 0xFE, 0x01= , 0x9A, > 0x1D, 0x50, 0x08, >=20 > + 0x85, 0x00, 0x10, 0x30, 0x46, 0xED, 0xB7, 0xDE, 0x23, 0x46, 0xBB, 0xC4= , > 0x2D, 0x54, 0x9F, 0xAF, >=20 > + 0x1E, 0x78, 0x41, 0x31, 0x77, 0xCC, 0x9B, 0xDF, 0x3B, 0x83, 0x93, 0xA1= , 0x61, > 0x02, 0xB5, 0x1D, >=20 > + 0x0D, 0xB1, 0xFC, 0xF7, 0x9B, 0xB2, 0x01, 0xCE, 0x22, 0x4B, 0x54, 0xFF= , 0xF9, > 0x05, 0xC3, 0xC2, >=20 > + 0x20, 0x0B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0xAB, 0x30= , 0x82, > 0x01, 0xA7, 0x30, >=20 > + 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30= , 0x03, > 0x01, 0x01, 0xFF, >=20 > + 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x23= , 0x34, > 0xF8, 0xD9, 0x52, >=20 > + 0x46, 0x70, 0x0A, 0xED, 0x40, 0xFB, 0x76, 0xFB, 0xB3, 0x2B, 0xB0, 0xC3= , 0x35, > 0xB3, 0x0F, 0x30, >=20 > + 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86= , 0x30, > 0x10, 0x06, 0x09, >=20 > + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02= , 0x01, > 0x00, 0x30, 0x81, >=20 > + 0x98, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x81, 0x90, 0x30, 0x81, 0x8D= , 0x80, > 0x14, 0x0E, 0xAC, >=20 > + 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, 0xE5, 0x25, 0x13, 0xFC, 0x2A, 0xE1= , 0x0A, > 0x53, 0x95, 0x59, >=20 > + 0xE4, 0xA4, 0xA1, 0x63, 0xA4, 0x61, 0x30, 0x5F, 0x31, 0x13, 0x30, 0x11= , 0x06, > 0x0A, 0x09, 0x92, >=20 > + 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6F= , 0x6D, > 0x31, 0x19, 0x30, >=20 > + 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01= , 0x19, > 0x16, 0x09, 0x6D, >=20 > + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, 0x2B= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74= , 0x20, > 0x52, 0x6F, 0x6F, >=20 > + 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74= , 0x65, > 0x20, 0x41, 0x75, >=20 > + 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x82, 0x10, 0x79, 0xAD, 0x16= , 0xA1, > 0x4A, 0xA0, 0xA5, >=20 > + 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07, 0x13, 0x2E, 0x65, 0x30, 0x50, 0x06= , 0x03, > 0x55, 0x1D, 0x1F, >=20 > + 0x04, 0x49, 0x30, 0x47, 0x30, 0x45, 0xA0, 0x43, 0xA0, 0x41, 0x86, 0x3F= , 0x68, > 0x74, 0x74, 0x70, >=20 > + 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F= , 0x73, > 0x6F, 0x66, 0x74, >=20 > + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C= , 0x2F, > 0x70, 0x72, 0x6F, >=20 > + 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73= , 0x6F, > 0x66, 0x74, 0x72, >=20 > + 0x6F, 0x6F, 0x74, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30= , 0x54, > 0x06, 0x08, 0x2B, >=20 > + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x48, 0x30, 0x46, 0x30= , 0x44, > 0x06, 0x08, 0x2B, >=20 > + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x38, 0x68, 0x74, 0x74= , 0x70, > 0x3A, 0x2F, 0x2F, >=20 > + 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66= , 0x74, > 0x2E, 0x63, 0x6F, >=20 > + 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2F= , 0x4D, > 0x69, 0x63, 0x72, >=20 > + 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x65, 0x72= , 0x74, > 0x2E, 0x63, 0x72, >=20 > + 0x74, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A= , 0x06, > 0x08, 0x2B, 0x06, >=20 > + 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86= , 0x48, > 0x86, 0xF7, 0x0D, >=20 > + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x10, 0x97= , 0x8A, > 0xC3, 0x5C, 0x03, >=20 > + 0x44, 0x36, 0xDD, 0xE9, 0xB4, 0xAD, 0x77, 0xDB, 0xCE, 0x79, 0x51, 0x4D= , > 0x01, 0xB1, 0x2E, 0x74, >=20 > + 0x71, 0x5B, 0x6D, 0x0C, 0x13, 0xAB, 0xCE, 0xBE, 0x7B, 0x8F, 0xB8, 0x2E= , > 0xD4, 0x12, 0xA2, 0x8C, >=20 > + 0x6D, 0x62, 0xB8, 0x57, 0x02, 0xCB, 0x4E, 0x20, 0x13, 0x50, 0x99, 0xDD= , > 0x7A, 0x40, 0xE2, 0x57, >=20 > + 0xBB, 0xAF, 0x58, 0x9A, 0x1C, 0xE1, 0x1D, 0x01, 0x86, 0xAC, 0xBB, 0x78= , > 0xF2, 0x8B, 0xD0, 0xEC, >=20 > + 0x3B, 0x01, 0xEE, 0xE2, 0xBE, 0x8F, 0x0A, 0x05, 0xC8, 0x8D, 0x48, 0xE2= , 0xF0, > 0x53, 0x15, 0xDD, >=20 > + 0x4F, 0xAB, 0x92, 0xE4, 0xE7, 0x8D, 0x6A, 0xD5, 0x80, 0xC1, 0xE6, 0x94= , 0xF2, > 0x06, 0x2F, 0x85, >=20 > + 0x03, 0xE9, 0x91, 0x2A, 0x24, 0x22, 0x70, 0xFB, 0xF6, 0xFC, 0xE4, 0x78= , 0x99, > 0x2E, 0x0D, 0xF7, >=20 > + 0x07, 0xE2, 0x70, 0xBC, 0x18, 0x4E, 0x9D, 0x8E, 0x6B, 0x0A, 0x72, 0x95= , 0xB8, > 0xA1, 0x39, 0x9C, >=20 > + 0x67, 0x2D, 0xC5, 0x51, 0x0E, 0xEA, 0x62, 0x5C, 0x3F, 0x16, 0x98, 0x8B= , 0x20, > 0x3F, 0xE2, 0x07, >=20 > + 0x1A, 0x32, 0xF9, 0xCC, 0x31, 0x4A, 0x76, 0x31, 0x3D, 0x2B, 0x72, 0x0B= , 0xC8, > 0xEA, 0x70, 0x3D, >=20 > + 0xFF, 0x85, 0x0A, 0x13, 0xDF, 0xC2, 0x0A, 0x61, 0x8E, 0xF0, 0xD7, 0xB8= , 0x17, > 0xEB, 0x4E, 0x8B, >=20 > + 0x7F, 0xC5, 0x35, 0x2B, 0x5E, 0xA3, 0xBF, 0xEB, 0xBC, 0x7D, 0x0B, 0x42= , > 0x7B, 0xD4, 0x53, 0x72, >=20 > + 0x21, 0xEE, 0x30, 0xCA, 0xBB, 0x78, 0x65, 0x5C, 0x5B, 0x01, 0x17, 0x0A= , 0x14, > 0x0E, 0xD2, 0xDA, >=20 > + 0x14, 0x98, 0xF5, 0x3C, 0xB9, 0x66, 0x58, 0xB3, 0x2D, 0x2F, 0xE7, 0xF9= , 0x85, > 0x86, 0xCC, 0x51, >=20 > + 0x56, 0xE8, 0x9D, 0x70, 0x94, 0x6C, 0xAC, 0x39, 0x4C, 0xD4, 0xF6, 0x79= , 0xBF, > 0xAA, 0x18, 0x7A, >=20 > + 0x62, 0x29, 0xEF, 0xA2, 0x9B, 0x29, 0x34, 0x06, 0x77, 0x1A, 0x62, 0xC9= , 0x3D, > 0x1E, 0x6D, 0x1F, >=20 > + 0x82, 0xF0, 0x0B, 0xC7, 0x2C, 0xBB, 0xCF, 0x43, 0xB3, 0xE5, 0xF9, 0xEC= , 0x7D, > 0xB5, 0xE3, 0xA4, >=20 > + 0xA8, 0x74, 0x35, 0xB8, 0x4E, 0xC5, 0x71, 0x23, 0x12, 0x26, 0x76, 0x0B= , 0x3C, > 0x52, 0x8C, 0x71, >=20 > + 0x5A, 0x46, 0x43, 0x14, 0xBC, 0xB3, 0xB3, 0xB0, 0x4D, 0x67, 0xC8, 0x9F= , 0x42, > 0xFF, 0x80, 0x79, >=20 > + 0x21, 0x80, 0x9E, 0x15, 0x30, 0x66, 0xE8, 0x42, 0x12, 0x5E, 0x1A, 0xC8= , 0x9E, > 0x22, 0x21, 0xD0, >=20 > + 0x43, 0xE9, 0x2B, 0xE9, 0xBB, 0xF4, 0x48, 0xCC, 0x2C, 0xD4, 0xD8, 0x32= , > 0x80, 0x4C, 0x26, 0x2A, >=20 > + 0x48, 0x24, 0x5F, 0x5A, 0xEA, 0x56, 0xEF, 0xA6, 0xDE, 0x99, 0x9D, 0xCA= , 0x3A, > 0x6F, 0xBD, 0x81, >=20 > + 0x27, 0x74, 0x06, 0x11, 0xEE, 0x76, 0x21, 0xBF, 0x9B, 0x82, 0xC1, 0x27= , 0x54, > 0xB6, 0xB1, 0x6A, >=20 > + 0x3D, 0x89, 0xA1, 0x76, 0x61, 0xB4, 0x6E, 0xA1, 0x13, 0xA6, 0xBF, 0xAA= , 0x47, > 0xF0, 0x12, 0x6F, >=20 > + 0xFD, 0x8A, 0x32, 0x6C, 0xB2, 0xFE, 0xDF, 0x51, 0xC8, 0x8C, 0x23, 0xC9= , 0x66, > 0xBD, 0x9D, 0x1D, >=20 > + 0x87, 0x12, 0x64, 0x02, 0x3D, 0x2D, 0xAF, 0x59, 0x8F, 0xB8, 0xE4, 0x21= , 0xE5, > 0xB5, 0xB0, 0xCA, >=20 > + 0x63, 0xB4, 0x78, 0x54, 0x05, 0xD4, 0x41, 0x2E, 0x50, 0xAC, 0x94, 0xB0= , 0xA5, > 0x78, 0xAB, 0xB3, >=20 > + 0xA0, 0x96, 0x75, 0x1A, 0xD9, 0x92, 0x87, 0x13, 0x75, 0x22, 0x2F, 0x32= , 0xA8, > 0x08, 0x6E, 0xA0, >=20 > + 0x5B, 0x8C, 0x25, 0xBF, 0xA0, 0xEF, 0x84, 0xCA, 0x21, 0xD6, 0xEB, 0x1E= , 0x4F, > 0xC9, 0x9A, 0xEE, >=20 > + 0x49, 0xE0, 0xF7, 0x01, 0x65, 0x6F, 0x89, 0x0B, 0x7D, 0xC8, 0x69, 0xC8= , 0xE6, > 0x6E, 0xEA, 0xA7, >=20 > + 0x97, 0xCE, 0x31, 0x29, 0xFF, 0x0E, 0xC5, 0x5B, 0x5C, 0xD8, 0x4D, 0x1B= , 0xA1, > 0xD8, 0xFA, 0x2F, >=20 > + 0x9E, 0x3F, 0x2E, 0x55, 0x16, 0x6B, 0xC9, 0x13, 0xA3, 0xFD, 0x30, 0x82= , 0x06, > 0xA1, 0x30, 0x82, >=20 > + 0x04, 0x89, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0A, 0x61, 0x07, 0x02= , 0xDC, > 0x00, 0x00, 0x00, >=20 > + 0x00, 0x00, 0x0B, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7= , 0x0D, > 0x01, 0x01, 0x05, >=20 > + 0x05, 0x00, 0x30, 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92= , 0x26, > 0x89, 0x93, 0xF2, >=20 > + 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30= , 0x17, > 0x06, 0x0A, 0x09, >=20 > + 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D= , 0x69, > 0x63, 0x72, 0x6F, >=20 > + 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04= , 0x03, > 0x13, 0x24, 0x4D, >=20 > + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F= , 0x74, > 0x20, 0x43, 0x65, >=20 > + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75= , 0x74, > 0x68, 0x6F, 0x72, >=20 > + 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x35, 0x30, 0x39, 0x31= , 0x35, > 0x32, 0x31, 0x35, >=20 > + 0x35, 0x34, 0x31, 0x5A, 0x17, 0x0D, 0x31, 0x36, 0x30, 0x33, 0x31, 0x35= , 0x32, > 0x32, 0x30, 0x35, >=20 > + 0x34, 0x31, 0x5A, 0x30, 0x81, 0x81, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03= , 0x55, > 0x04, 0x06, 0x13, >=20 > + 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08= , 0x13, > 0x0A, 0x57, 0x61, >=20 > + 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E= , 0x30, > 0x1C, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F= , 0x66, > 0x74, 0x20, 0x43, >=20 > + 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x2B= , 0x30, > 0x29, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x13, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F= , 0x66, > 0x74, 0x20, 0x57, >=20 > + 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66= , 0x69, > 0x63, 0x61, 0x74, >=20 > + 0x69, 0x6F, 0x6E, 0x20, 0x50, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30= , 0x0D, > 0x06, 0x09, 0x2A, >=20 > + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82= , 0x01, > 0x0F, 0x00, 0x30, >=20 > + 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC5, 0xAC, 0x93, 0x4E= , 0xE6, > 0x4A, 0x11, 0x9E, >=20 > + 0x37, 0xD0, 0x35, 0xD2, 0xB0, 0x06, 0x5C, 0x83, 0x14, 0xA5, 0x61, 0x92= , 0xFC, > 0xFE, 0xB3, 0x89, >=20 > + 0xC1, 0xE6, 0xCD, 0xC8, 0x1F, 0x31, 0x84, 0x09, 0x91, 0x34, 0x46, 0x92= , 0x2C, > 0xB8, 0xEE, 0x2C, >=20 > + 0xC5, 0x20, 0x73, 0xC4, 0xE8, 0x1A, 0xD8, 0x8D, 0xCE, 0x7A, 0x68, 0xB5= , > 0x66, 0x78, 0x8B, 0xE5, >=20 > + 0x60, 0x15, 0xA2, 0xF6, 0x29, 0x5A, 0x1D, 0x5E, 0x5D, 0xFC, 0x62, 0xD3= , 0xC1, > 0x5C, 0x29, 0x89, >=20 > + 0xFB, 0x33, 0xF8, 0x16, 0x95, 0x36, 0xDD, 0xB1, 0x46, 0x74, 0x69, 0x72= , 0x53, > 0xD5, 0xAA, 0xE8, >=20 > + 0x8A, 0x99, 0x1A, 0xD8, 0xF7, 0x67, 0x09, 0xD9, 0x09, 0x20, 0x22, 0x38= , 0x7A, > 0xD6, 0x03, 0x23, >=20 > + 0xD7, 0x89, 0x9F, 0x1C, 0x01, 0xB7, 0x51, 0xDF, 0x98, 0x66, 0x2A, 0x02= , 0x8B, > 0x06, 0xEC, 0xE4, >=20 > + 0x29, 0xEF, 0x5B, 0x42, 0x17, 0x15, 0x97, 0x51, 0x8D, 0x7D, 0x25, 0x0A= , 0xAF, > 0x25, 0xE8, 0xDE, >=20 > + 0xDC, 0x9B, 0x67, 0x16, 0x0A, 0x56, 0x73, 0x9D, 0xB3, 0x1D, 0x85, 0x83= , > 0x0B, 0x7E, 0x33, 0x2B, >=20 > + 0x62, 0x33, 0xCE, 0x1C, 0x20, 0x81, 0x4B, 0x5E, 0xD3, 0xC6, 0x49, 0xB8= , 0xF6, > 0x2E, 0xD3, 0x4E, >=20 > + 0xB0, 0x71, 0x44, 0x46, 0x64, 0x3E, 0xDE, 0x43, 0x66, 0x04, 0xB9, 0xCC= , 0x83, > 0x48, 0x3A, 0xC5, >=20 > + 0x36, 0x7A, 0x04, 0x48, 0x0B, 0x89, 0x02, 0x3D, 0x63, 0xA2, 0x01, 0x76= , 0x29, > 0x97, 0x75, 0xE9, >=20 > + 0x01, 0xE6, 0x00, 0x97, 0x09, 0x92, 0xF8, 0xE2, 0x27, 0xF0, 0x29, 0x67= , 0x43, > 0x77, 0xC3, 0x50, >=20 > + 0x96, 0x53, 0x31, 0xE1, 0xB6, 0x71, 0x8B, 0xEC, 0x77, 0xC7, 0x7C, 0x31= , 0x48, > 0xD5, 0xB8, 0x25, >=20 > + 0x22, 0x8C, 0x00, 0xF7, 0x28, 0x38, 0x7A, 0xBD, 0x7C, 0xC7, 0x3F, 0xCD= , 0x40, > 0x26, 0x77, 0xDD, >=20 > + 0x00, 0x00, 0x11, 0x9A, 0x95, 0xBE, 0x1F, 0xDB, 0x02, 0x03, 0x01, 0x00= , 0x01, > 0xA3, 0x82, 0x02, >=20 > + 0x3A, 0x30, 0x82, 0x02, 0x36, 0x30, 0x10, 0x06, 0x09, 0x2B, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55= , 0x1D, > 0x0E, 0x04, 0x16, >=20 > + 0x04, 0x14, 0x90, 0x8B, 0x11, 0xA5, 0x70, 0xED, 0xE0, 0xF9, 0xA9, 0xC0= , 0xAC, > 0x08, 0xC7, 0xB5, >=20 > + 0xF4, 0x82, 0xB1, 0x3C, 0xC5, 0x4A, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D= , 0x0F, > 0x04, 0x04, 0x03, >=20 > + 0x02, 0x01, 0xC6, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01= , 0xFF, > 0x04, 0x05, 0x30, >=20 > + 0x03, 0x01, 0x01, 0xFF, 0x30, 0x81, 0x98, 0x06, 0x03, 0x55, 0x1D, 0x23= , 0x04, > 0x81, 0x90, 0x30, >=20 > + 0x81, 0x8D, 0x80, 0x14, 0x0E, 0xAC, 0x82, 0x60, 0x40, 0x56, 0x27, 0x97= , 0xE5, > 0x25, 0x13, 0xFC, >=20 > + 0x2A, 0xE1, 0x0A, 0x53, 0x95, 0x59, 0xE4, 0xA4, 0xA1, 0x63, 0xA4, 0x61= , 0x30, > 0x5F, 0x31, 0x13, >=20 > + 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64= , 0x01, > 0x19, 0x16, 0x03, >=20 > + 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26= , 0x89, > 0x93, 0xF2, 0x2C, >=20 > + 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F= , 0x66, > 0x74, 0x31, 0x2D, >=20 > + 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63= , 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74= , 0x69, > 0x66, 0x69, 0x63, >=20 > + 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74= , 0x79, > 0x82, 0x10, 0x79, >=20 > + 0xAD, 0x16, 0xA1, 0x4A, 0xA0, 0xA5, 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07= , > 0x13, 0x2E, 0x65, 0x30, >=20 > + 0x50, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x49, 0x30, 0x47, 0x30, 0x45= , 0xA0, > 0x43, 0xA0, 0x41, >=20 > + 0x86, 0x3F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C= , 0x2E, > 0x6D, 0x69, 0x63, >=20 > + 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70= , 0x6B, > 0x69, 0x2F, 0x63, >=20 > + 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F= , 0x6D, > 0x69, 0x63, 0x72, >=20 > + 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x72, 0x6F, 0x6F, 0x74, 0x63, 0x65, 0x72= , 0x74, > 0x2E, 0x63, 0x72, >=20 > + 0x6C, 0x30, 0x54, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01= , 0x01, > 0x04, 0x48, 0x30, >=20 > + 0x46, 0x30, 0x44, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30= , 0x02, > 0x86, 0x38, 0x68, >=20 > + 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69= , 0x63, > 0x72, 0x6F, 0x73, >=20 > + 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F= , 0x63, > 0x65, 0x72, 0x74, >=20 > + 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x52= , 0x6F, > 0x6F, 0x74, 0x43, >=20 > + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x81, 0x80, 0x06, 0x03= , 0x55, > 0x1D, 0x20, 0x04, >=20 > + 0x79, 0x30, 0x77, 0x30, 0x75, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01= , 0x82, > 0x37, 0x15, 0x2F, >=20 > + 0x30, 0x68, 0x30, 0x66, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07= , 0x02, > 0x02, 0x30, 0x5A, >=20 > + 0x1E, 0x58, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72= , 0x00, > 0x69, 0x00, 0x67, >=20 > + 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0xA9, 0x00, 0x20, 0x00, 0x31= , 0x00, > 0x39, 0x00, 0x39, >=20 > + 0x00, 0x39, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35= , 0x00, > 0x20, 0x00, 0x4D, >=20 > + 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00, 0x6F= , 0x00, > 0x66, 0x00, 0x74, >=20 > + 0x00, 0x20, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F= , 0x00, > 0x72, 0x00, 0x61, >=20 > + 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x2E, 0x30, 0x1F= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x25, 0x04, 0x18, 0x30, 0x16, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05= , 0x07, > 0x03, 0x03, 0x06, >=20 > + 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0A, 0x03, 0x06, 0x30= , 0x0D, > 0x06, 0x09, 0x2A, >=20 > + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82= , 0x02, > 0x01, 0x00, 0x25, >=20 > + 0x31, 0xA1, 0x58, 0xEA, 0x52, 0xE5, 0xE1, 0x17, 0x0C, 0xE6, 0xF1, 0x3F= , 0x78, > 0xA3, 0x3F, 0x72, >=20 > + 0xAF, 0xA7, 0x57, 0x10, 0x53, 0x89, 0x10, 0x5E, 0x32, 0x9C, 0xB6, 0x70= , 0xC3, > 0x15, 0x2B, 0x4D, >=20 > + 0x15, 0x30, 0x34, 0xE8, 0xC0, 0x6A, 0xE4, 0x1C, 0xD3, 0x2E, 0x20, 0x65= , 0x48, > 0xD7, 0x1B, 0x98, >=20 > + 0x62, 0x21, 0xBA, 0x45, 0x9F, 0x4A, 0xEC, 0xDB, 0x2F, 0x09, 0x19, 0x51= , 0xE5, > 0xED, 0x32, 0x19, >=20 > + 0x51, 0x2F, 0xE1, 0xDD, 0xFB, 0xC6, 0x52, 0xFD, 0xEB, 0xC6, 0x82, 0x25= , 0x42, > 0x03, 0x09, 0xA6, >=20 > + 0x38, 0xB6, 0x36, 0x1F, 0xCC, 0xC9, 0x80, 0xBB, 0x5A, 0x69, 0x18, 0x31= , 0xC3, > 0xB3, 0xA0, 0xB3, >=20 > + 0x67, 0x47, 0xBE, 0x9D, 0xC7, 0xE2, 0x3F, 0x96, 0xB3, 0x88, 0xF8, 0x19= , 0xBE, > 0x39, 0xB9, 0xE9, >=20 > + 0x95, 0xCE, 0xFC, 0x7C, 0xAF, 0xA8, 0xCD, 0xD0, 0x41, 0x90, 0xE0, 0xD5= , > 0xB3, 0x1C, 0x2F, 0x68, >=20 > + 0xBB, 0xDB, 0x0F, 0x6C, 0x6A, 0xDD, 0xF2, 0xAF, 0xDE, 0xF2, 0xB5, 0xDE= , > 0x0D, 0xB6, 0xA6, 0x5A, >=20 > + 0xF0, 0x86, 0x0A, 0xB9, 0x6D, 0x99, 0x4B, 0x3F, 0x7B, 0x2D, 0x01, 0x84= , 0x6C, > 0x8F, 0x87, 0xDC, >=20 > + 0x7F, 0x8F, 0xAB, 0x14, 0x88, 0xD0, 0x06, 0x91, 0x34, 0xBE, 0x1B, 0x82= , 0x22, > 0xA4, 0xBC, 0x55, >=20 > + 0x8A, 0xAD, 0x9B, 0xFC, 0x73, 0x14, 0x10, 0xC4, 0xC9, 0x19, 0x1E, 0x07= , > 0x7D, 0x9B, 0x0E, 0xC0, >=20 > + 0x95, 0x26, 0x5D, 0xC6, 0x1F, 0xAC, 0xB4, 0xF2, 0x7E, 0xBA, 0x25, 0x70= , 0x4A, > 0x7B, 0xD7, 0x8E, >=20 > + 0xD1, 0x9D, 0xA0, 0x13, 0x49, 0x7A, 0xB0, 0x02, 0x52, 0x52, 0x24, 0xF4= , 0xAF, > 0xDD, 0x40, 0x2D, >=20 > + 0xE5, 0x3E, 0x32, 0x58, 0xB3, 0x4A, 0x6A, 0xDD, 0x11, 0x59, 0xAA, 0x2D= , > 0xBC, 0xA4, 0xA0, 0x73, >=20 > + 0x38, 0xF9, 0x40, 0x77, 0x6B, 0x34, 0x19, 0x57, 0xCD, 0x38, 0x68, 0x27= , 0x82, > 0xF8, 0xD1, 0x6F, >=20 > + 0xEB, 0x23, 0xC0, 0x3F, 0x52, 0xF3, 0x4E, 0xD5, 0x02, 0x3E, 0x6A, 0x9A= , 0x2B, > 0xC1, 0xF5, 0x31, >=20 > + 0x71, 0xDB, 0x41, 0x4D, 0x3B, 0xDE, 0xEF, 0xAD, 0xAF, 0x1F, 0x88, 0x65= , > 0x43, 0x1B, 0x51, 0xB7, >=20 > + 0x9A, 0x75, 0xCA, 0x8E, 0x69, 0x49, 0x10, 0x8F, 0x78, 0x8A, 0x74, 0x45= , 0xB9, > 0x09, 0x8E, 0x73, >=20 > + 0x77, 0x07, 0x32, 0x4A, 0x4B, 0xD7, 0x68, 0x2B, 0x98, 0xC5, 0xBA, 0x54= , > 0xEA, 0x3F, 0xCB, 0xA2, >=20 > + 0x00, 0x8C, 0xBB, 0xD8, 0x10, 0x58, 0xF2, 0xDB, 0xDC, 0x9B, 0xCD, 0xD8= , > 0xEA, 0x48, 0x43, 0xE2, >=20 > + 0x4A, 0x7E, 0x65, 0xB2, 0xDC, 0xF5, 0x2D, 0x4E, 0x25, 0x67, 0xA8, 0xE0= , 0xB5, > 0xBA, 0xA7, 0xDD, >=20 > + 0x7E, 0x5E, 0xC1, 0x4C, 0x02, 0x74, 0xC9, 0xB3, 0x6E, 0xE3, 0xF8, 0xF0= , 0x0B, > 0xED, 0xFC, 0xB9, >=20 > + 0x29, 0xC5, 0x5B, 0xC9, 0x36, 0x51, 0x90, 0xDB, 0x78, 0x7D, 0xB9, 0x32= , 0x0F, > 0x5E, 0x76, 0xD2, >=20 > + 0x15, 0x5C, 0x3B, 0x37, 0x21, 0xC6, 0xDB, 0xC9, 0x19, 0x6E, 0xED, 0x74= , > 0x2A, 0x5C, 0x2C, 0x0B, >=20 > + 0x51, 0x49, 0x45, 0x53, 0xB0, 0xB2, 0xB3, 0x23, 0xD4, 0xA1, 0xB0, 0x5F= , 0x0D, > 0x19, 0xCD, 0x14, >=20 > + 0xA7, 0xE3, 0x3C, 0x9B, 0x97, 0x72, 0x94, 0x14, 0xDF, 0xFF, 0xC1, 0x90= , 0x1B, > 0xA5, 0xDF, 0xF5, >=20 > + 0xA9, 0xF3, 0x1B, 0x17, 0xDA, 0xB5, 0xFC, 0x44, 0xE0, 0xE8, 0xE2, 0x3C= , 0xA2, > 0x7A, 0xBB, 0xBB, >=20 > + 0x65, 0xE6, 0x4D, 0xB1, 0xB5, 0x15, 0xA1, 0xD9, 0x67, 0x3B, 0xB0, 0x0C= , > 0x7D, 0x3B, 0xE9, 0xEE, >=20 > + 0x51, 0x2A, 0x47, 0xF5, 0x15, 0x0F, 0x8C, 0xAD, 0x5D, 0x2E, 0x35, 0xDF= , 0xF4, > 0xA4, 0x2E, 0xF6, >=20 > + 0x13, 0x37, 0x5A, 0x2B, 0xE8, 0x55, 0x9A, 0x49, 0x2C, 0x97, 0xCE, 0x9D= , 0x01, > 0x9E, 0x97, 0x46, >=20 > + 0x5C, 0xD9, 0x2D, 0xBC, 0x24, 0x5A, 0x95, 0x59, 0x6F, 0x4D, 0xCA, 0x9D= , > 0xD6, 0x57, 0x26, 0x31, >=20 > + 0x82, 0x04, 0x96, 0x30, 0x82, 0x04, 0x92, 0x02, 0x01, 0x01, 0x30, 0x81= , 0x90, > 0x30, 0x81, 0x81, >=20 > + 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55= , 0x53, > 0x31, 0x13, 0x30, >=20 > + 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68= , 0x69, > 0x6E, 0x67, 0x74, >=20 > + 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13= , 0x07, > 0x52, 0x65, 0x64, >=20 > + 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04= , 0x0A, > 0x13, 0x15, 0x4D, >=20 > + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72= , 0x70, > 0x6F, 0x72, 0x61, >=20 > + 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04= , 0x03, > 0x13, 0x22, 0x4D, >=20 > + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E= , 0x64, > 0x6F, 0x77, 0x73, >=20 > + 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F= , 0x6E, > 0x20, 0x50, 0x43, >=20 > + 0x41, 0x02, 0x0A, 0x61, 0x01, 0xC6, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00= , 0x07, > 0x30, 0x09, 0x06, >=20 > + 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, 0x81, 0xBA, 0x30= , 0x19, > 0x06, 0x09, 0x2A, >=20 > + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0C, 0x06, 0x0A= , 0x2B, > 0x06, 0x01, 0x04, >=20 > + 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1C, 0x06, 0x0A, 0x2B, 0x06= , 0x01, > 0x04, 0x01, 0x82, >=20 > + 0x37, 0x02, 0x01, 0x0B, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x0A, 0x2B, 0x06= , 0x01, > 0x04, 0x01, 0x82, >=20 > + 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86= , 0xF7, > 0x0D, 0x01, 0x09, >=20 > + 0x04, 0x31, 0x16, 0x04, 0x14, 0xC5, 0xC5, 0xC1, 0xC3, 0x46, 0xC4, 0x12= , 0xB9, > 0x38, 0xED, 0xE5, >=20 > + 0x7E, 0x66, 0x78, 0x4E, 0x8F, 0x55, 0x10, 0x7D, 0xAC, 0x30, 0x5A, 0x06= , 0x0A, > 0x2B, 0x06, 0x01, >=20 > + 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0C, 0x31, 0x4C, 0x30, 0x4A, 0xA0= , 0x24, > 0x80, 0x22, 0x00, >=20 > + 0x4D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00= , 0x6F, > 0x00, 0x66, 0x00, >=20 > + 0x74, 0x00, 0x20, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x64, 0x00= , 0x6F, > 0x00, 0x77, 0x00, >=20 > + 0x73, 0xA1, 0x22, 0x80, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F= , 0x77, > 0x77, 0x77, 0x2E, >=20 > + 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F= , 0x6D, > 0x2F, 0x77, 0x69, >=20 > + 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48= , 0x86, > 0xF7, 0x0D, 0x01, >=20 > + 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0xC0, 0x53, 0x19, 0xE7= , 0x27, > 0xE6, 0xD6, 0xD7, >=20 > + 0xA8, 0xAE, 0xA0, 0xE6, 0x4C, 0xEF, 0x9A, 0xBC, 0x1D, 0x19, 0xD4, 0xC5= , > 0x7F, 0x7C, 0x71, 0xFF, >=20 > + 0x14, 0x7C, 0xAD, 0x7A, 0x8F, 0x2D, 0x0F, 0x40, 0x38, 0x9B, 0x83, 0x09= , 0xEE, > 0xF5, 0x34, 0x92, >=20 > + 0xB4, 0x85, 0x34, 0x7C, 0xBA, 0x9B, 0x58, 0x5D, 0xA6, 0x15, 0xDE, 0x99= , > 0xBF, 0x25, 0x89, 0xDB, >=20 > + 0xC0, 0x3A, 0x98, 0x21, 0x1C, 0x25, 0x09, 0xBD, 0x41, 0xAA, 0x0F, 0x90= , 0x6C, > 0x62, 0xE9, 0xBD, >=20 > + 0x1D, 0xDD, 0x7C, 0xA4, 0x1F, 0x19, 0x3F, 0xC8, 0x11, 0xF5, 0x1C, 0x9E= , 0xEA, > 0x2E, 0x1A, 0xCE, >=20 > + 0x5A, 0x61, 0x8A, 0x77, 0xFA, 0x65, 0x1F, 0x03, 0xB4, 0x45, 0x02, 0x0F= , 0xB4, > 0x0E, 0xB9, 0x44, >=20 > + 0xF6, 0x75, 0xF6, 0x67, 0x91, 0xAD, 0xFA, 0xF9, 0xC3, 0xFA, 0x63, 0x91= , 0x58, > 0xFE, 0x40, 0xDF, >=20 > + 0x92, 0x6B, 0x59, 0x42, 0x44, 0x66, 0xD2, 0x88, 0x49, 0x59, 0x29, 0x1D= , 0x6A, > 0xF9, 0x93, 0x9B, >=20 > + 0xD5, 0x38, 0x84, 0x96, 0xD7, 0xAF, 0xBA, 0xEC, 0x29, 0x8D, 0x06, 0x8C= , > 0x8B, 0xF4, 0xA1, 0x56, >=20 > + 0x0F, 0x78, 0x3F, 0x35, 0xCB, 0x12, 0x8A, 0x85, 0xD5, 0x7C, 0xFC, 0x63= , 0xDD, > 0x72, 0xA1, 0x13, >=20 > + 0xD3, 0x25, 0x4A, 0x59, 0x21, 0xD0, 0xC6, 0x47, 0x9F, 0x22, 0xF7, 0xF8= , 0x32, > 0xA2, 0x05, 0x2B, >=20 > + 0x53, 0xC5, 0x96, 0x98, 0x0D, 0x39, 0x02, 0xAD, 0x85, 0xF7, 0x18, 0x73= , 0x34, > 0x12, 0x7F, 0x5A, >=20 > + 0xCB, 0xE1, 0xA2, 0xFB, 0x4E, 0x25, 0x81, 0xF0, 0x9F, 0x7A, 0x79, 0xDB= , 0x4F, > 0x4B, 0x66, 0x44, >=20 > + 0x30, 0x8E, 0x0D, 0x57, 0x23, 0xD3, 0x7F, 0x60, 0x87, 0xDE, 0xD0, 0x4C= , 0x90, > 0x90, 0x84, 0x64, >=20 > + 0x70, 0xE8, 0x15, 0x65, 0xCA, 0x18, 0xF8, 0x9A, 0xB6, 0x0C, 0x24, 0xF5= , 0xDF, > 0xC3, 0x47, 0xE2, >=20 > + 0x7C, 0xAD, 0x91, 0x70, 0x6D, 0xF8, 0x43, 0xE9, 0xA1, 0x82, 0x02, 0x1D= , 0x30, > 0x82, 0x02, 0x19, >=20 > + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x06, 0x31= , 0x82, > 0x02, 0x0A, 0x30, >=20 > + 0x82, 0x02, 0x06, 0x02, 0x01, 0x01, 0x30, 0x81, 0x85, 0x30, 0x77, 0x31= , 0x0B, > 0x30, 0x09, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F= , 0x6E, > 0x31, 0x10, 0x30, >=20 > + 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D= , 0x6F, > 0x6E, 0x64, 0x31, >=20 > + 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69= , 0x63, > 0x72, 0x6F, 0x73, >=20 > + 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74= , 0x69, > 0x6F, 0x6E, 0x31, >=20 > + 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69= , 0x63, > 0x72, 0x6F, 0x73, >=20 > + 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61= , 0x6D, > 0x70, 0x20, 0x50, >=20 > + 0x43, 0x41, 0x02, 0x0A, 0x61, 0x03, 0xDC, 0xF6, 0x00, 0x00, 0x00, 0x00= , 0x00, > 0x0C, 0x30, 0x07, >=20 > + 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0xA0, 0x5D, 0x30, 0x18, 0x06= , 0x09, > 0x2A, 0x86, 0x48, >=20 > + 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0B, 0x06, 0x09, 0x2A, 0x86= , 0x48, > 0x86, 0xF7, 0x0D, >=20 > + 0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7= , 0x0D, > 0x01, 0x09, 0x05, >=20 > + 0x31, 0x0F, 0x17, 0x0D, 0x30, 0x39, 0x30, 0x34, 0x32, 0x32, 0x30, 0x35= , 0x35, > 0x34, 0x33, 0x34, >=20 > + 0x5A, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01= , 0x09, > 0x04, 0x31, 0x16, >=20 > + 0x04, 0x14, 0x74, 0xD7, 0x54, 0xA0, 0xC0, 0x9E, 0x62, 0xF0, 0xDD, 0x92= , > 0xDC, 0xD6, 0x96, 0x34, >=20 > + 0xA1, 0x0B, 0xF0, 0xD5, 0xB5, 0x3A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86= , 0x48, > 0x86, 0xF7, 0x0D, >=20 > + 0x01, 0x01, 0x05, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x8D, 0x16, 0xB5= , 0xC8, > 0x3D, 0xBC, 0x8A, >=20 > + 0xB5, 0xC3, 0x23, 0xF3, 0x33, 0xB0, 0xFA, 0x75, 0xAD, 0xAC, 0x53, 0x0D= , > 0x5C, 0xF4, 0xD9, 0xBE, >=20 > + 0x63, 0xEB, 0x0D, 0x6F, 0x69, 0x63, 0x91, 0xF8, 0x8E, 0x67, 0x03, 0xE1= , 0xC6, > 0x2E, 0xCD, 0x9C, >=20 > + 0xEB, 0xDD, 0x9C, 0xCA, 0x65, 0x4A, 0xBB, 0xF2, 0xF4, 0x1C, 0x85, 0x44= , > 0xD6, 0x58, 0x70, 0x2E, >=20 > + 0x3B, 0xFE, 0x97, 0xD0, 0xEC, 0x72, 0x77, 0x20, 0xA8, 0x20, 0xAC, 0xF0= , 0xED, > 0x86, 0xC4, 0xFF, >=20 > + 0x3A, 0x3D, 0x40, 0xD9, 0xF6, 0xD5, 0x99, 0xBE, 0xCC, 0xD2, 0xD8, 0xBA= , > 0x71, 0x51, 0x60, 0xAA, >=20 > + 0x72, 0x36, 0x13, 0x8B, 0x0A, 0xA9, 0xD6, 0xF5, 0x36, 0xE0, 0x44, 0x6B= , 0xC1, > 0x44, 0x42, 0x43, >=20 > + 0x56, 0x1A, 0xD6, 0xF1, 0x5A, 0x98, 0xCC, 0xBA, 0xA9, 0x4C, 0xCF, 0xC9= , > 0x86, 0xC3, 0x5B, 0x1C, >=20 > + 0xDF, 0x75, 0x22, 0x54, 0x6A, 0xF0, 0x18, 0x34, 0x0B, 0x29, 0xB0, 0x26= , 0x07, > 0x59, 0xB6, 0x52, >=20 > + 0x7B, 0x69, 0x74, 0x11, 0x1B, 0xB8, 0x29, 0x19, 0x36, 0x0E, 0xB7, 0x65= , 0xCB, > 0x87, 0x09, 0x9E, >=20 > + 0x03, 0x28, 0x6C, 0xDB, 0xA7, 0xFB, 0xDF, 0xC7, 0xF7, 0xCE, 0x0D, 0xC2= , > 0xBA, 0xEA, 0x3C, 0xE8, >=20 > + 0x43, 0x1E, 0x7F, 0xF2, 0x64, 0xDA, 0x87, 0x89, 0xC0, 0xCD, 0x67, 0xE4= , 0x84, > 0x9B, 0xA7, 0x77, >=20 > + 0xFA, 0x6C, 0x69, 0x19, 0x5B, 0xD1, 0xF7, 0xD9, 0x07, 0x91, 0x50, 0xDD= , > 0x98, 0x26, 0x10, 0xE3, >=20 > + 0x2E, 0x39, 0x62, 0xF0, 0x56, 0xE9, 0xD9, 0x5C, 0x85, 0x67, 0x9B, 0x2F= , 0xDE, > 0xD1, 0x00, 0x45, >=20 > + 0x0E, 0x99, 0x1F, 0xDF, 0x7E, 0xC9, 0x10, 0x56, 0xC7, 0x00, 0x6D, 0x5F= , 0x23, > 0x57, 0x12, 0x84, >=20 > + 0xCD, 0xAC, 0x82, 0xAE, 0x39, 0x52, 0xA5, 0x19, 0x23, 0xA3, 0x6B, 0xE7= , > 0x49, 0x8F, 0x86, 0x74, >=20 > + 0x46, 0x41, 0x2A, 0x0F, 0x3D, 0x29, 0xB7, 0xAE, 0x8C, 0x00 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Sample Authenticode Data with SHA-256 hash algorithm. >=20 > +// This data should be retrieved from signed PE/COFF image according to > SECURITY >=20 > +// directory in PE/COFF Header. >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithSha256[] =3D { >=20 > + 0x30, 0x82, 0x0e, 0xd1, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d= , 0x01, > 0x07, 0x02, 0xa0, >=20 > + 0x82, 0x0e, 0xc2, 0x30, 0x82, 0x0e, 0xbe, 0x02, 0x01, 0x01, 0x31, 0x0f= , 0x30, > 0x0d, 0x06, 0x09, >=20 > + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30= , 0x5c, > 0x06, 0x0a, 0x2b, >=20 > + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x4e, 0x30= , 0x4c, > 0x30, 0x17, 0x06, >=20 > + 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f, 0x30= , 0x09, > 0x03, 0x01, 0x00, >=20 > + 0xa0, 0x04, 0xa2, 0x02, 0x80, 0x00, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09= , 0x60, > 0x86, 0x48, 0x01, >=20 > + 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20, 0x61, 0x82, 0xb7= , 0xf8, > 0x8c, 0xff, 0xc2, >=20 > + 0xeb, 0x79, 0x6e, 0x9d, 0xa9, 0xdd, 0x39, 0x52, 0xdd, 0x36, 0xdd, 0xf1= , 0x43, > 0x27, 0x58, 0x8c, >=20 > + 0xa7, 0xcc, 0xae, 0xde, 0xdd, 0x3c, 0x02, 0x12, 0x49, 0xa0, 0x82, 0x0c= , 0x0a, > 0x30, 0x82, 0x05, >=20 > + 0xe5, 0x30, 0x82, 0x03, 0xcd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0a= , 0x61, > 0x03, 0x5f, 0x09, >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86= , 0x48, > 0x86, 0xf7, 0x0d, >=20 > + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x90, 0x31, 0x0b, 0x30, 0x09= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55= , 0x04, > 0x08, 0x13, 0x0a, >=20 > + 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10= , 0x30, > 0x0e, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64= , 0x31, > 0x1e, 0x30, 0x1c, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f= , 0x73, > 0x6f, 0x66, 0x74, >=20 > + 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e= , 0x31, > 0x3a, 0x30, 0x38, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x31, 0x4d, 0x69, 0x63, 0x72, 0x6f= , 0x73, > 0x6f, 0x66, 0x74, >=20 > + 0x20, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6f= , 0x74, > 0x20, 0x43, 0x65, >=20 > + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75= , 0x74, > 0x68, 0x6f, 0x72, >=20 > + 0x69, 0x74, 0x79, 0x20, 0x32, 0x30, 0x31, 0x30, 0x30, 0x1e, 0x17, 0x0d= , 0x31, > 0x30, 0x30, 0x36, >=20 > + 0x32, 0x31, 0x32, 0x32, 0x35, 0x35, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x31= , 0x34, > 0x30, 0x36, 0x32, >=20 > + 0x31, 0x32, 0x33, 0x30, 0x35, 0x30, 0x31, 0x5a, 0x30, 0x81, 0x81, 0x31= , 0x13, > 0x30, 0x11, 0x06, >=20 > + 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16= , 0x03, > 0x63, 0x6f, 0x6d, >=20 > + 0x31, 0x19, 0x30, 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2= , 0x2c, > 0x64, 0x01, 0x19, >=20 > + 0x16, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31= , 0x14, > 0x30, 0x12, 0x06, >=20 > + 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16= , 0x04, > 0x63, 0x6f, 0x72, >=20 > + 0x70, 0x31, 0x17, 0x30, 0x15, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93= , 0xf2, > 0x2c, 0x64, 0x01, >=20 > + 0x19, 0x16, 0x07, 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x20= , 0x30, > 0x1e, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x13, 0x17, 0x4d, 0x53, 0x49, 0x54, 0x20, 0x54, 0x65= , 0x73, > 0x74, 0x20, 0x43, >=20 > + 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x33= , 0x30, > 0x82, 0x01, 0x22, >=20 > + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01= , 0x01, > 0x05, 0x00, 0x03, >=20 > + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01= , 0x00, > 0x9b, 0x71, 0xdd, >=20 > + 0x0d, 0x32, 0x2d, 0x08, 0xe8, 0x2d, 0x01, 0x90, 0x9c, 0xdf, 0x9f, 0x32= , 0x58, > 0x8b, 0x47, 0xd0, >=20 > + 0xfe, 0x9a, 0x6b, 0x40, 0x5e, 0x76, 0xa2, 0x10, 0x00, 0x0e, 0xd2, 0x8f= , 0xce, > 0xa1, 0x5f, 0x42, >=20 > + 0xa7, 0x0b, 0x5e, 0x83, 0xc2, 0xe9, 0x06, 0xa6, 0x0a, 0xb4, 0x3d, 0x30= , 0x50, > 0xdb, 0x35, 0x43, >=20 > + 0x2c, 0xd3, 0xc3, 0xc6, 0x3c, 0xc9, 0xb5, 0x88, 0xfc, 0x0b, 0xe6, 0xa3= , 0x71, > 0x47, 0xce, 0xfd, >=20 > + 0x88, 0x62, 0xa4, 0x25, 0xe2, 0x4e, 0x1b, 0x79, 0x3d, 0xe3, 0xbf, 0x8b= , 0x84, > 0x2d, 0x64, 0x25, >=20 > + 0xa5, 0xfa, 0x8e, 0x30, 0xae, 0xe3, 0x34, 0x7d, 0x27, 0xf3, 0x5e, 0xf4= , 0x05, > 0x60, 0xc6, 0x0f, >=20 > + 0x1a, 0x1b, 0x9e, 0xaf, 0x21, 0x37, 0xa9, 0xd9, 0xb6, 0xb7, 0x6a, 0x54= , 0x4b, > 0x5e, 0xa0, 0x75, >=20 > + 0xb5, 0x9a, 0xc4, 0xb6, 0xbe, 0x28, 0xe3, 0x3b, 0xf7, 0x5a, 0x08, 0x77= , 0xd9, > 0x39, 0x4a, 0x2a, >=20 > + 0x7a, 0xf8, 0xf4, 0xfe, 0xe8, 0x12, 0x54, 0x41, 0x11, 0x55, 0xc8, 0xc7= , 0x98, > 0x3e, 0x64, 0xa5, >=20 > + 0xbb, 0xda, 0x6b, 0xa4, 0xaa, 0x29, 0x8c, 0x9f, 0x27, 0x55, 0x25, 0xe7= , 0xfd, > 0x31, 0x70, 0x60, >=20 > + 0x1d, 0xd3, 0xc4, 0xf2, 0xb9, 0xef, 0x92, 0x4a, 0x9f, 0xc8, 0x4c, 0x93= , 0xe7, > 0x19, 0xa8, 0x4e, >=20 > + 0xbc, 0xe3, 0x62, 0xf4, 0xe0, 0x6e, 0xec, 0x45, 0x6e, 0x61, 0x4e, 0xad= , 0x58, > 0xe0, 0xf0, 0xea, >=20 > + 0xf7, 0x74, 0x2c, 0xdf, 0x1b, 0xf6, 0x43, 0x3c, 0x84, 0xc2, 0x8c, 0x0b= , 0xb4, > 0xbd, 0x4a, 0x57, >=20 > + 0xa6, 0x0c, 0x4e, 0x9e, 0x73, 0x43, 0x5f, 0x2d, 0xaf, 0x22, 0xf4, 0xa6= , 0xfd, > 0x5a, 0x87, 0xb9, >=20 > + 0xbe, 0x6f, 0x9e, 0x1d, 0x99, 0xc8, 0xdf, 0x95, 0xc2, 0x02, 0xad, 0x7d= , 0x4a, > 0xf3, 0xba, 0x5d, >=20 > + 0xe8, 0x7b, 0x6e, 0x57, 0xe5, 0x3a, 0x02, 0xf8, 0xd3, 0x01, 0x15, 0xae= , 0x4f, > 0x02, 0x03, 0x01, >=20 > + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4c, 0x30, 0x82, 0x01, 0x48, 0x30, 0x10= , 0x06, > 0x09, 0x2b, 0x06, >=20 > + 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00= , 0x30, > 0x1d, 0x06, 0x03, >=20 > + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4e, 0xfe, 0x61, 0x39, 0x6f= , 0xca, > 0xc5, 0x64, 0xe0, >=20 > + 0x20, 0xb6, 0xda, 0xc1, 0xb9, 0x52, 0x0e, 0xca, 0xdf, 0x8e, 0xfe, 0x30= , 0x19, > 0x06, 0x09, 0x2b, >=20 > + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, 0x02, 0x04, 0x0c, 0x1e, 0x0a= , 0x00, > 0x53, 0x00, 0x75, >=20 > + 0x00, 0x62, 0x00, 0x43, 0x00, 0x41, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d= , 0x0f, > 0x04, 0x04, 0x03, >=20 > + 0x02, 0x01, 0x86, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01= , 0xff, > 0x04, 0x08, 0x30, >=20 > + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1f, 0x06, 0x03, 0x55= , 0x1d, > 0x23, 0x04, 0x18, >=20 > + 0x30, 0x16, 0x80, 0x14, 0xa3, 0x01, 0x04, 0x7e, 0x30, 0x88, 0x33, 0xeb= , 0xb9, > 0x31, 0x9c, 0xca, >=20 > + 0xeb, 0x85, 0x76, 0x67, 0xfc, 0x65, 0xb4, 0xd1, 0x30, 0x59, 0x06, 0x03= , 0x55, > 0x1d, 0x1f, 0x04, >=20 > + 0x52, 0x30, 0x50, 0x30, 0x4e, 0xa0, 0x4c, 0xa0, 0x4a, 0x86, 0x48, 0x68= , 0x74, > 0x74, 0x70, 0x3a, >=20 > + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73= , 0x6f, > 0x66, 0x74, 0x2e, >=20 > + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f= , 0x70, > 0x72, 0x6f, 0x64, >=20 > + 0x75, 0x63, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x54, 0x65, 0x73, 0x52= , 0x6f, > 0x6f, 0x43, 0x65, >=20 > + 0x72, 0x41, 0x75, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x2d, 0x30, 0x36= , 0x2d, > 0x31, 0x37, 0x2e, >=20 > + 0x63, 0x72, 0x6c, 0x30, 0x5d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05= , 0x07, > 0x01, 0x01, 0x04, >=20 > + 0x51, 0x30, 0x4f, 0x30, 0x4d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05= , 0x07, > 0x30, 0x02, 0x86, >=20 > + 0x41, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e= , 0x6d, > 0x69, 0x63, 0x72, >=20 > + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b= , 0x69, > 0x2f, 0x63, 0x65, >=20 > + 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x54, 0x65, 0x73, 0x52, 0x6f= , 0x6f, > 0x43, 0x65, 0x72, >=20 > + 0x41, 0x75, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x2d= , 0x31, > 0x37, 0x2e, 0x63, >=20 > + 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d= , 0x01, > 0x01, 0x0b, 0x05, >=20 > + 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x91, 0x2d, 0x11, 0x36, 0xd1, 0x2c= , 0x5e, > 0x21, 0x77, 0x62, >=20 > + 0x1a, 0xa1, 0xcf, 0x9a, 0x7e, 0x62, 0x2d, 0xc9, 0x90, 0xb9, 0x0e, 0x3d= , 0x71, > 0x0d, 0xa0, 0x4a, >=20 > + 0x48, 0xad, 0xe1, 0xd6, 0xb0, 0x73, 0x4a, 0x51, 0x4b, 0x4c, 0xb2, 0x6b= , 0x88, > 0x0a, 0x5a, 0xb7, >=20 > + 0xe9, 0x55, 0x67, 0x43, 0x8b, 0xf1, 0x9d, 0xcc, 0x52, 0x03, 0xaf, 0xac= , 0x85, > 0xe9, 0xd3, 0x75, >=20 > + 0xce, 0xe5, 0x6f, 0x8b, 0x3c, 0x80, 0x81, 0xab, 0xd1, 0xd1, 0x73, 0x0d= , 0x6b, > 0xb0, 0x51, 0xb8, >=20 > + 0xa2, 0x5e, 0x0c, 0x09, 0xe5, 0xa6, 0xbc, 0x54, 0x49, 0xe5, 0x54, 0x38= , 0x5a, > 0xb7, 0x43, 0xd2, >=20 > + 0x75, 0x34, 0x52, 0xdd, 0x35, 0x79, 0x95, 0x98, 0xd5, 0x3c, 0xc6, 0xda= , 0x46, > 0xb2, 0xd8, 0xa0, >=20 > + 0xa7, 0xcc, 0x30, 0x31, 0x0f, 0x4b, 0xeb, 0xb7, 0x02, 0xab, 0x2b, 0x38= , 0xd2, > 0xb7, 0x27, 0xc2, >=20 > + 0xc7, 0x0d, 0x62, 0xa4, 0xc0, 0x48, 0xf4, 0x1a, 0x48, 0x79, 0x7d, 0xe1= , 0x31, > 0xa4, 0x5d, 0x19, >=20 > + 0xd0, 0x18, 0x17, 0x00, 0xca, 0xe3, 0x5d, 0x0b, 0xc1, 0x85, 0x7f, 0xf1= , 0xbe, > 0xd3, 0xcb, 0x97, >=20 > + 0xf4, 0x1b, 0x62, 0x0f, 0xd7, 0x14, 0x38, 0x8d, 0xb2, 0x2e, 0x98, 0xd4= , 0x41, > 0x6a, 0xb0, 0xb5, >=20 > + 0x84, 0xee, 0xd8, 0x2c, 0x2d, 0x13, 0xfc, 0x50, 0x1d, 0x9a, 0x6f, 0x31= , 0x87, > 0x1c, 0xe0, 0xd0, >=20 > + 0xd0, 0xd3, 0x24, 0x52, 0xdf, 0x12, 0x8d, 0xfb, 0xf7, 0x7f, 0x33, 0x04= , 0x17, > 0x7a, 0x8b, 0xe3, >=20 > + 0xbd, 0x7c, 0x1e, 0xa2, 0x2a, 0x91, 0x76, 0xd9, 0xfc, 0x43, 0x17, 0xa7= , 0x0a, > 0xa1, 0xd9, 0xc6, >=20 > + 0x3c, 0x3a, 0x42, 0xed, 0xb7, 0x12, 0xcd, 0x9e, 0xdd, 0xfe, 0x91, 0x9d= , 0x98, > 0xb5, 0x35, 0xe8, >=20 > + 0x94, 0xdd, 0x9a, 0xce, 0xd4, 0xf4, 0xac, 0xca, 0xa6, 0xcd, 0x59, 0x3d= , 0xde, > 0x44, 0xbf, 0x0e, >=20 > + 0x82, 0xe5, 0xdf, 0x5c, 0xe3, 0x49, 0xcb, 0x01, 0xa0, 0x7f, 0x7b, 0xe2= , 0x25, > 0x21, 0xab, 0x95, >=20 > + 0x50, 0x1e, 0x9f, 0xea, 0x77, 0x56, 0x47, 0x74, 0x73, 0xf2, 0x25, 0x1b= , 0x0e, > 0x36, 0xb9, 0xa2, >=20 > + 0x57, 0xbf, 0x2c, 0x57, 0xbc, 0xe4, 0xfb, 0x88, 0xb1, 0x83, 0x56, 0xd8= , 0x3c, > 0xe0, 0x7c, 0xfd, >=20 > + 0x11, 0x9f, 0xde, 0xe1, 0xb7, 0xd4, 0xc6, 0x23, 0xaf, 0xae, 0xc7, 0x5e= , 0x4f, > 0xc5, 0x23, 0x74, >=20 > + 0x98, 0x38, 0x74, 0x9d, 0x0d, 0x0d, 0x6d, 0xf4, 0xde, 0x28, 0x44, 0x41= , 0xd8, > 0x22, 0x68, 0xe7, >=20 > + 0x57, 0xa7, 0x66, 0x74, 0xb5, 0xc3, 0x31, 0x24, 0xe2, 0x7c, 0xd5, 0x52= , 0x5d, > 0x8a, 0xd2, 0x4e, >=20 > + 0x14, 0xbb, 0x08, 0xd3, 0x1a, 0x31, 0x12, 0x04, 0x58, 0x9b, 0x3a, 0x99= , 0x78, > 0x93, 0x51, 0x3f, >=20 > + 0x0b, 0x85, 0xce, 0xde, 0x09, 0x58, 0xf9, 0x96, 0x1b, 0x91, 0x11, 0xa0= , 0x68, > 0x53, 0x33, 0xcb, >=20 > + 0xbe, 0x08, 0x89, 0xcc, 0x95, 0x55, 0xae, 0x06, 0x78, 0x27, 0x99, 0xa2= , 0x56, > 0xef, 0xae, 0x95, >=20 > + 0x0a, 0x7f, 0x0d, 0xeb, 0x43, 0x0c, 0xc6, 0x9e, 0x3f, 0x80, 0xbb, 0xc4= , 0x74, > 0x03, 0x9d, 0xb8, >=20 > + 0x1a, 0xaa, 0xbc, 0xcb, 0x1e, 0x03, 0xfb, 0xd8, 0x49, 0x89, 0x9d, 0x20= , 0xaa, > 0x25, 0x4b, 0x47, >=20 > + 0x67, 0xf4, 0xa7, 0x0d, 0x8d, 0x76, 0x30, 0xc6, 0x48, 0xce, 0xdd, 0x8d= , 0xfa, > 0xbe, 0xda, 0xb4, >=20 > + 0xeb, 0x3d, 0xd8, 0x0c, 0x3b, 0x15, 0x9a, 0xd1, 0x83, 0x85, 0xe5, 0xe3= , 0x92, > 0xaa, 0x3b, 0xad, >=20 > + 0x34, 0x0c, 0x39, 0xf1, 0x7f, 0x75, 0xae, 0xe8, 0x70, 0xb0, 0xfd, 0xf2= , 0x8e, > 0x29, 0xda, 0xdc, >=20 > + 0x09, 0x4f, 0x8a, 0x7b, 0x63, 0xbe, 0x1e, 0x8a, 0xc3, 0x58, 0xd1, 0x03= , 0xbe, > 0x37, 0xe9, 0xed, >=20 > + 0x32, 0x26, 0xa8, 0x0c, 0xfe, 0xed, 0x12, 0xa7, 0x63, 0x04, 0xb3, 0x92= , 0x97, > 0xd9, 0x46, 0xa3, >=20 > + 0x33, 0x33, 0x9c, 0x5b, 0xbc, 0x54, 0x30, 0x82, 0x06, 0x1d, 0x30, 0x82= , 0x05, > 0x05, 0xa0, 0x03, >=20 > + 0x02, 0x01, 0x02, 0x02, 0x0a, 0x4e, 0x30, 0xa5, 0xbb, 0x00, 0x00, 0x00= , 0x12, > 0x7b, 0xf2, 0x30, >=20 > + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b= , 0x05, > 0x00, 0x30, 0x81, >=20 > + 0x81, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93= , 0xf2, > 0x2c, 0x64, 0x01, >=20 > + 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0a= , 0x09, > 0x92, 0x26, 0x89, >=20 > + 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6d, 0x69, 0x63, 0x72= , 0x6f, > 0x73, 0x6f, 0x66, >=20 > + 0x74, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93= , 0xf2, > 0x2c, 0x64, 0x01, >=20 > + 0x19, 0x16, 0x04, 0x63, 0x6f, 0x72, 0x70, 0x31, 0x17, 0x30, 0x15, 0x06= , 0x0a, > 0x09, 0x92, 0x26, >=20 > + 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x07, 0x72, 0x65, 0x64= , 0x6d, > 0x6f, 0x6e, 0x64, >=20 > + 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x4d= , 0x53, > 0x49, 0x54, 0x20, >=20 > + 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67= , 0x6e, > 0x20, 0x43, 0x41, >=20 > + 0x20, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x34, 0x32, 0x31= , 0x30, > 0x33, 0x33, 0x33, >=20 > + 0x34, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x34, 0x32, 0x30, 0x30= , 0x33, > 0x33, 0x33, 0x34, >=20 > + 0x39, 0x5a, 0x30, 0x70, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04= , 0x06, > 0x13, 0x02, 0x55, >=20 > + 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a= , 0x57, > 0x61, 0x73, 0x68, >=20 > + 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03= , 0x55, > 0x04, 0x07, 0x13, >=20 > + 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74= , 0x20, > 0x43, 0x6f, 0x72, >=20 > + 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1a, 0x30, 0x18= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x13, 0x11, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74= , 0x20, > 0x57, 0x69, 0x6e, >=20 > + 0x64, 0x6f, 0x77, 0x73, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09= , 0x2a, > 0x86, 0x48, 0x86, >=20 > + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00= , 0x30, > 0x82, 0x01, 0x0a, >=20 > + 0x02, 0x82, 0x01, 0x01, 0x00, 0xca, 0x9f, 0xcb, 0x8c, 0x5e, 0x61, 0x19= , 0xb5, > 0x37, 0x72, 0xd1, >=20 > + 0xe2, 0x88, 0x1f, 0x37, 0x56, 0xce, 0xa8, 0x88, 0x05, 0x3e, 0xe8, 0xa6= , 0x8d, > 0xfd, 0x0b, 0x30, >=20 > + 0x63, 0x54, 0x89, 0x1d, 0xda, 0x11, 0x70, 0x5a, 0x06, 0x00, 0x86, 0xd7= , 0x7f, > 0xe6, 0x21, 0x70, >=20 > + 0x41, 0x81, 0x26, 0x4b, 0x6e, 0xc7, 0x02, 0xe2, 0xbf, 0x61, 0x45, 0x04= , 0x2f, > 0x45, 0xbc, 0xd2, >=20 > + 0x0d, 0xf6, 0xac, 0xda, 0x91, 0x6d, 0xc6, 0x60, 0xad, 0xb3, 0x0b, 0x32= , 0xe5, > 0x13, 0x95, 0x96, >=20 > + 0x02, 0x4e, 0x10, 0xad, 0x2e, 0x6c, 0xb0, 0xc7, 0x65, 0x6d, 0xea, 0x89= , 0x91, > 0x67, 0x73, 0x5d, >=20 > + 0x05, 0x12, 0x9f, 0x95, 0x74, 0x6a, 0x6d, 0xb0, 0x6a, 0xd8, 0x94, 0x9b= , 0xb0, > 0x70, 0x79, 0xb0, >=20 > + 0x85, 0x42, 0xe7, 0xd7, 0x19, 0xc4, 0x33, 0xfd, 0xac, 0xbe, 0x2b, 0xd5= , 0x7e, > 0x5a, 0xa9, 0xc7, >=20 > + 0xa7, 0x68, 0x53, 0xed, 0xaa, 0x51, 0x2a, 0x6b, 0xac, 0x5a, 0xd7, 0x6e= , 0xcf, > 0x68, 0x60, 0x90, >=20 > + 0xc7, 0xda, 0xd1, 0xe7, 0xf2, 0x53, 0x4a, 0x01, 0xaf, 0xe8, 0xb1, 0x29= , 0x91, > 0xab, 0x4c, 0x58, >=20 > + 0x64, 0xe6, 0xb6, 0xcc, 0xdc, 0x0f, 0x43, 0xf2, 0x87, 0x15, 0xf8, 0x73= , 0x06, > 0xb8, 0x1f, 0xaa, >=20 > + 0xf2, 0x66, 0x49, 0x82, 0xca, 0xf0, 0xdd, 0x4c, 0x7c, 0xd5, 0xe7, 0x59= , 0xb7, > 0xc6, 0xd3, 0x81, >=20 > + 0x29, 0x5c, 0xce, 0xe4, 0xfd, 0xf7, 0xeb, 0x58, 0x6b, 0x50, 0x79, 0x72= , 0x83, > 0x4d, 0x59, 0xec, >=20 > + 0xd1, 0xd2, 0xfc, 0x3a, 0x10, 0xc5, 0x7a, 0xba, 0x90, 0xea, 0xfd, 0x54= , 0xc7, > 0xc8, 0x58, 0x2d, >=20 > + 0x84, 0xe5, 0x5b, 0x51, 0x98, 0x2c, 0x36, 0x7c, 0x42, 0x2b, 0xb1, 0x62= , 0x4b, > 0x0f, 0xf9, 0x72, >=20 > + 0xd3, 0x3f, 0x99, 0xc8, 0xb4, 0x02, 0x17, 0x39, 0xe5, 0x0b, 0xf2, 0x5d= , 0x2d, > 0x7f, 0x23, 0x41, >=20 > + 0xcd, 0x58, 0x3a, 0x25, 0x75, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82= , 0x02, > 0xa5, 0x30, 0x82, >=20 > + 0x02, 0xa1, 0x30, 0x3d, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82= , 0x37, > 0x15, 0x07, 0x04, >=20 > + 0x30, 0x30, 0x2e, 0x06, 0x26, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37= , 0x15, > 0x08, 0x83, 0xcf, >=20 > + 0x89, 0x4d, 0xad, 0xf2, 0x02, 0x85, 0xa1, 0x9f, 0x0c, 0x82, 0xfa, 0xca= , 0x7d, > 0x81, 0xe1, 0xfb, >=20 > + 0x74, 0x81, 0x4f, 0x84, 0x9a, 0xf1, 0x69, 0x85, 0xa1, 0xad, 0x1d, 0x02= , 0x01, > 0x64, 0x02, 0x01, >=20 > + 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02= , 0x07, > 0x80, 0x30, 0x29, >=20 > + 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x0a, 0x04= , 0x1c, > 0x30, 0x1a, 0x30, >=20 > + 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0a, 0x03= , 0x06, > 0x30, 0x0a, 0x06, >=20 > + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x1f, 0x06= , 0x03, > 0x55, 0x1d, 0x25, >=20 > + 0x04, 0x18, 0x30, 0x16, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82= , 0x37, > 0x0a, 0x03, 0x06, >=20 > + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x1d= , 0x06, > 0x03, 0x55, 0x1d, >=20 > + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc9, 0x5a, 0xb3, 0x11, 0x02, 0x66, 0x71= , 0x8c, > 0x5b, 0x06, 0x80, >=20 > + 0x8a, 0x6d, 0x4f, 0x5b, 0xf2, 0xb5, 0x67, 0x45, 0xb5, 0x30, 0x30, 0x06= , 0x03, > 0x55, 0x1d, 0x11, >=20 > + 0x04, 0x29, 0x30, 0x27, 0xa0, 0x25, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04= , 0x01, > 0x82, 0x37, 0x14, >=20 > + 0x02, 0x03, 0xa0, 0x17, 0x0c, 0x15, 0x77, 0x69, 0x6e, 0x63, 0x62, 0x6c= , 0x64, > 0x40, 0x6d, 0x69, >=20 > + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30= , 0x1f, > 0x06, 0x03, 0x55, >=20 > + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0xfe, 0x61, 0x39= , 0x6f, > 0xca, 0xc5, 0x64, >=20 > + 0xe0, 0x20, 0xb6, 0xda, 0xc1, 0xb9, 0x52, 0x0e, 0xca, 0xdf, 0x8e, 0xfe= , 0x30, > 0x81, 0xe8, 0x06, >=20 > + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, 0xe0, 0x30, 0x81, 0xdd, 0x30, 0x81= , 0xda, > 0xa0, 0x81, 0xd7, >=20 > + 0xa0, 0x81, 0xd4, 0x86, 0x36, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f= , 0x63, > 0x6f, 0x72, 0x70, >=20 > + 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54= , 0x25, > 0x32, 0x30, 0x54, >=20 > + 0x65, 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69= , 0x67, > 0x6e, 0x25, 0x32, >=20 > + 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x86= , 0x4d, > 0x68, 0x74, 0x74, >=20 > + 0x70, 0x3a, 0x2f, 0x2f, 0x6d, 0x73, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69= , 0x63, > 0x72, 0x6f, 0x73, >=20 > + 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f= , 0x6d, > 0x73, 0x63, 0x6f, >=20 > + 0x72, 0x70, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25= , 0x32, > 0x30, 0x54, 0x65, >=20 > + 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67= , 0x6e, > 0x25, 0x32, 0x30, >=20 > + 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x86, 0x4b= , 0x68, > 0x74, 0x74, 0x70, >=20 > + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f= , 0x73, > 0x6f, 0x66, 0x74, >=20 > + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x6d, 0x73, 0x63= , 0x6f, > 0x72, 0x70, 0x2f, >=20 > + 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54= , 0x65, > 0x73, 0x74, 0x25, >=20 > + 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32= , 0x30, > 0x43, 0x41, 0x25, >=20 > + 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xa9, 0x06, 0x08= , 0x2b, > 0x06, 0x01, 0x05, >=20 > + 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0x9c, 0x30, 0x81, 0x99, 0x30, 0x42= , 0x06, > 0x08, 0x2b, 0x06, >=20 > + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x36, 0x68, 0x74, 0x74, 0x70= , 0x3a, > 0x2f, 0x2f, 0x63, >=20 > + 0x6f, 0x72, 0x70, 0x70, 0x6b, 0x69, 0x2f, 0x61, 0x69, 0x61, 0x2f, 0x4d= , 0x53, > 0x49, 0x54, 0x25, >=20 > + 0x32, 0x30, 0x54, 0x65, 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64= , 0x65, > 0x53, 0x69, 0x67, >=20 > + 0x6e, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63= , 0x72, > 0x74, 0x30, 0x53, >=20 > + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x47= , 0x68, > 0x74, 0x74, 0x70, >=20 > + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f= , 0x73, > 0x6f, 0x66, 0x74, >=20 > + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x6d, 0x73, 0x63= , 0x6f, > 0x72, 0x70, 0x2f, >=20 > + 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54, 0x65, 0x73, 0x74, 0x25= , 0x32, > 0x30, 0x43, 0x6f, >=20 > + 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25= , 0x32, > 0x30, 0x33, 0x2e, >=20 > + 0x63, 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7= , 0x0d, > 0x01, 0x01, 0x0b, >=20 > + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x97, 0x6d, 0x52, 0x46, 0x65= , 0x08, > 0x60, 0x01, 0x12, >=20 > + 0x7a, 0x26, 0xaa, 0xd9, 0xc3, 0x15, 0xec, 0xc6, 0xae, 0x0b, 0x75, 0xe4= , 0xd5, > 0xe0, 0x31, 0xf6, >=20 > + 0xda, 0xc0, 0xb1, 0x1b, 0x7b, 0x8a, 0x07, 0xda, 0x2f, 0x82, 0x4a, 0x21= , 0x89, > 0xe6, 0x61, 0x97, >=20 > + 0xe4, 0x3a, 0x38, 0xd8, 0x0a, 0x26, 0x4e, 0x83, 0x54, 0xbf, 0x32, 0xe3= , 0x64, > 0x36, 0x61, 0x40, >=20 > + 0x75, 0x55, 0xf1, 0xaa, 0x34, 0xb2, 0xd3, 0x45, 0x8d, 0x79, 0x9a, 0x93= , 0x0b, > 0x9f, 0x5a, 0xb3, >=20 > + 0x5b, 0xcf, 0x0d, 0x28, 0x00, 0x46, 0x68, 0xe7, 0x36, 0xc9, 0xe6, 0xd2= , 0x03, > 0x2d, 0x1c, 0x2b, >=20 > + 0x24, 0x79, 0x32, 0xfb, 0xd8, 0x43, 0xb4, 0x0e, 0xd0, 0x37, 0x3b, 0x5e= , 0x15, > 0xbf, 0x8a, 0x00, >=20 > + 0x56, 0x00, 0x95, 0x00, 0xd4, 0x71, 0x09, 0xe1, 0x84, 0xfa, 0x6e, 0xc5= , 0x75, > 0x2f, 0xe1, 0x83, >=20 > + 0x7b, 0x66, 0xe2, 0x22, 0x75, 0x23, 0x6a, 0xf3, 0x83, 0xfc, 0x94, 0xf8= , 0x51, > 0x6d, 0x40, 0x6d, >=20 > + 0x20, 0x7e, 0xb0, 0xe9, 0xac, 0xa8, 0x28, 0x04, 0xa0, 0x1a, 0x3c, 0x88= , 0x7e, > 0x7e, 0x3b, 0x96, >=20 > + 0xe9, 0xd0, 0x4b, 0xfa, 0xfa, 0x34, 0x4a, 0x4f, 0xe7, 0xe8, 0x76, 0x16= , 0x20, > 0xc0, 0x10, 0xca, >=20 > + 0x1f, 0x7a, 0xde, 0x54, 0xfd, 0xb7, 0xf0, 0xea, 0x8f, 0xe2, 0xcb, 0xa5= , 0x1c, > 0x58, 0x18, 0x57, >=20 > + 0x6c, 0x7d, 0x06, 0xde, 0x8c, 0xbd, 0x45, 0xd7, 0x28, 0x86, 0x13, 0x42= , 0xaa, > 0x4a, 0x9a, 0x50, >=20 > + 0xc5, 0x76, 0x7f, 0x63, 0x99, 0xd0, 0x90, 0x92, 0xd6, 0xc9, 0x21, 0xf2= , 0xb8, > 0x66, 0x9c, 0x96, >=20 > + 0x53, 0xd2, 0xe5, 0xc4, 0xdd, 0x3a, 0x7c, 0x06, 0xae, 0xb1, 0x7a, 0xb4= , 0x36, > 0x04, 0x9d, 0xe6, >=20 > + 0x2a, 0xe4, 0x6a, 0x56, 0xd0, 0x9a, 0x98, 0xa2, 0xbf, 0x6f, 0x43, 0xf2= , 0xb0, > 0x5b, 0xfd, 0xd9, >=20 > + 0xfa, 0x08, 0x17, 0xc8, 0x3c, 0x61, 0xf1, 0x31, 0x82, 0x02, 0x3a, 0x30= , 0x82, > 0x02, 0x36, 0x02, >=20 > + 0x01, 0x01, 0x30, 0x81, 0x90, 0x30, 0x81, 0x81, 0x31, 0x13, 0x30, 0x11= , 0x06, > 0x0a, 0x09, 0x92, >=20 > + 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6f= , 0x6d, > 0x31, 0x19, 0x30, >=20 > + 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01= , 0x19, > 0x16, 0x09, 0x6d, >=20 > + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31, 0x14, 0x30, 0x12= , 0x06, > 0x0a, 0x09, 0x92, >=20 > + 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x04, 0x63, 0x6f= , 0x72, > 0x70, 0x31, 0x17, >=20 > + 0x30, 0x15, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64= , 0x01, > 0x19, 0x16, 0x07, >=20 > + 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x20, 0x30, 0x1e, 0x06= , 0x03, > 0x55, 0x04, 0x03, >=20 > + 0x13, 0x17, 0x4d, 0x53, 0x49, 0x54, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20= , 0x43, > 0x6f, 0x64, 0x65, >=20 > + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x33, 0x02, 0x0a, 0x4e= , 0x30, > 0xa5, 0xbb, 0x00, >=20 > + 0x00, 0x00, 0x12, 0x7b, 0xf2, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48= , 0x01, > 0x65, 0x03, 0x04, >=20 > + 0x02, 0x01, 0x05, 0x00, 0xa0, 0x7c, 0x30, 0x10, 0x06, 0x0a, 0x2b, 0x06= , 0x01, > 0x04, 0x01, 0x82, >=20 > + 0x37, 0x02, 0x01, 0x0c, 0x31, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09= , 0x2a, > 0x86, 0x48, 0x86, >=20 > + 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x02, 0x01, 0x04, 0x30, 0x1c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01= , 0x82, > 0x37, 0x02, 0x01, >=20 > + 0x0b, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01= , 0x82, > 0x37, 0x02, 0x01, >=20 > + 0x15, 0x30, 0x2f, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01= , 0x09, > 0x04, 0x31, 0x22, >=20 > + 0x04, 0x20, 0x25, 0x60, 0x6e, 0xc8, 0x66, 0x72, 0x73, 0xb0, 0x71, 0x7b= , 0x82, > 0x09, 0x8c, 0x27, >=20 > + 0xe8, 0xb1, 0x4a, 0x36, 0x1c, 0x81, 0x36, 0xb4, 0x1b, 0x44, 0xdf, 0x09= , 0x82, > 0x8b, 0xf9, 0xb6, >=20 > + 0x1c, 0x65, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d= , 0x01, > 0x01, 0x01, 0x05, >=20 > + 0x00, 0x04, 0x82, 0x01, 0x00, 0x01, 0xb7, 0x8e, 0x46, 0x9b, 0xb4, 0x18= , 0xcd, > 0xf6, 0x39, 0x8f, >=20 > + 0x82, 0x79, 0xbc, 0x96, 0x55, 0x7e, 0xd7, 0x84, 0x8f, 0x18, 0x37, 0x48= , 0x4e, > 0x8f, 0x25, 0x6f, >=20 > + 0x1a, 0x6c, 0x60, 0xe9, 0xc1, 0x5f, 0x65, 0xec, 0xb0, 0x4b, 0x35, 0x98= , 0x8a, > 0x31, 0x6b, 0xfd, >=20 > + 0xa9, 0xd2, 0x28, 0xa7, 0x00, 0xd0, 0x5c, 0x97, 0x2e, 0x3d, 0x19, 0x96= , 0x75, > 0xc2, 0x9a, 0xa7, >=20 > + 0x4e, 0x2d, 0x3c, 0x6a, 0xd7, 0xd1, 0x81, 0x96, 0x2e, 0x06, 0x54, 0x82= , 0xe9, > 0x87, 0xa2, 0x53, >=20 > + 0x63, 0x6a, 0xda, 0x72, 0xa3, 0x41, 0x4f, 0x14, 0xc5, 0x3d, 0x41, 0x7d= , 0xbb, > 0xd7, 0x29, 0x11, >=20 > + 0x96, 0x14, 0x60, 0x5f, 0xb9, 0xd3, 0x47, 0xb6, 0x23, 0x97, 0x64, 0xf6= , 0xe1, > 0xac, 0x6c, 0x4d, >=20 > + 0xa9, 0x58, 0xc2, 0x35, 0xbf, 0x02, 0xee, 0x29, 0xd4, 0x52, 0x80, 0x25= , 0xa1, > 0x7e, 0xbe, 0x21, >=20 > + 0xcd, 0x04, 0x3c, 0x4d, 0x7d, 0xdb, 0x9b, 0x13, 0x71, 0x35, 0x13, 0x8d= , 0x16, > 0x0a, 0x40, 0x7b, >=20 > + 0x63, 0x45, 0x00, 0x11, 0xc5, 0x3e, 0xc8, 0x21, 0x37, 0xc9, 0xbc, 0xd2= , 0x0f, > 0x82, 0x21, 0xf9, >=20 > + 0x2f, 0xde, 0xb3, 0x1c, 0x9b, 0x67, 0xb6, 0x5a, 0xb8, 0x74, 0xa0, 0x30= , 0xd8, > 0x86, 0x1f, 0xd9, >=20 > + 0x08, 0x45, 0xf9, 0x6b, 0xe8, 0x57, 0xda, 0xb7, 0x14, 0xf7, 0x63, 0x97= , 0xfd, > 0x87, 0x61, 0x1e, >=20 > + 0x95, 0x6f, 0xba, 0x53, 0x40, 0x5e, 0x9f, 0x49, 0xf6, 0xe7, 0x3c, 0x59= , 0xd9, > 0x78, 0x08, 0x4c, >=20 > + 0xa6, 0x4a, 0xa2, 0x05, 0x42, 0xa7, 0x77, 0xbc, 0x44, 0x7b, 0xed, 0xdb= , 0x77, > 0x63, 0x4c, 0x63, >=20 > + 0x22, 0xb6, 0x17, 0x3f, 0x4f, 0x33, 0xed, 0xa6, 0xd9, 0x0f, 0x74, 0xfa= , 0x97, > 0x8d, 0x98, 0x55, >=20 > + 0x42, 0x14, 0x76, 0xd4, 0x89, 0x07, 0xf2, 0x30, 0x5a, 0x27, 0x96, 0x1b= , 0x92, > 0x70, 0x5a, 0x83, >=20 > + 0x89, 0x0f, 0xdb, 0x47, 0x7a, 0x00, 0x00, 0x00, 0x0a >=20 > + }; >=20 > + >=20 > +// >=20 > +// Sample root certificate for code signing. >=20 > +// A trusted certificate with self-signing, will be used to construct th= e > certificate chains for >=20 > +// authority checking. >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TestRootCert1[] =3D { >=20 > + 0x30, 0x82, 0x05, 0x99, 0x30, 0x82, 0x03, 0x81, 0xA0, 0x03, 0x02, 0x01= , 0x02, > 0x02, 0x10, 0x79, >=20 > + 0xAD, 0x16, 0xA1, 0x4A, 0xA0, 0xA5, 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07= , > 0x13, 0x2E, 0x65, 0x30, >=20 > + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05= , 0x05, > 0x00, 0x30, 0x5F, >=20 > + 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2= , 0x2C, > 0x64, 0x01, 0x19, >=20 > + 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09= , 0x92, > 0x26, 0x89, 0x93, >=20 > + 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F= , 0x73, > 0x6F, 0x66, 0x74, >=20 > + 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D= , 0x69, > 0x63, 0x72, 0x6F, >=20 > + 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65= , 0x72, > 0x74, 0x69, 0x66, >=20 > + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72= , 0x69, > 0x74, 0x79, 0x30, >=20 > + 0x1E, 0x17, 0x0D, 0x30, 0x31, 0x30, 0x35, 0x30, 0x39, 0x32, 0x33, 0x31= , 0x39, > 0x32, 0x32, 0x5A, >=20 > + 0x17, 0x0D, 0x32, 0x31, 0x30, 0x35, 0x30, 0x39, 0x32, 0x33, 0x32, 0x38= , 0x31, > 0x33, 0x5A, 0x30, >=20 > + 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93= , 0xF2, > 0x2C, 0x64, 0x01, >=20 > + 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A= , 0x09, > 0x92, 0x26, 0x89, >=20 > + 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72= , 0x6F, > 0x73, 0x6F, 0x66, >=20 > + 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24= , 0x4D, > 0x69, 0x63, 0x72, >=20 > + 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43= , 0x65, > 0x72, 0x74, 0x69, >=20 > + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F= , 0x72, > 0x69, 0x74, 0x79, >=20 > + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86= , 0xF7, > 0x0D, 0x01, 0x01, >=20 > + 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00, 0x30, 0x82, 0x02, 0x0A= , 0x02, > 0x82, 0x02, 0x01, >=20 > + 0x00, 0xF3, 0x5D, 0xFA, 0x80, 0x67, 0xD4, 0x5A, 0xA7, 0xA9, 0x0C, 0x2C= , 0x90, > 0x20, 0xD0, 0x35, >=20 > + 0x08, 0x3C, 0x75, 0x84, 0xCD, 0xB7, 0x07, 0x89, 0x9C, 0x89, 0xDA, 0xDE= , > 0xCE, 0xC3, 0x60, 0xFA, >=20 > + 0x91, 0x68, 0x5A, 0x9E, 0x94, 0x71, 0x29, 0x18, 0x76, 0x7C, 0xC2, 0xE0= , 0xC8, > 0x25, 0x76, 0x94, >=20 > + 0x0E, 0x58, 0xFA, 0x04, 0x34, 0x36, 0xE6, 0xDF, 0xAF, 0xF7, 0x80, 0xBA= , 0xE9, > 0x58, 0x0B, 0x2B, >=20 > + 0x93, 0xE5, 0x9D, 0x05, 0xE3, 0x77, 0x22, 0x91, 0xF7, 0x34, 0x64, 0x3C= , 0x22, > 0x91, 0x1D, 0x5E, >=20 > + 0xE1, 0x09, 0x90, 0xBC, 0x14, 0xFE, 0xFC, 0x75, 0x58, 0x19, 0xE1, 0x79= , 0xB7, > 0x07, 0x92, 0xA3, >=20 > + 0xAE, 0x88, 0x59, 0x08, 0xD8, 0x9F, 0x07, 0xCA, 0x03, 0x58, 0xFC, 0x68= , 0x29, > 0x6D, 0x32, 0xD7, >=20 > + 0xD2, 0xA8, 0xCB, 0x4B, 0xFC, 0xE1, 0x0B, 0x48, 0x32, 0x4F, 0xE6, 0xEB= , 0xB8, > 0xAD, 0x4F, 0xE4, >=20 > + 0x5C, 0x6F, 0x13, 0x94, 0x99, 0xDB, 0x95, 0xD5, 0x75, 0xDB, 0xA8, 0x1A= , > 0xB7, 0x94, 0x91, 0xB4, >=20 > + 0x77, 0x5B, 0xF5, 0x48, 0x0C, 0x8F, 0x6A, 0x79, 0x7D, 0x14, 0x70, 0x04= , 0x7D, > 0x6D, 0xAF, 0x90, >=20 > + 0xF5, 0xDA, 0x70, 0xD8, 0x47, 0xB7, 0xBF, 0x9B, 0x2F, 0x6C, 0xE7, 0x05= , 0xB7, > 0xE1, 0x11, 0x60, >=20 > + 0xAC, 0x79, 0x91, 0x14, 0x7C, 0xC5, 0xD6, 0xA6, 0xE4, 0xE1, 0x7E, 0xD5= , > 0xC3, 0x7E, 0xE5, 0x92, >=20 > + 0xD2, 0x3C, 0x00, 0xB5, 0x36, 0x82, 0xDE, 0x79, 0xE1, 0x6D, 0xF3, 0xB5= , 0x6E, > 0xF8, 0x9F, 0x33, >=20 > + 0xC9, 0xCB, 0x52, 0x7D, 0x73, 0x98, 0x36, 0xDB, 0x8B, 0xA1, 0x6B, 0xA2= , > 0x95, 0x97, 0x9B, 0xA3, >=20 > + 0xDE, 0xC2, 0x4D, 0x26, 0xFF, 0x06, 0x96, 0x67, 0x25, 0x06, 0xC8, 0xE7= , 0xAC, > 0xE4, 0xEE, 0x12, >=20 > + 0x33, 0x95, 0x31, 0x99, 0xC8, 0x35, 0x08, 0x4E, 0x34, 0xCA, 0x79, 0x53= , 0xD5, > 0xB5, 0xBE, 0x63, >=20 > + 0x32, 0x59, 0x40, 0x36, 0xC0, 0xA5, 0x4E, 0x04, 0x4D, 0x3D, 0xDB, 0x5B= , > 0x07, 0x33, 0xE4, 0x58, >=20 > + 0xBF, 0xEF, 0x3F, 0x53, 0x64, 0xD8, 0x42, 0x59, 0x35, 0x57, 0xFD, 0x0F= , 0x45, > 0x7C, 0x24, 0x04, >=20 > + 0x4D, 0x9E, 0xD6, 0x38, 0x74, 0x11, 0x97, 0x22, 0x90, 0xCE, 0x68, 0x44= , 0x74, > 0x92, 0x6F, 0xD5, >=20 > + 0x4B, 0x6F, 0xB0, 0x86, 0xE3, 0xC7, 0x36, 0x42, 0xA0, 0xD0, 0xFC, 0xC1= , 0xC0, > 0x5A, 0xF9, 0xA3, >=20 > + 0x61, 0xB9, 0x30, 0x47, 0x71, 0x96, 0x0A, 0x16, 0xB0, 0x91, 0xC0, 0x42= , 0x95, > 0xEF, 0x10, 0x7F, >=20 > + 0x28, 0x6A, 0xE3, 0x2A, 0x1F, 0xB1, 0xE4, 0xCD, 0x03, 0x3F, 0x77, 0x71= , 0x04, > 0xC7, 0x20, 0xFC, >=20 > + 0x49, 0x0F, 0x1D, 0x45, 0x88, 0xA4, 0xD7, 0xCB, 0x7E, 0x88, 0xAD, 0x8E= , > 0x2D, 0xEC, 0x45, 0xDB, >=20 > + 0xC4, 0x51, 0x04, 0xC9, 0x2A, 0xFC, 0xEC, 0x86, 0x9E, 0x9A, 0x11, 0x97= , 0x5B, > 0xDE, 0xCE, 0x53, >=20 > + 0x88, 0xE6, 0xE2, 0xB7, 0xFD, 0xAC, 0x95, 0xC2, 0x28, 0x40, 0xDB, 0xEF= , 0x04, > 0x90, 0xDF, 0x81, >=20 > + 0x33, 0x39, 0xD9, 0xB2, 0x45, 0xA5, 0x23, 0x87, 0x06, 0xA5, 0x55, 0x89= , 0x31, > 0xBB, 0x06, 0x2D, >=20 > + 0x60, 0x0E, 0x41, 0x18, 0x7D, 0x1F, 0x2E, 0xB5, 0x97, 0xCB, 0x11, 0xEB= , 0x15, > 0xD5, 0x24, 0xA5, >=20 > + 0x94, 0xEF, 0x15, 0x14, 0x89, 0xFD, 0x4B, 0x73, 0xFA, 0x32, 0x5B, 0xFC= , 0xD1, > 0x33, 0x00, 0xF9, >=20 > + 0x59, 0x62, 0x70, 0x07, 0x32, 0xEA, 0x2E, 0xAB, 0x40, 0x2D, 0x7B, 0xCA= , > 0xDD, 0x21, 0x67, 0x1B, >=20 > + 0x30, 0x99, 0x8F, 0x16, 0xAA, 0x23, 0xA8, 0x41, 0xD1, 0xB0, 0x6E, 0x11= , 0x9B, > 0x36, 0xC4, 0xDE, >=20 > + 0x40, 0x74, 0x9C, 0xE1, 0x58, 0x65, 0xC1, 0x60, 0x1E, 0x7A, 0x5B, 0x38= , 0xC8, > 0x8F, 0xBB, 0x04, >=20 > + 0x26, 0x7C, 0xD4, 0x16, 0x40, 0xE5, 0xB6, 0x6B, 0x6C, 0xAA, 0x86, 0xFD= , > 0x00, 0xBF, 0xCE, 0xC1, >=20 > + 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x51, 0x30, 0x4F, 0x30, 0x0B= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0xC6, 0x30, 0x0F, 0x06, 0x03, 0x55= , 0x1D, > 0x13, 0x01, 0x01, >=20 > + 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1D, 0x06, 0x03= , 0x55, > 0x1D, 0x0E, 0x04, >=20 > + 0x16, 0x04, 0x14, 0x0E, 0xAC, 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, 0xE5= , 0x25, > 0x13, 0xFC, 0x2A, >=20 > + 0xE1, 0x0A, 0x53, 0x95, 0x59, 0xE4, 0xA4, 0x30, 0x10, 0x06, 0x09, 0x2B= , 0x06, > 0x01, 0x04, 0x01, >=20 > + 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0D, 0x06= , 0x09, > 0x2A, 0x86, 0x48, >=20 > + 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01= , 0x00, > 0xC5, 0x11, 0x4D, >=20 > + 0x03, 0x3A, 0x60, 0xDD, 0x5D, 0x52, 0x11, 0x77, 0x8F, 0xB2, 0xBB, 0x36= , > 0xC8, 0xB2, 0x05, 0xBF, >=20 > + 0xB4, 0xB7, 0xA8, 0xD8, 0x20, 0x9D, 0x5C, 0x13, 0x03, 0xB6, 0x1C, 0x22= , > 0xFA, 0x06, 0x13, 0x35, >=20 > + 0xB6, 0xC8, 0x63, 0xD4, 0x9A, 0x47, 0x6F, 0x26, 0x57, 0xD2, 0x55, 0xF1= , 0x04, > 0xB1, 0x26, 0x5F, >=20 > + 0xD6, 0xA9, 0x50, 0x68, 0xA0, 0xBC, 0xD2, 0xB8, 0x6E, 0xCC, 0xC3, 0xE9= , > 0xAC, 0xDF, 0x19, 0xCD, >=20 > + 0x78, 0xAC, 0x59, 0x74, 0xAC, 0x66, 0x34, 0x36, 0xC4, 0x1B, 0x3E, 0x6C= , 0x38, > 0x4C, 0x33, 0x0E, >=20 > + 0x30, 0x12, 0x0D, 0xA3, 0x26, 0xFE, 0x51, 0x53, 0x00, 0xFF, 0xAF, 0x5A= , 0x4E, > 0x84, 0x0D, 0x0F, >=20 > + 0x1F, 0xE4, 0x6D, 0x05, 0x2E, 0x4E, 0x85, 0x4B, 0x8D, 0x6C, 0x33, 0x6F= , 0x54, > 0xD2, 0x64, 0xAB, >=20 > + 0xBF, 0x50, 0xAF, 0x7D, 0x7A, 0x39, 0xA0, 0x37, 0xED, 0x63, 0x03, 0x0F= , 0xFC, > 0x13, 0x06, 0xCE, >=20 > + 0x16, 0x36, 0xD4, 0x54, 0x3B, 0x95, 0x1B, 0x51, 0x62, 0x3A, 0xE5, 0x4D= , 0x17, > 0xD4, 0x05, 0x39, >=20 > + 0x92, 0x9A, 0x27, 0xA8, 0x5B, 0xAA, 0xBD, 0xEC, 0xBB, 0xBE, 0xE3, 0x20= , > 0x89, 0x60, 0x71, 0x6C, >=20 > + 0x56, 0xB3, 0xA5, 0x13, 0xD0, 0x6D, 0x0E, 0x23, 0x7E, 0x95, 0x03, 0xED= , 0x68, > 0x3D, 0xF2, 0xD8, >=20 > + 0x63, 0xB8, 0x6B, 0x4D, 0xB6, 0xE8, 0x30, 0xB5, 0xE1, 0xCA, 0x94, 0x4B= , 0xF7, > 0xA2, 0xAA, 0x5D, >=20 > + 0x99, 0x30, 0xB2, 0x3D, 0xA7, 0xC2, 0x51, 0x6C, 0x28, 0x20, 0x01, 0x24= , 0x27, > 0x2B, 0x4B, 0x00, >=20 > + 0xB7, 0x9D, 0x11, 0x6B, 0x70, 0xBE, 0xB2, 0x10, 0x82, 0xBC, 0x0C, 0x9B= , > 0x68, 0xD0, 0x8D, 0x3B, >=20 > + 0x24, 0x87, 0xAA, 0x99, 0x28, 0x72, 0x9D, 0x33, 0x5F, 0x59, 0x90, 0xBD= , 0xF5, > 0xDE, 0x93, 0x9E, >=20 > + 0x3A, 0x62, 0x5A, 0x34, 0x39, 0xE2, 0x88, 0x55, 0x1D, 0xB9, 0x06, 0xB0= , 0xC1, > 0x89, 0x6B, 0x2D, >=20 > + 0xD7, 0x69, 0xC3, 0x19, 0x12, 0x36, 0x84, 0xD0, 0xC9, 0xA0, 0xDA, 0xFF= , 0x2F, > 0x69, 0x78, 0xB2, >=20 > + 0xE5, 0x7A, 0xDA, 0xEB, 0xD7, 0x0C, 0xC0, 0xF7, 0xBD, 0x63, 0x17, 0xB8= , > 0x39, 0x13, 0x38, 0xA2, >=20 > + 0x36, 0x5B, 0x7B, 0xF2, 0x85, 0x56, 0x6A, 0x1D, 0x64, 0x62, 0xC1, 0x38= , 0xE2, > 0xAA, 0xBF, 0x51, >=20 > + 0x66, 0xA2, 0x94, 0xF5, 0x12, 0x9C, 0x66, 0x22, 0x10, 0x6B, 0xF2, 0xB7= , 0x30, > 0x92, 0x2D, 0xF2, >=20 > + 0x29, 0xF0, 0x3D, 0x3B, 0x14, 0x43, 0x68, 0xA2, 0xF1, 0x9C, 0x29, 0x37= , 0xCB, > 0xCE, 0x38, 0x20, >=20 > + 0x25, 0x6D, 0x7C, 0x67, 0xF3, 0x7E, 0x24, 0x12, 0x24, 0x03, 0x08, 0x81= , 0x47, > 0xEC, 0xA5, 0x9E, >=20 > + 0x97, 0xF5, 0x18, 0xD7, 0xCF, 0xBB, 0xD5, 0xEF, 0x76, 0x96, 0xEF, 0xFD= , 0xCE, > 0xDB, 0x56, 0x9D, >=20 > + 0x95, 0xA0, 0x42, 0xF9, 0x97, 0x58, 0xE1, 0xD7, 0x31, 0x22, 0xD3, 0x5F= , 0x59, > 0xE6, 0x3E, 0x6E, >=20 > + 0x22, 0x00, 0xEA, 0x43, 0x84, 0xB6, 0x25, 0xDB, 0xD9, 0xF3, 0x08, 0x56= , 0x68, > 0xC0, 0x64, 0x6B, >=20 > + 0x1D, 0x7C, 0xEC, 0xB6, 0x93, 0xA2, 0x62, 0x57, 0x6E, 0x2E, 0xD8, 0xE7= , 0x58, > 0x8F, 0xC4, 0x31, >=20 > + 0x49, 0x26, 0xDD, 0xDE, 0x29, 0x35, 0x87, 0xF5, 0x30, 0x71, 0x70, 0x5B= , 0x14, > 0x3C, 0x69, 0xBD, >=20 > + 0x89, 0x12, 0x7D, 0xEB, 0x2E, 0xA3, 0xFE, 0xD8, 0x7F, 0x9E, 0x82, 0x5A= , 0x52, > 0x0A, 0x2B, 0xC1, >=20 > + 0x43, 0x2B, 0xD9, 0x30, 0x88, 0x9F, 0xC8, 0x10, 0xFB, 0x89, 0x8D, 0xE6= , 0xA1, > 0x85, 0x75, 0x33, >=20 > + 0x7E, 0x6C, 0x9E, 0xDB, 0x73, 0x13, 0x64, 0x62, 0x69, 0xA5, 0x2F, 0x7D= , 0xCA, > 0x96, 0x6D, 0x9F, >=20 > + 0xF8, 0x04, 0x4D, 0x30, 0x92, 0x3D, 0x6E, 0x21, 0x14, 0x21, 0xC9, 0x3D= , 0xE0, > 0xC3, 0xFD, 0x8A, >=20 > + 0x6B, 0x9D, 0x4A, 0xFD, 0xD1, 0xA1, 0x9D, 0x99, 0x43, 0x77, 0x3F, 0xB0= , > 0xDA >=20 > +}; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TestRootCert2[] =3D { >=20 > + 0x30, 0x82, 0x05, 0xfd, 0x30, 0x82, 0x03, 0xe5, 0xa0, 0x03, 0x02, 0x01= , 0x02, > 0x02, 0x10, 0x74, >=20 > + 0x45, 0xc8, 0x78, 0x4e, 0x0c, 0xc9, 0x96, 0x4a, 0xb4, 0x2f, 0xbc, 0xda= , 0x29, > 0xe1, 0xbc, 0x30, >=20 > + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b= , 0x05, > 0x00, 0x30, 0x81, >=20 > + 0x90, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02= , 0x55, > 0x53, 0x31, 0x13, >=20 > + 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73= , 0x68, > 0x69, 0x6e, 0x67, >=20 > + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07= , 0x13, > 0x07, 0x52, 0x65, >=20 > + 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55= , 0x04, > 0x0a, 0x13, 0x15, >=20 > + 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f= , 0x72, > 0x70, 0x6f, 0x72, >=20 > + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55= , 0x04, > 0x03, 0x13, 0x31, >=20 > + 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x54, 0x65= , 0x73, > 0x74, 0x69, 0x6e, >=20 > + 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69= , 0x66, > 0x69, 0x63, 0x61, >=20 > + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79= , 0x20, > 0x32, 0x30, 0x31, >=20 > + 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x36, 0x31, 0x37, 0x32= , 0x30, > 0x35, 0x38, 0x30, >=20 > + 0x32, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30, 0x36, 0x31, 0x37, 0x32, 0x31= , 0x30, > 0x34, 0x31, 0x31, >=20 > + 0x5a, 0x30, 0x81, 0x90, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04= , 0x06, > 0x13, 0x02, 0x55, >=20 > + 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a= , 0x57, > 0x61, 0x73, 0x68, >=20 > + 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03= , 0x55, > 0x04, 0x07, 0x13, >=20 > + 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74= , 0x20, > 0x43, 0x6f, 0x72, >=20 > + 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3a, 0x30, 0x38= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x13, 0x31, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74= , 0x20, > 0x54, 0x65, 0x73, >=20 > + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65= , 0x72, > 0x74, 0x69, 0x66, >=20 > + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72= , 0x69, > 0x74, 0x79, 0x20, >=20 > + 0x32, 0x30, 0x31, 0x30, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09= , 0x2a, > 0x86, 0x48, 0x86, >=20 > + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00= , 0x30, > 0x82, 0x02, 0x0a, >=20 > + 0x02, 0x82, 0x02, 0x01, 0x00, 0x95, 0xe3, 0xa8, 0xc1, 0xb9, 0x9c, 0x26= , 0x54, > 0xb0, 0x99, 0xef, >=20 > + 0x26, 0x1f, 0xac, 0x1e, 0xc7, 0x30, 0x80, 0xbb, 0xf5, 0x3f, 0xf2, 0xe4= , 0xbb, > 0xf8, 0xfe, 0x06, >=20 > + 0x6a, 0x0a, 0xa6, 0x88, 0xbc, 0xb4, 0x8c, 0x45, 0xe0, 0x70, 0x55, 0x19= , 0x88, > 0xb4, 0x05, 0xcb, >=20 > + 0xb5, 0xc1, 0xa1, 0xfa, 0xd4, 0x7c, 0xc2, 0x42, 0x53, 0x07, 0x9c, 0x54= , 0x56, > 0xa8, 0x97, 0xe0, >=20 > + 0x94, 0x69, 0xbe, 0x13, 0x24, 0xef, 0xe5, 0x8a, 0x29, 0x9c, 0xa6, 0xd0= , 0x2b, > 0x2f, 0x8a, 0xa6, >=20 > + 0xe8, 0x79, 0x44, 0x2e, 0x8b, 0xea, 0xc9, 0xbe, 0xb8, 0x54, 0x86, 0x53= , 0xbe, > 0x07, 0x24, 0x34, >=20 > + 0x54, 0x15, 0x22, 0x20, 0x01, 0x7b, 0x8a, 0x46, 0xfb, 0xd2, 0x91, 0x07= , 0x95, > 0x09, 0xb0, 0x56, >=20 > + 0x11, 0xcc, 0x76, 0xb2, 0xd0, 0x1f, 0x44, 0x79, 0x52, 0x34, 0x28, 0xec= , 0x4f, > 0x49, 0xc2, 0xcb, >=20 > + 0x61, 0xd3, 0x86, 0xdc, 0xe4, 0xa3, 0x7e, 0x55, 0x9e, 0x9f, 0xee, 0x10= , 0x6f, > 0xcf, 0xe1, 0x3d, >=20 > + 0xf8, 0xb7, 0x84, 0x79, 0xa2, 0x3b, 0x8d, 0x1c, 0xb0, 0x81, 0x7c, 0xe4= , 0x44, > 0x07, 0xe4, 0xce, >=20 > + 0x46, 0xb0, 0x98, 0x83, 0x8d, 0x87, 0x8f, 0xe5, 0xf5, 0xae, 0x40, 0x7a= , 0xf1, > 0xed, 0x3d, 0x9b, >=20 > + 0x9a, 0x7c, 0x4a, 0xd1, 0xb9, 0xc3, 0x94, 0x05, 0x7b, 0xdc, 0xda, 0xb8= , 0xce, > 0xdc, 0x1e, 0x6c, >=20 > + 0xcf, 0xd9, 0x9e, 0x37, 0xef, 0xc3, 0x5a, 0x36, 0x7b, 0x90, 0x86, 0x45= , 0xdc, > 0xf6, 0x2e, 0xca, >=20 > + 0xdd, 0xee, 0xde, 0x27, 0xd9, 0x74, 0x9a, 0x69, 0xf5, 0xd9, 0x5d, 0x09= , 0x2d, > 0x45, 0x41, 0xcc, >=20 > + 0xb7, 0xc2, 0x82, 0xd4, 0x2a, 0x8c, 0x16, 0x25, 0x92, 0x97, 0x3d, 0x94= , 0x4e, > 0x89, 0x33, 0x7e, >=20 > + 0x5b, 0x03, 0x54, 0xcd, 0xb0, 0x83, 0xa0, 0x8e, 0x41, 0xb7, 0x87, 0x8d= , 0xd9, > 0x05, 0x63, 0x52, >=20 > + 0xf6, 0xee, 0xe6, 0x4e, 0x13, 0x9d, 0x54, 0xcd, 0x49, 0xfe, 0xe3, 0x8b= , 0x3b, > 0x50, 0x9b, 0x48, >=20 > + 0xbb, 0xb2, 0xe5, 0x92, 0xd4, 0xab, 0xa0, 0xc5, 0x10, 0xaf, 0x3e, 0xb1= , 0x45, > 0x21, 0x34, 0x90, >=20 > + 0xdc, 0xad, 0xb9, 0xf7, 0xfe, 0x21, 0xae, 0xee, 0x50, 0x58, 0x7a, 0x3a= , 0xe5, > 0xaa, 0xd8, 0xe3, >=20 > + 0x82, 0xd6, 0xcf, 0x6d, 0x4d, 0xc9, 0x15, 0xac, 0x9c, 0x31, 0x17, 0xa5= , 0x16, > 0xa7, 0x42, 0xf6, >=20 > + 0xda, 0x12, 0x78, 0xa7, 0x66, 0x90, 0xec, 0xfc, 0xcd, 0x01, 0x63, 0xff= , 0xf0, > 0x0e, 0xba, 0xe1, >=20 > + 0xcd, 0xf0, 0xdb, 0x6b, 0x9a, 0x0f, 0xf6, 0x0f, 0x04, 0x01, 0x09, 0xbc= , 0x9f, > 0xce, 0xb7, 0x6c, >=20 > + 0x51, 0x70, 0x57, 0x08, 0x1b, 0xff, 0x79, 0x9a, 0x52, 0x5d, 0xba, 0xac= , 0x14, > 0xe5, 0x3b, 0x67, >=20 > + 0xcf, 0x2c, 0x52, 0xde, 0x27, 0x9a, 0x34, 0x03, 0x6e, 0x25, 0x48, 0xb0= , 0x19, > 0x74, 0xfc, 0x4d, >=20 > + 0x98, 0xc2, 0x4b, 0x8c, 0x92, 0xe1, 0x88, 0xae, 0x48, 0x2a, 0xab, 0xab= , 0xcd, > 0x14, 0x4d, 0xb6, >=20 > + 0x61, 0x0e, 0xa1, 0x09, 0x8f, 0x2c, 0xdb, 0x45, 0xaf, 0x7d, 0x3b, 0x81= , 0x56, > 0x08, 0xc9, 0x3b, >=20 > + 0x41, 0xb7, 0x64, 0x9f, 0x5d, 0x2e, 0x12, 0x7f, 0xb9, 0x69, 0x29, 0x1f= , 0x52, > 0x45, 0x4a, 0x23, >=20 > + 0xc6, 0xaf, 0xb6, 0xb2, 0x38, 0x72, 0x9d, 0x08, 0x33, 0xff, 0xd0, 0xcf= , 0x89, > 0xb6, 0xea, 0x6e, >=20 > + 0x85, 0x44, 0x94, 0x3e, 0x91, 0x59, 0xeb, 0xef, 0x9e, 0xbd, 0x9b, 0x9c= , 0x1a, > 0x47, 0x03, 0x4e, >=20 > + 0xa2, 0x17, 0x96, 0xfa, 0x62, 0x0b, 0xe8, 0x53, 0xb6, 0x4e, 0xe3, 0xe8= , 0x2a, > 0x73, 0x59, 0xe2, >=20 > + 0x13, 0xb8, 0xf8, 0x5a, 0x7e, 0xc6, 0xe2, 0x0a, 0xdd, 0x4a, 0x43, 0xcc= , 0xc3, > 0x77, 0x3b, 0x7a, >=20 > + 0x31, 0x04, 0x0a, 0xc1, 0x84, 0x96, 0x3a, 0x63, 0x6e, 0x1a, 0x3e, 0x0a= , 0x0c, > 0x25, 0xb8, 0x7e, >=20 > + 0xb5, 0x52, 0x0c, 0xb9, 0xab, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x51= , 0x30, > 0x4f, 0x30, 0x0b, >=20 > + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30= , 0x0f, > 0x06, 0x03, 0x55, >=20 > + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff= , 0x30, > 0x1d, 0x06, 0x03, >=20 > + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa3, 0x01, 0x04, 0x7e, 0x30= , 0x88, > 0x33, 0xeb, 0xb9, >=20 > + 0x31, 0x9c, 0xca, 0xeb, 0x85, 0x76, 0x67, 0xfc, 0x65, 0xb4, 0xd1, 0x30= , 0x10, > 0x06, 0x09, 0x2b, >=20 > + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01= , 0x00, > 0x30, 0x0d, 0x06, >=20 > + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00= , 0x03, > 0x82, 0x02, 0x01, >=20 > + 0x00, 0x49, 0x8b, 0xc1, 0xfc, 0x4f, 0xe8, 0xe4, 0x2d, 0x67, 0x92, 0x9a= , 0x76, > 0x05, 0xba, 0xd1, >=20 > + 0xbc, 0x98, 0xe4, 0x2b, 0xba, 0x1f, 0x66, 0x5f, 0x66, 0x23, 0xcf, 0x1c= , 0x27, > 0xeb, 0xb4, 0xaa, >=20 > + 0xdd, 0xa0, 0x17, 0x20, 0x55, 0x72, 0x33, 0xb1, 0x76, 0xde, 0xc9, 0x6d= , 0x0d, > 0x3c, 0x2d, 0x0a, >=20 > + 0x08, 0x24, 0x2d, 0xec, 0x38, 0x96, 0x7a, 0x83, 0xf1, 0x27, 0x50, 0x3c= , 0x86, > 0x09, 0xdd, 0x0d, >=20 > + 0x41, 0xce, 0xaa, 0x5e, 0xf3, 0x8f, 0x7a, 0x3e, 0x3e, 0xf1, 0xf0, 0xba= , 0x8b, > 0x72, 0xdd, 0x36, >=20 > + 0xa1, 0x69, 0x05, 0x5b, 0x7c, 0xec, 0xe7, 0x70, 0x63, 0x8d, 0x1d, 0x6e= , 0xc0, > 0xfd, 0x3a, 0x03, >=20 > + 0xf1, 0x10, 0x3e, 0x90, 0xd7, 0x7b, 0x7a, 0xdc, 0xea, 0x60, 0xec, 0x2f= , 0x53, > 0xfd, 0x19, 0x1d, >=20 > + 0x3a, 0xa1, 0x74, 0x08, 0xc2, 0x7b, 0x3c, 0xe0, 0x50, 0xac, 0x21, 0xd7= , 0xb6, > 0xdd, 0xdd, 0x3c, >=20 > + 0x44, 0x1b, 0xf7, 0xf3, 0x44, 0x3e, 0x6c, 0x96, 0xe0, 0xc0, 0x9f, 0xe6= , 0xef, > 0xdd, 0xdd, 0xb1, >=20 > + 0xa6, 0x68, 0x61, 0x6c, 0x5e, 0x9e, 0xf9, 0xff, 0x9a, 0x06, 0xa4, 0x6a= , 0xcd, > 0x9e, 0x75, 0x43, >=20 > + 0x89, 0x9b, 0xcb, 0x85, 0xf6, 0xdc, 0x0c, 0x46, 0x4a, 0x8c, 0x9b, 0xac= , 0x11, > 0xa6, 0x63, 0x45, >=20 > + 0xfb, 0xfc, 0xde, 0x20, 0xee, 0xce, 0x67, 0x9f, 0x3d, 0xd0, 0x93, 0xdb= , 0x39, > 0xfb, 0xea, 0x5e, >=20 > + 0x4b, 0xfc, 0xd6, 0x20, 0xf1, 0x95, 0x36, 0x08, 0x8c, 0xb2, 0xb3, 0xa1= , 0x97, > 0x1b, 0x41, 0x19, >=20 > + 0xb0, 0xac, 0xfe, 0xe2, 0xd5, 0xab, 0x7d, 0xd9, 0x26, 0xd4, 0xdc, 0xbd= , 0x1f, > 0x38, 0xc0, 0xe3, >=20 > + 0x86, 0xdf, 0x24, 0xe7, 0xf5, 0x3e, 0x09, 0xca, 0x4d, 0xa1, 0xba, 0x16= , 0xc3, > 0x4a, 0xb1, 0xfc, >=20 > + 0x72, 0x98, 0xcf, 0x0e, 0x92, 0xfa, 0x57, 0x45, 0xe9, 0x48, 0x4d, 0xc6= , 0xa2, > 0x7c, 0x3b, 0x72, >=20 > + 0x63, 0xac, 0x4e, 0xf4, 0x74, 0xe9, 0x2b, 0x57, 0xac, 0xab, 0x32, 0x88= , 0x0b, > 0xa9, 0x10, 0x67, >=20 > + 0x53, 0x7e, 0xd2, 0x62, 0xd2, 0xfa, 0x68, 0xe8, 0x9d, 0x5b, 0xae, 0xcd= , 0xe0, > 0xe5, 0xe2, 0x06, >=20 > + 0x96, 0x0c, 0x34, 0x32, 0xf6, 0xbc, 0x25, 0xad, 0x98, 0xf3, 0x32, 0x60= , 0xbe, > 0x14, 0xd3, 0x78, >=20 > + 0xd1, 0x10, 0x6f, 0xff, 0x32, 0xe3, 0x9e, 0x3d, 0x88, 0xda, 0xb3, 0x32= , 0x0a, > 0xcf, 0x20, 0x65, >=20 > + 0x47, 0x78, 0xaa, 0xa5, 0x4b, 0x87, 0x6a, 0x83, 0xdc, 0x1a, 0x5a, 0x2a= , 0xdf, > 0x70, 0x61, 0xaf, >=20 > + 0x35, 0x32, 0xe0, 0x59, 0xa1, 0x9f, 0x0b, 0x14, 0x7a, 0xaa, 0xab, 0x42= , 0x0b, > 0x6b, 0xff, 0xfb, >=20 > + 0x34, 0xcb, 0x9d, 0x96, 0xd7, 0x26, 0x2a, 0x13, 0x3b, 0xe3, 0xdf, 0x11= , 0xe6, > 0x86, 0x7d, 0x0d, >=20 > + 0x09, 0x11, 0x93, 0x4b, 0xa4, 0xf6, 0xd2, 0x07, 0xc2, 0xcd, 0xc8, 0xbe= , 0xf5, > 0x67, 0xf7, 0xae, >=20 > + 0x05, 0xce, 0x16, 0xfe, 0x90, 0xc9, 0x4a, 0x98, 0x1b, 0x24, 0x69, 0x78= , 0x90, > 0xf9, 0x34, 0x8e, >=20 > + 0x37, 0xe8, 0x6e, 0x1d, 0xdc, 0xcf, 0x4f, 0xe7, 0xd2, 0x64, 0x40, 0x1d= , 0xc4, > 0x30, 0xba, 0xd5, >=20 > + 0x08, 0x88, 0x67, 0x4b, 0x0f, 0xb8, 0xe5, 0x59, 0xe9, 0x18, 0xd8, 0x0c= , 0x60, > 0x68, 0xae, 0x7f, >=20 > + 0xea, 0x91, 0x55, 0xbe, 0xeb, 0xf1, 0xa7, 0x8e, 0xd8, 0x5d, 0x50, 0x3e= , 0xbf, > 0xd5, 0x69, 0x57, >=20 > + 0x95, 0x8f, 0xa7, 0xff, 0xe4, 0x09, 0x3f, 0x08, 0x80, 0x97, 0x32, 0x42= , 0xb8, > 0x82, 0x43, 0x82, >=20 > + 0x6f, 0x8b, 0x0b, 0x93, 0xda, 0x19, 0xbf, 0x63, 0x4e, 0x5f, 0x9f, 0xed= , 0x2c, > 0x22, 0xb6, 0x20, >=20 > + 0x5f, 0x70, 0x44, 0xfa, 0x89, 0x59, 0x93, 0xb0, 0x7b, 0x12, 0x0f, 0x5e= , 0x62, > 0x62, 0x51, 0x11, >=20 > + 0xbd, 0xba, 0x5a, 0xd0, 0xce, 0xa1, 0xb6, 0xef, 0x80, 0x20, 0xe6, 0x73= , 0x4b, > 0x11, 0x06, 0x56, >=20 > + 0xe2, 0x0a >=20 > + }; >=20 > + >=20 > +// >=20 > +// OID ASN.1 Value for Hash Algorithms >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 HashOidValue[] =3D { >=20 > + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, // OBJ_md5 >=20 > + 0x2B, 0x0E, 0x03, 0x02, 0x1A, // OBJ_sha1 >=20 > + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, // OBJ_sha224 >=20 > + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, // OBJ_sha256 >=20 > + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, // OBJ_sha384 >=20 > + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, // OBJ_sha512 >=20 > + }; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyAuthenticodeVerify ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + >=20 > + // >=20 > + // Sample Code: Demonstrate how to check the Hash algorithm in PE/COFF > Authenticode. >=20 > + // According to PKCS#7 Definition: >=20 > + // SignedData ::=3D SEQUENCE { >=20 > + // version Version, >=20 > + // digestAlgorithms DigestAlgorithmIdentifiers, >=20 > + // contentInfo ContentInfo, >=20 > + // .... } >=20 > + // The DigestAlgorithmIdentifiers can be used to determine the hash > algorithm in PE/COFF hashing >=20 > + // This field has the fixed offset (+32) in final Authenticode ASN.= 1 data. >=20 > + // >=20 > + if (CompareMem (AuthenticodeWithSha1 + 32, &HashOidValue[8], 5) =3D=3D= 0) { >=20 > + // >=20 > + // Verify Authenticode signature. >=20 > + // The PeHash value should be calculated following MSFT's Authentico= de > Specification. >=20 > + // >=20 > + Status =3D AuthenticodeVerify ( >=20 > + AuthenticodeWithSha1, >=20 > + sizeof (AuthenticodeWithSha1), >=20 > + TestRootCert1, >=20 > + sizeof (TestRootCert1), >=20 > + PeSha1Hash, >=20 > + SHA1_DIGEST_SIZE >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + } >=20 > + >=20 > + if (CompareMem (AuthenticodeWithSha256 + 32, &HashOidValue[22], 9) =3D= =3D 0) > { >=20 > + Status =3D AuthenticodeVerify ( >=20 > + AuthenticodeWithSha256, >=20 > + sizeof (AuthenticodeWithSha256), >=20 > + TestRootCert2, >=20 > + sizeof (TestRootCert2), >=20 > + PeSha256Hash, >=20 > + SHA256_DIGEST_SIZE >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mAuthenticodeTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------------Class------= ---------------- > Function-----------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyAuthenticodeVerify()", > "CryptoPkg.BaseCryptLib.Authenticode", TestVerifyAuthenticodeVerify, > NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mAuthenticodeTestNum =3D ARRAY_SIZE(mAuthenticodeTest); >=20 > 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 >=20 > + This is defines the tests that will run on BaseCryptLib >=20 > + >=20 > + Copyright (c) Microsoft Corporation.
>=20 > + SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +SUITE_DESC mSuiteDesc[] =3D { >=20 > + // >=20 > + // Title--------------------------Package-------------------Sup--Tdn= ----TestNum---- > --------TestDesc >=20 > + // >=20 > + {"EKU verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mPkcs7EkuTestNum, mPkcs7EkuTest}, >=20 > + {"HASH verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mHashTestNum, mHashTest}, >=20 > + {"HMAC verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mHmacTestNum, mHmacTest}, >=20 > + {"BlockCipher verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mBlockCipherTestNum, mBlockCipherTest}, >=20 > + {"RSA verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mRsaTestNum, mRsaTest}, >=20 > + {"RSACert verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mRsaCertTestNum, mRsaCertTest}, >=20 > + {"PKCS7 verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mPkcs7TestNum, mPkcs7Test}, >=20 > + {"PKCS5 verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mPkcs5TestNum, mPkcs5Test}, >=20 > + {"Authenticode verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mAuthenticodeTestNum, mAuthenticodeTest}, >=20 > + {"ImageTimestamp verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mImageTimestampTestNum, mImageTimestampTest}, >=20 > + {"DH verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mDhTestNum, mDhTest}, >=20 > + {"PRNG verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mPrngTestNum, mPrngTest}, >=20 > + {"OAEP encrypt verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL= , > &mOaepTestNum, mOaepTest}, >=20 > +}; >=20 > + >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +CreateUnitTest ( >=20 > + IN CHAR8* UnitTestName, >=20 > + IN CHAR8* UnitTestVersion, >=20 > + IN OUT UNIT_TEST_FRAMEWORK_HANDLE* Framework >=20 > +) { >=20 > + EFI_STATUS Status; >=20 > + UINTN SuiteIndex; >=20 > + UINTN TestIndex; >=20 > + >=20 > + if ( Framework =3D=3D NULL || UnitTestVersion =3D=3D NULL || UnitTes= tName =3D=3D > NULL) { >=20 > + return EFI_INVALID_PARAMETER; >=20 > + } >=20 > + Status =3D EFI_SUCCESS; >=20 > + // >=20 > + // Start setting up the test framework for running the tests. >=20 > + // >=20 > + Status =3D InitUnitTestFramework (Framework, UnitTestName, > gEfiCallerBaseName, UnitTestVersion); >=20 > + if (EFI_ERROR (Status)) { >=20 > + DEBUG((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status =3D= %r\n", > Status)); >=20 > + goto EXIT; >=20 > + } >=20 > + >=20 > + for (SuiteIndex =3D 0; SuiteIndex < ARRAY_SIZE(mSuiteDesc); SuiteInd= ex++) { >=20 > + UNIT_TEST_SUITE_HANDLE Suite =3D NULL; >=20 > + Status =3D CreateUnitTestSuite (&Suite, *Framework, > mSuiteDesc[SuiteIndex].Title, mSuiteDesc[SuiteIndex].Package, > mSuiteDesc[SuiteIndex].Sup, mSuiteDesc[SuiteIndex].Tdn); >=20 > + if (EFI_ERROR (Status)) { >=20 > + Status =3D EFI_OUT_OF_RESOURCES; >=20 > + goto EXIT; >=20 > + } >=20 > + for (TestIndex =3D 0; TestIndex < *mSuiteDesc[SuiteIndex].TestNu= m; > TestIndex++) { >=20 > + AddTestCase (Suite, (mSuiteDesc[SuiteIndex].TestDesc + TestI= ndex)- > >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); >=20 > + } >=20 > + } >=20 > + EXIT: >=20 > + return Status; >=20 > +} >=20 > diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipherTest= s.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 >=20 > + Application for Block Cipher Primitives Validation. >=20 > + >=20 > +Copyright (c) 2010, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +// >=20 > +// TDES test vectors are extracted from OpenSSL 0.9.8l, crypto\des\deste= st.c >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbData[] =3D { >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbKey[] =3D { >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >=20 > + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbCipher[] =3D { >=20 > + 0x8C, 0xA6, 0x4D, 0xE9, 0xC1, 0xB1, 0x23, 0xA7, >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcb2Cipher[] =3D { >=20 > + 0x92, 0x95, 0xB5, 0x9B, 0xB3, 0x84, 0x73, 0x6E, >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbcData[] =3D { >=20 > + 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, >=20 > + 0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, >=20 > + 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbcKey[] =3D { >=20 > + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, >=20 > + 0xf1, 0xe0, 0xd3, 0xc2, 0xb5, 0xa4, 0x97, 0x86, >=20 > + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TdesCbcIvec[] =3D { >=20 > + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbc3Cipher[] =3D { >=20 > + 0x3F, 0xE3, 0x01, 0xC9, 0x62, 0xAC, 0x01, 0xD0, >=20 > + 0x22, 0x13, 0x76, 0x3C, 0x1C, 0xBD, 0x4C, 0xDC, >=20 > + 0x79, 0x96, 0x57, 0xC0, 0x64, 0xEC, 0xF5, 0xD4 >=20 > + }; >=20 > + >=20 > +// >=20 > +// AES test vectors are from NIST KAT of AES >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbData[] =3D { >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00= , 0x00, > 0x00, 0x00, 0x00 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbKey[] =3D { >=20 > + 0x10, 0xa5, 0x88, 0x69, 0xd7, 0x4b, 0xe5, 0xa3, 0x74, 0xcf, 0x86, 0x7c= , 0xfb, > 0x47, 0x38, 0x59 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbCipher[] =3D { >=20 > + 0x6d, 0x25, 0x1e, 0x69, 0x44, 0xb0, 0x51, 0xe0, 0x4e, 0xaa, 0x6f, 0xb4= , 0xdb, > 0xf7, 0x84, 0x65 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbData[] =3D { >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00= , 0x00, > 0x00, 0x00, 0x00 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbKey[] =3D { >=20 > + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff= , 0xff, 0xff, 0xff, > 0xff, >=20 > + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbCipher[] =3D { >=20 > + 0xdd, 0x8a, 0x49, 0x35, 0x14, 0x23, 0x1c, 0xbf, 0x56, 0xec, 0xce, 0xe4= , 0xc4, > 0x08, 0x89, 0xfb >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbData[] =3D { >=20 > + 0x01, 0x47, 0x30, 0xf8, 0x0a, 0xc6, 0x25, 0xfe, 0x84, 0xf0, 0x26, 0xc6= , 0x0b, > 0xfd, 0x54, 0x7d >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbKey[] =3D { >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00= , 0x00, > 0x00, 0x00, 0x00, >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00= , 0x00, > 0x00, 0x00, 0x00 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbCipher[] =3D { >=20 > + 0x5c, 0x9d, 0x84, 0x4e, 0xd4, 0x6f, 0x98, 0x85, 0x08, 0x5e, 0x5d, 0x6a= , 0x4f, > 0x94, 0xc7, 0xd7 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcData[] =3D { >=20 > + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b= , 0x0c, > 0x0d, 0x0e, 0x0f, >=20 > + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b= , 0x1c, > 0x1d, 0x1e, 0x1f >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcKey[] =3D { >=20 > + 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 0x61, 0x1b, 0xbb, 0x3e= , 0x20, > 0x25, 0xa4, 0x5a >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcIvec[] =3D { >=20 > + 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69= , 0x5a, > 0x2e, 0x6f, 0x58 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcCipher[] =3D { >=20 > + 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a, 0x3a, 0x86, 0x30, 0x28= , 0xb5, > 0xe1, 0xdc, 0x0a, >=20 > + 0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9, 0x1b, 0x82, 0x66, 0xbe= , 0xa6, > 0xd6, 0x1a, 0xb1 >=20 > + }; >=20 > + >=20 > +// >=20 > +// ARC4 Test Vector defined in "Appendix A.1 Test Vectors from [CRYPTLIB= ]" of >=20 > +// IETF Draft draft-kaukonen-cipher-arcfour-03 ("A Stream Cipher Encrypt= ion > Algorithm 'Arcfour'"). >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Data[] =3D { >=20 > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Key[] =3D { >=20 > + 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Cipher[] =3D { >=20 > + 0x74, 0x94, 0xC2, 0xE7, 0x10, 0x4B, 0x08, 0x79 >=20 > + }; >=20 > + >=20 > + >=20 > +typedef >=20 > +UINTN >=20 > +(EFIAPI *EFI_BLOCK_CIPHER_GET_CONTEXT_SIZE) ( >=20 > + VOID >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_BLOCK_CIPHER_INIT) ( >=20 > + OUT VOID *BlockCipherContext, >=20 > + IN CONST UINT8 *Key, >=20 > + IN UINTN KeyLength >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT) ( >=20 > + IN VOID *BlockCipherContext, >=20 > + IN CONST UINT8 *Input, >=20 > + IN UINTN InputSize, >=20 > + OUT UINT8 *Output >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT) ( >=20 > + IN VOID *BlockCipherContext, >=20 > + IN CONST UINT8 *Input, >=20 > + IN UINTN InputSize, >=20 > + IN CONST UINT8 *Ivec, >=20 > + OUT UINT8 *Output >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_BLOCK_CIPHER_RESET) ( >=20 > + IN OUT VOID *BlockCipherContext >=20 > + ); >=20 > + >=20 > +typedef struct { >=20 > + EFI_BLOCK_CIPHER_GET_CONTEXT_SIZE GetContextSize; >=20 > + EFI_BLOCK_CIPHER_INIT Init; >=20 > + EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT EcbEncrypt; >=20 > + EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT EcbDecrypt; >=20 > + EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT CbcEncrypt; >=20 > + EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT CbcDecrypt; >=20 > + EFI_BLOCK_CIPHER_RESET Reset; >=20 > + CONST UINT8 *Key; >=20 > + UINTN KeySize; >=20 > + CONST UINT8 *Ivec; >=20 > + CONST UINT8 *Data; >=20 > + UINTN DataSize; >=20 > + CONST UINT8 *Cipher; >=20 > + UINTN CipherSize; >=20 > + VOID *Ctx; >=20 > +} BLOCK_CIPHER_TEST_CONTEXT; >=20 > + >=20 > +// These are commented out as they are deprecated, but are left in shoul= d they > be used again >=20 > +//BLOCK_CIPHER_TEST_CONTEXT mTdesEcbTestCtx =3D {TdesGetContextSize, > TdesInit, TdesEcbEncrypt, TdesEcbDecrypt, NULL, NULL, = NULL, > TdesEcbKey, 64, NULL, TdesEcbData, 8, = TdesEcbCipher, > 8}; >=20 > +//BLOCK_CIPHER_TEST_CONTEXT mTdesCbcTestCtx =3D {TdesGetContextSize, > TdesInit, NULL, NULL, TdesCbcEncrypt, TdesCbcDecrypt,= NULL, > TdesCbcKey, 192, TdesCbcIvec, TdesCbcData, sizeof(TdesC= bcData), > TdesCbc3Cipher, sizeof(TdesCbc3Cipher)}; >=20 > +//BLOCK_CIPHER_TEST_CONTEXT mAes128EcbTestCtx =3D {AesGetContextSize, > AesInit, AesEcbEncrypt, AesEcbDecrypt, NULL, NULL, = NULL, > Aes128EcbKey, 128, NULL, Aes128EcbData, sizeof(Aes12= 8EcbData), > Aes128EcbCipher, sizeof(Aes128EcbCipher)}; >=20 > +//BLOCK_CIPHER_TEST_CONTEXT mAes192EcbTestCtx =3D {AesGetContextSize, > AesInit, AesEcbEncrypt, AesEcbDecrypt, NULL, NULL, = NULL, > Aes192EcbKey, 192, NULL, Aes192EcbData, sizeof(Aes19= 2EcbData), > Aes192EcbCipher, sizeof(Aes192EcbCipher)}; >=20 > +//BLOCK_CIPHER_TEST_CONTEXT mAes256EcbTestCtx =3D {AesGetContextSize, > AesInit, AesEcbEncrypt, AesEcbDecrypt, NULL, NULL, = NULL, > Aes256EcbKey, 256, NULL, Aes256EcbData, sizeof(Aes25= 6EcbData), > Aes256EcbCipher, sizeof(Aes256EcbCipher)}; >=20 > +//BLOCK_CIPHER_TEST_CONTEXT mArc4TestCtx =3D {Arc4GetContextSize, > Arc4Init, Arc4Encrypt, (EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT), > Arc4Decrypt, NULL, NULL, Arc4Reset, Arc4Key, = sizeof(Arc4Key), > NULL, Arc4Data, sizeof(Arc4Data), Arc4Cipher, siz= eof(Arc4Cipher)}; >=20 > +BLOCK_CIPHER_TEST_CONTEXT mAes128CbcTestCtx =3D {AesGetContextSize, > AesInit, NULL, NULL, AesCbcEncrypt, AesCbcDecrypt, = NULL, > Aes128CbcKey, 128, Aes128CbcIvec, Aes128CbcData, > sizeof(Aes128CbcData), Aes128CbcCipher, sizeof(Aes128CbcCipher)}; >=20 > + >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyBLockCiperPreReq ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BLOCK_CIPHER_TEST_CONTEXT *TestContext; >=20 > + UINTN CtxSize; >=20 > + >=20 > + TestContext =3D Context; >=20 > + CtxSize =3D TestContext->GetContextSize (); >=20 > + TestContext->Ctx =3D AllocatePool (CtxSize); >=20 > + if (TestContext->Ctx =3D=3D NULL) { >=20 > + return UNIT_TEST_ERROR_TEST_FAILED; >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +VOID >=20 > +EFIAPI >=20 > +TestVerifyBLockCiperCleanUp ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BLOCK_CIPHER_TEST_CONTEXT *TestContext; >=20 > + >=20 > + TestContext =3D Context; >=20 > + if (TestContext->Ctx !=3D NULL) { >=20 > + FreePool (TestContext->Ctx); >=20 > + } >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyBLockCiper ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + UINT8 Encrypt[256]; >=20 > + UINT8 Decrypt[256]; >=20 > + BOOLEAN Status; >=20 > + BLOCK_CIPHER_TEST_CONTEXT *TestContext; >=20 > + >=20 > + TestContext =3D Context; >=20 > + >=20 > + ZeroMem (Encrypt, sizeof (Encrypt)); >=20 > + ZeroMem (Decrypt, sizeof (Decrypt)); >=20 > + >=20 > + Status =3D TestContext->Init (TestContext->Ctx, TestContext->Key, Test= Context- > >KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + if (TestContext->Ivec =3D=3D NULL) { >=20 > + Status =3D TestContext->EcbEncrypt (TestContext->Ctx, TestContext->D= ata, > TestContext->DataSize, Encrypt); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + if (TestContext->Reset !=3D NULL) { >=20 > + Status =3D TestContext->Reset (TestContext->Ctx); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + } >=20 > + >=20 > + Status =3D TestContext->EcbDecrypt (TestContext->Ctx, Encrypt, TestC= ontext- > >DataSize, Decrypt); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + } else { >=20 > + Status =3D TestContext->CbcEncrypt (TestContext->Ctx, TestContext->D= ata, > TestContext->DataSize, TestContext->Ivec, Encrypt); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + if (TestContext->Reset !=3D NULL) { >=20 > + Status =3D TestContext->Reset (TestContext->Ctx); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + } >=20 > + >=20 > + Status =3D TestContext->CbcDecrypt (TestContext->Ctx, Encrypt, TestC= ontext- > >DataSize, TestContext->Ivec, Decrypt); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + } >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (Encrypt, TestContext->Cipher, TestContext- > >CipherSize); >=20 > + UT_ASSERT_MEM_EQUAL (Decrypt, TestContext->Data, TestContext- > >DataSize); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mBlockCipherTest[] =3D { >=20 > + // >=20 > + // -----Description-------------------------Class-------------------= ------Function----- > ----------Pre---------------------------Post------------------Context >=20 > + // >=20 > + {"TestVerifyAes128Cbc()", "CryptoPkg.BaseCryptLib.BlockCipher", > TestVerifyBLockCiper, TestVerifyBLockCiperPreReq, > TestVerifyBLockCiperCleanUp, &mAes128CbcTestCtx}, >=20 > + // These are commented out as these functions have been deprecated, = but > they have been left in for future reference >=20 > + //{"TestVerifyTdesEcb()", "CryptoPkg.BaseCryptLib.BlockCipher", > TestVerifyBLockCiper, TestVerifyBLockCiperPreReq, > TestVerifyBLockCiperCleanUp, &mTdesEcbTestCtx}, >=20 > + //{"TestVerifyTdesCbc()", "CryptoPkg.BaseCryptLib.BlockCipher", > TestVerifyBLockCiper, TestVerifyBLockCiperPreReq, > TestVerifyBLockCiperCleanUp, &mTdesCbcTestCtx}, >=20 > + //{"TestVerifyAes128Ecb()", "CryptoPkg.BaseCryptLib.BlockCipher", > TestVerifyBLockCiper, TestVerifyBLockCiperPreReq, > TestVerifyBLockCiperCleanUp, &mAes128EcbTestCtx}, >=20 > + //{"TestVerifyAes192Ecb()", "CryptoPkg.BaseCryptLib.BlockCipher", > TestVerifyBLockCiper, TestVerifyBLockCiperPreReq, > TestVerifyBLockCiperCleanUp, &mAes192EcbTestCtx}, >=20 > + //{"TestVerifyAes256Ecb()", "CryptoPkg.BaseCryptLib.BlockCipher", > TestVerifyBLockCiper, TestVerifyBLockCiperPreReq, > TestVerifyBLockCiperCleanUp, &mAes256EcbTestCtx}, >=20 > + //{"TestVerifyArc4()", "CryptoPkg.BaseCryptLib.BlockCipher", > TestVerifyBLockCiper, TestVerifyBLockCiperPreReq, > TestVerifyBLockCiperCleanUp, &mArc4TestCtx}, >=20 > +}; >=20 > + >=20 > +UINTN mBlockCipherTestNum =3D ARRAY_SIZE(mBlockCipherTest); >=20 > 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 >=20 > + Application for Diffie-Hellman Primitives Validation. >=20 > + >=20 > +Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +VOID *mDh1; >=20 > +VOID *mDh2; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyDhPreReq ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + mDh1 =3D DhNew (); >=20 > + if (mDh1 =3D=3D NULL) { >=20 > + return UNIT_TEST_ERROR_TEST_FAILED; >=20 > + } >=20 > + >=20 > + mDh2 =3D DhNew (); >=20 > + if (mDh2 =3D=3D NULL) { >=20 > + return UNIT_TEST_ERROR_TEST_FAILED; >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +VOID >=20 > +EFIAPI >=20 > +TestVerifyDhCleanUp ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + if (mDh1 !=3D NULL) { >=20 > + DhFree (mDh1); >=20 > + mDh1 =3D NULL; >=20 > + } >=20 > + if (mDh2 !=3D NULL) { >=20 > + DhFree (mDh2); >=20 > + mDh2 =3D NULL; >=20 > + } >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyDhGenerateKey ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + UINT8 Prime[64]; >=20 > + UINT8 PublicKey1[64]; >=20 > + UINTN PublicKey1Length; >=20 > + UINT8 PublicKey2[64]; >=20 > + UINTN PublicKey2Length; >=20 > + UINT8 Key1[64]; >=20 > + UINTN Key1Length; >=20 > + UINT8 Key2[64]; >=20 > + UINTN Key2Length; >=20 > + BOOLEAN Status; >=20 > + >=20 > + // >=20 > + // Initialize Key Length >=20 > + // >=20 > + PublicKey1Length =3D sizeof (PublicKey1); >=20 > + PublicKey2Length =3D sizeof (PublicKey2); >=20 > + Key1Length =3D sizeof (Key1); >=20 > + Key2Length =3D sizeof (Key2); >=20 > + >=20 > + Status =3D DhGenerateParameter (mDh1, 2, 64, Prime); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D DhSetParameter (mDh2, 2, 64, Prime); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D DhGenerateKey (mDh1, PublicKey1, &PublicKey1Length); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D DhGenerateKey (mDh2, PublicKey2, &PublicKey2Length); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D DhComputeKey (mDh1, PublicKey2, PublicKey2Length, Key1, > &Key1Length); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D DhComputeKey (mDh2, PublicKey1, PublicKey1Length, Key2, > &Key2Length); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + UT_ASSERT_EQUAL (Key1Length, Key2Length); >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (Key1, Key2, Key1Length); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mDhTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------Class------------= ---------Function-- > --------------Pre-----------------Post------------Context >=20 > + // >=20 > + {"TestVerifyDhGenerateKey()", "CryptoPkg.BaseCryptLib.Dh", > TestVerifyDhGenerateKey, TestVerifyDhPreReq, TestVerifyDhCleanUp, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mDhTestNum =3D ARRAY_SIZE(mDhTest); >=20 > 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 >=20 > + Application for Hash Primitives Validation. >=20 > + >=20 > +Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +// >=20 > +// Max Known Digest Size is SHA512 Output (64 bytes) by far >=20 > +// >=20 > +#define MAX_DIGEST_SIZE 64 >=20 > + >=20 > +// >=20 > +// Message string for digest validation >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *HashData =3D "abc"; >=20 > + >=20 > +// >=20 > +// Result for MD5("abc"). (From "A.5 Test suite" of IETF RFC1321) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 > Md5Digest[MD5_DIGEST_SIZE] =3D { >=20 > + 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0, 0xd6, 0x96, 0x3f, 0x7d= , 0x28, > 0xe1, 0x7f, 0x72 >=20 > + >=20 > + }; >=20 > + >=20 > +// >=20 > +// Result for SHA-1("abc"). (From "A.1 SHA-1 Example" of NIST FIPS 180-2= ) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 > Sha1Digest[SHA1_DIGEST_SIZE] =3D { >=20 > + 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e, 0x25, 0x71= , 0x78, > 0x50, 0xc2, 0x6c, >=20 > + 0x9c, 0xd0, 0xd8, 0x9d >=20 > + }; >=20 > + >=20 > +// >=20 > +// Result for SHA-256("abc"). (From "B.1 SHA-256 Example" of NIST FIPS 1= 80-2) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 > Sha256Digest[SHA256_DIGEST_SIZE] =3D { >=20 > + 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde= , 0x5d, > 0xae, 0x22, 0x23, >=20 > + 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10, 0xff, 0x61= , 0xf2, > 0x00, 0x15, 0xad >=20 > + }; >=20 > + >=20 > +// >=20 > +// Result for SHA-384("abc"). (From "D.1 SHA-384 Example" of NIST FIPS 1= 80-2) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 > Sha384Digest[SHA384_DIGEST_SIZE] =3D { >=20 > + 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b, 0xb5, 0xa0, 0x3d, 0x69= , 0x9a, > 0xc6, 0x50, 0x07, >=20 > + 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63, 0x1a, 0x8b, 0x60, 0x5a= , 0x43, > 0xff, 0x5b, 0xed, >=20 > + 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23, 0x58, 0xba, 0xec, 0xa1= , 0x34, > 0xc8, 0x25, 0xa7 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Result for SHA-512("abc"). (From "C.1 SHA-512 Example" of NIST FIPS 1= 80-2) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 > Sha512Digest[SHA512_DIGEST_SIZE] =3D { >=20 > + 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 0xcc, 0x41, 0x73, 0x49= , 0xae, > 0x20, 0x41, 0x31, >=20 > + 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, 0x0a, 0x9e, 0xee, 0xe6= , 0x4b, > 0x55, 0xd3, 0x9a, >=20 > + 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, 0x36, 0xba, 0x3c, 0x23= , 0xa3, > 0xfe, 0xeb, 0xbd, >=20 > + 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, 0x2a, 0x9a, 0xc9, 0x4f= , 0xa5, > 0x4c, 0xa4, 0x9f >=20 > + }; >=20 > + >=20 > +typedef >=20 > +UINTN >=20 > +(EFIAPI *EFI_HASH_GET_CONTEXT_SIZE) ( >=20 > + VOID >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_HASH_INIT) ( >=20 > + OUT VOID *HashContext >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_HASH_UPDATE) ( >=20 > + IN OUT VOID *HashContext, >=20 > + IN CONST VOID *Data, >=20 > + IN UINTN DataSize >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_HASH_FINAL) ( >=20 > + IN OUT VOID *HashContext, >=20 > + OUT UINT8 *HashValue >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_HASH_ALL) ( >=20 > + IN CONST VOID *Data, >=20 > + IN UINTN DataSize, >=20 > + OUT UINT8 *HashValue >=20 > + ); >=20 > + >=20 > +typedef struct { >=20 > + UINT32 DigestSize; >=20 > + EFI_HASH_GET_CONTEXT_SIZE GetContextSize; >=20 > + EFI_HASH_INIT HashInit; >=20 > + EFI_HASH_UPDATE HashUpdate; >=20 > + EFI_HASH_FINAL HashFinal; >=20 > + EFI_HASH_ALL HashAll; >=20 > + CONST UINT8 *Digest; >=20 > + VOID *HashCtx; >=20 > +} HASH_TEST_CONTEXT; >=20 > + >=20 > +HASH_TEST_CONTEXT mMd5TestCtx =3D {MD5_DIGEST_SIZE, > Md5GetContextSize, Md5Init, Md5Update, Md5Final, Md5HashAll, > Md5Digest}; >=20 > +HASH_TEST_CONTEXT mSha1TestCtx =3D {SHA1_DIGEST_SIZE, > Sha1GetContextSize, Sha1Init, Sha1Update, Sha1Final, Sha1HashAll, > Sha1Digest}; >=20 > +HASH_TEST_CONTEXT mSha256TestCtx =3D {SHA256_DIGEST_SIZE, > Sha256GetContextSize, Sha256Init, Sha256Update, Sha256Final, Sha256HashAl= l, > Sha256Digest}; >=20 > +HASH_TEST_CONTEXT mSha384TestCtx =3D {SHA384_DIGEST_SIZE, > Sha384GetContextSize, Sha384Init, Sha384Update, Sha384Final, Sha384HashAl= l, > Sha384Digest}; >=20 > +HASH_TEST_CONTEXT mSha512TestCtx =3D {SHA512_DIGEST_SIZE, > Sha512GetContextSize, Sha512Init, Sha512Update, Sha512Final, Sha512HashAl= l, > Sha512Digest}; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyHashPreReq ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + HASH_TEST_CONTEXT *HashTestContext; >=20 > + UINTN CtxSize; >=20 > + >=20 > + HashTestContext =3D Context; >=20 > + CtxSize =3D HashTestContext->GetContextSize (); >=20 > + HashTestContext->HashCtx =3D AllocatePool (CtxSize); >=20 > + if (HashTestContext->HashCtx =3D=3D NULL) { >=20 > + return UNIT_TEST_ERROR_TEST_FAILED; >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +VOID >=20 > +EFIAPI >=20 > +TestVerifyHashCleanUp ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + HASH_TEST_CONTEXT *HashTestContext; >=20 > + >=20 > + HashTestContext =3D Context; >=20 > + if (HashTestContext->HashCtx !=3D NULL) { >=20 > + FreePool (HashTestContext->HashCtx); >=20 > + } >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyHash ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + UINTN DataSize; >=20 > + UINT8 Digest[MAX_DIGEST_SIZE]; >=20 > + BOOLEAN Status; >=20 > + HASH_TEST_CONTEXT *HashTestContext; >=20 > + >=20 > + HashTestContext =3D Context; >=20 > + >=20 > + DataSize =3D AsciiStrLen (HashData); >=20 > + >=20 > + ZeroMem (Digest, MAX_DIGEST_SIZE); >=20 > + >=20 > + Status =3D HashTestContext->HashInit (HashTestContext->HashCtx); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D HashTestContext->HashUpdate (HashTestContext->HashCtx, > HashData, DataSize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D HashTestContext->HashFinal (HashTestContext->HashCtx, Dige= st); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (Digest, HashTestContext->Digest, > HashTestContext->DigestSize); >=20 > + >=20 > + ZeroMem (Digest, MAX_DIGEST_SIZE); >=20 > + Status =3D HashTestContext->HashAll (HashData, DataSize, Digest); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (Digest, HashTestContext->Digest, > HashTestContext->DigestSize); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mHashTest[] =3D { >=20 > + // >=20 > + // -----Description----------------Class---------------------Functio= n--------------- > Pre------------------Post------------Context >=20 > + // >=20 > + {"TestVerifyMd5()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHa= sh, > TestVerifyHashPreReq, TestVerifyHashCleanUp, &mMd5TestCtx}, >=20 > + {"TestVerifySha1()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHa= sh, > TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha1TestCtx}, >=20 > + {"TestVerifySha256()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHa= sh, > TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha256TestCtx}, >=20 > + {"TestVerifySha384()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHa= sh, > TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha384TestCtx}, >=20 > + {"TestVerifySha512()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHa= sh, > TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha512TestCtx}, >=20 > +}; >=20 > + >=20 > +UINTN mHashTestNum =3D ARRAY_SIZE(mHashTest); >=20 > 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 >=20 > + Application for HMAC Primitives Validation. >=20 > + >=20 > +Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +// >=20 > +// Max Known Digest Size is SHA512 Output (64 bytes) by far >=20 > +// >=20 > +#define MAX_DIGEST_SIZE 64 >=20 > + >=20 > +// >=20 > +// Data string for HMAC validation >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *HmacData =3D "Hi There"; >=20 > + >=20 > +// >=20 > +// Key value for HMAC-MD5 validation. (From "2. Test Cases for HMAC-MD5" > of IETF RFC2202) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacMd5Key[16] =3D { >=20 > + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b= , 0x0b, > 0x0b, 0x0b, 0x0b >=20 > + }; >=20 > + >=20 > +// >=20 > +// Result for HMAC-MD5("Hi There"). (From "2. Test Cases for HMAC-MD5" o= f > IETF RFC2202) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacMd5Digest[] =3D { >=20 > + 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 0x13, 0xf4, 0x8e, 0xf8= , 0x15, > 0x8b, 0xfc, 0x9d >=20 > + }; >=20 > + >=20 > +// >=20 > +// Key value for HMAC-SHA-1 validation. (From "3. Test Cases for HMAC-SH= A- > 1" of IETF RFC2202) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha1Key[20] =3D { >=20 > + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b= , 0x0b, > 0x0b, 0x0b, 0x0b, >=20 > + 0x0b, 0x0b, 0x0b, 0x0b >=20 > + }; >=20 > + >=20 > +// >=20 > +// Result for HMAC-SHA-1 ("Hi There"). (From "3. Test Cases for HMAC-SHA= -1" > of IETF RFC2202) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha1Digest[] =3D { >=20 > + 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 0xe2, 0x8b, 0xc0, 0xb6= , 0xfb, > 0x37, 0x8c, 0x8e, >=20 > + 0xf1, 0x46, 0xbe, 0x00 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Key value for HMAC-SHA-256 validation. (From "4. Test Vectors" of IET= F > RFC4231) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha256Key[20] =3D { >=20 > + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b= , 0x0b, > 0x0b, 0x0b, 0x0b, >=20 > + 0x0b, 0x0b, 0x0b, 0x0b >=20 > + }; >=20 > + >=20 > +// >=20 > +// Result for HMAC-SHA-256 ("Hi There"). (From "4. Test Vectors" of IETF > RFC4231) >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha256Digest[] =3D { >=20 > + 0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, 0x5c, 0xa8, 0xaf, 0xce= , 0xaf, > 0x0b, 0xf1, 0x2b, >=20 > + 0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7, 0x26, 0xe9, 0x37, 0x6c= , 0x2e, > 0x32, 0xcf, 0xf7 >=20 > + }; >=20 > + >=20 > +typedef >=20 > +VOID* >=20 > +(EFIAPI *EFI_HMAC_NEW) ( >=20 > + VOID >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_HMAC_INIT) ( >=20 > + IN OUT VOID *HashContext, >=20 > + IN CONST UINT8 *Key, >=20 > + IN UINTN KeySize >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_HMAC_UPDATE) ( >=20 > + IN OUT VOID *HashContext, >=20 > + IN CONST VOID *Data, >=20 > + IN UINTN DataSize >=20 > + ); >=20 > + >=20 > +typedef >=20 > +BOOLEAN >=20 > +(EFIAPI *EFI_HMAC_FINAL) ( >=20 > + IN OUT VOID *HashContext, >=20 > + OUT UINT8 *HashValue >=20 > + ); >=20 > + >=20 > +typedef struct { >=20 > + UINT32 DigestSize; >=20 > + EFI_HMAC_NEW HmacNew; >=20 > + EFI_HMAC_INIT HmacInit; >=20 > + EFI_HMAC_UPDATE HmacUpdate; >=20 > + EFI_HMAC_FINAL HmacFinal; >=20 > + CONST UINT8 *Key; >=20 > + UINTN KeySize; >=20 > + CONST UINT8 *Digest; >=20 > + VOID *HmacCtx; >=20 > +} HMAC_TEST_CONTEXT; >=20 > + >=20 > +// These functions have been deprecated but they've been left commented = out > for future reference >=20 > +//HMAC_TEST_CONTEXT mHmacMd5TestCtx =3D {MD5_DIGEST_SIZE, > HmacMd5New, HmacMd5SetKey, HmacMd5Update, HmacMd5Final, > HmacMd5Key, sizeof(HmacMd5Key), HmacMd5Digest}; >=20 > +//HMAC_TEST_CONTEXT mHmacSha1TestCtx =3D {SHA1_DIGEST_SIZE, > HmacSha1New, HmacSha1SetKey, HmacSha1Update, HmacSha1Final, > HmacSha1Key, sizeof(HmacSha1Key), HmacSha1Digest}; >=20 > +HMAC_TEST_CONTEXT mHmacSha256TestCtx =3D {SHA256_DIGEST_SIZE, > HmacSha256New, HmacSha256SetKey, HmacSha256Update, HmacSha256Final, > HmacSha256Key, sizeof(HmacSha256Key), HmacSha256Digest}; >=20 > + >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyHmacPreReq ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + HMAC_TEST_CONTEXT *HmacTestContext; >=20 > + >=20 > + HmacTestContext =3D Context; >=20 > + HmacTestContext->HmacCtx =3D HmacTestContext->HmacNew(); >=20 > + if (HmacTestContext->HmacCtx =3D=3D NULL) { >=20 > + return UNIT_TEST_ERROR_TEST_FAILED; >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +VOID >=20 > +EFIAPI >=20 > +TestVerifyHmacCleanUp ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + HMAC_TEST_CONTEXT *HmacTestContext; >=20 > + >=20 > + HmacTestContext =3D Context; >=20 > + if (HmacTestContext->HmacCtx !=3D NULL) { >=20 > + FreePool (HmacTestContext->HmacCtx); >=20 > + } >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyHmac ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + UINT8 Digest[MAX_DIGEST_SIZE]; >=20 > + BOOLEAN Status; >=20 > + HMAC_TEST_CONTEXT *HmacTestContext; >=20 > + >=20 > + HmacTestContext =3D Context; >=20 > + >=20 > + ZeroMem (Digest, MAX_DIGEST_SIZE); >=20 > + >=20 > + Status =3D HmacTestContext->HmacInit (HmacTestContext->HmacCtx, > HmacTestContext->Key, HmacTestContext->KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D HmacTestContext->HmacUpdate (HmacTestContext->HmacCtx, > HmacData, 8); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D HmacTestContext->HmacFinal (HmacTestContext->HmacCtx, Dige= st); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (Digest, HmacTestContext->Digest, > HmacTestContext->DigestSize); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mHmacTest[] =3D { >=20 > + // >=20 > + // -----Description---------------------Class---------------------Fu= nction------------- > --Pre------------------Post------------Context >=20 > + // >=20 > + {"TestVerifyHmacSha256()", "CryptoPkg.BaseCryptLib.Hmac", > TestVerifyHmac, TestVerifyHmacPreReq, TestVerifyHmacCleanUp, > &mHmacSha256TestCtx}, >=20 > + // These functions have been deprecated but they've been left commen= ted > out for future reference >=20 > + //{"TestVerifyHmacMd5()", "CryptoPkg.BaseCryptLib.Hmac", > TestVerifyHmac, TestVerifyHmacPreReq, TestVerifyHmacCleanUp, > &mHmacMd5TestCtx}, >=20 > + //{"TestVerifyHmacSha1()", "CryptoPkg.BaseCryptLib.Hmac", > TestVerifyHmac, TestVerifyHmacPreReq, TestVerifyHmacCleanUp, > &mHmacSha1TestCtx}, >=20 > + >=20 > +}; >=20 > + >=20 > +UINTN mHmacTestNum =3D ARRAY_SIZE(mHmacTest); >=20 > diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTest= s.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 >=20 > + This is a unit test for RSA OAEP encrypt. >=20 > + >=20 > + Copyright (c) 2019, Intel Corporation. All rights reserved.
>=20 > + SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +CONST UINT8 RandSeed[] =3D "This is the random seed for PRNG verificat= ion."; >=20 > + >=20 > +// >=20 > +// Self signed X509 certificate >=20 > +// CN =3D ca.self >=20 > +// O =3D Intel >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 SelfTestCert[] =3D { >=20 > + 0x30, 0x82, 0x03, 0x90, 0x30, 0x82, 0x02, 0x78, 0x02, 0x09, 0x00, 0xE4= , 0xDF, > 0x47, 0x80, 0xEF, >=20 > + 0x4B, 0x3C, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7= , 0x0D, > 0x01, 0x01, 0x0B, >=20 > + 0x05, 0x00, 0x30, 0x81, 0x89, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55= , 0x04, > 0x06, 0x13, 0x02, >=20 > + 0x43, 0x4E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C= , 0x08, > 0x53, 0x68, 0x61, >=20 > + 0x6E, 0x67, 0x48, 0x61, 0x69, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55= , 0x04, > 0x07, 0x0C, 0x08, >=20 > + 0x53, 0x68, 0x61, 0x6E, 0x67, 0x48, 0x61, 0x69, 0x31, 0x0E, 0x30, 0x0C= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x0A, 0x0C, 0x05, 0x49, 0x6E, 0x74, 0x65, 0x6C, 0x31, 0x0C, 0x30, 0x0A= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x0B, 0x0C, 0x03, 0x46, 0x49, 0x45, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x07, 0x63, 0x61, 0x2E, 0x73, 0x65, 0x6C, 0x66, 0x31, 0x24, 0x30, 0x22= , 0x06, > 0x09, 0x2A, 0x86, >=20 > + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x15, 0x7A, 0x68, 0x69= , 0x63, > 0x68, 0x61, 0x6F, >=20 > + 0x2E, 0x67, 0x61, 0x6F, 0x40, 0x69, 0x6E, 0x74, 0x65, 0x6C, 0x2E, 0x63= , 0x6F, > 0x6D, 0x30, 0x1E, >=20 > + 0x17, 0x0D, 0x31, 0x39, 0x30, 0x33, 0x32, 0x37, 0x30, 0x35, 0x35, 0x37= , 0x30, > 0x39, 0x5A, 0x17, >=20 > + 0x0D, 0x32, 0x30, 0x30, 0x33, 0x32, 0x36, 0x30, 0x35, 0x35, 0x37, 0x30= , 0x39, > 0x5A, 0x30, 0x81, >=20 > + 0x89, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02= , 0x43, > 0x4E, 0x31, 0x11, >=20 > + 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x08, 0x53, 0x68, 0x61= , 0x6E, > 0x67, 0x48, 0x61, >=20 > + 0x69, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x08= , 0x53, > 0x68, 0x61, 0x6E, >=20 > + 0x67, 0x48, 0x61, 0x69, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04= , 0x0A, > 0x0C, 0x05, 0x49, >=20 > + 0x6E, 0x74, 0x65, 0x6C, 0x31, 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55, 0x04= , 0x0B, > 0x0C, 0x03, 0x46, >=20 > + 0x49, 0x45, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C= , 0x07, > 0x63, 0x61, 0x2E, >=20 > + 0x73, 0x65, 0x6C, 0x66, 0x31, 0x24, 0x30, 0x22, 0x06, 0x09, 0x2A, 0x86= , 0x48, > 0x86, 0xF7, 0x0D, >=20 > + 0x01, 0x09, 0x01, 0x16, 0x15, 0x7A, 0x68, 0x69, 0x63, 0x68, 0x61, 0x6F= , 0x2E, > 0x67, 0x61, 0x6F, >=20 > + 0x40, 0x69, 0x6E, 0x74, 0x65, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x82= , 0x01, > 0x22, 0x30, 0x0D, >=20 > + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05= , 0x00, > 0x03, 0x82, 0x01, >=20 > + 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xBC= , 0xE4, > 0x67, 0xDC, 0xC7, >=20 > + 0xEA, 0x6F, 0x8A, 0xA7, 0xCC, 0xB2, 0x54, 0x47, 0x48, 0x6A, 0xE2, 0x39= , 0xFF, > 0xC2, 0x48, 0x58, >=20 > + 0x34, 0x07, 0x03, 0x6D, 0x39, 0xB3, 0x67, 0x46, 0x4C, 0xBC, 0xA0, 0xFA= , 0x4E, > 0x64, 0x23, 0x56, >=20 > + 0x47, 0x7B, 0xC9, 0x1A, 0x2A, 0x55, 0x42, 0x54, 0x10, 0x18, 0x30, 0x92= , 0x60, > 0x30, 0x5B, 0x9E, >=20 > + 0xC0, 0x65, 0xD2, 0xD4, 0x05, 0x4A, 0xA6, 0x10, 0x66, 0x04, 0xA9, 0x54= , 0x4E, > 0xEE, 0x49, 0x39, >=20 > + 0x43, 0x65, 0x1E, 0x2E, 0x28, 0xDE, 0x79, 0x24, 0xA9, 0x7E, 0xD8, 0x5B= , 0xBC, > 0x2F, 0x46, 0x6A, >=20 > + 0xB7, 0xB6, 0x0D, 0x17, 0x88, 0x37, 0x52, 0x5C, 0xFE, 0x93, 0xC0, 0xE2= , 0xFD, > 0x6A, 0x08, 0x1B, >=20 > + 0xFB, 0xD1, 0x87, 0xBD, 0xBD, 0x58, 0x57, 0x2C, 0x06, 0x5D, 0xD2, 0x7D= , > 0x52, 0xE2, 0x49, 0x8E, >=20 > + 0xDC, 0xE5, 0x26, 0xBD, 0x92, 0x60, 0xB0, 0x3F, 0x58, 0x5E, 0x52, 0xD7= , 0x91, > 0xDA, 0x93, 0x62, >=20 > + 0x8D, 0x71, 0x80, 0x53, 0xBA, 0x15, 0xC4, 0x1F, 0xF3, 0xBD, 0xE0, 0xC5= , 0xA4, > 0xB8, 0xD3, 0x64, >=20 > + 0x12, 0x14, 0x1B, 0x11, 0x6B, 0x7B, 0xC2, 0x92, 0xC7, 0xE2, 0x94, 0x0B= , 0xB8, > 0x67, 0x38, 0x48, >=20 > + 0x63, 0x11, 0x74, 0x25, 0x7C, 0x37, 0xC3, 0xB2, 0xAE, 0xD9, 0xA7, 0x17= , 0x9C, > 0x4B, 0x9D, 0x6C, >=20 > + 0x27, 0xB0, 0x87, 0x16, 0x6B, 0xF2, 0x96, 0xE5, 0x1D, 0x37, 0x27, 0xDE= , 0xF2, > 0x98, 0xB7, 0x81, >=20 > + 0x08, 0xD9, 0x7A, 0xBA, 0x84, 0x14, 0x61, 0x60, 0x48, 0xCE, 0xCE, 0x51= , 0x73, > 0xF4, 0xDB, 0xF1, >=20 > + 0x5F, 0x7A, 0x17, 0x71, 0x4F, 0xC1, 0x0B, 0xCE, 0xC7, 0x31, 0xC1, 0x4E= , 0xA3, > 0xEE, 0x6F, 0x72, >=20 > + 0x97, 0x90, 0xFB, 0x8B, 0x54, 0x9F, 0x82, 0x5B, 0x48, 0x5A, 0xF1, 0xAD= , 0x8B, > 0x3A, 0xCD, 0xCA, >=20 > + 0xB2, 0x8B, 0x7A, 0x53, 0xD4, 0xF7, 0x71, 0x16, 0x75, 0xA7, 0x35, 0x02= , 0x03, > 0x01, 0x00, 0x01, >=20 > + 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01= , 0x0B, > 0x05, 0x00, 0x03, >=20 > + 0x82, 0x01, 0x01, 0x00, 0x78, 0x64, 0xCD, 0x6F, 0xC0, 0xF9, 0xE7, 0xAB= , 0x19, > 0x0B, 0xA4, 0x92, >=20 > + 0x88, 0xD7, 0xE3, 0xC4, 0x9C, 0xCF, 0xF2, 0x49, 0xFC, 0xCE, 0x8C, 0xEC= , 0x33, > 0x3F, 0x24, 0x6F, >=20 > + 0xF7, 0xBC, 0x7C, 0x28, 0xEF, 0xAE, 0xAB, 0x7B, 0xAF, 0x84, 0xE3, 0x4E= , 0x38, > 0xAB, 0x66, 0x20, >=20 > + 0x7C, 0xB9, 0xE0, 0x37, 0xFD, 0x84, 0x28, 0x3C, 0xEE, 0x35, 0xC4, 0x75= , 0x04, > 0x43, 0xCA, 0x4F, >=20 > + 0x36, 0x60, 0xC4, 0x06, 0x16, 0x54, 0x3C, 0xF9, 0x47, 0x78, 0xBD, 0xE9= , 0x7F, > 0xF1, 0xE3, 0x0B, >=20 > + 0xC7, 0x7E, 0x30, 0xA4, 0xCB, 0x3A, 0xC7, 0xCD, 0x50, 0x9A, 0x6C, 0xC1= , > 0xE3, 0xF8, 0xF8, 0x16, >=20 > + 0xAA, 0x67, 0x7F, 0x92, 0xEE, 0x1D, 0x47, 0xF2, 0x96, 0xDF, 0xD7, 0x43= , 0x64, > 0x78, 0xA7, 0xD9, >=20 > + 0xF6, 0xA1, 0xD9, 0xEB, 0x5B, 0x2E, 0xC6, 0x9E, 0xEA, 0xD5, 0x04, 0x52= , > 0xA4, 0x73, 0x97, 0xC8, >=20 > + 0xB3, 0xFD, 0xE1, 0x7E, 0xB1, 0xA4, 0x3F, 0xF4, 0x56, 0x66, 0x8E, 0x6B= , 0xBC, > 0xD8, 0xF0, 0x7C, >=20 > + 0xBF, 0x58, 0xA4, 0xE0, 0x45, 0xDC, 0x2B, 0x0B, 0x2C, 0x40, 0x52, 0x4D= , > 0x4B, 0xA9, 0x8A, 0x77, >=20 > + 0x87, 0x31, 0xF8, 0x45, 0xD9, 0x60, 0xBB, 0xAD, 0x28, 0x29, 0x14, 0x0D= , > 0x0D, 0x8F, 0x0F, 0x34, >=20 > + 0x76, 0x88, 0xF3, 0x5A, 0x65, 0x00, 0x54, 0x22, 0x35, 0xBF, 0x3A, 0x2B= , 0xE9, > 0xB0, 0x24, 0xE5, >=20 > + 0xBE, 0xDF, 0x08, 0xA0, 0x02, 0xB2, 0x81, 0x01, 0xE8, 0x14, 0xBE, 0x6E= , 0x7E, > 0xBD, 0x60, 0x0C, >=20 > + 0x4A, 0xD8, 0x57, 0xA4, 0x50, 0xD3, 0xD0, 0x59, 0xCE, 0x57, 0x27, 0xE9= , > 0xA6, 0x16, 0x15, 0x5F, >=20 > + 0xF2, 0x6C, 0xCC, 0x57, 0x36, 0x20, 0x06, 0xE6, 0xA7, 0x24, 0x22, 0xB0= , 0xB1, > 0xC4, 0xBC, 0x2C, >=20 > + 0x5C, 0xCE, 0x92, 0x11, 0xFF, 0x6F, 0x8C, 0x14, 0x7E, 0xC4, 0x10, 0x02= , 0xF6, > 0x69, 0x86, 0x6D, >=20 > + 0x5B, 0x64, 0x81, 0x13, >=20 > + }; >=20 > + >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 PrivateKey[] =3D { >=20 > + 0x30, 0x82, 0x04, 0xA4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00= , 0xBC, > 0xE4, 0x67, 0xDC, >=20 > + 0xC7, 0xEA, 0x6F, 0x8A, 0xA7, 0xCC, 0xB2, 0x54, 0x47, 0x48, 0x6A, 0xE2= , 0x39, > 0xFF, 0xC2, 0x48, >=20 > + 0x58, 0x34, 0x07, 0x03, 0x6D, 0x39, 0xB3, 0x67, 0x46, 0x4C, 0xBC, 0xA0= , 0xFA, > 0x4E, 0x64, 0x23, >=20 > + 0x56, 0x47, 0x7B, 0xC9, 0x1A, 0x2A, 0x55, 0x42, 0x54, 0x10, 0x18, 0x30= , 0x92, > 0x60, 0x30, 0x5B, >=20 > + 0x9E, 0xC0, 0x65, 0xD2, 0xD4, 0x05, 0x4A, 0xA6, 0x10, 0x66, 0x04, 0xA9= , 0x54, > 0x4E, 0xEE, 0x49, >=20 > + 0x39, 0x43, 0x65, 0x1E, 0x2E, 0x28, 0xDE, 0x79, 0x24, 0xA9, 0x7E, 0xD8= , 0x5B, > 0xBC, 0x2F, 0x46, >=20 > + 0x6A, 0xB7, 0xB6, 0x0D, 0x17, 0x88, 0x37, 0x52, 0x5C, 0xFE, 0x93, 0xC0= , 0xE2, > 0xFD, 0x6A, 0x08, >=20 > + 0x1B, 0xFB, 0xD1, 0x87, 0xBD, 0xBD, 0x58, 0x57, 0x2C, 0x06, 0x5D, 0xD2= , > 0x7D, 0x52, 0xE2, 0x49, >=20 > + 0x8E, 0xDC, 0xE5, 0x26, 0xBD, 0x92, 0x60, 0xB0, 0x3F, 0x58, 0x5E, 0x52= , 0xD7, > 0x91, 0xDA, 0x93, >=20 > + 0x62, 0x8D, 0x71, 0x80, 0x53, 0xBA, 0x15, 0xC4, 0x1F, 0xF3, 0xBD, 0xE0= , 0xC5, > 0xA4, 0xB8, 0xD3, >=20 > + 0x64, 0x12, 0x14, 0x1B, 0x11, 0x6B, 0x7B, 0xC2, 0x92, 0xC7, 0xE2, 0x94= , 0x0B, > 0xB8, 0x67, 0x38, >=20 > + 0x48, 0x63, 0x11, 0x74, 0x25, 0x7C, 0x37, 0xC3, 0xB2, 0xAE, 0xD9, 0xA7= , 0x17, > 0x9C, 0x4B, 0x9D, >=20 > + 0x6C, 0x27, 0xB0, 0x87, 0x16, 0x6B, 0xF2, 0x96, 0xE5, 0x1D, 0x37, 0x27= , 0xDE, > 0xF2, 0x98, 0xB7, >=20 > + 0x81, 0x08, 0xD9, 0x7A, 0xBA, 0x84, 0x14, 0x61, 0x60, 0x48, 0xCE, 0xCE= , 0x51, > 0x73, 0xF4, 0xDB, >=20 > + 0xF1, 0x5F, 0x7A, 0x17, 0x71, 0x4F, 0xC1, 0x0B, 0xCE, 0xC7, 0x31, 0xC1= , 0x4E, > 0xA3, 0xEE, 0x6F, >=20 > + 0x72, 0x97, 0x90, 0xFB, 0x8B, 0x54, 0x9F, 0x82, 0x5B, 0x48, 0x5A, 0xF1= , 0xAD, > 0x8B, 0x3A, 0xCD, >=20 > + 0xCA, 0xB2, 0x8B, 0x7A, 0x53, 0xD4, 0xF7, 0x71, 0x16, 0x75, 0xA7, 0x35= , 0x02, > 0x03, 0x01, 0x00, >=20 > + 0x01, 0x02, 0x82, 0x01, 0x00, 0x13, 0xF7, 0xD1, 0x42, 0xF5, 0x9F, 0x42= , 0xCB, > 0x55, 0x91, 0xBE, >=20 > + 0x08, 0x4A, 0xC0, 0xCD, 0x0B, 0xBD, 0x35, 0xDC, 0x43, 0xE9, 0x8F, 0x16= , > 0x6E, 0xB6, 0x4D, 0x33, >=20 > + 0x39, 0xE7, 0xA4, 0x95, 0x0C, 0x2F, 0x69, 0xBA, 0x0C, 0x42, 0x42, 0xAC= , 0x43, > 0x46, 0x10, 0xD3, >=20 > + 0x92, 0x7F, 0x70, 0x74, 0x1E, 0x2E, 0x5B, 0x1C, 0xC1, 0x92, 0xB6, 0xA4= , 0x0C, > 0xF5, 0x7C, 0xD9, >=20 > + 0xB7, 0x54, 0x64, 0x74, 0x79, 0xB1, 0xFF, 0xE6, 0x10, 0xB7, 0x8C, 0xF8= , 0x53, > 0x88, 0x6D, 0xA9, >=20 > + 0x97, 0x04, 0xD9, 0x26, 0x1F, 0x99, 0x12, 0xFB, 0xAC, 0x65, 0xFB, 0xA5= , 0xB3, > 0x1C, 0x99, 0xB9, >=20 > + 0xBF, 0x6B, 0x35, 0x3E, 0x49, 0x55, 0xB5, 0x94, 0x4F, 0xE7, 0x25, 0x67= , 0xB1, > 0x01, 0xCD, 0xD2, >=20 > + 0x58, 0xE4, 0xBE, 0x87, 0x8C, 0x88, 0xD3, 0x0A, 0x38, 0xDC, 0x71, 0x5D= , > 0x88, 0x0A, 0xE2, 0x3E, >=20 > + 0x76, 0x63, 0x3B, 0xE4, 0x3C, 0x8F, 0x2F, 0x29, 0x1D, 0xD1, 0x66, 0x8D= , 0xC0, > 0x4A, 0x68, 0x15, >=20 > + 0x90, 0x4C, 0x95, 0x61, 0xF4, 0xFD, 0xE8, 0xFA, 0x9C, 0x6C, 0x00, 0x22= , 0x23, > 0xD5, 0x17, 0x6E, >=20 > + 0xEE, 0xA8, 0xD8, 0x70, 0xC5, 0x74, 0xEA, 0x09, 0x13, 0x7F, 0x0C, 0x37= , 0x4D, > 0x50, 0xCD, 0xE9, >=20 > + 0x16, 0xC2, 0xD5, 0xDE, 0x5E, 0xC3, 0xFC, 0x46, 0x08, 0xF1, 0x99, 0xC0= , 0xB4, > 0x28, 0xFD, 0x2B, >=20 > + 0x29, 0xEF, 0x76, 0xD7, 0x04, 0x4F, 0x02, 0x54, 0x16, 0x54, 0x55, 0x20= , 0xEC, > 0xBC, 0xBF, 0x85, >=20 > + 0x5F, 0x12, 0xCC, 0xFC, 0x0D, 0xF2, 0xEF, 0xFC, 0x4D, 0x3E, 0xA2, 0x5E= , 0x97, > 0xFE, 0x35, 0x10, >=20 > + 0x0F, 0x53, 0x1F, 0x80, 0xD5, 0xC0, 0xB4, 0xE9, 0xE9, 0x31, 0x4C, 0x89= , 0x14, > 0x72, 0x39, 0x65, >=20 > + 0x89, 0xEF, 0x7A, 0x51, 0x4A, 0xB9, 0xA9, 0xCC, 0x1B, 0x52, 0xB0, 0x02= , 0x52, > 0x65, 0x2F, 0x0B, >=20 > + 0x89, 0x41, 0x70, 0x1E, 0x01, 0x02, 0x81, 0x81, 0x00, 0xDB, 0xE8, 0x21= , 0x9E, > 0xDB, 0x58, 0x42, >=20 > + 0x0B, 0x02, 0x35, 0x87, 0xDF, 0x35, 0xF4, 0xC1, 0xEE, 0xD5, 0x72, 0x2C= , 0xDC, > 0x4D, 0xC7, 0xDA, >=20 > + 0x6D, 0x18, 0x0F, 0x68, 0x6F, 0xE7, 0xB0, 0x6C, 0xA0, 0xB2, 0x9E, 0xB8= , 0x5E, > 0x4A, 0x86, 0x81, >=20 > + 0x97, 0xBD, 0x78, 0xFC, 0x06, 0xD5, 0xBE, 0x98, 0x42, 0x38, 0x78, 0x78= , 0x16, > 0xAE, 0x39, 0x56, >=20 > + 0xFB, 0x67, 0x6B, 0xED, 0x7F, 0xB3, 0xC3, 0x7D, 0x95, 0x86, 0x05, 0x0C= , 0xF1, > 0x4C, 0xC2, 0x67, >=20 > + 0x94, 0x93, 0x1B, 0xB7, 0x91, 0x0A, 0x80, 0xE2, 0x85, 0xA7, 0x75, 0x20= , 0x61, > 0xCD, 0x40, 0x5B, >=20 > + 0x39, 0x13, 0x32, 0xF7, 0xB8, 0xD7, 0x0C, 0x39, 0x4C, 0x82, 0x4B, 0xA3= , 0x9F, > 0x5E, 0xB1, 0xB0, >=20 > + 0x38, 0x81, 0x8B, 0x1E, 0xBD, 0x2B, 0xC2, 0x9F, 0x3A, 0x68, 0x72, 0xC2= , 0x90, > 0xCB, 0xA2, 0xE2, >=20 > + 0xAC, 0x86, 0xFF, 0xC8, 0xD7, 0xB8, 0x97, 0x0E, 0x69, 0x02, 0x81, 0x81= , 0x00, > 0xDB, 0xE5, 0x21, >=20 > + 0x1F, 0x4C, 0x83, 0xD9, 0x7A, 0x56, 0x87, 0x82, 0xF1, 0x40, 0x1A, 0xD3= , 0x5B, > 0xC5, 0xB4, 0x4D, >=20 > + 0x18, 0x8A, 0xE3, 0x6B, 0xC9, 0x7E, 0x8F, 0x5D, 0x00, 0x33, 0x66, 0xEB= , 0xAE, > 0x8E, 0x54, 0x49, >=20 > + 0xD7, 0xEA, 0xF3, 0xF9, 0xED, 0xD7, 0xEE, 0x2C, 0xC8, 0xD6, 0x8F, 0x40= , > 0x0A, 0x53, 0xCB, 0x5D, >=20 > + 0x16, 0xB7, 0xEB, 0x4E, 0xFB, 0x11, 0x18, 0x1B, 0x4B, 0x6B, 0x43, 0x04= , 0xD6, > 0x1D, 0x8F, 0x6D, >=20 > + 0x4D, 0x48, 0x8B, 0x6C, 0x82, 0x52, 0xB4, 0x8D, 0x58, 0x9B, 0x19, 0x8D= , > 0xE0, 0x0D, 0xFD, 0x15, >=20 > + 0x9D, 0x35, 0xDF, 0x5E, 0xED, 0xDB, 0x8F, 0x8C, 0x44, 0x11, 0xC9, 0x9A= , > 0xD9, 0x3F, 0xD4, 0xA5, >=20 > + 0xEE, 0x68, 0x3B, 0x38, 0xD1, 0x66, 0xB0, 0x62, 0x7E, 0xA5, 0x04, 0xD1= , 0x67, > 0xA4, 0x1D, 0x93, >=20 > + 0xD6, 0x2A, 0xFB, 0xF6, 0xC1, 0xB2, 0xC4, 0x02, 0x8A, 0xB2, 0xA8, 0xD0= , > 0xED, 0x02, 0x81, 0x81, >=20 > + 0x00, 0xD1, 0x1D, 0x98, 0x43, 0x09, 0x10, 0x8F, 0x95, 0x0A, 0x5F, 0xBF= , 0x3A, > 0x1A, 0x84, 0x0A, >=20 > + 0x9B, 0x44, 0x6C, 0x53, 0x8E, 0x97, 0x84, 0x72, 0x08, 0x85, 0xF5, 0xB8= , 0xF9, > 0x99, 0x58, 0x22, >=20 > + 0xA4, 0x59, 0xD7, 0x27, 0x39, 0xBB, 0x22, 0xD7, 0x3F, 0x65, 0x95, 0x14= , 0x0C, > 0xA7, 0xDB, 0x9B, >=20 > + 0xCC, 0x75, 0x08, 0xD2, 0x21, 0xB7, 0x41, 0x9D, 0x9E, 0x6A, 0x85, 0xAE= , > 0x8E, 0x5E, 0x72, 0x8B, >=20 > + 0x0C, 0xD2, 0x2A, 0x21, 0x59, 0xA1, 0x05, 0xC9, 0x1B, 0xF7, 0x1C, 0x47= , 0x5E, > 0x6C, 0x9F, 0x8D, >=20 > + 0x49, 0x4D, 0xA9, 0xCA, 0xC6, 0x56, 0x39, 0x59, 0xC6, 0x17, 0xA4, 0xC2= , 0xFF, > 0x09, 0xB8, 0x7D, >=20 > + 0x10, 0x6D, 0x62, 0xE2, 0x50, 0x9D, 0xEA, 0xD8, 0xC9, 0x93, 0x1E, 0xA9= , > 0x77, 0x78, 0x92, 0x95, >=20 > + 0x7A, 0x24, 0x72, 0xE4, 0xE4, 0x6E, 0x51, 0x11, 0xBE, 0xC0, 0x8D, 0xA1= , 0xFE, > 0xC9, 0x71, 0x13, >=20 > + 0xE9, 0x02, 0x81, 0x80, 0x38, 0xE5, 0x3F, 0x3D, 0xB6, 0xF1, 0x82, 0x8A= , 0xD9, > 0xEA, 0xB4, 0x21, >=20 > + 0xB1, 0xE1, 0x7F, 0x00, 0x86, 0xD6, 0x11, 0x00, 0xA1, 0xA7, 0x18, 0x53= , 0x89, > 0x50, 0x94, 0xD2, >=20 > + 0xA1, 0x7A, 0x26, 0xCF, 0x02, 0x7A, 0xA2, 0xA4, 0xA0, 0x61, 0x42, 0x30= , 0x9D, > 0x27, 0x3E, 0x25, >=20 > + 0x35, 0x06, 0xD9, 0x9E, 0x12, 0x72, 0x53, 0x02, 0xB6, 0xD1, 0xC6, 0x9C= , 0xC5, > 0x9E, 0x84, 0x29, >=20 > + 0x6E, 0x76, 0x67, 0xC0, 0xF2, 0xE3, 0x12, 0x77, 0xE5, 0xA6, 0x55, 0x8C= , 0x1E, > 0xD4, 0x22, 0xA2, >=20 > + 0x63, 0x77, 0x28, 0x33, 0x69, 0xCB, 0x2B, 0x15, 0x83, 0x43, 0xE9, 0x6F= , 0x07, > 0xD9, 0x4B, 0x84, >=20 > + 0xAD, 0x49, 0x89, 0xAC, 0x5E, 0x8C, 0xA9, 0xE6, 0x56, 0xC7, 0xC3, 0xFA= , > 0xC2, 0x64, 0x2F, 0x07, >=20 > + 0xEF, 0xB0, 0xA0, 0x71, 0xFD, 0x8F, 0xBD, 0x99, 0xB3, 0x83, 0x80, 0x24= , 0x3C, > 0x19, 0xE5, 0x42, >=20 > + 0x77, 0xD9, 0xA0, 0x3D, 0x02, 0x81, 0x81, 0x00, 0xB7, 0x35, 0xE9, 0x66= , 0x4A, > 0xCD, 0x5F, 0x5C, >=20 > + 0x44, 0x9A, 0x7F, 0x23, 0xAE, 0xC2, 0x7F, 0xF0, 0x8D, 0xE4, 0xDB, 0xCD= , > 0x1A, 0x8A, 0x40, 0xD7, >=20 > + 0x0A, 0xC4, 0x3E, 0xC5, 0x03, 0xFB, 0x47, 0xAB, 0x72, 0xDF, 0xD7, 0x68= , 0x27, > 0x6E, 0x86, 0x94, >=20 > + 0x2A, 0x2A, 0xDA, 0x25, 0x9E, 0xF6, 0x5E, 0xE0, 0x6D, 0x7C, 0x7D, 0xFE= , 0x72, > 0xDD, 0xC7, 0xBC, >=20 > + 0x74, 0xC7, 0xAD, 0xEA, 0x44, 0xBE, 0x5C, 0x8A, 0x03, 0xCD, 0x35, 0x74= , > 0x6F, 0x4E, 0x92, 0x31, >=20 > + 0xBE, 0x57, 0x9A, 0x02, 0x0C, 0xFC, 0xD1, 0xD5, 0xE7, 0x3E, 0x53, 0x0C= , 0x47, > 0x12, 0x39, 0x45, >=20 > + 0x6E, 0x35, 0x24, 0xA6, 0xDA, 0x42, 0x63, 0xC6, 0xBF, 0xCA, 0xE8, 0x32= , 0xFD, > 0x61, 0xC0, 0x80, >=20 > + 0x39, 0xD2, 0xB7, 0x0D, 0xF3, 0xA2, 0xF3, 0xE4, 0x49, 0x26, 0x89, 0xD0= , 0xA0, > 0x24, 0xC8, 0x27, >=20 > + 0x86, 0x10, 0x09, 0x88, 0x6C, 0x35, 0x60, 0xF2, >=20 > + }; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyOaepEncrypt ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + UINT8 File[4]; >=20 > + UINT8 *OutBuffer; >=20 > + UINTN OutBufferSize; >=20 > + UINT8 *OutBuffer2; >=20 > + UINTN OutBuffer2Size; >=20 > + >=20 > + // Create a file and add content '123' in it >=20 > + File[0] =3D '1'; >=20 > + File[1] =3D '2'; >=20 > + File[2] =3D '3'; >=20 > + File[3] =3D 0; >=20 > + >=20 > + OutBuffer =3D NULL; >=20 > + OutBufferSize =3D 0; >=20 > + OutBuffer2 =3D NULL; >=20 > + OutBuffer2Size =3D 0; >=20 > + >=20 > + Status =3D Pkcs1v2Encrypt ( >=20 > + SelfTestCert, >=20 > + (UINTN)sizeof (SelfTestCert), >=20 > + File, >=20 > + (UINTN)sizeof (File), >=20 > + NULL, >=20 > + 0, >=20 > + &OutBuffer, >=20 > + (UINTN *)&OutBufferSize >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D Pkcs1v2Encrypt ( >=20 > + SelfTestCert, >=20 > + (UINTN)sizeof (SelfTestCert), >=20 > + File, >=20 > + (UINTN)4, >=20 > + NULL, >=20 > + 0, >=20 > + &OutBuffer2, >=20 > + (UINTN *)&OutBuffer2Size >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // TRUE - the two OutBuffers are indentical. That means the Oaep encry= pt > result is incorrect. >=20 > + Status =3D (CompareMem (OutBuffer, OutBuffer2, OutBufferSize >=3D > OutBuffer2Size ? OutBufferSize : OutBuffer2Size) =3D=3D 0); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + if (OutBuffer) { >=20 > + FreePool (OutBuffer); >=20 > + OutBuffer =3D NULL; >=20 > + OutBufferSize =3D 0; >=20 > + } >=20 > + >=20 > + if (OutBuffer2) { >=20 > + FreePool (OutBuffer2); >=20 > + OutBuffer2 =3D NULL; >=20 > + OutBuffer2Size =3D 0; >=20 > + } >=20 > + >=20 > + Status =3D Pkcs1v2Encrypt ( >=20 > + SelfTestCert, >=20 > + (UINTN)sizeof (SelfTestCert), >=20 > + File, >=20 > + (UINTN)4, >=20 > + RandSeed, >=20 > + (UINTN)sizeof (RandSeed), >=20 > + &OutBuffer, >=20 > + (UINTN *)&OutBufferSize >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D Pkcs1v2Encrypt ( >=20 > + SelfTestCert, >=20 > + (UINTN)sizeof (SelfTestCert), >=20 > + File, >=20 > + (UINTN)4, >=20 > + RandSeed, >=20 > + (UINTN)sizeof (RandSeed), >=20 > + &OutBuffer2, >=20 > + (UINTN *)&OutBuffer2Size >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // TRUE - the two OutBuffers are indentical. That means the Oaep encry= pt > result is incorrect. >=20 > + Status =3D (CompareMem (OutBuffer, OutBuffer2, OutBufferSize >=3D > OutBuffer2Size ? OutBufferSize : OutBuffer2Size) =3D=3D 0); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + if (OutBuffer) { >=20 > + FreePool (OutBuffer); >=20 > + OutBuffer =3D NULL; >=20 > + OutBufferSize =3D 0; >=20 > + } >=20 > + >=20 > + if (OutBuffer2) { >=20 > + FreePool (OutBuffer2); >=20 > + OutBuffer2 =3D NULL; >=20 > + OutBuffer2Size =3D 0; >=20 > + } >=20 > + >=20 > + Status =3D Pkcs1v2Encrypt ( >=20 > + NULL, >=20 > + (UINTN)sizeof (SelfTestCert), >=20 > + File, >=20 > + (UINTN)4, >=20 > + NULL, >=20 > + 0, >=20 > + &OutBuffer, >=20 > + (UINTN *)&OutBufferSize >=20 > + ); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + Status =3D Pkcs1v2Encrypt ( >=20 > + SelfTestCert, >=20 > + (UINTN)sizeof (SelfTestCert), >=20 > + File, >=20 > + (UINTN)4, >=20 > + NULL, >=20 > + 0, >=20 > + (UINT8 **)NULL, >=20 > + (UINTN *)&OutBufferSize >=20 > + ); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + Status =3D Pkcs1v2Encrypt ( >=20 > + SelfTestCert, >=20 > + (UINTN)sizeof (SelfTestCert), >=20 > + File, >=20 > + (UINTN)4, >=20 > + NULL, >=20 > + 0, >=20 > + &OutBuffer, >=20 > + (UINTN *)NULL >=20 > + ); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mOaepTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------------Class------= ---------------- > Function-----------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyOaepEncrypt()", "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt", > TestVerifyOaepEncrypt, NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mOaepTestNum =3D ARRAY_SIZE(mOaepTest); >=20 > + >=20 > + >=20 > diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2Test= s.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 >=20 > + Application for PKCS#5 PBKDF2 Function Validation. >=20 > + >=20 > +Copyright (c) 2016, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +// >=20 > +// PBKDF2 HMAC-SHA1 Test Vector from RFC6070 >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Password =3D > "password"; // Input Password >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINTN PassLen =3D 8; // > Length of Input Password >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Salt =3D "salt"; // > Input Salt >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINTN SaltLen =3D 4; //= Length > of Input Salt >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINTN Count =3D 2; // > InterationCount >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINTN KeyLen =3D 20; // > Length of derived key >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DerivedKey[] =3D { // > Expected output key >=20 > + 0xea, 0x6c, 0x01, 0x4d, 0xc7, 0x2d, 0x6f, 0x8c, 0xcd, 0x1e, 0xd9, 0x2a= , 0xce, > 0x1d, 0x41, 0xf0, >=20 > + 0xd8, 0xde, 0x89, 0x57 >=20 > + }; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyPkcs5Pbkdf2 ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + UINT8 *OutKey; >=20 > + >=20 > + OutKey =3D AllocatePool (KeyLen); >=20 > + >=20 > + // >=20 > + // Verify PKCS#5 PBKDF2 Key Derivation Function >=20 > + // >=20 > + Status =3D Pkcs5HashPassword ( >=20 > + PassLen, >=20 > + Password, >=20 > + SaltLen, >=20 > + (CONST UINT8 *)Salt, >=20 > + Count, >=20 > + SHA1_DIGEST_SIZE, >=20 > + KeyLen, >=20 > + OutKey >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Check the output key with the expected key result >=20 > + // >=20 > + UT_ASSERT_MEM_EQUAL (OutKey, DerivedKey, KeyLen); >=20 > + >=20 > + // >=20 > + // Release Resources >=20 > + // >=20 > + FreePool (OutKey); >=20 > + >=20 > + return EFI_SUCCESS; >=20 > +} >=20 > + >=20 > +TEST_DESC mPkcs5Test[] =3D { >=20 > + // >=20 > + // -----Description------------------------------Class--------------= --------Function--- > --------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyPkcs5Pbkdf2()", "CryptoPkg.BaseCryptLib.Pkcs5", > TestVerifyPkcs5Pbkdf2, NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mPkcs5TestNum =3D ARRAY_SIZE(mPkcs5Test); >=20 > 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 >=20 > + * Copyright (c) Microsoft Corporation. >=20 > + * SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > + This is an test code which verifies specified >=20 > + Enhanced Key Usages (EKU)'s are present in the leaf signer >=20 > + of a PKCS7 formatted signature. >=20 > + >=20 > + >=20 > + A typical signing certificate chain looks like this: (Could be RSA or = ECC). >=20 > + >=20 > + ------------------------------------------ >=20 > + | | // Root of trust. ECDS= A P521 curve >=20 > + | TestEKUParsingRoot | // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > + | | // CERT_KEY_CERT_SIGN_= KEY_USAGE | > CERT_CRL_SIGN_KEY_USAGE >=20 > + ------------------------------------------ >=20 > + ^ >=20 > + | >=20 > + ------------------------------------------ >=20 > + | | // Policy CA. Issues = subordinate CAs. ECC P384 > curve. >=20 > + | TestEKUParsingPolicyCA | // SHA 256 Key Usage: >=20 > + | | // CERT_KEY_CERT_SIGN_= KEY_USAGE | > CERT_CRL_SIGN_KEY_USAGE >=20 > + ------------------------------------------ >=20 > + ^ >=20 > + | >=20 > + ------------------------------------------ >=20 > + | | // Issues end-entity (= leaf) signers. ECC P256 curve. >=20 > + | TestEKUParsingIssuingCA | // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > + | | // Enhanced Key Usage: >=20 > + ------------------------------------------ // 1.3.6.1.4.1.311.76.= 9.21.1 (Surface > firmware signing) >=20 > + ^ >=20 > + | >=20 > + -------------------------------------- >=20 > + / TestEKUParsingLeafSigner && / // Leaf signer, ECC P= 256 curve. >=20 > + / TestEKUParsingLeafSignerPid12345 / // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > + / / // Enhanced Key usages= : >=20 > + -------------------------------------- // 1.3.6.1.4.1.311.76.= 9.21.1 (Surface > firmware signing) >=20 > + // 1.3.6.1.4.1.311.76.= 9.21.1.N, N =3D=3D Product ID. >=20 > + >=20 > + >=20 > + >=20 > + >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +#include "Pkcs7EkuTestSignatures.h" >=20 > + >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +VerifyEKUsInPkcs7Signature ( >=20 > + IN CONST UINT8 *Pkcs7Signature, >=20 > + IN CONST UINT32 SignatureSize, >=20 > + IN CONST CHAR8 *RequiredEKUs[], >=20 > + IN CONST UINT32 RequiredEKUsSize, >=20 > + IN BOOLEAN RequireAllPresent >=20 > + ); >=20 > + >=20 > +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > +/// >=20 > +/// TEST CASES >=20 > +/// >=20 > +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >=20 > + >=20 > +CONST CHAR8 FIRMWARE_SIGNER_EKU[] =3D "1.3.6.1.4.1.311.76.9.21.1"; >=20 > + >=20 > + >=20 > +/** >=20 > + TestVerifyEKUsInSignature() >=20 > + >=20 > + Verify that "1.3.6.1.4.1.311.76.9.21.1" (Firmware signature) is in the >=20 > + leaf signer certificate. >=20 > + >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyEKUsInSignature ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(ProductionECCSignature, >=20 > + ARRAY_SIZE(ProductionECCSignature)= , >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestVerifyEKUsInSignature() >=20 > + >=20 > + >=20 > +/** >=20 > + TestVerifyEKUsWith3CertsInSignature() >=20 > + >=20 > + This PKCS7 signature has 3 certificates in it. (Policy CA, Issuing CA >=20 > + and leaf signer). It has one firmware signing EKU in it. >=20 > + "1.3.6.1.4.1.311.76.9.21.1" >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyEKUsWith3CertsInSignature ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignEKUsWith3CertsInSignatur= e, >=20 > + ARRAY_SIZE(TestSignEKUsWith3CertsI= nSignature), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestVerifyEKUsWith3CertsInSignature() >=20 > + >=20 > +/** >=20 > + TestVerifyEKUsWith2CertsInSignature() >=20 > + >=20 > + This PKCS7 signature has 2 certificates in it. (Issuing CA and leaf si= gner). >=20 > + It has one firmware signing EKU in it. "1.3.6.1.4.1.311.76.9.21.1" >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyEKUsWith2CertsInSignature ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignEKUsWith2CertsInSignatur= e, >=20 > + ARRAY_SIZE(TestSignEKUsWith2CertsI= nSignature), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestVerifyEKUsWith2CertsInSignature() >=20 > + >=20 > + >=20 > +/** >=20 > + TestVerifyEKUsWith1CertInSignature() >=20 > + >=20 > + This PKCS7 signature only has the leaf signer in it. >=20 > + It has one firmware signing EKU in it. "1.3.6.1.4.1.311.76.9.21.1" >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyEKUsWith1CertInSignature ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignEKUsWith1CertInSignature= , >=20 > + ARRAY_SIZE(TestSignEKUsWith1CertIn= Signature), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestVerifyEKUsWith1CertInSignature() >=20 > + >=20 > + >=20 > +/** >=20 > + TestVerifyEKUsWithMultipleEKUsInCert() >=20 > + >=20 > + >=20 > + This signature has two EKU's in it: >=20 > + "1.3.6.1.4.1.311.76.9.21.1" >=20 > + "1.3.6.1.4.1.311.76.9.21.2" >=20 > + We verify that both EKU's were present in the leaf signer. >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyEKUsWithMultipleEKUsInCert ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1", >=20 > + "1.3.6.1.4.1.311.76.9.21.1.2" }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithMultipleEKUsInCert= , >=20 > + ARRAY_SIZE(TestSignedWithMultipleE= KUsInCert), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestVerifyEKUsWithMultipleEKUsInCert() >=20 > + >=20 > + >=20 > +/** >=20 > + TestEkusNotPresentInSignature() >=20 > + >=20 > + This test verifies that if we send an EKU that is not in the signature= , >=20 > + that we get back an error. >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestEkusNotPresentInSignature ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + // >=20 > + // This EKU is not in the signature. >=20 > + // >=20 > + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.3" }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithMultipleEKUsInCert= , >=20 > + ARRAY_SIZE(TestSignedWithMultipleE= KUsInCert), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestEkusNotPresentInSignature() >=20 > + >=20 > +/** >=20 > + TestEkusNotPresentInSignature() >=20 > + >=20 > + This test signature has two EKU's in it: (Product ID is 10001) >=20 > + "1.3.6.1.4.1.311.76.9.21.1" >=20 > + "1.3.6.1.4.1.311.76.9.21.1.10001" >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > + >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestProductId10001PresentInSignature( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > +) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + // >=20 > + // These EKU's are present in the leaf signer certificate. >=20 > + // >=20 > + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1", >=20 > + "1.3.6.1.4.1.311.76.9.21.1.10001" }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001, >=20 > + ARRAY_SIZE(TestSignedWithProductId= 10001), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestProductId10001PresentInSignature() >=20 > + >=20 > + >=20 > +/** >=20 > + TestOnlyOneEkuInListRequired() >=20 > + >=20 > + This test will check the BOOLEAN RequireAllPresent parameter in the >=20 > + call to VerifyEKUsInPkcs7Signature() behaves properly. The signature >=20 > + has two EKU's in it: >=20 > + >=20 > + "1.3.6.1.4.1.311.76.9.21.1" >=20 > + "1.3.6.1.4.1.311.76.9.21.1.10001" >=20 > + >=20 > + but we only pass in one of them, and set RequireAllPresent to FALSE. >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > + >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestOnlyOneEkuInListRequired( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > +) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + // >=20 > + // This will test the flag that specifies it is OK to succeed if >=20 > + // any one of the EKU's passed in is found. >=20 > + // >=20 > + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1.10001" }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001, >=20 > + ARRAY_SIZE(TestSignedWithProductId= 10001), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + FALSE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestOnlyOneEkuInListRequired() >=20 > + >=20 > +/** >=20 > + TestNoEKUsInSignature() >=20 > + >=20 > + This test uses a signature that was signed with a certificate that doe= s >=20 > + not contain any EKUs. >=20 > + >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > + >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestNoEKUsInSignature( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > +) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + // >=20 > + // This EKU is not in the certificate, so it should fail. >=20 > + // >=20 > + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1" }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignatureWithNoEKUsPresent, >=20 > + ARRAY_SIZE(TestSignatureWithNoEKUs= Present), >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestNoEKUsInSignature() >=20 > + >=20 > + >=20 > +/** >=20 > + TestInvalidParameters() >=20 > + >=20 > + Passes the API invalid parameters, and ensures that it does not succee= d. >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestInvalidParameters( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > +) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1" }; >=20 > + >=20 > + // >=20 > + // Check bad signature. >=20 > + // >=20 > + Status =3D VerifyEKUsInPkcs7Signature(NULL, >=20 > + 0, >=20 > + (CONST CHAR8**)RequiredEKUs, >=20 > + ARRAY_SIZE(RequiredEKUs), >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_INVALID_PARAMETER); >=20 > + >=20 > + // >=20 > + // Check invalid EKU's >=20 > + // >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignatureWithNoEKUsPresent, >=20 > + ARRAY_SIZE(TestSignatureWithNoEKUs= Present), >=20 > + (CONST CHAR8**)NULL, >=20 > + 0, >=20 > + TRUE); >=20 > + UT_ASSERT_STATUS_EQUAL (Status, EFI_INVALID_PARAMETER); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestInvalidParameters() >=20 > + >=20 > + >=20 > +/** >=20 > + TestEKUSubStringFails() >=20 > + >=20 > + Pass the API a sub set and super set of an EKU and ensure that they >=20 > + don't pass. >=20 > + >=20 > + @param[in] Framework - Unit-test framework handle. >=20 > + @param[in] Context - Optional context pointer for this test. >=20 > + >=20 > + @retval UNIT_TEST_PASSED - The required EKUs were found in = the > signature. >=20 > + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the > debug output. >=20 > +**/ >=20 > +static >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestEKUSubsetSupersetFails( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > +) >=20 > +{ >=20 > + EFI_STATUS Status =3D EFI_SUCCESS; >=20 > + >=20 > + // >=20 > + // This signature has an EKU of: >=20 > + // "1.3.6.1.4.1.311.76.9.21.1.10001" >=20 > + // so ensure that >=20 > + // "1.3.6.1.4.1.311.76.9.21" >=20 > + // does not pass. >=20 > + // >=20 > + CONST CHAR8* RequiredEKUs1[] =3D { "1.3.6.1.4.1.311.76.9.21" }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001, >=20 > + ARRAY_SIZE(TestSignedWithProductId= 10001), >=20 > + (CONST CHAR8**)RequiredEKUs1, >=20 > + ARRAY_SIZE(RequiredEKUs1), >=20 > + TRUE); >=20 > + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + // >=20 > + // This signature has an EKU of: >=20 > + // "1.3.6.1.4.1.311.76.9.21.1.10001" >=20 > + // so ensure that a super set >=20 > + // "1.3.6.1.4.1.311.76.9.21.1.10001.1" >=20 > + // does not pass. >=20 > + // >=20 > + CONST CHAR8* RequiredEKUs2[] =3D { "1.3.6.1.4.1.311.76.9.21.1.10001.1"= }; >=20 > + >=20 > + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001, >=20 > + ARRAY_SIZE(TestSignedWithProductId= 10001), >=20 > + (CONST CHAR8**)RequiredEKUs2, >=20 > + ARRAY_SIZE(RequiredEKUs2), >=20 > + TRUE); >=20 > + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +}// TestEKUSubsetSupersetFails() >=20 > + >=20 > +TEST_DESC mPkcs7EkuTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------Class------------= ---------------- > Function------------------------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyEKUsInSignature()", "CryptoPkg.BaseCryptLib.E= ku", > TestVerifyEKUsInSignature, NULL, NULL, NULL}, >=20 > + {"TestVerifyEKUsWith3CertsInSignature()", "CryptoPkg.BaseCryptLib.E= ku", > TestVerifyEKUsWith3CertsInSignature, NULL, NULL, NULL}, >=20 > + {"TestVerifyEKUsWith2CertsInSignature()", "CryptoPkg.BaseCryptLib.E= ku", > TestVerifyEKUsWith2CertsInSignature, NULL, NULL, NULL}, >=20 > + {"TestVerifyEKUsWith1CertInSignature()", "CryptoPkg.BaseCryptLib.E= ku", > TestVerifyEKUsWith1CertInSignature, NULL, NULL, NULL}, >=20 > + {"TestVerifyEKUsWithMultipleEKUsInCert()", "CryptoPkg.BaseCryptLib.E= ku", > TestVerifyEKUsWithMultipleEKUsInCert, NULL, NULL, NULL}, >=20 > + {"TestEkusNotPresentInSignature()", "CryptoPkg.BaseCryptLib.E= ku", > TestEkusNotPresentInSignature, NULL, NULL, NULL}, >=20 > + {"TestProductId10001PresentInSignature()", "CryptoPkg.BaseCryptLib.E= ku", > TestProductId10001PresentInSignature, NULL, NULL, NULL}, >=20 > + {"TestOnlyOneEkuInListRequired()", "CryptoPkg.BaseCryptLib.E= ku", > TestOnlyOneEkuInListRequired, NULL, NULL, NULL}, >=20 > + {"TestNoEKUsInSignature()", "CryptoPkg.BaseCryptLib.E= ku", > TestNoEKUsInSignature, NULL, NULL, NULL}, >=20 > + {"TestInvalidParameters()", "CryptoPkg.BaseCryptLib.E= ku", > TestInvalidParameters, NULL, NULL, NULL}, >=20 > + {"TestEKUSubsetSupersetFails()", "CryptoPkg.BaseCryptLib.E= ku", > TestEKUSubsetSupersetFails, NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mPkcs7EkuTestNum =3D ARRAY_SIZE(mPkcs7EkuTest); >=20 > 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 >=20 > + Application for Pseudorandom Number Generator Validation. >=20 > + >=20 > +Copyright (c) 2010, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +#define RANDOM_NUMBER_SIZE 256 >=20 > + >=20 > +CONST UINT8 SeedString[] =3D "This is the random seed for PRNG verific= ation."; >=20 > + >=20 > +UINT8 PreviousRandomBuffer[RANDOM_NUMBER_SIZE] =3D { 0x0 }; >=20 > + >=20 > +UINT8 RandomBuffer[RANDOM_NUMBER_SIZE] =3D { 0x0 }; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyPrngGeneration ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + UINTN Index; >=20 > + BOOLEAN Status; >=20 > + >=20 > + Status =3D RandomSeed (SeedString, sizeof (SeedString)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + for (Index =3D 0; Index < 10; Index ++) { >=20 > + Status =3D RandomBytes (RandomBuffer, RANDOM_NUMBER_SIZE); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D (CompareMem (PreviousRandomBuffer, RandomBuffer, > RANDOM_NUMBER_SIZE) =3D=3D 0); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + CopyMem (PreviousRandomBuffer, RandomBuffer, > RANDOM_NUMBER_SIZE); >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mPrngTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------Class------------= --------Function--- > -------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyPrngGeneration()", "CryptoPkg.BaseCryptLib.Prng", > TestVerifyPrngGeneration, NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mPrngTestNum =3D ARRAY_SIZE(mPrngTest); >=20 > 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 >=20 > + Application for RSA Key Retrieving (from PEM and X509) & Signature > Validation. >=20 > + >=20 > + Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
>=20 > + Copyright (c) Microsoft Corporation. >=20 > + SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > + >=20 > +// >=20 > +// Password-protected PEM Key data for RSA Private Key Retrieving (encry= ption > key is "client"). >=20 > +// (Generated by OpenSSL utility). >=20 > +// $ openssl genrsa -aes256 -out TestKeyPem -passout pass:client 1024 >=20 > +// password should match PemPass in this file >=20 > +// $ xxd --include TestKeyPem >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestKeyPem[] =3D { >=20 > + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x5= 2, >=20 > + 0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b= , >=20 > + 0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x50, 0x72, 0x6f, 0x63= , >=20 > + 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x34, 0x2c, 0x45, 0x4e, 0x43= , >=20 > + 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x0a, 0x44, 0x45, 0x4b, 0x2d, 0x49= , >=20 > + 0x6e, 0x66, 0x6f, 0x3a, 0x20, 0x41, 0x45, 0x53, 0x2d, 0x32, 0x35, 0x36= , >=20 > + 0x2d, 0x43, 0x42, 0x43, 0x2c, 0x34, 0x42, 0x44, 0x31, 0x30, 0x45, 0x39= , >=20 > + 0x35, 0x42, 0x38, 0x33, 0x39, 0x42, 0x30, 0x44, 0x33, 0x35, 0x36, 0x31= , >=20 > + 0x38, 0x41, 0x44, 0x36, 0x45, 0x46, 0x44, 0x36, 0x34, 0x32, 0x34, 0x44= , >=20 > + 0x36, 0x0a, 0x0a, 0x42, 0x50, 0x39, 0x49, 0x32, 0x42, 0x30, 0x6c, 0x50= , >=20 > + 0x7a, 0x4c, 0x50, 0x50, 0x38, 0x2f, 0x4b, 0x71, 0x35, 0x34, 0x2f, 0x56= , >=20 > + 0x68, 0x75, 0x4b, 0x35, 0x5a, 0x63, 0x72, 0x32, 0x55, 0x6c, 0x32, 0x75= , >=20 > + 0x43, 0x57, 0x4a, 0x62, 0x59, 0x33, 0x50, 0x77, 0x39, 0x6e, 0x4c, 0x6d= , >=20 > + 0x45, 0x41, 0x6a, 0x47, 0x74, 0x4a, 0x68, 0x57, 0x46, 0x66, 0x50, 0x47= , >=20 > + 0x38, 0x62, 0x6d, 0x41, 0x6f, 0x73, 0x56, 0x0a, 0x47, 0x76, 0x42, 0x30= , >=20 > + 0x6d, 0x2b, 0x7a, 0x5a, 0x43, 0x2b, 0x30, 0x6c, 0x57, 0x6c, 0x72, 0x59= , >=20 > + 0x7a, 0x51, 0x4b, 0x6a, 0x57, 0x79, 0x44, 0x6e, 0x4d, 0x58, 0x72, 0x33= , >=20 > + 0x51, 0x39, 0x69, 0x57, 0x32, 0x4b, 0x33, 0x68, 0x4d, 0x6b, 0x71, 0x51= , >=20 > + 0x4c, 0x31, 0x68, 0x65, 0x71, 0x52, 0x66, 0x66, 0x74, 0x47, 0x57, 0x51= , >=20 > + 0x5a, 0x36, 0x78, 0x4e, 0x6a, 0x72, 0x30, 0x7a, 0x6f, 0x51, 0x59, 0x73= , >=20 > + 0x0a, 0x34, 0x76, 0x69, 0x55, 0x46, 0x72, 0x7a, 0x2b, 0x52, 0x76, 0x4b= , >=20 > + 0x43, 0x2f, 0x33, 0x69, 0x71, 0x57, 0x59, 0x78, 0x55, 0x35, 0x4c, 0x6a= , >=20 > + 0x45, 0x74, 0x63, 0x5a, 0x4f, 0x2b, 0x53, 0x6d, 0x39, 0x42, 0x4c, 0x62= , >=20 > + 0x66, 0x58, 0x49, 0x71, 0x56, 0x72, 0x53, 0x6a, 0x54, 0x79, 0x58, 0x49= , >=20 > + 0x39, 0x70, 0x76, 0x78, 0x6f, 0x67, 0x50, 0x39, 0x38, 0x6b, 0x2b, 0x6c= , >=20 > + 0x41, 0x66, 0x37, 0x47, 0x36, 0x0a, 0x75, 0x39, 0x2b, 0x30, 0x31, 0x4d= , >=20 > + 0x47, 0x5a, 0x69, 0x36, 0x6b, 0x53, 0x73, 0x67, 0x48, 0x57, 0x7a, 0x43= , >=20 > + 0x41, 0x49, 0x51, 0x75, 0x38, 0x72, 0x6a, 0x4d, 0x34, 0x65, 0x74, 0x64= , >=20 > + 0x50, 0x62, 0x4a, 0x49, 0x77, 0x34, 0x65, 0x47, 0x6f, 0x32, 0x45, 0x49= , >=20 > + 0x44, 0x45, 0x54, 0x61, 0x52, 0x70, 0x73, 0x76, 0x47, 0x6a, 0x54, 0x6f= , >=20 > + 0x30, 0x51, 0x56, 0x69, 0x79, 0x79, 0x4a, 0x4f, 0x48, 0x32, 0x0a, 0x61= , >=20 > + 0x32, 0x71, 0x69, 0x2f, 0x47, 0x7a, 0x2f, 0x64, 0x48, 0x61, 0x62, 0x68= , >=20 > + 0x4d, 0x4e, 0x35, 0x4e, 0x53, 0x58, 0x56, 0x4d, 0x31, 0x54, 0x2f, 0x6d= , >=20 > + 0x69, 0x6f, 0x74, 0x68, 0x78, 0x59, 0x72, 0x2f, 0x4a, 0x69, 0x37, 0x6d= , >=20 > + 0x4e, 0x45, 0x75, 0x4a, 0x57, 0x38, 0x74, 0x6d, 0x75, 0x55, 0x4b, 0x58= , >=20 > + 0x33, 0x66, 0x63, 0x39, 0x42, 0x39, 0x32, 0x51, 0x6e, 0x54, 0x68, 0x43= , >=20 > + 0x69, 0x49, 0x2f, 0x0a, 0x79, 0x4f, 0x31, 0x32, 0x4c, 0x46, 0x58, 0x38= , >=20 > + 0x74, 0x4b, 0x4a, 0x37, 0x4b, 0x7a, 0x6f, 0x6b, 0x36, 0x44, 0x74, 0x6d= , >=20 > + 0x35, 0x73, 0x41, 0x74, 0x2b, 0x65, 0x4b, 0x76, 0x6f, 0x61, 0x47, 0x62= , >=20 > + 0x75, 0x4a, 0x78, 0x62, 0x52, 0x63, 0x36, 0x63, 0x4d, 0x58, 0x57, 0x46= , >=20 > + 0x36, 0x4d, 0x72, 0x4d, 0x30, 0x53, 0x78, 0x65, 0x4e, 0x6b, 0x5a, 0x77= , >=20 > + 0x5a, 0x36, 0x6c, 0x62, 0x4d, 0x39, 0x63, 0x55, 0x0a, 0x6c, 0x75, 0x34= , >=20 > + 0x4c, 0x56, 0x64, 0x34, 0x73, 0x56, 0x4c, 0x61, 0x76, 0x68, 0x75, 0x32= , >=20 > + 0x58, 0x48, 0x48, 0x53, 0x56, 0x30, 0x32, 0x32, 0x6d, 0x51, 0x72, 0x73= , >=20 > + 0x32, 0x69, 0x68, 0x74, 0x58, 0x44, 0x2b, 0x6c, 0x4d, 0x63, 0x2f, 0x35= , >=20 > + 0x62, 0x54, 0x41, 0x55, 0x6b, 0x4b, 0x4f, 0x42, 0x73, 0x43, 0x69, 0x4f= , >=20 > + 0x4b, 0x42, 0x56, 0x2b, 0x66, 0x70, 0x49, 0x62, 0x2b, 0x6d, 0x44, 0x33= , >=20 > + 0x58, 0x0a, 0x39, 0x37, 0x66, 0x36, 0x54, 0x66, 0x68, 0x37, 0x4f, 0x4f= , >=20 > + 0x6a, 0x74, 0x44, 0x79, 0x31, 0x6f, 0x52, 0x36, 0x70, 0x68, 0x48, 0x47= , >=20 > + 0x6e, 0x73, 0x43, 0x78, 0x72, 0x53, 0x72, 0x64, 0x48, 0x73, 0x2f, 0x34= , >=20 > + 0x33, 0x72, 0x61, 0x65, 0x42, 0x78, 0x59, 0x45, 0x41, 0x42, 0x4e, 0x59= , >=20 > + 0x68, 0x54, 0x47, 0x57, 0x49, 0x4d, 0x4a, 0x6b, 0x50, 0x63, 0x54, 0x53= , >=20 > + 0x73, 0x76, 0x77, 0x46, 0x37, 0x6d, 0x0a, 0x33, 0x6c, 0x38, 0x6b, 0x44= , >=20 > + 0x50, 0x48, 0x43, 0x4e, 0x68, 0x6e, 0x6e, 0x42, 0x69, 0x7a, 0x36, 0x2f= , >=20 > + 0x43, 0x38, 0x56, 0x31, 0x37, 0x78, 0x57, 0x34, 0x50, 0x2b, 0x79, 0x71= , >=20 > + 0x4a, 0x78, 0x58, 0x63, 0x49, 0x53, 0x72, 0x7a, 0x57, 0x53, 0x55, 0x72= , >=20 > + 0x34, 0x74, 0x71, 0x6b, 0x55, 0x58, 0x43, 0x57, 0x4c, 0x43, 0x66, 0x76= , >=20 > + 0x57, 0x7a, 0x4e, 0x65, 0x5a, 0x34, 0x4f, 0x34, 0x34, 0x54, 0x65, 0x0a= , >=20 > + 0x74, 0x31, 0x59, 0x65, 0x36, 0x77, 0x2b, 0x71, 0x4f, 0x55, 0x38, 0x50= , >=20 > + 0x42, 0x68, 0x72, 0x65, 0x4d, 0x38, 0x75, 0x32, 0x32, 0x42, 0x4f, 0x31= , >=20 > + 0x65, 0x2b, 0x44, 0x7a, 0x63, 0x74, 0x6c, 0x67, 0x43, 0x43, 0x6c, 0x38= , >=20 > + 0x79, 0x69, 0x37, 0x6f, 0x43, 0x56, 0x74, 0x66, 0x75, 0x59, 0x2f, 0x4c= , >=20 > + 0x72, 0x42, 0x61, 0x31, 0x74, 0x69, 0x43, 0x41, 0x37, 0x6c, 0x34, 0x75= , >=20 > + 0x58, 0x6b, 0x73, 0x4c, 0x0a, 0x2b, 0x31, 0x51, 0x79, 0x69, 0x4b, 0x31= , >=20 > + 0x6e, 0x43, 0x4f, 0x76, 0x74, 0x30, 0x46, 0x7a, 0x71, 0x62, 0x71, 0x78= , >=20 > + 0x54, 0x37, 0x53, 0x35, 0x4c, 0x56, 0x33, 0x5a, 0x33, 0x74, 0x34, 0x4a= , >=20 > + 0x46, 0x4f, 0x50, 0x62, 0x67, 0x63, 0x7a, 0x4e, 0x6b, 0x58, 0x55, 0x2b= , >=20 > + 0x4f, 0x74, 0x50, 0x6b, 0x6e, 0x45, 0x45, 0x76, 0x67, 0x57, 0x64, 0x76= , >=20 > + 0x31, 0x4f, 0x30, 0x6d, 0x52, 0x4a, 0x50, 0x31, 0x4e, 0x0a, 0x71, 0x43= , >=20 > + 0x32, 0x33, 0x4a, 0x6a, 0x36, 0x38, 0x4c, 0x30, 0x46, 0x63, 0x46, 0x4c= , >=20 > + 0x56, 0x56, 0x59, 0x76, 0x61, 0x44, 0x53, 0x76, 0x54, 0x45, 0x64, 0x50= , >=20 > + 0x54, 0x34, 0x62, 0x2f, 0x7a, 0x66, 0x64, 0x36, 0x51, 0x52, 0x6b, 0x38= , >=20 > + 0x70, 0x4d, 0x36, 0x77, 0x66, 0x61, 0x32, 0x50, 0x63, 0x75, 0x57, 0x65= , >=20 > + 0x79, 0x38, 0x48, 0x38, 0x76, 0x4e, 0x4b, 0x67, 0x2f, 0x65, 0x76, 0x34= , >=20 > + 0x77, 0x37, 0x0a, 0x6b, 0x6f, 0x6f, 0x4e, 0x59, 0x64, 0x77, 0x59, 0x69= , >=20 > + 0x6c, 0x37, 0x41, 0x50, 0x76, 0x42, 0x50, 0x4d, 0x63, 0x6c, 0x51, 0x76= , >=20 > + 0x63, 0x64, 0x71, 0x7a, 0x52, 0x7a, 0x4a, 0x6e, 0x4a, 0x74, 0x37, 0x70= , >=20 > + 0x35, 0x7a, 0x69, 0x2b, 0x2b, 0x4c, 0x43, 0x59, 0x55, 0x4d, 0x3d, 0x0a= , >=20 > + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x52, 0x53, 0x41= , >=20 > + 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45, 0x59= , >=20 > + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a >=20 > + }; >=20 > + >=20 > +// >=20 > +// Password for private key retrieving from encrypted PEM ("TestKeyPem")= . >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *PemPass =3D "client"; >=20 > + >=20 > +// >=20 > +// Test CA X509 Certificate for X509 Verification Routine (Generated by > OpenSSL utility). >=20 > +// $ openssl req -x509 -days 10000 -key TestKeyPem -out TestCACert -outf= orm > DER -subj "/C=3DUS/ST=3DWA/L=3DSeattle/O=3DTianocore/OU=3DEDK2/CN=3DUEFI" >=20 > +// use password from PemPass variable in this file >=20 > +// $ xxd --include TestCACert >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCACert[] =3D { >=20 > + 0x30, 0x82, 0x02, 0x98, 0x30, 0x82, 0x02, 0x01, 0xa0, 0x03, 0x02, 0x01= , >=20 > + 0x02, 0x02, 0x14, 0x39, 0xde, 0x9e, 0xce, 0x3a, 0x36, 0x11, 0x38, 0x6f= , >=20 > + 0x64, 0xb4, 0x69, 0xa7, 0x93, 0xdd, 0xff, 0xbd, 0x3e, 0x75, 0x6a, 0x30= , >=20 > + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b= , >=20 > + 0x05, 0x00, 0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04= , >=20 > + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55= , >=20 > + 0x04, 0x08, 0x0c, 0x02, 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03= , >=20 > + 0x55, 0x04, 0x07, 0x0c, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65= , >=20 > + 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54= , >=20 > + 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31, 0x0d, 0x30, 0x0b= , >=20 > + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x04, 0x45, 0x44, 0x4b, 0x32, 0x31= , >=20 > + 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04, 0x55, 0x45= , >=20 > + 0x46, 0x49, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x36, 0x32, 0x39= , >=20 > + 0x32, 0x32, 0x34, 0x37, 0x33, 0x36, 0x5a, 0x17, 0x0d, 0x34, 0x37, 0x31= , >=20 > + 0x31, 0x31, 0x35, 0x32, 0x32, 0x34, 0x37, 0x33, 0x36, 0x5a, 0x30, 0x5e= , >=20 > + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55= , >=20 > + 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x02= , >=20 > + 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c= , >=20 > + 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x31, 0x12, 0x30, 0x10= , >=20 > + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54, 0x69, 0x61, 0x6e, 0x6f= , >=20 > + 0x63, 0x6f, 0x72, 0x65, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04= , >=20 > + 0x0b, 0x0c, 0x04, 0x45, 0x44, 0x4b, 0x32, 0x31, 0x0d, 0x30, 0x0b, 0x06= , >=20 > + 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04, 0x55, 0x45, 0x46, 0x49, 0x30, 0x81= , >=20 > + 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01= , >=20 > + 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02= , >=20 > + 0x81, 0x81, 0x00, 0x9f, 0xef, 0x1b, 0x46, 0x45, 0x55, 0x33, 0x4b, 0xee= , >=20 > + 0x95, 0x14, 0xd3, 0x5a, 0x3e, 0xd9, 0x29, 0xfb, 0xd9, 0x29, 0x4e, 0x8b= , >=20 > + 0xf1, 0xf5, 0x68, 0x7c, 0x58, 0x86, 0x0c, 0xda, 0xd7, 0xe0, 0xd2, 0x9a= , >=20 > + 0xe8, 0x37, 0x16, 0x4d, 0x54, 0x92, 0x18, 0x20, 0x4c, 0x09, 0xa1, 0xcf= , >=20 > + 0xe1, 0xaa, 0x7a, 0x5a, 0x64, 0x7e, 0x5c, 0xeb, 0x4e, 0x15, 0x8e, 0x40= , >=20 > + 0xd1, 0xcb, 0x7d, 0x01, 0x71, 0x15, 0x11, 0xd2, 0xc7, 0xdb, 0x6b, 0x00= , >=20 > + 0xdc, 0x02, 0xcb, 0x5a, 0x6d, 0x2b, 0x2a, 0x75, 0xb6, 0x3f, 0xec, 0xc1= , >=20 > + 0x9d, 0xbf, 0xda, 0xe5, 0x3a, 0x77, 0x4b, 0x21, 0x1c, 0x99, 0x42, 0x84= , >=20 > + 0x5e, 0x27, 0x53, 0x9b, 0xe6, 0xc1, 0xa1, 0x95, 0x58, 0xba, 0xbe, 0x62= , >=20 > + 0x58, 0xd5, 0x09, 0xa8, 0xe6, 0xb6, 0x1b, 0xb1, 0x18, 0x28, 0x13, 0xc7= , >=20 > + 0x89, 0x1c, 0x68, 0xce, 0x15, 0xaf, 0x2e, 0x68, 0xac, 0x1c, 0xf7, 0x02= , >=20 > + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03= , >=20 > + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x50, 0xe5, 0x05, 0xa3, 0x6e= , >=20 > + 0x8f, 0x00, 0xf7, 0x93, 0x30, 0xe5, 0x25, 0x20, 0xdc, 0x8a, 0xc3, 0xad= , >=20 > + 0x14, 0x6d, 0x90, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18= , >=20 > + 0x30, 0x16, 0x80, 0x14, 0x50, 0xe5, 0x05, 0xa3, 0x6e, 0x8f, 0x00, 0xf7= , >=20 > + 0x93, 0x30, 0xe5, 0x25, 0x20, 0xdc, 0x8a, 0xc3, 0xad, 0x14, 0x6d, 0x90= , >=20 > + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05= , >=20 > + 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48= , >=20 > + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00= , >=20 > + 0x8e, 0xe4, 0x27, 0x42, 0x16, 0x6e, 0xbd, 0x28, 0x47, 0x09, 0x99, 0xc1= , >=20 > + 0x55, 0x02, 0x82, 0x1a, 0xe1, 0xd0, 0xf3, 0xef, 0x4d, 0xaf, 0x30, 0x9a= , >=20 > + 0x29, 0x4b, 0x74, 0x03, 0x6a, 0x95, 0x28, 0xf1, 0xbe, 0x62, 0x68, 0x9f= , >=20 > + 0x82, 0x59, 0x7a, 0x49, 0x91, 0xb6, 0xaf, 0x6b, 0x23, 0x30, 0xb4, 0xf4= , >=20 > + 0xdd, 0xfa, 0x30, 0x3f, 0xb6, 0xed, 0x74, 0x3f, 0x91, 0xe8, 0xd7, 0x84= , >=20 > + 0x1a, 0xf3, 0xc6, 0x3d, 0xd8, 0x59, 0x8d, 0x68, 0x6e, 0xb3, 0x66, 0x9e= , >=20 > + 0xe8, 0xeb, 0x1a, 0x8b, 0x1e, 0x92, 0x71, 0x73, 0x8c, 0x4f, 0x63, 0xce= , >=20 > + 0x71, 0x7b, 0x97, 0x3b, 0x59, 0xd2, 0x9b, 0xe4, 0xd0, 0xef, 0x31, 0x9f= , >=20 > + 0x0d, 0x61, 0x27, 0x97, 0x9d, 0xe8, 0xe0, 0xcd, 0x8d, 0xc1, 0x4d, 0xad= , >=20 > + 0xf7, 0x3a, 0x8d, 0xb8, 0x86, 0x8c, 0x23, 0x1d, 0x4c, 0x02, 0x5c, 0x53= , >=20 > + 0x46, 0x84, 0xb2, 0x97, 0x0c, 0xd3, 0x35, 0x6b >=20 > +}; >=20 > + >=20 > +// >=20 > +// X509 Cert Data for RSA Public Key Retrieving and X509 Verification > (Generated by OpenSSL utility). >=20 > +// $ openssl req -new -key TestKeyPem -out TestCertCsr -subj > "/C=3DUS/ST=3DWA/L=3DSeattle/O=3DTianocore/OU=3DEDK2CHILD/CN=3DUEFI" >=20 > +// $ openssl x509 -days 10000 -CA TestCACert.pem -CAkey TestKeyPem -req = - > out TestCert -set_serial 3432 --outform DER -in TestCertCsr >=20 > +// password should be in the PemPass variable >=20 > +// $ xxd --include TestCert >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCert[] =3D { >=20 > + 0x30, 0x82, 0x02, 0x31, 0x30, 0x82, 0x01, 0x9a, 0x02, 0x02, 0x0d, 0x68= , >=20 > + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01= , >=20 > + 0x0b, 0x05, 0x00, 0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55= , >=20 > + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03= , >=20 > + 0x55, 0x04, 0x08, 0x0c, 0x02, 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06= , >=20 > + 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c= , >=20 > + 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09= , >=20 > + 0x54, 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31, 0x0d, 0x30= , >=20 > + 0x0b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x04, 0x45, 0x44, 0x4b, 0x32= , >=20 > + 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04, 0x55= , >=20 > + 0x45, 0x46, 0x49, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x36, 0x32= , >=20 > + 0x39, 0x32, 0x33, 0x31, 0x35, 0x33, 0x36, 0x5a, 0x17, 0x0d, 0x34, 0x37= , >=20 > + 0x31, 0x31, 0x31, 0x35, 0x32, 0x33, 0x31, 0x35, 0x33, 0x36, 0x5a, 0x30= , >=20 > + 0x63, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02= , >=20 > + 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c= , >=20 > + 0x02, 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07= , >=20 > + 0x0c, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x31, 0x12, 0x30= , >=20 > + 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54, 0x69, 0x61, 0x6e= , >=20 > + 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55= , >=20 > + 0x04, 0x0b, 0x0c, 0x09, 0x45, 0x44, 0x4b, 0x32, 0x43, 0x48, 0x49, 0x4c= , >=20 > + 0x44, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04= , >=20 > + 0x55, 0x45, 0x46, 0x49, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a= , >=20 > + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81= , >=20 > + 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0x9f, 0xef, 0x1b= , >=20 > + 0x46, 0x45, 0x55, 0x33, 0x4b, 0xee, 0x95, 0x14, 0xd3, 0x5a, 0x3e, 0xd9= , >=20 > + 0x29, 0xfb, 0xd9, 0x29, 0x4e, 0x8b, 0xf1, 0xf5, 0x68, 0x7c, 0x58, 0x86= , >=20 > + 0x0c, 0xda, 0xd7, 0xe0, 0xd2, 0x9a, 0xe8, 0x37, 0x16, 0x4d, 0x54, 0x92= , >=20 > + 0x18, 0x20, 0x4c, 0x09, 0xa1, 0xcf, 0xe1, 0xaa, 0x7a, 0x5a, 0x64, 0x7e= , >=20 > + 0x5c, 0xeb, 0x4e, 0x15, 0x8e, 0x40, 0xd1, 0xcb, 0x7d, 0x01, 0x71, 0x15= , >=20 > + 0x11, 0xd2, 0xc7, 0xdb, 0x6b, 0x00, 0xdc, 0x02, 0xcb, 0x5a, 0x6d, 0x2b= , >=20 > + 0x2a, 0x75, 0xb6, 0x3f, 0xec, 0xc1, 0x9d, 0xbf, 0xda, 0xe5, 0x3a, 0x77= , >=20 > + 0x4b, 0x21, 0x1c, 0x99, 0x42, 0x84, 0x5e, 0x27, 0x53, 0x9b, 0xe6, 0xc1= , >=20 > + 0xa1, 0x95, 0x58, 0xba, 0xbe, 0x62, 0x58, 0xd5, 0x09, 0xa8, 0xe6, 0xb6= , >=20 > + 0x1b, 0xb1, 0x18, 0x28, 0x13, 0xc7, 0x89, 0x1c, 0x68, 0xce, 0x15, 0xaf= , >=20 > + 0x2e, 0x68, 0xac, 0x1c, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d= , >=20 > + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05= , >=20 > + 0x00, 0x03, 0x81, 0x81, 0x00, 0x0d, 0xa4, 0x18, 0xa2, 0xb6, 0x09, 0xe1= , >=20 > + 0x77, 0x22, 0x97, 0x46, 0x29, 0x1b, 0xd8, 0x67, 0x0a, 0xc0, 0x91, 0x36= , >=20 > + 0x53, 0xe1, 0x4c, 0x73, 0x1b, 0xc1, 0x90, 0x6d, 0x98, 0x46, 0x7e, 0x65= , >=20 > + 0x71, 0x1c, 0xf0, 0x62, 0x9f, 0x9e, 0x62, 0x0b, 0x8b, 0x73, 0x35, 0x4c= , >=20 > + 0x2d, 0xc3, 0x5d, 0x38, 0x22, 0xfe, 0x43, 0x0f, 0xf2, 0x57, 0x17, 0x75= , >=20 > + 0xa8, 0x76, 0x79, 0xab, 0x4e, 0x33, 0xa5, 0x91, 0xbd, 0x55, 0x5b, 0xc0= , >=20 > + 0x7e, 0xfb, 0x1d, 0xc9, 0xf3, 0x5f, 0x12, 0x6f, 0x7c, 0xdc, 0x24, 0x5a= , >=20 > + 0x84, 0x16, 0x28, 0x5b, 0xf9, 0xcc, 0x8b, 0xfe, 0x11, 0xe6, 0x29, 0xcf= , >=20 > + 0xac, 0x90, 0x66, 0xc0, 0x70, 0x25, 0xf8, 0x71, 0xdb, 0x29, 0xcb, 0x6b= , >=20 > + 0x10, 0xa7, 0xbe, 0x3e, 0x9d, 0x61, 0xd8, 0x04, 0xe0, 0x71, 0x63, 0x83= , >=20 > + 0xa3, 0xca, 0x26, 0x6d, 0x7f, 0xf3, 0xaa, 0x8e, 0xb2, 0x66, 0x98, 0x41= , >=20 > + 0xd6 >=20 > +}; >=20 > + >=20 > +// >=20 > +// Message Hash for Signing & Verification Validation. >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 MsgHash[] =3D { >=20 > + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, >=20 > + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Payload for PKCS#7 Signing & Verification Validation. >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Payload =3D "Payload > Data for PKCS#7 Signing"; >=20 > + >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyRsaCertPkcs1SignVerify ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + VOID *RsaPrivKey; >=20 > + VOID *RsaPubKey; >=20 > + UINT8 *Signature; >=20 > + UINTN SigSize; >=20 > + UINT8 *Subject; >=20 > + UINTN SubjectSize; >=20 > + RETURN_STATUS ReturnStatus; >=20 > + CHAR8 CommonName[64]; >=20 > + UINTN CommonNameSize; >=20 > + CHAR8 OrgName[64]; >=20 > + UINTN OrgNameSize; >=20 > + >=20 > + // >=20 > + // Retrieve RSA private key from encrypted PEM data. >=20 > + // >=20 > + Status =3D RsaGetPrivateKeyFromPem (TestKeyPem, sizeof (TestKeyPem), > PemPass, &RsaPrivKey); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Retrieve RSA public key from X509 Certificate. >=20 > + // >=20 > + RsaPubKey =3D NULL; >=20 > + Status =3D RsaGetPublicKeyFromX509 (TestCert, sizeof (TestCert), > &RsaPubKey); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Generate RSA PKCS#1 Signature. >=20 > + // >=20 > + SigSize =3D 0; >=20 > + Status =3D RsaPkcs1Sign (RsaPrivKey, MsgHash, SHA1_DIGEST_SIZE, NULL, > &SigSize); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + UT_ASSERT_NOT_EQUAL (SigSize, 0); >=20 > + >=20 > + Signature =3D AllocatePool (SigSize); >=20 > + Status =3D RsaPkcs1Sign (RsaPrivKey, MsgHash, SHA1_DIGEST_SIZE, Sig= nature, > &SigSize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Verify RSA PKCS#1-encoded Signature. >=20 > + // >=20 > + Status =3D RsaPkcs1Verify (RsaPubKey, MsgHash, SHA1_DIGEST_SIZE, Signa= ture, > SigSize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // X509 Certificate Subject Retrieving. >=20 > + // >=20 > + SubjectSize =3D 0; >=20 > + Status =3D X509GetSubjectName (TestCert, sizeof (TestCert), NULL, > &SubjectSize); >=20 > + Subject =3D (UINT8 *)AllocatePool (SubjectSize); >=20 > + Status =3D X509GetSubjectName (TestCert, sizeof (TestCert), Subject, > &SubjectSize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Get CommonName from X509 Certificate Subject >=20 > + // >=20 > + CommonNameSize =3D 64; >=20 > + ZeroMem (CommonName, CommonNameSize); >=20 > + ReturnStatus =3D X509GetCommonName (TestCert, sizeof (TestCert), > CommonName, &CommonNameSize); >=20 > + UT_ASSERT_NOT_EFI_ERROR (ReturnStatus); >=20 > + >=20 > + UT_ASSERT_EQUAL (CommonNameSize, 5); >=20 > + UT_ASSERT_MEM_EQUAL (CommonName, "UEFI", 5); >=20 > + >=20 > + OrgNameSize =3D 64; >=20 > + ZeroMem (OrgName, OrgNameSize); >=20 > + ReturnStatus =3D X509GetOrganizationName (TestCert, sizeof (TestCert), > OrgName, &OrgNameSize); >=20 > + UT_ASSERT_NOT_EFI_ERROR (ReturnStatus); >=20 > + >=20 > + UT_ASSERT_EQUAL (OrgNameSize, 10); >=20 > + UT_ASSERT_MEM_EQUAL (OrgName, "Tianocore", 10); >=20 > + >=20 > + // >=20 > + // X509 Certificate Verification. >=20 > + // >=20 > + Status =3D X509VerifyCert (TestCert, sizeof (TestCert), TestCACert, si= zeof > (TestCACert)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Release Resources. >=20 > + // >=20 > + RsaFree (RsaPubKey); >=20 > + RsaFree (RsaPrivKey); >=20 > + FreePool (Signature); >=20 > + FreePool (Subject); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyPkcs7SignVerify ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + UINT8 *P7SignedData; >=20 > + UINTN P7SignedDataSize; >=20 > + UINT8 *SignCert; >=20 > + >=20 > + P7SignedData =3D NULL; >=20 > + SignCert =3D NULL; >=20 > + >=20 > + // >=20 > + // Construct Signer Certificate from RAW data. >=20 > + // >=20 > + Status =3D X509ConstructCertificate (TestCert, sizeof (TestCert), (UIN= T8 **) > &SignCert); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_NOT_NULL (SignCert); >=20 > + >=20 > + // >=20 > + // Create PKCS#7 signedData on Payload. >=20 > + // Note: Caller should release P7SignedData manually. >=20 > + // >=20 > + Status =3D Pkcs7Sign ( >=20 > + TestKeyPem, >=20 > + sizeof (TestKeyPem), >=20 > + (CONST UINT8 *) PemPass, >=20 > + (UINT8 *) Payload, >=20 > + AsciiStrLen (Payload), >=20 > + SignCert, >=20 > + NULL, >=20 > + &P7SignedData, >=20 > + &P7SignedDataSize >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_NOT_EQUAL (P7SignedDataSize, 0); >=20 > + >=20 > + Status =3D Pkcs7Verify ( >=20 > + P7SignedData, >=20 > + P7SignedDataSize, >=20 > + TestCACert, >=20 > + sizeof (TestCACert), >=20 > + (UINT8 *) Payload, >=20 > + AsciiStrLen (Payload) >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + if (P7SignedData !=3D NULL) { >=20 > + FreePool (P7SignedData); >=20 > + } >=20 > + if (SignCert !=3D NULL) { >=20 > + X509Free (SignCert); >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mRsaCertTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------------Class------= ---------------- > Function-----------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyRsaCertPkcs1SignVerify()", "CryptoPkg.BaseCryptLib.RsaCe= rt", > TestVerifyRsaCertPkcs1SignVerify, NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mRsaCertTestNum =3D ARRAY_SIZE(mRsaCertTest); >=20 > + >=20 > +TEST_DESC mPkcs7Test[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------------Class------= ---------------- > Function-----------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyPkcs7SignVerify()", "CryptoPkg.BaseCryptLib.Pkcs7= ", > TestVerifyPkcs7SignVerify, NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mPkcs7TestNum =3D ARRAY_SIZE(mPkcs7Test); >=20 > 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 >=20 > + Application for RSA Primitives Validation. >=20 > + >=20 > +Copyright (c) 2010, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +#define RSA_MODULUS_LENGTH 512 >=20 > + >=20 > +// >=20 > +// RSA PKCS#1 Validation Data from OpenSSL "Fips_rsa_selftest.c" >=20 > +// >=20 > + >=20 > +// >=20 > +// Public Modulus of RSA Key >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaN[] =3D { >=20 > + 0xBB, 0xF8, 0x2F, 0x09, 0x06, 0x82, 0xCE, 0x9C, 0x23, 0x38, 0xAC, 0x2B= , 0x9D, > 0xA8, 0x71, 0xF7, >=20 > + 0x36, 0x8D, 0x07, 0xEE, 0xD4, 0x10, 0x43, 0xA4, 0x40, 0xD6, 0xB6, 0xF0= , 0x74, > 0x54, 0xF5, 0x1F, >=20 > + 0xB8, 0xDF, 0xBA, 0xAF, 0x03, 0x5C, 0x02, 0xAB, 0x61, 0xEA, 0x48, 0xCE= , > 0xEB, 0x6F, 0xCD, 0x48, >=20 > + 0x76, 0xED, 0x52, 0x0D, 0x60, 0xE1, 0xEC, 0x46, 0x19, 0x71, 0x9D, 0x8A= , > 0x5B, 0x8B, 0x80, 0x7F, >=20 > + 0xAF, 0xB8, 0xE0, 0xA3, 0xDF, 0xC7, 0x37, 0x72, 0x3E, 0xE6, 0xB4, 0xB7= , 0xD9, > 0x3A, 0x25, 0x84, >=20 > + 0xEE, 0x6A, 0x64, 0x9D, 0x06, 0x09, 0x53, 0x74, 0x88, 0x34, 0xB2, 0x45= , 0x45, > 0x98, 0x39, 0x4E, >=20 > + 0xE0, 0xAA, 0xB1, 0x2D, 0x7B, 0x61, 0xA5, 0x1F, 0x52, 0x7A, 0x9A, 0x41= , 0xF6, > 0xC1, 0x68, 0x7F, >=20 > + 0xE2, 0x53, 0x72, 0x98, 0xCA, 0x2A, 0x8F, 0x59, 0x46, 0xF8, 0xE5, 0xFD= , 0x09, > 0x1D, 0xBD, 0xCB >=20 > + }; >=20 > + >=20 > +// >=20 > +// Public Exponent of RSA Key >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaE[] =3D { 0x11 }; >=20 > + >=20 > +// >=20 > +// Private Exponent of RSA Key >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaD[] =3D { >=20 > + 0xA5, 0xDA, 0xFC, 0x53, 0x41, 0xFA, 0xF2, 0x89, 0xC4, 0xB9, 0x88, 0xDB= , 0x30, > 0xC1, 0xCD, 0xF8, >=20 > + 0x3F, 0x31, 0x25, 0x1E, 0x06, 0x68, 0xB4, 0x27, 0x84, 0x81, 0x38, 0x01= , 0x57, > 0x96, 0x41, 0xB2, >=20 > + 0x94, 0x10, 0xB3, 0xC7, 0x99, 0x8D, 0x6B, 0xC4, 0x65, 0x74, 0x5E, 0x5C= , 0x39, > 0x26, 0x69, 0xD6, >=20 > + 0x87, 0x0D, 0xA2, 0xC0, 0x82, 0xA9, 0x39, 0xE3, 0x7F, 0xDC, 0xB8, 0x2E= , > 0xC9, 0x3E, 0xDA, 0xC9, >=20 > + 0x7F, 0xF3, 0xAD, 0x59, 0x50, 0xAC, 0xCF, 0xBC, 0x11, 0x1C, 0x76, 0xF1= , 0xA9, > 0x52, 0x94, 0x44, >=20 > + 0xE5, 0x6A, 0xAF, 0x68, 0xC5, 0x6C, 0x09, 0x2C, 0xD3, 0x8D, 0xC3, 0xBE= , > 0xF5, 0xD2, 0x0A, 0x93, >=20 > + 0x99, 0x26, 0xED, 0x4F, 0x74, 0xA1, 0x3E, 0xDD, 0xFB, 0xE1, 0xA1, 0xCE= , > 0xCC, 0x48, 0x94, 0xAF, >=20 > + 0x94, 0x28, 0xC2, 0xB7, 0xB8, 0x88, 0x3F, 0xE4, 0x46, 0x3A, 0x4B, 0xC8= , 0x5B, > 0x1C, 0xB3, 0xC1 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Known Answer Test (KAT) Data for RSA PKCS#1 Signing >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 RsaSignData[] =3D > "OpenSSL FIPS 140-2 Public Key RSA KAT"; >=20 > + >=20 > +// >=20 > +// Known Signature for the above message, under SHA-1 Digest >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaPkcs1Signature[] =3D { >=20 > + 0x71, 0xEE, 0x1A, 0xC0, 0xFE, 0x01, 0x93, 0x54, 0x79, 0x5C, 0xF2, 0x4C= , 0x4A, > 0xFD, 0x1A, 0x05, >=20 > + 0x8F, 0x64, 0xB1, 0x6D, 0x61, 0x33, 0x8D, 0x9B, 0xE7, 0xFD, 0x60, 0xA3= , 0x83, > 0xB5, 0xA3, 0x51, >=20 > + 0x55, 0x77, 0x90, 0xCF, 0xDC, 0x22, 0x37, 0x8E, 0xD0, 0xE1, 0xAE, 0x09= , 0xE3, > 0x3D, 0x1E, 0xF8, >=20 > + 0x80, 0xD1, 0x8B, 0xC2, 0xEC, 0x0A, 0xD7, 0x6B, 0x88, 0x8B, 0x8B, 0xA1= , > 0x20, 0x22, 0xBE, 0x59, >=20 > + 0x5B, 0xE0, 0x23, 0x24, 0xA1, 0x49, 0x30, 0xBA, 0xA9, 0x9E, 0xE8, 0xB1= , 0x8A, > 0x62, 0x16, 0xBF, >=20 > + 0x4E, 0xCA, 0x2E, 0x4E, 0xBC, 0x29, 0xA8, 0x67, 0x13, 0xB7, 0x9F, 0x1D= , 0x04, > 0x44, 0xE5, 0x5F, >=20 > + 0x35, 0x07, 0x11, 0xBC, 0xED, 0x19, 0x37, 0x21, 0xCF, 0x23, 0x48, 0x1F= , 0x72, > 0x05, 0xDE, 0xE6, >=20 > + 0xE8, 0x7F, 0x33, 0x8A, 0x76, 0x4B, 0x2F, 0x95, 0xDF, 0xF1, 0x5F, 0x84= , 0x80, > 0xD9, 0x46, 0xB4 >=20 > + }; >=20 > + >=20 > +// >=20 > +// Default public key 0x10001 =3D 65537 >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DefaultPublicKey[] =3D { >=20 > + 0x01, 0x00, 0x01 >=20 > +}; >=20 > + >=20 > +VOID *mRsa; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyRsaPreReq ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + mRsa =3D RsaNew (); >=20 > + >=20 > + if (mRsa =3D=3D NULL) { >=20 > + return UNIT_TEST_ERROR_TEST_FAILED; >=20 > + } >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +VOID >=20 > +EFIAPI >=20 > +TestVerifyRsaCleanUp ( >=20 > + UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + if (mRsa !=3D NULL) { >=20 > + RsaFree (mRsa); >=20 > + mRsa =3D NULL; >=20 > + } >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyRsaSetGetKeyComponents ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + UINTN KeySize; >=20 > + UINT8 *KeyBuffer; >=20 > + >=20 > + // >=20 > + // Set/Get RSA Key Components >=20 > + // >=20 > + >=20 > + // >=20 > + // Set/Get RSA Key N >=20 > + // >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof (RsaN)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + KeySize =3D 0; >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyN, NULL, &KeySize); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, sizeof (RsaN)); >=20 > + >=20 > + KeyBuffer =3D AllocatePool (KeySize); >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyN, KeyBuffer, &KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, sizeof (RsaN)); >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (KeyBuffer, RsaN, KeySize); >=20 > + >=20 > + FreePool (KeyBuffer); >=20 > + >=20 > + // >=20 > + // Set/Get RSA Key E >=20 > + // >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof (RsaE)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + KeySize =3D 0; >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyE, NULL, &KeySize); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, sizeof (RsaE)); >=20 > + >=20 > + KeyBuffer =3D AllocatePool (KeySize); >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyE, KeyBuffer, &KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, sizeof (RsaE)); >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (KeyBuffer, RsaE, KeySize); >=20 > + >=20 > + FreePool (KeyBuffer); >=20 > + >=20 > + // >=20 > + // Clear/Get RSA Key Components >=20 > + // >=20 > + >=20 > + // >=20 > + // Clear/Get RSA Key N >=20 > + // >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyN, NULL, 0); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + KeySize =3D 1; >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyN, NULL, &KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, 0); >=20 > + >=20 > + // >=20 > + // Clear/Get RSA Key E >=20 > + // >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyE, NULL, 0); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + KeySize =3D 1; >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyE, NULL, &KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, 0); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyRsaGenerateKeyComponents ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + UINTN KeySize; >=20 > + UINT8 *KeyBuffer; >=20 > + >=20 > + // >=20 > + // Generate RSA Key Components >=20 > + // >=20 > + >=20 > + Status =3D RsaGenerateKey (mRsa, RSA_MODULUS_LENGTH, NULL, 0); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + KeySize =3D RSA_MODULUS_LENGTH / 8; >=20 > + KeyBuffer =3D AllocatePool (KeySize); >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyE, KeyBuffer, &KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, 3); >=20 > + UT_ASSERT_MEM_EQUAL (KeyBuffer, DefaultPublicKey, 3); >=20 > + >=20 > + KeySize =3D RSA_MODULUS_LENGTH / 8; >=20 > + Status =3D RsaGetKey (mRsa, RsaKeyN, KeyBuffer, &KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_EQUAL (KeySize, RSA_MODULUS_LENGTH / 8); >=20 > + >=20 > + Status =3D RsaCheckKey (mRsa); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Check invalid RSA key components >=20 > + // >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof (RsaN)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D RsaCheckKey (mRsa); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyN, KeyBuffer, KeySize); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D RsaCheckKey (mRsa); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof (RsaE)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D RsaCheckKey (mRsa); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + >=20 > + FreePool (KeyBuffer); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyRsaPkcs1SignVerify ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + UINT8 HashValue[SHA1_DIGEST_SIZE]; >=20 > + UINTN HashSize; >=20 > + UINT8 *Signature; >=20 > + UINTN SigSize; >=20 > + BOOLEAN Status; >=20 > + >=20 > + // >=20 > + // SHA-1 Digest Message for PKCS#1 Signature >=20 > + // >=20 > + HashSize =3D SHA1_DIGEST_SIZE; >=20 > + ZeroMem (HashValue, HashSize); >=20 > + >=20 > + Status =3D Sha1HashAll (RsaSignData, AsciiStrLen (RsaSignData), HashV= alue); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + // >=20 > + // Sign RSA PKCS#1-encoded Signature >=20 > + // >=20 > + >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof (RsaN)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof (RsaE)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + Status =3D RsaSetKey (mRsa, RsaKeyD, RsaD, sizeof (RsaD)); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + SigSize =3D 0; >=20 > + Status =3D RsaPkcs1Sign (mRsa, HashValue, HashSize, NULL, &SigSize); >=20 > + UT_ASSERT_FALSE (Status); >=20 > + UT_ASSERT_NOT_EQUAL (SigSize, 0); >=20 > + >=20 > + Signature =3D AllocatePool (SigSize); >=20 > + Status =3D RsaPkcs1Sign (mRsa, HashValue, HashSize, Signature, &SigSi= ze); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + UT_ASSERT_EQUAL (SigSize, sizeof (RsaPkcs1Signature)); >=20 > + >=20 > + UT_ASSERT_MEM_EQUAL (Signature, RsaPkcs1Signature, SigSize); >=20 > + >=20 > + // >=20 > + // Verify RSA PKCS#1-encoded Signature >=20 > + // >=20 > + Status =3D RsaPkcs1Verify (mRsa, HashValue, HashSize, Signature, SigSi= ze); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + return UNIT_TEST_PASSED; >=20 > +} >=20 > + >=20 > +TEST_DESC mRsaTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------------Class------= ---------------- > Function---------------------------------Pre---------------------Post----= -----Context >=20 > + // >=20 > + {"TestVerifyRsaSetGetKeyComponents()", "CryptoPkg.BaseCryptLib= .Rsa", > TestVerifyRsaSetGetKeyComponents, TestVerifyRsaPreReq, > TestVerifyRsaCleanUp, NULL}, >=20 > + {"TestVerifyRsaGenerateKeyComponents()", "CryptoPkg.BaseCryptLib= .Rsa", > TestVerifyRsaGenerateKeyComponents, TestVerifyRsaPreReq, > TestVerifyRsaCleanUp, NULL}, >=20 > + {"TestVerifyRsaPkcs1SignVerify()", "CryptoPkg.BaseCryptLib= .Rsa", > TestVerifyRsaPkcs1SignVerify, TestVerifyRsaPreReq, TestVerifyRs= aCleanUp, > NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mRsaTestNum =3D ARRAY_SIZE(mRsaTest); >=20 > 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 >=20 > + Sample Implementation for RFC3161 Time Stamping Verification. >=20 > + >=20 > +Copyright (c) 2014, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > +// >=20 > +// Sample Authenticode Data with RFC3161 time stamping signature. >=20 > +// The data retrieved from one signed sample UEFI image, which is genera= ted > by MSFT's signtool >=20 > +// utility in conjunction with RFC3161 timestamping, as the following co= mmand: >=20 > +// signtool sign /ac / f /p /fd >=20 > +// /tr http://timestamp.comodoca.com/rfc3161 sample.efi >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithTS[] =3D { >=20 > + 0x30, 0x82, 0x0c, 0x00, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d= , 0x01, > 0x07, 0x02, 0xa0, >=20 > + 0x82, 0x0b, 0xf1, 0x30, 0x82, 0x0b, 0xed, 0x02, 0x01, 0x01, 0x31, 0x0f= , 0x30, > 0x0d, 0x06, 0x09, >=20 > + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30= , 0x78, > 0x06, 0x0a, 0x2b, >=20 > + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x6a, 0x30= , 0x68, > 0x30, 0x33, 0x06, >=20 > + 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f, 0x30= , 0x25, > 0x03, 0x01, 0x00, >=20 > + 0xa0, 0x20, 0xa2, 0x1e, 0x80, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c= , 0x00, > 0x4f, 0x00, 0x62, >=20 > + 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65= , 0x00, > 0x3e, 0x00, 0x3e, >=20 > + 0x00, 0x3e, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01= , 0x65, > 0x03, 0x04, 0x02, >=20 > + 0x01, 0x05, 0x00, 0x04, 0x20, 0x1e, 0x9e, 0x74, 0x31, 0xe1, 0x3e, 0x51= , 0x46, > 0xab, 0xce, 0x10, >=20 > + 0x0d, 0x7c, 0x38, 0x66, 0x34, 0xd4, 0xdd, 0x04, 0xa5, 0xe7, 0x75, 0x40= , 0xdd, > 0x99, 0x73, 0xf3, >=20 > + 0x2a, 0x54, 0x3e, 0xa8, 0x18, 0xa0, 0x82, 0x01, 0xee, 0x30, 0x82, 0x01= , 0xea, > 0x30, 0x82, 0x01, >=20 > + 0x57, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x2c, 0x65, 0xcf, 0xcf= , 0xdd, > 0x61, 0x7b, 0xa4, >=20 > + 0x41, 0xad, 0x26, 0x1b, 0x63, 0xce, 0x91, 0x0f, 0x30, 0x09, 0x06, 0x05= , 0x2b, > 0x0e, 0x03, 0x02, >=20 > + 0x1d, 0x05, 0x00, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55= , 0x04, > 0x03, 0x13, 0x08, >=20 > + 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d= , 0x31, > 0x34, 0x30, 0x37, >=20 > + 0x32, 0x38, 0x30, 0x37, 0x33, 0x38, 0x35, 0x39, 0x5a, 0x17, 0x0d, 0x33= , 0x39, > 0x31, 0x32, 0x33, >=20 > + 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x12, 0x31, 0x10= , 0x30, > 0x0e, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x13, 0x07, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x62= , 0x30, > 0x81, 0x9f, 0x30, >=20 > + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01= , 0x05, > 0x00, 0x03, 0x81, >=20 > + 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0x94, 0xa6, 0x02= , 0x15, > 0x87, 0xd6, 0xbf, >=20 > + 0x71, 0xe8, 0xc6, 0x68, 0xf6, 0x9f, 0x66, 0x09, 0x6c, 0xe7, 0x39, 0x52= , 0xf4, > 0x4e, 0xaf, 0xf5, >=20 > + 0xe0, 0xba, 0x0f, 0xfd, 0xe6, 0x77, 0xa9, 0x71, 0x5b, 0x5c, 0x92, 0x50= , 0x1d, > 0xfd, 0x9b, 0x6e, >=20 > + 0x52, 0x92, 0x9e, 0x3a, 0x75, 0x86, 0x41, 0x2a, 0x41, 0x30, 0x1b, 0x67= , 0x66, > 0x91, 0xde, 0x71, >=20 > + 0x84, 0xe0, 0x90, 0xc3, 0x50, 0x36, 0x78, 0xb5, 0xa0, 0x1e, 0x72, 0xde= , 0xe7, > 0x66, 0x42, 0x4f, >=20 > + 0x59, 0x5e, 0x3d, 0xf3, 0x85, 0x82, 0x0b, 0xa8, 0x26, 0x2d, 0xd9, 0xe3= , 0x14, > 0xda, 0x9d, 0x2e, >=20 > + 0x3f, 0x53, 0x4d, 0x8d, 0x10, 0xbf, 0xa4, 0x7c, 0xe5, 0xaf, 0x3a, 0xa6= , 0xaf, > 0x49, 0x64, 0xb0, >=20 > + 0x60, 0x17, 0x87, 0x71, 0x77, 0x59, 0x52, 0xe5, 0x5a, 0xed, 0x96, 0x7d= , 0x7e, > 0x5d, 0xc1, 0xef, >=20 > + 0x6b, 0xfb, 0x80, 0xc5, 0x2b, 0x10, 0xfe, 0xe7, 0xd3, 0x02, 0x03, 0x01= , 0x00, > 0x01, 0xa3, 0x48, >=20 > + 0x30, 0x46, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x01, 0x04, 0x3d, 0x30= , 0x3b, > 0x80, 0x10, 0x19, >=20 > + 0x8d, 0x48, 0xa1, 0xb9, 0xf3, 0x5e, 0x3c, 0x13, 0xb4, 0x08, 0xb6, 0xd9= , 0xf3, > 0x4f, 0x0a, 0xa1, >=20 > + 0x15, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03= , 0x13, > 0x08, 0x54, 0x65, >=20 > + 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x82, 0x10, 0x27, 0xcb, 0x16, 0x33= , 0x8b, > 0xed, 0x4d, 0xa8, >=20 > + 0x47, 0xf0, 0x86, 0x47, 0x10, 0xef, 0x15, 0xd9, 0x30, 0x09, 0x06, 0x05= , 0x2b, > 0x0e, 0x03, 0x02, >=20 > + 0x1d, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x51, 0x94, 0xed, 0x7a, 0x5c= , 0x0b, > 0x34, 0x16, 0x9c, >=20 > + 0xf4, 0x5f, 0x88, 0x16, 0xa8, 0x4b, 0x13, 0xfc, 0xa4, 0x0a, 0xc7, 0xd9= , 0x20, > 0xb1, 0x93, 0xc5, >=20 > + 0x81, 0x4f, 0x35, 0x3a, 0x89, 0x10, 0x04, 0xc4, 0xcc, 0x10, 0x34, 0xc3= , 0x15, > 0x57, 0x06, 0x97, >=20 > + 0xee, 0x06, 0x2f, 0xf3, 0x24, 0xa1, 0xe6, 0x3a, 0x89, 0x4d, 0xb4, 0x7b= , 0x12, > 0x87, 0x90, 0x8c, >=20 > + 0xfc, 0x5b, 0xb0, 0xf0, 0xdd, 0xaa, 0x3a, 0x24, 0x6d, 0x55, 0x47, 0x8a= , 0xf2, > 0x61, 0x08, 0x7a, >=20 > + 0x59, 0x5f, 0x6e, 0x7b, 0xcb, 0x34, 0xbe, 0xb6, 0x5d, 0xcb, 0x60, 0xae= , 0xc4, > 0xda, 0x62, 0xbb, >=20 > + 0x7f, 0x17, 0x1e, 0x73, 0xd1, 0x4e, 0x9f, 0x6e, 0xd3, 0xc8, 0x35, 0x58= , 0x30, > 0xd2, 0x89, 0xe5, >=20 > + 0x22, 0x5e, 0x86, 0xac, 0x7a, 0x56, 0xd6, 0x70, 0xdb, 0x54, 0x10, 0x6c= , 0xd3, > 0xd5, 0x38, 0xfb, >=20 > + 0x69, 0xcb, 0x4f, 0x36, 0x83, 0xc2, 0xe8, 0x31, 0x82, 0x09, 0x69, 0x30= , 0x82, > 0x09, 0x65, 0x02, >=20 > + 0x01, 0x01, 0x30, 0x27, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x13, >=20 > + 0x08, 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x02, 0x10, 0x2c= , 0x65, > 0xcf, 0xcf, 0xdd, >=20 > + 0x61, 0x7b, 0xa4, 0x41, 0xad, 0x26, 0x1b, 0x63, 0xce, 0x91, 0x0f, 0x30= , 0x0d, > 0x06, 0x09, 0x60, >=20 > + 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0xa0, 0x5e= , 0x30, > 0x10, 0x06, 0x0a, >=20 > + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0c, 0x31, 0x02= , 0x30, > 0x00, 0x30, 0x19, >=20 > + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31= , 0x0c, > 0x06, 0x0a, 0x2b, >=20 > + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x2f, 0x06= , 0x09, > 0x2a, 0x86, 0x48, >=20 > + 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x22, 0x04, 0x20, 0x97, 0x6e= , 0x29, > 0x47, 0xc4, 0x03, >=20 > + 0x68, 0x70, 0x1c, 0x99, 0x2c, 0x61, 0xb0, 0xbc, 0xde, 0x77, 0xe1, 0xa1= , 0xeb, > 0x4c, 0x1c, 0xac, >=20 > + 0x4c, 0x64, 0xf6, 0x43, 0x96, 0x94, 0x0b, 0xc0, 0xbb, 0x03, 0x30, 0x0d= , 0x06, > 0x09, 0x2a, 0x86, >=20 > + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x81, 0x80= , 0x85, > 0x93, 0xad, 0x93, >=20 > + 0x92, 0x9e, 0xa4, 0x94, 0x30, 0x02, 0xe1, 0xc8, 0xcd, 0x37, 0xb2, 0xe1= , 0xcb, > 0xb2, 0x0f, 0x1c, >=20 > + 0x67, 0xd1, 0xc9, 0xeb, 0x4d, 0x68, 0x85, 0x97, 0x5a, 0xa6, 0x0c, 0x03= , 0xc7, > 0x86, 0xae, 0xb3, >=20 > + 0x35, 0xb4, 0x1d, 0x0e, 0x95, 0x5f, 0xed, 0x37, 0x13, 0x6b, 0x1e, 0x94= , 0x80, > 0xf1, 0xac, 0x55, >=20 > + 0x73, 0xd1, 0x31, 0xf9, 0xad, 0x13, 0x7b, 0x26, 0xbf, 0xe7, 0x55, 0x7b= , 0xb2, > 0xf9, 0x21, 0x42, >=20 > + 0x23, 0x64, 0xe6, 0x45, 0x03, 0x67, 0xcb, 0x42, 0xd3, 0x71, 0x3f, 0xd5= , 0x29, > 0x17, 0x4b, 0x49, >=20 > + 0x45, 0x0e, 0x8b, 0xba, 0x1f, 0x15, 0x5a, 0x7f, 0x7b, 0x5e, 0x9b, 0x22= , 0x46, > 0xa7, 0x9c, 0x0d, >=20 > + 0x25, 0x9c, 0x76, 0x25, 0x02, 0xc8, 0x15, 0x00, 0x51, 0xe6, 0x73, 0x39= , 0xac, > 0x8d, 0x41, 0x7b, >=20 > + 0xc8, 0x42, 0xc9, 0xdb, 0x1b, 0x16, 0x13, 0xf6, 0x44, 0x32, 0xef, 0x17= , 0xa1, > 0x82, 0x08, 0x34, >=20 > + 0x30, 0x82, 0x08, 0x30, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82= , 0x37, > 0x03, 0x03, 0x01, >=20 > + 0x31, 0x82, 0x08, 0x20, >=20 > + 0x30, 0x82, 0x08, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d= , 0x01, > 0x07, 0x02, 0xa0, >=20 > + 0x82, 0x08, 0x0d, 0x30, 0x82, 0x08, 0x09, 0x02, 0x01, 0x03, 0x31, 0x0b= , 0x30, > 0x09, 0x06, 0x05, >=20 > + 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x30, 0x81, 0xf6, 0x06, 0x0b= , 0x2a, > 0x86, 0x48, 0x86, >=20 > + 0xf7, 0x0d, 0x01, 0x09, 0x10, 0x01, 0x04, 0xa0, 0x81, 0xe6, 0x04, 0x81= , 0xe3, > 0x30, 0x81, 0xe0, >=20 > + 0x02, 0x01, 0x01, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb2, 0x31= , 0x02, > 0x01, 0x01, 0x30, >=20 > + 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00= , 0x04, > 0x14, 0xcd, 0x06, >=20 > + 0xf0, 0xbd, 0x8b, 0xcd, 0x5c, 0x2e, 0x5a, 0x7c, 0x42, 0x56, 0x2c, 0x20= , 0x4a, > 0x15, 0xcb, 0x1d, >=20 > + 0x8b, 0x0e, 0x02, 0x15, 0x00, 0xb6, 0xff, 0x47, 0x05, 0xb6, 0x2d, 0x15= , 0xac, > 0x3f, 0x5d, 0xd9, >=20 > + 0xcf, 0x9d, 0x54, 0x35, 0x56, 0x7c, 0xc1, 0x6e, 0x8b, 0x18, 0x0f, 0x32= , 0x30, > 0x31, 0x34, 0x30, >=20 > + 0x37, 0x32, 0x38, 0x30, 0x38, 0x35, 0x30, 0x30, 0x33, 0x5a, 0xa0, 0x81= , 0x83, > 0xa4, 0x81, 0x80, >=20 > + 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13= , 0x02, > 0x47, 0x42, 0x31, >=20 > + 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72= , 0x65, > 0x61, 0x74, 0x65, >=20 > + 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72= , 0x31, > 0x10, 0x30, 0x0e, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f= , 0x72, > 0x64, 0x31, 0x1a, >=20 > + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d= , 0x4f, > 0x44, 0x4f, 0x20, >=20 > + 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x24= , 0x30, > 0x22, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x13, 0x1b, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20= , 0x54, > 0x69, 0x6d, 0x65, >=20 > + 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x69= , 0x67, > 0x6e, 0x65, 0x72, >=20 > + 0xa0, 0x82, 0x04, 0x97, 0x30, 0x82, 0x04, 0x93, 0x30, 0x82, 0x03, 0x7b= , 0xa0, > 0x03, 0x02, 0x01, >=20 > + 0x02, 0x02, 0x10, 0x47, 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c= , 0xe1, > 0x42, 0xd2, 0xa2, >=20 > + 0x87, 0x07, 0xbe, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7= , 0x0d, > 0x01, 0x01, 0x05, >=20 > + 0x05, 0x00, 0x30, 0x81, 0x95, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55= , 0x04, > 0x06, 0x13, 0x02, >=20 > + 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13= , 0x02, > 0x55, 0x54, 0x31, >=20 > + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0e, 0x53, 0x61= , 0x6c, > 0x74, 0x20, 0x4c, >=20 > + 0x61, 0x6b, 0x65, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x0a, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54= , 0x52, > 0x55, 0x53, 0x54, >=20 > + 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x0b, 0x13, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77= , 0x77, > 0x2e, 0x75, 0x73, >=20 > + 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31= , 0x1d, > 0x30, 0x1b, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x03, 0x13, 0x14, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53= , 0x45, > 0x52, 0x46, 0x69, >=20 > + 0x72, 0x73, 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x30, 0x1e= , 0x17, > 0x0d, 0x31, 0x30, >=20 > + 0x30, 0x35, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17= , 0x0d, > 0x31, 0x35, 0x30, >=20 > + 0x35, 0x31, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e= , 0x31, > 0x0b, 0x30, 0x09, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30= , 0x19, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20= , 0x4d, > 0x61, 0x6e, 0x63, >=20 > + 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03= , 0x55, > 0x04, 0x07, 0x13, >=20 > + 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41= , 0x20, > 0x4c, 0x69, 0x6d, >=20 > + 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04= , 0x03, > 0x13, 0x1b, 0x43, >=20 > + 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53= , 0x74, > 0x61, 0x6d, 0x70, >=20 > + 0x69, 0x6e, 0x67, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x30, 0x82= , 0x01, > 0x22, 0x30, 0x0d, >=20 > + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05= , 0x00, > 0x03, 0x82, 0x01, >=20 > + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbc= , 0x35, > 0xa0, 0x36, 0x70, >=20 > + 0x22, 0x81, 0x11, 0xc3, 0xb2, 0x83, 0xb9, 0xd3, 0x28, 0xc6, 0x36, 0xcd= , 0x25, > 0x6b, 0xa9, 0x7b, >=20 > + 0xb2, 0x1c, 0xf6, 0x9b, 0x51, 0x9c, 0xef, 0x35, 0xf4, 0xed, 0x08, 0x8e= , 0x5e, > 0x38, 0x08, 0xf8, >=20 > + 0x77, 0x3c, 0x0a, 0x42, 0xe0, 0xf3, 0x70, 0xdc, 0xa3, 0xd7, 0xca, 0xf5= , 0x4c, > 0x0b, 0xcf, 0xff, >=20 > + 0x22, 0x9c, 0x0a, 0x7e, 0x68, 0xd6, 0x09, 0xa2, 0x2a, 0x84, 0x7b, 0xa6= , 0x9d, > 0xb4, 0xa9, 0xc1, >=20 > + 0x33, 0xe2, 0xef, 0x1f, 0x17, 0x48, 0xca, 0x3a, 0xcd, 0x46, 0xe6, 0xc5= , 0xaa, > 0x77, 0xbd, 0xe3, >=20 > + 0x77, 0x9a, 0xfa, 0x47, 0x53, 0x40, 0x28, 0x59, 0x43, 0x93, 0xf1, 0xa4= , 0x81, > 0xea, 0xef, 0x80, >=20 > + 0xb5, 0x4f, 0xa7, 0x08, 0xce, 0xba, 0x6e, 0xbc, 0xca, 0x76, 0x0c, 0x97= , 0x64, > 0x59, 0x86, 0x24, >=20 > + 0xbb, 0x3d, 0x82, 0x90, 0xa8, 0x55, 0xb1, 0x92, 0xd3, 0xa0, 0xa7, 0x05= , 0xac, > 0x9f, 0x53, 0x25, >=20 > + 0x08, 0x10, 0x47, 0x99, 0xcd, 0x98, 0xde, 0x68, 0xe5, 0xb4, 0x50, 0x78= , 0xa3, > 0xaf, 0x01, 0xcc, >=20 > + 0x59, 0x43, 0x58, 0xe4, 0x76, 0x6e, 0x7e, 0xac, 0xc7, 0xe2, 0x9e, 0x1f= , 0x4f, > 0xb0, 0x47, 0x2d, >=20 > + 0xc8, 0x0c, 0xa3, 0x49, 0x27, 0x80, 0x75, 0x8c, 0xbb, 0x06, 0x91, 0x65= , 0x0f, > 0x90, 0x9b, 0xf4, >=20 > + 0xba, 0xd1, 0x81, 0xc8, 0x5c, 0x6a, 0xec, 0x14, 0xe9, 0x25, 0x09, 0xbf= , 0x23, > 0x16, 0xf4, 0x95, >=20 > + 0x46, 0x40, 0x40, 0x21, 0xbb, 0x83, 0x96, 0xfd, 0x86, 0x1f, 0x7a, 0xc8= , 0x0d, > 0x10, 0x8e, 0xa2, >=20 > + 0xf8, 0x19, 0x07, 0x58, 0x7f, 0x9f, 0xbd, 0x37, 0x02, 0x60, 0xf2, 0xa4= , 0xe9, > 0x9d, 0x44, 0x3f, >=20 > + 0x30, 0x05, 0xe4, 0xa7, 0x70, 0x99, 0x51, 0x9a, 0xe8, 0x17, 0xf1, 0x55= , 0xca, > 0xb2, 0x61, 0x89, >=20 > + 0x65, 0x46, 0xa7, 0x6a, 0xf2, 0x58, 0x46, 0x7e, 0xaa, 0xa0, 0x07, 0x02= , 0x03, > 0x01, 0x00, 0x01, >=20 > + 0xa3, 0x81, 0xf4, 0x30, 0x81, 0xf1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d= , 0x23, > 0x04, 0x18, 0x30, >=20 > + 0x16, 0x80, 0x14, 0xda, 0xed, 0x64, 0x74, 0x14, 0x9c, 0x14, 0x3c, 0xab= , 0xdd, > 0x99, 0xa9, 0xbd, >=20 > + 0x5b, 0x28, 0x4d, 0x8b, 0x3c, 0xc9, 0xd8, 0x30, 0x1d, 0x06, 0x03, 0x55= , 0x1d, > 0x0e, 0x04, 0x16, >=20 > + 0x04, 0x14, 0x2e, 0x2d, 0xb0, 0x0a, 0x44, 0x4a, 0xd3, 0x87, 0xc0, 0x02= , 0x07, > 0xce, 0x97, 0x7d, >=20 > + 0x50, 0x62, 0x20, 0xfd, 0x0f, 0x83, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d= , 0x0f, > 0x01, 0x01, 0xff, >=20 > + 0x04, 0x04, 0x03, 0x02, 0x06, 0xc0, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d= , 0x13, > 0x01, 0x01, 0xff, >=20 > + 0x04, 0x02, 0x30, 0x00, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x01= , 0x01, > 0xff, 0x04, 0x0c, >=20 > + 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08= , 0x30, > 0x42, 0x06, 0x03, >=20 > + 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0= , 0x33, > 0x86, 0x31, 0x68, >=20 > + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x75, 0x73= , 0x65, > 0x72, 0x74, 0x72, >=20 > + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x55, 0x54, 0x4e, 0x2d= , 0x55, > 0x53, 0x45, 0x52, >=20 > + 0x46, 0x69, 0x72, 0x73, 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74= , 0x2e, > 0x63, 0x72, 0x6c, >=20 > + 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01= , 0x04, > 0x29, 0x30, 0x27, >=20 > + 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01= , 0x86, > 0x19, 0x68, 0x74, >=20 > + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73= , 0x65, > 0x72, 0x74, 0x72, >=20 > + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a= , 0x86, > 0x48, 0x86, 0xf7, >=20 > + 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xc8= , 0xfb, > 0x63, 0xf8, 0x0b, >=20 > + 0x75, 0x75, 0x2c, 0x3a, 0xf1, 0xf2, 0x13, 0xa7, 0x2d, 0xb6, 0xa3, 0x1a= , 0x9c, > 0xad, 0x01, 0x07, >=20 > + 0xd3, 0x34, 0x8e, 0x77, 0xe0, 0xc2, 0x6e, 0xae, 0x02, 0x5d, 0x48, 0x4f= , 0xa4, > 0xd2, 0x21, 0xb6, >=20 > + 0x36, 0xfd, 0x2a, 0x35, 0x43, 0x7c, 0x6b, 0xdf, 0x80, 0x87, 0x0b, 0x15= , 0xf0, > 0x76, 0x32, 0x00, >=20 > + 0xb4, 0xce, 0xb5, 0x67, 0xa4, 0x2f, 0x2f, 0x20, 0x1b, 0x9c, 0x54, 0x9e= , 0x83, > 0x3f, 0x1f, 0x5f, >=20 > + 0x14, 0x95, 0x62, 0x82, 0x0f, 0x22, 0x41, 0x22, 0x1f, 0x70, 0xb3, 0xf3= , 0xf7, > 0x42, 0xde, 0x6c, >=20 > + 0x51, 0xcd, 0x4b, 0xf8, 0x21, 0xac, 0x9b, 0x3b, 0x8c, 0xb1, 0xe5, 0xe6= , 0x28, > 0x8f, 0xce, 0x2a, >=20 > + 0x8a, 0xf9, 0xaa, 0x52, 0x4d, 0x8c, 0x5b, 0x77, 0xba, 0x4d, 0x5a, 0x58= , 0xdb, > 0xbb, 0x6a, 0x04, >=20 > + 0xcc, 0x52, 0x1e, 0x9d, 0xe2, 0x28, 0x37, 0x0e, 0xbb, 0xe7, 0x0e, 0x91= , 0xc7, > 0xf8, 0xdb, 0xf1, >=20 > + 0x81, 0x98, 0xeb, 0xcd, 0x37, 0xb3, 0x0e, 0xab, 0x65, 0xd3, 0x62, 0xec= , 0x3a, > 0xa5, 0x76, 0xeb, >=20 > + 0x13, 0xa8, 0x35, 0x93, 0xc9, 0x2e, 0x0a, 0x01, 0xec, 0xc0, 0xe8, 0xcc= , 0x3d, > 0x7e, 0xb6, 0xeb, >=20 > + 0xe2, 0xc1, 0xec, 0xd3, 0x14, 0x92, 0x82, 0x66, 0x87, 0x50, 0xdc, 0xfd= , 0x50, > 0x97, 0xac, 0xb3, >=20 > + 0x4a, 0x76, 0x73, 0x06, 0xc4, 0x86, 0x11, 0x3a, 0xb3, 0x5f, 0x43, 0x04= , 0x52, > 0x6f, 0xea, 0xb3, >=20 > + 0xd0, 0x74, 0x36, 0x4c, 0xca, 0xf1, 0x1b, 0x79, 0x84, 0x37, 0x70, 0x63= , 0xad, > 0x74, 0xb9, 0xaa, >=20 > + 0x0e, 0xf3, 0x98, 0xb0, 0x86, 0x08, 0xeb, 0xdb, 0xe0, 0x1f, 0x8c, 0x10= , 0xf2, > 0x39, 0x64, 0x9b, >=20 > + 0xae, 0x4f, 0x0a, 0x2c, 0x92, 0x8a, 0x4f, 0x18, 0xb5, 0x91, 0xe5, 0x8d= , 0x1a, > 0x93, 0x5f, 0x1f, >=20 > + 0xae, 0xf1, 0xa6, 0xf0, 0x2e, 0x97, 0xd0, 0xd2, 0xf6, 0x2b, 0x3c, 0x31= , 0x82, > 0x02, 0x61, 0x30, >=20 > + 0x82, 0x02, 0x5d, 0x02, 0x01, 0x01, 0x30, 0x81, 0xaa, 0x30, 0x81, 0x95= , 0x31, > 0x0b, 0x30, 0x09, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30= , 0x09, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x08, 0x13, 0x02, 0x55, 0x54, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03= , 0x55, > 0x04, 0x07, 0x13, >=20 > + 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x43= , 0x69, > 0x74, 0x79, 0x31, >=20 > + 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x54, 0x68= , 0x65, > 0x20, 0x55, 0x53, >=20 > + 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x4e, 0x65, 0x74, 0x77= , 0x6f, > 0x72, 0x6b, 0x31, >=20 > + 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x68, 0x74= , 0x74, > 0x70, 0x3a, 0x2f, >=20 > + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75= , 0x73, > 0x74, 0x2e, 0x63, >=20 > + 0x6f, 0x6d, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13= , 0x14, > 0x55, 0x54, 0x4e, >=20 > + 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, 0x72, 0x73, 0x74, 0x2d, 0x4f= , 0x62, > 0x6a, 0x65, 0x63, >=20 > + 0x74, 0x02, 0x10, 0x47, 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c= , 0xe1, > 0x42, 0xd2, 0xa2, >=20 > + 0x87, 0x07, 0xbe, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a= , 0x05, > 0x00, 0xa0, 0x81, >=20 > + 0x8c, 0x30, 0x1a, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01= , 0x09, > 0x03, 0x31, 0x0d, >=20 > + 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x10, 0x01= , 0x04, > 0x30, 0x1c, 0x06, >=20 > + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x05, 0x31, 0x0f= , 0x17, > 0x0d, 0x31, 0x34, >=20 > + 0x30, 0x37, 0x32, 0x38, 0x30, 0x38, 0x35, 0x30, 0x30, 0x33, 0x5a, 0x30= , 0x23, > 0x06, 0x09, 0x2a, >=20 > + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14= , 0x7a, > 0xad, 0x35, 0xdc, >=20 > + 0x5b, 0xd6, 0x00, 0xd7, 0x44, 0xac, 0x80, 0x8f, 0x4f, 0xb6, 0xb4, 0x03= , 0x62, > 0x34, 0x53, 0xdc, >=20 > + 0x30, 0x2b, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09= , 0x10, > 0x02, 0x0c, 0x31, >=20 > + 0x1c, 0x30, 0x1a, 0x30, 0x18, 0x30, 0x16, 0x04, 0x14, 0x3d, 0xbb, 0x6d= , 0xb5, > 0x08, 0x5c, 0x6d, >=20 > + 0xd5, 0xa1, 0xca, 0x7f, 0x9c, 0xf8, 0x4e, 0xcb, 0x1a, 0x39, 0x10, 0xca= , 0xc8, > 0x30, 0x0d, 0x06, >=20 > + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00= , 0x04, > 0x82, 0x01, 0x00, >=20 > + 0x73, 0x64, 0xb9, 0xa3, 0x54, 0x6f, 0x50, 0x97, 0x01, 0xa7, 0xf6, 0x0d= , 0xb8, > 0xce, 0x4b, 0xaa, >=20 > + 0x43, 0xa2, 0x8f, 0xa3, 0xea, 0x93, 0xf2, 0xa3, 0xd0, 0x46, 0xde, 0xdd= , 0x45, > 0xe5, 0x94, 0x5a, >=20 > + 0x45, 0xc2, 0x13, 0x1b, 0x90, 0x9b, 0xcf, 0x73, 0xcd, 0x28, 0x70, 0xf0= , 0xf4, > 0x54, 0xb5, 0x2d, >=20 > + 0x31, 0xf9, 0xf3, 0x2d, 0x38, 0x78, 0xfe, 0x68, 0xea, 0x3c, 0xc0, 0xbe= , 0x0b, > 0x5a, 0x91, 0x49, >=20 > + 0x63, 0xeb, 0x26, 0x32, 0x5b, 0x86, 0xcf, 0xe5, 0x8a, 0xa5, 0x9d, 0xe6= , 0x4b, > 0x57, 0x91, 0x8f, >=20 > + 0x3c, 0xdc, 0xa6, 0x53, 0xd8, 0xdb, 0x8a, 0xfd, 0x3e, 0x7e, 0x19, 0x6f= , 0x27, > 0x72, 0x95, 0xc2, >=20 > + 0x79, 0x73, 0xdf, 0xfb, 0x08, 0x5c, 0x5b, 0xc8, 0xb7, 0x94, 0x75, 0x88= , 0x7a, > 0x9a, 0x85, 0x9f, >=20 > + 0x1b, 0xa3, 0x98, 0x30, 0x91, 0xee, 0xc0, 0x52, 0xd2, 0x75, 0x9c, 0xcb= , 0x45, > 0x0d, 0x94, 0x43, >=20 > + 0x67, 0x7a, 0x49, 0x1c, 0xb1, 0x89, 0x9d, 0x6e, 0xfa, 0x87, 0xd2, 0x4d= , 0x6e, > 0x74, 0x90, 0xf5, >=20 > + 0x80, 0x8c, 0x92, 0xda, 0xd9, 0xa1, 0x48, 0x20, 0x31, 0x02, 0x79, 0xde= , 0xe3, > 0xbd, 0x09, 0x04, >=20 > + 0xa8, 0xd4, 0x99, 0xd7, 0x3b, 0xea, 0xf8, 0xdf, 0xb3, 0xb9, 0xd7, 0xa3= , 0x36, > 0xa1, 0xdb, 0xd3, >=20 > + 0xec, 0x65, 0x8c, 0xb8, 0x8f, 0xfb, 0xd6, 0xef, 0x9c, 0x32, 0x3e, 0xab= , 0x20, > 0x74, 0xb9, 0x65, >=20 > + 0x4c, 0xc6, 0x15, 0x2f, 0x31, 0x2a, 0x34, 0x3e, 0x84, 0x09, 0xb4, 0x75= , 0xbc, > 0xbe, 0xaf, 0xb3, >=20 > + 0x9e, 0x85, 0xf1, 0xbb, 0x99, 0x1a, 0x07, 0xbd, 0x20, 0xa6, 0xed, 0xcf= , 0xd1, > 0xa6, 0x9a, 0x22, >=20 > + 0xb2, 0x6d, 0x75, 0xf4, 0x23, 0x58, 0x13, 0x78, 0x73, 0x1a, 0xb2, 0x84= , 0xde, > 0xad, 0xe8, 0x6d, >=20 > + 0xe6, 0xe7, 0x5c, 0xb6, 0xe6, 0x5b, 0x10, 0x37, 0x1f, 0xe3, 0x6e, 0xbd= , 0x83, > 0xd7, 0x51, 0xb1, >=20 > + 0x00, 0x00, 0x00, 0x00, 0x0a >=20 > + }; >=20 > + >=20 > +// >=20 > +// The Comodo Time Stamping Signer Certificate Used for the verification= of > TimeStamp signature. >=20 > +// >=20 > +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TSTrustedCert[] =3D { >=20 > + 0x30, 0x82, 0x04, 0x93, 0x30, 0x82, 0x03, 0x7b, 0xa0, 0x03, 0x02, 0x01= , 0x02, > 0x02, 0x10, 0x47, >=20 > + 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c, 0xe1, 0x42, 0xd2, 0xa2= , 0x87, > 0x07, 0xbe, 0x30, >=20 > + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05= , 0x05, > 0x00, 0x30, 0x81, >=20 > + 0x95, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02= , 0x55, > 0x53, 0x31, 0x0b, >=20 > + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x02, 0x55, 0x54, 0x31= , 0x17, > 0x30, 0x15, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x07, 0x13, 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c= , 0x61, > 0x6b, 0x65, 0x20, >=20 > + 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04= , 0x0a, > 0x13, 0x15, 0x54, >=20 > + 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54= , 0x20, > 0x4e, 0x65, 0x74, >=20 > + 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04= , 0x0b, > 0x13, 0x18, 0x68, >=20 > + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73= , 0x65, > 0x72, 0x74, 0x72, >=20 > + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x1d, 0x30, 0x1b, 0x06= , 0x03, > 0x55, 0x04, 0x03, >=20 > + 0x13, 0x14, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69= , 0x72, > 0x73, 0x74, 0x2d, >=20 > + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30= , 0x30, > 0x35, 0x31, 0x30, >=20 > + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30= , 0x35, > 0x31, 0x30, 0x32, >=20 > + 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55= , 0x04, > 0x08, 0x13, 0x12, >=20 > + 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63= , 0x68, > 0x65, 0x73, 0x74, >=20 > + 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13= , 0x07, > 0x53, 0x61, 0x6c, >=20 > + 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04= , 0x0a, > 0x13, 0x11, 0x43, >=20 > + 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d= , 0x69, > 0x74, 0x65, 0x64, >=20 > + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1b, 0x43= , 0x4f, > 0x4d, 0x4f, 0x44, >=20 > + 0x4f, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70= , 0x69, > 0x6e, 0x67, 0x20, >=20 > + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d= , 0x06, > 0x09, 0x2a, 0x86, >=20 > + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01= , 0x0f, > 0x00, 0x30, 0x82, >=20 > + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbc, 0x35, 0xa0, 0x36, 0x70= , 0x22, > 0x81, 0x11, 0xc3, >=20 > + 0xb2, 0x83, 0xb9, 0xd3, 0x28, 0xc6, 0x36, 0xcd, 0x25, 0x6b, 0xa9, 0x7b= , 0xb2, > 0x1c, 0xf6, 0x9b, >=20 > + 0x51, 0x9c, 0xef, 0x35, 0xf4, 0xed, 0x08, 0x8e, 0x5e, 0x38, 0x08, 0xf8= , 0x77, > 0x3c, 0x0a, 0x42, >=20 > + 0xe0, 0xf3, 0x70, 0xdc, 0xa3, 0xd7, 0xca, 0xf5, 0x4c, 0x0b, 0xcf, 0xff= , 0x22, > 0x9c, 0x0a, 0x7e, >=20 > + 0x68, 0xd6, 0x09, 0xa2, 0x2a, 0x84, 0x7b, 0xa6, 0x9d, 0xb4, 0xa9, 0xc1= , 0x33, > 0xe2, 0xef, 0x1f, >=20 > + 0x17, 0x48, 0xca, 0x3a, 0xcd, 0x46, 0xe6, 0xc5, 0xaa, 0x77, 0xbd, 0xe3= , 0x77, > 0x9a, 0xfa, 0x47, >=20 > + 0x53, 0x40, 0x28, 0x59, 0x43, 0x93, 0xf1, 0xa4, 0x81, 0xea, 0xef, 0x80= , 0xb5, > 0x4f, 0xa7, 0x08, >=20 > + 0xce, 0xba, 0x6e, 0xbc, 0xca, 0x76, 0x0c, 0x97, 0x64, 0x59, 0x86, 0x24= , 0xbb, > 0x3d, 0x82, 0x90, >=20 > + 0xa8, 0x55, 0xb1, 0x92, 0xd3, 0xa0, 0xa7, 0x05, 0xac, 0x9f, 0x53, 0x25= , 0x08, > 0x10, 0x47, 0x99, >=20 > + 0xcd, 0x98, 0xde, 0x68, 0xe5, 0xb4, 0x50, 0x78, 0xa3, 0xaf, 0x01, 0xcc= , 0x59, > 0x43, 0x58, 0xe4, >=20 > + 0x76, 0x6e, 0x7e, 0xac, 0xc7, 0xe2, 0x9e, 0x1f, 0x4f, 0xb0, 0x47, 0x2d= , 0xc8, > 0x0c, 0xa3, 0x49, >=20 > + 0x27, 0x80, 0x75, 0x8c, 0xbb, 0x06, 0x91, 0x65, 0x0f, 0x90, 0x9b, 0xf4= , 0xba, > 0xd1, 0x81, 0xc8, >=20 > + 0x5c, 0x6a, 0xec, 0x14, 0xe9, 0x25, 0x09, 0xbf, 0x23, 0x16, 0xf4, 0x95= , 0x46, > 0x40, 0x40, 0x21, >=20 > + 0xbb, 0x83, 0x96, 0xfd, 0x86, 0x1f, 0x7a, 0xc8, 0x0d, 0x10, 0x8e, 0xa2= , 0xf8, > 0x19, 0x07, 0x58, >=20 > + 0x7f, 0x9f, 0xbd, 0x37, 0x02, 0x60, 0xf2, 0xa4, 0xe9, 0x9d, 0x44, 0x3f= , 0x30, > 0x05, 0xe4, 0xa7, >=20 > + 0x70, 0x99, 0x51, 0x9a, 0xe8, 0x17, 0xf1, 0x55, 0xca, 0xb2, 0x61, 0x89= , 0x65, > 0x46, 0xa7, 0x6a, >=20 > + 0xf2, 0x58, 0x46, 0x7e, 0xaa, 0xa0, 0x07, 0x02, 0x03, 0x01, 0x00, 0x01= , 0xa3, > 0x81, 0xf4, 0x30, >=20 > + 0x81, 0xf1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30= , 0x16, > 0x80, 0x14, 0xda, >=20 > + 0xed, 0x64, 0x74, 0x14, 0x9c, 0x14, 0x3c, 0xab, 0xdd, 0x99, 0xa9, 0xbd= , 0x5b, > 0x28, 0x4d, 0x8b, >=20 > + 0x3c, 0xc9, 0xd8, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16= , 0x04, > 0x14, 0x2e, 0x2d, >=20 > + 0xb0, 0x0a, 0x44, 0x4a, 0xd3, 0x87, 0xc0, 0x02, 0x07, 0xce, 0x97, 0x7d= , 0x50, > 0x62, 0x20, 0xfd, >=20 > + 0x0f, 0x83, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff= , 0x04, > 0x04, 0x03, 0x02, >=20 > + 0x06, 0xc0, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff= , 0x04, > 0x02, 0x30, 0x00, >=20 > + 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x01, 0x01, 0xff, 0x04, 0x0c= , 0x30, > 0x0a, 0x06, 0x08, >=20 > + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x42, 0x06, 0x03= , 0x55, > 0x1d, 0x1f, 0x04, >=20 > + 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68= , 0x74, > 0x74, 0x70, 0x3a, >=20 > + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72= , 0x75, > 0x73, 0x74, 0x2e, >=20 > + 0x63, 0x6f, 0x6d, 0x2f, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52= , 0x46, > 0x69, 0x72, 0x73, >=20 > + 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x63, 0x72, 0x6c= , 0x30, > 0x35, 0x06, 0x08, >=20 > + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x29, 0x30, 0x27= , 0x30, > 0x25, 0x06, 0x08, >=20 > + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74= , 0x74, > 0x70, 0x3a, 0x2f, >=20 > + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72= , 0x75, > 0x73, 0x74, 0x2e, >=20 > + 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7= , 0x0d, > 0x01, 0x01, 0x05, >=20 > + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xc8, 0xfb, 0x63, 0xf8, 0x0b= , 0x75, > 0x75, 0x2c, 0x3a, >=20 > + 0xf1, 0xf2, 0x13, 0xa7, 0x2d, 0xb6, 0xa3, 0x1a, 0x9c, 0xad, 0x01, 0x07= , 0xd3, > 0x34, 0x8e, 0x77, >=20 > + 0xe0, 0xc2, 0x6e, 0xae, 0x02, 0x5d, 0x48, 0x4f, 0xa4, 0xd2, 0x21, 0xb6= , 0x36, > 0xfd, 0x2a, 0x35, >=20 > + 0x43, 0x7c, 0x6b, 0xdf, 0x80, 0x87, 0x0b, 0x15, 0xf0, 0x76, 0x32, 0x00= , 0xb4, > 0xce, 0xb5, 0x67, >=20 > + 0xa4, 0x2f, 0x2f, 0x20, 0x1b, 0x9c, 0x54, 0x9e, 0x83, 0x3f, 0x1f, 0x5f= , 0x14, > 0x95, 0x62, 0x82, >=20 > + 0x0f, 0x22, 0x41, 0x22, 0x1f, 0x70, 0xb3, 0xf3, 0xf7, 0x42, 0xde, 0x6c= , 0x51, > 0xcd, 0x4b, 0xf8, >=20 > + 0x21, 0xac, 0x9b, 0x3b, 0x8c, 0xb1, 0xe5, 0xe6, 0x28, 0x8f, 0xce, 0x2a= , 0x8a, > 0xf9, 0xaa, 0x52, >=20 > + 0x4d, 0x8c, 0x5b, 0x77, 0xba, 0x4d, 0x5a, 0x58, 0xdb, 0xbb, 0x6a, 0x04= , 0xcc, > 0x52, 0x1e, 0x9d, >=20 > + 0xe2, 0x28, 0x37, 0x0e, 0xbb, 0xe7, 0x0e, 0x91, 0xc7, 0xf8, 0xdb, 0xf1= , 0x81, > 0x98, 0xeb, 0xcd, >=20 > + 0x37, 0xb3, 0x0e, 0xab, 0x65, 0xd3, 0x62, 0xec, 0x3a, 0xa5, 0x76, 0xeb= , 0x13, > 0xa8, 0x35, 0x93, >=20 > + 0xc9, 0x2e, 0x0a, 0x01, 0xec, 0xc0, 0xe8, 0xcc, 0x3d, 0x7e, 0xb6, 0xeb= , 0xe2, > 0xc1, 0xec, 0xd3, >=20 > + 0x14, 0x92, 0x82, 0x66, 0x87, 0x50, 0xdc, 0xfd, 0x50, 0x97, 0xac, 0xb3= , 0x4a, > 0x76, 0x73, 0x06, >=20 > + 0xc4, 0x86, 0x11, 0x3a, 0xb3, 0x5f, 0x43, 0x04, 0x52, 0x6f, 0xea, 0xb3= , 0xd0, > 0x74, 0x36, 0x4c, >=20 > + 0xca, 0xf1, 0x1b, 0x79, 0x84, 0x37, 0x70, 0x63, 0xad, 0x74, 0xb9, 0xaa= , 0x0e, > 0xf3, 0x98, 0xb0, >=20 > + 0x86, 0x08, 0xeb, 0xdb, 0xe0, 0x1f, 0x8c, 0x10, 0xf2, 0x39, 0x64, 0x9b= , 0xae, > 0x4f, 0x0a, 0x2c, >=20 > + 0x92, 0x8a, 0x4f, 0x18, 0xb5, 0x91, 0xe5, 0x8d, 0x1a, 0x93, 0x5f, 0x1f= , 0xae, > 0xf1, 0xa6, 0xf0, >=20 > + 0x2e, 0x97, 0xd0, 0xd2, 0xf6, 0x2b, 0x3c, 0x0a >=20 > + }; >=20 > + >=20 > +UNIT_TEST_STATUS >=20 > +EFIAPI >=20 > +TestVerifyImageTimestampVerify ( >=20 > + IN UNIT_TEST_CONTEXT Context >=20 > + ) >=20 > +{ >=20 > + BOOLEAN Status; >=20 > + EFI_TIME SigningTime; >=20 > + >=20 > + Status =3D FALSE; >=20 > + >=20 > + // >=20 > + // Verify RFC3161 Timestamp CounterSignature. >=20 > + // >=20 > + Status =3D ImageTimestampVerify ( >=20 > + AuthenticodeWithTS, >=20 > + sizeof (AuthenticodeWithTS), >=20 > + TSTrustedCert, >=20 > + sizeof (TSTrustedCert), >=20 > + &SigningTime >=20 > + ); >=20 > + UT_ASSERT_TRUE (Status); >=20 > + >=20 > + UT_ASSERT_EQUAL (SigningTime.Year, 2014); >=20 > + UT_ASSERT_EQUAL (SigningTime.Month, 7); >=20 > + UT_ASSERT_EQUAL (SigningTime.Day, 28); >=20 > + UT_ASSERT_EQUAL (SigningTime.Hour, 8); >=20 > + UT_ASSERT_EQUAL (SigningTime.Minute, 50); >=20 > + UT_ASSERT_EQUAL (SigningTime.Second, 3); >=20 > + >=20 > + return Status; >=20 > +} >=20 > + >=20 > +TEST_DESC mImageTimestampTest[] =3D { >=20 > + // >=20 > + // -----Description--------------------------------------Class------= --------------------- > -Function-----------------Pre---Post--Context >=20 > + // >=20 > + {"TestVerifyImageTimestampVerify()", > "CryptoPkg.BaseCryptLib.ImageTimestamp", TestVerifyImageTimestampVerify= , > NULL, NULL, NULL}, >=20 > +}; >=20 > + >=20 > +UINTN mImageTimestampTestNum =3D ARRAY_SIZE(mImageTimestampTest); >=20 > 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 >=20 > + This is a sample to demostrate the usage of the Unit Test Library that >=20 > + supports the PEI, DXE, SMM, UEFI SHell, and host execution environment= s. >=20 > + >=20 > + Copyright (c) Microsoft Corporation.
>=20 > + SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > +#include "TestBaseCryptLib.h" >=20 > + >=20 > + >=20 > +/** >=20 > + Initialize the unit test framework, suite, and unit tests for the >=20 > + sample unit tests and run the unit tests. >=20 > + >=20 > + @retval EFI_SUCCESS All test cases were dispatched. >=20 > + @retval EFI_OUT_OF_RESOURCES There are not enough resources availabl= e > to >=20 > + initialize the unit tests. >=20 > +**/ >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +UefiTestMain ( >=20 > + VOID >=20 > + ) >=20 > +{ >=20 > + EFI_STATUS Status; >=20 > + UNIT_TEST_FRAMEWORK_HANDLE Framework; >=20 > + >=20 > + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME, > UNIT_TEST_VERSION )); >=20 > + CreateUnitTest(UNIT_TEST_NAME, UNIT_TEST_VERSION, &Framework); >=20 > + >=20 > + // >=20 > + // Execute the tests. >=20 > + // >=20 > + Status =3D RunAllTestSuites (Framework); >=20 > + >=20 > + if (Framework) { >=20 > + FreeUnitTestFramework (Framework); >=20 > + } >=20 > + >=20 > + return Status; >=20 > +} >=20 > + >=20 > +/** >=20 > + Standard PEIM entry point for target based unit test execution from PE= I. >=20 > +**/ >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +PeiEntryPoint ( >=20 > + IN EFI_PEI_FILE_HANDLE FileHandle, >=20 > + IN CONST EFI_PEI_SERVICES **PeiServices >=20 > + ) >=20 > +{ >=20 > + return UefiTestMain (); >=20 > +} >=20 > + >=20 > +/** >=20 > + Standard UEFI entry point for target based unit test execution from DX= E, SMM, >=20 > + UEFI Shell. >=20 > +**/ >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +DxeEntryPoint ( >=20 > + IN EFI_HANDLE ImageHandle, >=20 > + IN EFI_SYSTEM_TABLE *SystemTable >=20 > + ) >=20 > +{ >=20 > + return UefiTestMain (); >=20 > +} >=20 > + >=20 > +/** >=20 > + Standard POSIX C entry point for host based unit test execution. >=20 > +**/ >=20 > +int >=20 > +main ( >=20 > + int argc, >=20 > + char *argv[] >=20 > + ) >=20 > +{ >=20 > + return UefiTestMain (); >=20 > +} >=20 > 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. >=20 > "IgnoreFiles": [ >=20 > "Library/OpensslLib/openssl", >=20 > + # The unit testing folder is not to be checked >=20 > + "Test/UnitTest", >=20 > + # This has OpenSSL interfaces that aren't UEFI spec complian= t >=20 > + "Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.c", >=20 > # this has OpenSSL interfaces that aren't UEFI spec complian= t >=20 > "Library/OpensslLib/rand_pool.c" >=20 > ] >=20 > @@ -26,6 +30,10 @@ > "CompilerPlugin": { >=20 > "DscPath": "CryptoPkg.dsc" >=20 > }, >=20 > + ## options defined .pytool/Plugin/HostUnitTestCompilerPlugin >=20 > + "HostUnitTestCompilerPlugin": { >=20 > + "DscPath": "Test/CryptoPkgHostUnitTest.dsc" >=20 > + }, >=20 > "CharEncodingCheck": { >=20 > "IgnoreFiles": [] >=20 > }, >=20 > 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 firmwa= re volume. >=20 > # >=20 >=20 > ################################################################# > ################################## >=20 > +[Components] >=20 > + CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf >=20 > + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibShell.inf= { >=20 > + >=20 > + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf >=20 > + > UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryP= oin > t.inf >=20 > + > UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiAp= pli > cationEntryPoint.inf >=20 > + >=20 > + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf >=20 > + BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf >=20 > + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf >=20 > + > MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryA > llocationLib.inf >=20 > + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf >=20 > + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf >=20 > + > PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLib > Null.inf >=20 > + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf >=20 > + > UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoot= S > ervicesTableLib.inf >=20 > + >=20 > + UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/UnitTestLib.i= nf >=20 > + > UnitTestPersistenceLib|UnitTestFrameworkPkg/Library/UnitTestPersistenceLi= bN > ull/UnitTestPersistenceLibNull.inf >=20 > + > UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultReport= L > ib/UnitTestResultReportLibDebugLib.inf >=20 > + } >=20 > + >=20 > !if $(CRYPTO_SERVICES) =3D=3D PACKAGE >=20 > [Components] >=20 > CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf >=20 > 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 >=20 > +# Cryptographic Library Instance for host based unit tests >=20 > +# >=20 > +# Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved. >=20 > +# Copyright (c) Microsoft Corporation. >=20 > +# SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > +# >=20 > +## >=20 > + >=20 > +[Defines] >=20 > + INF_VERSION =3D 0x00010005 >=20 > + BASE_NAME =3D BaseCryptLib >=20 > + FILE_GUID =3D c97d34aa-caf8-42cd-8261-8705f46304b= 3 >=20 > + MODULE_TYPE =3D DXE_DRIVER >=20 > + VERSION_STRING =3D 1.0 >=20 > + LIBRARY_CLASS =3D BaseCryptLib|HOST_APPLICATION >=20 > + >=20 > +# >=20 > +# The following information is for reference only and not required by th= e build > tools. >=20 > +# >=20 > +# VALID_ARCHITECTURES =3D IA32 X64 ARM AARCH64 >=20 > +# >=20 > + >=20 > +[Sources] >=20 > + InternalCryptLib.h >=20 > + Hash/CryptMd5.c >=20 > + Hash/CryptSha1.c >=20 > + Hash/CryptSha256.c >=20 > + Hash/CryptSha512.c >=20 > + Hash/CryptSm3.c >=20 > + Hmac/CryptHmacSha256.c >=20 > + Kdf/CryptHkdf.c >=20 > + Cipher/CryptAes.c >=20 > + Pk/CryptRsaBasic.c >=20 > + Pk/CryptRsaExt.c >=20 > + Pk/CryptPkcs1Oaep.c >=20 > + Pk/CryptPkcs5Pbkdf2.c >=20 > + Pk/CryptPkcs7Sign.c >=20 > + Pk/CryptPkcs7VerifyCommon.c >=20 > + Pk/CryptPkcs7VerifyBase.c >=20 > + Pk/CryptPkcs7VerifyEku.c >=20 > + Pk/CryptDh.c >=20 > + Pk/CryptX509.c >=20 > + Pk/CryptAuthenticode.c >=20 > + Pk/CryptTs.c >=20 > + Pem/CryptPem.c >=20 > + >=20 > + SysCall/UnitTestHostCrtWrapper.c >=20 > + >=20 > +[Sources.Ia32] >=20 > + Rand/CryptRandTsc.c >=20 > + >=20 > +[Sources.X64] >=20 > + Rand/CryptRandTsc.c >=20 > + >=20 > +[Sources.ARM] >=20 > + Rand/CryptRand.c >=20 > + >=20 > +[Sources.AARCH64] >=20 > + Rand/CryptRand.c >=20 > + >=20 > +[Packages] >=20 > + MdePkg/MdePkg.dec >=20 > + CryptoPkg/CryptoPkg.dec >=20 > + >=20 > +[LibraryClasses] >=20 > + BaseLib >=20 > + BaseMemoryLib >=20 > + MemoryAllocationLib >=20 > + DebugLib >=20 > + OpensslLib >=20 > + >=20 > +# >=20 > +# Remove these [BuildOptions] after this library is cleaned up >=20 > +# >=20 > +[BuildOptions] >=20 > + # >=20 > + # suppress the following warnings so we do not break the build with wa= rnings- > as-errors: >=20 > + # C4090: 'function' : different 'const' qualifiers >=20 > + # C4018: '>': signed/unsigned mismatch >=20 > + MSFT:*_*_*_CC_FLAGS =3D /wd4090 /wd4018 >=20 > + >=20 > + # -JCryptoPkg/Include : To disable the use of the system includes prov= ided by > RVCT >=20 > + # --diag_remark=3D1 : Reduce severity of "#1-D: last line of file = ends without a > newline" >=20 > + RVCT:*_*_ARM_CC_FLAGS =3D -JCryptoPkg/Include --diag_remark=3D1 >=20 > + >=20 > + GCC:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99 >=20 > + GCC:*_CLANG38_*_CC_FLAGS =3D -std=3Dc99 >=20 > + >=20 > + XCODE:*_*_*_CC_FLAGS =3D -std=3Dc99 >=20 > 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 >=20 > +# CryptoPkg DSC file used to build host-based unit tests. >=20 > +# >=20 > +# Copyright (c) Microsoft Corporation.
>=20 > +# SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > +# >=20 > +## >=20 > + >=20 > +[Defines] >=20 > + PLATFORM_NAME =3D CryptoPkgHostTest >=20 > + PLATFORM_GUID =3D C7F97D6D-54AC-45A9-8197-CC99B20CC7EC >=20 > + PLATFORM_VERSION =3D 0.1 >=20 > + DSC_SPECIFICATION =3D 0x00010005 >=20 > + OUTPUT_DIRECTORY =3D Build/CryptoPkg/HostTest >=20 > + SUPPORTED_ARCHITECTURES =3D IA32|X64 >=20 > + BUILD_TARGETS =3D NOOPT >=20 > + SKUID_IDENTIFIER =3D DEFAULT >=20 > + >=20 > +!include UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc >=20 > + >=20 > +[LibraryClasses] >=20 > + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf >=20 > + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.i= nf >=20 > + >=20 > +[LibraryClasses.AARCH64, LibraryClasses.ARM] >=20 > + RngLib|MdePkg/Library/BaseRngLibNull/BaseRngLibNull.inf >=20 > + >=20 > +[LibraryClasses.X64, LibraryClasses.IA32] >=20 > + RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf >=20 > + >=20 > +[Components] >=20 > + # >=20 > + # Build HOST_APPLICATION that tests the SampleUnitTest >=20 > + # >=20 > + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf >=20 > 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 @@ > +/*++ >=20 > + >=20 > +Copyright (C) Microsoft Corporation. All Rights Reserved. >=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +Module Name: >=20 > + AllTestSignatures.h >=20 > + >=20 > +Abstract: >=20 > + This file has test signatures in byte array format for Unit-Testing th= e >=20 > + Enhanced Key Usage (EKU) parsing function. >=20 > + >=20 > + EFI_STATUS >=20 > + EFIAPI >=20 > + VerifyEKUsInPkcs7Signature ( >=20 > + IN CONST UINT8 *Pkcs7Signature, >=20 > + IN CONST UINT32 SignatureSize, >=20 > + IN CONST CHAR8 *RequiredEKUs[], >=20 > + IN CONST UINT32 RequiredEKUsSize, >=20 > + IN BOOLEAN RequireAllPresent >=20 > + ); >=20 > + >=20 > + Note: These byte arrays were created by running BinToH.exe on the P7B >=20 > + signature files. >=20 > +--*/ >=20 > + >=20 > + >=20 > +// >=20 > +// This is the ProductionECCSignature.p7b in byte array format. It has = one >=20 > +// EKU in it. (Firmware signing) >=20 > +// "1.3.6.1.4.1.311.76.9.21.1" >=20 > +// >=20 > +CONST UINT8 ProductionECCSignature[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x04, 0xC0, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06,= 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09,= 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0x80, 0x30, 0x82, 0x03,= 0x7C, > 0x30, 0x82, 0x03, >=20 > + 0x22, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x13, 0x33, 0x00, 0x00, 0x00,= 0x03, > 0x7E, 0x2E, 0x8F, >=20 > + 0xBD, 0xA5, 0xC9, 0x2C, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30,= 0x0A, > 0x06, 0x08, 0x2A, >=20 > + 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x81, 0x8F, 0x31, 0x0B,= 0x30, > 0x09, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06,= 0x03, > 0x55, 0x04, 0x08, >=20 > + 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E,= 0x31, > 0x10, 0x30, 0x0E, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F,= 0x6E, > 0x64, 0x31, 0x1E, >=20 > + 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63,= 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69,= 0x6F, > 0x6E, 0x31, 0x39, >=20 > + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x30, 0x4D, 0x69, 0x63,= 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x53, 0x75, 0x72, 0x66, 0x61,= 0x63, > 0x65, 0x20, 0x41, >=20 > + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20, 0x46, 0x69, 0x72,= 0x6D, > 0x77, 0x61, 0x72, >=20 > + 0x65, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x38, 0x30, 0x1E, 0x17,= 0x0D, > 0x31, 0x38, 0x30, >=20 > + 0x37, 0x31, 0x32, 0x31, 0x38, 0x33, 0x37, 0x30, 0x37, 0x5A, 0x17, 0x0D,= 0x31, > 0x39, 0x30, 0x37, >=20 > + 0x31, 0x32, 0x31, 0x38, 0x33, 0x37, 0x30, 0x37, 0x5A, 0x30, 0x3A, 0x31,= 0x38, > 0x30, 0x36, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x03, 0x13, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73,= 0x6F, > 0x66, 0x74, 0x20, >=20 > + 0x45, 0x43, 0x43, 0x20, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20,= 0x41, > 0x63, 0x63, 0x65, >=20 > + 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61,= 0x72, > 0x65, 0x20, 0x53, >=20 > + 0x69, 0x67, 0x6E, 0x65, 0x72, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A,= 0x86, > 0x48, 0xCE, 0x3D, >=20 > + 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07,= 0x03, > 0x42, 0x00, 0x04, >=20 > + 0x7D, 0xDF, 0xDE, 0xFA, 0xEE, 0xA5, 0x66, 0x33, 0xAA, 0xCC, 0xA4, 0x18,= 0x65, > 0x9E, 0x3A, 0xC6, >=20 > + 0x4B, 0xCB, 0xD5, 0x78, 0x94, 0x14, 0xEE, 0xAA, 0xF3, 0x9D, 0xCB, 0x38,= 0x6C, > 0x5D, 0xFE, 0x3F, >=20 > + 0x8A, 0xA9, 0x8D, 0x04, 0xD2, 0xFE, 0xAA, 0x38, 0xF3, 0xD6, 0x4A, 0x7E,= 0xCF, > 0x12, 0x95, 0xCF, >=20 > + 0xAD, 0x92, 0x33, 0xF7, 0x38, 0x83, 0xC5, 0xFD, 0xCF, 0xD0, 0x96, 0x08,= 0xCA, > 0x62, 0x7D, 0x22, >=20 > + 0xA3, 0x82, 0x01, 0xAF, 0x30, 0x82, 0x01, 0xAB, 0x30, 0x0E, 0x06, 0x03,= 0x55, > 0x1D, 0x0F, 0x01, >=20 > + 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03,= 0x55, > 0x1D, 0x25, 0x04, >=20 > + 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37,= 0x4C, > 0x09, 0x15, 0x01, >=20 > + 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02,= 0x30, > 0x00, 0x30, 0x1D, >=20 > + 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xE7, 0xD1, 0xD4,= 0x74, > 0x71, 0xF4, 0xC9, >=20 > + 0x35, 0x04, 0xA7, 0x9A, 0x1E, 0x0C, 0xDD, 0xF4, 0x8D, 0x5C, 0x1E, 0xF2,= 0x29, > 0x30, 0x37, 0x06, >=20 > + 0x03, 0x55, 0x1D, 0x11, 0x04, 0x30, 0x30, 0x2E, 0xA4, 0x2C, 0x30, 0x2A,= 0x31, > 0x10, 0x30, 0x0E, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x07, 0x53, 0x75, 0x72, 0x66, 0x61,= 0x63, > 0x65, 0x31, 0x16, >=20 > + 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x05, 0x13, 0x0D, 0x34, 0x34, 0x30,= 0x38, > 0x31, 0x31, 0x2B, >=20 > + 0x34, 0x34, 0x30, 0x38, 0x36, 0x32, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D,= 0x23, > 0x04, 0x18, 0x30, >=20 > + 0x16, 0x80, 0x14, 0x6F, 0x3A, 0xCC, 0x1B, 0x2F, 0x17, 0x5C, 0xED, 0xEB,= 0xC8, > 0xBF, 0x93, 0xA7, >=20 > + 0xB5, 0x93, 0xD1, 0x4D, 0x40, 0xAA, 0x03, 0x30, 0x75, 0x06, 0x03, 0x55,= 0x1D, > 0x1F, 0x04, 0x6E, >=20 > + 0x30, 0x6C, 0x30, 0x6A, 0xA0, 0x68, 0xA0, 0x66, 0x86, 0x64, 0x68, 0x74,= 0x74, > 0x70, 0x3A, 0x2F, >=20 > + 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F,= 0x66, > 0x74, 0x2E, 0x63, >=20 > + 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x6F, 0x70, 0x73, 0x2F, 0x63, 0x72,= 0x6C, > 0x2F, 0x4D, 0x69, >=20 > + 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x25, 0x32, 0x30, 0x45, 0x43,= 0x43, > 0x25, 0x32, 0x30, >=20 > + 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x25, 0x32, 0x30, 0x41, 0x63,= 0x63, > 0x65, 0x73, 0x73, >=20 > + 0x6F, 0x72, 0x79, 0x25, 0x32, 0x30, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61,= 0x72, > 0x65, 0x25, 0x32, >=20 > + 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x32, 0x30, 0x31, 0x38, 0x2E, 0x63,= 0x72, > 0x6C, 0x30, 0x81, >=20 > + 0x82, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04,= 0x76, > 0x30, 0x74, 0x30, >=20 > + 0x72, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86,= 0x66, > 0x68, 0x74, 0x74, >=20 > + 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72,= 0x6F, > 0x73, 0x6F, 0x66, >=20 > + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x6F, 0x70, 0x73,= 0x2F, > 0x63, 0x65, 0x72, >=20 > + 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74,= 0x25, > 0x32, 0x30, 0x45, >=20 > + 0x43, 0x43, 0x25, 0x32, 0x30, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65,= 0x25, > 0x32, 0x30, 0x41, >=20 > + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x25, 0x32, 0x30, 0x46,= 0x69, > 0x72, 0x6D, 0x77, >=20 > + 0x61, 0x72, 0x65, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x32,= 0x30, > 0x31, 0x38, 0x2E, >=20 > + 0x63, 0x72, 0x74, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D,= 0x04, > 0x03, 0x02, 0x03, >=20 > + 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x3D, 0xCF, 0xEF, 0xB8, 0xF0, 0x87,= 0xEE, > 0x7E, 0x80, 0x71, >=20 > + 0x04, 0x77, 0x68, 0xDC, 0x66, 0x2F, 0x09, 0xA7, 0xF0, 0x76, 0x57, 0x7C,= 0x12, > 0x5A, 0xE4, 0x80, >=20 > + 0x5A, 0xA0, 0xF2, 0x2C, 0x45, 0x1B, 0x02, 0x21, 0x00, 0xEB, 0x5F, 0x89,= 0xD5, > 0xEB, 0x03, 0x46, >=20 > + 0x9E, 0x08, 0x95, 0x2A, 0x39, 0x30, 0x5D, 0x49, 0xB6, 0x24, 0xCE, 0x78,= 0x1B, > 0xB8, 0x1D, 0x0F, >=20 > + 0xD1, 0x24, 0xD0, 0xA9, 0x18, 0x0F, 0x45, 0x4F, 0xF6, 0x31, 0x82, 0x01,= 0x17, > 0x30, 0x82, 0x01, >=20 > + 0x13, 0x02, 0x01, 0x01, 0x30, 0x81, 0xA7, 0x30, 0x81, 0x8F, 0x31, 0x0B,= 0x30, > 0x09, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06,= 0x03, > 0x55, 0x04, 0x08, >=20 > + 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E,= 0x31, > 0x10, 0x30, 0x0E, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F,= 0x6E, > 0x64, 0x31, 0x1E, >=20 > + 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63,= 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69,= 0x6F, > 0x6E, 0x31, 0x39, >=20 > + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x30, 0x4D, 0x69, 0x63,= 0x72, > 0x6F, 0x73, 0x6F, >=20 > + 0x66, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x53, 0x75, 0x72, 0x66, 0x61,= 0x63, > 0x65, 0x20, 0x41, >=20 > + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20, 0x46, 0x69, 0x72,= 0x6D, > 0x77, 0x61, 0x72, >=20 > + 0x65, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x38, 0x02, 0x13, 0x33,= 0x00, > 0x00, 0x00, 0x03, >=20 > + 0x7E, 0x2E, 0x8F, 0xBD, 0xA5, 0xC9, 0x2C, 0x13, 0x00, 0x00, 0x00, 0x00,= 0x00, > 0x03, 0x30, 0x0D, >=20 > + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05,= 0x00, > 0x30, 0x0B, 0x06, >=20 > + 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00, 0x04, 0x48,= 0x30, > 0x46, 0x02, 0x21, >=20 > + 0x00, 0x85, 0xC7, 0x25, 0x5C, 0xF8, 0x5A, 0x13, 0xB7, 0xB6, 0x3A, 0xF1,= 0x04, > 0x72, 0xAC, 0xB3, >=20 > + 0xF8, 0xC3, 0xE0, 0xE3, 0xD7, 0x98, 0x1B, 0xCF, 0x04, 0xA8, 0x0C, 0x7B,= 0xBB, > 0x7D, 0x40, 0xC2, >=20 > + 0x99, 0x02, 0x21, 0x00, 0xA3, 0x83, 0x12, 0xE4, 0xB6, 0x3C, 0xC9, 0x3F,= 0x05, > 0xCF, 0x70, 0x57, >=20 > + 0x54, 0x74, 0x0E, 0xEC, 0x14, 0xAD, 0x2C, 0x66, 0x9D, 0x72, 0x73, 0x62,= 0x41, > 0xA6, 0xC7, 0x90, >=20 > + 0x05, 0x35, 0xF5, 0x80, >=20 > +}; >=20 > + >=20 > +// >=20 > +// This is the TestSignedWithMultipleCerts.bin.Signature.p7b in byte arr= ay >=20 > +// format. It has two certs in it, and the leaf has an EKU of >=20 > +// "1.3.6.1.4.1.311.76.9.21.1" >=20 > +// >=20 > +CONST UINT8 TestSignedMultipleCerts[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x04, 0x90, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06= , 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0xC2, 0x30, 0x82, 0x01= , 0xC5, > 0x30, 0x82, 0x01, >=20 > + 0x6A, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x16, 0x2F, 0xD8, 0x2B= , 0x8A, > 0x98, 0x6A, 0x8A, >=20 > + 0x43, 0xC2, 0x22, 0xA5, 0x47, 0xA1, 0x18, 0xDD, 0x30, 0x0A, 0x06, 0x08= , > 0x2A, 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74= , 0x46, > 0x69, 0x72, 0x6D, >=20 > + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41= , 0x30, > 0x1E, 0x17, 0x0D, >=20 > + 0x31, 0x38, 0x30, 0x37, 0x31, 0x38, 0x32, 0x33, 0x31, 0x36, 0x31, 0x32= , 0x5A, > 0x17, 0x0D, 0x33, >=20 > + 0x38, 0x30, 0x37, 0x31, 0x38, 0x32, 0x33, 0x32, 0x36, 0x31, 0x32, 0x5A= , 0x30, > 0x28, 0x31, 0x26, >=20 > + 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1D, 0x53, 0x75, 0x72= , 0x66, > 0x61, 0x63, 0x65, >=20 > + 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65= , 0x53, > 0x69, 0x67, 0x6E, >=20 > + 0x65, 0x72, 0x4C, 0x65, 0x61, 0x66, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01= , 0x07, > 0x03, 0x42, 0x00, >=20 > + 0x04, 0x2E, 0x4C, 0x85, 0xFD, 0x86, 0x85, 0x4C, 0x55, 0x96, 0x17, 0xE3= , 0x0C, > 0xC1, 0xCB, 0xD9, >=20 > + 0x95, 0xCF, 0xC7, 0xEA, 0x57, 0x02, 0x5C, 0x4F, 0x92, 0x7C, 0x35, 0xBF= , 0x2B, > 0x3D, 0xBA, 0x14, >=20 > + 0xE5, 0x39, 0x9D, 0x9B, 0x64, 0x4A, 0x25, 0x29, 0xD5, 0x61, 0xDA, 0xFD= , > 0x51, 0x24, 0xB3, 0xE2, >=20 > + 0x4E, 0x00, 0x59, 0xDF, 0xB4, 0x96, 0x42, 0x59, 0xA4, 0xBC, 0xA7, 0x64= , 0x8F, > 0x3A, 0x17, 0x33, >=20 > + 0x55, 0xA3, 0x78, 0x30, 0x76, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F= , 0x01, > 0x01, 0xFF, 0x04, >=20 > + 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1D, 0x25= , 0x04, > 0x0F, 0x30, 0x0D, >=20 > + 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x4C, 0x09, 0x15= , 0x01, > 0x30, 0x0C, 0x06, >=20 > + 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30= , 0x1F, > 0x06, 0x03, 0x55, >=20 > + 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x63, 0x69, 0x95, 0xE3= , 0xDD, > 0xF4, 0xF8, 0x42, >=20 > + 0xEA, 0x55, 0x95, 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F= , 0x30, > 0x1D, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xD6, 0x4A, 0xF8, 0x77, 0x21= , 0x34, > 0xEC, 0xC0, 0xAE, >=20 > + 0x4D, 0x8F, 0x17, 0x86, 0xFF, 0xEA, 0xE3, 0x83, 0x42, 0x32, 0x83, 0x30= , 0x0A, > 0x06, 0x08, 0x2A, >=20 > + 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x49, 0x00, 0x30, 0x46= , 0x02, > 0x21, 0x00, 0x9A, >=20 > + 0xAB, 0xE3, 0x6F, 0xD7, 0xB3, 0x0F, 0x83, 0x8A, 0xA1, 0x64, 0x70, 0xC1= , 0xAC, > 0x54, 0xE2, 0x59, >=20 > + 0x7C, 0x8B, 0x11, 0x8F, 0x76, 0xB1, 0x9C, 0x5F, 0xDA, 0x7D, 0x04, 0x3C= , 0x73, > 0xB5, 0xCF, 0x02, >=20 > + 0x21, 0x00, 0xB3, 0x31, 0xC1, 0x48, 0x3C, 0xEE, 0xA1, 0x6D, 0xA9, 0xF7= , 0xF5, > 0x9F, 0xD3, 0x6F, >=20 > + 0x7D, 0x6F, 0xAB, 0x76, 0x12, 0xEE, 0x01, 0x4D, 0xFC, 0xE6, 0x87, 0xEA= , 0xAB, > 0x09, 0x98, 0xD8, >=20 > + 0x97, 0x6F, 0x30, 0x82, 0x01, 0xF5, 0x30, 0x82, 0x01, 0x58, 0xA0, 0x03= , 0x02, > 0x01, 0x02, 0x02, >=20 > + 0x10, 0x4D, 0x88, 0xBF, 0x04, 0xDF, 0x10, 0x57, 0xBA, 0x43, 0x53, 0x6C= , 0xFD, > 0xA5, 0x90, 0xA7, >=20 > + 0x6F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03= , 0x02, > 0x30, 0x28, 0x31, >=20 > + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1D, 0x53, 0x75= , 0x72, > 0x66, 0x61, 0x63, >=20 > + 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72= , 0x65, > 0x53, 0x69, 0x67, >=20 > + 0x6E, 0x65, 0x72, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x31= , 0x38, > 0x30, 0x31, 0x31, >=20 > + 0x36, 0x32, 0x33, 0x32, 0x31, 0x31, 0x33, 0x5A, 0x17, 0x0D, 0x33, 0x38= , 0x30, > 0x31, 0x31, 0x36, >=20 > + 0x32, 0x33, 0x33, 0x31, 0x31, 0x33, 0x5A, 0x30, 0x26, 0x31, 0x24, 0x30= , 0x22, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54= , 0x65, > 0x73, 0x74, 0x46, >=20 > + 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65= , 0x72, > 0x43, 0x41, 0x30, >=20 > + 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01= , 0x06, > 0x08, 0x2A, 0x86, >=20 > + 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x0E, 0x58= , 0xA3, > 0xDB, 0xD3, 0x9C, >=20 > + 0x21, 0xFC, 0x63, 0x6F, 0xBD, 0xB9, 0xA7, 0x8A, 0xB3, 0xBF, 0x40, 0x87= , 0x43, > 0x06, 0x53, 0x91, >=20 > + 0x54, 0x31, 0x11, 0x0D, 0x3B, 0x50, 0x32, 0xEA, 0x11, 0xA3, 0x3D, 0x77= , 0x08, > 0x9E, 0xBC, 0x06, >=20 > + 0x5C, 0x21, 0x48, 0x9D, 0x9B, 0x7C, 0x45, 0xFD, 0x4B, 0xD7, 0x0C, 0x04= , > 0xD4, 0xE0, 0x0C, 0xB7, >=20 > + 0x6C, 0xBF, 0x22, 0xE1, 0x00, 0x99, 0x75, 0x39, 0x27, 0x59, 0xA3, 0x66= , 0x30, > 0x64, 0x30, 0x0E, >=20 > + 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02= , 0x02, > 0x04, 0x30, 0x12, >=20 > + 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30, 0x06= , 0x01, > 0x01, 0xFF, 0x02, >=20 > + 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30= , 0x16, > 0x80, 0x14, 0x6D, >=20 > + 0x8B, 0x24, 0xBF, 0x20, 0x9D, 0x54, 0xAF, 0x04, 0x5B, 0x84, 0x91, 0x96= , 0xAE, > 0x99, 0xC1, 0x23, >=20 > + 0x1C, 0x0E, 0xAC, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16= , 0x04, > 0x14, 0x63, 0x69, >=20 > + 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95, 0x54, 0x07, 0xC4= , 0xC5, > 0x2A, 0xD2, 0xA9, >=20 > + 0x2D, 0x2F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04= , 0x03, > 0x02, 0x03, 0x81, >=20 > + 0x8A, 0x00, 0x30, 0x81, 0x86, 0x02, 0x41, 0x2A, 0xD4, 0xFC, 0x35, 0x28= , 0x73, > 0x9F, 0xB3, 0x8A, >=20 > + 0xE3, 0x13, 0x7F, 0xCA, 0x36, 0x88, 0x1E, 0xD0, 0x95, 0xDC, 0xE9, 0x8A= , > 0x9D, 0xC0, 0x27, 0x8C, >=20 > + 0xD8, 0x57, 0x57, 0x5F, 0xDC, 0x13, 0x53, 0x68, 0xED, 0x2F, 0x4D, 0x6A= , 0x77, > 0xA2, 0x55, 0x48, >=20 > + 0xCB, 0x24, 0x55, 0x3A, 0x30, 0x32, 0xE5, 0x5C, 0xDF, 0x96, 0xF1, 0x15= , 0xD4, > 0xE7, 0xCD, 0x6A, >=20 > + 0x26, 0xBD, 0x7B, 0x92, 0x50, 0x74, 0xE4, 0x56, 0x02, 0x41, 0x46, 0x33= , 0x61, > 0x30, 0xFF, 0xA8, >=20 > + 0x53, 0x31, 0x38, 0xCA, 0x6B, 0x77, 0x88, 0x36, 0x9A, 0x0B, 0x57, 0xC3= , 0xD1, > 0xB2, 0xA7, 0x40, >=20 > + 0x53, 0x6A, 0xD1, 0x6C, 0x8A, 0x8B, 0x3C, 0x29, 0xC1, 0x2B, 0x82, 0x61= , 0x2F, > 0x1A, 0x9F, 0x2C, >=20 > + 0x9A, 0x81, 0xD0, 0x2B, 0x3E, 0x0D, 0x99, 0xB7, 0xD4, 0x7E, 0xA7, 0xEA= , > 0x0C, 0x8E, 0x13, 0x0E, >=20 > + 0x53, 0x65, 0x48, 0x17, 0xE5, 0xFA, 0x91, 0x79, 0x98, 0xC7, 0xA1, 0x31= , 0x81, > 0xA6, 0x30, 0x81, >=20 > + 0xA3, 0x02, 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65= , 0x73, > 0x74, 0x46, 0x69, >=20 > + 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72= , 0x43, > 0x41, 0x02, 0x10, >=20 > + 0x16, 0x2F, 0xD8, 0x2B, 0x8A, 0x98, 0x6A, 0x8A, 0x43, 0xC2, 0x22, 0xA5= , 0x47, > 0xA1, 0x18, 0xDD, >=20 > + 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02= , 0x01, > 0x05, 0x00, 0x30, >=20 > + 0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00= , 0x04, > 0x46, 0x30, 0x44, >=20 > + 0x02, 0x20, 0x40, 0xD4, 0xD4, 0xAF, 0x89, 0xFA, 0x83, 0x44, 0x7B, 0x59= , 0xB4, > 0x2B, 0x99, 0xF0, >=20 > + 0xD4, 0xB0, 0x75, 0x2E, 0x56, 0xAA, 0x0A, 0xDA, 0xCC, 0x82, 0xD5, 0xBC= , > 0x8D, 0xC4, 0x00, 0xF6, >=20 > + 0x46, 0xA4, 0x02, 0x20, 0x6F, 0xA7, 0xE1, 0x32, 0xB2, 0xF2, 0x5A, 0x69= , 0xC5, > 0x45, 0xB6, 0x35, >=20 > + 0x04, 0x05, 0x9B, 0xAC, 0x44, 0xB4, 0xA0, 0xE1, 0x25, 0x92, 0xE8, 0x3E= , 0x8F, > 0x85, 0xA3, 0xBE, >=20 > + 0x34, 0xFE, 0x78, 0x31, >=20 > +}; >=20 > + >=20 > +// >=20 > +// This is the TestSignedWithMultipleEKUsInCert.bin.Signature.p7b signat= ure in >=20 > +// byte array format. It has two EKU's in it: >=20 > +// "1.3.6.1.4.1.311.76.9.21.1" >=20 > +// "1.3.6.1.4.1.311.76.9.21.2" >=20 > +// >=20 > +CONST UINT8 TestSignedWithMultipleEKUsInCert[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x06, 0x2C, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06= , 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x04, 0x9E, 0x30, 0x82, 0x01= , 0xF5, > 0x30, 0x82, 0x01, >=20 > + 0x58, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x4D, 0x88, 0xBF, 0x04= , 0xDF, > 0x10, 0x57, 0xBA, >=20 > + 0x43, 0x53, 0x6C, 0xFD, 0xA5, 0x90, 0xA7, 0x6F, 0x30, 0x0A, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x28, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x1D, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74= , 0x46, > 0x69, 0x72, 0x6D, >=20 > + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x52, 0x6F= , 0x6F, > 0x74, 0x30, 0x1E, >=20 > + 0x17, 0x0D, 0x31, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x32, 0x31= , 0x31, > 0x33, 0x5A, 0x17, >=20 > + 0x0D, 0x33, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x33, 0x31, 0x31= , 0x33, > 0x5A, 0x30, 0x26, >=20 > + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53= , 0x75, > 0x72, 0x66, 0x61, >=20 > + 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61= , 0x72, > 0x65, 0x53, 0x69, >=20 > + 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01= , 0x07, > 0x03, 0x42, 0x00, >=20 > + 0x04, 0x0E, 0x58, 0xA3, 0xDB, 0xD3, 0x9C, 0x21, 0xFC, 0x63, 0x6F, 0xBD= , > 0xB9, 0xA7, 0x8A, 0xB3, >=20 > + 0xBF, 0x40, 0x87, 0x43, 0x06, 0x53, 0x91, 0x54, 0x31, 0x11, 0x0D, 0x3B= , 0x50, > 0x32, 0xEA, 0x11, >=20 > + 0xA3, 0x3D, 0x77, 0x08, 0x9E, 0xBC, 0x06, 0x5C, 0x21, 0x48, 0x9D, 0x9B= , > 0x7C, 0x45, 0xFD, 0x4B, >=20 > + 0xD7, 0x0C, 0x04, 0xD4, 0xE0, 0x0C, 0xB7, 0x6C, 0xBF, 0x22, 0xE1, 0x00= , 0x99, > 0x75, 0x39, 0x27, >=20 > + 0x59, 0xA3, 0x66, 0x30, 0x64, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F= , 0x01, > 0x01, 0xFF, 0x04, >=20 > + 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13= , 0x01, > 0x01, 0xFF, 0x04, >=20 > + 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06= , 0x03, > 0x55, 0x1D, 0x23, >=20 > + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6D, 0x8B, 0x24, 0xBF, 0x20, 0x9D= , 0x54, > 0xAF, 0x04, 0x5B, >=20 > + 0x84, 0x91, 0x96, 0xAE, 0x99, 0xC1, 0x23, 0x1C, 0x0E, 0xAC, 0x30, 0x1D= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x63, 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8= , 0x42, > 0xEA, 0x55, 0x95, >=20 > + 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F, 0x30, 0x0A, 0x06= , 0x08, > 0x2A, 0x86, 0x48, >=20 > + 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8A, 0x00, 0x30, 0x81, 0x86= , 0x02, > 0x41, 0x2A, 0xD4, >=20 > + 0xFC, 0x35, 0x28, 0x73, 0x9F, 0xB3, 0x8A, 0xE3, 0x13, 0x7F, 0xCA, 0x36= , 0x88, > 0x1E, 0xD0, 0x95, >=20 > + 0xDC, 0xE9, 0x8A, 0x9D, 0xC0, 0x27, 0x8C, 0xD8, 0x57, 0x57, 0x5F, 0xDC= , > 0x13, 0x53, 0x68, 0xED, >=20 > + 0x2F, 0x4D, 0x6A, 0x77, 0xA2, 0x55, 0x48, 0xCB, 0x24, 0x55, 0x3A, 0x30= , 0x32, > 0xE5, 0x5C, 0xDF, >=20 > + 0x96, 0xF1, 0x15, 0xD4, 0xE7, 0xCD, 0x6A, 0x26, 0xBD, 0x7B, 0x92, 0x50= , > 0x74, 0xE4, 0x56, 0x02, >=20 > + 0x41, 0x46, 0x33, 0x61, 0x30, 0xFF, 0xA8, 0x53, 0x31, 0x38, 0xCA, 0x6B= , 0x77, > 0x88, 0x36, 0x9A, >=20 > + 0x0B, 0x57, 0xC3, 0xD1, 0xB2, 0xA7, 0x40, 0x53, 0x6A, 0xD1, 0x6C, 0x8A= , > 0x8B, 0x3C, 0x29, 0xC1, >=20 > + 0x2B, 0x82, 0x61, 0x2F, 0x1A, 0x9F, 0x2C, 0x9A, 0x81, 0xD0, 0x2B, 0x3E= , 0x0D, > 0x99, 0xB7, 0xD4, >=20 > + 0x7E, 0xA7, 0xEA, 0x0C, 0x8E, 0x13, 0x0E, 0x53, 0x65, 0x48, 0x17, 0xE5= , 0xFA, > 0x91, 0x79, 0x98, >=20 > + 0xC7, 0xA1, 0x30, 0x82, 0x02, 0xA1, 0x30, 0x82, 0x02, 0x47, 0xA0, 0x03= , 0x02, > 0x01, 0x02, 0x02, >=20 > + 0x10, 0x29, 0xBB, 0x52, 0x25, 0xED, 0x34, 0xB7, 0xBA, 0x40, 0xF8, 0xC3= , 0x14, > 0xB5, 0xC8, 0x86, >=20 > + 0x9E, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03= , 0x02, > 0x30, 0x26, 0x31, >=20 > + 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53, 0x75= , 0x72, > 0x66, 0x61, 0x63, >=20 > + 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72= , 0x65, > 0x53, 0x69, 0x67, >=20 > + 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30= , 0x37, > 0x32, 0x37, 0x32, >=20 > + 0x30, 0x33, 0x34, 0x31, 0x31, 0x5A, 0x17, 0x0D, 0x32, 0x33, 0x30, 0x37= , 0x32, > 0x37, 0x32, 0x30, >=20 > + 0x34, 0x34, 0x31, 0x31, 0x5A, 0x30, 0x3A, 0x31, 0x38, 0x30, 0x36, 0x06= , 0x03, > 0x55, 0x04, 0x03, >=20 > + 0x0C, 0x2F, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63= , 0x65, > 0x46, 0x69, 0x72, >=20 > + 0x6D, 0x77, 0x61, 0x72, 0x65, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67= , 0x6E, > 0x65, 0x72, 0x4D, >=20 > + 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x45, 0x4B, 0x55, 0x73, 0x49= , 0x6E, > 0x43, 0x65, 0x72, >=20 > + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48= , 0x86, > 0xF7, 0x0D, 0x01, >=20 > + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01= , 0x0A, > 0x02, 0x82, 0x01, >=20 > + 0x01, 0x00, 0xD0, 0x61, 0xA5, 0xCD, 0x49, 0x4B, 0x5C, 0x88, 0x89, 0x09= , > 0xCA, 0xE7, 0xEB, 0x58, >=20 > + 0x91, 0x8F, 0x59, 0xBE, 0xE8, 0x16, 0xC0, 0xEF, 0x75, 0xE5, 0x18, 0x88= , 0xE8, > 0xCE, 0xFA, 0xD2, >=20 > + 0xB0, 0x77, 0xC1, 0xD2, 0xF2, 0x9E, 0x65, 0xE8, 0xDB, 0x6B, 0x8C, 0x93= , 0xE5, > 0x39, 0x1D, 0xF9, >=20 > + 0x37, 0x2A, 0x52, 0x7F, 0xC3, 0x93, 0xD7, 0x9F, 0x03, 0x83, 0xBC, 0x6E= , 0xC6, > 0x83, 0x64, 0x15, >=20 > + 0x1A, 0x5C, 0x74, 0x41, 0x40, 0x21, 0xC9, 0x25, 0xF0, 0x14, 0xA3, 0x29= , 0x97, > 0x29, 0x8C, 0x5D, >=20 > + 0xED, 0xE9, 0x8D, 0x66, 0xCC, 0xD1, 0xD1, 0xE0, 0x08, 0x52, 0xA5, 0x93= , > 0x07, 0xCB, 0xF8, 0x95, >=20 > + 0x2C, 0x8D, 0x29, 0x84, 0x10, 0x5F, 0x57, 0x52, 0x10, 0x75, 0x35, 0x8A= , 0x84, > 0xE3, 0xAE, 0x10, >=20 > + 0x57, 0x29, 0xE9, 0xEB, 0x6E, 0xD2, 0xC7, 0x6D, 0x35, 0x43, 0x67, 0x82= , 0xE3, > 0x98, 0x29, 0x9C, >=20 > + 0x59, 0x77, 0xA0, 0x00, 0x27, 0xB2, 0x5D, 0xB9, 0x84, 0x31, 0x89, 0x2F= , 0x77, > 0xC5, 0xB9, 0x23, >=20 > + 0xE0, 0x14, 0x94, 0x6F, 0x33, 0xD5, 0x3B, 0x58, 0xFB, 0xD6, 0xB6, 0xE5= , 0xD4, > 0x09, 0x3D, 0xB2, >=20 > + 0xE7, 0x87, 0xC6, 0xEA, 0x73, 0x61, 0x6D, 0xDA, 0xFA, 0x95, 0x2B, 0x2B= , > 0x8A, 0xEC, 0x7E, 0x68, >=20 > + 0x0F, 0x98, 0x16, 0x08, 0xFF, 0xB2, 0xC1, 0xBF, 0xAB, 0x3D, 0xB0, 0xC2= , 0xD5, > 0x16, 0xAE, 0x71, >=20 > + 0x54, 0x48, 0xD1, 0x52, 0x72, 0xFD, 0x42, 0x09, 0x66, 0xAF, 0x50, 0xDE= , 0x4C, > 0x3C, 0x6A, 0xBC, >=20 > + 0x1F, 0xC5, 0x0A, 0xA0, 0xC5, 0x9A, 0xF1, 0xB2, 0xB2, 0x3F, 0x14, 0xE1= , 0x93, > 0x07, 0xF0, 0x00, >=20 > + 0x04, 0xEF, 0x16, 0x76, 0x18, 0x10, 0x65, 0x63, 0x42, 0x42, 0x12, 0xD0= , 0x65, > 0xF5, 0xA2, 0xCF, >=20 > + 0x90, 0xBE, 0x65, 0x57, 0x25, 0x8C, 0xAC, 0x5E, 0x05, 0x31, 0x91, 0x9E= , 0x4D, > 0x18, 0xBC, 0x15, >=20 > + 0x30, 0x7B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x78, 0x30, 0x76, 0x30= , 0x0E, > 0x06, 0x03, 0x55, >=20 > + 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30= , 0x24, > 0x06, 0x03, 0x55, >=20 > + 0x1D, 0x25, 0x04, 0x1D, 0x30, 0x1B, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04= , 0x01, > 0x82, 0x37, 0x4C, >=20 > + 0x09, 0x15, 0x01, 0x06, 0x0C, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37= , 0x4C, > 0x09, 0x15, 0x01, >=20 > + 0x02, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16= , 0x80, > 0x14, 0x63, 0x69, >=20 > + 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95, 0x54, 0x07, 0xC4= , 0xC5, > 0x2A, 0xD2, 0xA9, >=20 > + 0x2D, 0x2F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04= , 0x14, > 0xC0, 0xDC, 0xCB, >=20 > + 0x76, 0x52, 0x84, 0x91, 0xF5, 0x37, 0x0D, 0x85, 0xB6, 0x45, 0x23, 0xFA= , 0xA0, > 0xAD, 0xC1, 0x1D, >=20 > + 0x92, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03= , 0x02, > 0x03, 0x48, 0x00, >=20 > + 0x30, 0x45, 0x02, 0x21, 0x00, 0xF4, 0xB0, 0x8A, 0x91, 0x96, 0x61, 0xDF= , 0xC3, > 0x54, 0xA5, 0xB3, >=20 > + 0x1A, 0x3C, 0x28, 0x06, 0xC0, 0xA1, 0xF5, 0x72, 0xD1, 0x02, 0x5C, 0x69= , 0xB6, > 0x6C, 0xA8, 0xDC, >=20 > + 0x6B, 0x78, 0xD9, 0x0C, 0x9A, 0x02, 0x20, 0x37, 0x2C, 0x61, 0x9E, 0x6E= , 0x5F, > 0xC6, 0xFA, 0x92, >=20 > + 0x52, 0xB0, 0x4E, 0x52, 0xC7, 0xF1, 0xE9, 0x0F, 0xB6, 0xD5, 0x08, 0x10= , 0x41, > 0x3A, 0x61, 0xFD, >=20 > + 0xC5, 0x70, 0x87, 0xBB, 0x49, 0x82, 0xEA, 0x31, 0x82, 0x01, 0x65, 0x30= , 0x82, > 0x01, 0x61, 0x02, >=20 > + 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74= , 0x46, > 0x69, 0x72, 0x6D, >=20 > + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41= , 0x02, > 0x10, 0x29, 0xBB, >=20 > + 0x52, 0x25, 0xED, 0x34, 0xB7, 0xBA, 0x40, 0xF8, 0xC3, 0x14, 0xB5, 0xC8= , 0x86, > 0x9E, 0x30, 0x0D, >=20 > + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05= , 0x00, > 0x30, 0x0D, 0x06, >=20 > + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00= , 0x04, > 0x82, 0x01, 0x00, >=20 > + 0xBB, 0x51, 0xDD, 0x8F, 0xB4, 0x99, 0x37, 0x13, 0x94, 0x6F, 0x09, 0x05= , 0xBA, > 0x5B, 0x8D, 0x86, >=20 > + 0x9A, 0xB0, 0x51, 0xEB, 0x6B, 0x10, 0xD7, 0xD1, 0x95, 0x4A, 0x4D, 0x23= , > 0xA3, 0x37, 0x82, 0xDF, >=20 > + 0x1F, 0x24, 0xE4, 0x62, 0x4F, 0xD4, 0x52, 0x73, 0xF8, 0x39, 0x2B, 0x46= , 0xF4, > 0x61, 0xCE, 0xF1, >=20 > + 0x64, 0xD7, 0x60, 0xC9, 0xCC, 0xCA, 0x8D, 0x94, 0xA5, 0x67, 0x68, 0x2B= , > 0xE4, 0xB0, 0xD7, 0x64, >=20 > + 0xC8, 0xF3, 0x9C, 0x98, 0x2C, 0x0A, 0x69, 0x56, 0xD6, 0x59, 0xDF, 0x4D= , 0x38, > 0xE7, 0xD4, 0x63, >=20 > + 0x2B, 0x74, 0xA1, 0xA3, 0xF9, 0xE1, 0x1A, 0x12, 0x2B, 0x04, 0x46, 0x11= , 0xA8, > 0x26, 0x00, 0x15, >=20 > + 0x4F, 0x14, 0x7F, 0xB1, 0xB4, 0x25, 0x0C, 0x87, 0xB0, 0x56, 0x8C, 0xBE= , 0x0D, > 0xFA, 0x66, 0x6F, >=20 > + 0x8A, 0xCB, 0x0A, 0x88, 0x3B, 0xF6, 0x52, 0xCD, 0xBB, 0xA2, 0xA9, 0xAD= , > 0xAD, 0x09, 0x0D, 0xDA, >=20 > + 0x79, 0x8A, 0xAE, 0xE5, 0x9D, 0xCE, 0x5C, 0x60, 0x99, 0x67, 0x26, 0xC4= , 0xAF, > 0xD4, 0x01, 0xB1, >=20 > + 0x6D, 0xD1, 0x8C, 0x4D, 0x1D, 0xBD, 0xAB, 0x42, 0x2C, 0xF2, 0xD8, 0x07= , > 0x3F, 0xDC, 0x5E, 0x68, >=20 > + 0x4C, 0xD9, 0xDB, 0xC0, 0x93, 0xBB, 0x8E, 0xA0, 0xA2, 0x09, 0x5F, 0x03= , > 0x58, 0x48, 0x54, 0xF6, >=20 > + 0xF0, 0xDA, 0x7A, 0x7F, 0xC4, 0xD2, 0x9F, 0x64, 0xF5, 0x85, 0x86, 0x48= , 0xDF, > 0x7F, 0x86, 0x14, >=20 > + 0x7C, 0x62, 0x77, 0x1D, 0x22, 0xE5, 0x34, 0x42, 0xE4, 0x49, 0x38, 0xB4= , 0xE4, > 0x22, 0xFB, 0x5F, >=20 > + 0xB5, 0xEA, 0xBA, 0x90, 0x51, 0xC0, 0xC6, 0x94, 0x09, 0xE4, 0xB7, 0x15= , 0x3F, > 0x07, 0x23, 0xE8, >=20 > + 0x46, 0x93, 0xA5, 0x7B, 0x7A, 0x91, 0xDA, 0x8E, 0x7C, 0xAF, 0xBD, 0x41= , > 0xB9, 0xDE, 0x85, 0x04, >=20 > + 0xBC, 0x08, 0x6C, 0x08, 0x56, 0x16, 0xDB, 0xB5, 0xEE, 0x65, 0x76, 0xE9= , 0x78, > 0xD3, 0xDD, 0xD8, >=20 > + >=20 > +}; >=20 > + >=20 > +// >=20 > +// This is the TestSignedWithProductId10001.bin.p7b in byte array format= . >=20 > +// It has two EKU's in it: (Product ID is 10001) >=20 > +// "1.3.6.1.4.1.311.76.9.21.1" >=20 > +// "1.3.6.1.4.1.311.76.9.21.1.10001" >=20 > +// >=20 > +CONST UINT8 TestSignedWithProductId10001[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x06, 0x1E, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06= , 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x04, 0x90, 0x30, 0x82, 0x01= , 0xF5, > 0x30, 0x82, 0x01, >=20 > + 0x58, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x4D, 0x88, 0xBF, 0x04= , 0xDF, > 0x10, 0x57, 0xBA, >=20 > + 0x43, 0x53, 0x6C, 0xFD, 0xA5, 0x90, 0xA7, 0x6F, 0x30, 0x0A, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x28, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x1D, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74= , 0x46, > 0x69, 0x72, 0x6D, >=20 > + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x52, 0x6F= , 0x6F, > 0x74, 0x30, 0x1E, >=20 > + 0x17, 0x0D, 0x31, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x32, 0x31= , 0x31, > 0x33, 0x5A, 0x17, >=20 > + 0x0D, 0x33, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x33, 0x31, 0x31= , 0x33, > 0x5A, 0x30, 0x26, >=20 > + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53= , 0x75, > 0x72, 0x66, 0x61, >=20 > + 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61= , 0x72, > 0x65, 0x53, 0x69, >=20 > + 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01= , 0x07, > 0x03, 0x42, 0x00, >=20 > + 0x04, 0x0E, 0x58, 0xA3, 0xDB, 0xD3, 0x9C, 0x21, 0xFC, 0x63, 0x6F, 0xBD= , > 0xB9, 0xA7, 0x8A, 0xB3, >=20 > + 0xBF, 0x40, 0x87, 0x43, 0x06, 0x53, 0x91, 0x54, 0x31, 0x11, 0x0D, 0x3B= , 0x50, > 0x32, 0xEA, 0x11, >=20 > + 0xA3, 0x3D, 0x77, 0x08, 0x9E, 0xBC, 0x06, 0x5C, 0x21, 0x48, 0x9D, 0x9B= , > 0x7C, 0x45, 0xFD, 0x4B, >=20 > + 0xD7, 0x0C, 0x04, 0xD4, 0xE0, 0x0C, 0xB7, 0x6C, 0xBF, 0x22, 0xE1, 0x00= , 0x99, > 0x75, 0x39, 0x27, >=20 > + 0x59, 0xA3, 0x66, 0x30, 0x64, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F= , 0x01, > 0x01, 0xFF, 0x04, >=20 > + 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13= , 0x01, > 0x01, 0xFF, 0x04, >=20 > + 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06= , 0x03, > 0x55, 0x1D, 0x23, >=20 > + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6D, 0x8B, 0x24, 0xBF, 0x20, 0x9D= , 0x54, > 0xAF, 0x04, 0x5B, >=20 > + 0x84, 0x91, 0x96, 0xAE, 0x99, 0xC1, 0x23, 0x1C, 0x0E, 0xAC, 0x30, 0x1D= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x63, 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8= , 0x42, > 0xEA, 0x55, 0x95, >=20 > + 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F, 0x30, 0x0A, 0x06= , 0x08, > 0x2A, 0x86, 0x48, >=20 > + 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8A, 0x00, 0x30, 0x81, 0x86= , 0x02, > 0x41, 0x2A, 0xD4, >=20 > + 0xFC, 0x35, 0x28, 0x73, 0x9F, 0xB3, 0x8A, 0xE3, 0x13, 0x7F, 0xCA, 0x36= , 0x88, > 0x1E, 0xD0, 0x95, >=20 > + 0xDC, 0xE9, 0x8A, 0x9D, 0xC0, 0x27, 0x8C, 0xD8, 0x57, 0x57, 0x5F, 0xDC= , > 0x13, 0x53, 0x68, 0xED, >=20 > + 0x2F, 0x4D, 0x6A, 0x77, 0xA2, 0x55, 0x48, 0xCB, 0x24, 0x55, 0x3A, 0x30= , 0x32, > 0xE5, 0x5C, 0xDF, >=20 > + 0x96, 0xF1, 0x15, 0xD4, 0xE7, 0xCD, 0x6A, 0x26, 0xBD, 0x7B, 0x92, 0x50= , > 0x74, 0xE4, 0x56, 0x02, >=20 > + 0x41, 0x46, 0x33, 0x61, 0x30, 0xFF, 0xA8, 0x53, 0x31, 0x38, 0xCA, 0x6B= , 0x77, > 0x88, 0x36, 0x9A, >=20 > + 0x0B, 0x57, 0xC3, 0xD1, 0xB2, 0xA7, 0x40, 0x53, 0x6A, 0xD1, 0x6C, 0x8A= , > 0x8B, 0x3C, 0x29, 0xC1, >=20 > + 0x2B, 0x82, 0x61, 0x2F, 0x1A, 0x9F, 0x2C, 0x9A, 0x81, 0xD0, 0x2B, 0x3E= , 0x0D, > 0x99, 0xB7, 0xD4, >=20 > + 0x7E, 0xA7, 0xEA, 0x0C, 0x8E, 0x13, 0x0E, 0x53, 0x65, 0x48, 0x17, 0xE5= , 0xFA, > 0x91, 0x79, 0x98, >=20 > + 0xC7, 0xA1, 0x30, 0x82, 0x02, 0x93, 0x30, 0x82, 0x02, 0x39, 0xA0, 0x03= , 0x02, > 0x01, 0x02, 0x02, >=20 > + 0x10, 0x1F, 0x65, 0xF1, 0x29, 0x3B, 0x89, 0x6A, 0xBF, 0x43, 0xAF, 0xC7= , 0x30, > 0x36, 0xD1, 0x0D, >=20 > + 0x2B, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03= , 0x02, > 0x30, 0x26, 0x31, >=20 > + 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53, 0x75= , 0x72, > 0x66, 0x61, 0x63, >=20 > + 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72= , 0x65, > 0x53, 0x69, 0x67, >=20 > + 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30= , 0x38, > 0x30, 0x32, 0x31, >=20 > + 0x36, 0x34, 0x32, 0x32, 0x33, 0x5A, 0x17, 0x0D, 0x32, 0x33, 0x30, 0x38= , 0x30, > 0x32, 0x31, 0x36, >=20 > + 0x35, 0x32, 0x32, 0x33, 0x5A, 0x30, 0x2B, 0x31, 0x29, 0x30, 0x27, 0x06= , 0x03, > 0x55, 0x04, 0x03, >=20 > + 0x0C, 0x20, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61= , 0x72, > 0x65, 0x53, 0x69, >=20 > + 0x67, 0x6E, 0x65, 0x72, 0x50, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x49= , 0x44, > 0x31, 0x30, 0x30, >=20 > + 0x30, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86= , 0x48, > 0x86, 0xF7, 0x0D, >=20 > + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82= , 0x01, > 0x0A, 0x02, 0x82, >=20 > + 0x01, 0x01, 0x00, 0x8C, 0x26, 0x35, 0xBC, 0x18, 0x06, 0x44, 0x65, 0xF6= , 0x55, > 0x29, 0x78, 0x26, >=20 > + 0xCA, 0x57, 0xD0, 0x4C, 0x31, 0x84, 0x5B, 0x64, 0xDE, 0x8E, 0x34, 0x84= , 0x45, > 0x12, 0xE8, 0x5A, >=20 > + 0x86, 0x4B, 0x5A, 0x61, 0x4C, 0xD8, 0xE2, 0x7D, 0x3B, 0xBD, 0x25, 0x58= , > 0x30, 0x1D, 0x5E, 0x65, >=20 > + 0x50, 0xC3, 0x07, 0xF2, 0x50, 0xE1, 0x48, 0x2A, 0xD9, 0x70, 0x5F, 0xF3= , 0x2B, > 0xF1, 0x1F, 0x21, >=20 > + 0x06, 0x62, 0x81, 0xE9, 0x8E, 0xDA, 0xDC, 0x69, 0xA3, 0x6E, 0x2F, 0xD2= , > 0x3A, 0x79, 0x01, 0xAF, >=20 > + 0xA1, 0x2A, 0x28, 0xDD, 0x32, 0x4E, 0xCE, 0x40, 0xB8, 0x41, 0xA4, 0x7D= , > 0x3D, 0x70, 0x3F, 0xC4, >=20 > + 0xDA, 0x61, 0x18, 0xBF, 0xFC, 0xAB, 0x16, 0xE3, 0x65, 0x3F, 0x6D, 0x76= , 0x37, > 0xAD, 0x1F, 0x11, >=20 > + 0x05, 0x0F, 0xC2, 0x56, 0xD1, 0x45, 0xBD, 0x25, 0xCC, 0x19, 0xC4, 0x2A= , > 0x03, 0xED, 0x3B, 0x05, >=20 > + 0xA7, 0x87, 0x30, 0xE6, 0x84, 0x11, 0x88, 0xD0, 0x91, 0x4E, 0x52, 0xB5= , 0x97, > 0xDF, 0x57, 0xEF, >=20 > + 0x5E, 0x72, 0x68, 0x49, 0x85, 0xC8, 0x7F, 0xA7, 0x5F, 0x7B, 0xE7, 0xCE= , 0xA1, > 0x53, 0xBA, 0xF8, >=20 > + 0xA9, 0xDF, 0x8C, 0x8C, 0x72, 0xD2, 0xA9, 0x7A, 0xF5, 0x07, 0x4A, 0x75= , > 0x1A, 0x0F, 0x50, 0x9E, >=20 > + 0xEA, 0x4C, 0xFC, 0xC7, 0x74, 0xE2, 0x4D, 0xD1, 0x01, 0xC4, 0xB6, 0xCA= , > 0xA5, 0xCC, 0x23, 0xFA, >=20 > + 0xDE, 0xF2, 0x9C, 0x8B, 0xA6, 0x32, 0x8D, 0xED, 0x97, 0xCC, 0x50, 0xB0= , > 0xB6, 0x1C, 0x89, 0x64, >=20 > + 0xFC, 0xD7, 0xD0, 0x19, 0x01, 0x50, 0xD9, 0xBC, 0x78, 0xB1, 0x76, 0x6D= , > 0x01, 0xF8, 0xEC, 0x68, >=20 > + 0x97, 0x20, 0x32, 0xD0, 0x57, 0x76, 0x93, 0x73, 0xC9, 0x2B, 0x68, 0x9D= , 0x5E, > 0xE1, 0x70, 0xDD, >=20 > + 0x6F, 0x3A, 0x09, 0x20, 0x63, 0xE9, 0xD9, 0x30, 0x05, 0x14, 0x4A, 0x76= , 0xA7, > 0x3E, 0x61, 0xCD, >=20 > + 0x2F, 0x6D, 0xE3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x79, 0x30, 0x77= , 0x30, > 0x0E, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86= , 0x30, > 0x25, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x25, 0x04, 0x1E, 0x30, 0x1C, 0x06, 0x0B, 0x2B, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x4C, 0x09, 0x15, 0x01, 0x06, 0x0D, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82= , 0x37, > 0x4C, 0x09, 0x15, >=20 > + 0x01, 0xCE, 0x11, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18= , 0x30, > 0x16, 0x80, 0x14, >=20 > + 0x63, 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95, 0x54= , 0x07, > 0xC4, 0xC5, 0x2A, >=20 > + 0xD2, 0xA9, 0x2D, 0x2F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04= , 0x16, > 0x04, 0x14, 0x09, >=20 > + 0x10, 0xEE, 0x7B, 0xB0, 0x56, 0xB0, 0xCE, 0x42, 0x83, 0x84, 0x90, 0x70= , 0xAF, > 0x8D, 0x58, 0x1B, >=20 > + 0x77, 0x43, 0x0E, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D= , 0x04, > 0x03, 0x02, 0x03, >=20 > + 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xEE, 0x2A, 0x00, 0x7E, 0xC6= , 0x4E, > 0x6F, 0x22, 0xCC, >=20 > + 0x16, 0xEA, 0xAC, 0x90, 0x3D, 0xD7, 0x6E, 0xAA, 0xBF, 0x7E, 0xC7, 0x45= , > 0x3F, 0x36, 0x22, 0x81, >=20 > + 0xC6, 0x38, 0xD3, 0x1E, 0xDF, 0x5F, 0x2C, 0x02, 0x20, 0x21, 0xEC, 0xCF= , 0x78, > 0x1D, 0xDB, 0x4F, >=20 > + 0x50, 0xE8, 0xD6, 0x07, 0xB0, 0x6A, 0xE9, 0x1E, 0xBF, 0x9C, 0xE8, 0xB9= , 0xF7, > 0xC6, 0xEA, 0x04, >=20 > + 0x7B, 0x5E, 0xD8, 0x67, 0xAB, 0xD2, 0xDE, 0x77, 0xB9, 0x31, 0x82, 0x01= , > 0x65, 0x30, 0x82, 0x01, >=20 > + 0x61, 0x02, 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65= , 0x73, > 0x74, 0x46, 0x69, >=20 > + 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72= , 0x43, > 0x41, 0x02, 0x10, >=20 > + 0x1F, 0x65, 0xF1, 0x29, 0x3B, 0x89, 0x6A, 0xBF, 0x43, 0xAF, 0xC7, 0x30= , 0x36, > 0xD1, 0x0D, 0x2B, >=20 > + 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02= , 0x01, > 0x05, 0x00, 0x30, >=20 > + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01= , 0x05, > 0x00, 0x04, 0x82, >=20 > + 0x01, 0x00, 0x1F, 0x7F, 0x30, 0xDC, 0xD4, 0x12, 0x9D, 0x0B, 0x71, 0x30= , 0x69, > 0x91, 0xCC, 0x8A, >=20 > + 0xFB, 0xF6, 0x54, 0x14, 0x4C, 0x0B, 0x78, 0xCE, 0xD3, 0xC6, 0xCE, 0x3E= , 0xAC, > 0xCC, 0x0F, 0xCE, >=20 > + 0x3A, 0xFC, 0x63, 0x96, 0xD2, 0x7B, 0xDB, 0xF7, 0xE7, 0x6D, 0x64, 0x52= , > 0x5C, 0x5D, 0x19, 0xBF, >=20 > + 0xE3, 0x04, 0x71, 0x8A, 0xD1, 0x2A, 0xB6, 0x5A, 0x8C, 0xFC, 0xE2, 0x51= , 0x27, > 0x64, 0x9B, 0xA8, >=20 > + 0x84, 0x69, 0x60, 0x4E, 0x56, 0x83, 0x91, 0x4F, 0xEB, 0x5A, 0xB7, 0x73= , 0xE1, > 0xAC, 0x24, 0xD2, >=20 > + 0x60, 0xD8, 0x58, 0x21, 0x51, 0x7B, 0x87, 0x93, 0x5B, 0x5F, 0x91, 0x4B= , 0x8C, > 0xFE, 0xA5, 0x16, >=20 > + 0x2E, 0x33, 0x4D, 0xBB, 0x0C, 0x95, 0x5C, 0xC3, 0x9C, 0x3D, 0xBB, 0x58= , > 0x17, 0x39, 0x1E, 0x10, >=20 > + 0x47, 0xCD, 0xEE, 0xD3, 0xE7, 0x73, 0x44, 0x7D, 0x35, 0xD9, 0x9F, 0xC3= , > 0xAC, 0x11, 0x2E, 0x29, >=20 > + 0x54, 0x80, 0x8F, 0x19, 0xDC, 0xC3, 0x11, 0x3D, 0x75, 0xF0, 0x3B, 0x34= , 0x63, > 0xB1, 0x59, 0x1D, >=20 > + 0x4B, 0x66, 0xBE, 0xB8, 0xAC, 0x36, 0x71, 0x63, 0xD4, 0x41, 0xCF, 0x24= , 0x2A, > 0x3F, 0xC5, 0x25, >=20 > + 0xD2, 0x45, 0x9B, 0xD3, 0x77, 0xD8, 0xD8, 0x1A, 0xC6, 0xAE, 0xE3, 0xF5= , > 0xC5, 0xEB, 0xF3, 0x92, >=20 > + 0x27, 0x3C, 0x3F, 0x48, 0x96, 0xF2, 0xB4, 0x66, 0x0A, 0xFB, 0xBF, 0x76= , 0xDC, > 0x1E, 0xC5, 0xC6, >=20 > + 0x4D, 0xA1, 0x5C, 0x13, 0x22, 0xF8, 0x89, 0xE2, 0x15, 0x43, 0x84, 0xEF= , 0xC8, > 0x30, 0xE5, 0xF0, >=20 > + 0xBA, 0x51, 0x96, 0x3E, 0xF9, 0xCB, 0x41, 0xE6, 0x36, 0xD4, 0xE3, 0xDA= , 0x71, > 0xC8, 0x5E, 0x43, >=20 > + 0x7A, 0xBE, 0x8E, 0xC0, 0xA5, 0xEF, 0x66, 0xFD, 0x63, 0xD3, 0xF1, 0xBF= , 0x66, > 0x4F, 0x35, 0x24, >=20 > + 0x66, 0xC9, 0xCD, 0x1E, 0x3D, 0x71, 0x19, 0x84, 0x1A, 0x9D, 0xA5, 0x56= , > 0xF4, 0xF9, 0xE0, 0x88, >=20 > + 0x7C, 0x52, >=20 > +}; >=20 > + >=20 > +// >=20 > +// This is TestSignEKUsWith1CertInSignature.bin.p7b in byte array format= . >=20 > +// It has one EKU in it: >=20 > +// "1.3.6.1.4.1.311.76.9.21.1" >=20 > +// >=20 > +CONST UINT8 TestSignEKUsWith1CertInSignature[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x02, 0x7D, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06= , 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x01, 0xB2, 0x30, 0x82, 0x01= , 0xAE, > 0x30, 0x82, 0x01, >=20 > + 0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB= , 0x00, > 0x35, 0xC8, 0x96, >=20 > + 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0A, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73= , 0x69, > 0x6E, 0x67, 0x49, >=20 > + 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D= , 0x31, > 0x38, 0x30, 0x38, >=20 > + 0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x33= , 0x38, > 0x30, 0x38, 0x31, >=20 > + 0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30, 0x23, 0x31, 0x21= , 0x30, > 0x1F, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55= , 0x50, > 0x61, 0x72, 0x73, >=20 > + 0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67, 0x6E, 0x65= , 0x72, > 0x30, 0x59, 0x30, >=20 > + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6, 0xEA, 0x5E, 0x14= , 0x20, > 0x6D, 0x11, 0xC0, >=20 > + 0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8, 0x21, 0x21, 0x3A= , 0xC2, > 0xBA, 0x37, 0x24, >=20 > + 0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F, 0xA8, 0xDC, 0x3A= , > 0x06, 0x30, 0x53, 0xFC, >=20 > + 0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40, 0xE8, 0x97, 0x6A= , 0x63, > 0x30, 0xF7, 0x37, >=20 > + 0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3, 0x6A, 0x30, 0x68= , > 0x30, 0x0E, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80= , 0x30, > 0x16, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04= , 0x18, > 0x30, 0x16, 0x80, >=20 > + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0= , 0x40, > 0x3C, 0x3E, 0x9C, >=20 > + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E= , > 0x04, 0x16, 0x04, 0x14, >=20 > + 0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4, 0xC8, 0x0D, 0x4C= , 0x0A, > 0xD3, 0xD4, 0xDE, >=20 > + 0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE= , 0x3D, > 0x04, 0x03, 0x02, >=20 > + 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C, 0x39, 0xC6, 0x6C= , 0xD6, > 0x8F, 0x20, 0xA5, >=20 > + 0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC, 0x2E, 0x1B, 0x6F= , 0x6F, > 0x79, 0x9F, 0x8D, >=20 > + 0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02, 0x21, 0x00, 0xC5= , 0xD8, > 0x49, 0xD1, 0x40, >=20 > + 0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10, 0x8A, 0x3C, 0x4E= , 0xA0, > 0xD6, 0x6B, 0x8C, >=20 > + 0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43, 0x4B, 0x35, 0x31= , 0x81, > 0xA3, 0x30, 0x81, >=20 > + 0xA0, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61= , 0x72, > 0x73, 0x69, 0x6E, >=20 > + 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x02, 0x10= , 0x3E, > 0xEE, 0x4B, 0xFB, >=20 > + 0x00, 0x35, 0xC8, 0x96, 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB= , 0x30, > 0x0D, 0x06, 0x09, >=20 > + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30= , 0x0B, > 0x06, 0x07, 0x2A, >=20 > + 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00, 0x04, 0x47, 0x30, 0x45= , 0x02, > 0x21, 0x00, 0xB8, >=20 > + 0xCC, 0x0F, 0xD2, 0x50, 0x47, 0x3A, 0x11, 0x8D, 0xAE, 0x6C, 0xE9, 0x03= , 0x64, > 0xA7, 0x44, 0xE6, >=20 > + 0x0F, 0xF8, 0x6F, 0x7E, 0xE7, 0x61, 0x25, 0x8C, 0x67, 0xE8, 0xC2, 0xD6= , 0x33, > 0x91, 0x62, 0x02, >=20 > + 0x20, 0x78, 0xF8, 0x94, 0x0F, 0x46, 0xD2, 0xE2, 0x2B, 0x33, 0xAF, 0xBD= , 0x38, > 0xA4, 0x43, 0xA6, >=20 > + 0x6F, 0x8A, 0xBE, 0x26, 0xDC, 0xD0, 0x82, 0x01, 0x3D, 0x00, 0xF3, 0xC2= , 0x07, > 0x8A, 0xE8, 0xFD, >=20 > + 0x18, >=20 > +}; >=20 > + >=20 > +// >=20 > +// This is TestSignEKUsWith2CertsInSignature.bin.p7b in byte array forma= t. >=20 > +// It has one EKU in it: >=20 > +// "1.3.6.1.4.1.311.76.9.21.1" >=20 > +// >=20 > +CONST UINT8 TestSignEKUsWith2CertsInSignature[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x04, 0x61, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06= , 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0x96, 0x30, 0x82, 0x01= , 0xAE, > 0x30, 0x82, 0x01, >=20 > + 0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB= , 0x00, > 0x35, 0xC8, 0x96, >=20 > + 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0A, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73= , 0x69, > 0x6E, 0x67, 0x49, >=20 > + 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D= , 0x31, > 0x38, 0x30, 0x38, >=20 > + 0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x33= , 0x38, > 0x30, 0x38, 0x31, >=20 > + 0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30, 0x23, 0x31, 0x21= , 0x30, > 0x1F, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55= , 0x50, > 0x61, 0x72, 0x73, >=20 > + 0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67, 0x6E, 0x65= , 0x72, > 0x30, 0x59, 0x30, >=20 > + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6, 0xEA, 0x5E, 0x14= , 0x20, > 0x6D, 0x11, 0xC0, >=20 > + 0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8, 0x21, 0x21, 0x3A= , 0xC2, > 0xBA, 0x37, 0x24, >=20 > + 0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F, 0xA8, 0xDC, 0x3A= , > 0x06, 0x30, 0x53, 0xFC, >=20 > + 0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40, 0xE8, 0x97, 0x6A= , 0x63, > 0x30, 0xF7, 0x37, >=20 > + 0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3, 0x6A, 0x30, 0x68= , > 0x30, 0x0E, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80= , 0x30, > 0x16, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04= , 0x18, > 0x30, 0x16, 0x80, >=20 > + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0= , 0x40, > 0x3C, 0x3E, 0x9C, >=20 > + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E= , > 0x04, 0x16, 0x04, 0x14, >=20 > + 0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4, 0xC8, 0x0D, 0x4C= , 0x0A, > 0xD3, 0xD4, 0xDE, >=20 > + 0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE= , 0x3D, > 0x04, 0x03, 0x02, >=20 > + 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C, 0x39, 0xC6, 0x6C= , 0xD6, > 0x8F, 0x20, 0xA5, >=20 > + 0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC, 0x2E, 0x1B, 0x6F= , 0x6F, > 0x79, 0x9F, 0x8D, >=20 > + 0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02, 0x21, 0x00, 0xC5= , 0xD8, > 0x49, 0xD1, 0x40, >=20 > + 0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10, 0x8A, 0x3C, 0x4E= , 0xA0, > 0xD6, 0x6B, 0x8C, >=20 > + 0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43, 0x4B, 0x35, 0x30= , 0x82, > 0x01, 0xE0, 0x30, >=20 > + 0x82, 0x01, 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79, 0x28= , 0x1A, > 0xE8, 0x7F, 0x21, >=20 > + 0x4F, 0xBB, 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60, 0xD6, 0x30, 0x0A= , 0x06, > 0x08, 0x2A, 0x86, >=20 > + 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31, 0x1F, 0x30, 0x1D= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61= , 0x72, > 0x73, 0x69, 0x6E, >=20 > + 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x1E, 0x17= , 0x0D, > 0x31, 0x38, 0x30, >=20 > + 0x38, 0x31, 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34, 0x5A, 0x17, 0x0D= , 0x33, > 0x38, 0x30, 0x38, >=20 > + 0x31, 0x35, 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A, 0x30, 0x22, 0x31= , 0x20, > 0x30, 0x1E, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B= , 0x55, > 0x50, 0x61, 0x72, >=20 > + 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43= , 0x41, > 0x30, 0x59, 0x30, >=20 > + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66, 0x41, 0xE6, 0x86= , 0x7D, > 0x5B, 0x96, 0x6C, >=20 > + 0x99, 0x2A, 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC, 0x1C, 0x9F, 0xEB= , 0xBE, > 0x9D, 0x53, 0xBA, >=20 > + 0x50, 0x0F, 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2, 0x6C, 0xC2, 0xC9= , > 0xAA, 0x99, 0x0B, 0x04, >=20 > + 0xA0, 0x6A, 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3, 0xDE, 0x22, 0x57= , 0xB1, > 0x8A, 0x5C, 0xBC, >=20 > + 0xDF, 0x22, 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3, 0x7E, 0x30, 0x7C= , > 0x30, 0x0E, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04= , 0x30, > 0x16, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01= , 0x01, > 0xFF, 0x04, 0x08, >=20 > + 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03= , 0x55, > 0x1D, 0x23, 0x04, >=20 > + 0x18, 0x30, 0x16, 0x80, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40= , 0x74, > 0x75, 0x0F, 0x85, >=20 > + 0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x1D, 0x06= , > 0x03, 0x55, 0x1D, 0x0E, >=20 > + 0x04, 0x16, 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B= , 0xFF, > 0x35, 0xD0, 0x40, >=20 > + 0x3C, 0x3E, 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x0A, 0x06, 0x08= , > 0x2A, 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66, 0x02, 0x31, 0x00= , 0xEE, > 0x78, 0xDB, 0x74, >=20 > + 0x56, 0xA3, 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0, 0x76, 0xD1, 0xE4= , 0xFE, > 0xAA, 0xA4, 0xC3, >=20 > + 0x7D, 0x40, 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B, 0x9A, 0x60, 0x37= , 0x2F, > 0xB6, 0xF4, 0xCB, >=20 > + 0xEA, 0xC8, 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB, 0xD2, 0x42, 0x05= , 0x02, > 0x31, 0x00, 0x9E, >=20 > + 0x91, 0xF9, 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC, 0x36, 0x05, 0x3B= , 0x50, > 0x11, 0x91, 0x9A, >=20 > + 0xFA, 0x6B, 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98, 0x7E, 0x7D, 0xFD= , 0xA8, > 0xE3, 0xB2, 0x4F, >=20 > + 0x71, 0x91, 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8, 0x19, 0x09, 0xF6= , 0x22, > 0xBE, 0xC4, 0x31, >=20 > + 0x81, 0xA3, 0x30, 0x81, 0xA0, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22= , 0x31, > 0x20, 0x30, 0x1E, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45= , 0x4B, > 0x55, 0x50, 0x61, >=20 > + 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67= , 0x43, > 0x41, 0x02, 0x10, >=20 > + 0x3E, 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8, 0x96, 0x41, 0xF4, 0xF6, 0x57= , 0x16, > 0xAD, 0x20, 0xCB, >=20 > + 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02= , 0x01, > 0x05, 0x00, 0x30, >=20 > + 0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00= , 0x04, > 0x47, 0x30, 0x45, >=20 > + 0x02, 0x20, 0x4A, 0xFD, 0xAE, 0xDD, 0x5D, 0xC5, 0x86, 0x48, 0xDC, 0xC1= , > 0xC3, 0xA7, 0xE6, 0x4E, >=20 > + 0x7F, 0x8B, 0x7B, 0xAB, 0x2C, 0x60, 0xDD, 0x79, 0x4C, 0xF2, 0x45, 0xED= , > 0x7A, 0xA5, 0x24, 0xE6, >=20 > + 0x0E, 0x60, 0x02, 0x21, 0x00, 0xAD, 0xCA, 0x3C, 0x29, 0x2F, 0xF9, 0xB1= , 0x8E, > 0x58, 0x29, 0x3F, >=20 > + 0x97, 0x20, 0x03, 0x6A, 0x14, 0xDA, 0x83, 0x4A, 0x8F, 0x3E, 0x95, 0x37= , 0xC3, > 0xF0, 0x12, 0x2A, >=20 > + 0x7B, 0x24, 0x59, 0x69, 0x27, >=20 > +}; >=20 > + >=20 > +// >=20 > +// This is TestSignEKUsWith3CertsInSignature.bin.p7b >=20 > +// It has one EKU in it: >=20 > +// "1.3.6.1.4.1.311.76.9.21.1" >=20 > +// >=20 > +const UINT8 TestSignEKUsWith3CertsInSignature[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x06, 0x65, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06= , 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x05, 0x9B, 0x30, 0x82, 0x01= , 0xAE, > 0x30, 0x82, 0x01, >=20 > + 0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB= , 0x00, > 0x35, 0xC8, 0x96, >=20 > + 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0A, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73= , 0x69, > 0x6E, 0x67, 0x49, >=20 > + 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D= , 0x31, > 0x38, 0x30, 0x38, >=20 > + 0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x33= , 0x38, > 0x30, 0x38, 0x31, >=20 > + 0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30, 0x23, 0x31, 0x21= , 0x30, > 0x1F, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55= , 0x50, > 0x61, 0x72, 0x73, >=20 > + 0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67, 0x6E, 0x65= , 0x72, > 0x30, 0x59, 0x30, >=20 > + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6, 0xEA, 0x5E, 0x14= , 0x20, > 0x6D, 0x11, 0xC0, >=20 > + 0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8, 0x21, 0x21, 0x3A= , 0xC2, > 0xBA, 0x37, 0x24, >=20 > + 0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F, 0xA8, 0xDC, 0x3A= , > 0x06, 0x30, 0x53, 0xFC, >=20 > + 0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40, 0xE8, 0x97, 0x6A= , 0x63, > 0x30, 0xF7, 0x37, >=20 > + 0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3, 0x6A, 0x30, 0x68= , > 0x30, 0x0E, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80= , 0x30, > 0x16, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04= , 0x18, > 0x30, 0x16, 0x80, >=20 > + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0= , 0x40, > 0x3C, 0x3E, 0x9C, >=20 > + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E= , > 0x04, 0x16, 0x04, 0x14, >=20 > + 0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4, 0xC8, 0x0D, 0x4C= , 0x0A, > 0xD3, 0xD4, 0xDE, >=20 > + 0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE= , 0x3D, > 0x04, 0x03, 0x02, >=20 > + 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C, 0x39, 0xC6, 0x6C= , 0xD6, > 0x8F, 0x20, 0xA5, >=20 > + 0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC, 0x2E, 0x1B, 0x6F= , 0x6F, > 0x79, 0x9F, 0x8D, >=20 > + 0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02, 0x21, 0x00, 0xC5= , 0xD8, > 0x49, 0xD1, 0x40, >=20 > + 0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10, 0x8A, 0x3C, 0x4E= , 0xA0, > 0xD6, 0x6B, 0x8C, >=20 > + 0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43, 0x4B, 0x35, 0x30= , 0x82, > 0x01, 0xE0, 0x30, >=20 > + 0x82, 0x01, 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79, 0x28= , 0x1A, > 0xE8, 0x7F, 0x21, >=20 > + 0x4F, 0xBB, 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60, 0xD6, 0x30, 0x0A= , 0x06, > 0x08, 0x2A, 0x86, >=20 > + 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31, 0x1F, 0x30, 0x1D= , 0x06, > 0x03, 0x55, 0x04, >=20 > + 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61= , 0x72, > 0x73, 0x69, 0x6E, >=20 > + 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x1E, 0x17= , 0x0D, > 0x31, 0x38, 0x30, >=20 > + 0x38, 0x31, 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34, 0x5A, 0x17, 0x0D= , 0x33, > 0x38, 0x30, 0x38, >=20 > + 0x31, 0x35, 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A, 0x30, 0x22, 0x31= , 0x20, > 0x30, 0x1E, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B= , 0x55, > 0x50, 0x61, 0x72, >=20 > + 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43= , 0x41, > 0x30, 0x59, 0x30, >=20 > + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66, 0x41, 0xE6, 0x86= , 0x7D, > 0x5B, 0x96, 0x6C, >=20 > + 0x99, 0x2A, 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC, 0x1C, 0x9F, 0xEB= , 0xBE, > 0x9D, 0x53, 0xBA, >=20 > + 0x50, 0x0F, 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2, 0x6C, 0xC2, 0xC9= , > 0xAA, 0x99, 0x0B, 0x04, >=20 > + 0xA0, 0x6A, 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3, 0xDE, 0x22, 0x57= , 0xB1, > 0x8A, 0x5C, 0xBC, >=20 > + 0xDF, 0x22, 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3, 0x7E, 0x30, 0x7C= , > 0x30, 0x0E, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04= , 0x30, > 0x16, 0x06, 0x03, >=20 > + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01= , 0x04, > 0x01, 0x82, 0x37, >=20 > + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01= , 0x01, > 0xFF, 0x04, 0x08, >=20 > + 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03= , 0x55, > 0x1D, 0x23, 0x04, >=20 > + 0x18, 0x30, 0x16, 0x80, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40= , 0x74, > 0x75, 0x0F, 0x85, >=20 > + 0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x1D, 0x06= , > 0x03, 0x55, 0x1D, 0x0E, >=20 > + 0x04, 0x16, 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B= , 0xFF, > 0x35, 0xD0, 0x40, >=20 > + 0x3C, 0x3E, 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x0A, 0x06, 0x08= , > 0x2A, 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66, 0x02, 0x31, 0x00= , 0xEE, > 0x78, 0xDB, 0x74, >=20 > + 0x56, 0xA3, 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0, 0x76, 0xD1, 0xE4= , 0xFE, > 0xAA, 0xA4, 0xC3, >=20 > + 0x7D, 0x40, 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B, 0x9A, 0x60, 0x37= , 0x2F, > 0xB6, 0xF4, 0xCB, >=20 > + 0xEA, 0xC8, 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB, 0xD2, 0x42, 0x05= , 0x02, > 0x31, 0x00, 0x9E, >=20 > + 0x91, 0xF9, 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC, 0x36, 0x05, 0x3B= , 0x50, > 0x11, 0x91, 0x9A, >=20 > + 0xFA, 0x6B, 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98, 0x7E, 0x7D, 0xFD= , 0xA8, > 0xE3, 0xB2, 0x4F, >=20 > + 0x71, 0x91, 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8, 0x19, 0x09, 0xF6= , 0x22, > 0xBE, 0xC4, 0x30, >=20 > + 0x82, 0x02, 0x01, 0x30, 0x82, 0x01, 0x62, 0xA0, 0x03, 0x02, 0x01, 0x02= , 0x02, > 0x10, 0x41, 0x02, >=20 > + 0xBA, 0xF9, 0x87, 0x65, 0x6C, 0xB8, 0x4C, 0xD9, 0xA1, 0x04, 0x1C, 0x46= , 0x4F, > 0xE4, 0x30, 0x0A, >=20 > + 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x1D= , 0x31, > 0x1B, 0x30, 0x19, >=20 > + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x12, 0x54, 0x65, 0x73, 0x74, 0x45= , 0x4B, > 0x55, 0x50, 0x61, >=20 > + 0x72, 0x73, 0x69, 0x6E, 0x67, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17= , 0x0D, > 0x31, 0x38, 0x30, >=20 > + 0x38, 0x31, 0x35, 0x31, 0x37, 0x32, 0x39, 0x32, 0x39, 0x5A, 0x17, 0x0D= , 0x33, > 0x38, 0x30, 0x38, >=20 > + 0x31, 0x35, 0x31, 0x37, 0x33, 0x39, 0x32, 0x39, 0x5A, 0x30, 0x21, 0x31= , 0x1F, > 0x30, 0x1D, 0x06, >=20 > + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B= , 0x55, > 0x50, 0x61, 0x72, >=20 > + 0x73, 0x69, 0x6E, 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41= , 0x30, > 0x76, 0x30, 0x10, >=20 > + 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x05, 0x2B= , 0x81, > 0x04, 0x00, 0x22, >=20 > + 0x03, 0x62, 0x00, 0x04, 0xF9, 0xDC, 0xB9, 0x3F, 0xA8, 0xB5, 0x2B, 0x2E= , 0xA7, > 0xFC, 0x88, 0xC6, >=20 > + 0xEF, 0x9C, 0x36, 0x61, 0x3E, 0xFF, 0x8A, 0x5A, 0x52, 0xFF, 0x5A, 0xD0= , 0x2C, > 0x08, 0xD6, 0x73, >=20 > + 0x12, 0xF9, 0x62, 0x1E, 0x73, 0x76, 0x83, 0x49, 0xC8, 0xDE, 0xEB, 0x29= , 0xA4, > 0x78, 0x2A, 0xC1, >=20 > + 0x30, 0x11, 0x0B, 0x2F, 0x38, 0x00, 0xB7, 0x6B, 0x6B, 0x8E, 0x8C, 0x4B= , 0x33, > 0x09, 0xF1, 0xEA, >=20 > + 0xA4, 0x9E, 0x10, 0x4F, 0xC3, 0xBC, 0x30, 0x16, 0x1A, 0x8B, 0xD7, 0x9C= , 0x14, > 0x11, 0x4E, 0x56, >=20 > + 0x64, 0x7E, 0x51, 0xE7, 0xDA, 0x26, 0x40, 0xB0, 0xD0, 0xF8, 0xF2, 0xB2= , 0x5D, > 0x8C, 0x8B, 0x49, >=20 > + 0x0C, 0x4E, 0x58, 0xB0, 0xA3, 0x63, 0x30, 0x61, 0x30, 0x0E, 0x06, 0x03= , 0x55, > 0x1D, 0x0F, 0x01, >=20 > + 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x0F, 0x06, 0x03= , 0x55, > 0x1D, 0x13, 0x01, >=20 > + 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1F, 0x06= , 0x03, > 0x55, 0x1D, 0x23, >=20 > + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x04, 0xA6, 0xCD, 0x4D, 0xAE, 0x9C= , 0x17, > 0xDB, 0xC8, 0x13, >=20 > + 0x57, 0x2D, 0x72, 0x48, 0xAC, 0xBB, 0x6B, 0x1F, 0xFF, 0x61, 0x30, 0x1D= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40= , 0x74, > 0x75, 0x0F, 0x85, >=20 > + 0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x0A, 0x06= , 0x08, > 0x2A, 0x86, 0x48, >=20 > + 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8C, 0x00, 0x30, 0x81, 0x88= , 0x02, > 0x42, 0x01, 0xB4, >=20 > + 0x75, 0x0B, 0x2F, 0x2A, 0xAA, 0x77, 0x03, 0x08, 0xD9, 0x95, 0x13, 0x2C= , 0xE8, > 0x47, 0x69, 0x97, >=20 > + 0xD1, 0x6B, 0xE0, 0x23, 0x94, 0xD5, 0x34, 0x8F, 0x80, 0x20, 0xE3, 0x72= , 0x07, > 0x7C, 0x6A, 0x52, >=20 > + 0xE6, 0xF2, 0xC7, 0x85, 0xBD, 0xB6, 0x65, 0x8F, 0x61, 0x73, 0xF9, 0xE7= , 0x3A, > 0x31, 0x46, 0xC6, >=20 > + 0xF2, 0xCE, 0xA7, 0x9E, 0xD0, 0xE2, 0xEF, 0x07, 0x59, 0xD0, 0xF1, 0xC4= , 0xF6, > 0x58, 0x9A, 0x16, >=20 > + 0x02, 0x42, 0x00, 0x86, 0xE0, 0x25, 0xC1, 0x48, 0xD0, 0x33, 0x30, 0x55= , 0xA8, > 0x60, 0x44, 0xCA, >=20 > + 0x47, 0x04, 0x93, 0x46, 0x81, 0xE9, 0x13, 0xE9, 0x67, 0x26, 0x23, 0x2A= , 0xBD, > 0xEF, 0xC4, 0xCC, >=20 > + 0x12, 0x99, 0xB3, 0x9E, 0x3D, 0x78, 0xC8, 0x42, 0x06, 0x40, 0x48, 0xCA= , 0x3D, > 0xCC, 0xD7, 0xA2, >=20 > + 0x35, 0x37, 0x76, 0x12, 0xDB, 0x9C, 0x90, 0xA4, 0xE4, 0x16, 0xAC, 0x5E= , > 0xD8, 0x04, 0xF1, 0x59, >=20 > + 0x66, 0x85, 0xE2, 0x68, 0x31, 0x81, 0xA2, 0x30, 0x81, 0x9F, 0x02, 0x01= , 0x01, > 0x30, 0x36, 0x30, >=20 > + 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17= , 0x54, > 0x65, 0x73, 0x74, >=20 > + 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73= , 0x73, > 0x75, 0x69, 0x6E, >=20 > + 0x67, 0x43, 0x41, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8= , 0x96, > 0x41, 0xF4, 0xF6, >=20 > + 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48= , 0x01, > 0x65, 0x03, 0x04, >=20 > + 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE= , 0x3D, > 0x02, 0x01, 0x05, >=20 > + 0x00, 0x04, 0x46, 0x30, 0x44, 0x02, 0x20, 0x52, 0x90, 0x02, 0x9E, 0xE8= , 0xBF, > 0xE8, 0x7E, 0x05, >=20 > + 0x3B, 0xA3, 0x93, 0xDD, 0x6C, 0x35, 0x31, 0xA3, 0x29, 0x4F, 0x9A, 0x78= , 0xEF, > 0xD1, 0xAD, 0x07, >=20 > + 0x37, 0x2D, 0x9A, 0x81, 0xFD, 0x7D, 0xFC, 0x02, 0x20, 0x4C, 0x8A, 0xA4= , > 0xBD, 0x63, 0x7B, 0x8A, >=20 > + 0x2C, 0x9E, 0xFC, 0x2A, 0x0F, 0x91, 0xF4, 0x97, 0xB5, 0x3B, 0xC9, 0xD1= , 0xCA, > 0xEB, 0x02, 0x6A, >=20 > + 0xB6, 0xFF, 0xE1, 0x15, 0xF5, 0xA2, 0x11, 0xF4, 0xD9, >=20 > +}; >=20 > + >=20 > +// >=20 > +// This signature was signed with a leaf that has no EKU's present in th= e > certificate. >=20 > +// >=20 > +CONST UINT8 TestSignatureWithNoEKUsPresent[] =3D >=20 > +{ >=20 > + 0x30, 0x82, 0x07, 0xDB, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06= , 0x09, > 0x60, 0x86, 0x48, >=20 > + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09= , 0x2A, > 0x86, 0x48, 0x86, >=20 > + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x06, 0x51, 0x30, 0x82, 0x01= , 0xE0, > 0x30, 0x82, 0x01, >=20 > + 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79, 0x28, 0x1A, 0xE8= , 0x7F, > 0x21, 0x4F, 0xBB, >=20 > + 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60, 0xD6, 0x30, 0x0A, 0x06, 0x08= , 0x2A, > 0x86, 0x48, 0xCE, >=20 > + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03= , 0x55, > 0x04, 0x03, 0x0C, >=20 > + 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73= , 0x69, > 0x6E, 0x67, 0x50, >=20 > + 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31= , 0x38, > 0x30, 0x38, 0x31, >=20 > + 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34, 0x5A, 0x17, 0x0D, 0x33, 0x38= , 0x30, > 0x38, 0x31, 0x35, >=20 > + 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A, 0x30, 0x22, 0x31, 0x20, 0x30= , 0x1E, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50= , 0x61, > 0x72, 0x73, 0x69, >=20 > + 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30= , 0x59, > 0x30, 0x13, 0x06, >=20 > + 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86= , 0x48, > 0xCE, 0x3D, 0x03, >=20 > + 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66, 0x41, 0xE6, 0x86, 0x7D, 0x5B= , 0x96, > 0x6C, 0x99, 0x2A, >=20 > + 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC, 0x1C, 0x9F, 0xEB, 0xBE, 0x9D= , 0x53, > 0xBA, 0x50, 0x0F, >=20 > + 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2, 0x6C, 0xC2, 0xC9, 0xAA, 0x99= , > 0x0B, 0x04, 0xA0, 0x6A, >=20 > + 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3, 0xDE, 0x22, 0x57, 0xB1, 0x8A= , 0x5C, > 0xBC, 0xDF, 0x22, >=20 > + 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3, 0x7E, 0x30, 0x7C, 0x30, 0x0E= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x16= , 0x06, > 0x03, 0x55, 0x1D, >=20 > + 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01= , 0x82, > 0x37, 0x4C, 0x09, >=20 > + 0x15, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF= , 0x04, > 0x08, 0x30, 0x06, >=20 > + 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D= , 0x23, > 0x04, 0x18, 0x30, >=20 > + 0x16, 0x80, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40, 0x74, 0x75= , 0x0F, > 0x85, 0xCE, 0x5D, >=20 > + 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x1D, 0x06, 0x03, 0x55= , 0x1D, > 0x0E, 0x04, 0x16, >=20 > + 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35= , 0xD0, > 0x40, 0x3C, 0x3E, >=20 > + 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86= , > 0x48, 0xCE, 0x3D, 0x04, >=20 > + 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66, 0x02, 0x31, 0x00, 0xEE, 0x78= , 0xDB, > 0x74, 0x56, 0xA3, >=20 > + 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0, 0x76, 0xD1, 0xE4, 0xFE, 0xAA= , 0xA4, > 0xC3, 0x7D, 0x40, >=20 > + 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B, 0x9A, 0x60, 0x37, 0x2F, 0xB6= , 0xF4, > 0xCB, 0xEA, 0xC8, >=20 > + 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB, 0xD2, 0x42, 0x05, 0x02, 0x31= , 0x00, > 0x9E, 0x91, 0xF9, >=20 > + 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC, 0x36, 0x05, 0x3B, 0x50, 0x11= , 0x91, > 0x9A, 0xFA, 0x6B, >=20 > + 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98, 0x7E, 0x7D, 0xFD, 0xA8, 0xE3= , 0xB2, > 0x4F, 0x71, 0x91, >=20 > + 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8, 0x19, 0x09, 0xF6, 0x22, 0xBE= , 0xC4, > 0x30, 0x82, 0x02, >=20 > + 0x01, 0x30, 0x82, 0x01, 0x62, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10= , 0x41, > 0x02, 0xBA, 0xF9, >=20 > + 0x87, 0x65, 0x6C, 0xB8, 0x4C, 0xD9, 0xA1, 0x04, 0x1C, 0x46, 0x4F, 0xE4= , 0x30, > 0x0A, 0x06, 0x08, >=20 > + 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x1D, 0x31, 0x1B= , 0x30, > 0x19, 0x06, 0x03, >=20 > + 0x55, 0x04, 0x03, 0x0C, 0x12, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55= , 0x50, > 0x61, 0x72, 0x73, >=20 > + 0x69, 0x6E, 0x67, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x31= , 0x38, > 0x30, 0x38, 0x31, >=20 > + 0x35, 0x31, 0x37, 0x32, 0x39, 0x32, 0x39, 0x5A, 0x17, 0x0D, 0x33, 0x38= , 0x30, > 0x38, 0x31, 0x35, >=20 > + 0x31, 0x37, 0x33, 0x39, 0x32, 0x39, 0x5A, 0x30, 0x21, 0x31, 0x1F, 0x30= , 0x1D, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50= , 0x61, > 0x72, 0x73, 0x69, >=20 > + 0x6E, 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x76= , 0x30, > 0x10, 0x06, 0x07, >=20 > + 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x05, 0x2B, 0x81, 0x04= , 0x00, > 0x22, 0x03, 0x62, >=20 > + 0x00, 0x04, 0xF9, 0xDC, 0xB9, 0x3F, 0xA8, 0xB5, 0x2B, 0x2E, 0xA7, 0xFC= , 0x88, > 0xC6, 0xEF, 0x9C, >=20 > + 0x36, 0x61, 0x3E, 0xFF, 0x8A, 0x5A, 0x52, 0xFF, 0x5A, 0xD0, 0x2C, 0x08= , 0xD6, > 0x73, 0x12, 0xF9, >=20 > + 0x62, 0x1E, 0x73, 0x76, 0x83, 0x49, 0xC8, 0xDE, 0xEB, 0x29, 0xA4, 0x78= , 0x2A, > 0xC1, 0x30, 0x11, >=20 > + 0x0B, 0x2F, 0x38, 0x00, 0xB7, 0x6B, 0x6B, 0x8E, 0x8C, 0x4B, 0x33, 0x09= , 0xF1, > 0xEA, 0xA4, 0x9E, >=20 > + 0x10, 0x4F, 0xC3, 0xBC, 0x30, 0x16, 0x1A, 0x8B, 0xD7, 0x9C, 0x14, 0x11= , 0x4E, > 0x56, 0x64, 0x7E, >=20 > + 0x51, 0xE7, 0xDA, 0x26, 0x40, 0xB0, 0xD0, 0xF8, 0xF2, 0xB2, 0x5D, 0x8C= , > 0x8B, 0x49, 0x0C, 0x4E, >=20 > + 0x58, 0xB0, 0xA3, 0x63, 0x30, 0x61, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D= , 0x0F, > 0x01, 0x01, 0xFF, >=20 > + 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D= , 0x13, > 0x01, 0x01, 0xFF, >=20 > + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1F, 0x06, 0x03, 0x55= , 0x1D, > 0x23, 0x04, 0x18, >=20 > + 0x30, 0x16, 0x80, 0x14, 0x04, 0xA6, 0xCD, 0x4D, 0xAE, 0x9C, 0x17, 0xDB= , > 0xC8, 0x13, 0x57, 0x2D, >=20 > + 0x72, 0x48, 0xAC, 0xBB, 0x6B, 0x1F, 0xFF, 0x61, 0x30, 0x1D, 0x06, 0x03= , 0x55, > 0x1D, 0x0E, 0x04, >=20 > + 0x16, 0x04, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40, 0x74, 0x75= , 0x0F, > 0x85, 0xCE, 0x5D, >=20 > + 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x0A, 0x06, 0x08, 0x2A= , 0x86, > 0x48, 0xCE, 0x3D, >=20 > + 0x04, 0x03, 0x02, 0x03, 0x81, 0x8C, 0x00, 0x30, 0x81, 0x88, 0x02, 0x42= , 0x01, > 0xB4, 0x75, 0x0B, >=20 > + 0x2F, 0x2A, 0xAA, 0x77, 0x03, 0x08, 0xD9, 0x95, 0x13, 0x2C, 0xE8, 0x47= , 0x69, > 0x97, 0xD1, 0x6B, >=20 > + 0xE0, 0x23, 0x94, 0xD5, 0x34, 0x8F, 0x80, 0x20, 0xE3, 0x72, 0x07, 0x7C= , 0x6A, > 0x52, 0xE6, 0xF2, >=20 > + 0xC7, 0x85, 0xBD, 0xB6, 0x65, 0x8F, 0x61, 0x73, 0xF9, 0xE7, 0x3A, 0x31= , 0x46, > 0xC6, 0xF2, 0xCE, >=20 > + 0xA7, 0x9E, 0xD0, 0xE2, 0xEF, 0x07, 0x59, 0xD0, 0xF1, 0xC4, 0xF6, 0x58= , 0x9A, > 0x16, 0x02, 0x42, >=20 > + 0x00, 0x86, 0xE0, 0x25, 0xC1, 0x48, 0xD0, 0x33, 0x30, 0x55, 0xA8, 0x60= , 0x44, > 0xCA, 0x47, 0x04, >=20 > + 0x93, 0x46, 0x81, 0xE9, 0x13, 0xE9, 0x67, 0x26, 0x23, 0x2A, 0xBD, 0xEF= , 0xC4, > 0xCC, 0x12, 0x99, >=20 > + 0xB3, 0x9E, 0x3D, 0x78, 0xC8, 0x42, 0x06, 0x40, 0x48, 0xCA, 0x3D, 0xCC= , > 0xD7, 0xA2, 0x35, 0x37, >=20 > + 0x76, 0x12, 0xDB, 0x9C, 0x90, 0xA4, 0xE4, 0x16, 0xAC, 0x5E, 0xD8, 0x04= , 0xF1, > 0x59, 0x66, 0x85, >=20 > + 0xE2, 0x68, 0x30, 0x82, 0x02, 0x64, 0x30, 0x82, 0x02, 0x0A, 0xA0, 0x03= , 0x02, > 0x01, 0x02, 0x02, >=20 > + 0x10, 0x2B, 0x7B, 0xDA, 0xCD, 0x87, 0xA0, 0xFD, 0x81, 0x49, 0x5E, 0x0E= , > 0xDD, 0x4F, 0x81, 0x48, >=20 > + 0x2D, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03= , 0x02, > 0x30, 0x22, 0x31, >=20 > + 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65= , 0x73, > 0x74, 0x45, 0x4B, >=20 > + 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75= , 0x69, > 0x6E, 0x67, 0x43, >=20 > + 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38, 0x32, 0x33, 0x31= , 0x39, > 0x33, 0x30, 0x30, >=20 > + 0x32, 0x5A, 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38, 0x32, 0x33, 0x31, 0x39= , 0x34, > 0x30, 0x30, 0x32, >=20 > + 0x5A, 0x30, 0x27, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03= , 0x0C, > 0x1C, 0x54, 0x65, >=20 > + 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67= , 0x4E, > 0x6F, 0x45, 0x4B, >=20 > + 0x55, 0x73, 0x49, 0x6E, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x30, 0x82= , 0x01, > 0x22, 0x30, 0x0D, >=20 > + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05= , 0x00, > 0x03, 0x82, 0x01, >=20 > + 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA5= , 0x9B, > 0x95, 0xF0, 0x63, >=20 > + 0x88, 0xC3, 0x74, 0x26, 0x08, 0x68, 0x25, 0xAA, 0x16, 0xBB, 0x2A, 0x15= , 0xC1, > 0xA2, 0xAF, 0x72, >=20 > + 0x06, 0x51, 0x37, 0xE1, 0x4F, 0x6D, 0x6A, 0xFC, 0x17, 0xCE, 0x82, 0x7B= , 0x79, > 0xFF, 0x2A, 0x84, >=20 > + 0x0F, 0xCB, 0xA9, 0x65, 0x70, 0xC9, 0xF9, 0xE7, 0x61, 0x90, 0x28, 0x03= , 0x6E, > 0x41, 0x25, 0xFF, >=20 > + 0xC2, 0x3A, 0x60, 0x1A, 0x42, 0x37, 0x80, 0x9F, 0x6B, 0x99, 0x11, 0x5A= , 0x1F, > 0xAE, 0x7B, 0x3F, >=20 > + 0xF3, 0x2B, 0x45, 0xDD, 0xDA, 0xC4, 0x32, 0xD7, 0xD8, 0xB5, 0x3D, 0x46= , > 0x0C, 0x8A, 0x11, 0xEE, >=20 > + 0x94, 0x8C, 0xB5, 0x69, 0xD3, 0x91, 0x4F, 0x4E, 0xE5, 0xBB, 0x93, 0xDD= , > 0x1E, 0xA7, 0x20, 0x03, >=20 > + 0xFD, 0xD6, 0x8F, 0x76, 0x91, 0x9A, 0x2B, 0x41, 0x91, 0xD8, 0x35, 0x7A= , > 0x0D, 0x80, 0xB9, 0xD4, >=20 > + 0xD2, 0x56, 0xF1, 0xF9, 0xC5, 0xE6, 0xF2, 0xAE, 0x10, 0x7E, 0xD7, 0x6C= , 0x40, > 0x86, 0x37, 0x99, >=20 > + 0x85, 0xF4, 0xCA, 0x1D, 0x6D, 0x90, 0x63, 0xF7, 0x63, 0xC6, 0x00, 0xA1= , 0xA9, > 0x79, 0x7D, 0x88, >=20 > + 0x05, 0xA2, 0x92, 0x64, 0xA7, 0x8E, 0xA8, 0x9E, 0xC3, 0x1F, 0x63, 0xEE= , 0x6C, > 0xE3, 0x9B, 0xA6, >=20 > + 0xD7, 0x9D, 0x9C, 0x9F, 0x0D, 0x7A, 0xF7, 0x00, 0x92, 0x16, 0xE8, 0x64= , 0x36, > 0x07, 0x66, 0x8E, >=20 > + 0x6E, 0x51, 0x09, 0x3F, 0x2A, 0xD6, 0x6D, 0x4E, 0xCC, 0x49, 0xE1, 0xC3= , 0x59, > 0x63, 0xDC, 0x51, >=20 > + 0xAA, 0xD1, 0xE7, 0x42, 0x2F, 0x72, 0x25, 0x46, 0x83, 0x7D, 0x23, 0xCE= , 0xF7, > 0x96, 0x2F, 0x04, >=20 > + 0xE8, 0xAE, 0xF6, 0x19, 0x6D, 0x2D, 0xB2, 0x64, 0xDB, 0x69, 0x33, 0x96= , 0x58, > 0xA0, 0x6C, 0x77, >=20 > + 0xF0, 0xD0, 0x5E, 0x36, 0xB1, 0x28, 0x89, 0x83, 0xB6, 0xA5, 0x13, 0x0E= , 0x6B, > 0x6E, 0x73, 0x2C, >=20 > + 0x6F, 0xDA, 0xF9, 0x6C, 0x11, 0x4F, 0xCC, 0xF7, 0x89, 0x77, 0x83, 0x02= , 0x03, > 0x01, 0x00, 0x01, >=20 > + 0xA3, 0x52, 0x30, 0x50, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01= , 0x01, > 0xFF, 0x04, 0x04, >=20 > + 0x03, 0x02, 0x01, 0x86, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04= , 0x18, > 0x30, 0x16, 0x80, >=20 > + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0= , 0x40, > 0x3C, 0x3E, 0x9C, >=20 > + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E= , > 0x04, 0x16, 0x04, 0x14, >=20 > + 0xB6, 0xAF, 0x0D, 0xC1, 0xBE, 0xD1, 0xE4, 0x21, 0x37, 0xFF, 0xAC, 0x7D= , > 0x2D, 0xD4, 0x51, 0x8A, >=20 > + 0x61, 0x95, 0x50, 0x7F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE= , 0x3D, > 0x04, 0x03, 0x02, >=20 > + 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x74, 0x7D, 0xF5, 0xAF, 0xC3= , 0xA7, > 0x06, 0x99, 0x1F, >=20 > + 0x2C, 0xAF, 0x69, 0xAA, 0x40, 0x97, 0xE9, 0xF8, 0x4C, 0xD2, 0x71, 0x17= , 0x25, > 0x85, 0xB7, 0xA6, >=20 > + 0x97, 0x61, 0x89, 0x82, 0xED, 0xF0, 0xF6, 0x02, 0x21, 0x00, 0xA6, 0xF4= , 0x59, > 0x85, 0x53, 0x31, >=20 > + 0xEF, 0x6F, 0x37, 0xB6, 0x8E, 0xA2, 0xDE, 0xC3, 0xFD, 0xD6, 0xFB, 0x50= , 0x63, > 0x4E, 0xB4, 0xBB, >=20 > + 0xC1, 0xB1, 0x07, 0x82, 0x80, 0x14, 0x28, 0x6A, 0x94, 0x94, 0x31, 0x82= , 0x01, > 0x61, 0x30, 0x82, >=20 > + 0x01, 0x5D, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22, 0x31, 0x20, 0x30= , 0x1E, > 0x06, 0x03, 0x55, >=20 > + 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50= , 0x61, > 0x72, 0x73, 0x69, >=20 > + 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x02= , 0x10, > 0x2B, 0x7B, 0xDA, >=20 > + 0xCD, 0x87, 0xA0, 0xFD, 0x81, 0x49, 0x5E, 0x0E, 0xDD, 0x4F, 0x81, 0x48= , > 0x2D, 0x30, 0x0D, 0x06, >=20 > + 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00= , 0x30, > 0x0D, 0x06, 0x09, >=20 > + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04= , 0x82, > 0x01, 0x00, 0x39, >=20 > + 0xEC, 0xA8, 0x00, 0x4F, 0x7E, 0x2C, 0x3C, 0x48, 0xDF, 0x6F, 0x6A, 0x37= , 0x69, > 0xA4, 0xB1, 0xEB, >=20 > + 0x7D, 0xD2, 0x3B, 0xC5, 0xEE, 0x57, 0x1F, 0x8F, 0xCA, 0x60, 0x80, 0x88= , 0x24, > 0x29, 0xB5, 0x00, >=20 > + 0x28, 0xFF, 0x8F, 0x0A, 0x1E, 0xB0, 0x9E, 0x90, 0x09, 0xF1, 0x46, 0xC1= , 0x53, > 0xE8, 0x27, 0x29, >=20 > + 0xFA, 0xFE, 0xA3, 0x84, 0x79, 0xB2, 0x27, 0x46, 0x9B, 0xD8, 0x33, 0xBD= , 0x8F, > 0x41, 0x06, 0xEE, >=20 > + 0xD6, 0xE7, 0x49, 0xAF, 0x48, 0xD0, 0xD4, 0xF1, 0x06, 0xCC, 0xD3, 0x26= , > 0x47, 0xAE, 0x03, 0x7A, >=20 > + 0xA5, 0xAF, 0xDE, 0x7F, 0x57, 0x32, 0x51, 0x49, 0x8C, 0x18, 0xD2, 0x4D= , 0x50, > 0x27, 0xAC, 0x7C, >=20 > + 0x33, 0xB8, 0xB8, 0x1C, 0xF8, 0x0C, 0x49, 0xEB, 0xF5, 0xD7, 0xA0, 0x35= , 0x77, > 0x61, 0xC0, 0x60, >=20 > + 0xAF, 0x23, 0x8C, 0xCC, 0xB0, 0x58, 0xB3, 0x08, 0x89, 0x2B, 0xC0, 0x61= , 0x0C, > 0xA6, 0x40, 0x7A, >=20 > + 0x37, 0x6D, 0x6D, 0x44, 0xFF, 0xF1, 0xCE, 0xDE, 0x7A, 0x0C, 0xC4, 0x51= , 0x61, > 0xE6, 0x72, 0x6B, >=20 > + 0xA9, 0x6A, 0x7B, 0xCF, 0xAA, 0x9A, 0x28, 0x74, 0x87, 0x30, 0xBA, 0xED= , > 0x40, 0xF0, 0x75, 0x2B, >=20 > + 0xD7, 0xE6, 0x9F, 0xDD, 0x6B, 0xB7, 0xEA, 0x08, 0x0D, 0x9F, 0xA3, 0x25= , > 0x27, 0xB7, 0xBF, 0x41, >=20 > + 0xC2, 0x64, 0xB5, 0x6F, 0x8F, 0xB1, 0x5F, 0xE5, 0xDF, 0xCA, 0x16, 0x04= , 0x61, > 0xFF, 0x74, 0x25, >=20 > + 0xEE, 0xF6, 0x69, 0xF1, 0x7F, 0xE5, 0x97, 0x72, 0x58, 0xD8, 0x9F, 0xA5= , 0x19, > 0x32, 0x46, 0x95, >=20 > + 0x67, 0x63, 0x23, 0x54, 0x46, 0x05, 0x15, 0xC3, 0x3E, 0x04, 0x7E, 0x88= , 0xD0, > 0xB5, 0x52, 0xF0, >=20 > + 0x38, 0x3C, 0x8B, 0xD4, 0x3D, 0x9A, 0x55, 0x1B, 0x14, 0xE5, 0x37, 0x8D= , > 0xB7, 0x6C, 0x39, 0x91, >=20 > + 0x23, 0x31, 0x63, 0x89, 0x7C, 0x75, 0x02, 0x79, 0xCC, 0x95, 0x58, 0x99= , 0x3A, > 0xDB, 0xF5, >=20 > +}; >=20 > diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLi= b.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 >=20 > + Application for Cryptographic Primitives Validation. >=20 > + >=20 > +Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
>=20 > +SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > + >=20 > +**/ >=20 > + >=20 > +#ifndef __CRYPTEST_H__ >=20 > +#define __CRYPTEST_H__ >=20 > + >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +#include >=20 > +//#include >=20 > +#include >=20 > +//#include >=20 > + >=20 > +#define UNIT_TEST_NAME "BaseCryptLib Unit Test" >=20 > +#define UNIT_TEST_VERSION "1.0" >=20 > + >=20 > +typedef struct { >=20 > + CHAR8 *Description; >=20 > + CHAR8 *ClassName; >=20 > + UNIT_TEST_FUNCTION Func; >=20 > + UNIT_TEST_PREREQUISITE PreReq; >=20 > + UNIT_TEST_CLEANUP CleanUp; >=20 > + UNIT_TEST_CONTEXT Context; >=20 > +} TEST_DESC; >=20 > + >=20 > +typedef struct { >=20 > + CHAR8 *Title; >=20 > + CHAR8 *Package; >=20 > + UNIT_TEST_SUITE_SETUP Sup; >=20 > + UNIT_TEST_SUITE_TEARDOWN Tdn; >=20 > + UINTN *TestNum; >=20 > + TEST_DESC *TestDesc; >=20 > +} SUITE_DESC; >=20 > + >=20 > +extern UINTN mPkcs7EkuTestNum; >=20 > +extern TEST_DESC mPkcs7EkuTest[]; >=20 > + >=20 > +extern UINTN mHashTestNum; >=20 > +extern TEST_DESC mHashTest[]; >=20 > + >=20 > +extern UINTN mHmacTestNum; >=20 > +extern TEST_DESC mHmacTest[]; >=20 > + >=20 > +extern UINTN mBlockCipherTestNum; >=20 > +extern TEST_DESC mBlockCipherTest[]; >=20 > + >=20 > +extern UINTN mRsaTestNum; >=20 > +extern TEST_DESC mRsaTest[]; >=20 > + >=20 > +extern UINTN mRsaCertTestNum; >=20 > +extern TEST_DESC mRsaCertTest[]; >=20 > + >=20 > +extern UINTN mPkcs7TestNum; >=20 > +extern TEST_DESC mPkcs7Test[]; >=20 > + >=20 > +extern UINTN mPkcs5TestNum; >=20 > +extern TEST_DESC mPkcs5Test[]; >=20 > + >=20 > +extern UINTN mAuthenticodeTestNum; >=20 > +extern TEST_DESC mAuthenticodeTest[]; >=20 > + >=20 > +extern UINTN mImageTimestampTestNum; >=20 > +extern TEST_DESC mImageTimestampTest[]; >=20 > + >=20 > +extern UINTN mDhTestNum; >=20 > +extern TEST_DESC mDhTest[]; >=20 > + >=20 > +extern UINTN mPrngTestNum; >=20 > +extern TEST_DESC mPrngTest[]; >=20 > + >=20 > +extern UINTN mOaepTestNum; >=20 > +extern TEST_DESC mOaepTest[]; >=20 > + >=20 > +/** Creates a framework you can use */ >=20 > +EFI_STATUS >=20 > +EFIAPI >=20 > +CreateUnitTest ( >=20 > + IN CHAR8* UnitTestName, >=20 > + IN CHAR8* UnitTestVersion, >=20 > + IN OUT UNIT_TEST_FRAMEWORK_HANDLE* Framework >=20 > +); >=20 > + >=20 > +/** >=20 > + Validate UEFI-OpenSSL DH Interfaces. >=20 > + >=20 > + @retval EFI_SUCCESS Validation succeeded. >=20 > + @retval EFI_ABORTED Validation failed. >=20 > + >=20 > +**/ >=20 > +EFI_STATUS >=20 > +ValidateCryptDh ( >=20 > + VOID >=20 > + ); >=20 > + >=20 > +/** >=20 > + Validate UEFI-OpenSSL pseudorandom number generator interfaces. >=20 > + >=20 > + @retval EFI_SUCCESS Validation succeeded. >=20 > + @retval EFI_ABORTED Validation failed. >=20 > + >=20 > +**/ >=20 > +EFI_STATUS >=20 > +ValidateCryptPrng ( >=20 > + VOID >=20 > + ); >=20 > + >=20 > + >=20 > + >=20 > +#endif >=20 > 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.i= nf > @@ -0,0 +1,46 @@ > +## @file >=20 > +# Host-based UnitTest for BaseCryptLib >=20 > +# >=20 > +# Copyright (c) Microsoft Corporation.
>=20 > +# SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > +## >=20 > + >=20 > +[Defines] >=20 > + INF_VERSION =3D 0x00010005 >=20 > + BASE_NAME =3D BaseCryptLibUnitTestHost >=20 > + FILE_GUID =3D 0cb84598-824b-4833-b705-bdefdcbba1d5 >=20 > + MODULE_TYPE =3D HOST_APPLICATION >=20 > + VERSION_STRING =3D 1.0 >=20 > + >=20 > +# >=20 > +# The following information is for reference only and not required by th= e build > tools. >=20 > +# >=20 > +# VALID_ARCHITECTURES =3D IA32 X64 >=20 > +# >=20 > + >=20 > +[Sources] >=20 > + UnitTestMain.c >=20 > + BaseCryptLibUnitTests.c >=20 > + TestBaseCryptLib.h >=20 > + HashTests.c >=20 > + HmacTests.c >=20 > + BlockCipherTests.c >=20 > + RsaTests.c >=20 > + RsaPkcs7Tests.c >=20 > + Pkcs5Pbkdf2Tests.c >=20 > + AuthenticodeTests.c >=20 > + TSTests.c >=20 > + DhTests.c >=20 > + RandTests.c >=20 > + Pkcs7EkuTests.c >=20 > + OaepEncryptTests.c >=20 > + >=20 > +[Packages] >=20 > + MdePkg/MdePkg.dec >=20 > + CryptoPkg/CryptoPkg.dec >=20 > + >=20 > +[LibraryClasses] >=20 > + BaseLib >=20 > + DebugLib >=20 > + BaseCryptLib >=20 > + UnitTestLib >=20 > 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 >=20 > +# BaseCryptLib UnitTest built for execution in UEFI Shell. >=20 > +# >=20 > +# Copyright (c) Microsoft Corporation.
>=20 > +# SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > +## >=20 > + >=20 > +[Defines] >=20 > + INF_VERSION =3D 0x00010006 >=20 > + BASE_NAME =3D BaseCryptLibUnitTestShell >=20 > + FILE_GUID =3D ed54ee8c-ef7a-41f2-83d5-0e0d4cd88c21 >=20 > + MODULE_TYPE =3D UEFI_APPLICATION >=20 > + VERSION_STRING =3D 1.0 >=20 > + ENTRY_POINT =3D DxeEntryPoint >=20 > + >=20 > +# >=20 > +# The following information is for reference only and not required by th= e build > tools. >=20 > +# >=20 > +# VALID_ARCHITECTURES =3D IA32 X64 >=20 > +# >=20 > + >=20 > +[Sources] >=20 > + UnitTestMain.c >=20 > + BaseCryptLibUnitTests.c >=20 > + TestBaseCryptLib.h >=20 > + HashTests.c >=20 > + HmacTests.c >=20 > + BlockCipherTests.c >=20 > + RsaTests.c >=20 > + RsaPkcs7Tests.c >=20 > + Pkcs5Pbkdf2Tests.c >=20 > + AuthenticodeTests.c >=20 > + TSTests.c >=20 > + DhTests.c >=20 > + RandTests.c >=20 > + Pkcs7EkuTests.c >=20 > + OaepEncryptTests.c >=20 > + >=20 > +[Packages] >=20 > + MdePkg/MdePkg.dec >=20 > + CryptoPkg/CryptoPkg.dec >=20 > + >=20 > +[LibraryClasses] >=20 > + UefiApplicationEntryPoint >=20 > + BaseLib >=20 > + DebugLib >=20 > + UnitTestLib >=20 > + PrintLib >=20 > + BaseCryptLib >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreation= In > structions.txt > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreation= In > structions.txt > new file mode 100644 > index 000000000000..98dbc464f2da > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreation= In > structions.txt > @@ -0,0 +1,92 @@ > +------------------------------------------------------------------------= -------- >=20 > +File: ChainCreationInstructions.txt >=20 > + >=20 > +Description: This folder contains INI files that are required to gene= rate >=20 > + the following test cert chains. Certs will be copied ont= o the >=20 > + file system AND MY store when they are generated by cert= req.exe. >=20 > + >=20 > +Note that typically certreq.exe operates on INF files, but in this folde= r >=20 > +we use INI files so that our build system does not complain about INF's = being >=20 > +in the tree, but not in the CryptoPkg.dsc file. >=20 > + >=20 > +To create your own certificates and signatures for testing, this file > demonstrates >=20 > +how the test certificate chains and signatures were created. >=20 > + >=20 > +To create test signatures, run SignFirmwareWithEKUs.cmd (with SignTool.e= xe > in >=20 > +your path). You can then use your favorite BinaryToHex converter to con= vert >=20 > +the binary into a byte array that you can include in unit tests. >=20 > + >=20 > +Copyright (C) Microsoft Corporation. All Rights Reserved. >=20 > +------------------------------------------------------------------------= -------- >=20 > +Cert Chain: >=20 > + >=20 > + ------------------------------------------ >=20 > + | | // Root of trust. ECD= SA P521 curve >=20 > + | TestEKUParsingRoot | // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > + | | // CERT_KEY_CERT_SIGN= _KEY_USAGE | > CERT_CRL_SIGN_KEY_USAGE >=20 > + ------------------------------------------ >=20 > + ^ >=20 > + | >=20 > + ------------------------------------------ >=20 > + | | // Issues subordinate= CAs. ECC P384 curve. >=20 > + | TestEKUParsingPolicyCA | // SHA 256 Key Usage: >=20 > + | | // CERT_KEY_CERT_SIGN= _KEY_USAGE | > CERT_CRL_SIGN_KEY_USAGE >=20 > + ------------------------------------------ >=20 > + ^ >=20 > + | >=20 > + ------------------------------------------ >=20 > + | | // Issues end-entity = (leaf) signers. ECC P256 curve. >=20 > + | TestEKUParsingIssuingCA | // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > + | | // Enhanced Key Usage= : >=20 > + ------------------------------------------ // 1.3.6.1.4.1.311.76= .9.21.1 (Surface > firmware signing) >=20 > + ^ >=20 > + | >=20 > + -------------------------------------- >=20 > + / / // Leaf signer, ECC = P256 curve. >=20 > + / TestEKUParsingLeafSigner / // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > + / / // Enhanced Key usage= s: >=20 > + -------------------------------------- // 1.3.6.1.4.1.311.76= .9.21.1 (Surface > firmware signing) >=20 > + // 1.3.6.1.4.1.311.76= .9.21.1.N, N =3D=3D Product ID. >=20 > + >=20 > + >=20 > + >=20 > + >=20 > +------------------------------------------------------------------------= --------- >=20 > + >=20 > + >=20 > +--- files required --- >=20 > + >=20 > +TestEKUParsingRoot.ini - This certificate is the root CA u= nder which all > CAs live. >=20 > +TestEKUParsingPolicyCA.ini - This policy CA will issue subordi= nate CA's > with EKU constraints. >=20 > +TestEKUParsingIssuingCA.ini - CA to issue end-entity leafs. >=20 > +TestEKUParsingLeafSigner.ini - End-Entity leaf signer. >=20 > +TestEKUParsingLeafSignerPid12345.ini - End-Entity, with EKU: > 1.3.6.1.4.1.311.76.9.21.1.12345. >=20 > +TestEKUParsingNoEKUsInSigner.ini - Leaf with no EKU's specified. >=20 > +TestEKUParsingLeafSignerPid1.ini - Test with naming files ini, to ge= t around > build complaints. >=20 > +--- Commands to execute --- >=20 > + >=20 > +certreq.exe -new TestEKUParsingRoot.i= ni > TestEKUParsingRoot.cer >=20 > +certreq.exe -new -q -cert "TestEKUParsingRoot" TestEKUParsingPolicy= CA.ini > TestEKUParsingPolicyCA.cer >=20 > +certreq.exe -new -q -cert "TestEKUParsingPolicyCA" > TestEKUParsingIssuingCA.ini TestEKUParsingIssuingCA.cer >=20 > +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingLeafSigner.ini TestEKUParsingLeafSigner.cer >=20 > +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingLeafSignerPid12345.ini TestEKUParsingLeafSignerPid12345.cer >=20 > +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingNoEKUsInSigner.ini TestEKUParsingNoEKUsInSigner.cer >=20 > +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingLeafSignerPid1.ini TestEKUParsingLeafSignerPid1.cer >=20 > + >=20 > +------------------------------------------------------------------------= --------- >=20 > + >=20 > +Then start mmc->Add certificates, Local Computer/open Personal/Certs and > export the keys into the pfx files below. >=20 > +Note: You should see a little key on the top left of each cert icon, wh= ich means > you have the private key >=20 > + for this cert. If you don't see it something is wrong. For each= cert, right- > click and do all tasks, >=20 > + export. Yes, Export the private key. PCKS#12 format, include al= l certs in > path if possible. >=20 > + >=20 > + If we automated the call to certreq above, there is a PowerShell = "PKI" > cmdlet which has >=20 > + an Export-PfxCertificate command. >=20 > + >=20 > +Passwords: TestEKUParsingRoot.pfx =3D=3D TestEKUParsingRo= ot >=20 > + TestEKUParsingPolicyCA.pfx =3D=3D TestEKUParsingPo= licyCA >=20 > + TestEKUParsingIssuingCA.pfx =3D=3D TestEKUParsingIs= suingCA >=20 > + TestEKUParsingLeafSigner.pfx =3D=3D TestEKUParsingLe= afSigner >=20 > + TestEKUParsingLeafSignerPid12345.pfx =3D=3D > TestEKUParsingLeafSignerPid12345 >=20 > + TestEKUParsingNoEKUsInSigner.pfx =3D=3D > TestEKUParsingNoEKUsInSigner >=20 > + >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCer= ts > .cmd > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCer= ts > .cmd > new file mode 100644 > index 000000000000..6d68afdab77d > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCer= ts > .cmd > @@ -0,0 +1,11 @@ > +@ECHO OFF >=20 > +REM >=20 > +REM Use this file to create test certificates. >=20 > +REM >=20 > +call certreq.exe -new TestEKUParsingR= oot.ini > TestEKUParsingRoot.cer >=20 > +call certreq.exe -new -q -cert "TestEKUParsingRoot" > TestEKUParsingPolicyCA.ini TestEKUParsingPolicyCA.cer >=20 > +call certreq.exe -new -q -cert "TestEKUParsingPolicyCA" > TestEKUParsingIssuingCA.ini TestEKUParsingIssuingCA.cer >=20 > +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingLeafSigner.ini TestEKUParsingLeafSigner.cer >=20 > +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingLeafSignerPid12345.ini TestEKUParsingLeafSignerPid12345.cer >=20 > +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingNoEKUsInSigner.ini TestEKUParsingNoEKUsInSigner.cer >=20 > +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" > TestEKUParsingLeafSignerPid1.ini TestEKUParsingLeafSignerPid1.cer >=20 > 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 >=20 > +REM This script will use various certificates to sign blobs for testin= g purposes. >=20 > +REM >=20 > +REM >=20 > +REM Our EKU test certificate chain: >=20 > +REM ------------------------------------------ >=20 > +REM | | // Root of trust. ECD= SA P521 curve >=20 > +REM | TestEKUParsingRoot | // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > +REM | | // CERT_KEY_CERT_SIGN= _KEY_USAGE | > CERT_CRL_SIGN_KEY_USAGE >=20 > +REM ------------------------------------------ >=20 > +REM ^ >=20 > +REM | >=20 > +REM ------------------------------------------ >=20 > +REM | | // Issues subordinate= CAs. ECC P384 curve. >=20 > +REM | TestEKUParsingPolicyCA | // SHA 256 Key Usage: >=20 > +REM | | // CERT_KEY_CERT_SIGN= _KEY_USAGE | > CERT_CRL_SIGN_KEY_USAGE >=20 > +REM ------------------------------------------ >=20 > +REM ^ >=20 > +REM | >=20 > +REM ------------------------------------------ >=20 > +REM | | // Issues end-entity = (leaf) signers. ECC P256 > curve. >=20 > +REM | TestEKUParsingIssuingCA | // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > +REM | | // Enhanced Key Usage= : >=20 > +REM ------------------------------------------ // 1.3.6.1.4.1.311.76= .9.21.1 (Surface > firmware signing) >=20 > +REM ^ >=20 > +REM | >=20 > +REM -------------------------------------- >=20 > +REM / TestEKUParsingLeafSigner && / // Leaf signer, ECC = P256 curve. >=20 > +REM / TestEKUParsingLeafSignerPid12345 / // SHA 256 Key Usage: > CERT_DIGITAL_SIGNATURE_KEY_USAGE >=20 > +REM / / // Enhanced Key usage= s: >=20 > +REM -------------------------------------- // 1.3.6.1.4.1.311.76= .9.21.1 (Surface > firmware signing) >=20 > +REM // 1.3.6.1.4.1.311.76= .9.21.1.N, N =3D=3D Product ID. >=20 > +REM >=20 > +REM >=20 > +REM >=20 > +REM Dev Note: SignTool.exe must be in your path when running this scri= pt. >=20 > + >=20 > +del *.p7b >=20 > +ECHO ------------------------------------------------------------------- >=20 > +ECHO Press any key 4 times to append time to the test blobs to sign. >=20 > +time >> TestSignWithOneEKUInLeafSigner.bin >=20 > +time >> TestSignWithTwoEKUsInLeafSignerPid1.bin >=20 > +time >> TestSignWithTwoEKUsInLeafSignerPid12345.bin >=20 > +time >> TestSignWithNoEKUsInLeafSigner.bin >=20 > + >=20 > + >=20 > +REM >=20 > +REM Create a signature with TestEKUParsingLeafSigner.cer which has one E= KU > in it, >=20 > +REM and add the Policy CA in the signature. >=20 > +REM >=20 > +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 /p7= co > 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug > TestSignWithOneEKUInLeafSigner.bin >=20 > + >=20 > +REM >=20 > +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) >=20 > +REM >=20 > +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 >=20 > + >=20 > +REM >=20 > +REM Create a signature with two EKUs in the leaf (1.3.6.1.4.1.311.76.9.2= 1.1, > and 1.3.6.1.4.1.311.76.9.21.1.12345) >=20 > +REM >=20 > +call signtool.exe sign /fd sha256 /f TestEKUParsingLeafSignerPid12345.ce= r > /p7 . /u 1.3.6.1.4.1.311.76.9.21.1.12345 /p7co 1.2.840.113549.1.7.1 /p= 7ce > DetachedSignedData /v /debug TestSignWithTwoEKUsInLeafSignerPid12345.bin >=20 > + >=20 > + >=20 > +REM >=20 > +REM Create a signature with a leaf that does not have any EKUs in the si= gnture. >=20 > +REM >=20 > +call signtool.exe sign /fd sha256 /f TestEKUParsingNoEKUsInSigner.cer /p= 7 . > /p7co 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug > TestSignWithNoEKUsInLeafSigner.bin >=20 > + >=20 > +REM >=20 > +REM Rename *.p7 to *.p7b >=20 > +REM >=20 > +rename *.p7 *.p7b >=20 > +ECHO -------------------------------------------------------------------= -------- >=20 > +ECHO Now you can use your favorite "Binary To Hex" converter to convert = the >=20 > +ECHO signatures (P7B files) to byte arrays and add them to AllTestSignat= ures.h >=20 > +ECHO -------------------------------------------------------------------= -------- >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > IssuingCA.ini > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > IssuingCA.ini > new file mode 100644 > index 000000000000..8576783473e9 > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > IssuingCA.ini > @@ -0,0 +1,45 @@ > +[Version] >=20 > +Signature=3D"$Windows NT$ >=20 > +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >=20 > +; 2.5.29.19 =3D=3D Basic Constraints for CA >=20 > +[Strings] >=20 > +szOID_BASIC_CONSTRAINTS2 =3D "2.5.29.19" >=20 > + >=20 > +[EnhancedKeyUsageExtension] >=20 > +OID =3D 1.3.6.1.4.1.311.76.9.21.1 >=20 > + >=20 > +[NewRequest] >=20 > +Subject =3D "CN=3DTestEKUParsingIssuingCA" >=20 > +Exportable =3D true >=20 > +KeyLength =3D 256 >=20 > +HashAlgorithm =3D sha256 >=20 > +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE" >=20 > +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG" >=20 > +MachineKeySet =3D True >=20 > +RequestType =3D cert >=20 > +ValidityPeriodUnits =3D 20 >=20 > +ValidityPeriod =3D Years >=20 > +ProviderName =3D "Microsoft Software Key Storage Provider" >=20 > +KeyAlgorithm =3D "ECDSA_P256" >=20 > + >=20 > + >=20 > +[Extensions] >=20 > +%szOID_BASIC_CONSTRAINTS2% =3D "{text}" >=20 > + _continue_ =3D "ca=3DTrue" >=20 > + >=20 > +Critical=3D%szOID_BASIC_CONSTRAINTS2% >=20 > + >=20 > +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >=20 > +; This extension is so the this CA is only allowed to >=20 > +; issue end-entity certs. >=20 > +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >=20 > +[BasicConstraintsExtension] >=20 > +PathLength=3D0 >=20 > + >=20 > +; >=20 > +; Surface Firmware Signing EKU >=20 > +; >=20 > +[Extensions] >=20 > + 2.5.29.37 =3D "{text}" >=20 > + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1" >=20 > + >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSigner.ini > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSigner.ini > new file mode 100644 > index 000000000000..f501537343ca > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSigner.ini > @@ -0,0 +1,25 @@ > +[Version] >=20 > +Signature=3D"$Windows NT$ >=20 > + >=20 > +[EnhancedKeyUsageExtension] >=20 > +OID =3D 1.3.6.1.4.1.311.76.9.21.1 >=20 > + >=20 > +[NewRequest] >=20 > +Subject =3D "CN=3DTestEKUParsingLeafSigner" >=20 > +Exportable =3D true >=20 > +KeyLength =3D 256 >=20 > +HashAlgorithm =3D sha256 >=20 > +KeyUsage =3D "CERT_DIGITAL_SIGNATURE_KEY_USAGE" >=20 > +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG" >=20 > +MachineKeySet =3D True >=20 > +RequestType =3D cert >=20 > +ValidityPeriodUnits =3D 20 >=20 > +ValidityPeriod =3D Years >=20 > +ProviderName =3D "Microsoft Software Key Storage Provider" >=20 > +KeyAlgorithm =3D "ECDSA_P256" >=20 > + >=20 > +; >=20 > +; Surface test firwmare signing EKU >=20 > +; >=20 > +[Extensions] >=20 > + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1" >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSignerPid1.ini > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSignerPid1.ini > new file mode 100644 > index 000000000000..35aa78c493b0 > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSignerPid1.ini > @@ -0,0 +1,24 @@ > +[Version] >=20 > +Signature=3D"$Windows NT$ >=20 > + >=20 > +[EnhancedKeyUsageExtension] >=20 > +OID =3D 1.3.6.1.4.1.311.76.9.21.1 >=20 > +OID =3D 1.3.6.1.4.1.311.76.9.21.1.1 >=20 > + >=20 > +[NewRequest] >=20 > +Subject =3D "CN=3DTestEKUParsingLeafSignerPid1" >=20 > +Exportable =3D true >=20 > +KeyLength =3D 2048 >=20 > +HashAlgorithm =3D sha256 >=20 > +KeySpec =3D AT_SIGNATURE >=20 > +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE | > CERT_DIGITAL_SIGNATURE_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE" >=20 > +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG" >=20 > +MachineKeySet =3D True >=20 > +RequestType =3D cert >=20 > +ValidityPeriodUnits =3D 5 >=20 > +ValidityPeriod =3D Years >=20 > + >=20 > +[Extensions] >=20 > + 2.5.29.37 =3D "{text}" >=20 > + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1," >=20 > + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1.1" >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSignerPid12345.ini > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSignerPid12345.ini > new file mode 100644 > index 000000000000..67c5741f4d26 > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > LeafSignerPid12345.ini > @@ -0,0 +1,27 @@ > +[Version] >=20 > +Signature=3D"$Windows NT$ >=20 > + >=20 > +[EnhancedKeyUsageExtension] >=20 > +OID =3D 1.3.6.1.4.1.311.76.9.21.1 >=20 > +OID =3D 1.3.6.1.4.1.311.76.9.21.1.12345 >=20 > + >=20 > +[NewRequest] >=20 > +Subject =3D "CN=3DTestEKUParsingLeafSignerPid12345" >=20 > +Exportable =3D true >=20 > +KeyLength =3D 2048 >=20 > +HashAlgorithm =3D sha256 >=20 > +KeySpec =3D AT_SIGNATURE >=20 > +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE | > CERT_DIGITAL_SIGNATURE_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE" >=20 > +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG" >=20 > +MachineKeySet =3D True >=20 > +RequestType =3D cert >=20 > +ValidityPeriodUnits =3D 5 >=20 > +ValidityPeriod =3D Years >=20 > + >=20 > +[Extensions] >=20 > + 2.5.29.37 =3D "{text}" >=20 > + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1," >=20 > + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1.12345" >=20 > + >=20 > + >=20 > + >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > NoEKUsInSigner.ini > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > NoEKUsInSigner.ini > new file mode 100644 > index 000000000000..60743b02a94b > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > NoEKUsInSigner.ini > @@ -0,0 +1,16 @@ > +[Version] >=20 > +Signature=3D"$Windows NT$ >=20 > + >=20 > + >=20 > +[NewRequest] >=20 > +Subject =3D "CN=3DTestEKUParsingNoEKUsInSigner" >=20 > +Exportable =3D true >=20 > +KeyLength =3D 2048 >=20 > +HashAlgorithm =3D sha256 >=20 > +KeySpec =3D AT_SIGNATURE >=20 > +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE | > CERT_DIGITAL_SIGNATURE_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE" >=20 > +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG" >=20 > +MachineKeySet =3D True >=20 > +RequestType =3D cert >=20 > +ValidityPeriodUnits =3D 20 >=20 > +ValidityPeriod =3D Years >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > PolicyCA.ini > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > PolicyCA.ini > new file mode 100644 > index 000000000000..2ccda66596bc > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > PolicyCA.ini > @@ -0,0 +1,28 @@ > +[Version] >=20 > +Signature=3D"$Windows NT$ >=20 > +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >=20 > +; 2.5.29.19 =3D=3D Basic Constraints for CA >=20 > +[Strings] >=20 > +szOID_BASIC_CONSTRAINTS2 =3D "2.5.29.19" >=20 > + >=20 > +[NewRequest] >=20 > +Subject =3D "CN=3DTestEKUParsingPolicyCA" >=20 > +Exportable =3D true >=20 > +KeyLength =3D 384 >=20 > +HashAlgorithm =3D sha256 >=20 > +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE" >=20 > +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG" >=20 > +MachineKeySet =3D True >=20 > +RequestType =3D cert >=20 > +ValidityPeriodUnits =3D 20 >=20 > +ValidityPeriod =3D Years >=20 > +ProviderName =3D "Microsoft Software Key Storage Provider" >=20 > +KeyAlgorithm =3D "ECDSA_P384" >=20 > + >=20 > + >=20 > +[Extensions] >=20 > +%szOID_BASIC_CONSTRAINTS2% =3D "{text}" >=20 > + _continue_ =3D "ca=3DTrue" >=20 > + >=20 > +Critical=3D%szOID_BASIC_CONSTRAINTS2% >=20 > + >=20 > diff --git > a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > Root.ini > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > Root.ini > new file mode 100644 > index 000000000000..d8cd7d1f82a3 > --- /dev/null > +++ > b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsin= g > Root.ini > @@ -0,0 +1,28 @@ > +[Version] >=20 > +Signature=3D"$Windows NT$ >=20 > + >=20 > +[Strings] >=20 > +szOID_BASIC_CONSTRAINTS2 =3D "2.5.29.19" >=20 > + >=20 > +[NewRequest] >=20 > +Subject =3D "CN=3DTestEKUParsingRoot" >=20 > +Exportable =3D true >=20 > +KeyLength =3D 521 >=20 > +HashAlgorithm =3D sha256 >=20 > +KeyUsage =3D "CERT_DIGITAL_SIGNATURE_KEY_USAGE | > CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_CRL_SIGN_KEY_USAGE" >=20 > +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG" >=20 > +MachineKeySet =3D True >=20 > +RequestType =3D cert >=20 > +ValidityPeriodUnits =3D 30 >=20 > +ValidityPeriod =3D Years >=20 > +ProviderName =3D "Microsoft Software Key Storage Provider" >=20 > +KeyAlgorithm =3D ECDSA_P521 >=20 > + >=20 > + >=20 > + >=20 > + >=20 > +[Extensions] >=20 > +%szOID_BASIC_CONSTRAINTS2% =3D "{text}" >=20 > + _continue_ =3D "ca=3DTrue" >=20 > + >=20 > +Critical=3D%szOID_BASIC_CONSTRAINTS2% >=20 > -- > 2.28.0.vfs.0.0