From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by mx.groups.io with SMTP id smtpd.web10.2721.1594751006193978860 for ; Tue, 14 Jul 2020 11:23:26 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20161025 header.b=EkB1s+bk; spf=pass (domain: gmail.com, ip: 209.85.210.195, mailfrom: matthewfcarlson@gmail.com) Received: by mail-pf1-f195.google.com with SMTP id m9so7937807pfh.0 for ; Tue, 14 Jul 2020 11:23:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yWeF17fbhcLAG+4pOodfuRT9Ssd/5mbv9vTZ7zr51fI=; b=EkB1s+bkJwFHZtU6PicIp67DvPThLsqqdizCe1/e8C9rSEa0uYSs3Jw7pVMPvosviW 9wET1yVWPFYpRYJrdSV9HkSkn8b1ShFI91sg5CCSXfgZwtz5P/escK4/MR1Sm6TpOJnj JV6QldMnk+08npH0an3oFjDBL+VzQCYoJoRd3j/h9yJ1N+wh1Cj7lVjbQoCH9K877nf2 WzAHr7arkIn0iE5mrCoBdzrvmNX288O2RJG/c956jZTUXaIxEs5jkaRgCJNz6+tnAfIu sFCUOXrgPQifQ3ekLDjCaYUaYn/DaB2Y1uTOoemLn2wxrLLfV5gUc4i8ptDCOOw5ahtU R7bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yWeF17fbhcLAG+4pOodfuRT9Ssd/5mbv9vTZ7zr51fI=; b=VGsQWW98V7Q+PJuvJzFzrGtLjuqzFa9mvn2vI0Y8MCYC1XCXaaUvMOWbxqE9lTRe7v qUcCjDWbSJicdjn4sKMpwVJcAsTgr4e1dEM9G7v3vt/+z079uDi8XgM6SybMiZQ9GpC3 wh5UPnAr/7iGMjzLrJSD6r2tHhrmeUuhoBSbv1Hbs/9ziTInqtOHbffkvZ5bdFZDu5ms +fxcZQqhqhY2PFO6Z2SMNt4GtwFlRjHHKRvyQIaowp/2HTuLdgHpVgQeSRlwFj62fEpm m3Uz3EuuuFnQXmHURMOeQgE3m4aPZUmU/5RWqIWSk264+pqa8Okm1v5lOzLJGlLXa+93 TMHw== X-Gm-Message-State: AOAM530C3vnolOC8zvFGH+7cbRJ58tHtjfmiqJD2kr/WfAVketfsXlW0 Yq60hvAwJWIOA2gRFQggK/7JpWB6Ftc= X-Google-Smtp-Source: ABdhPJztU0teWOnyj3em4l5mQHvLXrA9c3XaEXgfe9Ak2SszQo3wsx0JbYWm623fUF6EAWFoBS+5Iw== X-Received: by 2002:a65:4488:: with SMTP id l8mr4279159pgq.443.1594751002488; Tue, 14 Jul 2020 11:23:22 -0700 (PDT) Return-Path: Received: from tvis-name-05.localdomain ([50.34.40.129]) by smtp.gmail.com with ESMTPSA id s194sm16615540pgs.24.2020.07.14.11.23.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2020 11:23:21 -0700 (PDT) From: matthewfcarlson@gmail.com To: devel@edk2.groups.io Cc: Jian J Wang , Xiaoyu Lu Subject: [PATCH v3 2/3] CryptoPkg: BaseCryptLib: Add unit tests (Host and Shell based) Date: Tue, 14 Jul 2020 11:23:16 -0700 Message-Id: <20200714182317.1605-3-matthewfcarlson@gmail.com> X-Mailer: git-send-email 2.27.0.windows.1 In-Reply-To: <20200714182317.1605-1-matthewfcarlson@gmail.com> References: <20200714182317.1605-1-matthewfcarlson@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Matthew Carlson This adds a new INF for BaseCryptLib suitable for host based environments. It adds a host based unit test for BaseCryptLib that can also be built as a shell based Unit Test. Cc: Jian J Wang Cc: Xiaoyu Lu 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/Test/UnitTest/Library/BaseCryptLib/UnitTestMainBCOP.c = | 58 ++ CryptoPkg/CryptoPkg.ci.yaml = | 4 + CryptoPkg/CryptoPkg.dsc = | 26 + CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf = | 90 ++ CryptoPkg/Test/UnitTest/CryptoPkgHostUnitTest.dsc = | 35 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSignatures.h = | 789 +++++++++++++++ CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h = | 121 +++ CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf = | 46 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibUefiShell.inf= | 49 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreationIns= tructions.txt | 92 ++ CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestCerts.= cmd | 11 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/SignFirmwareWith= EKUs.cmd | 76 ++ CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingIs= suingCA.ini | 45 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingLe= afSigner.ini | 25 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingLe= afSignerPid1.ini | 24 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingLe= afSignerPid12345.ini | 27 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingNo= EKUsInSigner.ini | 16 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingPo= licyCA.ini | 28 + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUParsingRo= ot.ini | 28 + 34 files changed, 5626 insertions(+) diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.= c b/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.c new file mode 100644 index 000000000000..a9c288e8f2be --- /dev/null +++ b/CryptoPkg/Library/BaseCryptLib/SysCall/UnitTestHostCrtWrapper.c @@ -0,0 +1,93 @@ +/** @file=0D + C Run-Time Libraries (CRT) Wrapper Implementation for OpenSSL-based=0D + Cryptographic Library.=0D +=0D +Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
=0D +Copyright (c) Microsoft Corporation=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include =0D +=0D +#include =0D +#include =0D +=0D +/* Convert character to lowercase */=0D +int tolower (int c)=0D +{=0D + if (('A' <=3D (c)) && ((c) <=3D 'Z')) {=0D + return (c - ('A' - 'a'));=0D + }=0D + return (c);=0D +}=0D +=0D +/* Compare first n bytes of string s1 with string s2, ignoring case */=0D +int strncasecmp (const char *s1, const char *s2, size_t n)=0D +{=0D + int Val;=0D +=0D + ASSERT(s1 !=3D NULL);=0D + ASSERT(s2 !=3D NULL);=0D +=0D + if (n !=3D 0) {=0D + do {=0D + Val =3D tolower(*s1) - tolower(*s2);=0D + if (Val !=3D 0) {=0D + return Val;=0D + }=0D + ++s1;=0D + ++s2;=0D + if (*s1 =3D=3D '\0') {=0D + break;=0D + }=0D + } while (--n !=3D 0);=0D + }=0D + return 0;=0D +}=0D +=0D +/* Read formatted data from a string */=0D +int sscanf (const char *buffer, const char *format, ...)=0D +{=0D + //=0D + // Null sscanf() function implementation to satisfy the linker, since=0D + // no direct functionality logic dependency in present UEFI cases.=0D + //=0D + return 0;=0D +}=0D +=0D +//=0D +// -- Dummy OpenSSL Support Routines --=0D +//=0D +=0D +int BIO_printf (void *bio, const char *format, ...)=0D +{=0D + return 0;=0D +}=0D +=0D +int BIO_snprintf(char *buf, size_t n, const char *format, ...)=0D +{=0D + return 0;=0D +}=0D +=0D +uid_t getuid (void)=0D +{=0D + return 0;=0D +}=0D +=0D +uid_t geteuid (void)=0D +{=0D + return 0;=0D +}=0D +=0D +gid_t getgid (void)=0D +{=0D + return 0;=0D +}=0D +=0D +gid_t getegid (void)=0D +{=0D + return 0;=0D +}=0D +=0D +int errno =3D 0;=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AuthenticodeTests= .c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AuthenticodeTests.c new file mode 100644 index 000000000000..8935f289d87a --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/AuthenticodeTests.c @@ -0,0 +1,1002 @@ +/** @file=0D + Sample Implementation for Microsoft Authenticode Verification.=0D +=0D +Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +//=0D +// Sample PE/COFF Image Hash Value (Digested by SHA-1).=0D +// This value should be calculated following MSFT's Authenticode Specifica= tion=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 PeSha1Hash[] =3D {=0D + 0x44, 0xFD, 0x4F, 0xA9, 0x17, 0xEE, 0xAC, 0xCF, 0x1F, 0x0B, 0xE3, 0xA1, = 0x4D, 0x5B, 0xA6, 0x61,=0D + 0x82, 0x97, 0xC4, 0xB6=0D + };=0D +=0D +//=0D +// Sample PE/COFF Image Hash Value (Digested by SHA-256).=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 PeSha256Hash[] =3D {=0D + 0x61, 0x82, 0xB7, 0xF8, 0x8C, 0xFF, 0xC2, 0xEB, 0x79, 0x6E, 0x9D, 0xA9, = 0xDD, 0x39, 0x52, 0xDD,=0D + 0x36, 0xDD, 0xF1, 0x43, 0x27, 0x58, 0x8C, 0xA7, 0xCC, 0xAE, 0xDE, 0xDD, = 0x3C, 0x02, 0x12, 0x49=0D + };=0D +=0D +//=0D +// Sample Authenticode Data with SHA-1 hash algorithm.=0D +// This data should be retrieved from signed PE/COFF image according to SE= CURITY=0D +// directory in PE/COFF Header.=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithSha1[] =3D {=0D + 0x30, 0x82, 0x1C, 0x43, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, = 0x01, 0x07, 0x02, 0xA0,=0D + 0x82, 0x1C, 0x34, 0x30, 0x82, 0x1C, 0x30, 0x02, 0x01, 0x01, 0x31, 0x0B, = 0x30, 0x09, 0x06, 0x05,=0D + 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, 0x68, 0x06, 0x0A, 0x2B, = 0x06, 0x01, 0x04, 0x01,=0D + 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x5A, 0x30, 0x58, 0x30, 0x33, 0x06, = 0x0A, 0x2B, 0x06, 0x01,=0D + 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0F, 0x30, 0x25, 0x03, 0x01, 0x00, = 0xA0, 0x20, 0xA2, 0x1E,=0D + 0x80, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x4F, 0x00, 0x62, = 0x00, 0x73, 0x00, 0x6F,=0D + 0x00, 0x6C, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x3E, 0x00, 0x3E, = 0x00, 0x3E, 0x30, 0x21,=0D + 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, = 0x14, 0x44, 0xFD, 0x4F,=0D + 0xA9, 0x17, 0xEE, 0xAC, 0xCF, 0x1F, 0x0B, 0xE3, 0xA1, 0x4D, 0x5B, 0xA6, = 0x61, 0x82, 0x97, 0xC4,=0D + 0xB6, 0xA0, 0x82, 0x17, 0x18, 0x30, 0x82, 0x04, 0xCA, 0x30, 0x82, 0x03, = 0xB2, 0xA0, 0x03, 0x02,=0D + 0x01, 0x02, 0x02, 0x0A, 0x61, 0x03, 0xDC, 0xF6, 0x00, 0x00, 0x00, 0x00, = 0x00, 0x0C, 0x30, 0x0D,=0D + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, = 0x00, 0x30, 0x77, 0x31,=0D + 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, = 0x31, 0x13, 0x30, 0x11,=0D + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, = 0x6E, 0x67, 0x74, 0x6F,=0D + 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, = 0x52, 0x65, 0x64, 0x6D,=0D + 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, = 0x13, 0x15, 0x4D, 0x69,=0D + 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, = 0x6F, 0x72, 0x61, 0x74,=0D + 0x69, 0x6F, 0x6E, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, = 0x13, 0x18, 0x4D, 0x69,=0D + 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, = 0x2D, 0x53, 0x74, 0x61,=0D + 0x6D, 0x70, 0x20, 0x50, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x38, = 0x30, 0x37, 0x32, 0x35,=0D + 0x31, 0x39, 0x31, 0x32, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x31, 0x31, 0x30, = 0x37, 0x32, 0x35, 0x31,=0D + 0x39, 0x32, 0x32, 0x35, 0x30, 0x5A, 0x30, 0x81, 0xB3, 0x31, 0x0B, 0x30, = 0x09, 0x06, 0x03, 0x55,=0D + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, = 0x55, 0x04, 0x08, 0x13,=0D + 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, = 0x10, 0x30, 0x0E, 0x06,=0D + 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, = 0x64, 0x31, 0x1E, 0x30,=0D + 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, = 0x6F, 0x73, 0x6F, 0x66,=0D + 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, = 0x6E, 0x31, 0x0D, 0x30,=0D + 0x0B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x04, 0x4D, 0x4F, 0x50, 0x52, = 0x31, 0x27, 0x30, 0x25,=0D + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1E, 0x6E, 0x43, 0x69, 0x70, 0x68, = 0x65, 0x72, 0x20, 0x44,=0D + 0x53, 0x45, 0x20, 0x45, 0x53, 0x4E, 0x3A, 0x31, 0x35, 0x39, 0x43, 0x2D, = 0x41, 0x33, 0x46, 0x37,=0D + 0x2D, 0x32, 0x35, 0x37, 0x30, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, = 0x04, 0x03, 0x13, 0x1C,=0D + 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, = 0x6D, 0x65, 0x2D, 0x53,=0D + 0x74, 0x61, 0x6D, 0x70, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, = 0x30, 0x82, 0x01, 0x22,=0D + 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, = 0x01, 0x05, 0x00, 0x03,=0D + 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, = 0x00, 0xC0, 0xED, 0x81,=0D + 0x14, 0xA1, 0x5E, 0x77, 0xC0, 0x5B, 0xF4, 0x76, 0x89, 0x62, 0xFA, 0xAD, = 0x7C, 0x68, 0x14, 0xB4,=0D + 0xF7, 0xBD, 0x35, 0xD8, 0x13, 0x79, 0x5A, 0x17, 0xCA, 0xD9, 0x6C, 0x51, = 0x45, 0x62, 0x26, 0x7A,=0D + 0x2F, 0x1F, 0xD8, 0xEA, 0xC1, 0x6E, 0x01, 0x17, 0xF9, 0xC3, 0xA6, 0x1F, = 0x67, 0xDB, 0x51, 0xB0,=0D + 0x2C, 0xDE, 0x8A, 0x17, 0xED, 0xFF, 0x20, 0xAD, 0x34, 0xEA, 0x98, 0xFB, = 0xA5, 0xD6, 0x2A, 0xD2,=0D + 0xF1, 0x44, 0x27, 0x07, 0x5A, 0x2D, 0x3A, 0x93, 0xFF, 0x56, 0x53, 0xB0, = 0xC8, 0xF5, 0xF3, 0x03,=0D + 0xF2, 0x49, 0xCC, 0x16, 0xD0, 0xF5, 0x00, 0x4C, 0x58, 0xF8, 0x9B, 0xF5, = 0x07, 0x25, 0xB1, 0x66,=0D + 0x17, 0xC0, 0xBD, 0xC8, 0xD2, 0x52, 0x85, 0x8D, 0xC2, 0x2B, 0x38, 0xB2, = 0xC3, 0x36, 0xBE, 0xF9,=0D + 0x87, 0xDA, 0xF4, 0x8E, 0x5D, 0x43, 0xD7, 0x06, 0xBF, 0x99, 0x05, 0x9F, = 0xA4, 0xCE, 0xFE, 0xAB,=0D + 0x8D, 0x61, 0x63, 0xE7, 0x39, 0xC5, 0xF3, 0x18, 0xF6, 0xD8, 0xFC, 0x31, = 0x36, 0x69, 0x72, 0x5A,=0D + 0xA2, 0x1A, 0x4C, 0x3E, 0xEA, 0x87, 0x25, 0x42, 0x9D, 0xD1, 0x3E, 0xF1, = 0x97, 0xD2, 0x18, 0x32,=0D + 0x93, 0x70, 0x55, 0x53, 0x81, 0x1E, 0xE3, 0x3B, 0x0D, 0xE8, 0xBE, 0x82, = 0x78, 0x6D, 0xE6, 0xFA,=0D + 0xCD, 0x98, 0xA4, 0x6F, 0xDB, 0xEE, 0x66, 0xF4, 0x95, 0xC8, 0xCD, 0x35, = 0xC9, 0x9E, 0xBB, 0x36,=0D + 0x0D, 0x83, 0x96, 0x94, 0x26, 0xA7, 0x90, 0xE0, 0xA9, 0x34, 0x3B, 0xD5, = 0xC0, 0x9E, 0x3E, 0xF0,=0D + 0xD4, 0x47, 0x8D, 0x86, 0x0C, 0x82, 0xA4, 0x58, 0x30, 0x3A, 0x1C, 0x76, = 0xE3, 0xAD, 0x95, 0x66,=0D + 0xB4, 0xB7, 0xFD, 0x09, 0x8A, 0x05, 0x60, 0x0F, 0xA3, 0x0F, 0xE2, 0x93, = 0x96, 0x58, 0x22, 0x9C,=0D + 0x9D, 0x2B, 0xDB, 0xA2, 0x94, 0x18, 0x90, 0x95, 0x02, 0xBD, 0x06, 0x40, = 0x95, 0x02, 0x03, 0x01,=0D + 0x00, 0x01, 0xA3, 0x82, 0x01, 0x19, 0x30, 0x82, 0x01, 0x15, 0x30, 0x1D, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x0E, 0x04, 0x16, 0x04, 0x14, 0xD2, 0xED, 0x0D, 0x1E, 0x24, 0xBB, 0x37, = 0xA9, 0xD8, 0x20, 0x6A,=0D + 0x4D, 0x1D, 0xD2, 0x16, 0xD5, 0x2E, 0xBE, 0x9E, 0xEB, 0x30, 0x1F, 0x06, = 0x03, 0x55, 0x1D, 0x23,=0D + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x23, 0x34, 0xF8, 0xD9, 0x52, 0x46, = 0x70, 0x0A, 0xED, 0x40,=0D + 0xFB, 0x76, 0xFB, 0xB3, 0x2B, 0xB0, 0xC3, 0x35, 0xB3, 0x0F, 0x30, 0x54, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x1F, 0x04, 0x4D, 0x30, 0x4B, 0x30, 0x49, 0xA0, 0x47, 0xA0, 0x45, 0x86, = 0x43, 0x68, 0x74, 0x74,=0D + 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, = 0x6F, 0x73, 0x6F, 0x66,=0D + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, = 0x6C, 0x2F, 0x70, 0x72,=0D + 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, = 0x73, 0x6F, 0x66, 0x74,=0D + 0x54, 0x69, 0x6D, 0x65, 0x53, 0x74, 0x61, 0x6D, 0x70, 0x50, 0x43, 0x41, = 0x2E, 0x63, 0x72, 0x6C,=0D + 0x30, 0x58, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, = 0x04, 0x4C, 0x30, 0x4A,=0D + 0x30, 0x48, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, = 0x86, 0x3C, 0x68, 0x74,=0D + 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, = 0x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, = 0x65, 0x72, 0x74, 0x73,=0D + 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x54, 0x69, = 0x6D, 0x65, 0x53, 0x74,=0D + 0x61, 0x6D, 0x70, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x13, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, = 0x07, 0x03, 0x08, 0x30,=0D + 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, = 0x02, 0x06, 0xC0, 0x30,=0D + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, = 0x05, 0x00, 0x03, 0x82,=0D + 0x01, 0x01, 0x00, 0x9C, 0x0A, 0x55, 0xC8, 0xCC, 0x44, 0x13, 0x34, 0x0C, = 0xD8, 0x63, 0x27, 0x76,=0D + 0x7D, 0x3E, 0xFA, 0x38, 0x32, 0x83, 0x53, 0x9D, 0xF2, 0x08, 0xF9, 0x32, = 0xF5, 0xC5, 0x6E, 0x70,=0D + 0xA1, 0xC9, 0xB1, 0x63, 0x6B, 0x19, 0x9D, 0x09, 0x67, 0xD9, 0x9D, 0xEB, = 0x8A, 0x6A, 0xDB, 0x60,=0D + 0x66, 0xE9, 0xE9, 0x52, 0x26, 0xF3, 0x3B, 0xC6, 0x6A, 0xD3, 0xC2, 0x52, = 0xBE, 0xA8, 0xB9, 0xEB,=0D + 0x6A, 0xAA, 0x78, 0x8C, 0xC9, 0x16, 0x7D, 0x90, 0x95, 0xA0, 0xCC, 0x21, = 0xB3, 0x9E, 0x81, 0xBD,=0D + 0xCD, 0xC1, 0x8B, 0x29, 0xBD, 0x62, 0x25, 0xEF, 0x09, 0x57, 0xE7, 0x86, = 0x4E, 0x2A, 0xEC, 0x80,=0D + 0xCA, 0xBB, 0xFC, 0x21, 0x16, 0xC4, 0x3F, 0x4E, 0x52, 0x19, 0xE6, 0x0E, = 0xB1, 0xD8, 0xC1, 0xC2,=0D + 0x79, 0x90, 0x64, 0xB4, 0x50, 0x73, 0x10, 0x35, 0x5E, 0x5D, 0x11, 0xC1, = 0xB8, 0xBA, 0xAA, 0xCF,=0D + 0x52, 0xF6, 0x80, 0x91, 0x00, 0xE6, 0xEF, 0x51, 0x43, 0x46, 0xE9, 0xD0, = 0xE8, 0x94, 0xF6, 0x2C,=0D + 0x24, 0x0D, 0x8A, 0xC6, 0xB2, 0x31, 0x8A, 0xA3, 0x7E, 0x36, 0x6C, 0xA4, = 0x05, 0x4C, 0x67, 0x07,=0D + 0x2A, 0xBB, 0xBB, 0x10, 0xA5, 0xA5, 0x30, 0x1A, 0x72, 0xD0, 0x06, 0x20, = 0x3B, 0x24, 0x93, 0x5B,=0D + 0x15, 0xD9, 0x39, 0x93, 0xD3, 0x73, 0x2D, 0x1A, 0xC4, 0xD4, 0x6C, 0x1E, = 0xA1, 0x08, 0xEC, 0xF6,=0D + 0x31, 0xB8, 0x6B, 0x4B, 0xEC, 0xEE, 0x5C, 0x33, 0x02, 0x14, 0x32, 0x8C, = 0x7C, 0x11, 0x20, 0x2F,=0D + 0x20, 0x03, 0x7F, 0xF9, 0x0C, 0x9D, 0xB8, 0xD3, 0x9E, 0x5F, 0xD6, 0x08, = 0xFC, 0x81, 0xA0, 0x99,=0D + 0xB8, 0xBB, 0x55, 0x6E, 0xCD, 0x42, 0x4B, 0x3A, 0x4D, 0x8C, 0x14, 0x2B, = 0xCA, 0xC8, 0x12, 0xD3,=0D + 0x62, 0x6E, 0xEA, 0x0D, 0x0A, 0x9D, 0x09, 0xA3, 0x66, 0xD9, 0x79, 0x4F, = 0x8E, 0x1A, 0xA2, 0xFF,=0D + 0xCC, 0x98, 0x04, 0x30, 0x82, 0x05, 0x96, 0x30, 0x82, 0x04, 0x7E, 0xA0, = 0x03, 0x02, 0x01, 0x02,=0D + 0x02, 0x0A, 0x61, 0x01, 0xC6, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, = 0x30, 0x0D, 0x06, 0x09,=0D + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, = 0x81, 0x81, 0x31, 0x0B,=0D + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, = 0x13, 0x30, 0x11, 0x06,=0D + 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, = 0x67, 0x74, 0x6F, 0x6E,=0D + 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, = 0x65, 0x64, 0x6D, 0x6F,=0D + 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, = 0x15, 0x4D, 0x69, 0x63,=0D + 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, = 0x72, 0x61, 0x74, 0x69,=0D + 0x6F, 0x6E, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, = 0x22, 0x4D, 0x69, 0x63,=0D + 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, = 0x77, 0x73, 0x20, 0x56,=0D + 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, = 0x50, 0x43, 0x41, 0x30,=0D + 0x1E, 0x17, 0x0D, 0x30, 0x38, 0x31, 0x30, 0x32, 0x32, 0x32, 0x30, 0x33, = 0x39, 0x32, 0x32, 0x5A,=0D + 0x17, 0x0D, 0x31, 0x30, 0x30, 0x31, 0x32, 0x32, 0x32, 0x30, 0x34, 0x39, = 0x32, 0x32, 0x5A, 0x30,=0D + 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, = 0x55, 0x53, 0x31, 0x13,=0D + 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, = 0x68, 0x69, 0x6E, 0x67,=0D + 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, = 0x13, 0x07, 0x52, 0x65,=0D + 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, = 0x04, 0x0A, 0x13, 0x15,=0D + 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, = 0x72, 0x70, 0x6F, 0x72,=0D + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, = 0x04, 0x0B, 0x13, 0x04,=0D + 0x4D, 0x4F, 0x50, 0x52, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, = 0x03, 0x13, 0x11, 0x4D,=0D + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E, = 0x64, 0x6F, 0x77, 0x73,=0D + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, = 0xF7, 0x0D, 0x01, 0x01,=0D + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, = 0x02, 0x82, 0x01, 0x01,=0D + 0x00, 0xDC, 0x3A, 0xD3, 0x44, 0xF4, 0x6E, 0x20, 0x9F, 0xDD, 0xA4, 0x0E, = 0x82, 0x4E, 0xC7, 0x86,=0D + 0x5E, 0x63, 0xCC, 0xCA, 0xE5, 0x42, 0x53, 0x4B, 0x85, 0xFA, 0x5D, 0x71, = 0x6C, 0xCF, 0x76, 0x0C,=0D + 0x18, 0x8B, 0xA6, 0x0D, 0xF5, 0x4A, 0xF7, 0xFE, 0x17, 0xF2, 0x90, 0xCC, = 0x62, 0xC7, 0x24, 0xAD,=0D + 0x9B, 0x9A, 0xE1, 0x45, 0x3B, 0x61, 0xD8, 0x0D, 0x05, 0x69, 0xC7, 0xCD, = 0x88, 0x2A, 0xB8, 0xB9,=0D + 0x18, 0x1E, 0x60, 0x10, 0x5F, 0x88, 0xC6, 0xD2, 0x82, 0x4E, 0x6D, 0x49, = 0xC5, 0xBE, 0x5C, 0x12,=0D + 0x86, 0x48, 0x85, 0x89, 0x91, 0x81, 0xCD, 0x1B, 0xAD, 0x1F, 0xB7, 0x2D, = 0x67, 0x79, 0xF1, 0x7B,=0D + 0x9F, 0x25, 0x87, 0x14, 0x76, 0x5F, 0xE3, 0x0E, 0x64, 0xA1, 0x72, 0x61, = 0x25, 0xE5, 0x75, 0x69,=0D + 0xC5, 0x14, 0xF1, 0x5F, 0x07, 0x56, 0xA4, 0x0D, 0x70, 0x06, 0x23, 0xA7, = 0x6C, 0xDD, 0x82, 0xAE,=0D + 0xD9, 0x9B, 0x47, 0xA4, 0xA5, 0x6C, 0x08, 0xB0, 0x58, 0xF1, 0x53, 0x6A, = 0x4F, 0xDA, 0x85, 0x61,=0D + 0xCB, 0x02, 0x7B, 0x49, 0xAF, 0x1F, 0xBB, 0xE0, 0xD7, 0xB9, 0x5E, 0xDB, = 0x73, 0x89, 0x76, 0xC1,=0D + 0x3A, 0xBB, 0x0D, 0xF5, 0x97, 0xF0, 0x88, 0x5D, 0x69, 0x77, 0x80, 0xCF, = 0xF1, 0x7E, 0x03, 0x9F,=0D + 0x73, 0x6D, 0xDE, 0x05, 0xB8, 0x2F, 0x77, 0xB5, 0x54, 0x55, 0x45, 0xD0, = 0xD2, 0x38, 0xBD, 0x96,=0D + 0xE3, 0xF7, 0xEA, 0x40, 0xE5, 0xAC, 0x19, 0xFC, 0x71, 0xCB, 0x28, 0x27, = 0xAA, 0x71, 0xA1, 0x72,=0D + 0xB5, 0x12, 0x27, 0xC1, 0x51, 0xF6, 0x36, 0xC5, 0xC0, 0xC7, 0x7B, 0x3A, = 0x3A, 0x93, 0x37, 0x04,=0D + 0xCC, 0xEE, 0x0B, 0x69, 0x78, 0x64, 0x75, 0x41, 0xB6, 0x78, 0x22, 0x0F, = 0x77, 0x84, 0xF7, 0x4B,=0D + 0x8D, 0x46, 0x65, 0x92, 0x5B, 0x4D, 0x56, 0x6B, 0x75, 0x04, 0x46, 0x3F, = 0x0B, 0x1B, 0xB4, 0x19,=0D + 0xBF, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x02, 0x0F, 0x30, 0x82, = 0x02, 0x0B, 0x30, 0x1F,=0D + 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x18, 0x30, 0x16, 0x06, 0x08, 0x2B, = 0x06, 0x01, 0x05, 0x05,=0D + 0x07, 0x03, 0x03, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, = 0x0A, 0x03, 0x06, 0x30,=0D + 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xA1, 0xE6, = 0xC3, 0x65, 0xD0, 0xE6,=0D + 0xE8, 0x28, 0x62, 0xC2, 0xF3, 0xC2, 0x23, 0xA6, 0x1C, 0x49, 0x82, 0x0B, = 0xD5, 0x53, 0x30, 0x0E,=0D + 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, = 0x07, 0x80, 0x30, 0x1F,=0D + 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x90, = 0x8B, 0x11,=0D + 0xA5, 0x70, 0xED, 0xE0, 0xF9, 0xA9, 0xC0, 0xAC, 0x08, 0xC7, 0xB5, 0xF4, = 0x82, 0xB1, 0x3C, 0xC5,=0D + 0x4A, 0x30, 0x7B, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x74, 0x30, 0x72, = 0x30, 0x70, 0xA0, 0x6E,=0D + 0xA0, 0x6C, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, = 0x72, 0x6C, 0x2E, 0x6D,=0D + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, = 0x2F, 0x70, 0x6B, 0x69,=0D + 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, = 0x73, 0x2F, 0x57, 0x69,=0D + 0x6E, 0x50, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x86, 0x34, 0x68, 0x74, = 0x74, 0x70, 0x3A, 0x2F,=0D + 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, = 0x66, 0x74, 0x2E, 0x63,=0D + 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, = 0x72, 0x6F, 0x64, 0x75,=0D + 0x63, 0x74, 0x73, 0x2F, 0x57, 0x69, 0x6E, 0x50, 0x43, 0x41, 0x2E, 0x63, = 0x72, 0x6C, 0x30, 0x52,=0D + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x46, = 0x30, 0x44, 0x30, 0x42,=0D + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x36, = 0x68, 0x74, 0x74, 0x70,=0D + 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, = 0x73, 0x6F, 0x66, 0x74,=0D + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72, = 0x74, 0x73, 0x2F, 0x4D,=0D + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x57, 0x69, 0x6E, 0x50, = 0x43, 0x41, 0x2E, 0x63,=0D + 0x72, 0x74, 0x30, 0x81, 0xC6, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x81, = 0xBE, 0x30, 0x81, 0xBB,=0D + 0x30, 0x81, 0xB8, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, = 0x15, 0x2F, 0x30, 0x81,=0D + 0xAA, 0x30, 0x40, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, = 0x01, 0x16, 0x34, 0x68,=0D + 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, = 0x69, 0x63, 0x72, 0x6F,=0D + 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, = 0x2F, 0x73, 0x73, 0x6C,=0D + 0x2F, 0x63, 0x70, 0x73, 0x2F, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, = 0x50, 0x43, 0x41, 0x2E,=0D + 0x68, 0x74, 0x6D, 0x30, 0x66, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, = 0x07, 0x02, 0x02, 0x30,=0D + 0x5A, 0x1E, 0x58, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00, = 0x72, 0x00, 0x69, 0x00,=0D + 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0xA9, 0x00, 0x20, 0x00, = 0x31, 0x00, 0x39, 0x00,=0D + 0x39, 0x00, 0x39, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, = 0x35, 0x00, 0x20, 0x00,=0D + 0x4D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00, = 0x6F, 0x00, 0x66, 0x00,=0D + 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, = 0x6F, 0x00, 0x72, 0x00,=0D + 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x2E, 0x30, = 0x0D, 0x06, 0x09, 0x2A,=0D + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, = 0x01, 0x01, 0x00, 0x73,=0D + 0x5F, 0xCA, 0x80, 0x1C, 0x60, 0x46, 0x6F, 0xB9, 0x34, 0x9D, 0x88, 0xE3, = 0xBE, 0x22, 0x8C, 0xFA,=0D + 0xE6, 0x58, 0x9A, 0xAB, 0x7B, 0x1A, 0x97, 0xFD, 0xED, 0x2E, 0x39, 0xCC, = 0x59, 0x5B, 0x1D, 0x7A,=0D + 0x06, 0x8A, 0xBB, 0x43, 0x93, 0x7B, 0x1E, 0xA1, 0x88, 0x53, 0xDF, 0x44, = 0xF8, 0x53, 0xA9, 0xEA,=0D + 0xF6, 0x67, 0x1B, 0x3A, 0x78, 0x84, 0x11, 0x6A, 0x6F, 0x29, 0x47, 0x90, = 0x0A, 0x0C, 0x7B, 0x22,=0D + 0x77, 0x4E, 0x6F, 0xB8, 0x64, 0x29, 0xDF, 0x06, 0xC7, 0xC8, 0x73, 0x84, = 0xD6, 0x66, 0xA0, 0xCA,=0D + 0xD9, 0x5A, 0x26, 0x82, 0x57, 0xF9, 0xE3, 0x4F, 0x39, 0xAF, 0x2E, 0x8E, = 0xB1, 0x06, 0x5B, 0x72,=0D + 0xF2, 0x37, 0x32, 0xAE, 0x4E, 0xCE, 0x3C, 0x7D, 0xB0, 0x12, 0x2B, 0x9E, = 0xA5, 0x75, 0xE3, 0x43,=0D + 0xA6, 0x12, 0x8B, 0x06, 0x14, 0x98, 0x77, 0xE3, 0x58, 0x32, 0x25, 0x60, = 0x07, 0x8C, 0x59, 0x71,=0D + 0xA7, 0x71, 0x41, 0xB3, 0x06, 0x8D, 0x5C, 0xEF, 0x9C, 0x7F, 0x5A, 0x22, = 0x6D, 0xB7, 0xD3, 0xD9,=0D + 0xF5, 0xA6, 0x1B, 0x52, 0xDE, 0xF5, 0x7E, 0x76, 0x7C, 0xFE, 0xF4, 0xC8, = 0x23, 0x1A, 0x4B, 0x25,=0D + 0xEB, 0xE4, 0xEE, 0xAF, 0x10, 0x0B, 0x55, 0xC3, 0xD8, 0xC1, 0x17, 0x85, = 0x61, 0x6F, 0xD3, 0x3F,=0D + 0xB6, 0xE9, 0xEC, 0x84, 0xA5, 0xEE, 0x6D, 0xB2, 0xFF, 0xE8, 0x6C, 0x95, = 0xAB, 0x2B, 0x5E, 0xC8,=0D + 0x85, 0xC3, 0x11, 0x60, 0xAC, 0xFA, 0x02, 0x05, 0xF1, 0x7B, 0xDA, 0xC3, = 0x69, 0x49, 0x96, 0xA5,=0D + 0x70, 0xF9, 0x65, 0x66, 0x46, 0x10, 0x8D, 0x34, 0xE9, 0x21, 0x94, 0x3C, = 0x0F, 0x71, 0x4A, 0x1C,=0D + 0xEA, 0x1F, 0xF7, 0x23, 0xA6, 0x87, 0x60, 0x34, 0xE9, 0x14, 0xE1, 0xDE, = 0x03, 0x59, 0xB4, 0x02,=0D + 0x1D, 0x3A, 0xAF, 0xE3, 0x55, 0x05, 0xF5, 0xED, 0xC1, 0xF4, 0xE4, 0x5D, = 0x0E, 0xD3, 0x97, 0x30,=0D + 0x82, 0x06, 0x07, 0x30, 0x82, 0x03, 0xEF, 0xA0, 0x03, 0x02, 0x01, 0x02, = 0x02, 0x0A, 0x61, 0x16,=0D + 0x68, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x30, 0x0D, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5F, 0x31, 0x13, 0x30, = 0x11, 0x06, 0x0A, 0x09,=0D + 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, = 0x6F, 0x6D, 0x31, 0x19,=0D + 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, = 0x01, 0x19, 0x16, 0x09,=0D + 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, = 0x2B, 0x06, 0x03, 0x55,=0D + 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, = 0x74, 0x20, 0x52, 0x6F,=0D + 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, = 0x74, 0x65, 0x20, 0x41,=0D + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, = 0x30, 0x37, 0x30, 0x34,=0D + 0x30, 0x33, 0x31, 0x32, 0x35, 0x33, 0x30, 0x39, 0x5A, 0x17, 0x0D, 0x32, = 0x31, 0x30, 0x34, 0x30,=0D + 0x33, 0x31, 0x33, 0x30, 0x33, 0x30, 0x39, 0x5A, 0x30, 0x77, 0x31, 0x0B, = 0x30, 0x09, 0x06, 0x03,=0D + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, = 0x03, 0x55, 0x04, 0x08,=0D + 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, = 0x31, 0x10, 0x30, 0x0E,=0D + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, = 0x6E, 0x64, 0x31, 0x1E,=0D + 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, = 0x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, = 0x6F, 0x6E, 0x31, 0x21,=0D + 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, = 0x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x6D, = 0x70, 0x20, 0x50, 0x43,=0D + 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, = 0x86, 0xF7, 0x0D, 0x01,=0D + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, = 0x0A, 0x02, 0x82, 0x01,=0D + 0x01, 0x00, 0x9F, 0xA1, 0x6C, 0xB1, 0xDF, 0xDB, 0x48, 0x92, 0x2A, 0x7C, = 0x6B, 0x2E, 0x19, 0xE1,=0D + 0xBD, 0xE2, 0xE3, 0xC5, 0x99, 0x51, 0x23, 0x50, 0xAD, 0xCE, 0xDD, 0x18, = 0x4E, 0x24, 0x0F, 0xEE,=0D + 0xD1, 0xA7, 0xD1, 0x4C, 0xAD, 0x74, 0x30, 0x20, 0x11, 0xEB, 0x07, 0xD5, = 0x54, 0x95, 0x15, 0x49,=0D + 0x94, 0x1B, 0x42, 0x92, 0xAE, 0x98, 0x5C, 0x30, 0x26, 0xDA, 0x00, 0x6B, = 0xE8, 0x7B, 0xBD, 0xEC,=0D + 0x89, 0x07, 0x0F, 0xF7, 0x0E, 0x04, 0x98, 0xF0, 0x89, 0xCC, 0x1F, 0xCB, = 0x33, 0x24, 0x87, 0x9D,=0D + 0xF2, 0xF4, 0x67, 0x1C, 0x2C, 0xFC, 0x7B, 0xE7, 0x88, 0x1D, 0xEA, 0xE7, = 0x4E, 0xA3, 0xA1, 0xC1,=0D + 0x23, 0x53, 0xCA, 0x8D, 0xFA, 0x45, 0xCF, 0x09, 0xD0, 0x5E, 0xAF, 0xD0, = 0xB0, 0x42, 0x04, 0xA2,=0D + 0xF9, 0xA6, 0x6C, 0x93, 0x67, 0xD7, 0x28, 0xDC, 0x46, 0x53, 0xB0, 0x86, = 0xD0, 0xE5, 0x28, 0x46,=0D + 0x2E, 0x27, 0xAC, 0x86, 0x4F, 0x55, 0x52, 0x0C, 0xE4, 0x03, 0x2C, 0xFB, = 0x6A, 0x90, 0x90, 0x30,=0D + 0x6E, 0x87, 0xF3, 0x59, 0x30, 0x9D, 0xFA, 0x7E, 0xD6, 0x97, 0xB3, 0xE8, = 0x21, 0x97, 0x7E, 0xF8,=0D + 0xD2, 0x13, 0xF3, 0x08, 0xB7, 0x53, 0x6D, 0x52, 0xB4, 0x45, 0x90, 0x9F, = 0x48, 0x00, 0x4A, 0x47,=0D + 0x66, 0x11, 0x27, 0x29, 0x66, 0xA8, 0x97, 0xE4, 0xD3, 0x06, 0x81, 0x4A, = 0xA2, 0xF9, 0x84, 0xA7,=0D + 0x11, 0x47, 0x14, 0x09, 0x82, 0x9F, 0x84, 0xED, 0x55, 0x78, 0xFE, 0x01, = 0x9A, 0x1D, 0x50, 0x08,=0D + 0x85, 0x00, 0x10, 0x30, 0x46, 0xED, 0xB7, 0xDE, 0x23, 0x46, 0xBB, 0xC4, = 0x2D, 0x54, 0x9F, 0xAF,=0D + 0x1E, 0x78, 0x41, 0x31, 0x77, 0xCC, 0x9B, 0xDF, 0x3B, 0x83, 0x93, 0xA1, = 0x61, 0x02, 0xB5, 0x1D,=0D + 0x0D, 0xB1, 0xFC, 0xF7, 0x9B, 0xB2, 0x01, 0xCE, 0x22, 0x4B, 0x54, 0xFF, = 0xF9, 0x05, 0xC3, 0xC2,=0D + 0x20, 0x0B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0xAB, 0x30, = 0x82, 0x01, 0xA7, 0x30,=0D + 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, = 0x03, 0x01, 0x01, 0xFF,=0D + 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x23, = 0x34, 0xF8, 0xD9, 0x52,=0D + 0x46, 0x70, 0x0A, 0xED, 0x40, 0xFB, 0x76, 0xFB, 0xB3, 0x2B, 0xB0, 0xC3, = 0x35, 0xB3, 0x0F, 0x30,=0D + 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, = 0x30, 0x10, 0x06, 0x09,=0D + 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, = 0x01, 0x00, 0x30, 0x81,=0D + 0x98, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x81, 0x90, 0x30, 0x81, 0x8D, = 0x80, 0x14, 0x0E, 0xAC,=0D + 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, 0xE5, 0x25, 0x13, 0xFC, 0x2A, 0xE1, = 0x0A, 0x53, 0x95, 0x59,=0D + 0xE4, 0xA4, 0xA1, 0x63, 0xA4, 0x61, 0x30, 0x5F, 0x31, 0x13, 0x30, 0x11, = 0x06, 0x0A, 0x09, 0x92,=0D + 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6F, = 0x6D, 0x31, 0x19, 0x30,=0D + 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, = 0x19, 0x16, 0x09, 0x6D,=0D + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, 0x2B, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, = 0x20, 0x52, 0x6F, 0x6F,=0D + 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, = 0x65, 0x20, 0x41, 0x75,=0D + 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x82, 0x10, 0x79, 0xAD, 0x16, = 0xA1, 0x4A, 0xA0, 0xA5,=0D + 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07, 0x13, 0x2E, 0x65, 0x30, 0x50, 0x06, = 0x03, 0x55, 0x1D, 0x1F,=0D + 0x04, 0x49, 0x30, 0x47, 0x30, 0x45, 0xA0, 0x43, 0xA0, 0x41, 0x86, 0x3F, = 0x68, 0x74, 0x74, 0x70,=0D + 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, = 0x73, 0x6F, 0x66, 0x74,=0D + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, = 0x2F, 0x70, 0x72, 0x6F,=0D + 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, = 0x6F, 0x66, 0x74, 0x72,=0D + 0x6F, 0x6F, 0x74, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30, = 0x54, 0x06, 0x08, 0x2B,=0D + 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x48, 0x30, 0x46, 0x30, = 0x44, 0x06, 0x08, 0x2B,=0D + 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x38, 0x68, 0x74, 0x74, = 0x70, 0x3A, 0x2F, 0x2F,=0D + 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, = 0x74, 0x2E, 0x63, 0x6F,=0D + 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2F, = 0x4D, 0x69, 0x63, 0x72,=0D + 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x65, 0x72, = 0x74, 0x2E, 0x63, 0x72,=0D + 0x74, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, = 0x06, 0x08, 0x2B, 0x06,=0D + 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, = 0x48, 0x86, 0xF7, 0x0D,=0D + 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x10, 0x97, = 0x8A, 0xC3, 0x5C, 0x03,=0D + 0x44, 0x36, 0xDD, 0xE9, 0xB4, 0xAD, 0x77, 0xDB, 0xCE, 0x79, 0x51, 0x4D, = 0x01, 0xB1, 0x2E, 0x74,=0D + 0x71, 0x5B, 0x6D, 0x0C, 0x13, 0xAB, 0xCE, 0xBE, 0x7B, 0x8F, 0xB8, 0x2E, = 0xD4, 0x12, 0xA2, 0x8C,=0D + 0x6D, 0x62, 0xB8, 0x57, 0x02, 0xCB, 0x4E, 0x20, 0x13, 0x50, 0x99, 0xDD, = 0x7A, 0x40, 0xE2, 0x57,=0D + 0xBB, 0xAF, 0x58, 0x9A, 0x1C, 0xE1, 0x1D, 0x01, 0x86, 0xAC, 0xBB, 0x78, = 0xF2, 0x8B, 0xD0, 0xEC,=0D + 0x3B, 0x01, 0xEE, 0xE2, 0xBE, 0x8F, 0x0A, 0x05, 0xC8, 0x8D, 0x48, 0xE2, = 0xF0, 0x53, 0x15, 0xDD,=0D + 0x4F, 0xAB, 0x92, 0xE4, 0xE7, 0x8D, 0x6A, 0xD5, 0x80, 0xC1, 0xE6, 0x94, = 0xF2, 0x06, 0x2F, 0x85,=0D + 0x03, 0xE9, 0x91, 0x2A, 0x24, 0x22, 0x70, 0xFB, 0xF6, 0xFC, 0xE4, 0x78, = 0x99, 0x2E, 0x0D, 0xF7,=0D + 0x07, 0xE2, 0x70, 0xBC, 0x18, 0x4E, 0x9D, 0x8E, 0x6B, 0x0A, 0x72, 0x95, = 0xB8, 0xA1, 0x39, 0x9C,=0D + 0x67, 0x2D, 0xC5, 0x51, 0x0E, 0xEA, 0x62, 0x5C, 0x3F, 0x16, 0x98, 0x8B, = 0x20, 0x3F, 0xE2, 0x07,=0D + 0x1A, 0x32, 0xF9, 0xCC, 0x31, 0x4A, 0x76, 0x31, 0x3D, 0x2B, 0x72, 0x0B, = 0xC8, 0xEA, 0x70, 0x3D,=0D + 0xFF, 0x85, 0x0A, 0x13, 0xDF, 0xC2, 0x0A, 0x61, 0x8E, 0xF0, 0xD7, 0xB8, = 0x17, 0xEB, 0x4E, 0x8B,=0D + 0x7F, 0xC5, 0x35, 0x2B, 0x5E, 0xA3, 0xBF, 0xEB, 0xBC, 0x7D, 0x0B, 0x42, = 0x7B, 0xD4, 0x53, 0x72,=0D + 0x21, 0xEE, 0x30, 0xCA, 0xBB, 0x78, 0x65, 0x5C, 0x5B, 0x01, 0x17, 0x0A, = 0x14, 0x0E, 0xD2, 0xDA,=0D + 0x14, 0x98, 0xF5, 0x3C, 0xB9, 0x66, 0x58, 0xB3, 0x2D, 0x2F, 0xE7, 0xF9, = 0x85, 0x86, 0xCC, 0x51,=0D + 0x56, 0xE8, 0x9D, 0x70, 0x94, 0x6C, 0xAC, 0x39, 0x4C, 0xD4, 0xF6, 0x79, = 0xBF, 0xAA, 0x18, 0x7A,=0D + 0x62, 0x29, 0xEF, 0xA2, 0x9B, 0x29, 0x34, 0x06, 0x77, 0x1A, 0x62, 0xC9, = 0x3D, 0x1E, 0x6D, 0x1F,=0D + 0x82, 0xF0, 0x0B, 0xC7, 0x2C, 0xBB, 0xCF, 0x43, 0xB3, 0xE5, 0xF9, 0xEC, = 0x7D, 0xB5, 0xE3, 0xA4,=0D + 0xA8, 0x74, 0x35, 0xB8, 0x4E, 0xC5, 0x71, 0x23, 0x12, 0x26, 0x76, 0x0B, = 0x3C, 0x52, 0x8C, 0x71,=0D + 0x5A, 0x46, 0x43, 0x14, 0xBC, 0xB3, 0xB3, 0xB0, 0x4D, 0x67, 0xC8, 0x9F, = 0x42, 0xFF, 0x80, 0x79,=0D + 0x21, 0x80, 0x9E, 0x15, 0x30, 0x66, 0xE8, 0x42, 0x12, 0x5E, 0x1A, 0xC8, = 0x9E, 0x22, 0x21, 0xD0,=0D + 0x43, 0xE9, 0x2B, 0xE9, 0xBB, 0xF4, 0x48, 0xCC, 0x2C, 0xD4, 0xD8, 0x32, = 0x80, 0x4C, 0x26, 0x2A,=0D + 0x48, 0x24, 0x5F, 0x5A, 0xEA, 0x56, 0xEF, 0xA6, 0xDE, 0x99, 0x9D, 0xCA, = 0x3A, 0x6F, 0xBD, 0x81,=0D + 0x27, 0x74, 0x06, 0x11, 0xEE, 0x76, 0x21, 0xBF, 0x9B, 0x82, 0xC1, 0x27, = 0x54, 0xB6, 0xB1, 0x6A,=0D + 0x3D, 0x89, 0xA1, 0x76, 0x61, 0xB4, 0x6E, 0xA1, 0x13, 0xA6, 0xBF, 0xAA, = 0x47, 0xF0, 0x12, 0x6F,=0D + 0xFD, 0x8A, 0x32, 0x6C, 0xB2, 0xFE, 0xDF, 0x51, 0xC8, 0x8C, 0x23, 0xC9, = 0x66, 0xBD, 0x9D, 0x1D,=0D + 0x87, 0x12, 0x64, 0x02, 0x3D, 0x2D, 0xAF, 0x59, 0x8F, 0xB8, 0xE4, 0x21, = 0xE5, 0xB5, 0xB0, 0xCA,=0D + 0x63, 0xB4, 0x78, 0x54, 0x05, 0xD4, 0x41, 0x2E, 0x50, 0xAC, 0x94, 0xB0, = 0xA5, 0x78, 0xAB, 0xB3,=0D + 0xA0, 0x96, 0x75, 0x1A, 0xD9, 0x92, 0x87, 0x13, 0x75, 0x22, 0x2F, 0x32, = 0xA8, 0x08, 0x6E, 0xA0,=0D + 0x5B, 0x8C, 0x25, 0xBF, 0xA0, 0xEF, 0x84, 0xCA, 0x21, 0xD6, 0xEB, 0x1E, = 0x4F, 0xC9, 0x9A, 0xEE,=0D + 0x49, 0xE0, 0xF7, 0x01, 0x65, 0x6F, 0x89, 0x0B, 0x7D, 0xC8, 0x69, 0xC8, = 0xE6, 0x6E, 0xEA, 0xA7,=0D + 0x97, 0xCE, 0x31, 0x29, 0xFF, 0x0E, 0xC5, 0x5B, 0x5C, 0xD8, 0x4D, 0x1B, = 0xA1, 0xD8, 0xFA, 0x2F,=0D + 0x9E, 0x3F, 0x2E, 0x55, 0x16, 0x6B, 0xC9, 0x13, 0xA3, 0xFD, 0x30, 0x82, = 0x06, 0xA1, 0x30, 0x82,=0D + 0x04, 0x89, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0A, 0x61, 0x07, 0x02, = 0xDC, 0x00, 0x00, 0x00,=0D + 0x00, 0x00, 0x0B, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, = 0x0D, 0x01, 0x01, 0x05,=0D + 0x05, 0x00, 0x30, 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, = 0x26, 0x89, 0x93, 0xF2,=0D + 0x2C, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, = 0x17, 0x06, 0x0A, 0x09,=0D + 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, = 0x69, 0x63, 0x72, 0x6F,=0D + 0x73, 0x6F, 0x66, 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, = 0x03, 0x13, 0x24, 0x4D,=0D + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, = 0x74, 0x20, 0x43, 0x65,=0D + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, = 0x74, 0x68, 0x6F, 0x72,=0D + 0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x35, 0x30, 0x39, 0x31, = 0x35, 0x32, 0x31, 0x35,=0D + 0x35, 0x34, 0x31, 0x5A, 0x17, 0x0D, 0x31, 0x36, 0x30, 0x33, 0x31, 0x35, = 0x32, 0x32, 0x30, 0x35,=0D + 0x34, 0x31, 0x5A, 0x30, 0x81, 0x81, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, = 0x55, 0x04, 0x06, 0x13,=0D + 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, = 0x13, 0x0A, 0x57, 0x61,=0D + 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, = 0x06, 0x03, 0x55, 0x04,=0D + 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, = 0x30, 0x1C, 0x06, 0x03,=0D + 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, = 0x66, 0x74, 0x20, 0x43,=0D + 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x2B, = 0x30, 0x29, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x13, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, = 0x66, 0x74, 0x20, 0x57,=0D + 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, = 0x69, 0x63, 0x61, 0x74,=0D + 0x69, 0x6F, 0x6E, 0x20, 0x50, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, = 0x0D, 0x06, 0x09, 0x2A,=0D + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, = 0x01, 0x0F, 0x00, 0x30,=0D + 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC5, 0xAC, 0x93, 0x4E, = 0xE6, 0x4A, 0x11, 0x9E,=0D + 0x37, 0xD0, 0x35, 0xD2, 0xB0, 0x06, 0x5C, 0x83, 0x14, 0xA5, 0x61, 0x92, = 0xFC, 0xFE, 0xB3, 0x89,=0D + 0xC1, 0xE6, 0xCD, 0xC8, 0x1F, 0x31, 0x84, 0x09, 0x91, 0x34, 0x46, 0x92, = 0x2C, 0xB8, 0xEE, 0x2C,=0D + 0xC5, 0x20, 0x73, 0xC4, 0xE8, 0x1A, 0xD8, 0x8D, 0xCE, 0x7A, 0x68, 0xB5, = 0x66, 0x78, 0x8B, 0xE5,=0D + 0x60, 0x15, 0xA2, 0xF6, 0x29, 0x5A, 0x1D, 0x5E, 0x5D, 0xFC, 0x62, 0xD3, = 0xC1, 0x5C, 0x29, 0x89,=0D + 0xFB, 0x33, 0xF8, 0x16, 0x95, 0x36, 0xDD, 0xB1, 0x46, 0x74, 0x69, 0x72, = 0x53, 0xD5, 0xAA, 0xE8,=0D + 0x8A, 0x99, 0x1A, 0xD8, 0xF7, 0x67, 0x09, 0xD9, 0x09, 0x20, 0x22, 0x38, = 0x7A, 0xD6, 0x03, 0x23,=0D + 0xD7, 0x89, 0x9F, 0x1C, 0x01, 0xB7, 0x51, 0xDF, 0x98, 0x66, 0x2A, 0x02, = 0x8B, 0x06, 0xEC, 0xE4,=0D + 0x29, 0xEF, 0x5B, 0x42, 0x17, 0x15, 0x97, 0x51, 0x8D, 0x7D, 0x25, 0x0A, = 0xAF, 0x25, 0xE8, 0xDE,=0D + 0xDC, 0x9B, 0x67, 0x16, 0x0A, 0x56, 0x73, 0x9D, 0xB3, 0x1D, 0x85, 0x83, = 0x0B, 0x7E, 0x33, 0x2B,=0D + 0x62, 0x33, 0xCE, 0x1C, 0x20, 0x81, 0x4B, 0x5E, 0xD3, 0xC6, 0x49, 0xB8, = 0xF6, 0x2E, 0xD3, 0x4E,=0D + 0xB0, 0x71, 0x44, 0x46, 0x64, 0x3E, 0xDE, 0x43, 0x66, 0x04, 0xB9, 0xCC, = 0x83, 0x48, 0x3A, 0xC5,=0D + 0x36, 0x7A, 0x04, 0x48, 0x0B, 0x89, 0x02, 0x3D, 0x63, 0xA2, 0x01, 0x76, = 0x29, 0x97, 0x75, 0xE9,=0D + 0x01, 0xE6, 0x00, 0x97, 0x09, 0x92, 0xF8, 0xE2, 0x27, 0xF0, 0x29, 0x67, = 0x43, 0x77, 0xC3, 0x50,=0D + 0x96, 0x53, 0x31, 0xE1, 0xB6, 0x71, 0x8B, 0xEC, 0x77, 0xC7, 0x7C, 0x31, = 0x48, 0xD5, 0xB8, 0x25,=0D + 0x22, 0x8C, 0x00, 0xF7, 0x28, 0x38, 0x7A, 0xBD, 0x7C, 0xC7, 0x3F, 0xCD, = 0x40, 0x26, 0x77, 0xDD,=0D + 0x00, 0x00, 0x11, 0x9A, 0x95, 0xBE, 0x1F, 0xDB, 0x02, 0x03, 0x01, 0x00, = 0x01, 0xA3, 0x82, 0x02,=0D + 0x3A, 0x30, 0x82, 0x02, 0x36, 0x30, 0x10, 0x06, 0x09, 0x2B, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, = 0x1D, 0x0E, 0x04, 0x16,=0D + 0x04, 0x14, 0x90, 0x8B, 0x11, 0xA5, 0x70, 0xED, 0xE0, 0xF9, 0xA9, 0xC0, = 0xAC, 0x08, 0xC7, 0xB5,=0D + 0xF4, 0x82, 0xB1, 0x3C, 0xC5, 0x4A, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, = 0x0F, 0x04, 0x04, 0x03,=0D + 0x02, 0x01, 0xC6, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, = 0xFF, 0x04, 0x05, 0x30,=0D + 0x03, 0x01, 0x01, 0xFF, 0x30, 0x81, 0x98, 0x06, 0x03, 0x55, 0x1D, 0x23, = 0x04, 0x81, 0x90, 0x30,=0D + 0x81, 0x8D, 0x80, 0x14, 0x0E, 0xAC, 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, = 0xE5, 0x25, 0x13, 0xFC,=0D + 0x2A, 0xE1, 0x0A, 0x53, 0x95, 0x59, 0xE4, 0xA4, 0xA1, 0x63, 0xA4, 0x61, = 0x30, 0x5F, 0x31, 0x13,=0D + 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, = 0x01, 0x19, 0x16, 0x03,=0D + 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09, 0x92, 0x26, = 0x89, 0x93, 0xF2, 0x2C,=0D + 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, = 0x66, 0x74, 0x31, 0x2D,=0D + 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D, 0x69, 0x63, = 0x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, = 0x69, 0x66, 0x69, 0x63,=0D + 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, = 0x79, 0x82, 0x10, 0x79,=0D + 0xAD, 0x16, 0xA1, 0x4A, 0xA0, 0xA5, 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07, = 0x13, 0x2E, 0x65, 0x30,=0D + 0x50, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x49, 0x30, 0x47, 0x30, 0x45, = 0xA0, 0x43, 0xA0, 0x41,=0D + 0x86, 0x3F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, = 0x2E, 0x6D, 0x69, 0x63,=0D + 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, = 0x6B, 0x69, 0x2F, 0x63,=0D + 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2F, = 0x6D, 0x69, 0x63, 0x72,=0D + 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x72, 0x6F, 0x6F, 0x74, 0x63, 0x65, 0x72, = 0x74, 0x2E, 0x63, 0x72,=0D + 0x6C, 0x30, 0x54, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, = 0x01, 0x04, 0x48, 0x30,=0D + 0x46, 0x30, 0x44, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, = 0x02, 0x86, 0x38, 0x68,=0D + 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, = 0x63, 0x72, 0x6F, 0x73,=0D + 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x2F, = 0x63, 0x65, 0x72, 0x74,=0D + 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x52, = 0x6F, 0x6F, 0x74, 0x43,=0D + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x81, 0x80, 0x06, 0x03, = 0x55, 0x1D, 0x20, 0x04,=0D + 0x79, 0x30, 0x77, 0x30, 0x75, 0x06, 0x09, 0x2B, 0x06, 0x01, 0x04, 0x01, = 0x82, 0x37, 0x15, 0x2F,=0D + 0x30, 0x68, 0x30, 0x66, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, = 0x02, 0x02, 0x30, 0x5A,=0D + 0x1E, 0x58, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, = 0x00, 0x69, 0x00, 0x67,=0D + 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0xA9, 0x00, 0x20, 0x00, 0x31, = 0x00, 0x39, 0x00, 0x39,=0D + 0x00, 0x39, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35, = 0x00, 0x20, 0x00, 0x4D,=0D + 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00, 0x6F, = 0x00, 0x66, 0x00, 0x74,=0D + 0x00, 0x20, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, = 0x00, 0x72, 0x00, 0x61,=0D + 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x2E, 0x30, 0x1F, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x25, 0x04, 0x18, 0x30, 0x16, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, = 0x07, 0x03, 0x03, 0x06,=0D + 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0A, 0x03, 0x06, 0x30, = 0x0D, 0x06, 0x09, 0x2A,=0D + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, = 0x02, 0x01, 0x00, 0x25,=0D + 0x31, 0xA1, 0x58, 0xEA, 0x52, 0xE5, 0xE1, 0x17, 0x0C, 0xE6, 0xF1, 0x3F, = 0x78, 0xA3, 0x3F, 0x72,=0D + 0xAF, 0xA7, 0x57, 0x10, 0x53, 0x89, 0x10, 0x5E, 0x32, 0x9C, 0xB6, 0x70, = 0xC3, 0x15, 0x2B, 0x4D,=0D + 0x15, 0x30, 0x34, 0xE8, 0xC0, 0x6A, 0xE4, 0x1C, 0xD3, 0x2E, 0x20, 0x65, = 0x48, 0xD7, 0x1B, 0x98,=0D + 0x62, 0x21, 0xBA, 0x45, 0x9F, 0x4A, 0xEC, 0xDB, 0x2F, 0x09, 0x19, 0x51, = 0xE5, 0xED, 0x32, 0x19,=0D + 0x51, 0x2F, 0xE1, 0xDD, 0xFB, 0xC6, 0x52, 0xFD, 0xEB, 0xC6, 0x82, 0x25, = 0x42, 0x03, 0x09, 0xA6,=0D + 0x38, 0xB6, 0x36, 0x1F, 0xCC, 0xC9, 0x80, 0xBB, 0x5A, 0x69, 0x18, 0x31, = 0xC3, 0xB3, 0xA0, 0xB3,=0D + 0x67, 0x47, 0xBE, 0x9D, 0xC7, 0xE2, 0x3F, 0x96, 0xB3, 0x88, 0xF8, 0x19, = 0xBE, 0x39, 0xB9, 0xE9,=0D + 0x95, 0xCE, 0xFC, 0x7C, 0xAF, 0xA8, 0xCD, 0xD0, 0x41, 0x90, 0xE0, 0xD5, = 0xB3, 0x1C, 0x2F, 0x68,=0D + 0xBB, 0xDB, 0x0F, 0x6C, 0x6A, 0xDD, 0xF2, 0xAF, 0xDE, 0xF2, 0xB5, 0xDE, = 0x0D, 0xB6, 0xA6, 0x5A,=0D + 0xF0, 0x86, 0x0A, 0xB9, 0x6D, 0x99, 0x4B, 0x3F, 0x7B, 0x2D, 0x01, 0x84, = 0x6C, 0x8F, 0x87, 0xDC,=0D + 0x7F, 0x8F, 0xAB, 0x14, 0x88, 0xD0, 0x06, 0x91, 0x34, 0xBE, 0x1B, 0x82, = 0x22, 0xA4, 0xBC, 0x55,=0D + 0x8A, 0xAD, 0x9B, 0xFC, 0x73, 0x14, 0x10, 0xC4, 0xC9, 0x19, 0x1E, 0x07, = 0x7D, 0x9B, 0x0E, 0xC0,=0D + 0x95, 0x26, 0x5D, 0xC6, 0x1F, 0xAC, 0xB4, 0xF2, 0x7E, 0xBA, 0x25, 0x70, = 0x4A, 0x7B, 0xD7, 0x8E,=0D + 0xD1, 0x9D, 0xA0, 0x13, 0x49, 0x7A, 0xB0, 0x02, 0x52, 0x52, 0x24, 0xF4, = 0xAF, 0xDD, 0x40, 0x2D,=0D + 0xE5, 0x3E, 0x32, 0x58, 0xB3, 0x4A, 0x6A, 0xDD, 0x11, 0x59, 0xAA, 0x2D, = 0xBC, 0xA4, 0xA0, 0x73,=0D + 0x38, 0xF9, 0x40, 0x77, 0x6B, 0x34, 0x19, 0x57, 0xCD, 0x38, 0x68, 0x27, = 0x82, 0xF8, 0xD1, 0x6F,=0D + 0xEB, 0x23, 0xC0, 0x3F, 0x52, 0xF3, 0x4E, 0xD5, 0x02, 0x3E, 0x6A, 0x9A, = 0x2B, 0xC1, 0xF5, 0x31,=0D + 0x71, 0xDB, 0x41, 0x4D, 0x3B, 0xDE, 0xEF, 0xAD, 0xAF, 0x1F, 0x88, 0x65, = 0x43, 0x1B, 0x51, 0xB7,=0D + 0x9A, 0x75, 0xCA, 0x8E, 0x69, 0x49, 0x10, 0x8F, 0x78, 0x8A, 0x74, 0x45, = 0xB9, 0x09, 0x8E, 0x73,=0D + 0x77, 0x07, 0x32, 0x4A, 0x4B, 0xD7, 0x68, 0x2B, 0x98, 0xC5, 0xBA, 0x54, = 0xEA, 0x3F, 0xCB, 0xA2,=0D + 0x00, 0x8C, 0xBB, 0xD8, 0x10, 0x58, 0xF2, 0xDB, 0xDC, 0x9B, 0xCD, 0xD8, = 0xEA, 0x48, 0x43, 0xE2,=0D + 0x4A, 0x7E, 0x65, 0xB2, 0xDC, 0xF5, 0x2D, 0x4E, 0x25, 0x67, 0xA8, 0xE0, = 0xB5, 0xBA, 0xA7, 0xDD,=0D + 0x7E, 0x5E, 0xC1, 0x4C, 0x02, 0x74, 0xC9, 0xB3, 0x6E, 0xE3, 0xF8, 0xF0, = 0x0B, 0xED, 0xFC, 0xB9,=0D + 0x29, 0xC5, 0x5B, 0xC9, 0x36, 0x51, 0x90, 0xDB, 0x78, 0x7D, 0xB9, 0x32, = 0x0F, 0x5E, 0x76, 0xD2,=0D + 0x15, 0x5C, 0x3B, 0x37, 0x21, 0xC6, 0xDB, 0xC9, 0x19, 0x6E, 0xED, 0x74, = 0x2A, 0x5C, 0x2C, 0x0B,=0D + 0x51, 0x49, 0x45, 0x53, 0xB0, 0xB2, 0xB3, 0x23, 0xD4, 0xA1, 0xB0, 0x5F, = 0x0D, 0x19, 0xCD, 0x14,=0D + 0xA7, 0xE3, 0x3C, 0x9B, 0x97, 0x72, 0x94, 0x14, 0xDF, 0xFF, 0xC1, 0x90, = 0x1B, 0xA5, 0xDF, 0xF5,=0D + 0xA9, 0xF3, 0x1B, 0x17, 0xDA, 0xB5, 0xFC, 0x44, 0xE0, 0xE8, 0xE2, 0x3C, = 0xA2, 0x7A, 0xBB, 0xBB,=0D + 0x65, 0xE6, 0x4D, 0xB1, 0xB5, 0x15, 0xA1, 0xD9, 0x67, 0x3B, 0xB0, 0x0C, = 0x7D, 0x3B, 0xE9, 0xEE,=0D + 0x51, 0x2A, 0x47, 0xF5, 0x15, 0x0F, 0x8C, 0xAD, 0x5D, 0x2E, 0x35, 0xDF, = 0xF4, 0xA4, 0x2E, 0xF6,=0D + 0x13, 0x37, 0x5A, 0x2B, 0xE8, 0x55, 0x9A, 0x49, 0x2C, 0x97, 0xCE, 0x9D, = 0x01, 0x9E, 0x97, 0x46,=0D + 0x5C, 0xD9, 0x2D, 0xBC, 0x24, 0x5A, 0x95, 0x59, 0x6F, 0x4D, 0xCA, 0x9D, = 0xD6, 0x57, 0x26, 0x31,=0D + 0x82, 0x04, 0x96, 0x30, 0x82, 0x04, 0x92, 0x02, 0x01, 0x01, 0x30, 0x81, = 0x90, 0x30, 0x81, 0x81,=0D + 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, = 0x53, 0x31, 0x13, 0x30,=0D + 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, = 0x69, 0x6E, 0x67, 0x74,=0D + 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, = 0x07, 0x52, 0x65, 0x64,=0D + 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, = 0x0A, 0x13, 0x15, 0x4D,=0D + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, = 0x70, 0x6F, 0x72, 0x61,=0D + 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, = 0x03, 0x13, 0x22, 0x4D,=0D + 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x57, 0x69, 0x6E, = 0x64, 0x6F, 0x77, 0x73,=0D + 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, = 0x6E, 0x20, 0x50, 0x43,=0D + 0x41, 0x02, 0x0A, 0x61, 0x01, 0xC6, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, = 0x07, 0x30, 0x09, 0x06,=0D + 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, 0x81, 0xBA, 0x30, = 0x19, 0x06, 0x09, 0x2A,=0D + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0C, 0x06, 0x0A, = 0x2B, 0x06, 0x01, 0x04,=0D + 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1C, 0x06, 0x0A, 0x2B, 0x06, = 0x01, 0x04, 0x01, 0x82,=0D + 0x37, 0x02, 0x01, 0x0B, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x0A, 0x2B, 0x06, = 0x01, 0x04, 0x01, 0x82,=0D + 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, = 0xF7, 0x0D, 0x01, 0x09,=0D + 0x04, 0x31, 0x16, 0x04, 0x14, 0xC5, 0xC5, 0xC1, 0xC3, 0x46, 0xC4, 0x12, = 0xB9, 0x38, 0xED, 0xE5,=0D + 0x7E, 0x66, 0x78, 0x4E, 0x8F, 0x55, 0x10, 0x7D, 0xAC, 0x30, 0x5A, 0x06, = 0x0A, 0x2B, 0x06, 0x01,=0D + 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0C, 0x31, 0x4C, 0x30, 0x4A, 0xA0, = 0x24, 0x80, 0x22, 0x00,=0D + 0x4D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x73, 0x00, = 0x6F, 0x00, 0x66, 0x00,=0D + 0x74, 0x00, 0x20, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x64, 0x00, = 0x6F, 0x00, 0x77, 0x00,=0D + 0x73, 0xA1, 0x22, 0x80, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, = 0x77, 0x77, 0x77, 0x2E,=0D + 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, = 0x6D, 0x2F, 0x77, 0x69,=0D + 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, = 0x86, 0xF7, 0x0D, 0x01,=0D + 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0xC0, 0x53, 0x19, 0xE7, = 0x27, 0xE6, 0xD6, 0xD7,=0D + 0xA8, 0xAE, 0xA0, 0xE6, 0x4C, 0xEF, 0x9A, 0xBC, 0x1D, 0x19, 0xD4, 0xC5, = 0x7F, 0x7C, 0x71, 0xFF,=0D + 0x14, 0x7C, 0xAD, 0x7A, 0x8F, 0x2D, 0x0F, 0x40, 0x38, 0x9B, 0x83, 0x09, = 0xEE, 0xF5, 0x34, 0x92,=0D + 0xB4, 0x85, 0x34, 0x7C, 0xBA, 0x9B, 0x58, 0x5D, 0xA6, 0x15, 0xDE, 0x99, = 0xBF, 0x25, 0x89, 0xDB,=0D + 0xC0, 0x3A, 0x98, 0x21, 0x1C, 0x25, 0x09, 0xBD, 0x41, 0xAA, 0x0F, 0x90, = 0x6C, 0x62, 0xE9, 0xBD,=0D + 0x1D, 0xDD, 0x7C, 0xA4, 0x1F, 0x19, 0x3F, 0xC8, 0x11, 0xF5, 0x1C, 0x9E, = 0xEA, 0x2E, 0x1A, 0xCE,=0D + 0x5A, 0x61, 0x8A, 0x77, 0xFA, 0x65, 0x1F, 0x03, 0xB4, 0x45, 0x02, 0x0F, = 0xB4, 0x0E, 0xB9, 0x44,=0D + 0xF6, 0x75, 0xF6, 0x67, 0x91, 0xAD, 0xFA, 0xF9, 0xC3, 0xFA, 0x63, 0x91, = 0x58, 0xFE, 0x40, 0xDF,=0D + 0x92, 0x6B, 0x59, 0x42, 0x44, 0x66, 0xD2, 0x88, 0x49, 0x59, 0x29, 0x1D, = 0x6A, 0xF9, 0x93, 0x9B,=0D + 0xD5, 0x38, 0x84, 0x96, 0xD7, 0xAF, 0xBA, 0xEC, 0x29, 0x8D, 0x06, 0x8C, = 0x8B, 0xF4, 0xA1, 0x56,=0D + 0x0F, 0x78, 0x3F, 0x35, 0xCB, 0x12, 0x8A, 0x85, 0xD5, 0x7C, 0xFC, 0x63, = 0xDD, 0x72, 0xA1, 0x13,=0D + 0xD3, 0x25, 0x4A, 0x59, 0x21, 0xD0, 0xC6, 0x47, 0x9F, 0x22, 0xF7, 0xF8, = 0x32, 0xA2, 0x05, 0x2B,=0D + 0x53, 0xC5, 0x96, 0x98, 0x0D, 0x39, 0x02, 0xAD, 0x85, 0xF7, 0x18, 0x73, = 0x34, 0x12, 0x7F, 0x5A,=0D + 0xCB, 0xE1, 0xA2, 0xFB, 0x4E, 0x25, 0x81, 0xF0, 0x9F, 0x7A, 0x79, 0xDB, = 0x4F, 0x4B, 0x66, 0x44,=0D + 0x30, 0x8E, 0x0D, 0x57, 0x23, 0xD3, 0x7F, 0x60, 0x87, 0xDE, 0xD0, 0x4C, = 0x90, 0x90, 0x84, 0x64,=0D + 0x70, 0xE8, 0x15, 0x65, 0xCA, 0x18, 0xF8, 0x9A, 0xB6, 0x0C, 0x24, 0xF5, = 0xDF, 0xC3, 0x47, 0xE2,=0D + 0x7C, 0xAD, 0x91, 0x70, 0x6D, 0xF8, 0x43, 0xE9, 0xA1, 0x82, 0x02, 0x1D, = 0x30, 0x82, 0x02, 0x19,=0D + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x06, 0x31, = 0x82, 0x02, 0x0A, 0x30,=0D + 0x82, 0x02, 0x06, 0x02, 0x01, 0x01, 0x30, 0x81, 0x85, 0x30, 0x77, 0x31, = 0x0B, 0x30, 0x09, 0x06,=0D + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, = 0x06, 0x03, 0x55, 0x04,=0D + 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, = 0x6E, 0x31, 0x10, 0x30,=0D + 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, = 0x6F, 0x6E, 0x64, 0x31,=0D + 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, = 0x63, 0x72, 0x6F, 0x73,=0D + 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, = 0x69, 0x6F, 0x6E, 0x31,=0D + 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, = 0x63, 0x72, 0x6F, 0x73,=0D + 0x6F, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, = 0x6D, 0x70, 0x20, 0x50,=0D + 0x43, 0x41, 0x02, 0x0A, 0x61, 0x03, 0xDC, 0xF6, 0x00, 0x00, 0x00, 0x00, = 0x00, 0x0C, 0x30, 0x07,=0D + 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0xA0, 0x5D, 0x30, 0x18, 0x06, = 0x09, 0x2A, 0x86, 0x48,=0D + 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0B, 0x06, 0x09, 0x2A, 0x86, = 0x48, 0x86, 0xF7, 0x0D,=0D + 0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, = 0x0D, 0x01, 0x09, 0x05,=0D + 0x31, 0x0F, 0x17, 0x0D, 0x30, 0x39, 0x30, 0x34, 0x32, 0x32, 0x30, 0x35, = 0x35, 0x34, 0x33, 0x34,=0D + 0x5A, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, = 0x09, 0x04, 0x31, 0x16,=0D + 0x04, 0x14, 0x74, 0xD7, 0x54, 0xA0, 0xC0, 0x9E, 0x62, 0xF0, 0xDD, 0x92, = 0xDC, 0xD6, 0x96, 0x34,=0D + 0xA1, 0x0B, 0xF0, 0xD5, 0xB5, 0x3A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, = 0x48, 0x86, 0xF7, 0x0D,=0D + 0x01, 0x01, 0x05, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x8D, 0x16, 0xB5, = 0xC8, 0x3D, 0xBC, 0x8A,=0D + 0xB5, 0xC3, 0x23, 0xF3, 0x33, 0xB0, 0xFA, 0x75, 0xAD, 0xAC, 0x53, 0x0D, = 0x5C, 0xF4, 0xD9, 0xBE,=0D + 0x63, 0xEB, 0x0D, 0x6F, 0x69, 0x63, 0x91, 0xF8, 0x8E, 0x67, 0x03, 0xE1, = 0xC6, 0x2E, 0xCD, 0x9C,=0D + 0xEB, 0xDD, 0x9C, 0xCA, 0x65, 0x4A, 0xBB, 0xF2, 0xF4, 0x1C, 0x85, 0x44, = 0xD6, 0x58, 0x70, 0x2E,=0D + 0x3B, 0xFE, 0x97, 0xD0, 0xEC, 0x72, 0x77, 0x20, 0xA8, 0x20, 0xAC, 0xF0, = 0xED, 0x86, 0xC4, 0xFF,=0D + 0x3A, 0x3D, 0x40, 0xD9, 0xF6, 0xD5, 0x99, 0xBE, 0xCC, 0xD2, 0xD8, 0xBA, = 0x71, 0x51, 0x60, 0xAA,=0D + 0x72, 0x36, 0x13, 0x8B, 0x0A, 0xA9, 0xD6, 0xF5, 0x36, 0xE0, 0x44, 0x6B, = 0xC1, 0x44, 0x42, 0x43,=0D + 0x56, 0x1A, 0xD6, 0xF1, 0x5A, 0x98, 0xCC, 0xBA, 0xA9, 0x4C, 0xCF, 0xC9, = 0x86, 0xC3, 0x5B, 0x1C,=0D + 0xDF, 0x75, 0x22, 0x54, 0x6A, 0xF0, 0x18, 0x34, 0x0B, 0x29, 0xB0, 0x26, = 0x07, 0x59, 0xB6, 0x52,=0D + 0x7B, 0x69, 0x74, 0x11, 0x1B, 0xB8, 0x29, 0x19, 0x36, 0x0E, 0xB7, 0x65, = 0xCB, 0x87, 0x09, 0x9E,=0D + 0x03, 0x28, 0x6C, 0xDB, 0xA7, 0xFB, 0xDF, 0xC7, 0xF7, 0xCE, 0x0D, 0xC2, = 0xBA, 0xEA, 0x3C, 0xE8,=0D + 0x43, 0x1E, 0x7F, 0xF2, 0x64, 0xDA, 0x87, 0x89, 0xC0, 0xCD, 0x67, 0xE4, = 0x84, 0x9B, 0xA7, 0x77,=0D + 0xFA, 0x6C, 0x69, 0x19, 0x5B, 0xD1, 0xF7, 0xD9, 0x07, 0x91, 0x50, 0xDD, = 0x98, 0x26, 0x10, 0xE3,=0D + 0x2E, 0x39, 0x62, 0xF0, 0x56, 0xE9, 0xD9, 0x5C, 0x85, 0x67, 0x9B, 0x2F, = 0xDE, 0xD1, 0x00, 0x45,=0D + 0x0E, 0x99, 0x1F, 0xDF, 0x7E, 0xC9, 0x10, 0x56, 0xC7, 0x00, 0x6D, 0x5F, = 0x23, 0x57, 0x12, 0x84,=0D + 0xCD, 0xAC, 0x82, 0xAE, 0x39, 0x52, 0xA5, 0x19, 0x23, 0xA3, 0x6B, 0xE7, = 0x49, 0x8F, 0x86, 0x74,=0D + 0x46, 0x41, 0x2A, 0x0F, 0x3D, 0x29, 0xB7, 0xAE, 0x8C, 0x00=0D + };=0D +=0D +//=0D +// Sample Authenticode Data with SHA-256 hash algorithm.=0D +// This data should be retrieved from signed PE/COFF image according to SE= CURITY=0D +// directory in PE/COFF Header.=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithSha256[] =3D {=0D + 0x30, 0x82, 0x0e, 0xd1, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, = 0x01, 0x07, 0x02, 0xa0,=0D + 0x82, 0x0e, 0xc2, 0x30, 0x82, 0x0e, 0xbe, 0x02, 0x01, 0x01, 0x31, 0x0f, = 0x30, 0x0d, 0x06, 0x09,=0D + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, = 0x5c, 0x06, 0x0a, 0x2b,=0D + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x4e, 0x30, = 0x4c, 0x30, 0x17, 0x06,=0D + 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f, 0x30, = 0x09, 0x03, 0x01, 0x00,=0D + 0xa0, 0x04, 0xa2, 0x02, 0x80, 0x00, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, = 0x60, 0x86, 0x48, 0x01,=0D + 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20, 0x61, 0x82, 0xb7, = 0xf8, 0x8c, 0xff, 0xc2,=0D + 0xeb, 0x79, 0x6e, 0x9d, 0xa9, 0xdd, 0x39, 0x52, 0xdd, 0x36, 0xdd, 0xf1, = 0x43, 0x27, 0x58, 0x8c,=0D + 0xa7, 0xcc, 0xae, 0xde, 0xdd, 0x3c, 0x02, 0x12, 0x49, 0xa0, 0x82, 0x0c, = 0x0a, 0x30, 0x82, 0x05,=0D + 0xe5, 0x30, 0x82, 0x03, 0xcd, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0a, = 0x61, 0x03, 0x5f, 0x09,=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, = 0x48, 0x86, 0xf7, 0x0d,=0D + 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x81, 0x90, 0x31, 0x0b, 0x30, 0x09, = 0x06, 0x03, 0x55, 0x04,=0D + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, = 0x04, 0x08, 0x13, 0x0a,=0D + 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, = 0x30, 0x0e, 0x06, 0x03,=0D + 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, = 0x31, 0x1e, 0x30, 0x1c,=0D + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, = 0x73, 0x6f, 0x66, 0x74,=0D + 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, = 0x31, 0x3a, 0x30, 0x38,=0D + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x31, 0x4d, 0x69, 0x63, 0x72, 0x6f, = 0x73, 0x6f, 0x66, 0x74,=0D + 0x20, 0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6f, = 0x74, 0x20, 0x43, 0x65,=0D + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, = 0x74, 0x68, 0x6f, 0x72,=0D + 0x69, 0x74, 0x79, 0x20, 0x32, 0x30, 0x31, 0x30, 0x30, 0x1e, 0x17, 0x0d, = 0x31, 0x30, 0x30, 0x36,=0D + 0x32, 0x31, 0x32, 0x32, 0x35, 0x35, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x31, = 0x34, 0x30, 0x36, 0x32,=0D + 0x31, 0x32, 0x33, 0x30, 0x35, 0x30, 0x31, 0x5a, 0x30, 0x81, 0x81, 0x31, = 0x13, 0x30, 0x11, 0x06,=0D + 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, = 0x03, 0x63, 0x6f, 0x6d,=0D + 0x31, 0x19, 0x30, 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, = 0x2c, 0x64, 0x01, 0x19,=0D + 0x16, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31, = 0x14, 0x30, 0x12, 0x06,=0D + 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, = 0x04, 0x63, 0x6f, 0x72,=0D + 0x70, 0x31, 0x17, 0x30, 0x15, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, = 0xf2, 0x2c, 0x64, 0x01,=0D + 0x19, 0x16, 0x07, 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x20, = 0x30, 0x1e, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x13, 0x17, 0x4d, 0x53, 0x49, 0x54, 0x20, 0x54, 0x65, = 0x73, 0x74, 0x20, 0x43,=0D + 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x33, = 0x30, 0x82, 0x01, 0x22,=0D + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, = 0x01, 0x05, 0x00, 0x03,=0D + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, = 0x00, 0x9b, 0x71, 0xdd,=0D + 0x0d, 0x32, 0x2d, 0x08, 0xe8, 0x2d, 0x01, 0x90, 0x9c, 0xdf, 0x9f, 0x32, = 0x58, 0x8b, 0x47, 0xd0,=0D + 0xfe, 0x9a, 0x6b, 0x40, 0x5e, 0x76, 0xa2, 0x10, 0x00, 0x0e, 0xd2, 0x8f, = 0xce, 0xa1, 0x5f, 0x42,=0D + 0xa7, 0x0b, 0x5e, 0x83, 0xc2, 0xe9, 0x06, 0xa6, 0x0a, 0xb4, 0x3d, 0x30, = 0x50, 0xdb, 0x35, 0x43,=0D + 0x2c, 0xd3, 0xc3, 0xc6, 0x3c, 0xc9, 0xb5, 0x88, 0xfc, 0x0b, 0xe6, 0xa3, = 0x71, 0x47, 0xce, 0xfd,=0D + 0x88, 0x62, 0xa4, 0x25, 0xe2, 0x4e, 0x1b, 0x79, 0x3d, 0xe3, 0xbf, 0x8b, = 0x84, 0x2d, 0x64, 0x25,=0D + 0xa5, 0xfa, 0x8e, 0x30, 0xae, 0xe3, 0x34, 0x7d, 0x27, 0xf3, 0x5e, 0xf4, = 0x05, 0x60, 0xc6, 0x0f,=0D + 0x1a, 0x1b, 0x9e, 0xaf, 0x21, 0x37, 0xa9, 0xd9, 0xb6, 0xb7, 0x6a, 0x54, = 0x4b, 0x5e, 0xa0, 0x75,=0D + 0xb5, 0x9a, 0xc4, 0xb6, 0xbe, 0x28, 0xe3, 0x3b, 0xf7, 0x5a, 0x08, 0x77, = 0xd9, 0x39, 0x4a, 0x2a,=0D + 0x7a, 0xf8, 0xf4, 0xfe, 0xe8, 0x12, 0x54, 0x41, 0x11, 0x55, 0xc8, 0xc7, = 0x98, 0x3e, 0x64, 0xa5,=0D + 0xbb, 0xda, 0x6b, 0xa4, 0xaa, 0x29, 0x8c, 0x9f, 0x27, 0x55, 0x25, 0xe7, = 0xfd, 0x31, 0x70, 0x60,=0D + 0x1d, 0xd3, 0xc4, 0xf2, 0xb9, 0xef, 0x92, 0x4a, 0x9f, 0xc8, 0x4c, 0x93, = 0xe7, 0x19, 0xa8, 0x4e,=0D + 0xbc, 0xe3, 0x62, 0xf4, 0xe0, 0x6e, 0xec, 0x45, 0x6e, 0x61, 0x4e, 0xad, = 0x58, 0xe0, 0xf0, 0xea,=0D + 0xf7, 0x74, 0x2c, 0xdf, 0x1b, 0xf6, 0x43, 0x3c, 0x84, 0xc2, 0x8c, 0x0b, = 0xb4, 0xbd, 0x4a, 0x57,=0D + 0xa6, 0x0c, 0x4e, 0x9e, 0x73, 0x43, 0x5f, 0x2d, 0xaf, 0x22, 0xf4, 0xa6, = 0xfd, 0x5a, 0x87, 0xb9,=0D + 0xbe, 0x6f, 0x9e, 0x1d, 0x99, 0xc8, 0xdf, 0x95, 0xc2, 0x02, 0xad, 0x7d, = 0x4a, 0xf3, 0xba, 0x5d,=0D + 0xe8, 0x7b, 0x6e, 0x57, 0xe5, 0x3a, 0x02, 0xf8, 0xd3, 0x01, 0x15, 0xae, = 0x4f, 0x02, 0x03, 0x01,=0D + 0x00, 0x01, 0xa3, 0x82, 0x01, 0x4c, 0x30, 0x82, 0x01, 0x48, 0x30, 0x10, = 0x06, 0x09, 0x2b, 0x06,=0D + 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, = 0x30, 0x1d, 0x06, 0x03,=0D + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x4e, 0xfe, 0x61, 0x39, 0x6f, = 0xca, 0xc5, 0x64, 0xe0,=0D + 0x20, 0xb6, 0xda, 0xc1, 0xb9, 0x52, 0x0e, 0xca, 0xdf, 0x8e, 0xfe, 0x30, = 0x19, 0x06, 0x09, 0x2b,=0D + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, 0x02, 0x04, 0x0c, 0x1e, 0x0a, = 0x00, 0x53, 0x00, 0x75,=0D + 0x00, 0x62, 0x00, 0x43, 0x00, 0x41, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, = 0x0f, 0x04, 0x04, 0x03,=0D + 0x02, 0x01, 0x86, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, = 0xff, 0x04, 0x08, 0x30,=0D + 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1f, 0x06, 0x03, 0x55, = 0x1d, 0x23, 0x04, 0x18,=0D + 0x30, 0x16, 0x80, 0x14, 0xa3, 0x01, 0x04, 0x7e, 0x30, 0x88, 0x33, 0xeb, = 0xb9, 0x31, 0x9c, 0xca,=0D + 0xeb, 0x85, 0x76, 0x67, 0xfc, 0x65, 0xb4, 0xd1, 0x30, 0x59, 0x06, 0x03, = 0x55, 0x1d, 0x1f, 0x04,=0D + 0x52, 0x30, 0x50, 0x30, 0x4e, 0xa0, 0x4c, 0xa0, 0x4a, 0x86, 0x48, 0x68, = 0x74, 0x74, 0x70, 0x3a,=0D + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, = 0x6f, 0x66, 0x74, 0x2e,=0D + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, = 0x70, 0x72, 0x6f, 0x64,=0D + 0x75, 0x63, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x54, 0x65, 0x73, 0x52, = 0x6f, 0x6f, 0x43, 0x65,=0D + 0x72, 0x41, 0x75, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x2d, 0x30, 0x36, = 0x2d, 0x31, 0x37, 0x2e,=0D + 0x63, 0x72, 0x6c, 0x30, 0x5d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, = 0x07, 0x01, 0x01, 0x04,=0D + 0x51, 0x30, 0x4f, 0x30, 0x4d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, = 0x07, 0x30, 0x02, 0x86,=0D + 0x41, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, = 0x6d, 0x69, 0x63, 0x72,=0D + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, = 0x69, 0x2f, 0x63, 0x65,=0D + 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x54, 0x65, 0x73, 0x52, 0x6f, = 0x6f, 0x43, 0x65, 0x72,=0D + 0x41, 0x75, 0x74, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x2d, = 0x31, 0x37, 0x2e, 0x63,=0D + 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, = 0x01, 0x01, 0x0b, 0x05,=0D + 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x91, 0x2d, 0x11, 0x36, 0xd1, 0x2c, = 0x5e, 0x21, 0x77, 0x62,=0D + 0x1a, 0xa1, 0xcf, 0x9a, 0x7e, 0x62, 0x2d, 0xc9, 0x90, 0xb9, 0x0e, 0x3d, = 0x71, 0x0d, 0xa0, 0x4a,=0D + 0x48, 0xad, 0xe1, 0xd6, 0xb0, 0x73, 0x4a, 0x51, 0x4b, 0x4c, 0xb2, 0x6b, = 0x88, 0x0a, 0x5a, 0xb7,=0D + 0xe9, 0x55, 0x67, 0x43, 0x8b, 0xf1, 0x9d, 0xcc, 0x52, 0x03, 0xaf, 0xac, = 0x85, 0xe9, 0xd3, 0x75,=0D + 0xce, 0xe5, 0x6f, 0x8b, 0x3c, 0x80, 0x81, 0xab, 0xd1, 0xd1, 0x73, 0x0d, = 0x6b, 0xb0, 0x51, 0xb8,=0D + 0xa2, 0x5e, 0x0c, 0x09, 0xe5, 0xa6, 0xbc, 0x54, 0x49, 0xe5, 0x54, 0x38, = 0x5a, 0xb7, 0x43, 0xd2,=0D + 0x75, 0x34, 0x52, 0xdd, 0x35, 0x79, 0x95, 0x98, 0xd5, 0x3c, 0xc6, 0xda, = 0x46, 0xb2, 0xd8, 0xa0,=0D + 0xa7, 0xcc, 0x30, 0x31, 0x0f, 0x4b, 0xeb, 0xb7, 0x02, 0xab, 0x2b, 0x38, = 0xd2, 0xb7, 0x27, 0xc2,=0D + 0xc7, 0x0d, 0x62, 0xa4, 0xc0, 0x48, 0xf4, 0x1a, 0x48, 0x79, 0x7d, 0xe1, = 0x31, 0xa4, 0x5d, 0x19,=0D + 0xd0, 0x18, 0x17, 0x00, 0xca, 0xe3, 0x5d, 0x0b, 0xc1, 0x85, 0x7f, 0xf1, = 0xbe, 0xd3, 0xcb, 0x97,=0D + 0xf4, 0x1b, 0x62, 0x0f, 0xd7, 0x14, 0x38, 0x8d, 0xb2, 0x2e, 0x98, 0xd4, = 0x41, 0x6a, 0xb0, 0xb5,=0D + 0x84, 0xee, 0xd8, 0x2c, 0x2d, 0x13, 0xfc, 0x50, 0x1d, 0x9a, 0x6f, 0x31, = 0x87, 0x1c, 0xe0, 0xd0,=0D + 0xd0, 0xd3, 0x24, 0x52, 0xdf, 0x12, 0x8d, 0xfb, 0xf7, 0x7f, 0x33, 0x04, = 0x17, 0x7a, 0x8b, 0xe3,=0D + 0xbd, 0x7c, 0x1e, 0xa2, 0x2a, 0x91, 0x76, 0xd9, 0xfc, 0x43, 0x17, 0xa7, = 0x0a, 0xa1, 0xd9, 0xc6,=0D + 0x3c, 0x3a, 0x42, 0xed, 0xb7, 0x12, 0xcd, 0x9e, 0xdd, 0xfe, 0x91, 0x9d, = 0x98, 0xb5, 0x35, 0xe8,=0D + 0x94, 0xdd, 0x9a, 0xce, 0xd4, 0xf4, 0xac, 0xca, 0xa6, 0xcd, 0x59, 0x3d, = 0xde, 0x44, 0xbf, 0x0e,=0D + 0x82, 0xe5, 0xdf, 0x5c, 0xe3, 0x49, 0xcb, 0x01, 0xa0, 0x7f, 0x7b, 0xe2, = 0x25, 0x21, 0xab, 0x95,=0D + 0x50, 0x1e, 0x9f, 0xea, 0x77, 0x56, 0x47, 0x74, 0x73, 0xf2, 0x25, 0x1b, = 0x0e, 0x36, 0xb9, 0xa2,=0D + 0x57, 0xbf, 0x2c, 0x57, 0xbc, 0xe4, 0xfb, 0x88, 0xb1, 0x83, 0x56, 0xd8, = 0x3c, 0xe0, 0x7c, 0xfd,=0D + 0x11, 0x9f, 0xde, 0xe1, 0xb7, 0xd4, 0xc6, 0x23, 0xaf, 0xae, 0xc7, 0x5e, = 0x4f, 0xc5, 0x23, 0x74,=0D + 0x98, 0x38, 0x74, 0x9d, 0x0d, 0x0d, 0x6d, 0xf4, 0xde, 0x28, 0x44, 0x41, = 0xd8, 0x22, 0x68, 0xe7,=0D + 0x57, 0xa7, 0x66, 0x74, 0xb5, 0xc3, 0x31, 0x24, 0xe2, 0x7c, 0xd5, 0x52, = 0x5d, 0x8a, 0xd2, 0x4e,=0D + 0x14, 0xbb, 0x08, 0xd3, 0x1a, 0x31, 0x12, 0x04, 0x58, 0x9b, 0x3a, 0x99, = 0x78, 0x93, 0x51, 0x3f,=0D + 0x0b, 0x85, 0xce, 0xde, 0x09, 0x58, 0xf9, 0x96, 0x1b, 0x91, 0x11, 0xa0, = 0x68, 0x53, 0x33, 0xcb,=0D + 0xbe, 0x08, 0x89, 0xcc, 0x95, 0x55, 0xae, 0x06, 0x78, 0x27, 0x99, 0xa2, = 0x56, 0xef, 0xae, 0x95,=0D + 0x0a, 0x7f, 0x0d, 0xeb, 0x43, 0x0c, 0xc6, 0x9e, 0x3f, 0x80, 0xbb, 0xc4, = 0x74, 0x03, 0x9d, 0xb8,=0D + 0x1a, 0xaa, 0xbc, 0xcb, 0x1e, 0x03, 0xfb, 0xd8, 0x49, 0x89, 0x9d, 0x20, = 0xaa, 0x25, 0x4b, 0x47,=0D + 0x67, 0xf4, 0xa7, 0x0d, 0x8d, 0x76, 0x30, 0xc6, 0x48, 0xce, 0xdd, 0x8d, = 0xfa, 0xbe, 0xda, 0xb4,=0D + 0xeb, 0x3d, 0xd8, 0x0c, 0x3b, 0x15, 0x9a, 0xd1, 0x83, 0x85, 0xe5, 0xe3, = 0x92, 0xaa, 0x3b, 0xad,=0D + 0x34, 0x0c, 0x39, 0xf1, 0x7f, 0x75, 0xae, 0xe8, 0x70, 0xb0, 0xfd, 0xf2, = 0x8e, 0x29, 0xda, 0xdc,=0D + 0x09, 0x4f, 0x8a, 0x7b, 0x63, 0xbe, 0x1e, 0x8a, 0xc3, 0x58, 0xd1, 0x03, = 0xbe, 0x37, 0xe9, 0xed,=0D + 0x32, 0x26, 0xa8, 0x0c, 0xfe, 0xed, 0x12, 0xa7, 0x63, 0x04, 0xb3, 0x92, = 0x97, 0xd9, 0x46, 0xa3,=0D + 0x33, 0x33, 0x9c, 0x5b, 0xbc, 0x54, 0x30, 0x82, 0x06, 0x1d, 0x30, 0x82, = 0x05, 0x05, 0xa0, 0x03,=0D + 0x02, 0x01, 0x02, 0x02, 0x0a, 0x4e, 0x30, 0xa5, 0xbb, 0x00, 0x00, 0x00, = 0x12, 0x7b, 0xf2, 0x30,=0D + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, = 0x05, 0x00, 0x30, 0x81,=0D + 0x81, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, = 0xf2, 0x2c, 0x64, 0x01,=0D + 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0a, = 0x09, 0x92, 0x26, 0x89,=0D + 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6d, 0x69, 0x63, 0x72, = 0x6f, 0x73, 0x6f, 0x66,=0D + 0x74, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, = 0xf2, 0x2c, 0x64, 0x01,=0D + 0x19, 0x16, 0x04, 0x63, 0x6f, 0x72, 0x70, 0x31, 0x17, 0x30, 0x15, 0x06, = 0x0a, 0x09, 0x92, 0x26,=0D + 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x07, 0x72, 0x65, 0x64, = 0x6d, 0x6f, 0x6e, 0x64,=0D + 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x4d, = 0x53, 0x49, 0x54, 0x20,=0D + 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, = 0x6e, 0x20, 0x43, 0x41,=0D + 0x20, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x31, 0x30, 0x34, 0x32, 0x31, = 0x30, 0x33, 0x33, 0x33,=0D + 0x34, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x34, 0x32, 0x30, 0x30, = 0x33, 0x33, 0x33, 0x34,=0D + 0x39, 0x5a, 0x30, 0x70, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, = 0x06, 0x13, 0x02, 0x55,=0D + 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, = 0x57, 0x61, 0x73, 0x68,=0D + 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, = 0x55, 0x04, 0x07, 0x13,=0D + 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, = 0x06, 0x03, 0x55, 0x04,=0D + 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, = 0x20, 0x43, 0x6f, 0x72,=0D + 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1a, 0x30, 0x18, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x13, 0x11, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, = 0x20, 0x57, 0x69, 0x6e,=0D + 0x64, 0x6f, 0x77, 0x73, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, = 0x2a, 0x86, 0x48, 0x86,=0D + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, = 0x30, 0x82, 0x01, 0x0a,=0D + 0x02, 0x82, 0x01, 0x01, 0x00, 0xca, 0x9f, 0xcb, 0x8c, 0x5e, 0x61, 0x19, = 0xb5, 0x37, 0x72, 0xd1,=0D + 0xe2, 0x88, 0x1f, 0x37, 0x56, 0xce, 0xa8, 0x88, 0x05, 0x3e, 0xe8, 0xa6, = 0x8d, 0xfd, 0x0b, 0x30,=0D + 0x63, 0x54, 0x89, 0x1d, 0xda, 0x11, 0x70, 0x5a, 0x06, 0x00, 0x86, 0xd7, = 0x7f, 0xe6, 0x21, 0x70,=0D + 0x41, 0x81, 0x26, 0x4b, 0x6e, 0xc7, 0x02, 0xe2, 0xbf, 0x61, 0x45, 0x04, = 0x2f, 0x45, 0xbc, 0xd2,=0D + 0x0d, 0xf6, 0xac, 0xda, 0x91, 0x6d, 0xc6, 0x60, 0xad, 0xb3, 0x0b, 0x32, = 0xe5, 0x13, 0x95, 0x96,=0D + 0x02, 0x4e, 0x10, 0xad, 0x2e, 0x6c, 0xb0, 0xc7, 0x65, 0x6d, 0xea, 0x89, = 0x91, 0x67, 0x73, 0x5d,=0D + 0x05, 0x12, 0x9f, 0x95, 0x74, 0x6a, 0x6d, 0xb0, 0x6a, 0xd8, 0x94, 0x9b, = 0xb0, 0x70, 0x79, 0xb0,=0D + 0x85, 0x42, 0xe7, 0xd7, 0x19, 0xc4, 0x33, 0xfd, 0xac, 0xbe, 0x2b, 0xd5, = 0x7e, 0x5a, 0xa9, 0xc7,=0D + 0xa7, 0x68, 0x53, 0xed, 0xaa, 0x51, 0x2a, 0x6b, 0xac, 0x5a, 0xd7, 0x6e, = 0xcf, 0x68, 0x60, 0x90,=0D + 0xc7, 0xda, 0xd1, 0xe7, 0xf2, 0x53, 0x4a, 0x01, 0xaf, 0xe8, 0xb1, 0x29, = 0x91, 0xab, 0x4c, 0x58,=0D + 0x64, 0xe6, 0xb6, 0xcc, 0xdc, 0x0f, 0x43, 0xf2, 0x87, 0x15, 0xf8, 0x73, = 0x06, 0xb8, 0x1f, 0xaa,=0D + 0xf2, 0x66, 0x49, 0x82, 0xca, 0xf0, 0xdd, 0x4c, 0x7c, 0xd5, 0xe7, 0x59, = 0xb7, 0xc6, 0xd3, 0x81,=0D + 0x29, 0x5c, 0xce, 0xe4, 0xfd, 0xf7, 0xeb, 0x58, 0x6b, 0x50, 0x79, 0x72, = 0x83, 0x4d, 0x59, 0xec,=0D + 0xd1, 0xd2, 0xfc, 0x3a, 0x10, 0xc5, 0x7a, 0xba, 0x90, 0xea, 0xfd, 0x54, = 0xc7, 0xc8, 0x58, 0x2d,=0D + 0x84, 0xe5, 0x5b, 0x51, 0x98, 0x2c, 0x36, 0x7c, 0x42, 0x2b, 0xb1, 0x62, = 0x4b, 0x0f, 0xf9, 0x72,=0D + 0xd3, 0x3f, 0x99, 0xc8, 0xb4, 0x02, 0x17, 0x39, 0xe5, 0x0b, 0xf2, 0x5d, = 0x2d, 0x7f, 0x23, 0x41,=0D + 0xcd, 0x58, 0x3a, 0x25, 0x75, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, = 0x02, 0xa5, 0x30, 0x82,=0D + 0x02, 0xa1, 0x30, 0x3d, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, = 0x37, 0x15, 0x07, 0x04,=0D + 0x30, 0x30, 0x2e, 0x06, 0x26, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, = 0x15, 0x08, 0x83, 0xcf,=0D + 0x89, 0x4d, 0xad, 0xf2, 0x02, 0x85, 0xa1, 0x9f, 0x0c, 0x82, 0xfa, 0xca, = 0x7d, 0x81, 0xe1, 0xfb,=0D + 0x74, 0x81, 0x4f, 0x84, 0x9a, 0xf1, 0x69, 0x85, 0xa1, 0xad, 0x1d, 0x02, = 0x01, 0x64, 0x02, 0x01,=0D + 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, = 0x07, 0x80, 0x30, 0x29,=0D + 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x0a, 0x04, = 0x1c, 0x30, 0x1a, 0x30,=0D + 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x0a, 0x03, = 0x06, 0x30, 0x0a, 0x06,=0D + 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x1f, 0x06, = 0x03, 0x55, 0x1d, 0x25,=0D + 0x04, 0x18, 0x30, 0x16, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, = 0x37, 0x0a, 0x03, 0x06,=0D + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x1d, = 0x06, 0x03, 0x55, 0x1d,=0D + 0x0e, 0x04, 0x16, 0x04, 0x14, 0xc9, 0x5a, 0xb3, 0x11, 0x02, 0x66, 0x71, = 0x8c, 0x5b, 0x06, 0x80,=0D + 0x8a, 0x6d, 0x4f, 0x5b, 0xf2, 0xb5, 0x67, 0x45, 0xb5, 0x30, 0x30, 0x06, = 0x03, 0x55, 0x1d, 0x11,=0D + 0x04, 0x29, 0x30, 0x27, 0xa0, 0x25, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, = 0x01, 0x82, 0x37, 0x14,=0D + 0x02, 0x03, 0xa0, 0x17, 0x0c, 0x15, 0x77, 0x69, 0x6e, 0x63, 0x62, 0x6c, = 0x64, 0x40, 0x6d, 0x69,=0D + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, = 0x1f, 0x06, 0x03, 0x55,=0D + 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x4e, 0xfe, 0x61, 0x39, = 0x6f, 0xca, 0xc5, 0x64,=0D + 0xe0, 0x20, 0xb6, 0xda, 0xc1, 0xb9, 0x52, 0x0e, 0xca, 0xdf, 0x8e, 0xfe, = 0x30, 0x81, 0xe8, 0x06,=0D + 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x81, 0xe0, 0x30, 0x81, 0xdd, 0x30, 0x81, = 0xda, 0xa0, 0x81, 0xd7,=0D + 0xa0, 0x81, 0xd4, 0x86, 0x36, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, = 0x63, 0x6f, 0x72, 0x70,=0D + 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, = 0x25, 0x32, 0x30, 0x54,=0D + 0x65, 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, = 0x67, 0x6e, 0x25, 0x32,=0D + 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x86, = 0x4d, 0x68, 0x74, 0x74,=0D + 0x70, 0x3a, 0x2f, 0x2f, 0x6d, 0x73, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, = 0x63, 0x72, 0x6f, 0x73,=0D + 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, = 0x6d, 0x73, 0x63, 0x6f,=0D + 0x72, 0x70, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25, = 0x32, 0x30, 0x54, 0x65,=0D + 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, = 0x6e, 0x25, 0x32, 0x30,=0D + 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x86, 0x4b, = 0x68, 0x74, 0x74, 0x70,=0D + 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, = 0x73, 0x6f, 0x66, 0x74,=0D + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x6d, 0x73, 0x63, = 0x6f, 0x72, 0x70, 0x2f,=0D + 0x63, 0x72, 0x6c, 0x2f, 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54, = 0x65, 0x73, 0x74, 0x25,=0D + 0x32, 0x30, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32, = 0x30, 0x43, 0x41, 0x25,=0D + 0x32, 0x30, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x81, 0xa9, 0x06, 0x08, = 0x2b, 0x06, 0x01, 0x05,=0D + 0x05, 0x07, 0x01, 0x01, 0x04, 0x81, 0x9c, 0x30, 0x81, 0x99, 0x30, 0x42, = 0x06, 0x08, 0x2b, 0x06,=0D + 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x36, 0x68, 0x74, 0x74, 0x70, = 0x3a, 0x2f, 0x2f, 0x63,=0D + 0x6f, 0x72, 0x70, 0x70, 0x6b, 0x69, 0x2f, 0x61, 0x69, 0x61, 0x2f, 0x4d, = 0x53, 0x49, 0x54, 0x25,=0D + 0x32, 0x30, 0x54, 0x65, 0x73, 0x74, 0x25, 0x32, 0x30, 0x43, 0x6f, 0x64, = 0x65, 0x53, 0x69, 0x67,=0D + 0x6e, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x33, 0x2e, 0x63, = 0x72, 0x74, 0x30, 0x53,=0D + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x47, = 0x68, 0x74, 0x74, 0x70,=0D + 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, = 0x73, 0x6f, 0x66, 0x74,=0D + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x6d, 0x73, 0x63, = 0x6f, 0x72, 0x70, 0x2f,=0D + 0x4d, 0x53, 0x49, 0x54, 0x25, 0x32, 0x30, 0x54, 0x65, 0x73, 0x74, 0x25, = 0x32, 0x30, 0x43, 0x6f,=0D + 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, = 0x32, 0x30, 0x33, 0x2e,=0D + 0x63, 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, = 0x0d, 0x01, 0x01, 0x0b,=0D + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x97, 0x6d, 0x52, 0x46, 0x65, = 0x08, 0x60, 0x01, 0x12,=0D + 0x7a, 0x26, 0xaa, 0xd9, 0xc3, 0x15, 0xec, 0xc6, 0xae, 0x0b, 0x75, 0xe4, = 0xd5, 0xe0, 0x31, 0xf6,=0D + 0xda, 0xc0, 0xb1, 0x1b, 0x7b, 0x8a, 0x07, 0xda, 0x2f, 0x82, 0x4a, 0x21, = 0x89, 0xe6, 0x61, 0x97,=0D + 0xe4, 0x3a, 0x38, 0xd8, 0x0a, 0x26, 0x4e, 0x83, 0x54, 0xbf, 0x32, 0xe3, = 0x64, 0x36, 0x61, 0x40,=0D + 0x75, 0x55, 0xf1, 0xaa, 0x34, 0xb2, 0xd3, 0x45, 0x8d, 0x79, 0x9a, 0x93, = 0x0b, 0x9f, 0x5a, 0xb3,=0D + 0x5b, 0xcf, 0x0d, 0x28, 0x00, 0x46, 0x68, 0xe7, 0x36, 0xc9, 0xe6, 0xd2, = 0x03, 0x2d, 0x1c, 0x2b,=0D + 0x24, 0x79, 0x32, 0xfb, 0xd8, 0x43, 0xb4, 0x0e, 0xd0, 0x37, 0x3b, 0x5e, = 0x15, 0xbf, 0x8a, 0x00,=0D + 0x56, 0x00, 0x95, 0x00, 0xd4, 0x71, 0x09, 0xe1, 0x84, 0xfa, 0x6e, 0xc5, = 0x75, 0x2f, 0xe1, 0x83,=0D + 0x7b, 0x66, 0xe2, 0x22, 0x75, 0x23, 0x6a, 0xf3, 0x83, 0xfc, 0x94, 0xf8, = 0x51, 0x6d, 0x40, 0x6d,=0D + 0x20, 0x7e, 0xb0, 0xe9, 0xac, 0xa8, 0x28, 0x04, 0xa0, 0x1a, 0x3c, 0x88, = 0x7e, 0x7e, 0x3b, 0x96,=0D + 0xe9, 0xd0, 0x4b, 0xfa, 0xfa, 0x34, 0x4a, 0x4f, 0xe7, 0xe8, 0x76, 0x16, = 0x20, 0xc0, 0x10, 0xca,=0D + 0x1f, 0x7a, 0xde, 0x54, 0xfd, 0xb7, 0xf0, 0xea, 0x8f, 0xe2, 0xcb, 0xa5, = 0x1c, 0x58, 0x18, 0x57,=0D + 0x6c, 0x7d, 0x06, 0xde, 0x8c, 0xbd, 0x45, 0xd7, 0x28, 0x86, 0x13, 0x42, = 0xaa, 0x4a, 0x9a, 0x50,=0D + 0xc5, 0x76, 0x7f, 0x63, 0x99, 0xd0, 0x90, 0x92, 0xd6, 0xc9, 0x21, 0xf2, = 0xb8, 0x66, 0x9c, 0x96,=0D + 0x53, 0xd2, 0xe5, 0xc4, 0xdd, 0x3a, 0x7c, 0x06, 0xae, 0xb1, 0x7a, 0xb4, = 0x36, 0x04, 0x9d, 0xe6,=0D + 0x2a, 0xe4, 0x6a, 0x56, 0xd0, 0x9a, 0x98, 0xa2, 0xbf, 0x6f, 0x43, 0xf2, = 0xb0, 0x5b, 0xfd, 0xd9,=0D + 0xfa, 0x08, 0x17, 0xc8, 0x3c, 0x61, 0xf1, 0x31, 0x82, 0x02, 0x3a, 0x30, = 0x82, 0x02, 0x36, 0x02,=0D + 0x01, 0x01, 0x30, 0x81, 0x90, 0x30, 0x81, 0x81, 0x31, 0x13, 0x30, 0x11, = 0x06, 0x0a, 0x09, 0x92,=0D + 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6f, = 0x6d, 0x31, 0x19, 0x30,=0D + 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, = 0x19, 0x16, 0x09, 0x6d,=0D + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31, 0x14, 0x30, 0x12, = 0x06, 0x0a, 0x09, 0x92,=0D + 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x04, 0x63, 0x6f, = 0x72, 0x70, 0x31, 0x17,=0D + 0x30, 0x15, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, = 0x01, 0x19, 0x16, 0x07,=0D + 0x72, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x20, 0x30, 0x1e, 0x06, = 0x03, 0x55, 0x04, 0x03,=0D + 0x13, 0x17, 0x4d, 0x53, 0x49, 0x54, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, = 0x43, 0x6f, 0x64, 0x65,=0D + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x41, 0x20, 0x33, 0x02, 0x0a, 0x4e, = 0x30, 0xa5, 0xbb, 0x00,=0D + 0x00, 0x00, 0x12, 0x7b, 0xf2, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, = 0x01, 0x65, 0x03, 0x04,=0D + 0x02, 0x01, 0x05, 0x00, 0xa0, 0x7c, 0x30, 0x10, 0x06, 0x0a, 0x2b, 0x06, = 0x01, 0x04, 0x01, 0x82,=0D + 0x37, 0x02, 0x01, 0x0c, 0x31, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09, = 0x2a, 0x86, 0x48, 0x86,=0D + 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x02, 0x01, 0x04, 0x30, 0x1c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, = 0x82, 0x37, 0x02, 0x01,=0D + 0x0b, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, = 0x82, 0x37, 0x02, 0x01,=0D + 0x15, 0x30, 0x2f, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, = 0x09, 0x04, 0x31, 0x22,=0D + 0x04, 0x20, 0x25, 0x60, 0x6e, 0xc8, 0x66, 0x72, 0x73, 0xb0, 0x71, 0x7b, = 0x82, 0x09, 0x8c, 0x27,=0D + 0xe8, 0xb1, 0x4a, 0x36, 0x1c, 0x81, 0x36, 0xb4, 0x1b, 0x44, 0xdf, 0x09, = 0x82, 0x8b, 0xf9, 0xb6,=0D + 0x1c, 0x65, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, = 0x01, 0x01, 0x01, 0x05,=0D + 0x00, 0x04, 0x82, 0x01, 0x00, 0x01, 0xb7, 0x8e, 0x46, 0x9b, 0xb4, 0x18, = 0xcd, 0xf6, 0x39, 0x8f,=0D + 0x82, 0x79, 0xbc, 0x96, 0x55, 0x7e, 0xd7, 0x84, 0x8f, 0x18, 0x37, 0x48, = 0x4e, 0x8f, 0x25, 0x6f,=0D + 0x1a, 0x6c, 0x60, 0xe9, 0xc1, 0x5f, 0x65, 0xec, 0xb0, 0x4b, 0x35, 0x98, = 0x8a, 0x31, 0x6b, 0xfd,=0D + 0xa9, 0xd2, 0x28, 0xa7, 0x00, 0xd0, 0x5c, 0x97, 0x2e, 0x3d, 0x19, 0x96, = 0x75, 0xc2, 0x9a, 0xa7,=0D + 0x4e, 0x2d, 0x3c, 0x6a, 0xd7, 0xd1, 0x81, 0x96, 0x2e, 0x06, 0x54, 0x82, = 0xe9, 0x87, 0xa2, 0x53,=0D + 0x63, 0x6a, 0xda, 0x72, 0xa3, 0x41, 0x4f, 0x14, 0xc5, 0x3d, 0x41, 0x7d, = 0xbb, 0xd7, 0x29, 0x11,=0D + 0x96, 0x14, 0x60, 0x5f, 0xb9, 0xd3, 0x47, 0xb6, 0x23, 0x97, 0x64, 0xf6, = 0xe1, 0xac, 0x6c, 0x4d,=0D + 0xa9, 0x58, 0xc2, 0x35, 0xbf, 0x02, 0xee, 0x29, 0xd4, 0x52, 0x80, 0x25, = 0xa1, 0x7e, 0xbe, 0x21,=0D + 0xcd, 0x04, 0x3c, 0x4d, 0x7d, 0xdb, 0x9b, 0x13, 0x71, 0x35, 0x13, 0x8d, = 0x16, 0x0a, 0x40, 0x7b,=0D + 0x63, 0x45, 0x00, 0x11, 0xc5, 0x3e, 0xc8, 0x21, 0x37, 0xc9, 0xbc, 0xd2, = 0x0f, 0x82, 0x21, 0xf9,=0D + 0x2f, 0xde, 0xb3, 0x1c, 0x9b, 0x67, 0xb6, 0x5a, 0xb8, 0x74, 0xa0, 0x30, = 0xd8, 0x86, 0x1f, 0xd9,=0D + 0x08, 0x45, 0xf9, 0x6b, 0xe8, 0x57, 0xda, 0xb7, 0x14, 0xf7, 0x63, 0x97, = 0xfd, 0x87, 0x61, 0x1e,=0D + 0x95, 0x6f, 0xba, 0x53, 0x40, 0x5e, 0x9f, 0x49, 0xf6, 0xe7, 0x3c, 0x59, = 0xd9, 0x78, 0x08, 0x4c,=0D + 0xa6, 0x4a, 0xa2, 0x05, 0x42, 0xa7, 0x77, 0xbc, 0x44, 0x7b, 0xed, 0xdb, = 0x77, 0x63, 0x4c, 0x63,=0D + 0x22, 0xb6, 0x17, 0x3f, 0x4f, 0x33, 0xed, 0xa6, 0xd9, 0x0f, 0x74, 0xfa, = 0x97, 0x8d, 0x98, 0x55,=0D + 0x42, 0x14, 0x76, 0xd4, 0x89, 0x07, 0xf2, 0x30, 0x5a, 0x27, 0x96, 0x1b, = 0x92, 0x70, 0x5a, 0x83,=0D + 0x89, 0x0f, 0xdb, 0x47, 0x7a, 0x00, 0x00, 0x00, 0x0a=0D + };=0D +=0D +//=0D +// Sample root certificate for code signing.=0D +// A trusted certificate with self-signing, will be used to construct the = certificate chains for=0D +// authority checking.=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TestRootCert1[] =3D {=0D + 0x30, 0x82, 0x05, 0x99, 0x30, 0x82, 0x03, 0x81, 0xA0, 0x03, 0x02, 0x01, = 0x02, 0x02, 0x10, 0x79,=0D + 0xAD, 0x16, 0xA1, 0x4A, 0xA0, 0xA5, 0xAD, 0x4C, 0x73, 0x58, 0xF4, 0x07, = 0x13, 0x2E, 0x65, 0x30,=0D + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, = 0x05, 0x00, 0x30, 0x5F,=0D + 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, = 0x2C, 0x64, 0x01, 0x19,=0D + 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, 0x09, = 0x92, 0x26, 0x89, 0x93,=0D + 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, 0x6F, = 0x73, 0x6F, 0x66, 0x74,=0D + 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4D, = 0x69, 0x63, 0x72, 0x6F,=0D + 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, = 0x72, 0x74, 0x69, 0x66,=0D + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, = 0x69, 0x74, 0x79, 0x30,=0D + 0x1E, 0x17, 0x0D, 0x30, 0x31, 0x30, 0x35, 0x30, 0x39, 0x32, 0x33, 0x31, = 0x39, 0x32, 0x32, 0x5A,=0D + 0x17, 0x0D, 0x32, 0x31, 0x30, 0x35, 0x30, 0x39, 0x32, 0x33, 0x32, 0x38, = 0x31, 0x33, 0x5A, 0x30,=0D + 0x5F, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0A, 0x09, 0x92, 0x26, 0x89, 0x93, = 0xF2, 0x2C, 0x64, 0x01,=0D + 0x19, 0x16, 0x03, 0x63, 0x6F, 0x6D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0A, = 0x09, 0x92, 0x26, 0x89,=0D + 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19, 0x16, 0x09, 0x6D, 0x69, 0x63, 0x72, = 0x6F, 0x73, 0x6F, 0x66,=0D + 0x74, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, = 0x4D, 0x69, 0x63, 0x72,=0D + 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, = 0x65, 0x72, 0x74, 0x69,=0D + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, = 0x72, 0x69, 0x74, 0x79,=0D + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, = 0xF7, 0x0D, 0x01, 0x01,=0D + 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00, 0x30, 0x82, 0x02, 0x0A, = 0x02, 0x82, 0x02, 0x01,=0D + 0x00, 0xF3, 0x5D, 0xFA, 0x80, 0x67, 0xD4, 0x5A, 0xA7, 0xA9, 0x0C, 0x2C, = 0x90, 0x20, 0xD0, 0x35,=0D + 0x08, 0x3C, 0x75, 0x84, 0xCD, 0xB7, 0x07, 0x89, 0x9C, 0x89, 0xDA, 0xDE, = 0xCE, 0xC3, 0x60, 0xFA,=0D + 0x91, 0x68, 0x5A, 0x9E, 0x94, 0x71, 0x29, 0x18, 0x76, 0x7C, 0xC2, 0xE0, = 0xC8, 0x25, 0x76, 0x94,=0D + 0x0E, 0x58, 0xFA, 0x04, 0x34, 0x36, 0xE6, 0xDF, 0xAF, 0xF7, 0x80, 0xBA, = 0xE9, 0x58, 0x0B, 0x2B,=0D + 0x93, 0xE5, 0x9D, 0x05, 0xE3, 0x77, 0x22, 0x91, 0xF7, 0x34, 0x64, 0x3C, = 0x22, 0x91, 0x1D, 0x5E,=0D + 0xE1, 0x09, 0x90, 0xBC, 0x14, 0xFE, 0xFC, 0x75, 0x58, 0x19, 0xE1, 0x79, = 0xB7, 0x07, 0x92, 0xA3,=0D + 0xAE, 0x88, 0x59, 0x08, 0xD8, 0x9F, 0x07, 0xCA, 0x03, 0x58, 0xFC, 0x68, = 0x29, 0x6D, 0x32, 0xD7,=0D + 0xD2, 0xA8, 0xCB, 0x4B, 0xFC, 0xE1, 0x0B, 0x48, 0x32, 0x4F, 0xE6, 0xEB, = 0xB8, 0xAD, 0x4F, 0xE4,=0D + 0x5C, 0x6F, 0x13, 0x94, 0x99, 0xDB, 0x95, 0xD5, 0x75, 0xDB, 0xA8, 0x1A, = 0xB7, 0x94, 0x91, 0xB4,=0D + 0x77, 0x5B, 0xF5, 0x48, 0x0C, 0x8F, 0x6A, 0x79, 0x7D, 0x14, 0x70, 0x04, = 0x7D, 0x6D, 0xAF, 0x90,=0D + 0xF5, 0xDA, 0x70, 0xD8, 0x47, 0xB7, 0xBF, 0x9B, 0x2F, 0x6C, 0xE7, 0x05, = 0xB7, 0xE1, 0x11, 0x60,=0D + 0xAC, 0x79, 0x91, 0x14, 0x7C, 0xC5, 0xD6, 0xA6, 0xE4, 0xE1, 0x7E, 0xD5, = 0xC3, 0x7E, 0xE5, 0x92,=0D + 0xD2, 0x3C, 0x00, 0xB5, 0x36, 0x82, 0xDE, 0x79, 0xE1, 0x6D, 0xF3, 0xB5, = 0x6E, 0xF8, 0x9F, 0x33,=0D + 0xC9, 0xCB, 0x52, 0x7D, 0x73, 0x98, 0x36, 0xDB, 0x8B, 0xA1, 0x6B, 0xA2, = 0x95, 0x97, 0x9B, 0xA3,=0D + 0xDE, 0xC2, 0x4D, 0x26, 0xFF, 0x06, 0x96, 0x67, 0x25, 0x06, 0xC8, 0xE7, = 0xAC, 0xE4, 0xEE, 0x12,=0D + 0x33, 0x95, 0x31, 0x99, 0xC8, 0x35, 0x08, 0x4E, 0x34, 0xCA, 0x79, 0x53, = 0xD5, 0xB5, 0xBE, 0x63,=0D + 0x32, 0x59, 0x40, 0x36, 0xC0, 0xA5, 0x4E, 0x04, 0x4D, 0x3D, 0xDB, 0x5B, = 0x07, 0x33, 0xE4, 0x58,=0D + 0xBF, 0xEF, 0x3F, 0x53, 0x64, 0xD8, 0x42, 0x59, 0x35, 0x57, 0xFD, 0x0F, = 0x45, 0x7C, 0x24, 0x04,=0D + 0x4D, 0x9E, 0xD6, 0x38, 0x74, 0x11, 0x97, 0x22, 0x90, 0xCE, 0x68, 0x44, = 0x74, 0x92, 0x6F, 0xD5,=0D + 0x4B, 0x6F, 0xB0, 0x86, 0xE3, 0xC7, 0x36, 0x42, 0xA0, 0xD0, 0xFC, 0xC1, = 0xC0, 0x5A, 0xF9, 0xA3,=0D + 0x61, 0xB9, 0x30, 0x47, 0x71, 0x96, 0x0A, 0x16, 0xB0, 0x91, 0xC0, 0x42, = 0x95, 0xEF, 0x10, 0x7F,=0D + 0x28, 0x6A, 0xE3, 0x2A, 0x1F, 0xB1, 0xE4, 0xCD, 0x03, 0x3F, 0x77, 0x71, = 0x04, 0xC7, 0x20, 0xFC,=0D + 0x49, 0x0F, 0x1D, 0x45, 0x88, 0xA4, 0xD7, 0xCB, 0x7E, 0x88, 0xAD, 0x8E, = 0x2D, 0xEC, 0x45, 0xDB,=0D + 0xC4, 0x51, 0x04, 0xC9, 0x2A, 0xFC, 0xEC, 0x86, 0x9E, 0x9A, 0x11, 0x97, = 0x5B, 0xDE, 0xCE, 0x53,=0D + 0x88, 0xE6, 0xE2, 0xB7, 0xFD, 0xAC, 0x95, 0xC2, 0x28, 0x40, 0xDB, 0xEF, = 0x04, 0x90, 0xDF, 0x81,=0D + 0x33, 0x39, 0xD9, 0xB2, 0x45, 0xA5, 0x23, 0x87, 0x06, 0xA5, 0x55, 0x89, = 0x31, 0xBB, 0x06, 0x2D,=0D + 0x60, 0x0E, 0x41, 0x18, 0x7D, 0x1F, 0x2E, 0xB5, 0x97, 0xCB, 0x11, 0xEB, = 0x15, 0xD5, 0x24, 0xA5,=0D + 0x94, 0xEF, 0x15, 0x14, 0x89, 0xFD, 0x4B, 0x73, 0xFA, 0x32, 0x5B, 0xFC, = 0xD1, 0x33, 0x00, 0xF9,=0D + 0x59, 0x62, 0x70, 0x07, 0x32, 0xEA, 0x2E, 0xAB, 0x40, 0x2D, 0x7B, 0xCA, = 0xDD, 0x21, 0x67, 0x1B,=0D + 0x30, 0x99, 0x8F, 0x16, 0xAA, 0x23, 0xA8, 0x41, 0xD1, 0xB0, 0x6E, 0x11, = 0x9B, 0x36, 0xC4, 0xDE,=0D + 0x40, 0x74, 0x9C, 0xE1, 0x58, 0x65, 0xC1, 0x60, 0x1E, 0x7A, 0x5B, 0x38, = 0xC8, 0x8F, 0xBB, 0x04,=0D + 0x26, 0x7C, 0xD4, 0x16, 0x40, 0xE5, 0xB6, 0x6B, 0x6C, 0xAA, 0x86, 0xFD, = 0x00, 0xBF, 0xCE, 0xC1,=0D + 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x51, 0x30, 0x4F, 0x30, 0x0B, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0xC6, 0x30, 0x0F, 0x06, 0x03, 0x55, = 0x1D, 0x13, 0x01, 0x01,=0D + 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1D, 0x06, 0x03, = 0x55, 0x1D, 0x0E, 0x04,=0D + 0x16, 0x04, 0x14, 0x0E, 0xAC, 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, 0xE5, = 0x25, 0x13, 0xFC, 0x2A,=0D + 0xE1, 0x0A, 0x53, 0x95, 0x59, 0xE4, 0xA4, 0x30, 0x10, 0x06, 0x09, 0x2B, = 0x06, 0x01, 0x04, 0x01,=0D + 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, 0x00, 0x30, 0x0D, 0x06, = 0x09, 0x2A, 0x86, 0x48,=0D + 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, = 0x00, 0xC5, 0x11, 0x4D,=0D + 0x03, 0x3A, 0x60, 0xDD, 0x5D, 0x52, 0x11, 0x77, 0x8F, 0xB2, 0xBB, 0x36, = 0xC8, 0xB2, 0x05, 0xBF,=0D + 0xB4, 0xB7, 0xA8, 0xD8, 0x20, 0x9D, 0x5C, 0x13, 0x03, 0xB6, 0x1C, 0x22, = 0xFA, 0x06, 0x13, 0x35,=0D + 0xB6, 0xC8, 0x63, 0xD4, 0x9A, 0x47, 0x6F, 0x26, 0x57, 0xD2, 0x55, 0xF1, = 0x04, 0xB1, 0x26, 0x5F,=0D + 0xD6, 0xA9, 0x50, 0x68, 0xA0, 0xBC, 0xD2, 0xB8, 0x6E, 0xCC, 0xC3, 0xE9, = 0xAC, 0xDF, 0x19, 0xCD,=0D + 0x78, 0xAC, 0x59, 0x74, 0xAC, 0x66, 0x34, 0x36, 0xC4, 0x1B, 0x3E, 0x6C, = 0x38, 0x4C, 0x33, 0x0E,=0D + 0x30, 0x12, 0x0D, 0xA3, 0x26, 0xFE, 0x51, 0x53, 0x00, 0xFF, 0xAF, 0x5A, = 0x4E, 0x84, 0x0D, 0x0F,=0D + 0x1F, 0xE4, 0x6D, 0x05, 0x2E, 0x4E, 0x85, 0x4B, 0x8D, 0x6C, 0x33, 0x6F, = 0x54, 0xD2, 0x64, 0xAB,=0D + 0xBF, 0x50, 0xAF, 0x7D, 0x7A, 0x39, 0xA0, 0x37, 0xED, 0x63, 0x03, 0x0F, = 0xFC, 0x13, 0x06, 0xCE,=0D + 0x16, 0x36, 0xD4, 0x54, 0x3B, 0x95, 0x1B, 0x51, 0x62, 0x3A, 0xE5, 0x4D, = 0x17, 0xD4, 0x05, 0x39,=0D + 0x92, 0x9A, 0x27, 0xA8, 0x5B, 0xAA, 0xBD, 0xEC, 0xBB, 0xBE, 0xE3, 0x20, = 0x89, 0x60, 0x71, 0x6C,=0D + 0x56, 0xB3, 0xA5, 0x13, 0xD0, 0x6D, 0x0E, 0x23, 0x7E, 0x95, 0x03, 0xED, = 0x68, 0x3D, 0xF2, 0xD8,=0D + 0x63, 0xB8, 0x6B, 0x4D, 0xB6, 0xE8, 0x30, 0xB5, 0xE1, 0xCA, 0x94, 0x4B, = 0xF7, 0xA2, 0xAA, 0x5D,=0D + 0x99, 0x30, 0xB2, 0x3D, 0xA7, 0xC2, 0x51, 0x6C, 0x28, 0x20, 0x01, 0x24, = 0x27, 0x2B, 0x4B, 0x00,=0D + 0xB7, 0x9D, 0x11, 0x6B, 0x70, 0xBE, 0xB2, 0x10, 0x82, 0xBC, 0x0C, 0x9B, = 0x68, 0xD0, 0x8D, 0x3B,=0D + 0x24, 0x87, 0xAA, 0x99, 0x28, 0x72, 0x9D, 0x33, 0x5F, 0x59, 0x90, 0xBD, = 0xF5, 0xDE, 0x93, 0x9E,=0D + 0x3A, 0x62, 0x5A, 0x34, 0x39, 0xE2, 0x88, 0x55, 0x1D, 0xB9, 0x06, 0xB0, = 0xC1, 0x89, 0x6B, 0x2D,=0D + 0xD7, 0x69, 0xC3, 0x19, 0x12, 0x36, 0x84, 0xD0, 0xC9, 0xA0, 0xDA, 0xFF, = 0x2F, 0x69, 0x78, 0xB2,=0D + 0xE5, 0x7A, 0xDA, 0xEB, 0xD7, 0x0C, 0xC0, 0xF7, 0xBD, 0x63, 0x17, 0xB8, = 0x39, 0x13, 0x38, 0xA2,=0D + 0x36, 0x5B, 0x7B, 0xF2, 0x85, 0x56, 0x6A, 0x1D, 0x64, 0x62, 0xC1, 0x38, = 0xE2, 0xAA, 0xBF, 0x51,=0D + 0x66, 0xA2, 0x94, 0xF5, 0x12, 0x9C, 0x66, 0x22, 0x10, 0x6B, 0xF2, 0xB7, = 0x30, 0x92, 0x2D, 0xF2,=0D + 0x29, 0xF0, 0x3D, 0x3B, 0x14, 0x43, 0x68, 0xA2, 0xF1, 0x9C, 0x29, 0x37, = 0xCB, 0xCE, 0x38, 0x20,=0D + 0x25, 0x6D, 0x7C, 0x67, 0xF3, 0x7E, 0x24, 0x12, 0x24, 0x03, 0x08, 0x81, = 0x47, 0xEC, 0xA5, 0x9E,=0D + 0x97, 0xF5, 0x18, 0xD7, 0xCF, 0xBB, 0xD5, 0xEF, 0x76, 0x96, 0xEF, 0xFD, = 0xCE, 0xDB, 0x56, 0x9D,=0D + 0x95, 0xA0, 0x42, 0xF9, 0x97, 0x58, 0xE1, 0xD7, 0x31, 0x22, 0xD3, 0x5F, = 0x59, 0xE6, 0x3E, 0x6E,=0D + 0x22, 0x00, 0xEA, 0x43, 0x84, 0xB6, 0x25, 0xDB, 0xD9, 0xF3, 0x08, 0x56, = 0x68, 0xC0, 0x64, 0x6B,=0D + 0x1D, 0x7C, 0xEC, 0xB6, 0x93, 0xA2, 0x62, 0x57, 0x6E, 0x2E, 0xD8, 0xE7, = 0x58, 0x8F, 0xC4, 0x31,=0D + 0x49, 0x26, 0xDD, 0xDE, 0x29, 0x35, 0x87, 0xF5, 0x30, 0x71, 0x70, 0x5B, = 0x14, 0x3C, 0x69, 0xBD,=0D + 0x89, 0x12, 0x7D, 0xEB, 0x2E, 0xA3, 0xFE, 0xD8, 0x7F, 0x9E, 0x82, 0x5A, = 0x52, 0x0A, 0x2B, 0xC1,=0D + 0x43, 0x2B, 0xD9, 0x30, 0x88, 0x9F, 0xC8, 0x10, 0xFB, 0x89, 0x8D, 0xE6, = 0xA1, 0x85, 0x75, 0x33,=0D + 0x7E, 0x6C, 0x9E, 0xDB, 0x73, 0x13, 0x64, 0x62, 0x69, 0xA5, 0x2F, 0x7D, = 0xCA, 0x96, 0x6D, 0x9F,=0D + 0xF8, 0x04, 0x4D, 0x30, 0x92, 0x3D, 0x6E, 0x21, 0x14, 0x21, 0xC9, 0x3D, = 0xE0, 0xC3, 0xFD, 0x8A,=0D + 0x6B, 0x9D, 0x4A, 0xFD, 0xD1, 0xA1, 0x9D, 0x99, 0x43, 0x77, 0x3F, 0xB0, = 0xDA=0D +};=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TestRootCert2[] =3D {=0D + 0x30, 0x82, 0x05, 0xfd, 0x30, 0x82, 0x03, 0xe5, 0xa0, 0x03, 0x02, 0x01, = 0x02, 0x02, 0x10, 0x74,=0D + 0x45, 0xc8, 0x78, 0x4e, 0x0c, 0xc9, 0x96, 0x4a, 0xb4, 0x2f, 0xbc, 0xda, = 0x29, 0xe1, 0xbc, 0x30,=0D + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, = 0x05, 0x00, 0x30, 0x81,=0D + 0x90, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, = 0x55, 0x53, 0x31, 0x13,=0D + 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, = 0x68, 0x69, 0x6e, 0x67,=0D + 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, = 0x13, 0x07, 0x52, 0x65,=0D + 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, = 0x04, 0x0a, 0x13, 0x15,=0D + 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, = 0x72, 0x70, 0x6f, 0x72,=0D + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3a, 0x30, 0x38, 0x06, 0x03, 0x55, = 0x04, 0x03, 0x13, 0x31,=0D + 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x54, 0x65, = 0x73, 0x74, 0x69, 0x6e,=0D + 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, = 0x66, 0x69, 0x63, 0x61,=0D + 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, = 0x20, 0x32, 0x30, 0x31,=0D + 0x30, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x36, 0x31, 0x37, 0x32, = 0x30, 0x35, 0x38, 0x30,=0D + 0x32, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30, 0x36, 0x31, 0x37, 0x32, 0x31, = 0x30, 0x34, 0x31, 0x31,=0D + 0x5a, 0x30, 0x81, 0x90, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, = 0x06, 0x13, 0x02, 0x55,=0D + 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, = 0x57, 0x61, 0x73, 0x68,=0D + 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, = 0x55, 0x04, 0x07, 0x13,=0D + 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, = 0x06, 0x03, 0x55, 0x04,=0D + 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, = 0x20, 0x43, 0x6f, 0x72,=0D + 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3a, 0x30, 0x38, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x13, 0x31, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, = 0x20, 0x54, 0x65, 0x73,=0D + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, = 0x72, 0x74, 0x69, 0x66,=0D + 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, = 0x69, 0x74, 0x79, 0x20,=0D + 0x32, 0x30, 0x31, 0x30, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, = 0x2a, 0x86, 0x48, 0x86,=0D + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, = 0x30, 0x82, 0x02, 0x0a,=0D + 0x02, 0x82, 0x02, 0x01, 0x00, 0x95, 0xe3, 0xa8, 0xc1, 0xb9, 0x9c, 0x26, = 0x54, 0xb0, 0x99, 0xef,=0D + 0x26, 0x1f, 0xac, 0x1e, 0xc7, 0x30, 0x80, 0xbb, 0xf5, 0x3f, 0xf2, 0xe4, = 0xbb, 0xf8, 0xfe, 0x06,=0D + 0x6a, 0x0a, 0xa6, 0x88, 0xbc, 0xb4, 0x8c, 0x45, 0xe0, 0x70, 0x55, 0x19, = 0x88, 0xb4, 0x05, 0xcb,=0D + 0xb5, 0xc1, 0xa1, 0xfa, 0xd4, 0x7c, 0xc2, 0x42, 0x53, 0x07, 0x9c, 0x54, = 0x56, 0xa8, 0x97, 0xe0,=0D + 0x94, 0x69, 0xbe, 0x13, 0x24, 0xef, 0xe5, 0x8a, 0x29, 0x9c, 0xa6, 0xd0, = 0x2b, 0x2f, 0x8a, 0xa6,=0D + 0xe8, 0x79, 0x44, 0x2e, 0x8b, 0xea, 0xc9, 0xbe, 0xb8, 0x54, 0x86, 0x53, = 0xbe, 0x07, 0x24, 0x34,=0D + 0x54, 0x15, 0x22, 0x20, 0x01, 0x7b, 0x8a, 0x46, 0xfb, 0xd2, 0x91, 0x07, = 0x95, 0x09, 0xb0, 0x56,=0D + 0x11, 0xcc, 0x76, 0xb2, 0xd0, 0x1f, 0x44, 0x79, 0x52, 0x34, 0x28, 0xec, = 0x4f, 0x49, 0xc2, 0xcb,=0D + 0x61, 0xd3, 0x86, 0xdc, 0xe4, 0xa3, 0x7e, 0x55, 0x9e, 0x9f, 0xee, 0x10, = 0x6f, 0xcf, 0xe1, 0x3d,=0D + 0xf8, 0xb7, 0x84, 0x79, 0xa2, 0x3b, 0x8d, 0x1c, 0xb0, 0x81, 0x7c, 0xe4, = 0x44, 0x07, 0xe4, 0xce,=0D + 0x46, 0xb0, 0x98, 0x83, 0x8d, 0x87, 0x8f, 0xe5, 0xf5, 0xae, 0x40, 0x7a, = 0xf1, 0xed, 0x3d, 0x9b,=0D + 0x9a, 0x7c, 0x4a, 0xd1, 0xb9, 0xc3, 0x94, 0x05, 0x7b, 0xdc, 0xda, 0xb8, = 0xce, 0xdc, 0x1e, 0x6c,=0D + 0xcf, 0xd9, 0x9e, 0x37, 0xef, 0xc3, 0x5a, 0x36, 0x7b, 0x90, 0x86, 0x45, = 0xdc, 0xf6, 0x2e, 0xca,=0D + 0xdd, 0xee, 0xde, 0x27, 0xd9, 0x74, 0x9a, 0x69, 0xf5, 0xd9, 0x5d, 0x09, = 0x2d, 0x45, 0x41, 0xcc,=0D + 0xb7, 0xc2, 0x82, 0xd4, 0x2a, 0x8c, 0x16, 0x25, 0x92, 0x97, 0x3d, 0x94, = 0x4e, 0x89, 0x33, 0x7e,=0D + 0x5b, 0x03, 0x54, 0xcd, 0xb0, 0x83, 0xa0, 0x8e, 0x41, 0xb7, 0x87, 0x8d, = 0xd9, 0x05, 0x63, 0x52,=0D + 0xf6, 0xee, 0xe6, 0x4e, 0x13, 0x9d, 0x54, 0xcd, 0x49, 0xfe, 0xe3, 0x8b, = 0x3b, 0x50, 0x9b, 0x48,=0D + 0xbb, 0xb2, 0xe5, 0x92, 0xd4, 0xab, 0xa0, 0xc5, 0x10, 0xaf, 0x3e, 0xb1, = 0x45, 0x21, 0x34, 0x90,=0D + 0xdc, 0xad, 0xb9, 0xf7, 0xfe, 0x21, 0xae, 0xee, 0x50, 0x58, 0x7a, 0x3a, = 0xe5, 0xaa, 0xd8, 0xe3,=0D + 0x82, 0xd6, 0xcf, 0x6d, 0x4d, 0xc9, 0x15, 0xac, 0x9c, 0x31, 0x17, 0xa5, = 0x16, 0xa7, 0x42, 0xf6,=0D + 0xda, 0x12, 0x78, 0xa7, 0x66, 0x90, 0xec, 0xfc, 0xcd, 0x01, 0x63, 0xff, = 0xf0, 0x0e, 0xba, 0xe1,=0D + 0xcd, 0xf0, 0xdb, 0x6b, 0x9a, 0x0f, 0xf6, 0x0f, 0x04, 0x01, 0x09, 0xbc, = 0x9f, 0xce, 0xb7, 0x6c,=0D + 0x51, 0x70, 0x57, 0x08, 0x1b, 0xff, 0x79, 0x9a, 0x52, 0x5d, 0xba, 0xac, = 0x14, 0xe5, 0x3b, 0x67,=0D + 0xcf, 0x2c, 0x52, 0xde, 0x27, 0x9a, 0x34, 0x03, 0x6e, 0x25, 0x48, 0xb0, = 0x19, 0x74, 0xfc, 0x4d,=0D + 0x98, 0xc2, 0x4b, 0x8c, 0x92, 0xe1, 0x88, 0xae, 0x48, 0x2a, 0xab, 0xab, = 0xcd, 0x14, 0x4d, 0xb6,=0D + 0x61, 0x0e, 0xa1, 0x09, 0x8f, 0x2c, 0xdb, 0x45, 0xaf, 0x7d, 0x3b, 0x81, = 0x56, 0x08, 0xc9, 0x3b,=0D + 0x41, 0xb7, 0x64, 0x9f, 0x5d, 0x2e, 0x12, 0x7f, 0xb9, 0x69, 0x29, 0x1f, = 0x52, 0x45, 0x4a, 0x23,=0D + 0xc6, 0xaf, 0xb6, 0xb2, 0x38, 0x72, 0x9d, 0x08, 0x33, 0xff, 0xd0, 0xcf, = 0x89, 0xb6, 0xea, 0x6e,=0D + 0x85, 0x44, 0x94, 0x3e, 0x91, 0x59, 0xeb, 0xef, 0x9e, 0xbd, 0x9b, 0x9c, = 0x1a, 0x47, 0x03, 0x4e,=0D + 0xa2, 0x17, 0x96, 0xfa, 0x62, 0x0b, 0xe8, 0x53, 0xb6, 0x4e, 0xe3, 0xe8, = 0x2a, 0x73, 0x59, 0xe2,=0D + 0x13, 0xb8, 0xf8, 0x5a, 0x7e, 0xc6, 0xe2, 0x0a, 0xdd, 0x4a, 0x43, 0xcc, = 0xc3, 0x77, 0x3b, 0x7a,=0D + 0x31, 0x04, 0x0a, 0xc1, 0x84, 0x96, 0x3a, 0x63, 0x6e, 0x1a, 0x3e, 0x0a, = 0x0c, 0x25, 0xb8, 0x7e,=0D + 0xb5, 0x52, 0x0c, 0xb9, 0xab, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x51, = 0x30, 0x4f, 0x30, 0x0b,=0D + 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, = 0x0f, 0x06, 0x03, 0x55,=0D + 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, = 0x30, 0x1d, 0x06, 0x03,=0D + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xa3, 0x01, 0x04, 0x7e, 0x30, = 0x88, 0x33, 0xeb, 0xb9,=0D + 0x31, 0x9c, 0xca, 0xeb, 0x85, 0x76, 0x67, 0xfc, 0x65, 0xb4, 0xd1, 0x30, = 0x10, 0x06, 0x09, 0x2b,=0D + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, 0x02, 0x01, = 0x00, 0x30, 0x0d, 0x06,=0D + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, = 0x03, 0x82, 0x02, 0x01,=0D + 0x00, 0x49, 0x8b, 0xc1, 0xfc, 0x4f, 0xe8, 0xe4, 0x2d, 0x67, 0x92, 0x9a, = 0x76, 0x05, 0xba, 0xd1,=0D + 0xbc, 0x98, 0xe4, 0x2b, 0xba, 0x1f, 0x66, 0x5f, 0x66, 0x23, 0xcf, 0x1c, = 0x27, 0xeb, 0xb4, 0xaa,=0D + 0xdd, 0xa0, 0x17, 0x20, 0x55, 0x72, 0x33, 0xb1, 0x76, 0xde, 0xc9, 0x6d, = 0x0d, 0x3c, 0x2d, 0x0a,=0D + 0x08, 0x24, 0x2d, 0xec, 0x38, 0x96, 0x7a, 0x83, 0xf1, 0x27, 0x50, 0x3c, = 0x86, 0x09, 0xdd, 0x0d,=0D + 0x41, 0xce, 0xaa, 0x5e, 0xf3, 0x8f, 0x7a, 0x3e, 0x3e, 0xf1, 0xf0, 0xba, = 0x8b, 0x72, 0xdd, 0x36,=0D + 0xa1, 0x69, 0x05, 0x5b, 0x7c, 0xec, 0xe7, 0x70, 0x63, 0x8d, 0x1d, 0x6e, = 0xc0, 0xfd, 0x3a, 0x03,=0D + 0xf1, 0x10, 0x3e, 0x90, 0xd7, 0x7b, 0x7a, 0xdc, 0xea, 0x60, 0xec, 0x2f, = 0x53, 0xfd, 0x19, 0x1d,=0D + 0x3a, 0xa1, 0x74, 0x08, 0xc2, 0x7b, 0x3c, 0xe0, 0x50, 0xac, 0x21, 0xd7, = 0xb6, 0xdd, 0xdd, 0x3c,=0D + 0x44, 0x1b, 0xf7, 0xf3, 0x44, 0x3e, 0x6c, 0x96, 0xe0, 0xc0, 0x9f, 0xe6, = 0xef, 0xdd, 0xdd, 0xb1,=0D + 0xa6, 0x68, 0x61, 0x6c, 0x5e, 0x9e, 0xf9, 0xff, 0x9a, 0x06, 0xa4, 0x6a, = 0xcd, 0x9e, 0x75, 0x43,=0D + 0x89, 0x9b, 0xcb, 0x85, 0xf6, 0xdc, 0x0c, 0x46, 0x4a, 0x8c, 0x9b, 0xac, = 0x11, 0xa6, 0x63, 0x45,=0D + 0xfb, 0xfc, 0xde, 0x20, 0xee, 0xce, 0x67, 0x9f, 0x3d, 0xd0, 0x93, 0xdb, = 0x39, 0xfb, 0xea, 0x5e,=0D + 0x4b, 0xfc, 0xd6, 0x20, 0xf1, 0x95, 0x36, 0x08, 0x8c, 0xb2, 0xb3, 0xa1, = 0x97, 0x1b, 0x41, 0x19,=0D + 0xb0, 0xac, 0xfe, 0xe2, 0xd5, 0xab, 0x7d, 0xd9, 0x26, 0xd4, 0xdc, 0xbd, = 0x1f, 0x38, 0xc0, 0xe3,=0D + 0x86, 0xdf, 0x24, 0xe7, 0xf5, 0x3e, 0x09, 0xca, 0x4d, 0xa1, 0xba, 0x16, = 0xc3, 0x4a, 0xb1, 0xfc,=0D + 0x72, 0x98, 0xcf, 0x0e, 0x92, 0xfa, 0x57, 0x45, 0xe9, 0x48, 0x4d, 0xc6, = 0xa2, 0x7c, 0x3b, 0x72,=0D + 0x63, 0xac, 0x4e, 0xf4, 0x74, 0xe9, 0x2b, 0x57, 0xac, 0xab, 0x32, 0x88, = 0x0b, 0xa9, 0x10, 0x67,=0D + 0x53, 0x7e, 0xd2, 0x62, 0xd2, 0xfa, 0x68, 0xe8, 0x9d, 0x5b, 0xae, 0xcd, = 0xe0, 0xe5, 0xe2, 0x06,=0D + 0x96, 0x0c, 0x34, 0x32, 0xf6, 0xbc, 0x25, 0xad, 0x98, 0xf3, 0x32, 0x60, = 0xbe, 0x14, 0xd3, 0x78,=0D + 0xd1, 0x10, 0x6f, 0xff, 0x32, 0xe3, 0x9e, 0x3d, 0x88, 0xda, 0xb3, 0x32, = 0x0a, 0xcf, 0x20, 0x65,=0D + 0x47, 0x78, 0xaa, 0xa5, 0x4b, 0x87, 0x6a, 0x83, 0xdc, 0x1a, 0x5a, 0x2a, = 0xdf, 0x70, 0x61, 0xaf,=0D + 0x35, 0x32, 0xe0, 0x59, 0xa1, 0x9f, 0x0b, 0x14, 0x7a, 0xaa, 0xab, 0x42, = 0x0b, 0x6b, 0xff, 0xfb,=0D + 0x34, 0xcb, 0x9d, 0x96, 0xd7, 0x26, 0x2a, 0x13, 0x3b, 0xe3, 0xdf, 0x11, = 0xe6, 0x86, 0x7d, 0x0d,=0D + 0x09, 0x11, 0x93, 0x4b, 0xa4, 0xf6, 0xd2, 0x07, 0xc2, 0xcd, 0xc8, 0xbe, = 0xf5, 0x67, 0xf7, 0xae,=0D + 0x05, 0xce, 0x16, 0xfe, 0x90, 0xc9, 0x4a, 0x98, 0x1b, 0x24, 0x69, 0x78, = 0x90, 0xf9, 0x34, 0x8e,=0D + 0x37, 0xe8, 0x6e, 0x1d, 0xdc, 0xcf, 0x4f, 0xe7, 0xd2, 0x64, 0x40, 0x1d, = 0xc4, 0x30, 0xba, 0xd5,=0D + 0x08, 0x88, 0x67, 0x4b, 0x0f, 0xb8, 0xe5, 0x59, 0xe9, 0x18, 0xd8, 0x0c, = 0x60, 0x68, 0xae, 0x7f,=0D + 0xea, 0x91, 0x55, 0xbe, 0xeb, 0xf1, 0xa7, 0x8e, 0xd8, 0x5d, 0x50, 0x3e, = 0xbf, 0xd5, 0x69, 0x57,=0D + 0x95, 0x8f, 0xa7, 0xff, 0xe4, 0x09, 0x3f, 0x08, 0x80, 0x97, 0x32, 0x42, = 0xb8, 0x82, 0x43, 0x82,=0D + 0x6f, 0x8b, 0x0b, 0x93, 0xda, 0x19, 0xbf, 0x63, 0x4e, 0x5f, 0x9f, 0xed, = 0x2c, 0x22, 0xb6, 0x20,=0D + 0x5f, 0x70, 0x44, 0xfa, 0x89, 0x59, 0x93, 0xb0, 0x7b, 0x12, 0x0f, 0x5e, = 0x62, 0x62, 0x51, 0x11,=0D + 0xbd, 0xba, 0x5a, 0xd0, 0xce, 0xa1, 0xb6, 0xef, 0x80, 0x20, 0xe6, 0x73, = 0x4b, 0x11, 0x06, 0x56,=0D + 0xe2, 0x0a=0D + };=0D +=0D +//=0D +// OID ASN.1 Value for Hash Algorithms=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 HashOidValue[] =3D {=0D + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, // OBJ_md5=0D + 0x2B, 0x0E, 0x03, 0x02, 0x1A, // OBJ_sha1=0D + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, // OBJ_sha224=0D + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, // OBJ_sha256=0D + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, // OBJ_sha384=0D + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, // OBJ_sha512=0D + };=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyAuthenticodeVerify (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D +=0D + //=0D + // Sample Code: Demonstrate how to check the Hash algorithm in PE/COFF A= uthenticode.=0D + // According to PKCS#7 Definition:=0D + // SignedData ::=3D SEQUENCE {=0D + // version Version,=0D + // digestAlgorithms DigestAlgorithmIdentifiers,=0D + // contentInfo ContentInfo,=0D + // .... }=0D + // The DigestAlgorithmIdentifiers can be used to determine the hash a= lgorithm in PE/COFF hashing=0D + // This field has the fixed offset (+32) in final Authenticode ASN.1 = data.=0D + //=0D + if (CompareMem (AuthenticodeWithSha1 + 32, &HashOidValue[8], 5) =3D=3D 0= ) {=0D + //=0D + // Verify Authenticode signature.=0D + // The PeHash value should be calculated following MSFT's Authenticode= Specification.=0D + //=0D + Status =3D AuthenticodeVerify (=0D + AuthenticodeWithSha1,=0D + sizeof (AuthenticodeWithSha1),=0D + TestRootCert1,=0D + sizeof (TestRootCert1),=0D + PeSha1Hash,=0D + SHA1_DIGEST_SIZE=0D + );=0D + UT_ASSERT_TRUE (Status);=0D + }=0D +=0D + if (CompareMem (AuthenticodeWithSha256 + 32, &HashOidValue[22], 9) =3D= =3D 0) {=0D + Status =3D AuthenticodeVerify (=0D + AuthenticodeWithSha256,=0D + sizeof (AuthenticodeWithSha256),=0D + TestRootCert2,=0D + sizeof (TestRootCert2),=0D + PeSha256Hash,=0D + SHA256_DIGEST_SIZE=0D + );=0D + UT_ASSERT_TRUE (Status);=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mAuthenticodeTest[] =3D {=0D + //=0D + // -----Description--------------------------------------Class--------= --------------Function-----------------Pre---Post--Context=0D + //=0D + {"TestVerifyAuthenticodeVerify()", "CryptoPkg.BaseCryptLib.Auth= enticode", TestVerifyAuthenticodeVerify, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mAuthenticodeTestNum =3D ARRAY_SIZE(mAuthenticodeTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BaseCryptLibUnitT= ests.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=0D + This is defines the tests that will run on BaseCryptLib=0D +=0D + Copyright (c) Microsoft Corporation.
=0D + SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +#include "TestBaseCryptLib.h"=0D +=0D +SUITE_DESC mSuiteDesc[] =3D {=0D + //=0D + // Title--------------------------Package-------------------Sup--Tdn--= --TestNum------------TestDesc=0D + //=0D + {"EKU verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mPkcs7EkuTestNum, mPkcs7EkuTest},=0D + {"HASH verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mHashTestNum, mHashTest},=0D + {"HMAC verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mHmacTestNum, mHmacTest},=0D + {"BlockCipher verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mBlockCipherTestNum, mBlockCipherTest},=0D + {"RSA verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mRsaTestNum, mRsaTest},=0D + {"RSACert verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mRsaCertTestNum, mRsaCertTest},=0D + {"PKCS7 verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mPkcs7TestNum, mPkcs7Test},=0D + {"PKCS5 verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mPkcs5TestNum, mPkcs5Test},=0D + {"Authenticode verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mAuthenticodeTestNum, mAuthenticodeTest},=0D + {"ImageTimestamp verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mImageTimestampTestNum, mImageTimestampTest},=0D + {"DH verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mDhTestNum, mDhTest},=0D + {"PRNG verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mPrngTestNum, mPrngTest},=0D + {"OAEP encrypt verify tests", "CryptoPkg.BaseCryptLib", NULL, NULL, = &mOaepTestNum, mOaepTest},=0D +};=0D +=0D +EFI_STATUS=0D +EFIAPI=0D +CreateUnitTest (=0D + IN CHAR8* UnitTestName,=0D + IN CHAR8* UnitTestVersion,=0D + IN OUT UNIT_TEST_FRAMEWORK_HANDLE* Framework=0D +) {=0D + EFI_STATUS Status;=0D + UINTN SuiteIndex;=0D + UINTN TestIndex;=0D +=0D + if ( Framework =3D=3D NULL || UnitTestVersion =3D=3D NULL || UnitTestN= ame =3D=3D NULL) {=0D + return EFI_INVALID_PARAMETER;=0D + }=0D + Status =3D EFI_SUCCESS;=0D + //=0D + // Start setting up the test framework for running the tests.=0D + //=0D + Status =3D InitUnitTestFramework (Framework, UnitTestName, gEfiCallerB= aseName, UnitTestVersion);=0D + if (EFI_ERROR (Status)) {=0D + DEBUG((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status =3D %= r\n", Status));=0D + goto EXIT;=0D + }=0D +=0D + for (SuiteIndex =3D 0; SuiteIndex < ARRAY_SIZE(mSuiteDesc); SuiteIndex= ++) {=0D + UNIT_TEST_SUITE_HANDLE Suite =3D NULL;=0D + Status =3D CreateUnitTestSuite (&Suite, *Framework, mSuiteDesc[Sui= teIndex].Title, mSuiteDesc[SuiteIndex].Package, mSuiteDesc[SuiteIndex].Sup,= mSuiteDesc[SuiteIndex].Tdn);=0D + if (EFI_ERROR (Status)) {=0D + Status =3D EFI_OUT_OF_RESOURCES;=0D + goto EXIT;=0D + }=0D + for (TestIndex =3D 0; TestIndex < *mSuiteDesc[SuiteIndex].TestNum;= TestIndex++) {=0D + AddTestCase (Suite, (mSuiteDesc[SuiteIndex].TestDesc + TestInd= ex)->Description, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->ClassName,= (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->Func, (mSuiteDesc[SuiteInde= x].TestDesc + TestIndex)->PreReq, (mSuiteDesc[SuiteIndex].TestDesc + TestIn= dex)->CleanUp, (mSuiteDesc[SuiteIndex].TestDesc + TestIndex)->Context);=0D + }=0D + }=0D + EXIT:=0D + return Status;=0D +}=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipherTests.= c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipherTests.c new file mode 100644 index 000000000000..b3493073965f --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/BlockCipherTests.c @@ -0,0 +1,293 @@ +/** @file=0D + Application for Block Cipher Primitives Validation.=0D +=0D +Copyright (c) 2010, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +//=0D +// TDES test vectors are extracted from OpenSSL 0.9.8l, crypto\des\destest= .c=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbData[] =3D {=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbKey[] =3D {=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,=0D + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcbCipher[] =3D {=0D + 0x8C, 0xA6, 0x4D, 0xE9, 0xC1, 0xB1, 0x23, 0xA7,=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesEcb2Cipher[] =3D {=0D + 0x92, 0x95, 0xB5, 0x9B, 0xB3, 0x84, 0x73, 0x6E,=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbcData[] =3D {=0D + 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20,=0D + 0x4E, 0x6F, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74,=0D + 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbcKey[] =3D {=0D + 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,=0D + 0xf1, 0xe0, 0xd3, 0xc2, 0xb5, 0xa4, 0x97, 0x86,=0D + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TdesCbcIvec[] =3D {=0D + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TdesCbc3Cipher[] =3D {=0D + 0x3F, 0xE3, 0x01, 0xC9, 0x62, 0xAC, 0x01, 0xD0,=0D + 0x22, 0x13, 0x76, 0x3C, 0x1C, 0xBD, 0x4C, 0xDC,=0D + 0x79, 0x96, 0x57, 0xC0, 0x64, 0xEC, 0xF5, 0xD4=0D + };=0D +=0D +//=0D +// AES test vectors are from NIST KAT of AES=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbData[] =3D {=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, = 0x00, 0x00, 0x00, 0x00=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbKey[] =3D {=0D + 0x10, 0xa5, 0x88, 0x69, 0xd7, 0x4b, 0xe5, 0xa3, 0x74, 0xcf, 0x86, 0x7c, = 0xfb, 0x47, 0x38, 0x59=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128EcbCipher[] =3D {=0D + 0x6d, 0x25, 0x1e, 0x69, 0x44, 0xb0, 0x51, 0xe0, 0x4e, 0xaa, 0x6f, 0xb4, = 0xdb, 0xf7, 0x84, 0x65=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbData[] =3D {=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, = 0x00, 0x00, 0x00, 0x00=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbKey[] =3D {=0D + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, = 0xff, 0xff, 0xff, 0xff,=0D + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes192EcbCipher[] =3D {=0D + 0xdd, 0x8a, 0x49, 0x35, 0x14, 0x23, 0x1c, 0xbf, 0x56, 0xec, 0xce, 0xe4, = 0xc4, 0x08, 0x89, 0xfb=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbData[] =3D {=0D + 0x01, 0x47, 0x30, 0xf8, 0x0a, 0xc6, 0x25, 0xfe, 0x84, 0xf0, 0x26, 0xc6, = 0x0b, 0xfd, 0x54, 0x7d=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbKey[] =3D {=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, = 0x00, 0x00, 0x00, 0x00,=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, = 0x00, 0x00, 0x00, 0x00=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes256EcbCipher[] =3D {=0D + 0x5c, 0x9d, 0x84, 0x4e, 0xd4, 0x6f, 0x98, 0x85, 0x08, 0x5e, 0x5d, 0x6a, = 0x4f, 0x94, 0xc7, 0xd7=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcData[] =3D {=0D + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, = 0x0c, 0x0d, 0x0e, 0x0f,=0D + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, = 0x1c, 0x1d, 0x1e, 0x1f=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcKey[] =3D {=0D + 0xc2, 0x86, 0x69, 0x6d, 0x88, 0x7c, 0x9a, 0xa0, 0x61, 0x1b, 0xbb, 0x3e, = 0x20, 0x25, 0xa4, 0x5a=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcIvec[] =3D {=0D + 0x56, 0x2e, 0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, = 0x5a, 0x2e, 0x6f, 0x58=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Aes128CbcCipher[] =3D {=0D + 0xd2, 0x96, 0xcd, 0x94, 0xc2, 0xcc, 0xcf, 0x8a, 0x3a, 0x86, 0x30, 0x28, = 0xb5, 0xe1, 0xdc, 0x0a,=0D + 0x75, 0x86, 0x60, 0x2d, 0x25, 0x3c, 0xff, 0xf9, 0x1b, 0x82, 0x66, 0xbe, = 0xa6, 0xd6, 0x1a, 0xb1=0D + };=0D +=0D +//=0D +// ARC4 Test Vector defined in "Appendix A.1 Test Vectors from [CRYPTLIB]"= of=0D +// IETF Draft draft-kaukonen-cipher-arcfour-03 ("A Stream Cipher Encryptio= n Algorithm 'Arcfour'").=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Data[] =3D {=0D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Key[] =3D {=0D + 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Arc4Cipher[] =3D {=0D + 0x74, 0x94, 0xC2, 0xE7, 0x10, 0x4B, 0x08, 0x79=0D + };=0D +=0D +=0D +typedef=0D +UINTN=0D +(EFIAPI *EFI_BLOCK_CIPHER_GET_CONTEXT_SIZE) (=0D + VOID=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_BLOCK_CIPHER_INIT) (=0D + OUT VOID *BlockCipherContext,=0D + IN CONST UINT8 *Key,=0D + IN UINTN KeyLength=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT) (=0D + IN VOID *BlockCipherContext,=0D + IN CONST UINT8 *Input,=0D + IN UINTN InputSize,=0D + OUT UINT8 *Output=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT) (=0D + IN VOID *BlockCipherContext,=0D + IN CONST UINT8 *Input,=0D + IN UINTN InputSize,=0D + IN CONST UINT8 *Ivec,=0D + OUT UINT8 *Output=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_BLOCK_CIPHER_RESET) (=0D + IN OUT VOID *BlockCipherContext=0D + );=0D +=0D +typedef struct {=0D + EFI_BLOCK_CIPHER_GET_CONTEXT_SIZE GetContextSize;=0D + EFI_BLOCK_CIPHER_INIT Init;=0D + EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT EcbEncrypt;=0D + EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT EcbDecrypt;=0D + EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT CbcEncrypt;=0D + EFI_BLOCK_CIPHER_CBC_ENCRYPT_DECRYPT CbcDecrypt;=0D + EFI_BLOCK_CIPHER_RESET Reset;=0D + CONST UINT8 *Key;=0D + UINTN KeySize;=0D + CONST UINT8 *Ivec;=0D + CONST UINT8 *Data;=0D + UINTN DataSize;=0D + CONST UINT8 *Cipher;=0D + UINTN CipherSize;=0D + VOID *Ctx;=0D +} BLOCK_CIPHER_TEST_CONTEXT;=0D +=0D +// These are commented out as they are deprecated, but are left in should = they be used again=0D +//BLOCK_CIPHER_TEST_CONTEXT mTdesEcbTestCtx =3D {TdesGetContextSize, Tde= sInit, TdesEcbEncrypt, TdesEcbDecrypt, NULL, NULL, NULL= , TdesEcbKey, 64, NULL, TdesEcbData, 8, = TdesEcbCipher, 8};=0D +//BLOCK_CIPHER_TEST_CONTEXT mTdesCbcTestCtx =3D {TdesGetContextSize, Tde= sInit, NULL, NULL, TdesCbcEncrypt, TdesCbcDecrypt, NULL= , TdesCbcKey, 192, TdesCbcIvec, TdesCbcData, sizeof(= TdesCbcData), TdesCbc3Cipher, sizeof(TdesCbc3Cipher)};=0D +//BLOCK_CIPHER_TEST_CONTEXT mAes128EcbTestCtx =3D {AesGetContextSize, Aes= Init, AesEcbEncrypt, AesEcbDecrypt, NULL, NULL, NULL= , Aes128EcbKey, 128, NULL, Aes128EcbData, sizeof(= Aes128EcbData), Aes128EcbCipher, sizeof(Aes128EcbCipher)};=0D +//BLOCK_CIPHER_TEST_CONTEXT mAes192EcbTestCtx =3D {AesGetContextSize, Aes= Init, AesEcbEncrypt, AesEcbDecrypt, NULL, NULL, NULL= , Aes192EcbKey, 192, NULL, Aes192EcbData, sizeof(= Aes192EcbData), Aes192EcbCipher, sizeof(Aes192EcbCipher)};=0D +//BLOCK_CIPHER_TEST_CONTEXT mAes256EcbTestCtx =3D {AesGetContextSize, Aes= Init, AesEcbEncrypt, AesEcbDecrypt, NULL, NULL, NULL= , Aes256EcbKey, 256, NULL, Aes256EcbData, sizeof(= Aes256EcbData), Aes256EcbCipher, sizeof(Aes256EcbCipher)};=0D +//BLOCK_CIPHER_TEST_CONTEXT mArc4TestCtx =3D {Arc4GetContextSize, Arc= 4Init, Arc4Encrypt, (EFI_BLOCK_CIPHER_ECB_ENCRYPT_DECRYPT), Arc4Decrypt,= NULL, NULL, Arc4Reset, Arc4Key, sizeof(Arc4Key= ), NULL, Arc4Data, sizeof(Arc4Data), Arc4Cipher, si= zeof(Arc4Cipher)};=0D +BLOCK_CIPHER_TEST_CONTEXT mAes128CbcTestCtx =3D {AesGetContextSize, AesIn= it, NULL, NULL, AesCbcEncrypt, AesCbcDecrypt, NULL, = Aes128CbcKey, 128, Aes128CbcIvec, Aes128CbcData, sizeof(Ae= s128CbcData), Aes128CbcCipher, sizeof(Aes128CbcCipher)};=0D +=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyBLockCiperPreReq (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BLOCK_CIPHER_TEST_CONTEXT *TestContext;=0D + UINTN CtxSize;=0D +=0D + TestContext =3D Context;=0D + CtxSize =3D TestContext->GetContextSize ();=0D + TestContext->Ctx =3D AllocatePool (CtxSize);=0D + if (TestContext->Ctx =3D=3D NULL) {=0D + return UNIT_TEST_ERROR_TEST_FAILED;=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +VOID=0D +EFIAPI=0D +TestVerifyBLockCiperCleanUp (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BLOCK_CIPHER_TEST_CONTEXT *TestContext;=0D +=0D + TestContext =3D Context;=0D + if (TestContext->Ctx !=3D NULL) {=0D + FreePool (TestContext->Ctx);=0D + }=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyBLockCiper (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + UINT8 Encrypt[256];=0D + UINT8 Decrypt[256];=0D + BOOLEAN Status;=0D + BLOCK_CIPHER_TEST_CONTEXT *TestContext;=0D +=0D + TestContext =3D Context;=0D +=0D + ZeroMem (Encrypt, sizeof (Encrypt));=0D + ZeroMem (Decrypt, sizeof (Decrypt));=0D +=0D + Status =3D TestContext->Init (TestContext->Ctx, TestContext->Key, TestCo= ntext->KeySize);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + if (TestContext->Ivec =3D=3D NULL) {=0D + Status =3D TestContext->EcbEncrypt (TestContext->Ctx, TestContext->Dat= a, TestContext->DataSize, Encrypt);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + if (TestContext->Reset !=3D NULL) {=0D + Status =3D TestContext->Reset (TestContext->Ctx);=0D + UT_ASSERT_TRUE (Status);=0D + }=0D +=0D + Status =3D TestContext->EcbDecrypt (TestContext->Ctx, Encrypt, TestCon= text->DataSize, Decrypt);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + } else {=0D + Status =3D TestContext->CbcEncrypt (TestContext->Ctx, TestContext->Dat= a, TestContext->DataSize, TestContext->Ivec, Encrypt);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + if (TestContext->Reset !=3D NULL) {=0D + Status =3D TestContext->Reset (TestContext->Ctx);=0D + UT_ASSERT_TRUE (Status);=0D + }=0D +=0D + Status =3D TestContext->CbcDecrypt (TestContext->Ctx, Encrypt, TestCon= text->DataSize, TestContext->Ivec, Decrypt);=0D + UT_ASSERT_TRUE (Status);=0D + }=0D +=0D + UT_ASSERT_MEM_EQUAL (Encrypt, TestContext->Cipher, TestContext->CipherSi= ze);=0D + UT_ASSERT_MEM_EQUAL (Decrypt, TestContext->Data, TestContext->DataSize= );=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mBlockCipherTest[] =3D {=0D + //=0D + // -----Description-------------------------Class---------------------= ----Function---------------Pre---------------------------Post--------------= ----Context=0D + //=0D + {"TestVerifyAes128Cbc()", "CryptoPkg.BaseCryptLib.BlockCipher", Tes= tVerifyBLockCiper, TestVerifyBLockCiperPreReq, TestVerifyBLockCiperCleanUp,= &mAes128CbcTestCtx},=0D + // These are commented out as these functions have been deprecated, bu= t they have been left in for future reference=0D + //{"TestVerifyTdesEcb()", "CryptoPkg.BaseCryptLib.BlockCipher", T= estVerifyBLockCiper, TestVerifyBLockCiperPreReq, TestVerifyBLockCiperCleanU= p, &mTdesEcbTestCtx},=0D + //{"TestVerifyTdesCbc()", "CryptoPkg.BaseCryptLib.BlockCipher", T= estVerifyBLockCiper, TestVerifyBLockCiperPreReq, TestVerifyBLockCiperCleanU= p, &mTdesCbcTestCtx},=0D + //{"TestVerifyAes128Ecb()", "CryptoPkg.BaseCryptLib.BlockCipher", T= estVerifyBLockCiper, TestVerifyBLockCiperPreReq, TestVerifyBLockCiperCleanU= p, &mAes128EcbTestCtx},=0D + //{"TestVerifyAes192Ecb()", "CryptoPkg.BaseCryptLib.BlockCipher", T= estVerifyBLockCiper, TestVerifyBLockCiperPreReq, TestVerifyBLockCiperCleanU= p, &mAes192EcbTestCtx},=0D + //{"TestVerifyAes256Ecb()", "CryptoPkg.BaseCryptLib.BlockCipher", T= estVerifyBLockCiper, TestVerifyBLockCiperPreReq, TestVerifyBLockCiperCleanU= p, &mAes256EcbTestCtx},=0D + //{"TestVerifyArc4()", "CryptoPkg.BaseCryptLib.BlockCipher", T= estVerifyBLockCiper, TestVerifyBLockCiperPreReq, TestVerifyBLockCiperCleanU= p, &mArc4TestCtx},=0D +};=0D +=0D +UINTN mBlockCipherTestNum =3D ARRAY_SIZE(mBlockCipherTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/DhTests.c b/Crypt= oPkg/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=0D + Application for Diffie-Hellman Primitives Validation.=0D +=0D +Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +VOID *mDh1;=0D +VOID *mDh2;=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyDhPreReq (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + mDh1 =3D DhNew ();=0D + if (mDh1 =3D=3D NULL) {=0D + return UNIT_TEST_ERROR_TEST_FAILED;=0D + }=0D +=0D + mDh2 =3D DhNew ();=0D + if (mDh2 =3D=3D NULL) {=0D + return UNIT_TEST_ERROR_TEST_FAILED;=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +VOID=0D +EFIAPI=0D +TestVerifyDhCleanUp (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + if (mDh1 !=3D NULL) {=0D + DhFree (mDh1);=0D + mDh1 =3D NULL;=0D + }=0D + if (mDh2 !=3D NULL) {=0D + DhFree (mDh2);=0D + mDh2 =3D NULL;=0D + }=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyDhGenerateKey (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + UINT8 Prime[64];=0D + UINT8 PublicKey1[64];=0D + UINTN PublicKey1Length;=0D + UINT8 PublicKey2[64];=0D + UINTN PublicKey2Length;=0D + UINT8 Key1[64];=0D + UINTN Key1Length;=0D + UINT8 Key2[64];=0D + UINTN Key2Length;=0D + BOOLEAN Status;=0D +=0D + //=0D + // Initialize Key Length=0D + //=0D + PublicKey1Length =3D sizeof (PublicKey1);=0D + PublicKey2Length =3D sizeof (PublicKey2);=0D + Key1Length =3D sizeof (Key1);=0D + Key2Length =3D sizeof (Key2);=0D +=0D + Status =3D DhGenerateParameter (mDh1, 2, 64, Prime);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D DhSetParameter (mDh2, 2, 64, Prime);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D DhGenerateKey (mDh1, PublicKey1, &PublicKey1Length);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D DhGenerateKey (mDh2, PublicKey2, &PublicKey2Length);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D DhComputeKey (mDh1, PublicKey2, PublicKey2Length, Key1, &Key1= Length);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D DhComputeKey (mDh2, PublicKey1, PublicKey1Length, Key2, &Key2= Length);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + UT_ASSERT_EQUAL (Key1Length, Key2Length);=0D +=0D + UT_ASSERT_MEM_EQUAL (Key1, Key2, Key1Length);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mDhTest[] =3D {=0D + //=0D + // -----Description--------------------------------Class--------------= -------Function----------------Pre-----------------Post------------Context= =0D + //=0D + {"TestVerifyDhGenerateKey()", "CryptoPkg.BaseCryptLib.Dh", Te= stVerifyDhGenerateKey, TestVerifyDhPreReq, TestVerifyDhCleanUp, NULL},=0D +};=0D +=0D +UINTN mDhTestNum =3D ARRAY_SIZE(mDhTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HashTests.c b/Cry= ptoPkg/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=0D + Application for Hash Primitives Validation.=0D +=0D +Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +//=0D +// Max Known Digest Size is SHA512 Output (64 bytes) by far=0D +//=0D +#define MAX_DIGEST_SIZE 64=0D +=0D +//=0D +// Message string for digest validation=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *HashData =3D "abc";=0D +=0D +//=0D +// Result for MD5("abc"). (From "A.5 Test suite" of IETF RFC1321)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Md5Digest[MD5_DIGEST_SIZE] =3D {= =0D + 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0, 0xd6, 0x96, 0x3f, 0x7d, = 0x28, 0xe1, 0x7f, 0x72=0D +=0D + };=0D +=0D +//=0D +// Result for SHA-1("abc"). (From "A.1 SHA-1 Example" of NIST FIPS 180-2)= =0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha1Digest[SHA1_DIGEST_SIZE] =3D= {=0D + 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e, 0x25, 0x71, = 0x78, 0x50, 0xc2, 0x6c,=0D + 0x9c, 0xd0, 0xd8, 0x9d=0D + };=0D +=0D +//=0D +// Result for SHA-256("abc"). (From "B.1 SHA-256 Example" of NIST FIPS 180= -2)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha256Digest[SHA256_DIGEST_SIZE]= =3D {=0D + 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, 0xde, = 0x5d, 0xae, 0x22, 0x23,=0D + 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 0xb4, 0x10, 0xff, 0x61, = 0xf2, 0x00, 0x15, 0xad=0D + };=0D +=0D +//=0D +// Result for SHA-384("abc"). (From "D.1 SHA-384 Example" of NIST FIPS 180= -2)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha384Digest[SHA384_DIGEST_SIZE]= =3D {=0D + 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b, 0xb5, 0xa0, 0x3d, 0x69, = 0x9a, 0xc6, 0x50, 0x07,=0D + 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63, 0x1a, 0x8b, 0x60, 0x5a, = 0x43, 0xff, 0x5b, 0xed,=0D + 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23, 0x58, 0xba, 0xec, 0xa1, = 0x34, 0xc8, 0x25, 0xa7=0D + };=0D +=0D +//=0D +// Result for SHA-512("abc"). (From "C.1 SHA-512 Example" of NIST FIPS 180= -2)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 Sha512Digest[SHA512_DIGEST_SIZE]= =3D {=0D + 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 0xcc, 0x41, 0x73, 0x49, = 0xae, 0x20, 0x41, 0x31,=0D + 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, 0x0a, 0x9e, 0xee, 0xe6, = 0x4b, 0x55, 0xd3, 0x9a,=0D + 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, 0x36, 0xba, 0x3c, 0x23, = 0xa3, 0xfe, 0xeb, 0xbd,=0D + 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, 0x2a, 0x9a, 0xc9, 0x4f, = 0xa5, 0x4c, 0xa4, 0x9f=0D + };=0D +=0D +typedef=0D +UINTN=0D +(EFIAPI *EFI_HASH_GET_CONTEXT_SIZE) (=0D + VOID=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_HASH_INIT) (=0D + OUT VOID *HashContext=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_HASH_UPDATE) (=0D + IN OUT VOID *HashContext,=0D + IN CONST VOID *Data,=0D + IN UINTN DataSize=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_HASH_FINAL) (=0D + IN OUT VOID *HashContext,=0D + OUT UINT8 *HashValue=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_HASH_ALL) (=0D + IN CONST VOID *Data,=0D + IN UINTN DataSize,=0D + OUT UINT8 *HashValue=0D + );=0D +=0D +typedef struct {=0D + UINT32 DigestSize;=0D + EFI_HASH_GET_CONTEXT_SIZE GetContextSize;=0D + EFI_HASH_INIT HashInit;=0D + EFI_HASH_UPDATE HashUpdate;=0D + EFI_HASH_FINAL HashFinal;=0D + EFI_HASH_ALL HashAll;=0D + CONST UINT8 *Digest;=0D + VOID *HashCtx;=0D +} HASH_TEST_CONTEXT;=0D +=0D +HASH_TEST_CONTEXT mMd5TestCtx =3D {MD5_DIGEST_SIZE, Md5GetCont= extSize, Md5Init, Md5Update, Md5Final, Md5HashAll, Md5Digest= };=0D +HASH_TEST_CONTEXT mSha1TestCtx =3D {SHA1_DIGEST_SIZE, Sha1GetCon= textSize, Sha1Init, Sha1Update, Sha1Final, Sha1HashAll, Sha1Diges= t};=0D +HASH_TEST_CONTEXT mSha256TestCtx =3D {SHA256_DIGEST_SIZE, Sha256GetC= ontextSize, Sha256Init, Sha256Update, Sha256Final, Sha256HashAll, Sha256Dig= est};=0D +HASH_TEST_CONTEXT mSha384TestCtx =3D {SHA384_DIGEST_SIZE, Sha384GetC= ontextSize, Sha384Init, Sha384Update, Sha384Final, Sha384HashAll, Sha384Dig= est};=0D +HASH_TEST_CONTEXT mSha512TestCtx =3D {SHA512_DIGEST_SIZE, Sha512GetC= ontextSize, Sha512Init, Sha512Update, Sha512Final, Sha512HashAll, Sha512Dig= est};=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyHashPreReq (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + HASH_TEST_CONTEXT *HashTestContext;=0D + UINTN CtxSize;=0D +=0D + HashTestContext =3D Context;=0D + CtxSize =3D HashTestContext->GetContextSize ();=0D + HashTestContext->HashCtx =3D AllocatePool (CtxSize);=0D + if (HashTestContext->HashCtx =3D=3D NULL) {=0D + return UNIT_TEST_ERROR_TEST_FAILED;=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +VOID=0D +EFIAPI=0D +TestVerifyHashCleanUp (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + HASH_TEST_CONTEXT *HashTestContext;=0D +=0D + HashTestContext =3D Context;=0D + if (HashTestContext->HashCtx !=3D NULL) {=0D + FreePool (HashTestContext->HashCtx);=0D + }=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyHash (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + UINTN DataSize;=0D + UINT8 Digest[MAX_DIGEST_SIZE];=0D + BOOLEAN Status;=0D + HASH_TEST_CONTEXT *HashTestContext;=0D +=0D + HashTestContext =3D Context;=0D +=0D + DataSize =3D AsciiStrLen (HashData);=0D +=0D + ZeroMem (Digest, MAX_DIGEST_SIZE);=0D +=0D + Status =3D HashTestContext->HashInit (HashTestContext->HashCtx);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D HashTestContext->HashUpdate (HashTestContext->HashCtx, HashD= ata, DataSize);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D HashTestContext->HashFinal (HashTestContext->HashCtx, Digest= );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + UT_ASSERT_MEM_EQUAL (Digest, HashTestContext->Digest, HashTestContext->D= igestSize);=0D +=0D + ZeroMem (Digest, MAX_DIGEST_SIZE);=0D + Status =3D HashTestContext->HashAll (HashData, DataSize, Digest);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + UT_ASSERT_MEM_EQUAL (Digest, HashTestContext->Digest, HashTestContext->D= igestSize);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mHashTest[] =3D {=0D + //=0D + // -----Description----------------Class---------------------Function-= --------------Pre------------------Post------------Context=0D + //=0D + {"TestVerifyMd5()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHash= , TestVerifyHashPreReq, TestVerifyHashCleanUp, &mMd5TestCtx},=0D + {"TestVerifySha1()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHash= , TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha1TestCtx},=0D + {"TestVerifySha256()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHash= , TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha256TestCtx},=0D + {"TestVerifySha384()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHash= , TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha384TestCtx},=0D + {"TestVerifySha512()", "CryptoPkg.BaseCryptLib.Hash", TestVerifyHash= , TestVerifyHashPreReq, TestVerifyHashCleanUp, &mSha512TestCtx},=0D +};=0D +=0D +UINTN mHashTestNum =3D ARRAY_SIZE(mHashTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/HmacTests.c b/Cry= ptoPkg/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=0D + Application for HMAC Primitives Validation.=0D +=0D +Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +//=0D +// Max Known Digest Size is SHA512 Output (64 bytes) by far=0D +//=0D +#define MAX_DIGEST_SIZE 64=0D +=0D +//=0D +// Data string for HMAC validation=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *HmacData =3D "Hi There";=0D +=0D +//=0D +// Key value for HMAC-MD5 validation. (From "2. Test Cases for HMAC-MD5" o= f IETF RFC2202)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacMd5Key[16] =3D {=0D + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, = 0x0b, 0x0b, 0x0b, 0x0b=0D + };=0D +=0D +//=0D +// Result for HMAC-MD5("Hi There"). (From "2. Test Cases for HMAC-MD5" of = IETF RFC2202)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacMd5Digest[] =3D {=0D + 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 0x13, 0xf4, 0x8e, 0xf8, = 0x15, 0x8b, 0xfc, 0x9d=0D + };=0D +=0D +//=0D +// Key value for HMAC-SHA-1 validation. (From "3. Test Cases for HMAC-SHA-= 1" of IETF RFC2202)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha1Key[20] =3D {=0D + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, = 0x0b, 0x0b, 0x0b, 0x0b,=0D + 0x0b, 0x0b, 0x0b, 0x0b=0D + };=0D +=0D +//=0D +// Result for HMAC-SHA-1 ("Hi There"). (From "3. Test Cases for HMAC-SHA-1= " of IETF RFC2202)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha1Digest[] =3D {=0D + 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 0xe2, 0x8b, 0xc0, 0xb6, = 0xfb, 0x37, 0x8c, 0x8e,=0D + 0xf1, 0x46, 0xbe, 0x00=0D + };=0D +=0D +//=0D +// Key value for HMAC-SHA-256 validation. (From "4. Test Vectors" of IETF = RFC4231)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha256Key[20] =3D {=0D + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, = 0x0b, 0x0b, 0x0b, 0x0b,=0D + 0x0b, 0x0b, 0x0b, 0x0b=0D + };=0D +=0D +//=0D +// Result for HMAC-SHA-256 ("Hi There"). (From "4. Test Vectors" of IETF R= FC4231)=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 HmacSha256Digest[] =3D {=0D + 0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, 0x5c, 0xa8, 0xaf, 0xce, = 0xaf, 0x0b, 0xf1, 0x2b,=0D + 0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7, 0x26, 0xe9, 0x37, 0x6c, = 0x2e, 0x32, 0xcf, 0xf7=0D + };=0D +=0D +typedef=0D +VOID*=0D +(EFIAPI *EFI_HMAC_NEW) (=0D + VOID=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_HMAC_INIT) (=0D + IN OUT VOID *HashContext,=0D + IN CONST UINT8 *Key,=0D + IN UINTN KeySize=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_HMAC_UPDATE) (=0D + IN OUT VOID *HashContext,=0D + IN CONST VOID *Data,=0D + IN UINTN DataSize=0D + );=0D +=0D +typedef=0D +BOOLEAN=0D +(EFIAPI *EFI_HMAC_FINAL) (=0D + IN OUT VOID *HashContext,=0D + OUT UINT8 *HashValue=0D + );=0D +=0D +typedef struct {=0D + UINT32 DigestSize;=0D + EFI_HMAC_NEW HmacNew;=0D + EFI_HMAC_INIT HmacInit;=0D + EFI_HMAC_UPDATE HmacUpdate;=0D + EFI_HMAC_FINAL HmacFinal;=0D + CONST UINT8 *Key;=0D + UINTN KeySize;=0D + CONST UINT8 *Digest;=0D + VOID *HmacCtx;=0D +} HMAC_TEST_CONTEXT;=0D +=0D +// These functions have been deprecated but they've been left commented ou= t for future reference=0D +//HMAC_TEST_CONTEXT mHmacMd5TestCtx =3D {MD5_DIGEST_SIZE, Hmac= Md5New, HmacMd5SetKey, HmacMd5Update, HmacMd5Final, HmacMd5Key,= sizeof(HmacMd5Key), HmacMd5Digest};=0D +//HMAC_TEST_CONTEXT mHmacSha1TestCtx =3D {SHA1_DIGEST_SIZE, Hmac= Sha1New, HmacSha1SetKey, HmacSha1Update, HmacSha1Final, HmacSha1Key= , sizeof(HmacSha1Key), HmacSha1Digest};=0D +HMAC_TEST_CONTEXT mHmacSha256TestCtx =3D {SHA256_DIGEST_SIZE, HmacSh= a256New, HmacSha256SetKey, HmacSha256Update, HmacSha256Final, HmacSha256Key= , sizeof(HmacSha256Key), HmacSha256Digest};=0D +=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyHmacPreReq (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + HMAC_TEST_CONTEXT *HmacTestContext;=0D +=0D + HmacTestContext =3D Context;=0D + HmacTestContext->HmacCtx =3D HmacTestContext->HmacNew();=0D + if (HmacTestContext->HmacCtx =3D=3D NULL) {=0D + return UNIT_TEST_ERROR_TEST_FAILED;=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +VOID=0D +EFIAPI=0D +TestVerifyHmacCleanUp (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + HMAC_TEST_CONTEXT *HmacTestContext;=0D +=0D + HmacTestContext =3D Context;=0D + if (HmacTestContext->HmacCtx !=3D NULL) {=0D + FreePool (HmacTestContext->HmacCtx);=0D + }=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyHmac (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + UINT8 Digest[MAX_DIGEST_SIZE];=0D + BOOLEAN Status;=0D + HMAC_TEST_CONTEXT *HmacTestContext;=0D +=0D + HmacTestContext =3D Context;=0D +=0D + ZeroMem (Digest, MAX_DIGEST_SIZE);=0D +=0D + Status =3D HmacTestContext->HmacInit (HmacTestContext->HmacCtx, HmacTes= tContext->Key, HmacTestContext->KeySize);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D HmacTestContext->HmacUpdate (HmacTestContext->HmacCtx, HmacD= ata, 8);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D HmacTestContext->HmacFinal (HmacTestContext->HmacCtx, Digest= );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + UT_ASSERT_MEM_EQUAL (Digest, HmacTestContext->Digest, HmacTestContext->D= igestSize);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mHmacTest[] =3D {=0D + //=0D + // -----Description---------------------Class---------------------Func= tion---------------Pre------------------Post------------Context=0D + //=0D + {"TestVerifyHmacSha256()", "CryptoPkg.BaseCryptLib.Hmac", TestVerify= Hmac, TestVerifyHmacPreReq, TestVerifyHmacCleanUp, &mHmacSha256TestCtx},=0D + // These functions have been deprecated but they've been left commente= d out for future reference=0D + //{"TestVerifyHmacMd5()", "CryptoPkg.BaseCryptLib.Hmac", TestVeri= fyHmac, TestVerifyHmacPreReq, TestVerifyHmacCleanUp, &mHmacMd5TestCtx},=0D + //{"TestVerifyHmacSha1()", "CryptoPkg.BaseCryptLib.Hmac", TestVeri= fyHmac, TestVerifyHmacPreReq, TestVerifyHmacCleanUp, &mHmacSha1TestCtx},=0D +=0D +};=0D +=0D +UINTN mHmacTestNum =3D ARRAY_SIZE(mHmacTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.= c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c new file mode 100644 index 000000000000..404020f96726 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/OaepEncryptTests.c @@ -0,0 +1,308 @@ +/** @file=0D + This is a unit test for RSA OAEP encrypt.=0D +=0D + Copyright (c) 2019, Intel Corporation. All rights reserved.
=0D + SPDX-License-Identifier: BSD-2-Clause-Patent=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +CONST UINT8 RandSeed[] =3D "This is the random seed for PRNG verificatio= n.";=0D +=0D +//=0D +// Self signed X509 certificate=0D +// CN =3D ca.self=0D +// O =3D Intel=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 SelfTestCert[] =3D {=0D + 0x30, 0x82, 0x03, 0x90, 0x30, 0x82, 0x02, 0x78, 0x02, 0x09, 0x00, 0xE4, = 0xDF, 0x47, 0x80, 0xEF,=0D + 0x4B, 0x3C, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, = 0x0D, 0x01, 0x01, 0x0B,=0D + 0x05, 0x00, 0x30, 0x81, 0x89, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, = 0x04, 0x06, 0x13, 0x02,=0D + 0x43, 0x4E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, = 0x08, 0x53, 0x68, 0x61,=0D + 0x6E, 0x67, 0x48, 0x61, 0x69, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, = 0x04, 0x07, 0x0C, 0x08,=0D + 0x53, 0x68, 0x61, 0x6E, 0x67, 0x48, 0x61, 0x69, 0x31, 0x0E, 0x30, 0x0C, = 0x06, 0x03, 0x55, 0x04,=0D + 0x0A, 0x0C, 0x05, 0x49, 0x6E, 0x74, 0x65, 0x6C, 0x31, 0x0C, 0x30, 0x0A, = 0x06, 0x03, 0x55, 0x04,=0D + 0x0B, 0x0C, 0x03, 0x46, 0x49, 0x45, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x07, 0x63, 0x61, 0x2E, 0x73, 0x65, 0x6C, 0x66, 0x31, 0x24, 0x30, 0x22, = 0x06, 0x09, 0x2A, 0x86,=0D + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x15, 0x7A, 0x68, 0x69, = 0x63, 0x68, 0x61, 0x6F,=0D + 0x2E, 0x67, 0x61, 0x6F, 0x40, 0x69, 0x6E, 0x74, 0x65, 0x6C, 0x2E, 0x63, = 0x6F, 0x6D, 0x30, 0x1E,=0D + 0x17, 0x0D, 0x31, 0x39, 0x30, 0x33, 0x32, 0x37, 0x30, 0x35, 0x35, 0x37, = 0x30, 0x39, 0x5A, 0x17,=0D + 0x0D, 0x32, 0x30, 0x30, 0x33, 0x32, 0x36, 0x30, 0x35, 0x35, 0x37, 0x30, = 0x39, 0x5A, 0x30, 0x81,=0D + 0x89, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, = 0x43, 0x4E, 0x31, 0x11,=0D + 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x08, 0x53, 0x68, 0x61, = 0x6E, 0x67, 0x48, 0x61,=0D + 0x69, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x08, = 0x53, 0x68, 0x61, 0x6E,=0D + 0x67, 0x48, 0x61, 0x69, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, = 0x0A, 0x0C, 0x05, 0x49,=0D + 0x6E, 0x74, 0x65, 0x6C, 0x31, 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55, 0x04, = 0x0B, 0x0C, 0x03, 0x46,=0D + 0x49, 0x45, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, = 0x07, 0x63, 0x61, 0x2E,=0D + 0x73, 0x65, 0x6C, 0x66, 0x31, 0x24, 0x30, 0x22, 0x06, 0x09, 0x2A, 0x86, = 0x48, 0x86, 0xF7, 0x0D,=0D + 0x01, 0x09, 0x01, 0x16, 0x15, 0x7A, 0x68, 0x69, 0x63, 0x68, 0x61, 0x6F, = 0x2E, 0x67, 0x61, 0x6F,=0D + 0x40, 0x69, 0x6E, 0x74, 0x65, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x82, = 0x01, 0x22, 0x30, 0x0D,=0D + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, = 0x00, 0x03, 0x82, 0x01,=0D + 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xBC, = 0xE4, 0x67, 0xDC, 0xC7,=0D + 0xEA, 0x6F, 0x8A, 0xA7, 0xCC, 0xB2, 0x54, 0x47, 0x48, 0x6A, 0xE2, 0x39, = 0xFF, 0xC2, 0x48, 0x58,=0D + 0x34, 0x07, 0x03, 0x6D, 0x39, 0xB3, 0x67, 0x46, 0x4C, 0xBC, 0xA0, 0xFA, = 0x4E, 0x64, 0x23, 0x56,=0D + 0x47, 0x7B, 0xC9, 0x1A, 0x2A, 0x55, 0x42, 0x54, 0x10, 0x18, 0x30, 0x92, = 0x60, 0x30, 0x5B, 0x9E,=0D + 0xC0, 0x65, 0xD2, 0xD4, 0x05, 0x4A, 0xA6, 0x10, 0x66, 0x04, 0xA9, 0x54, = 0x4E, 0xEE, 0x49, 0x39,=0D + 0x43, 0x65, 0x1E, 0x2E, 0x28, 0xDE, 0x79, 0x24, 0xA9, 0x7E, 0xD8, 0x5B, = 0xBC, 0x2F, 0x46, 0x6A,=0D + 0xB7, 0xB6, 0x0D, 0x17, 0x88, 0x37, 0x52, 0x5C, 0xFE, 0x93, 0xC0, 0xE2, = 0xFD, 0x6A, 0x08, 0x1B,=0D + 0xFB, 0xD1, 0x87, 0xBD, 0xBD, 0x58, 0x57, 0x2C, 0x06, 0x5D, 0xD2, 0x7D, = 0x52, 0xE2, 0x49, 0x8E,=0D + 0xDC, 0xE5, 0x26, 0xBD, 0x92, 0x60, 0xB0, 0x3F, 0x58, 0x5E, 0x52, 0xD7, = 0x91, 0xDA, 0x93, 0x62,=0D + 0x8D, 0x71, 0x80, 0x53, 0xBA, 0x15, 0xC4, 0x1F, 0xF3, 0xBD, 0xE0, 0xC5, = 0xA4, 0xB8, 0xD3, 0x64,=0D + 0x12, 0x14, 0x1B, 0x11, 0x6B, 0x7B, 0xC2, 0x92, 0xC7, 0xE2, 0x94, 0x0B, = 0xB8, 0x67, 0x38, 0x48,=0D + 0x63, 0x11, 0x74, 0x25, 0x7C, 0x37, 0xC3, 0xB2, 0xAE, 0xD9, 0xA7, 0x17, = 0x9C, 0x4B, 0x9D, 0x6C,=0D + 0x27, 0xB0, 0x87, 0x16, 0x6B, 0xF2, 0x96, 0xE5, 0x1D, 0x37, 0x27, 0xDE, = 0xF2, 0x98, 0xB7, 0x81,=0D + 0x08, 0xD9, 0x7A, 0xBA, 0x84, 0x14, 0x61, 0x60, 0x48, 0xCE, 0xCE, 0x51, = 0x73, 0xF4, 0xDB, 0xF1,=0D + 0x5F, 0x7A, 0x17, 0x71, 0x4F, 0xC1, 0x0B, 0xCE, 0xC7, 0x31, 0xC1, 0x4E, = 0xA3, 0xEE, 0x6F, 0x72,=0D + 0x97, 0x90, 0xFB, 0x8B, 0x54, 0x9F, 0x82, 0x5B, 0x48, 0x5A, 0xF1, 0xAD, = 0x8B, 0x3A, 0xCD, 0xCA,=0D + 0xB2, 0x8B, 0x7A, 0x53, 0xD4, 0xF7, 0x71, 0x16, 0x75, 0xA7, 0x35, 0x02, = 0x03, 0x01, 0x00, 0x01,=0D + 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, = 0x0B, 0x05, 0x00, 0x03,=0D + 0x82, 0x01, 0x01, 0x00, 0x78, 0x64, 0xCD, 0x6F, 0xC0, 0xF9, 0xE7, 0xAB, = 0x19, 0x0B, 0xA4, 0x92,=0D + 0x88, 0xD7, 0xE3, 0xC4, 0x9C, 0xCF, 0xF2, 0x49, 0xFC, 0xCE, 0x8C, 0xEC, = 0x33, 0x3F, 0x24, 0x6F,=0D + 0xF7, 0xBC, 0x7C, 0x28, 0xEF, 0xAE, 0xAB, 0x7B, 0xAF, 0x84, 0xE3, 0x4E, = 0x38, 0xAB, 0x66, 0x20,=0D + 0x7C, 0xB9, 0xE0, 0x37, 0xFD, 0x84, 0x28, 0x3C, 0xEE, 0x35, 0xC4, 0x75, = 0x04, 0x43, 0xCA, 0x4F,=0D + 0x36, 0x60, 0xC4, 0x06, 0x16, 0x54, 0x3C, 0xF9, 0x47, 0x78, 0xBD, 0xE9, = 0x7F, 0xF1, 0xE3, 0x0B,=0D + 0xC7, 0x7E, 0x30, 0xA4, 0xCB, 0x3A, 0xC7, 0xCD, 0x50, 0x9A, 0x6C, 0xC1, = 0xE3, 0xF8, 0xF8, 0x16,=0D + 0xAA, 0x67, 0x7F, 0x92, 0xEE, 0x1D, 0x47, 0xF2, 0x96, 0xDF, 0xD7, 0x43, = 0x64, 0x78, 0xA7, 0xD9,=0D + 0xF6, 0xA1, 0xD9, 0xEB, 0x5B, 0x2E, 0xC6, 0x9E, 0xEA, 0xD5, 0x04, 0x52, = 0xA4, 0x73, 0x97, 0xC8,=0D + 0xB3, 0xFD, 0xE1, 0x7E, 0xB1, 0xA4, 0x3F, 0xF4, 0x56, 0x66, 0x8E, 0x6B, = 0xBC, 0xD8, 0xF0, 0x7C,=0D + 0xBF, 0x58, 0xA4, 0xE0, 0x45, 0xDC, 0x2B, 0x0B, 0x2C, 0x40, 0x52, 0x4D, = 0x4B, 0xA9, 0x8A, 0x77,=0D + 0x87, 0x31, 0xF8, 0x45, 0xD9, 0x60, 0xBB, 0xAD, 0x28, 0x29, 0x14, 0x0D, = 0x0D, 0x8F, 0x0F, 0x34,=0D + 0x76, 0x88, 0xF3, 0x5A, 0x65, 0x00, 0x54, 0x22, 0x35, 0xBF, 0x3A, 0x2B, = 0xE9, 0xB0, 0x24, 0xE5,=0D + 0xBE, 0xDF, 0x08, 0xA0, 0x02, 0xB2, 0x81, 0x01, 0xE8, 0x14, 0xBE, 0x6E, = 0x7E, 0xBD, 0x60, 0x0C,=0D + 0x4A, 0xD8, 0x57, 0xA4, 0x50, 0xD3, 0xD0, 0x59, 0xCE, 0x57, 0x27, 0xE9, = 0xA6, 0x16, 0x15, 0x5F,=0D + 0xF2, 0x6C, 0xCC, 0x57, 0x36, 0x20, 0x06, 0xE6, 0xA7, 0x24, 0x22, 0xB0, = 0xB1, 0xC4, 0xBC, 0x2C,=0D + 0x5C, 0xCE, 0x92, 0x11, 0xFF, 0x6F, 0x8C, 0x14, 0x7E, 0xC4, 0x10, 0x02, = 0xF6, 0x69, 0x86, 0x6D,=0D + 0x5B, 0x64, 0x81, 0x13,=0D + };=0D +=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 PrivateKey[] =3D {=0D + 0x30, 0x82, 0x04, 0xA4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, = 0xBC, 0xE4, 0x67, 0xDC,=0D + 0xC7, 0xEA, 0x6F, 0x8A, 0xA7, 0xCC, 0xB2, 0x54, 0x47, 0x48, 0x6A, 0xE2, = 0x39, 0xFF, 0xC2, 0x48,=0D + 0x58, 0x34, 0x07, 0x03, 0x6D, 0x39, 0xB3, 0x67, 0x46, 0x4C, 0xBC, 0xA0, = 0xFA, 0x4E, 0x64, 0x23,=0D + 0x56, 0x47, 0x7B, 0xC9, 0x1A, 0x2A, 0x55, 0x42, 0x54, 0x10, 0x18, 0x30, = 0x92, 0x60, 0x30, 0x5B,=0D + 0x9E, 0xC0, 0x65, 0xD2, 0xD4, 0x05, 0x4A, 0xA6, 0x10, 0x66, 0x04, 0xA9, = 0x54, 0x4E, 0xEE, 0x49,=0D + 0x39, 0x43, 0x65, 0x1E, 0x2E, 0x28, 0xDE, 0x79, 0x24, 0xA9, 0x7E, 0xD8, = 0x5B, 0xBC, 0x2F, 0x46,=0D + 0x6A, 0xB7, 0xB6, 0x0D, 0x17, 0x88, 0x37, 0x52, 0x5C, 0xFE, 0x93, 0xC0, = 0xE2, 0xFD, 0x6A, 0x08,=0D + 0x1B, 0xFB, 0xD1, 0x87, 0xBD, 0xBD, 0x58, 0x57, 0x2C, 0x06, 0x5D, 0xD2, = 0x7D, 0x52, 0xE2, 0x49,=0D + 0x8E, 0xDC, 0xE5, 0x26, 0xBD, 0x92, 0x60, 0xB0, 0x3F, 0x58, 0x5E, 0x52, = 0xD7, 0x91, 0xDA, 0x93,=0D + 0x62, 0x8D, 0x71, 0x80, 0x53, 0xBA, 0x15, 0xC4, 0x1F, 0xF3, 0xBD, 0xE0, = 0xC5, 0xA4, 0xB8, 0xD3,=0D + 0x64, 0x12, 0x14, 0x1B, 0x11, 0x6B, 0x7B, 0xC2, 0x92, 0xC7, 0xE2, 0x94, = 0x0B, 0xB8, 0x67, 0x38,=0D + 0x48, 0x63, 0x11, 0x74, 0x25, 0x7C, 0x37, 0xC3, 0xB2, 0xAE, 0xD9, 0xA7, = 0x17, 0x9C, 0x4B, 0x9D,=0D + 0x6C, 0x27, 0xB0, 0x87, 0x16, 0x6B, 0xF2, 0x96, 0xE5, 0x1D, 0x37, 0x27, = 0xDE, 0xF2, 0x98, 0xB7,=0D + 0x81, 0x08, 0xD9, 0x7A, 0xBA, 0x84, 0x14, 0x61, 0x60, 0x48, 0xCE, 0xCE, = 0x51, 0x73, 0xF4, 0xDB,=0D + 0xF1, 0x5F, 0x7A, 0x17, 0x71, 0x4F, 0xC1, 0x0B, 0xCE, 0xC7, 0x31, 0xC1, = 0x4E, 0xA3, 0xEE, 0x6F,=0D + 0x72, 0x97, 0x90, 0xFB, 0x8B, 0x54, 0x9F, 0x82, 0x5B, 0x48, 0x5A, 0xF1, = 0xAD, 0x8B, 0x3A, 0xCD,=0D + 0xCA, 0xB2, 0x8B, 0x7A, 0x53, 0xD4, 0xF7, 0x71, 0x16, 0x75, 0xA7, 0x35, = 0x02, 0x03, 0x01, 0x00,=0D + 0x01, 0x02, 0x82, 0x01, 0x00, 0x13, 0xF7, 0xD1, 0x42, 0xF5, 0x9F, 0x42, = 0xCB, 0x55, 0x91, 0xBE,=0D + 0x08, 0x4A, 0xC0, 0xCD, 0x0B, 0xBD, 0x35, 0xDC, 0x43, 0xE9, 0x8F, 0x16, = 0x6E, 0xB6, 0x4D, 0x33,=0D + 0x39, 0xE7, 0xA4, 0x95, 0x0C, 0x2F, 0x69, 0xBA, 0x0C, 0x42, 0x42, 0xAC, = 0x43, 0x46, 0x10, 0xD3,=0D + 0x92, 0x7F, 0x70, 0x74, 0x1E, 0x2E, 0x5B, 0x1C, 0xC1, 0x92, 0xB6, 0xA4, = 0x0C, 0xF5, 0x7C, 0xD9,=0D + 0xB7, 0x54, 0x64, 0x74, 0x79, 0xB1, 0xFF, 0xE6, 0x10, 0xB7, 0x8C, 0xF8, = 0x53, 0x88, 0x6D, 0xA9,=0D + 0x97, 0x04, 0xD9, 0x26, 0x1F, 0x99, 0x12, 0xFB, 0xAC, 0x65, 0xFB, 0xA5, = 0xB3, 0x1C, 0x99, 0xB9,=0D + 0xBF, 0x6B, 0x35, 0x3E, 0x49, 0x55, 0xB5, 0x94, 0x4F, 0xE7, 0x25, 0x67, = 0xB1, 0x01, 0xCD, 0xD2,=0D + 0x58, 0xE4, 0xBE, 0x87, 0x8C, 0x88, 0xD3, 0x0A, 0x38, 0xDC, 0x71, 0x5D, = 0x88, 0x0A, 0xE2, 0x3E,=0D + 0x76, 0x63, 0x3B, 0xE4, 0x3C, 0x8F, 0x2F, 0x29, 0x1D, 0xD1, 0x66, 0x8D, = 0xC0, 0x4A, 0x68, 0x15,=0D + 0x90, 0x4C, 0x95, 0x61, 0xF4, 0xFD, 0xE8, 0xFA, 0x9C, 0x6C, 0x00, 0x22, = 0x23, 0xD5, 0x17, 0x6E,=0D + 0xEE, 0xA8, 0xD8, 0x70, 0xC5, 0x74, 0xEA, 0x09, 0x13, 0x7F, 0x0C, 0x37, = 0x4D, 0x50, 0xCD, 0xE9,=0D + 0x16, 0xC2, 0xD5, 0xDE, 0x5E, 0xC3, 0xFC, 0x46, 0x08, 0xF1, 0x99, 0xC0, = 0xB4, 0x28, 0xFD, 0x2B,=0D + 0x29, 0xEF, 0x76, 0xD7, 0x04, 0x4F, 0x02, 0x54, 0x16, 0x54, 0x55, 0x20, = 0xEC, 0xBC, 0xBF, 0x85,=0D + 0x5F, 0x12, 0xCC, 0xFC, 0x0D, 0xF2, 0xEF, 0xFC, 0x4D, 0x3E, 0xA2, 0x5E, = 0x97, 0xFE, 0x35, 0x10,=0D + 0x0F, 0x53, 0x1F, 0x80, 0xD5, 0xC0, 0xB4, 0xE9, 0xE9, 0x31, 0x4C, 0x89, = 0x14, 0x72, 0x39, 0x65,=0D + 0x89, 0xEF, 0x7A, 0x51, 0x4A, 0xB9, 0xA9, 0xCC, 0x1B, 0x52, 0xB0, 0x02, = 0x52, 0x65, 0x2F, 0x0B,=0D + 0x89, 0x41, 0x70, 0x1E, 0x01, 0x02, 0x81, 0x81, 0x00, 0xDB, 0xE8, 0x21, = 0x9E, 0xDB, 0x58, 0x42,=0D + 0x0B, 0x02, 0x35, 0x87, 0xDF, 0x35, 0xF4, 0xC1, 0xEE, 0xD5, 0x72, 0x2C, = 0xDC, 0x4D, 0xC7, 0xDA,=0D + 0x6D, 0x18, 0x0F, 0x68, 0x6F, 0xE7, 0xB0, 0x6C, 0xA0, 0xB2, 0x9E, 0xB8, = 0x5E, 0x4A, 0x86, 0x81,=0D + 0x97, 0xBD, 0x78, 0xFC, 0x06, 0xD5, 0xBE, 0x98, 0x42, 0x38, 0x78, 0x78, = 0x16, 0xAE, 0x39, 0x56,=0D + 0xFB, 0x67, 0x6B, 0xED, 0x7F, 0xB3, 0xC3, 0x7D, 0x95, 0x86, 0x05, 0x0C, = 0xF1, 0x4C, 0xC2, 0x67,=0D + 0x94, 0x93, 0x1B, 0xB7, 0x91, 0x0A, 0x80, 0xE2, 0x85, 0xA7, 0x75, 0x20, = 0x61, 0xCD, 0x40, 0x5B,=0D + 0x39, 0x13, 0x32, 0xF7, 0xB8, 0xD7, 0x0C, 0x39, 0x4C, 0x82, 0x4B, 0xA3, = 0x9F, 0x5E, 0xB1, 0xB0,=0D + 0x38, 0x81, 0x8B, 0x1E, 0xBD, 0x2B, 0xC2, 0x9F, 0x3A, 0x68, 0x72, 0xC2, = 0x90, 0xCB, 0xA2, 0xE2,=0D + 0xAC, 0x86, 0xFF, 0xC8, 0xD7, 0xB8, 0x97, 0x0E, 0x69, 0x02, 0x81, 0x81, = 0x00, 0xDB, 0xE5, 0x21,=0D + 0x1F, 0x4C, 0x83, 0xD9, 0x7A, 0x56, 0x87, 0x82, 0xF1, 0x40, 0x1A, 0xD3, = 0x5B, 0xC5, 0xB4, 0x4D,=0D + 0x18, 0x8A, 0xE3, 0x6B, 0xC9, 0x7E, 0x8F, 0x5D, 0x00, 0x33, 0x66, 0xEB, = 0xAE, 0x8E, 0x54, 0x49,=0D + 0xD7, 0xEA, 0xF3, 0xF9, 0xED, 0xD7, 0xEE, 0x2C, 0xC8, 0xD6, 0x8F, 0x40, = 0x0A, 0x53, 0xCB, 0x5D,=0D + 0x16, 0xB7, 0xEB, 0x4E, 0xFB, 0x11, 0x18, 0x1B, 0x4B, 0x6B, 0x43, 0x04, = 0xD6, 0x1D, 0x8F, 0x6D,=0D + 0x4D, 0x48, 0x8B, 0x6C, 0x82, 0x52, 0xB4, 0x8D, 0x58, 0x9B, 0x19, 0x8D, = 0xE0, 0x0D, 0xFD, 0x15,=0D + 0x9D, 0x35, 0xDF, 0x5E, 0xED, 0xDB, 0x8F, 0x8C, 0x44, 0x11, 0xC9, 0x9A, = 0xD9, 0x3F, 0xD4, 0xA5,=0D + 0xEE, 0x68, 0x3B, 0x38, 0xD1, 0x66, 0xB0, 0x62, 0x7E, 0xA5, 0x04, 0xD1, = 0x67, 0xA4, 0x1D, 0x93,=0D + 0xD6, 0x2A, 0xFB, 0xF6, 0xC1, 0xB2, 0xC4, 0x02, 0x8A, 0xB2, 0xA8, 0xD0, = 0xED, 0x02, 0x81, 0x81,=0D + 0x00, 0xD1, 0x1D, 0x98, 0x43, 0x09, 0x10, 0x8F, 0x95, 0x0A, 0x5F, 0xBF, = 0x3A, 0x1A, 0x84, 0x0A,=0D + 0x9B, 0x44, 0x6C, 0x53, 0x8E, 0x97, 0x84, 0x72, 0x08, 0x85, 0xF5, 0xB8, = 0xF9, 0x99, 0x58, 0x22,=0D + 0xA4, 0x59, 0xD7, 0x27, 0x39, 0xBB, 0x22, 0xD7, 0x3F, 0x65, 0x95, 0x14, = 0x0C, 0xA7, 0xDB, 0x9B,=0D + 0xCC, 0x75, 0x08, 0xD2, 0x21, 0xB7, 0x41, 0x9D, 0x9E, 0x6A, 0x85, 0xAE, = 0x8E, 0x5E, 0x72, 0x8B,=0D + 0x0C, 0xD2, 0x2A, 0x21, 0x59, 0xA1, 0x05, 0xC9, 0x1B, 0xF7, 0x1C, 0x47, = 0x5E, 0x6C, 0x9F, 0x8D,=0D + 0x49, 0x4D, 0xA9, 0xCA, 0xC6, 0x56, 0x39, 0x59, 0xC6, 0x17, 0xA4, 0xC2, = 0xFF, 0x09, 0xB8, 0x7D,=0D + 0x10, 0x6D, 0x62, 0xE2, 0x50, 0x9D, 0xEA, 0xD8, 0xC9, 0x93, 0x1E, 0xA9, = 0x77, 0x78, 0x92, 0x95,=0D + 0x7A, 0x24, 0x72, 0xE4, 0xE4, 0x6E, 0x51, 0x11, 0xBE, 0xC0, 0x8D, 0xA1, = 0xFE, 0xC9, 0x71, 0x13,=0D + 0xE9, 0x02, 0x81, 0x80, 0x38, 0xE5, 0x3F, 0x3D, 0xB6, 0xF1, 0x82, 0x8A, = 0xD9, 0xEA, 0xB4, 0x21,=0D + 0xB1, 0xE1, 0x7F, 0x00, 0x86, 0xD6, 0x11, 0x00, 0xA1, 0xA7, 0x18, 0x53, = 0x89, 0x50, 0x94, 0xD2,=0D + 0xA1, 0x7A, 0x26, 0xCF, 0x02, 0x7A, 0xA2, 0xA4, 0xA0, 0x61, 0x42, 0x30, = 0x9D, 0x27, 0x3E, 0x25,=0D + 0x35, 0x06, 0xD9, 0x9E, 0x12, 0x72, 0x53, 0x02, 0xB6, 0xD1, 0xC6, 0x9C, = 0xC5, 0x9E, 0x84, 0x29,=0D + 0x6E, 0x76, 0x67, 0xC0, 0xF2, 0xE3, 0x12, 0x77, 0xE5, 0xA6, 0x55, 0x8C, = 0x1E, 0xD4, 0x22, 0xA2,=0D + 0x63, 0x77, 0x28, 0x33, 0x69, 0xCB, 0x2B, 0x15, 0x83, 0x43, 0xE9, 0x6F, = 0x07, 0xD9, 0x4B, 0x84,=0D + 0xAD, 0x49, 0x89, 0xAC, 0x5E, 0x8C, 0xA9, 0xE6, 0x56, 0xC7, 0xC3, 0xFA, = 0xC2, 0x64, 0x2F, 0x07,=0D + 0xEF, 0xB0, 0xA0, 0x71, 0xFD, 0x8F, 0xBD, 0x99, 0xB3, 0x83, 0x80, 0x24, = 0x3C, 0x19, 0xE5, 0x42,=0D + 0x77, 0xD9, 0xA0, 0x3D, 0x02, 0x81, 0x81, 0x00, 0xB7, 0x35, 0xE9, 0x66, = 0x4A, 0xCD, 0x5F, 0x5C,=0D + 0x44, 0x9A, 0x7F, 0x23, 0xAE, 0xC2, 0x7F, 0xF0, 0x8D, 0xE4, 0xDB, 0xCD, = 0x1A, 0x8A, 0x40, 0xD7,=0D + 0x0A, 0xC4, 0x3E, 0xC5, 0x03, 0xFB, 0x47, 0xAB, 0x72, 0xDF, 0xD7, 0x68, = 0x27, 0x6E, 0x86, 0x94,=0D + 0x2A, 0x2A, 0xDA, 0x25, 0x9E, 0xF6, 0x5E, 0xE0, 0x6D, 0x7C, 0x7D, 0xFE, = 0x72, 0xDD, 0xC7, 0xBC,=0D + 0x74, 0xC7, 0xAD, 0xEA, 0x44, 0xBE, 0x5C, 0x8A, 0x03, 0xCD, 0x35, 0x74, = 0x6F, 0x4E, 0x92, 0x31,=0D + 0xBE, 0x57, 0x9A, 0x02, 0x0C, 0xFC, 0xD1, 0xD5, 0xE7, 0x3E, 0x53, 0x0C, = 0x47, 0x12, 0x39, 0x45,=0D + 0x6E, 0x35, 0x24, 0xA6, 0xDA, 0x42, 0x63, 0xC6, 0xBF, 0xCA, 0xE8, 0x32, = 0xFD, 0x61, 0xC0, 0x80,=0D + 0x39, 0xD2, 0xB7, 0x0D, 0xF3, 0xA2, 0xF3, 0xE4, 0x49, 0x26, 0x89, 0xD0, = 0xA0, 0x24, 0xC8, 0x27,=0D + 0x86, 0x10, 0x09, 0x88, 0x6C, 0x35, 0x60, 0xF2,=0D + };=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyOaepEncrypt (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + UINT8 File[4];=0D + UINT8 *OutBuffer;=0D + UINTN OutBufferSize;=0D + UINT8 *OutBuffer2;=0D + UINTN OutBuffer2Size;=0D +=0D + // Create a file and add content '123' in it=0D + File[0] =3D '1';=0D + File[1] =3D '2';=0D + File[2] =3D '3';=0D + File[3] =3D 0;=0D +=0D + OutBuffer =3D NULL;=0D + OutBufferSize =3D 0;=0D + OutBuffer2 =3D NULL;=0D + OutBuffer2Size =3D 0;=0D +=0D + Status =3D Pkcs1v2Encrypt (=0D + SelfTestCert,=0D + (UINTN)sizeof (SelfTestCert),=0D + File,=0D + (UINTN)sizeof (File),=0D + NULL,=0D + 0,=0D + &OutBuffer,=0D + (UINTN *)&OutBufferSize=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D Pkcs1v2Encrypt (=0D + SelfTestCert,=0D + (UINTN)sizeof (SelfTestCert),=0D + File,=0D + (UINTN)4,=0D + NULL,=0D + 0,=0D + &OutBuffer2,=0D + (UINTN *)&OutBuffer2Size=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + // TRUE - the two OutBuffers are indentical. That means the Oaep encrypt= result is incorrect.=0D + Status =3D (CompareMem (OutBuffer, OutBuffer2, OutBufferSize >=3D OutBuf= fer2Size ? OutBufferSize : OutBuffer2Size) =3D=3D 0);=0D + UT_ASSERT_FALSE (Status);=0D +=0D + if (OutBuffer) {=0D + FreePool (OutBuffer);=0D + OutBuffer =3D NULL;=0D + OutBufferSize =3D 0;=0D + }=0D +=0D + if (OutBuffer2) {=0D + FreePool (OutBuffer2);=0D + OutBuffer2 =3D NULL;=0D + OutBuffer2Size =3D 0;=0D + }=0D +=0D + Status =3D Pkcs1v2Encrypt (=0D + SelfTestCert,=0D + (UINTN)sizeof (SelfTestCert),=0D + File,=0D + (UINTN)4,=0D + RandSeed,=0D + (UINTN)sizeof (RandSeed),=0D + &OutBuffer,=0D + (UINTN *)&OutBufferSize=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D Pkcs1v2Encrypt (=0D + SelfTestCert,=0D + (UINTN)sizeof (SelfTestCert),=0D + File,=0D + (UINTN)4,=0D + RandSeed,=0D + (UINTN)sizeof (RandSeed),=0D + &OutBuffer2,=0D + (UINTN *)&OutBuffer2Size=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + // TRUE - the two OutBuffers are indentical. That means the Oaep encrypt= result is incorrect.=0D + Status =3D (CompareMem (OutBuffer, OutBuffer2, OutBufferSize >=3D OutBuf= fer2Size ? OutBufferSize : OutBuffer2Size) =3D=3D 0);=0D + UT_ASSERT_FALSE (Status);=0D +=0D + if (OutBuffer) {=0D + FreePool (OutBuffer);=0D + OutBuffer =3D NULL;=0D + OutBufferSize =3D 0;=0D + }=0D +=0D + if (OutBuffer2) {=0D + FreePool (OutBuffer2);=0D + OutBuffer2 =3D NULL;=0D + OutBuffer2Size =3D 0;=0D + }=0D +=0D + Status =3D Pkcs1v2Encrypt (=0D + NULL,=0D + (UINTN)sizeof (SelfTestCert),=0D + File,=0D + (UINTN)4,=0D + NULL,=0D + 0,=0D + &OutBuffer,=0D + (UINTN *)&OutBufferSize=0D + );=0D + UT_ASSERT_FALSE (Status);=0D +=0D + Status =3D Pkcs1v2Encrypt (=0D + SelfTestCert,=0D + (UINTN)sizeof (SelfTestCert),=0D + File,=0D + (UINTN)4,=0D + NULL,=0D + 0,=0D + (UINT8 **)NULL,=0D + (UINTN *)&OutBufferSize=0D + );=0D + UT_ASSERT_FALSE (Status);=0D +=0D + Status =3D Pkcs1v2Encrypt (=0D + SelfTestCert,=0D + (UINTN)sizeof (SelfTestCert),=0D + File,=0D + (UINTN)4,=0D + NULL,=0D + 0,=0D + &OutBuffer,=0D + (UINTN *)NULL=0D + );=0D + UT_ASSERT_FALSE (Status);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mOaepTest[] =3D {=0D + //=0D + // -----Description--------------------------------------Class--------= --------------Function-----------------Pre---Post--Context=0D + //=0D + {"TestVerifyOaepEncrypt()", "CryptoPkg.BaseCryptLib.Pkcs1v2Encrypt", T= estVerifyOaepEncrypt, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mOaepTestNum =3D ARRAY_SIZE(mOaepTest);=0D +=0D +=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2Tests.= c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2Tests.c new file mode 100644 index 000000000000..b64248aa5619 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs5Pbkdf2Tests.c @@ -0,0 +1,71 @@ +/** @file=0D + Application for PKCS#5 PBKDF2 Function Validation.=0D +=0D +Copyright (c) 2016, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +//=0D +// PBKDF2 HMAC-SHA1 Test Vector from RFC6070=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Password =3D "password"; // I= nput Password=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINTN PassLen =3D 8; // L= ength of Input Password=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Salt =3D "salt"; // I= nput Salt=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINTN SaltLen =3D 4; // L= ength of Input Salt=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINTN Count =3D 2; // I= nterationCount=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINTN KeyLen =3D 20; // L= ength of derived key=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DerivedKey[] =3D { // E= xpected output key=0D + 0xea, 0x6c, 0x01, 0x4d, 0xc7, 0x2d, 0x6f, 0x8c, 0xcd, 0x1e, 0xd9, 0x2a, = 0xce, 0x1d, 0x41, 0xf0,=0D + 0xd8, 0xde, 0x89, 0x57=0D + };=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyPkcs5Pbkdf2 (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + UINT8 *OutKey;=0D +=0D + OutKey =3D AllocatePool (KeyLen);=0D +=0D + //=0D + // Verify PKCS#5 PBKDF2 Key Derivation Function=0D + //=0D + Status =3D Pkcs5HashPassword (=0D + PassLen,=0D + Password,=0D + SaltLen,=0D + (CONST UINT8 *)Salt,=0D + Count,=0D + SHA1_DIGEST_SIZE,=0D + KeyLen,=0D + OutKey=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Check the output key with the expected key result=0D + //=0D + UT_ASSERT_MEM_EQUAL (OutKey, DerivedKey, KeyLen);=0D +=0D + //=0D + // Release Resources=0D + //=0D + FreePool (OutKey);=0D +=0D + return EFI_SUCCESS;=0D +}=0D +=0D +TEST_DESC mPkcs5Test[] =3D {=0D + //=0D + // -----Description------------------------------Class----------------= ------Function-----------------Pre---Post--Context=0D + //=0D + {"TestVerifyPkcs5Pbkdf2()", "CryptoPkg.BaseCryptLib.Pkcs5", T= estVerifyPkcs5Pbkdf2, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mPkcs5TestNum =3D ARRAY_SIZE(mPkcs5Test);=0D 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=0D + * Copyright (c) Microsoft Corporation.=0D + * SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D + This is an test code which verifies specified=0D + Enhanced Key Usages (EKU)'s are present in the leaf signer=0D + of a PKCS7 formatted signature.=0D +=0D +=0D + A typical signing certificate chain looks like this: (Could be RSA or EC= C).=0D +=0D + ------------------------------------------=0D + | | // Root of trust. ECDSA = P521 curve=0D + | TestEKUParsingRoot | // SHA 256 Key Usage: CE= RT_DIGITAL_SIGNATURE_KEY_USAGE=0D + | | // CERT_KEY_CERT_SIGN_KE= Y_USAGE | CERT_CRL_SIGN_KEY_USAGE=0D + ------------------------------------------=0D + ^=0D + |=0D + ------------------------------------------=0D + | | // Policy CA. Issues su= bordinate CAs. ECC P384 curve.=0D + | TestEKUParsingPolicyCA | // SHA 256 Key Usage:=0D + | | // CERT_KEY_CERT_SIGN_KE= Y_USAGE | CERT_CRL_SIGN_KEY_USAGE=0D + ------------------------------------------=0D + ^=0D + |=0D + ------------------------------------------=0D + | | // Issues end-entity (le= af) signers. ECC P256 curve.=0D + | TestEKUParsingIssuingCA | // SHA 256 Key Usage: CE= RT_DIGITAL_SIGNATURE_KEY_USAGE=0D + | | // Enhanced Key Usage:=0D + ------------------------------------------ // 1.3.6.1.4.1.311.76.9.= 21.1 (Surface firmware signing)=0D + ^=0D + |=0D + --------------------------------------=0D + / TestEKUParsingLeafSigner && / // Leaf signer, ECC P25= 6 curve.=0D + / TestEKUParsingLeafSignerPid12345 / // SHA 256 Key Usage: CE= RT_DIGITAL_SIGNATURE_KEY_USAGE=0D + / / // Enhanced Key usages:= =0D + -------------------------------------- // 1.3.6.1.4.1.311.76.9.= 21.1 (Surface firmware signing)=0D + // 1.3.6.1.4.1.311.76.9.= 21.1.N, N =3D=3D Product ID.=0D +=0D +=0D +=0D +=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +#include "Pkcs7EkuTestSignatures.h"=0D +=0D +EFI_STATUS=0D +EFIAPI=0D +VerifyEKUsInPkcs7Signature (=0D + IN CONST UINT8 *Pkcs7Signature,=0D + IN CONST UINT32 SignatureSize,=0D + IN CONST CHAR8 *RequiredEKUs[],=0D + IN CONST UINT32 RequiredEKUsSize,=0D + IN BOOLEAN RequireAllPresent=0D + );=0D +=0D +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +///=0D +/// TEST CASES=0D +///=0D +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +///=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +=0D +CONST CHAR8 FIRMWARE_SIGNER_EKU[] =3D "1.3.6.1.4.1.311.76.9.21.1";=0D +=0D +=0D +/**=0D + TestVerifyEKUsInSignature()=0D +=0D + Verify that "1.3.6.1.4.1.311.76.9.21.1" (Firmware signature) is in the=0D + leaf signer certificate.=0D +=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyEKUsInSignature (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(ProductionECCSignature,=0D + ARRAY_SIZE(ProductionECCSignature),= =0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestVerifyEKUsInSignature()=0D +=0D +=0D +/**=0D + TestVerifyEKUsWith3CertsInSignature()=0D +=0D + This PKCS7 signature has 3 certificates in it. (Policy CA, Issuing CA=0D + and leaf signer). It has one firmware signing EKU in it.=0D + "1.3.6.1.4.1.311.76.9.21.1"=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyEKUsWith3CertsInSignature (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignEKUsWith3CertsInSignature,= =0D + ARRAY_SIZE(TestSignEKUsWith3CertsInS= ignature),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestVerifyEKUsWith3CertsInSignature()=0D +=0D +/**=0D + TestVerifyEKUsWith2CertsInSignature()=0D +=0D + This PKCS7 signature has 2 certificates in it. (Issuing CA and leaf sign= er).=0D + It has one firmware signing EKU in it. "1.3.6.1.4.1.311.76.9.21.1"=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyEKUsWith2CertsInSignature (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignEKUsWith2CertsInSignature,= =0D + ARRAY_SIZE(TestSignEKUsWith2CertsInS= ignature),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestVerifyEKUsWith2CertsInSignature()=0D +=0D +=0D +/**=0D + TestVerifyEKUsWith1CertInSignature()=0D +=0D + This PKCS7 signature only has the leaf signer in it.=0D + It has one firmware signing EKU in it. "1.3.6.1.4.1.311.76.9.21.1"=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyEKUsWith1CertInSignature (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + CONST CHAR8* RequiredEKUs[] =3D { FIRMWARE_SIGNER_EKU };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignEKUsWith1CertInSignature,= =0D + ARRAY_SIZE(TestSignEKUsWith1CertInSi= gnature),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestVerifyEKUsWith1CertInSignature()=0D +=0D +=0D +/**=0D + TestVerifyEKUsWithMultipleEKUsInCert()=0D +=0D +=0D + This signature has two EKU's in it:=0D + "1.3.6.1.4.1.311.76.9.21.1"=0D + "1.3.6.1.4.1.311.76.9.21.2"=0D + We verify that both EKU's were present in the leaf signer.=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyEKUsWithMultipleEKUsInCert (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1",=0D + "1.3.6.1.4.1.311.76.9.21.1.2" };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithMultipleEKUsInCert,= =0D + ARRAY_SIZE(TestSignedWithMultipleEKU= sInCert),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestVerifyEKUsWithMultipleEKUsInCert()=0D +=0D +=0D +/**=0D + TestEkusNotPresentInSignature()=0D +=0D + This test verifies that if we send an EKU that is not in the signature,= =0D + that we get back an error.=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestEkusNotPresentInSignature (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + //=0D + // This EKU is not in the signature.=0D + //=0D + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.3" };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithMultipleEKUsInCert,= =0D + ARRAY_SIZE(TestSignedWithMultipleEKU= sInCert),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestEkusNotPresentInSignature()=0D +=0D +/**=0D + TestEkusNotPresentInSignature()=0D +=0D + This test signature has two EKU's in it: (Product ID is 10001)=0D + "1.3.6.1.4.1.311.76.9.21.1"=0D + "1.3.6.1.4.1.311.76.9.21.1.10001"=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestProductId10001PresentInSignature(=0D + IN UNIT_TEST_CONTEXT Context=0D +)=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + //=0D + // These EKU's are present in the leaf signer certificate.=0D + //=0D + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1",=0D + "1.3.6.1.4.1.311.76.9.21.1.10001" };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,=0D + ARRAY_SIZE(TestSignedWithProductId10= 001),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestProductId10001PresentInSignature()=0D +=0D +=0D +/**=0D + TestOnlyOneEkuInListRequired()=0D +=0D + This test will check the BOOLEAN RequireAllPresent parameter in the=0D + call to VerifyEKUsInPkcs7Signature() behaves properly. The signature=0D + has two EKU's in it:=0D +=0D + "1.3.6.1.4.1.311.76.9.21.1"=0D + "1.3.6.1.4.1.311.76.9.21.1.10001"=0D +=0D + but we only pass in one of them, and set RequireAllPresent to FALSE.=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestOnlyOneEkuInListRequired(=0D + IN UNIT_TEST_CONTEXT Context=0D +)=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + //=0D + // This will test the flag that specifies it is OK to succeed if=0D + // any one of the EKU's passed in is found.=0D + //=0D + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1.10001" };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,=0D + ARRAY_SIZE(TestSignedWithProductId10= 001),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + FALSE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestOnlyOneEkuInListRequired()=0D +=0D +/**=0D + TestNoEKUsInSignature()=0D +=0D + This test uses a signature that was signed with a certificate that does= =0D + not contain any EKUs.=0D +=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestNoEKUsInSignature(=0D + IN UNIT_TEST_CONTEXT Context=0D +)=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + //=0D + // This EKU is not in the certificate, so it should fail.=0D + //=0D + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1" };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignatureWithNoEKUsPresent,=0D + ARRAY_SIZE(TestSignatureWithNoEKUsPr= esent),=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestNoEKUsInSignature()=0D +=0D +=0D +/**=0D + TestInvalidParameters()=0D +=0D + Passes the API invalid parameters, and ensures that it does not succeed.= =0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestInvalidParameters(=0D + IN UNIT_TEST_CONTEXT Context=0D +)=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + CONST CHAR8* RequiredEKUs[] =3D { "1.3.6.1.4.1.311.76.9.21.1" };=0D +=0D + //=0D + // Check bad signature.=0D + //=0D + Status =3D VerifyEKUsInPkcs7Signature(NULL,=0D + 0,=0D + (CONST CHAR8**)RequiredEKUs,=0D + ARRAY_SIZE(RequiredEKUs),=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_INVALID_PARAMETER);=0D +=0D + //=0D + // Check invalid EKU's=0D + //=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignatureWithNoEKUsPresent,=0D + ARRAY_SIZE(TestSignatureWithNoEKUsPr= esent),=0D + (CONST CHAR8**)NULL,=0D + 0,=0D + TRUE);=0D + UT_ASSERT_STATUS_EQUAL (Status, EFI_INVALID_PARAMETER);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestInvalidParameters()=0D +=0D +=0D +/**=0D + TestEKUSubStringFails()=0D +=0D + Pass the API a sub set and super set of an EKU and ensure that they=0D + don't pass.=0D +=0D + @param[in] Framework - Unit-test framework handle.=0D + @param[in] Context - Optional context pointer for this test.=0D +=0D + @retval UNIT_TEST_PASSED - The required EKUs were found in th= e signature.=0D + @retval UNIT_TEST_ERROR_TEST_FAILED - Something failed, check the debug = output.=0D +**/=0D +static=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestEKUSubsetSupersetFails(=0D + IN UNIT_TEST_CONTEXT Context=0D +)=0D +{=0D + EFI_STATUS Status =3D EFI_SUCCESS;=0D +=0D + //=0D + // This signature has an EKU of:=0D + // "1.3.6.1.4.1.311.76.9.21.1.10001"=0D + // so ensure that=0D + // "1.3.6.1.4.1.311.76.9.21"=0D + // does not pass.=0D + //=0D + CONST CHAR8* RequiredEKUs1[] =3D { "1.3.6.1.4.1.311.76.9.21" };=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,=0D + ARRAY_SIZE(TestSignedWithProductId10= 001),=0D + (CONST CHAR8**)RequiredEKUs1,=0D + ARRAY_SIZE(RequiredEKUs1),=0D + TRUE);=0D + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);=0D +=0D + //=0D + // This signature has an EKU of:=0D + // "1.3.6.1.4.1.311.76.9.21.1.10001"=0D + // so ensure that a super set=0D + // "1.3.6.1.4.1.311.76.9.21.1.10001.1"=0D + // does not pass.=0D + //=0D + CONST CHAR8* RequiredEKUs2[] =3D { "1.3.6.1.4.1.311.76.9.21.1.10001.1" }= ;=0D +=0D + Status =3D VerifyEKUsInPkcs7Signature(TestSignedWithProductId10001,=0D + ARRAY_SIZE(TestSignedWithProductId10= 001),=0D + (CONST CHAR8**)RequiredEKUs2,=0D + ARRAY_SIZE(RequiredEKUs2),=0D + TRUE);=0D + UT_ASSERT_NOT_EQUAL (Status, EFI_SUCCESS);=0D +=0D + return UNIT_TEST_PASSED;=0D +}// TestEKUSubsetSupersetFails()=0D +=0D +TEST_DESC mPkcs7EkuTest[] =3D {=0D + //=0D + // -----Description--------------------------------Class--------------= --------------Function------------------------------Pre---Post--Context=0D + //=0D + {"TestVerifyEKUsInSignature()", "CryptoPkg.BaseCryptLib.Eku= ", TestVerifyEKUsInSignature, NULL, NULL, NULL},=0D + {"TestVerifyEKUsWith3CertsInSignature()", "CryptoPkg.BaseCryptLib.Eku= ", TestVerifyEKUsWith3CertsInSignature, NULL, NULL, NULL},=0D + {"TestVerifyEKUsWith2CertsInSignature()", "CryptoPkg.BaseCryptLib.Eku= ", TestVerifyEKUsWith2CertsInSignature, NULL, NULL, NULL},=0D + {"TestVerifyEKUsWith1CertInSignature()", "CryptoPkg.BaseCryptLib.Eku= ", TestVerifyEKUsWith1CertInSignature, NULL, NULL, NULL},=0D + {"TestVerifyEKUsWithMultipleEKUsInCert()", "CryptoPkg.BaseCryptLib.Eku= ", TestVerifyEKUsWithMultipleEKUsInCert, NULL, NULL, NULL},=0D + {"TestEkusNotPresentInSignature()", "CryptoPkg.BaseCryptLib.Eku= ", TestEkusNotPresentInSignature, NULL, NULL, NULL},=0D + {"TestProductId10001PresentInSignature()", "CryptoPkg.BaseCryptLib.Eku= ", TestProductId10001PresentInSignature, NULL, NULL, NULL},=0D + {"TestOnlyOneEkuInListRequired()", "CryptoPkg.BaseCryptLib.Eku= ", TestOnlyOneEkuInListRequired, NULL, NULL, NULL},=0D + {"TestNoEKUsInSignature()", "CryptoPkg.BaseCryptLib.Eku= ", TestNoEKUsInSignature, NULL, NULL, NULL},=0D + {"TestInvalidParameters()", "CryptoPkg.BaseCryptLib.Eku= ", TestInvalidParameters, NULL, NULL, NULL},=0D + {"TestEKUSubsetSupersetFails()", "CryptoPkg.BaseCryptLib.Eku= ", TestEKUSubsetSupersetFails, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mPkcs7EkuTestNum =3D ARRAY_SIZE(mPkcs7EkuTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RandTests.c b/Cry= ptoPkg/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=0D + Application for Pseudorandom Number Generator Validation.=0D +=0D +Copyright (c) 2010, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +#define RANDOM_NUMBER_SIZE 256=0D +=0D +CONST UINT8 SeedString[] =3D "This is the random seed for PRNG verificat= ion.";=0D +=0D +UINT8 PreviousRandomBuffer[RANDOM_NUMBER_SIZE] =3D { 0x0 };=0D +=0D +UINT8 RandomBuffer[RANDOM_NUMBER_SIZE] =3D { 0x0 };=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyPrngGeneration (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + UINTN Index;=0D + BOOLEAN Status;=0D +=0D + Status =3D RandomSeed (SeedString, sizeof (SeedString));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + for (Index =3D 0; Index < 10; Index ++) {=0D + Status =3D RandomBytes (RandomBuffer, RANDOM_NUMBER_SIZE);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D (CompareMem (PreviousRandomBuffer, RandomBuffer, RANDOM_NUM= BER_SIZE) =3D=3D 0);=0D + UT_ASSERT_FALSE (Status);=0D +=0D + CopyMem (PreviousRandomBuffer, RandomBuffer, RANDOM_NUMBER_SIZE);=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mPrngTest[] =3D {=0D + //=0D + // -----Description--------------------------------Class--------------= ------Function----------------Pre---Post--Context=0D + //=0D + {"TestVerifyPrngGeneration()", "CryptoPkg.BaseCryptLib.Prng", = TestVerifyPrngGeneration, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mPrngTestNum =3D ARRAY_SIZE(mPrngTest);=0D 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=0D + Application for RSA Key Retrieving (from PEM and X509) & Signature Valid= ation.=0D +=0D + Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
=0D + Copyright (c) Microsoft Corporation.=0D + SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +=0D +//=0D +// Password-protected PEM Key data for RSA Private Key Retrieving (encrypt= ion key is "client").=0D +// (Generated by OpenSSL utility).=0D +// $ openssl genrsa -aes256 -out TestKeyPem -passout pass:client 1024=0D +// password should match PemPass in this file=0D +// $ xxd --include TestKeyPem=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestKeyPem[] =3D {=0D + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x52,= =0D + 0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,= =0D + 0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x50, 0x72, 0x6f, 0x63,= =0D + 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x34, 0x2c, 0x45, 0x4e, 0x43,= =0D + 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x0a, 0x44, 0x45, 0x4b, 0x2d, 0x49,= =0D + 0x6e, 0x66, 0x6f, 0x3a, 0x20, 0x41, 0x45, 0x53, 0x2d, 0x32, 0x35, 0x36,= =0D + 0x2d, 0x43, 0x42, 0x43, 0x2c, 0x34, 0x42, 0x44, 0x31, 0x30, 0x45, 0x39,= =0D + 0x35, 0x42, 0x38, 0x33, 0x39, 0x42, 0x30, 0x44, 0x33, 0x35, 0x36, 0x31,= =0D + 0x38, 0x41, 0x44, 0x36, 0x45, 0x46, 0x44, 0x36, 0x34, 0x32, 0x34, 0x44,= =0D + 0x36, 0x0a, 0x0a, 0x42, 0x50, 0x39, 0x49, 0x32, 0x42, 0x30, 0x6c, 0x50,= =0D + 0x7a, 0x4c, 0x50, 0x50, 0x38, 0x2f, 0x4b, 0x71, 0x35, 0x34, 0x2f, 0x56,= =0D + 0x68, 0x75, 0x4b, 0x35, 0x5a, 0x63, 0x72, 0x32, 0x55, 0x6c, 0x32, 0x75,= =0D + 0x43, 0x57, 0x4a, 0x62, 0x59, 0x33, 0x50, 0x77, 0x39, 0x6e, 0x4c, 0x6d,= =0D + 0x45, 0x41, 0x6a, 0x47, 0x74, 0x4a, 0x68, 0x57, 0x46, 0x66, 0x50, 0x47,= =0D + 0x38, 0x62, 0x6d, 0x41, 0x6f, 0x73, 0x56, 0x0a, 0x47, 0x76, 0x42, 0x30,= =0D + 0x6d, 0x2b, 0x7a, 0x5a, 0x43, 0x2b, 0x30, 0x6c, 0x57, 0x6c, 0x72, 0x59,= =0D + 0x7a, 0x51, 0x4b, 0x6a, 0x57, 0x79, 0x44, 0x6e, 0x4d, 0x58, 0x72, 0x33,= =0D + 0x51, 0x39, 0x69, 0x57, 0x32, 0x4b, 0x33, 0x68, 0x4d, 0x6b, 0x71, 0x51,= =0D + 0x4c, 0x31, 0x68, 0x65, 0x71, 0x52, 0x66, 0x66, 0x74, 0x47, 0x57, 0x51,= =0D + 0x5a, 0x36, 0x78, 0x4e, 0x6a, 0x72, 0x30, 0x7a, 0x6f, 0x51, 0x59, 0x73,= =0D + 0x0a, 0x34, 0x76, 0x69, 0x55, 0x46, 0x72, 0x7a, 0x2b, 0x52, 0x76, 0x4b,= =0D + 0x43, 0x2f, 0x33, 0x69, 0x71, 0x57, 0x59, 0x78, 0x55, 0x35, 0x4c, 0x6a,= =0D + 0x45, 0x74, 0x63, 0x5a, 0x4f, 0x2b, 0x53, 0x6d, 0x39, 0x42, 0x4c, 0x62,= =0D + 0x66, 0x58, 0x49, 0x71, 0x56, 0x72, 0x53, 0x6a, 0x54, 0x79, 0x58, 0x49,= =0D + 0x39, 0x70, 0x76, 0x78, 0x6f, 0x67, 0x50, 0x39, 0x38, 0x6b, 0x2b, 0x6c,= =0D + 0x41, 0x66, 0x37, 0x47, 0x36, 0x0a, 0x75, 0x39, 0x2b, 0x30, 0x31, 0x4d,= =0D + 0x47, 0x5a, 0x69, 0x36, 0x6b, 0x53, 0x73, 0x67, 0x48, 0x57, 0x7a, 0x43,= =0D + 0x41, 0x49, 0x51, 0x75, 0x38, 0x72, 0x6a, 0x4d, 0x34, 0x65, 0x74, 0x64,= =0D + 0x50, 0x62, 0x4a, 0x49, 0x77, 0x34, 0x65, 0x47, 0x6f, 0x32, 0x45, 0x49,= =0D + 0x44, 0x45, 0x54, 0x61, 0x52, 0x70, 0x73, 0x76, 0x47, 0x6a, 0x54, 0x6f,= =0D + 0x30, 0x51, 0x56, 0x69, 0x79, 0x79, 0x4a, 0x4f, 0x48, 0x32, 0x0a, 0x61,= =0D + 0x32, 0x71, 0x69, 0x2f, 0x47, 0x7a, 0x2f, 0x64, 0x48, 0x61, 0x62, 0x68,= =0D + 0x4d, 0x4e, 0x35, 0x4e, 0x53, 0x58, 0x56, 0x4d, 0x31, 0x54, 0x2f, 0x6d,= =0D + 0x69, 0x6f, 0x74, 0x68, 0x78, 0x59, 0x72, 0x2f, 0x4a, 0x69, 0x37, 0x6d,= =0D + 0x4e, 0x45, 0x75, 0x4a, 0x57, 0x38, 0x74, 0x6d, 0x75, 0x55, 0x4b, 0x58,= =0D + 0x33, 0x66, 0x63, 0x39, 0x42, 0x39, 0x32, 0x51, 0x6e, 0x54, 0x68, 0x43,= =0D + 0x69, 0x49, 0x2f, 0x0a, 0x79, 0x4f, 0x31, 0x32, 0x4c, 0x46, 0x58, 0x38,= =0D + 0x74, 0x4b, 0x4a, 0x37, 0x4b, 0x7a, 0x6f, 0x6b, 0x36, 0x44, 0x74, 0x6d,= =0D + 0x35, 0x73, 0x41, 0x74, 0x2b, 0x65, 0x4b, 0x76, 0x6f, 0x61, 0x47, 0x62,= =0D + 0x75, 0x4a, 0x78, 0x62, 0x52, 0x63, 0x36, 0x63, 0x4d, 0x58, 0x57, 0x46,= =0D + 0x36, 0x4d, 0x72, 0x4d, 0x30, 0x53, 0x78, 0x65, 0x4e, 0x6b, 0x5a, 0x77,= =0D + 0x5a, 0x36, 0x6c, 0x62, 0x4d, 0x39, 0x63, 0x55, 0x0a, 0x6c, 0x75, 0x34,= =0D + 0x4c, 0x56, 0x64, 0x34, 0x73, 0x56, 0x4c, 0x61, 0x76, 0x68, 0x75, 0x32,= =0D + 0x58, 0x48, 0x48, 0x53, 0x56, 0x30, 0x32, 0x32, 0x6d, 0x51, 0x72, 0x73,= =0D + 0x32, 0x69, 0x68, 0x74, 0x58, 0x44, 0x2b, 0x6c, 0x4d, 0x63, 0x2f, 0x35,= =0D + 0x62, 0x54, 0x41, 0x55, 0x6b, 0x4b, 0x4f, 0x42, 0x73, 0x43, 0x69, 0x4f,= =0D + 0x4b, 0x42, 0x56, 0x2b, 0x66, 0x70, 0x49, 0x62, 0x2b, 0x6d, 0x44, 0x33,= =0D + 0x58, 0x0a, 0x39, 0x37, 0x66, 0x36, 0x54, 0x66, 0x68, 0x37, 0x4f, 0x4f,= =0D + 0x6a, 0x74, 0x44, 0x79, 0x31, 0x6f, 0x52, 0x36, 0x70, 0x68, 0x48, 0x47,= =0D + 0x6e, 0x73, 0x43, 0x78, 0x72, 0x53, 0x72, 0x64, 0x48, 0x73, 0x2f, 0x34,= =0D + 0x33, 0x72, 0x61, 0x65, 0x42, 0x78, 0x59, 0x45, 0x41, 0x42, 0x4e, 0x59,= =0D + 0x68, 0x54, 0x47, 0x57, 0x49, 0x4d, 0x4a, 0x6b, 0x50, 0x63, 0x54, 0x53,= =0D + 0x73, 0x76, 0x77, 0x46, 0x37, 0x6d, 0x0a, 0x33, 0x6c, 0x38, 0x6b, 0x44,= =0D + 0x50, 0x48, 0x43, 0x4e, 0x68, 0x6e, 0x6e, 0x42, 0x69, 0x7a, 0x36, 0x2f,= =0D + 0x43, 0x38, 0x56, 0x31, 0x37, 0x78, 0x57, 0x34, 0x50, 0x2b, 0x79, 0x71,= =0D + 0x4a, 0x78, 0x58, 0x63, 0x49, 0x53, 0x72, 0x7a, 0x57, 0x53, 0x55, 0x72,= =0D + 0x34, 0x74, 0x71, 0x6b, 0x55, 0x58, 0x43, 0x57, 0x4c, 0x43, 0x66, 0x76,= =0D + 0x57, 0x7a, 0x4e, 0x65, 0x5a, 0x34, 0x4f, 0x34, 0x34, 0x54, 0x65, 0x0a,= =0D + 0x74, 0x31, 0x59, 0x65, 0x36, 0x77, 0x2b, 0x71, 0x4f, 0x55, 0x38, 0x50,= =0D + 0x42, 0x68, 0x72, 0x65, 0x4d, 0x38, 0x75, 0x32, 0x32, 0x42, 0x4f, 0x31,= =0D + 0x65, 0x2b, 0x44, 0x7a, 0x63, 0x74, 0x6c, 0x67, 0x43, 0x43, 0x6c, 0x38,= =0D + 0x79, 0x69, 0x37, 0x6f, 0x43, 0x56, 0x74, 0x66, 0x75, 0x59, 0x2f, 0x4c,= =0D + 0x72, 0x42, 0x61, 0x31, 0x74, 0x69, 0x43, 0x41, 0x37, 0x6c, 0x34, 0x75,= =0D + 0x58, 0x6b, 0x73, 0x4c, 0x0a, 0x2b, 0x31, 0x51, 0x79, 0x69, 0x4b, 0x31,= =0D + 0x6e, 0x43, 0x4f, 0x76, 0x74, 0x30, 0x46, 0x7a, 0x71, 0x62, 0x71, 0x78,= =0D + 0x54, 0x37, 0x53, 0x35, 0x4c, 0x56, 0x33, 0x5a, 0x33, 0x74, 0x34, 0x4a,= =0D + 0x46, 0x4f, 0x50, 0x62, 0x67, 0x63, 0x7a, 0x4e, 0x6b, 0x58, 0x55, 0x2b,= =0D + 0x4f, 0x74, 0x50, 0x6b, 0x6e, 0x45, 0x45, 0x76, 0x67, 0x57, 0x64, 0x76,= =0D + 0x31, 0x4f, 0x30, 0x6d, 0x52, 0x4a, 0x50, 0x31, 0x4e, 0x0a, 0x71, 0x43,= =0D + 0x32, 0x33, 0x4a, 0x6a, 0x36, 0x38, 0x4c, 0x30, 0x46, 0x63, 0x46, 0x4c,= =0D + 0x56, 0x56, 0x59, 0x76, 0x61, 0x44, 0x53, 0x76, 0x54, 0x45, 0x64, 0x50,= =0D + 0x54, 0x34, 0x62, 0x2f, 0x7a, 0x66, 0x64, 0x36, 0x51, 0x52, 0x6b, 0x38,= =0D + 0x70, 0x4d, 0x36, 0x77, 0x66, 0x61, 0x32, 0x50, 0x63, 0x75, 0x57, 0x65,= =0D + 0x79, 0x38, 0x48, 0x38, 0x76, 0x4e, 0x4b, 0x67, 0x2f, 0x65, 0x76, 0x34,= =0D + 0x77, 0x37, 0x0a, 0x6b, 0x6f, 0x6f, 0x4e, 0x59, 0x64, 0x77, 0x59, 0x69,= =0D + 0x6c, 0x37, 0x41, 0x50, 0x76, 0x42, 0x50, 0x4d, 0x63, 0x6c, 0x51, 0x76,= =0D + 0x63, 0x64, 0x71, 0x7a, 0x52, 0x7a, 0x4a, 0x6e, 0x4a, 0x74, 0x37, 0x70,= =0D + 0x35, 0x7a, 0x69, 0x2b, 0x2b, 0x4c, 0x43, 0x59, 0x55, 0x4d, 0x3d, 0x0a,= =0D + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x52, 0x53, 0x41,= =0D + 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45, 0x59,= =0D + 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a=0D + };=0D +=0D +//=0D +// Password for private key retrieving from encrypted PEM ("TestKeyPem").= =0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *PemPass =3D "client";=0D +=0D +//=0D +// Test CA X509 Certificate for X509 Verification Routine (Generated by Op= enSSL utility).=0D +// $ openssl req -x509 -days 10000 -key TestKeyPem -out TestCACert -outfor= m DER -subj "/C=3DUS/ST=3DWA/L=3DSeattle/O=3DTianocore/OU=3DEDK2/CN=3DUEFI"= =0D +// use password from PemPass variable in this file=0D +// $ xxd --include TestCACert=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCACert[] =3D {=0D + 0x30, 0x82, 0x02, 0x98, 0x30, 0x82, 0x02, 0x01, 0xa0, 0x03, 0x02, 0x01,= =0D + 0x02, 0x02, 0x14, 0x39, 0xde, 0x9e, 0xce, 0x3a, 0x36, 0x11, 0x38, 0x6f,= =0D + 0x64, 0xb4, 0x69, 0xa7, 0x93, 0xdd, 0xff, 0xbd, 0x3e, 0x75, 0x6a, 0x30,= =0D + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,= =0D + 0x05, 0x00, 0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,= =0D + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,= =0D + 0x04, 0x08, 0x0c, 0x02, 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03,= =0D + 0x55, 0x04, 0x07, 0x0c, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65,= =0D + 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54,= =0D + 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31, 0x0d, 0x30, 0x0b,= =0D + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x04, 0x45, 0x44, 0x4b, 0x32, 0x31,= =0D + 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04, 0x55, 0x45,= =0D + 0x46, 0x49, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x36, 0x32, 0x39,= =0D + 0x32, 0x32, 0x34, 0x37, 0x33, 0x36, 0x5a, 0x17, 0x0d, 0x34, 0x37, 0x31,= =0D + 0x31, 0x31, 0x35, 0x32, 0x32, 0x34, 0x37, 0x33, 0x36, 0x5a, 0x30, 0x5e,= =0D + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,= =0D + 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x02,= =0D + 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c,= =0D + 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x31, 0x12, 0x30, 0x10,= =0D + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54, 0x69, 0x61, 0x6e, 0x6f,= =0D + 0x63, 0x6f, 0x72, 0x65, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04,= =0D + 0x0b, 0x0c, 0x04, 0x45, 0x44, 0x4b, 0x32, 0x31, 0x0d, 0x30, 0x0b, 0x06,= =0D + 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04, 0x55, 0x45, 0x46, 0x49, 0x30, 0x81,= =0D + 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,= =0D + 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02,= =0D + 0x81, 0x81, 0x00, 0x9f, 0xef, 0x1b, 0x46, 0x45, 0x55, 0x33, 0x4b, 0xee,= =0D + 0x95, 0x14, 0xd3, 0x5a, 0x3e, 0xd9, 0x29, 0xfb, 0xd9, 0x29, 0x4e, 0x8b,= =0D + 0xf1, 0xf5, 0x68, 0x7c, 0x58, 0x86, 0x0c, 0xda, 0xd7, 0xe0, 0xd2, 0x9a,= =0D + 0xe8, 0x37, 0x16, 0x4d, 0x54, 0x92, 0x18, 0x20, 0x4c, 0x09, 0xa1, 0xcf,= =0D + 0xe1, 0xaa, 0x7a, 0x5a, 0x64, 0x7e, 0x5c, 0xeb, 0x4e, 0x15, 0x8e, 0x40,= =0D + 0xd1, 0xcb, 0x7d, 0x01, 0x71, 0x15, 0x11, 0xd2, 0xc7, 0xdb, 0x6b, 0x00,= =0D + 0xdc, 0x02, 0xcb, 0x5a, 0x6d, 0x2b, 0x2a, 0x75, 0xb6, 0x3f, 0xec, 0xc1,= =0D + 0x9d, 0xbf, 0xda, 0xe5, 0x3a, 0x77, 0x4b, 0x21, 0x1c, 0x99, 0x42, 0x84,= =0D + 0x5e, 0x27, 0x53, 0x9b, 0xe6, 0xc1, 0xa1, 0x95, 0x58, 0xba, 0xbe, 0x62,= =0D + 0x58, 0xd5, 0x09, 0xa8, 0xe6, 0xb6, 0x1b, 0xb1, 0x18, 0x28, 0x13, 0xc7,= =0D + 0x89, 0x1c, 0x68, 0xce, 0x15, 0xaf, 0x2e, 0x68, 0xac, 0x1c, 0xf7, 0x02,= =0D + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x1d, 0x06, 0x03,= =0D + 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x50, 0xe5, 0x05, 0xa3, 0x6e,= =0D + 0x8f, 0x00, 0xf7, 0x93, 0x30, 0xe5, 0x25, 0x20, 0xdc, 0x8a, 0xc3, 0xad,= =0D + 0x14, 0x6d, 0x90, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,= =0D + 0x30, 0x16, 0x80, 0x14, 0x50, 0xe5, 0x05, 0xa3, 0x6e, 0x8f, 0x00, 0xf7,= =0D + 0x93, 0x30, 0xe5, 0x25, 0x20, 0xdc, 0x8a, 0xc3, 0xad, 0x14, 0x6d, 0x90,= =0D + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05,= =0D + 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48,= =0D + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00,= =0D + 0x8e, 0xe4, 0x27, 0x42, 0x16, 0x6e, 0xbd, 0x28, 0x47, 0x09, 0x99, 0xc1,= =0D + 0x55, 0x02, 0x82, 0x1a, 0xe1, 0xd0, 0xf3, 0xef, 0x4d, 0xaf, 0x30, 0x9a,= =0D + 0x29, 0x4b, 0x74, 0x03, 0x6a, 0x95, 0x28, 0xf1, 0xbe, 0x62, 0x68, 0x9f,= =0D + 0x82, 0x59, 0x7a, 0x49, 0x91, 0xb6, 0xaf, 0x6b, 0x23, 0x30, 0xb4, 0xf4,= =0D + 0xdd, 0xfa, 0x30, 0x3f, 0xb6, 0xed, 0x74, 0x3f, 0x91, 0xe8, 0xd7, 0x84,= =0D + 0x1a, 0xf3, 0xc6, 0x3d, 0xd8, 0x59, 0x8d, 0x68, 0x6e, 0xb3, 0x66, 0x9e,= =0D + 0xe8, 0xeb, 0x1a, 0x8b, 0x1e, 0x92, 0x71, 0x73, 0x8c, 0x4f, 0x63, 0xce,= =0D + 0x71, 0x7b, 0x97, 0x3b, 0x59, 0xd2, 0x9b, 0xe4, 0xd0, 0xef, 0x31, 0x9f,= =0D + 0x0d, 0x61, 0x27, 0x97, 0x9d, 0xe8, 0xe0, 0xcd, 0x8d, 0xc1, 0x4d, 0xad,= =0D + 0xf7, 0x3a, 0x8d, 0xb8, 0x86, 0x8c, 0x23, 0x1d, 0x4c, 0x02, 0x5c, 0x53,= =0D + 0x46, 0x84, 0xb2, 0x97, 0x0c, 0xd3, 0x35, 0x6b=0D +};=0D +=0D +//=0D +// X509 Cert Data for RSA Public Key Retrieving and X509 Verification (Gen= erated by OpenSSL utility).=0D +// $ openssl req -new -key TestKeyPem -out TestCertCsr -subj "/C=3DUS/ST= =3DWA/L=3DSeattle/O=3DTianocore/OU=3DEDK2CHILD/CN=3DUEFI"=0D +// $ openssl x509 -days 10000 -CA TestCACert.pem -CAkey TestKeyPem -req -o= ut TestCert -set_serial 3432 --outform DER -in TestCertCsr=0D +// password should be in the PemPass variable=0D +// $ xxd --include TestCert=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 TestCert[] =3D {=0D + 0x30, 0x82, 0x02, 0x31, 0x30, 0x82, 0x01, 0x9a, 0x02, 0x02, 0x0d, 0x68,= =0D + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,= =0D + 0x0b, 0x05, 0x00, 0x30, 0x5e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,= =0D + 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,= =0D + 0x55, 0x04, 0x08, 0x0c, 0x02, 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06,= =0D + 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c,= =0D + 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09,= =0D + 0x54, 0x69, 0x61, 0x6e, 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31, 0x0d, 0x30,= =0D + 0x0b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x04, 0x45, 0x44, 0x4b, 0x32,= =0D + 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04, 0x55,= =0D + 0x45, 0x46, 0x49, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x36, 0x32,= =0D + 0x39, 0x32, 0x33, 0x31, 0x35, 0x33, 0x36, 0x5a, 0x17, 0x0d, 0x34, 0x37,= =0D + 0x31, 0x31, 0x31, 0x35, 0x32, 0x33, 0x31, 0x35, 0x33, 0x36, 0x5a, 0x30,= =0D + 0x63, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,= =0D + 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c,= =0D + 0x02, 0x57, 0x41, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07,= =0D + 0x0c, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x31, 0x12, 0x30,= =0D + 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x09, 0x54, 0x69, 0x61, 0x6e,= =0D + 0x6f, 0x63, 0x6f, 0x72, 0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,= =0D + 0x04, 0x0b, 0x0c, 0x09, 0x45, 0x44, 0x4b, 0x32, 0x43, 0x48, 0x49, 0x4c,= =0D + 0x44, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x04,= =0D + 0x55, 0x45, 0x46, 0x49, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a,= =0D + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81,= =0D + 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0x9f, 0xef, 0x1b,= =0D + 0x46, 0x45, 0x55, 0x33, 0x4b, 0xee, 0x95, 0x14, 0xd3, 0x5a, 0x3e, 0xd9,= =0D + 0x29, 0xfb, 0xd9, 0x29, 0x4e, 0x8b, 0xf1, 0xf5, 0x68, 0x7c, 0x58, 0x86,= =0D + 0x0c, 0xda, 0xd7, 0xe0, 0xd2, 0x9a, 0xe8, 0x37, 0x16, 0x4d, 0x54, 0x92,= =0D + 0x18, 0x20, 0x4c, 0x09, 0xa1, 0xcf, 0xe1, 0xaa, 0x7a, 0x5a, 0x64, 0x7e,= =0D + 0x5c, 0xeb, 0x4e, 0x15, 0x8e, 0x40, 0xd1, 0xcb, 0x7d, 0x01, 0x71, 0x15,= =0D + 0x11, 0xd2, 0xc7, 0xdb, 0x6b, 0x00, 0xdc, 0x02, 0xcb, 0x5a, 0x6d, 0x2b,= =0D + 0x2a, 0x75, 0xb6, 0x3f, 0xec, 0xc1, 0x9d, 0xbf, 0xda, 0xe5, 0x3a, 0x77,= =0D + 0x4b, 0x21, 0x1c, 0x99, 0x42, 0x84, 0x5e, 0x27, 0x53, 0x9b, 0xe6, 0xc1,= =0D + 0xa1, 0x95, 0x58, 0xba, 0xbe, 0x62, 0x58, 0xd5, 0x09, 0xa8, 0xe6, 0xb6,= =0D + 0x1b, 0xb1, 0x18, 0x28, 0x13, 0xc7, 0x89, 0x1c, 0x68, 0xce, 0x15, 0xaf,= =0D + 0x2e, 0x68, 0xac, 0x1c, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d,= =0D + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,= =0D + 0x00, 0x03, 0x81, 0x81, 0x00, 0x0d, 0xa4, 0x18, 0xa2, 0xb6, 0x09, 0xe1,= =0D + 0x77, 0x22, 0x97, 0x46, 0x29, 0x1b, 0xd8, 0x67, 0x0a, 0xc0, 0x91, 0x36,= =0D + 0x53, 0xe1, 0x4c, 0x73, 0x1b, 0xc1, 0x90, 0x6d, 0x98, 0x46, 0x7e, 0x65,= =0D + 0x71, 0x1c, 0xf0, 0x62, 0x9f, 0x9e, 0x62, 0x0b, 0x8b, 0x73, 0x35, 0x4c,= =0D + 0x2d, 0xc3, 0x5d, 0x38, 0x22, 0xfe, 0x43, 0x0f, 0xf2, 0x57, 0x17, 0x75,= =0D + 0xa8, 0x76, 0x79, 0xab, 0x4e, 0x33, 0xa5, 0x91, 0xbd, 0x55, 0x5b, 0xc0,= =0D + 0x7e, 0xfb, 0x1d, 0xc9, 0xf3, 0x5f, 0x12, 0x6f, 0x7c, 0xdc, 0x24, 0x5a,= =0D + 0x84, 0x16, 0x28, 0x5b, 0xf9, 0xcc, 0x8b, 0xfe, 0x11, 0xe6, 0x29, 0xcf,= =0D + 0xac, 0x90, 0x66, 0xc0, 0x70, 0x25, 0xf8, 0x71, 0xdb, 0x29, 0xcb, 0x6b,= =0D + 0x10, 0xa7, 0xbe, 0x3e, 0x9d, 0x61, 0xd8, 0x04, 0xe0, 0x71, 0x63, 0x83,= =0D + 0xa3, 0xca, 0x26, 0x6d, 0x7f, 0xf3, 0xaa, 0x8e, 0xb2, 0x66, 0x98, 0x41,= =0D + 0xd6=0D +};=0D +=0D +//=0D +// Message Hash for Signing & Verification Validation.=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 MsgHash[] =3D {=0D + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,=0D + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09=0D + };=0D +=0D +//=0D +// Payload for PKCS#7 Signing & Verification Validation.=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *Payload =3D "Payload Data for P= KCS#7 Signing";=0D +=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyRsaCertPkcs1SignVerify (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + VOID *RsaPrivKey;=0D + VOID *RsaPubKey;=0D + UINT8 *Signature;=0D + UINTN SigSize;=0D + UINT8 *Subject;=0D + UINTN SubjectSize;=0D + RETURN_STATUS ReturnStatus;=0D + CHAR8 CommonName[64];=0D + UINTN CommonNameSize;=0D + CHAR8 OrgName[64];=0D + UINTN OrgNameSize;=0D +=0D + //=0D + // Retrieve RSA private key from encrypted PEM data.=0D + //=0D + Status =3D RsaGetPrivateKeyFromPem (TestKeyPem, sizeof (TestKeyPem), Pem= Pass, &RsaPrivKey);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Retrieve RSA public key from X509 Certificate.=0D + //=0D + RsaPubKey =3D NULL;=0D + Status =3D RsaGetPublicKeyFromX509 (TestCert, sizeof (TestCert), &Rsa= PubKey);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Generate RSA PKCS#1 Signature.=0D + //=0D + SigSize =3D 0;=0D + Status =3D RsaPkcs1Sign (RsaPrivKey, MsgHash, SHA1_DIGEST_SIZE, NULL, &= SigSize);=0D + UT_ASSERT_FALSE (Status);=0D + UT_ASSERT_NOT_EQUAL (SigSize, 0);=0D +=0D + Signature =3D AllocatePool (SigSize);=0D + Status =3D RsaPkcs1Sign (RsaPrivKey, MsgHash, SHA1_DIGEST_SIZE, Signa= ture, &SigSize);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Verify RSA PKCS#1-encoded Signature.=0D + //=0D + Status =3D RsaPkcs1Verify (RsaPubKey, MsgHash, SHA1_DIGEST_SIZE, Signatu= re, SigSize);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // X509 Certificate Subject Retrieving.=0D + //=0D + SubjectSize =3D 0;=0D + Status =3D X509GetSubjectName (TestCert, sizeof (TestCert), NULL, &Subj= ectSize);=0D + Subject =3D (UINT8 *)AllocatePool (SubjectSize);=0D + Status =3D X509GetSubjectName (TestCert, sizeof (TestCert), Subject, &S= ubjectSize);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Get CommonName from X509 Certificate Subject=0D + //=0D + CommonNameSize =3D 64;=0D + ZeroMem (CommonName, CommonNameSize);=0D + ReturnStatus =3D X509GetCommonName (TestCert, sizeof (TestCert), CommonN= ame, &CommonNameSize);=0D + UT_ASSERT_NOT_EFI_ERROR (ReturnStatus);=0D +=0D + UT_ASSERT_EQUAL (CommonNameSize, 5);=0D + UT_ASSERT_MEM_EQUAL (CommonName, "UEFI", 5);=0D +=0D + OrgNameSize =3D 64;=0D + ZeroMem (OrgName, OrgNameSize);=0D + ReturnStatus =3D X509GetOrganizationName (TestCert, sizeof (TestCert), O= rgName, &OrgNameSize);=0D + UT_ASSERT_NOT_EFI_ERROR (ReturnStatus);=0D +=0D + UT_ASSERT_EQUAL (OrgNameSize, 10);=0D + UT_ASSERT_MEM_EQUAL (OrgName, "Tianocore", 10);=0D +=0D + //=0D + // X509 Certificate Verification.=0D + //=0D + Status =3D X509VerifyCert (TestCert, sizeof (TestCert), TestCACert, size= of (TestCACert));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Release Resources.=0D + //=0D + RsaFree (RsaPubKey);=0D + RsaFree (RsaPrivKey);=0D + FreePool (Signature);=0D + FreePool (Subject);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyPkcs7SignVerify (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + UINT8 *P7SignedData;=0D + UINTN P7SignedDataSize;=0D + UINT8 *SignCert;=0D +=0D + P7SignedData =3D NULL;=0D + SignCert =3D NULL;=0D +=0D + //=0D + // Construct Signer Certificate from RAW data.=0D + //=0D + Status =3D X509ConstructCertificate (TestCert, sizeof (TestCert), (UINT8= **) &SignCert);=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_NOT_NULL (SignCert);=0D +=0D + //=0D + // Create PKCS#7 signedData on Payload.=0D + // Note: Caller should release P7SignedData manually.=0D + //=0D + Status =3D Pkcs7Sign (=0D + TestKeyPem,=0D + sizeof (TestKeyPem),=0D + (CONST UINT8 *) PemPass,=0D + (UINT8 *) Payload,=0D + AsciiStrLen (Payload),=0D + SignCert,=0D + NULL,=0D + &P7SignedData,=0D + &P7SignedDataSize=0D + );=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_NOT_EQUAL (P7SignedDataSize, 0);=0D +=0D + Status =3D Pkcs7Verify (=0D + P7SignedData,=0D + P7SignedDataSize,=0D + TestCACert,=0D + sizeof (TestCACert),=0D + (UINT8 *) Payload,=0D + AsciiStrLen (Payload)=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + if (P7SignedData !=3D NULL) {=0D + FreePool (P7SignedData);=0D + }=0D + if (SignCert !=3D NULL) {=0D + X509Free (SignCert);=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mRsaCertTest[] =3D {=0D + //=0D + // -----Description--------------------------------------Class--------= --------------Function-----------------Pre---Post--Context=0D + //=0D + {"TestVerifyRsaCertPkcs1SignVerify()", "CryptoPkg.BaseCryptLib.RsaCert= ", TestVerifyRsaCertPkcs1SignVerify, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mRsaCertTestNum =3D ARRAY_SIZE(mRsaCertTest);=0D +=0D +TEST_DESC mPkcs7Test[] =3D {=0D + //=0D + // -----Description--------------------------------------Class--------= --------------Function-----------------Pre---Post--Context=0D + //=0D + {"TestVerifyPkcs7SignVerify()", "CryptoPkg.BaseCryptLib.Pkcs7",= TestVerifyPkcs7SignVerify, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mPkcs7TestNum =3D ARRAY_SIZE(mPkcs7Test);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/RsaTests.c b/Cryp= toPkg/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=0D + Application for RSA Primitives Validation.=0D +=0D +Copyright (c) 2010, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +#define RSA_MODULUS_LENGTH 512=0D +=0D +//=0D +// RSA PKCS#1 Validation Data from OpenSSL "Fips_rsa_selftest.c"=0D +//=0D +=0D +//=0D +// Public Modulus of RSA Key=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaN[] =3D {=0D + 0xBB, 0xF8, 0x2F, 0x09, 0x06, 0x82, 0xCE, 0x9C, 0x23, 0x38, 0xAC, 0x2B, = 0x9D, 0xA8, 0x71, 0xF7,=0D + 0x36, 0x8D, 0x07, 0xEE, 0xD4, 0x10, 0x43, 0xA4, 0x40, 0xD6, 0xB6, 0xF0, = 0x74, 0x54, 0xF5, 0x1F,=0D + 0xB8, 0xDF, 0xBA, 0xAF, 0x03, 0x5C, 0x02, 0xAB, 0x61, 0xEA, 0x48, 0xCE, = 0xEB, 0x6F, 0xCD, 0x48,=0D + 0x76, 0xED, 0x52, 0x0D, 0x60, 0xE1, 0xEC, 0x46, 0x19, 0x71, 0x9D, 0x8A, = 0x5B, 0x8B, 0x80, 0x7F,=0D + 0xAF, 0xB8, 0xE0, 0xA3, 0xDF, 0xC7, 0x37, 0x72, 0x3E, 0xE6, 0xB4, 0xB7, = 0xD9, 0x3A, 0x25, 0x84,=0D + 0xEE, 0x6A, 0x64, 0x9D, 0x06, 0x09, 0x53, 0x74, 0x88, 0x34, 0xB2, 0x45, = 0x45, 0x98, 0x39, 0x4E,=0D + 0xE0, 0xAA, 0xB1, 0x2D, 0x7B, 0x61, 0xA5, 0x1F, 0x52, 0x7A, 0x9A, 0x41, = 0xF6, 0xC1, 0x68, 0x7F,=0D + 0xE2, 0x53, 0x72, 0x98, 0xCA, 0x2A, 0x8F, 0x59, 0x46, 0xF8, 0xE5, 0xFD, = 0x09, 0x1D, 0xBD, 0xCB=0D + };=0D +=0D +//=0D +// Public Exponent of RSA Key=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaE[] =3D { 0x11 };=0D +=0D +//=0D +// Private Exponent of RSA Key=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaD[] =3D {=0D + 0xA5, 0xDA, 0xFC, 0x53, 0x41, 0xFA, 0xF2, 0x89, 0xC4, 0xB9, 0x88, 0xDB, = 0x30, 0xC1, 0xCD, 0xF8,=0D + 0x3F, 0x31, 0x25, 0x1E, 0x06, 0x68, 0xB4, 0x27, 0x84, 0x81, 0x38, 0x01, = 0x57, 0x96, 0x41, 0xB2,=0D + 0x94, 0x10, 0xB3, 0xC7, 0x99, 0x8D, 0x6B, 0xC4, 0x65, 0x74, 0x5E, 0x5C, = 0x39, 0x26, 0x69, 0xD6,=0D + 0x87, 0x0D, 0xA2, 0xC0, 0x82, 0xA9, 0x39, 0xE3, 0x7F, 0xDC, 0xB8, 0x2E, = 0xC9, 0x3E, 0xDA, 0xC9,=0D + 0x7F, 0xF3, 0xAD, 0x59, 0x50, 0xAC, 0xCF, 0xBC, 0x11, 0x1C, 0x76, 0xF1, = 0xA9, 0x52, 0x94, 0x44,=0D + 0xE5, 0x6A, 0xAF, 0x68, 0xC5, 0x6C, 0x09, 0x2C, 0xD3, 0x8D, 0xC3, 0xBE, = 0xF5, 0xD2, 0x0A, 0x93,=0D + 0x99, 0x26, 0xED, 0x4F, 0x74, 0xA1, 0x3E, 0xDD, 0xFB, 0xE1, 0xA1, 0xCE, = 0xCC, 0x48, 0x94, 0xAF,=0D + 0x94, 0x28, 0xC2, 0xB7, 0xB8, 0x88, 0x3F, 0xE4, 0x46, 0x3A, 0x4B, 0xC8, = 0x5B, 0x1C, 0xB3, 0xC1=0D + };=0D +=0D +//=0D +// Known Answer Test (KAT) Data for RSA PKCS#1 Signing=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 RsaSignData[] =3D "OpenSSL FIPS = 140-2 Public Key RSA KAT";=0D +=0D +//=0D +// Known Signature for the above message, under SHA-1 Digest=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 RsaPkcs1Signature[] =3D {=0D + 0x71, 0xEE, 0x1A, 0xC0, 0xFE, 0x01, 0x93, 0x54, 0x79, 0x5C, 0xF2, 0x4C, = 0x4A, 0xFD, 0x1A, 0x05,=0D + 0x8F, 0x64, 0xB1, 0x6D, 0x61, 0x33, 0x8D, 0x9B, 0xE7, 0xFD, 0x60, 0xA3, = 0x83, 0xB5, 0xA3, 0x51,=0D + 0x55, 0x77, 0x90, 0xCF, 0xDC, 0x22, 0x37, 0x8E, 0xD0, 0xE1, 0xAE, 0x09, = 0xE3, 0x3D, 0x1E, 0xF8,=0D + 0x80, 0xD1, 0x8B, 0xC2, 0xEC, 0x0A, 0xD7, 0x6B, 0x88, 0x8B, 0x8B, 0xA1, = 0x20, 0x22, 0xBE, 0x59,=0D + 0x5B, 0xE0, 0x23, 0x24, 0xA1, 0x49, 0x30, 0xBA, 0xA9, 0x9E, 0xE8, 0xB1, = 0x8A, 0x62, 0x16, 0xBF,=0D + 0x4E, 0xCA, 0x2E, 0x4E, 0xBC, 0x29, 0xA8, 0x67, 0x13, 0xB7, 0x9F, 0x1D, = 0x04, 0x44, 0xE5, 0x5F,=0D + 0x35, 0x07, 0x11, 0xBC, 0xED, 0x19, 0x37, 0x21, 0xCF, 0x23, 0x48, 0x1F, = 0x72, 0x05, 0xDE, 0xE6,=0D + 0xE8, 0x7F, 0x33, 0x8A, 0x76, 0x4B, 0x2F, 0x95, 0xDF, 0xF1, 0x5F, 0x84, = 0x80, 0xD9, 0x46, 0xB4=0D + };=0D +=0D +//=0D +// Default public key 0x10001 =3D 65537=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DefaultPublicKey[] =3D {=0D + 0x01, 0x00, 0x01=0D +};=0D +=0D +VOID *mRsa;=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyRsaPreReq (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + mRsa =3D RsaNew ();=0D +=0D + if (mRsa =3D=3D NULL) {=0D + return UNIT_TEST_ERROR_TEST_FAILED;=0D + }=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +VOID=0D +EFIAPI=0D +TestVerifyRsaCleanUp (=0D + UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + if (mRsa !=3D NULL) {=0D + RsaFree (mRsa);=0D + mRsa =3D NULL;=0D + }=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyRsaSetGetKeyComponents (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + UINTN KeySize;=0D + UINT8 *KeyBuffer;=0D +=0D + //=0D + // Set/Get RSA Key Components=0D + //=0D +=0D + //=0D + // Set/Get RSA Key N=0D + //=0D + Status =3D RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof (RsaN));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + KeySize =3D 0;=0D + Status =3D RsaGetKey (mRsa, RsaKeyN, NULL, &KeySize);=0D + UT_ASSERT_FALSE (Status);=0D + UT_ASSERT_EQUAL (KeySize, sizeof (RsaN));=0D +=0D + KeyBuffer =3D AllocatePool (KeySize);=0D + Status =3D RsaGetKey (mRsa, RsaKeyN, KeyBuffer, &KeySize);=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_EQUAL (KeySize, sizeof (RsaN));=0D +=0D + UT_ASSERT_MEM_EQUAL (KeyBuffer, RsaN, KeySize);=0D +=0D + FreePool (KeyBuffer);=0D +=0D + //=0D + // Set/Get RSA Key E=0D + //=0D + Status =3D RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof (RsaE));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + KeySize =3D 0;=0D + Status =3D RsaGetKey (mRsa, RsaKeyE, NULL, &KeySize);=0D + UT_ASSERT_FALSE (Status);=0D + UT_ASSERT_EQUAL (KeySize, sizeof (RsaE));=0D +=0D + KeyBuffer =3D AllocatePool (KeySize);=0D + Status =3D RsaGetKey (mRsa, RsaKeyE, KeyBuffer, &KeySize);=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_EQUAL (KeySize, sizeof (RsaE));=0D +=0D + UT_ASSERT_MEM_EQUAL (KeyBuffer, RsaE, KeySize);=0D +=0D + FreePool (KeyBuffer);=0D +=0D + //=0D + // Clear/Get RSA Key Components=0D + //=0D +=0D + //=0D + // Clear/Get RSA Key N=0D + //=0D + Status =3D RsaSetKey (mRsa, RsaKeyN, NULL, 0);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + KeySize =3D 1;=0D + Status =3D RsaGetKey (mRsa, RsaKeyN, NULL, &KeySize);=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_EQUAL (KeySize, 0);=0D +=0D + //=0D + // Clear/Get RSA Key E=0D + //=0D + Status =3D RsaSetKey (mRsa, RsaKeyE, NULL, 0);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + KeySize =3D 1;=0D + Status =3D RsaGetKey (mRsa, RsaKeyE, NULL, &KeySize);=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_EQUAL (KeySize, 0);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyRsaGenerateKeyComponents (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + UINTN KeySize;=0D + UINT8 *KeyBuffer;=0D +=0D + //=0D + // Generate RSA Key Components=0D + //=0D +=0D + Status =3D RsaGenerateKey (mRsa, RSA_MODULUS_LENGTH, NULL, 0);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + KeySize =3D RSA_MODULUS_LENGTH / 8;=0D + KeyBuffer =3D AllocatePool (KeySize);=0D + Status =3D RsaGetKey (mRsa, RsaKeyE, KeyBuffer, &KeySize);=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_EQUAL (KeySize, 3);=0D + UT_ASSERT_MEM_EQUAL (KeyBuffer, DefaultPublicKey, 3);=0D +=0D + KeySize =3D RSA_MODULUS_LENGTH / 8;=0D + Status =3D RsaGetKey (mRsa, RsaKeyN, KeyBuffer, &KeySize);=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_EQUAL (KeySize, RSA_MODULUS_LENGTH / 8);=0D +=0D + Status =3D RsaCheckKey (mRsa);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Check invalid RSA key components=0D + //=0D + Status =3D RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof (RsaN));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D RsaCheckKey (mRsa);=0D + UT_ASSERT_FALSE (Status);=0D +=0D + Status =3D RsaSetKey (mRsa, RsaKeyN, KeyBuffer, KeySize);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D RsaCheckKey (mRsa);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof (RsaE));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D RsaCheckKey (mRsa);=0D + UT_ASSERT_FALSE (Status);=0D +=0D + FreePool (KeyBuffer);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyRsaPkcs1SignVerify (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + UINT8 HashValue[SHA1_DIGEST_SIZE];=0D + UINTN HashSize;=0D + UINT8 *Signature;=0D + UINTN SigSize;=0D + BOOLEAN Status;=0D +=0D + //=0D + // SHA-1 Digest Message for PKCS#1 Signature=0D + //=0D + HashSize =3D SHA1_DIGEST_SIZE;=0D + ZeroMem (HashValue, HashSize);=0D +=0D + Status =3D Sha1HashAll (RsaSignData, AsciiStrLen (RsaSignData), HashVal= ue);=0D + UT_ASSERT_TRUE (Status);=0D +=0D + //=0D + // Sign RSA PKCS#1-encoded Signature=0D + //=0D +=0D + Status =3D RsaSetKey (mRsa, RsaKeyN, RsaN, sizeof (RsaN));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D RsaSetKey (mRsa, RsaKeyE, RsaE, sizeof (RsaE));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + Status =3D RsaSetKey (mRsa, RsaKeyD, RsaD, sizeof (RsaD));=0D + UT_ASSERT_TRUE (Status);=0D +=0D + SigSize =3D 0;=0D + Status =3D RsaPkcs1Sign (mRsa, HashValue, HashSize, NULL, &SigSize);=0D + UT_ASSERT_FALSE (Status);=0D + UT_ASSERT_NOT_EQUAL (SigSize, 0);=0D +=0D + Signature =3D AllocatePool (SigSize);=0D + Status =3D RsaPkcs1Sign (mRsa, HashValue, HashSize, Signature, &SigSize= );=0D + UT_ASSERT_TRUE (Status);=0D + UT_ASSERT_EQUAL (SigSize, sizeof (RsaPkcs1Signature));=0D +=0D + UT_ASSERT_MEM_EQUAL (Signature, RsaPkcs1Signature, SigSize);=0D +=0D + //=0D + // Verify RSA PKCS#1-encoded Signature=0D + //=0D + Status =3D RsaPkcs1Verify (mRsa, HashValue, HashSize, Signature, SigSize= );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + return UNIT_TEST_PASSED;=0D +}=0D +=0D +TEST_DESC mRsaTest[] =3D {=0D + //=0D + // -----Description--------------------------------------Class--------= --------------Function---------------------------------Pre-----------------= ----Post---------Context=0D + //=0D + {"TestVerifyRsaSetGetKeyComponents()", "CryptoPkg.BaseCryptLib.R= sa", TestVerifyRsaSetGetKeyComponents, TestVerifyRsaPreReq, TestVer= ifyRsaCleanUp, NULL},=0D + {"TestVerifyRsaGenerateKeyComponents()", "CryptoPkg.BaseCryptLib.R= sa", TestVerifyRsaGenerateKeyComponents, TestVerifyRsaPreReq, TestVer= ifyRsaCleanUp, NULL},=0D + {"TestVerifyRsaPkcs1SignVerify()", "CryptoPkg.BaseCryptLib.R= sa", TestVerifyRsaPkcs1SignVerify, TestVerifyRsaPreReq, TestVer= ifyRsaCleanUp, NULL},=0D +};=0D +=0D +UINTN mRsaTestNum =3D ARRAY_SIZE(mRsaTest);=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TSTests.c b/Crypt= oPkg/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=0D + Sample Implementation for RFC3161 Time Stamping Verification.=0D +=0D +Copyright (c) 2014, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include "TestBaseCryptLib.h"=0D +=0D +//=0D +// Sample Authenticode Data with RFC3161 time stamping signature.=0D +// The data retrieved from one signed sample UEFI image, which is generate= d by MSFT's signtool=0D +// utility in conjunction with RFC3161 timestamping, as the following comm= and:=0D +// signtool sign /ac / f /p /fd =0D +// /tr http://timestamp.comodoca.com/rfc3161 sample.efi=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 AuthenticodeWithTS[] =3D {=0D + 0x30, 0x82, 0x0c, 0x00, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, = 0x01, 0x07, 0x02, 0xa0,=0D + 0x82, 0x0b, 0xf1, 0x30, 0x82, 0x0b, 0xed, 0x02, 0x01, 0x01, 0x31, 0x0f, = 0x30, 0x0d, 0x06, 0x09,=0D + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, = 0x78, 0x06, 0x0a, 0x2b,=0D + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x6a, 0x30, = 0x68, 0x30, 0x33, 0x06,=0D + 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f, 0x30, = 0x25, 0x03, 0x01, 0x00,=0D + 0xa0, 0x20, 0xa2, 0x1e, 0x80, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, = 0x00, 0x4f, 0x00, 0x62,=0D + 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65, = 0x00, 0x3e, 0x00, 0x3e,=0D + 0x00, 0x3e, 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, = 0x65, 0x03, 0x04, 0x02,=0D + 0x01, 0x05, 0x00, 0x04, 0x20, 0x1e, 0x9e, 0x74, 0x31, 0xe1, 0x3e, 0x51, = 0x46, 0xab, 0xce, 0x10,=0D + 0x0d, 0x7c, 0x38, 0x66, 0x34, 0xd4, 0xdd, 0x04, 0xa5, 0xe7, 0x75, 0x40, = 0xdd, 0x99, 0x73, 0xf3,=0D + 0x2a, 0x54, 0x3e, 0xa8, 0x18, 0xa0, 0x82, 0x01, 0xee, 0x30, 0x82, 0x01, = 0xea, 0x30, 0x82, 0x01,=0D + 0x57, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x2c, 0x65, 0xcf, 0xcf, = 0xdd, 0x61, 0x7b, 0xa4,=0D + 0x41, 0xad, 0x26, 0x1b, 0x63, 0xce, 0x91, 0x0f, 0x30, 0x09, 0x06, 0x05, = 0x2b, 0x0e, 0x03, 0x02,=0D + 0x1d, 0x05, 0x00, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, = 0x04, 0x03, 0x13, 0x08,=0D + 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, = 0x31, 0x34, 0x30, 0x37,=0D + 0x32, 0x38, 0x30, 0x37, 0x33, 0x38, 0x35, 0x39, 0x5a, 0x17, 0x0d, 0x33, = 0x39, 0x31, 0x32, 0x33,=0D + 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x12, 0x31, 0x10, = 0x30, 0x0e, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x13, 0x07, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x62, = 0x30, 0x81, 0x9f, 0x30,=0D + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, = 0x05, 0x00, 0x03, 0x81,=0D + 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0x94, 0xa6, 0x02, = 0x15, 0x87, 0xd6, 0xbf,=0D + 0x71, 0xe8, 0xc6, 0x68, 0xf6, 0x9f, 0x66, 0x09, 0x6c, 0xe7, 0x39, 0x52, = 0xf4, 0x4e, 0xaf, 0xf5,=0D + 0xe0, 0xba, 0x0f, 0xfd, 0xe6, 0x77, 0xa9, 0x71, 0x5b, 0x5c, 0x92, 0x50, = 0x1d, 0xfd, 0x9b, 0x6e,=0D + 0x52, 0x92, 0x9e, 0x3a, 0x75, 0x86, 0x41, 0x2a, 0x41, 0x30, 0x1b, 0x67, = 0x66, 0x91, 0xde, 0x71,=0D + 0x84, 0xe0, 0x90, 0xc3, 0x50, 0x36, 0x78, 0xb5, 0xa0, 0x1e, 0x72, 0xde, = 0xe7, 0x66, 0x42, 0x4f,=0D + 0x59, 0x5e, 0x3d, 0xf3, 0x85, 0x82, 0x0b, 0xa8, 0x26, 0x2d, 0xd9, 0xe3, = 0x14, 0xda, 0x9d, 0x2e,=0D + 0x3f, 0x53, 0x4d, 0x8d, 0x10, 0xbf, 0xa4, 0x7c, 0xe5, 0xaf, 0x3a, 0xa6, = 0xaf, 0x49, 0x64, 0xb0,=0D + 0x60, 0x17, 0x87, 0x71, 0x77, 0x59, 0x52, 0xe5, 0x5a, 0xed, 0x96, 0x7d, = 0x7e, 0x5d, 0xc1, 0xef,=0D + 0x6b, 0xfb, 0x80, 0xc5, 0x2b, 0x10, 0xfe, 0xe7, 0xd3, 0x02, 0x03, 0x01, = 0x00, 0x01, 0xa3, 0x48,=0D + 0x30, 0x46, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x01, 0x04, 0x3d, 0x30, = 0x3b, 0x80, 0x10, 0x19,=0D + 0x8d, 0x48, 0xa1, 0xb9, 0xf3, 0x5e, 0x3c, 0x13, 0xb4, 0x08, 0xb6, 0xd9, = 0xf3, 0x4f, 0x0a, 0xa1,=0D + 0x15, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, = 0x13, 0x08, 0x54, 0x65,=0D + 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x82, 0x10, 0x27, 0xcb, 0x16, 0x33, = 0x8b, 0xed, 0x4d, 0xa8,=0D + 0x47, 0xf0, 0x86, 0x47, 0x10, 0xef, 0x15, 0xd9, 0x30, 0x09, 0x06, 0x05, = 0x2b, 0x0e, 0x03, 0x02,=0D + 0x1d, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x51, 0x94, 0xed, 0x7a, 0x5c, = 0x0b, 0x34, 0x16, 0x9c,=0D + 0xf4, 0x5f, 0x88, 0x16, 0xa8, 0x4b, 0x13, 0xfc, 0xa4, 0x0a, 0xc7, 0xd9, = 0x20, 0xb1, 0x93, 0xc5,=0D + 0x81, 0x4f, 0x35, 0x3a, 0x89, 0x10, 0x04, 0xc4, 0xcc, 0x10, 0x34, 0xc3, = 0x15, 0x57, 0x06, 0x97,=0D + 0xee, 0x06, 0x2f, 0xf3, 0x24, 0xa1, 0xe6, 0x3a, 0x89, 0x4d, 0xb4, 0x7b, = 0x12, 0x87, 0x90, 0x8c,=0D + 0xfc, 0x5b, 0xb0, 0xf0, 0xdd, 0xaa, 0x3a, 0x24, 0x6d, 0x55, 0x47, 0x8a, = 0xf2, 0x61, 0x08, 0x7a,=0D + 0x59, 0x5f, 0x6e, 0x7b, 0xcb, 0x34, 0xbe, 0xb6, 0x5d, 0xcb, 0x60, 0xae, = 0xc4, 0xda, 0x62, 0xbb,=0D + 0x7f, 0x17, 0x1e, 0x73, 0xd1, 0x4e, 0x9f, 0x6e, 0xd3, 0xc8, 0x35, 0x58, = 0x30, 0xd2, 0x89, 0xe5,=0D + 0x22, 0x5e, 0x86, 0xac, 0x7a, 0x56, 0xd6, 0x70, 0xdb, 0x54, 0x10, 0x6c, = 0xd3, 0xd5, 0x38, 0xfb,=0D + 0x69, 0xcb, 0x4f, 0x36, 0x83, 0xc2, 0xe8, 0x31, 0x82, 0x09, 0x69, 0x30, = 0x82, 0x09, 0x65, 0x02,=0D + 0x01, 0x01, 0x30, 0x27, 0x30, 0x13, 0x31, 0x11, 0x30, 0x0f, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x13,=0D + 0x08, 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x02, 0x10, 0x2c, = 0x65, 0xcf, 0xcf, 0xdd,=0D + 0x61, 0x7b, 0xa4, 0x41, 0xad, 0x26, 0x1b, 0x63, 0xce, 0x91, 0x0f, 0x30, = 0x0d, 0x06, 0x09, 0x60,=0D + 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0xa0, 0x5e, = 0x30, 0x10, 0x06, 0x0a,=0D + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0c, 0x31, 0x02, = 0x30, 0x00, 0x30, 0x19,=0D + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, = 0x0c, 0x06, 0x0a, 0x2b,=0D + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x2f, 0x06, = 0x09, 0x2a, 0x86, 0x48,=0D + 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x22, 0x04, 0x20, 0x97, 0x6e, = 0x29, 0x47, 0xc4, 0x03,=0D + 0x68, 0x70, 0x1c, 0x99, 0x2c, 0x61, 0xb0, 0xbc, 0xde, 0x77, 0xe1, 0xa1, = 0xeb, 0x4c, 0x1c, 0xac,=0D + 0x4c, 0x64, 0xf6, 0x43, 0x96, 0x94, 0x0b, 0xc0, 0xbb, 0x03, 0x30, 0x0d, = 0x06, 0x09, 0x2a, 0x86,=0D + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x81, 0x80, = 0x85, 0x93, 0xad, 0x93,=0D + 0x92, 0x9e, 0xa4, 0x94, 0x30, 0x02, 0xe1, 0xc8, 0xcd, 0x37, 0xb2, 0xe1, = 0xcb, 0xb2, 0x0f, 0x1c,=0D + 0x67, 0xd1, 0xc9, 0xeb, 0x4d, 0x68, 0x85, 0x97, 0x5a, 0xa6, 0x0c, 0x03, = 0xc7, 0x86, 0xae, 0xb3,=0D + 0x35, 0xb4, 0x1d, 0x0e, 0x95, 0x5f, 0xed, 0x37, 0x13, 0x6b, 0x1e, 0x94, = 0x80, 0xf1, 0xac, 0x55,=0D + 0x73, 0xd1, 0x31, 0xf9, 0xad, 0x13, 0x7b, 0x26, 0xbf, 0xe7, 0x55, 0x7b, = 0xb2, 0xf9, 0x21, 0x42,=0D + 0x23, 0x64, 0xe6, 0x45, 0x03, 0x67, 0xcb, 0x42, 0xd3, 0x71, 0x3f, 0xd5, = 0x29, 0x17, 0x4b, 0x49,=0D + 0x45, 0x0e, 0x8b, 0xba, 0x1f, 0x15, 0x5a, 0x7f, 0x7b, 0x5e, 0x9b, 0x22, = 0x46, 0xa7, 0x9c, 0x0d,=0D + 0x25, 0x9c, 0x76, 0x25, 0x02, 0xc8, 0x15, 0x00, 0x51, 0xe6, 0x73, 0x39, = 0xac, 0x8d, 0x41, 0x7b,=0D + 0xc8, 0x42, 0xc9, 0xdb, 0x1b, 0x16, 0x13, 0xf6, 0x44, 0x32, 0xef, 0x17, = 0xa1, 0x82, 0x08, 0x34,=0D + 0x30, 0x82, 0x08, 0x30, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, = 0x37, 0x03, 0x03, 0x01,=0D + 0x31, 0x82, 0x08, 0x20,=0D + 0x30, 0x82, 0x08, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, = 0x01, 0x07, 0x02, 0xa0,=0D + 0x82, 0x08, 0x0d, 0x30, 0x82, 0x08, 0x09, 0x02, 0x01, 0x03, 0x31, 0x0b, = 0x30, 0x09, 0x06, 0x05,=0D + 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x30, 0x81, 0xf6, 0x06, 0x0b, = 0x2a, 0x86, 0x48, 0x86,=0D + 0xf7, 0x0d, 0x01, 0x09, 0x10, 0x01, 0x04, 0xa0, 0x81, 0xe6, 0x04, 0x81, = 0xe3, 0x30, 0x81, 0xe0,=0D + 0x02, 0x01, 0x01, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xb2, 0x31, = 0x02, 0x01, 0x01, 0x30,=0D + 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, = 0x04, 0x14, 0xcd, 0x06,=0D + 0xf0, 0xbd, 0x8b, 0xcd, 0x5c, 0x2e, 0x5a, 0x7c, 0x42, 0x56, 0x2c, 0x20, = 0x4a, 0x15, 0xcb, 0x1d,=0D + 0x8b, 0x0e, 0x02, 0x15, 0x00, 0xb6, 0xff, 0x47, 0x05, 0xb6, 0x2d, 0x15, = 0xac, 0x3f, 0x5d, 0xd9,=0D + 0xcf, 0x9d, 0x54, 0x35, 0x56, 0x7c, 0xc1, 0x6e, 0x8b, 0x18, 0x0f, 0x32, = 0x30, 0x31, 0x34, 0x30,=0D + 0x37, 0x32, 0x38, 0x30, 0x38, 0x35, 0x30, 0x30, 0x33, 0x5a, 0xa0, 0x81, = 0x83, 0xa4, 0x81, 0x80,=0D + 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, = 0x02, 0x47, 0x42, 0x31,=0D + 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, = 0x65, 0x61, 0x74, 0x65,=0D + 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, = 0x31, 0x10, 0x30, 0x0e,=0D + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, = 0x72, 0x64, 0x31, 0x1a,=0D + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d, = 0x4f, 0x44, 0x4f, 0x20,=0D + 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, = 0x30, 0x22, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x13, 0x1b, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, = 0x54, 0x69, 0x6d, 0x65,=0D + 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x69, = 0x67, 0x6e, 0x65, 0x72,=0D + 0xa0, 0x82, 0x04, 0x97, 0x30, 0x82, 0x04, 0x93, 0x30, 0x82, 0x03, 0x7b, = 0xa0, 0x03, 0x02, 0x01,=0D + 0x02, 0x02, 0x10, 0x47, 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c, = 0xe1, 0x42, 0xd2, 0xa2,=0D + 0x87, 0x07, 0xbe, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, = 0x0d, 0x01, 0x01, 0x05,=0D + 0x05, 0x00, 0x30, 0x81, 0x95, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, = 0x04, 0x06, 0x13, 0x02,=0D + 0x55, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, = 0x02, 0x55, 0x54, 0x31,=0D + 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0e, 0x53, 0x61, = 0x6c, 0x74, 0x20, 0x4c,=0D + 0x61, 0x6b, 0x65, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, = 0x06, 0x03, 0x55, 0x04,=0D + 0x0a, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, = 0x52, 0x55, 0x53, 0x54,=0D + 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f, = 0x06, 0x03, 0x55, 0x04,=0D + 0x0b, 0x13, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, = 0x77, 0x2e, 0x75, 0x73,=0D + 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, = 0x1d, 0x30, 0x1b, 0x06,=0D + 0x03, 0x55, 0x04, 0x03, 0x13, 0x14, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, = 0x45, 0x52, 0x46, 0x69,=0D + 0x72, 0x73, 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x30, 0x1e, = 0x17, 0x0d, 0x31, 0x30,=0D + 0x30, 0x35, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, = 0x0d, 0x31, 0x35, 0x30,=0D + 0x35, 0x31, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, = 0x31, 0x0b, 0x30, 0x09,=0D + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, = 0x19, 0x06, 0x03, 0x55,=0D + 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, = 0x4d, 0x61, 0x6e, 0x63,=0D + 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, = 0x55, 0x04, 0x07, 0x13,=0D + 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, = 0x06, 0x03, 0x55, 0x04,=0D + 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, = 0x20, 0x4c, 0x69, 0x6d,=0D + 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, = 0x03, 0x13, 0x1b, 0x43,=0D + 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, = 0x74, 0x61, 0x6d, 0x70,=0D + 0x69, 0x6e, 0x67, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x30, 0x82, = 0x01, 0x22, 0x30, 0x0d,=0D + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, = 0x00, 0x03, 0x82, 0x01,=0D + 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbc, = 0x35, 0xa0, 0x36, 0x70,=0D + 0x22, 0x81, 0x11, 0xc3, 0xb2, 0x83, 0xb9, 0xd3, 0x28, 0xc6, 0x36, 0xcd, = 0x25, 0x6b, 0xa9, 0x7b,=0D + 0xb2, 0x1c, 0xf6, 0x9b, 0x51, 0x9c, 0xef, 0x35, 0xf4, 0xed, 0x08, 0x8e, = 0x5e, 0x38, 0x08, 0xf8,=0D + 0x77, 0x3c, 0x0a, 0x42, 0xe0, 0xf3, 0x70, 0xdc, 0xa3, 0xd7, 0xca, 0xf5, = 0x4c, 0x0b, 0xcf, 0xff,=0D + 0x22, 0x9c, 0x0a, 0x7e, 0x68, 0xd6, 0x09, 0xa2, 0x2a, 0x84, 0x7b, 0xa6, = 0x9d, 0xb4, 0xa9, 0xc1,=0D + 0x33, 0xe2, 0xef, 0x1f, 0x17, 0x48, 0xca, 0x3a, 0xcd, 0x46, 0xe6, 0xc5, = 0xaa, 0x77, 0xbd, 0xe3,=0D + 0x77, 0x9a, 0xfa, 0x47, 0x53, 0x40, 0x28, 0x59, 0x43, 0x93, 0xf1, 0xa4, = 0x81, 0xea, 0xef, 0x80,=0D + 0xb5, 0x4f, 0xa7, 0x08, 0xce, 0xba, 0x6e, 0xbc, 0xca, 0x76, 0x0c, 0x97, = 0x64, 0x59, 0x86, 0x24,=0D + 0xbb, 0x3d, 0x82, 0x90, 0xa8, 0x55, 0xb1, 0x92, 0xd3, 0xa0, 0xa7, 0x05, = 0xac, 0x9f, 0x53, 0x25,=0D + 0x08, 0x10, 0x47, 0x99, 0xcd, 0x98, 0xde, 0x68, 0xe5, 0xb4, 0x50, 0x78, = 0xa3, 0xaf, 0x01, 0xcc,=0D + 0x59, 0x43, 0x58, 0xe4, 0x76, 0x6e, 0x7e, 0xac, 0xc7, 0xe2, 0x9e, 0x1f, = 0x4f, 0xb0, 0x47, 0x2d,=0D + 0xc8, 0x0c, 0xa3, 0x49, 0x27, 0x80, 0x75, 0x8c, 0xbb, 0x06, 0x91, 0x65, = 0x0f, 0x90, 0x9b, 0xf4,=0D + 0xba, 0xd1, 0x81, 0xc8, 0x5c, 0x6a, 0xec, 0x14, 0xe9, 0x25, 0x09, 0xbf, = 0x23, 0x16, 0xf4, 0x95,=0D + 0x46, 0x40, 0x40, 0x21, 0xbb, 0x83, 0x96, 0xfd, 0x86, 0x1f, 0x7a, 0xc8, = 0x0d, 0x10, 0x8e, 0xa2,=0D + 0xf8, 0x19, 0x07, 0x58, 0x7f, 0x9f, 0xbd, 0x37, 0x02, 0x60, 0xf2, 0xa4, = 0xe9, 0x9d, 0x44, 0x3f,=0D + 0x30, 0x05, 0xe4, 0xa7, 0x70, 0x99, 0x51, 0x9a, 0xe8, 0x17, 0xf1, 0x55, = 0xca, 0xb2, 0x61, 0x89,=0D + 0x65, 0x46, 0xa7, 0x6a, 0xf2, 0x58, 0x46, 0x7e, 0xaa, 0xa0, 0x07, 0x02, = 0x03, 0x01, 0x00, 0x01,=0D + 0xa3, 0x81, 0xf4, 0x30, 0x81, 0xf1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, = 0x23, 0x04, 0x18, 0x30,=0D + 0x16, 0x80, 0x14, 0xda, 0xed, 0x64, 0x74, 0x14, 0x9c, 0x14, 0x3c, 0xab, = 0xdd, 0x99, 0xa9, 0xbd,=0D + 0x5b, 0x28, 0x4d, 0x8b, 0x3c, 0xc9, 0xd8, 0x30, 0x1d, 0x06, 0x03, 0x55, = 0x1d, 0x0e, 0x04, 0x16,=0D + 0x04, 0x14, 0x2e, 0x2d, 0xb0, 0x0a, 0x44, 0x4a, 0xd3, 0x87, 0xc0, 0x02, = 0x07, 0xce, 0x97, 0x7d,=0D + 0x50, 0x62, 0x20, 0xfd, 0x0f, 0x83, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, = 0x0f, 0x01, 0x01, 0xff,=0D + 0x04, 0x04, 0x03, 0x02, 0x06, 0xc0, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, = 0x13, 0x01, 0x01, 0xff,=0D + 0x04, 0x02, 0x30, 0x00, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x01, = 0x01, 0xff, 0x04, 0x0c,=0D + 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, = 0x30, 0x42, 0x06, 0x03,=0D + 0x55, 0x1d, 0x1f, 0x04, 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, = 0x33, 0x86, 0x31, 0x68,=0D + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x75, 0x73, = 0x65, 0x72, 0x74, 0x72,=0D + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x55, 0x54, 0x4e, 0x2d, = 0x55, 0x53, 0x45, 0x52,=0D + 0x46, 0x69, 0x72, 0x73, 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, = 0x2e, 0x63, 0x72, 0x6c,=0D + 0x30, 0x35, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, = 0x04, 0x29, 0x30, 0x27,=0D + 0x30, 0x25, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, = 0x86, 0x19, 0x68, 0x74,=0D + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, = 0x65, 0x72, 0x74, 0x72,=0D + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, = 0x86, 0x48, 0x86, 0xf7,=0D + 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xc8, = 0xfb, 0x63, 0xf8, 0x0b,=0D + 0x75, 0x75, 0x2c, 0x3a, 0xf1, 0xf2, 0x13, 0xa7, 0x2d, 0xb6, 0xa3, 0x1a, = 0x9c, 0xad, 0x01, 0x07,=0D + 0xd3, 0x34, 0x8e, 0x77, 0xe0, 0xc2, 0x6e, 0xae, 0x02, 0x5d, 0x48, 0x4f, = 0xa4, 0xd2, 0x21, 0xb6,=0D + 0x36, 0xfd, 0x2a, 0x35, 0x43, 0x7c, 0x6b, 0xdf, 0x80, 0x87, 0x0b, 0x15, = 0xf0, 0x76, 0x32, 0x00,=0D + 0xb4, 0xce, 0xb5, 0x67, 0xa4, 0x2f, 0x2f, 0x20, 0x1b, 0x9c, 0x54, 0x9e, = 0x83, 0x3f, 0x1f, 0x5f,=0D + 0x14, 0x95, 0x62, 0x82, 0x0f, 0x22, 0x41, 0x22, 0x1f, 0x70, 0xb3, 0xf3, = 0xf7, 0x42, 0xde, 0x6c,=0D + 0x51, 0xcd, 0x4b, 0xf8, 0x21, 0xac, 0x9b, 0x3b, 0x8c, 0xb1, 0xe5, 0xe6, = 0x28, 0x8f, 0xce, 0x2a,=0D + 0x8a, 0xf9, 0xaa, 0x52, 0x4d, 0x8c, 0x5b, 0x77, 0xba, 0x4d, 0x5a, 0x58, = 0xdb, 0xbb, 0x6a, 0x04,=0D + 0xcc, 0x52, 0x1e, 0x9d, 0xe2, 0x28, 0x37, 0x0e, 0xbb, 0xe7, 0x0e, 0x91, = 0xc7, 0xf8, 0xdb, 0xf1,=0D + 0x81, 0x98, 0xeb, 0xcd, 0x37, 0xb3, 0x0e, 0xab, 0x65, 0xd3, 0x62, 0xec, = 0x3a, 0xa5, 0x76, 0xeb,=0D + 0x13, 0xa8, 0x35, 0x93, 0xc9, 0x2e, 0x0a, 0x01, 0xec, 0xc0, 0xe8, 0xcc, = 0x3d, 0x7e, 0xb6, 0xeb,=0D + 0xe2, 0xc1, 0xec, 0xd3, 0x14, 0x92, 0x82, 0x66, 0x87, 0x50, 0xdc, 0xfd, = 0x50, 0x97, 0xac, 0xb3,=0D + 0x4a, 0x76, 0x73, 0x06, 0xc4, 0x86, 0x11, 0x3a, 0xb3, 0x5f, 0x43, 0x04, = 0x52, 0x6f, 0xea, 0xb3,=0D + 0xd0, 0x74, 0x36, 0x4c, 0xca, 0xf1, 0x1b, 0x79, 0x84, 0x37, 0x70, 0x63, = 0xad, 0x74, 0xb9, 0xaa,=0D + 0x0e, 0xf3, 0x98, 0xb0, 0x86, 0x08, 0xeb, 0xdb, 0xe0, 0x1f, 0x8c, 0x10, = 0xf2, 0x39, 0x64, 0x9b,=0D + 0xae, 0x4f, 0x0a, 0x2c, 0x92, 0x8a, 0x4f, 0x18, 0xb5, 0x91, 0xe5, 0x8d, = 0x1a, 0x93, 0x5f, 0x1f,=0D + 0xae, 0xf1, 0xa6, 0xf0, 0x2e, 0x97, 0xd0, 0xd2, 0xf6, 0x2b, 0x3c, 0x31, = 0x82, 0x02, 0x61, 0x30,=0D + 0x82, 0x02, 0x5d, 0x02, 0x01, 0x01, 0x30, 0x81, 0xaa, 0x30, 0x81, 0x95, = 0x31, 0x0b, 0x30, 0x09,=0D + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0b, 0x30, = 0x09, 0x06, 0x03, 0x55,=0D + 0x04, 0x08, 0x13, 0x02, 0x55, 0x54, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, = 0x55, 0x04, 0x07, 0x13,=0D + 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, 0x61, 0x6b, 0x65, 0x20, 0x43, = 0x69, 0x74, 0x79, 0x31,=0D + 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x54, 0x68, = 0x65, 0x20, 0x55, 0x53,=0D + 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x4e, 0x65, 0x74, 0x77, = 0x6f, 0x72, 0x6b, 0x31,=0D + 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x18, 0x68, 0x74, = 0x74, 0x70, 0x3a, 0x2f,=0D + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, = 0x73, 0x74, 0x2e, 0x63,=0D + 0x6f, 0x6d, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, = 0x14, 0x55, 0x54, 0x4e,=0D + 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, 0x72, 0x73, 0x74, 0x2d, 0x4f, = 0x62, 0x6a, 0x65, 0x63,=0D + 0x74, 0x02, 0x10, 0x47, 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c, = 0xe1, 0x42, 0xd2, 0xa2,=0D + 0x87, 0x07, 0xbe, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, = 0x05, 0x00, 0xa0, 0x81,=0D + 0x8c, 0x30, 0x1a, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, = 0x09, 0x03, 0x31, 0x0d,=0D + 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x10, 0x01, = 0x04, 0x30, 0x1c, 0x06,=0D + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x05, 0x31, 0x0f, = 0x17, 0x0d, 0x31, 0x34,=0D + 0x30, 0x37, 0x32, 0x38, 0x30, 0x38, 0x35, 0x30, 0x30, 0x33, 0x5a, 0x30, = 0x23, 0x06, 0x09, 0x2a,=0D + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, = 0x7a, 0xad, 0x35, 0xdc,=0D + 0x5b, 0xd6, 0x00, 0xd7, 0x44, 0xac, 0x80, 0x8f, 0x4f, 0xb6, 0xb4, 0x03, = 0x62, 0x34, 0x53, 0xdc,=0D + 0x30, 0x2b, 0x06, 0x0b, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, = 0x10, 0x02, 0x0c, 0x31,=0D + 0x1c, 0x30, 0x1a, 0x30, 0x18, 0x30, 0x16, 0x04, 0x14, 0x3d, 0xbb, 0x6d, = 0xb5, 0x08, 0x5c, 0x6d,=0D + 0xd5, 0xa1, 0xca, 0x7f, 0x9c, 0xf8, 0x4e, 0xcb, 0x1a, 0x39, 0x10, 0xca, = 0xc8, 0x30, 0x0d, 0x06,=0D + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, = 0x04, 0x82, 0x01, 0x00,=0D + 0x73, 0x64, 0xb9, 0xa3, 0x54, 0x6f, 0x50, 0x97, 0x01, 0xa7, 0xf6, 0x0d, = 0xb8, 0xce, 0x4b, 0xaa,=0D + 0x43, 0xa2, 0x8f, 0xa3, 0xea, 0x93, 0xf2, 0xa3, 0xd0, 0x46, 0xde, 0xdd, = 0x45, 0xe5, 0x94, 0x5a,=0D + 0x45, 0xc2, 0x13, 0x1b, 0x90, 0x9b, 0xcf, 0x73, 0xcd, 0x28, 0x70, 0xf0, = 0xf4, 0x54, 0xb5, 0x2d,=0D + 0x31, 0xf9, 0xf3, 0x2d, 0x38, 0x78, 0xfe, 0x68, 0xea, 0x3c, 0xc0, 0xbe, = 0x0b, 0x5a, 0x91, 0x49,=0D + 0x63, 0xeb, 0x26, 0x32, 0x5b, 0x86, 0xcf, 0xe5, 0x8a, 0xa5, 0x9d, 0xe6, = 0x4b, 0x57, 0x91, 0x8f,=0D + 0x3c, 0xdc, 0xa6, 0x53, 0xd8, 0xdb, 0x8a, 0xfd, 0x3e, 0x7e, 0x19, 0x6f, = 0x27, 0x72, 0x95, 0xc2,=0D + 0x79, 0x73, 0xdf, 0xfb, 0x08, 0x5c, 0x5b, 0xc8, 0xb7, 0x94, 0x75, 0x88, = 0x7a, 0x9a, 0x85, 0x9f,=0D + 0x1b, 0xa3, 0x98, 0x30, 0x91, 0xee, 0xc0, 0x52, 0xd2, 0x75, 0x9c, 0xcb, = 0x45, 0x0d, 0x94, 0x43,=0D + 0x67, 0x7a, 0x49, 0x1c, 0xb1, 0x89, 0x9d, 0x6e, 0xfa, 0x87, 0xd2, 0x4d, = 0x6e, 0x74, 0x90, 0xf5,=0D + 0x80, 0x8c, 0x92, 0xda, 0xd9, 0xa1, 0x48, 0x20, 0x31, 0x02, 0x79, 0xde, = 0xe3, 0xbd, 0x09, 0x04,=0D + 0xa8, 0xd4, 0x99, 0xd7, 0x3b, 0xea, 0xf8, 0xdf, 0xb3, 0xb9, 0xd7, 0xa3, = 0x36, 0xa1, 0xdb, 0xd3,=0D + 0xec, 0x65, 0x8c, 0xb8, 0x8f, 0xfb, 0xd6, 0xef, 0x9c, 0x32, 0x3e, 0xab, = 0x20, 0x74, 0xb9, 0x65,=0D + 0x4c, 0xc6, 0x15, 0x2f, 0x31, 0x2a, 0x34, 0x3e, 0x84, 0x09, 0xb4, 0x75, = 0xbc, 0xbe, 0xaf, 0xb3,=0D + 0x9e, 0x85, 0xf1, 0xbb, 0x99, 0x1a, 0x07, 0xbd, 0x20, 0xa6, 0xed, 0xcf, = 0xd1, 0xa6, 0x9a, 0x22,=0D + 0xb2, 0x6d, 0x75, 0xf4, 0x23, 0x58, 0x13, 0x78, 0x73, 0x1a, 0xb2, 0x84, = 0xde, 0xad, 0xe8, 0x6d,=0D + 0xe6, 0xe7, 0x5c, 0xb6, 0xe6, 0x5b, 0x10, 0x37, 0x1f, 0xe3, 0x6e, 0xbd, = 0x83, 0xd7, 0x51, 0xb1,=0D + 0x00, 0x00, 0x00, 0x00, 0x0a=0D + };=0D +=0D +//=0D +// The Comodo Time Stamping Signer Certificate Used for the verification o= f TimeStamp signature.=0D +//=0D +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 TSTrustedCert[] =3D {=0D + 0x30, 0x82, 0x04, 0x93, 0x30, 0x82, 0x03, 0x7b, 0xa0, 0x03, 0x02, 0x01, = 0x02, 0x02, 0x10, 0x47,=0D + 0x8a, 0x8e, 0xfb, 0x59, 0xe1, 0xd8, 0x3f, 0x0c, 0xe1, 0x42, 0xd2, 0xa2, = 0x87, 0x07, 0xbe, 0x30,=0D + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, = 0x05, 0x00, 0x30, 0x81,=0D + 0x95, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, = 0x55, 0x53, 0x31, 0x0b,=0D + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x02, 0x55, 0x54, 0x31, = 0x17, 0x30, 0x15, 0x06,=0D + 0x03, 0x55, 0x04, 0x07, 0x13, 0x0e, 0x53, 0x61, 0x6c, 0x74, 0x20, 0x4c, = 0x61, 0x6b, 0x65, 0x20,=0D + 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, = 0x0a, 0x13, 0x15, 0x54,=0D + 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, = 0x20, 0x4e, 0x65, 0x74,=0D + 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, = 0x0b, 0x13, 0x18, 0x68,=0D + 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x75, 0x73, = 0x65, 0x72, 0x74, 0x72,=0D + 0x75, 0x73, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x1d, 0x30, 0x1b, 0x06, = 0x03, 0x55, 0x04, 0x03,=0D + 0x13, 0x14, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, 0x46, 0x69, = 0x72, 0x73, 0x74, 0x2d,=0D + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, = 0x30, 0x35, 0x31, 0x30,=0D + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x35, 0x30, = 0x35, 0x31, 0x30, 0x32,=0D + 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, = 0x06, 0x03, 0x55, 0x04,=0D + 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, = 0x04, 0x08, 0x13, 0x12,=0D + 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, = 0x68, 0x65, 0x73, 0x74,=0D + 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, = 0x07, 0x53, 0x61, 0x6c,=0D + 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, = 0x0a, 0x13, 0x11, 0x43,=0D + 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, = 0x69, 0x74, 0x65, 0x64,=0D + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1b, 0x43, = 0x4f, 0x4d, 0x4f, 0x44,=0D + 0x4f, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, = 0x69, 0x6e, 0x67, 0x20,=0D + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, = 0x06, 0x09, 0x2a, 0x86,=0D + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, = 0x0f, 0x00, 0x30, 0x82,=0D + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbc, 0x35, 0xa0, 0x36, 0x70, = 0x22, 0x81, 0x11, 0xc3,=0D + 0xb2, 0x83, 0xb9, 0xd3, 0x28, 0xc6, 0x36, 0xcd, 0x25, 0x6b, 0xa9, 0x7b, = 0xb2, 0x1c, 0xf6, 0x9b,=0D + 0x51, 0x9c, 0xef, 0x35, 0xf4, 0xed, 0x08, 0x8e, 0x5e, 0x38, 0x08, 0xf8, = 0x77, 0x3c, 0x0a, 0x42,=0D + 0xe0, 0xf3, 0x70, 0xdc, 0xa3, 0xd7, 0xca, 0xf5, 0x4c, 0x0b, 0xcf, 0xff, = 0x22, 0x9c, 0x0a, 0x7e,=0D + 0x68, 0xd6, 0x09, 0xa2, 0x2a, 0x84, 0x7b, 0xa6, 0x9d, 0xb4, 0xa9, 0xc1, = 0x33, 0xe2, 0xef, 0x1f,=0D + 0x17, 0x48, 0xca, 0x3a, 0xcd, 0x46, 0xe6, 0xc5, 0xaa, 0x77, 0xbd, 0xe3, = 0x77, 0x9a, 0xfa, 0x47,=0D + 0x53, 0x40, 0x28, 0x59, 0x43, 0x93, 0xf1, 0xa4, 0x81, 0xea, 0xef, 0x80, = 0xb5, 0x4f, 0xa7, 0x08,=0D + 0xce, 0xba, 0x6e, 0xbc, 0xca, 0x76, 0x0c, 0x97, 0x64, 0x59, 0x86, 0x24, = 0xbb, 0x3d, 0x82, 0x90,=0D + 0xa8, 0x55, 0xb1, 0x92, 0xd3, 0xa0, 0xa7, 0x05, 0xac, 0x9f, 0x53, 0x25, = 0x08, 0x10, 0x47, 0x99,=0D + 0xcd, 0x98, 0xde, 0x68, 0xe5, 0xb4, 0x50, 0x78, 0xa3, 0xaf, 0x01, 0xcc, = 0x59, 0x43, 0x58, 0xe4,=0D + 0x76, 0x6e, 0x7e, 0xac, 0xc7, 0xe2, 0x9e, 0x1f, 0x4f, 0xb0, 0x47, 0x2d, = 0xc8, 0x0c, 0xa3, 0x49,=0D + 0x27, 0x80, 0x75, 0x8c, 0xbb, 0x06, 0x91, 0x65, 0x0f, 0x90, 0x9b, 0xf4, = 0xba, 0xd1, 0x81, 0xc8,=0D + 0x5c, 0x6a, 0xec, 0x14, 0xe9, 0x25, 0x09, 0xbf, 0x23, 0x16, 0xf4, 0x95, = 0x46, 0x40, 0x40, 0x21,=0D + 0xbb, 0x83, 0x96, 0xfd, 0x86, 0x1f, 0x7a, 0xc8, 0x0d, 0x10, 0x8e, 0xa2, = 0xf8, 0x19, 0x07, 0x58,=0D + 0x7f, 0x9f, 0xbd, 0x37, 0x02, 0x60, 0xf2, 0xa4, 0xe9, 0x9d, 0x44, 0x3f, = 0x30, 0x05, 0xe4, 0xa7,=0D + 0x70, 0x99, 0x51, 0x9a, 0xe8, 0x17, 0xf1, 0x55, 0xca, 0xb2, 0x61, 0x89, = 0x65, 0x46, 0xa7, 0x6a,=0D + 0xf2, 0x58, 0x46, 0x7e, 0xaa, 0xa0, 0x07, 0x02, 0x03, 0x01, 0x00, 0x01, = 0xa3, 0x81, 0xf4, 0x30,=0D + 0x81, 0xf1, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, = 0x16, 0x80, 0x14, 0xda,=0D + 0xed, 0x64, 0x74, 0x14, 0x9c, 0x14, 0x3c, 0xab, 0xdd, 0x99, 0xa9, 0xbd, = 0x5b, 0x28, 0x4d, 0x8b,=0D + 0x3c, 0xc9, 0xd8, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, = 0x04, 0x14, 0x2e, 0x2d,=0D + 0xb0, 0x0a, 0x44, 0x4a, 0xd3, 0x87, 0xc0, 0x02, 0x07, 0xce, 0x97, 0x7d, = 0x50, 0x62, 0x20, 0xfd,=0D + 0x0f, 0x83, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, = 0x04, 0x04, 0x03, 0x02,=0D + 0x06, 0xc0, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, = 0x04, 0x02, 0x30, 0x00,=0D + 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x01, 0x01, 0xff, 0x04, 0x0c, = 0x30, 0x0a, 0x06, 0x08,=0D + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x42, 0x06, 0x03, = 0x55, 0x1d, 0x1f, 0x04,=0D + 0x3b, 0x30, 0x39, 0x30, 0x37, 0xa0, 0x35, 0xa0, 0x33, 0x86, 0x31, 0x68, = 0x74, 0x74, 0x70, 0x3a,=0D + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, = 0x75, 0x73, 0x74, 0x2e,=0D + 0x63, 0x6f, 0x6d, 0x2f, 0x55, 0x54, 0x4e, 0x2d, 0x55, 0x53, 0x45, 0x52, = 0x46, 0x69, 0x72, 0x73,=0D + 0x74, 0x2d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x63, 0x72, 0x6c, = 0x30, 0x35, 0x06, 0x08,=0D + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x29, 0x30, 0x27, = 0x30, 0x25, 0x06, 0x08,=0D + 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, = 0x74, 0x70, 0x3a, 0x2f,=0D + 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, = 0x75, 0x73, 0x74, 0x2e,=0D + 0x63, 0x6f, 0x6d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, = 0x0d, 0x01, 0x01, 0x05,=0D + 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xc8, 0xfb, 0x63, 0xf8, 0x0b, = 0x75, 0x75, 0x2c, 0x3a,=0D + 0xf1, 0xf2, 0x13, 0xa7, 0x2d, 0xb6, 0xa3, 0x1a, 0x9c, 0xad, 0x01, 0x07, = 0xd3, 0x34, 0x8e, 0x77,=0D + 0xe0, 0xc2, 0x6e, 0xae, 0x02, 0x5d, 0x48, 0x4f, 0xa4, 0xd2, 0x21, 0xb6, = 0x36, 0xfd, 0x2a, 0x35,=0D + 0x43, 0x7c, 0x6b, 0xdf, 0x80, 0x87, 0x0b, 0x15, 0xf0, 0x76, 0x32, 0x00, = 0xb4, 0xce, 0xb5, 0x67,=0D + 0xa4, 0x2f, 0x2f, 0x20, 0x1b, 0x9c, 0x54, 0x9e, 0x83, 0x3f, 0x1f, 0x5f, = 0x14, 0x95, 0x62, 0x82,=0D + 0x0f, 0x22, 0x41, 0x22, 0x1f, 0x70, 0xb3, 0xf3, 0xf7, 0x42, 0xde, 0x6c, = 0x51, 0xcd, 0x4b, 0xf8,=0D + 0x21, 0xac, 0x9b, 0x3b, 0x8c, 0xb1, 0xe5, 0xe6, 0x28, 0x8f, 0xce, 0x2a, = 0x8a, 0xf9, 0xaa, 0x52,=0D + 0x4d, 0x8c, 0x5b, 0x77, 0xba, 0x4d, 0x5a, 0x58, 0xdb, 0xbb, 0x6a, 0x04, = 0xcc, 0x52, 0x1e, 0x9d,=0D + 0xe2, 0x28, 0x37, 0x0e, 0xbb, 0xe7, 0x0e, 0x91, 0xc7, 0xf8, 0xdb, 0xf1, = 0x81, 0x98, 0xeb, 0xcd,=0D + 0x37, 0xb3, 0x0e, 0xab, 0x65, 0xd3, 0x62, 0xec, 0x3a, 0xa5, 0x76, 0xeb, = 0x13, 0xa8, 0x35, 0x93,=0D + 0xc9, 0x2e, 0x0a, 0x01, 0xec, 0xc0, 0xe8, 0xcc, 0x3d, 0x7e, 0xb6, 0xeb, = 0xe2, 0xc1, 0xec, 0xd3,=0D + 0x14, 0x92, 0x82, 0x66, 0x87, 0x50, 0xdc, 0xfd, 0x50, 0x97, 0xac, 0xb3, = 0x4a, 0x76, 0x73, 0x06,=0D + 0xc4, 0x86, 0x11, 0x3a, 0xb3, 0x5f, 0x43, 0x04, 0x52, 0x6f, 0xea, 0xb3, = 0xd0, 0x74, 0x36, 0x4c,=0D + 0xca, 0xf1, 0x1b, 0x79, 0x84, 0x37, 0x70, 0x63, 0xad, 0x74, 0xb9, 0xaa, = 0x0e, 0xf3, 0x98, 0xb0,=0D + 0x86, 0x08, 0xeb, 0xdb, 0xe0, 0x1f, 0x8c, 0x10, 0xf2, 0x39, 0x64, 0x9b, = 0xae, 0x4f, 0x0a, 0x2c,=0D + 0x92, 0x8a, 0x4f, 0x18, 0xb5, 0x91, 0xe5, 0x8d, 0x1a, 0x93, 0x5f, 0x1f, = 0xae, 0xf1, 0xa6, 0xf0,=0D + 0x2e, 0x97, 0xd0, 0xd2, 0xf6, 0x2b, 0x3c, 0x0a=0D + };=0D +=0D +UNIT_TEST_STATUS=0D +EFIAPI=0D +TestVerifyImageTimestampVerify (=0D + IN UNIT_TEST_CONTEXT Context=0D + )=0D +{=0D + BOOLEAN Status;=0D + EFI_TIME SigningTime;=0D +=0D + Status =3D FALSE;=0D +=0D + //=0D + // Verify RFC3161 Timestamp CounterSignature.=0D + //=0D + Status =3D ImageTimestampVerify (=0D + AuthenticodeWithTS,=0D + sizeof (AuthenticodeWithTS),=0D + TSTrustedCert,=0D + sizeof (TSTrustedCert),=0D + &SigningTime=0D + );=0D + UT_ASSERT_TRUE (Status);=0D +=0D + UT_ASSERT_EQUAL (SigningTime.Year, 2014);=0D + UT_ASSERT_EQUAL (SigningTime.Month, 7);=0D + UT_ASSERT_EQUAL (SigningTime.Day, 28);=0D + UT_ASSERT_EQUAL (SigningTime.Hour, 8);=0D + UT_ASSERT_EQUAL (SigningTime.Minute, 50);=0D + UT_ASSERT_EQUAL (SigningTime.Second, 3);=0D +=0D + return Status;=0D +}=0D +=0D +TEST_DESC mImageTimestampTest[] =3D {=0D + //=0D + // -----Description--------------------------------------Class--------= --------------------Function-----------------Pre---Post--Context=0D + //=0D + {"TestVerifyImageTimestampVerify()", "CryptoPkg.BaseCryptLib.ImageTim= estamp", TestVerifyImageTimestampVerify, NULL, NULL, NULL},=0D +};=0D +=0D +UINTN mImageTimestampTestNum =3D ARRAY_SIZE(mImageTimestampTest);=0D 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=0D + This is a sample to demostrate the usage of the Unit Test Library that=0D + supports the PEI, DXE, SMM, UEFI SHell, and host execution environments.= =0D +=0D + Copyright (c) Microsoft Corporation.
=0D + SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +#include "TestBaseCryptLib.h"=0D +=0D +=0D +/**=0D + Initialize the unit test framework, suite, and unit tests for the=0D + sample unit tests and run the unit tests.=0D +=0D + @retval EFI_SUCCESS All test cases were dispatched.=0D + @retval EFI_OUT_OF_RESOURCES There are not enough resources available = to=0D + initialize the unit tests.=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +UefiTestMain (=0D + VOID=0D + )=0D +{=0D + EFI_STATUS Status;=0D + UNIT_TEST_FRAMEWORK_HANDLE Framework;=0D +=0D + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME, UNIT_TEST_VERSION ));=0D + CreateUnitTest(UNIT_TEST_NAME, UNIT_TEST_VERSION, &Framework);=0D +=0D + //=0D + // Execute the tests.=0D + //=0D + Status =3D RunAllTestSuites (Framework);=0D +=0D + if (Framework) {=0D + FreeUnitTestFramework (Framework);=0D + }=0D +=0D + return Status;=0D +}=0D +=0D +/**=0D + Standard PEIM entry point for target based unit test execution from PEI.= =0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +PeiEntryPoint (=0D + IN EFI_PEI_FILE_HANDLE FileHandle,=0D + IN CONST EFI_PEI_SERVICES **PeiServices=0D + )=0D +{=0D + return UefiTestMain ();=0D +}=0D +=0D +/**=0D + Standard UEFI entry point for target based unit test execution from DXE,= SMM,=0D + UEFI Shell.=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +DxeEntryPoint (=0D + IN EFI_HANDLE ImageHandle,=0D + IN EFI_SYSTEM_TABLE *SystemTable=0D + )=0D +{=0D + return UefiTestMain ();=0D +}=0D +=0D +/**=0D + Standard POSIX C entry point for host based unit test execution.=0D +**/=0D +int=0D +main (=0D + int argc,=0D + char *argv[]=0D + )=0D +{=0D + return UefiTestMain ();=0D +}=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMainBCOP.= c b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMainBCOP.c new file mode 100644 index 000000000000..69bd1142e396 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/UnitTestMainBCOP.c @@ -0,0 +1,58 @@ +/** @file=0D + This is a sample to demostrate the usage of the Unit Test Library that=0D + supports the PEI, DXE, SMM, UEFI SHell, and host execution environments.= =0D +=0D + Copyright (c) Microsoft Corporation.
=0D + SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +#include "TestBaseCryptLib.h"=0D +=0D +=0D +/**=0D + Initialize the unit test framework, suite, and unit tests for the=0D + sample unit tests and run the unit tests.=0D +=0D + @retval EFI_SUCCESS All test cases were dispatched.=0D + @retval EFI_OUT_OF_RESOURCES There are not enough resources available = to=0D + initialize the unit tests.=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +UefiTestMain (=0D + VOID=0D + )=0D +{=0D + EFI_STATUS Status;=0D + UNIT_TEST_FRAMEWORK_HANDLE Framework;=0D +=0D + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_NAME, UNIT_TEST_VERSION ));=0D + CreateUnitTest(UNIT_TEST_NAME, UNIT_TEST_VERSION, &Framework);=0D +=0D + //=0D + // Execute the tests.=0D + //=0D + Status =3D RunAllTestSuites (Framework);=0D + if (Framework) {=0D + FreeUnitTestFramework (Framework);=0D + }=0D +=0D + return Status;=0D +}=0D +=0D +/**=0D + Standard POSIX C entry point for host based unit test execution.=0D +**/=0D +int=0D +main (=0D + int argc,=0D + char *argv[]=0D + )=0D +{=0D + EFI_STATUS Status;=0D + // Install the BaseCryptLib protocol=0D + // Run the tests=0D + Status =3D UefiTestMain ();=0D + // Uninstall it=0D + return Status;=0D +}=0D diff --git a/CryptoPkg/CryptoPkg.ci.yaml b/CryptoPkg/CryptoPkg.ci.yaml index f54ebfb22e70..0228e63d6617 100644 --- a/CryptoPkg/CryptoPkg.ci.yaml +++ b/CryptoPkg/CryptoPkg.ci.yaml @@ -8,6 +8,10 @@ "CompilerPlugin": {=0D "DscPath": "CryptoPkg.dsc"=0D },=0D + ## options defined .pytool/Plugin/HostUnitTestCompilerPlugin=0D + "HostUnitTestCompilerPlugin": {=0D + "DscPath": "Test/UnitTest/CryptoPkgHostUnitTest.dsc"=0D + },=0D "CharEncodingCheck": {=0D "IgnoreFiles": []=0D },=0D diff --git a/CryptoPkg/CryptoPkg.dsc b/CryptoPkg/CryptoPkg.dsc index 1af78468a19c..28295ec80ec6 100644 --- a/CryptoPkg/CryptoPkg.dsc +++ b/CryptoPkg/CryptoPkg.dsc @@ -223,6 +223,32 @@ # generated for it, but the binary will not be put into any firmware= volume.=0D #=0D ##########################################################################= #########################=0D +[Components]=0D + CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf=0D + CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf=0D + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibUefiShell.i= nf {=0D + =0D + PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf=0D + UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverE= ntryPoint.inf=0D + UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/U= efiApplicationEntryPoint.inf=0D +=0D + BaseLib|MdePkg/Library/BaseLib/BaseLib.inf=0D + BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf=0D + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf=0D + MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemor= yAllocationLib.inf=0D + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf=0D + PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf=0D + PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformance= LibNull.inf=0D + PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf=0D + UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/Uef= iBootServicesTableLib.inf=0D +=0D + UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/UnitTestLib.inf= =0D + UnitTestPersistenceLib|UnitTestFrameworkPkg/Library/UnitTestPersiste= nceLibNull/UnitTestPersistenceLibNull.inf=0D + UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultR= eportLib/UnitTestResultReportLibDebugLib.inf=0D + =0D + UnitTestResultReportLib|UnitTestFrameworkPkg/Library/UnitTestResultR= eportLib/UnitTestResultReportLibConOut.inf=0D + }=0D +=0D !if $(CRYPTO_SERVICES) =3D=3D PACKAGE=0D [Components]=0D CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf=0D diff --git a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf b/= CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf new file mode 100644 index 000000000000..47515f06687e --- /dev/null +++ b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf @@ -0,0 +1,90 @@ +## @file=0D +# Cryptographic Library Instance for host based unit tests=0D +#=0D +# Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.
= =0D +# Copyright (c) Microsoft Corporation.=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010005=0D + BASE_NAME =3D BaseCryptLib=0D + FILE_GUID =3D c97d34aa-caf8-42cd-8261-8705f46304b3= =0D + MODULE_TYPE =3D DXE_DRIVER=0D + VERSION_STRING =3D 1.0=0D + LIBRARY_CLASS =3D BaseCryptLib|DXE_DRIVER DXE_CORE UEFI= _APPLICATION UEFI_DRIVER=0D +=0D +#=0D +# The following information is for reference only and not required by the = build tools.=0D +#=0D +# VALID_ARCHITECTURES =3D IA32 X64 ARM AARCH64=0D +#=0D +=0D +[Sources]=0D + InternalCryptLib.h=0D + Hash/CryptMd5.c=0D + Hash/CryptSha1.c=0D + Hash/CryptSha256.c=0D + Hash/CryptSha512.c=0D + Hash/CryptSm3.c=0D + Hmac/CryptHmacSha256.c=0D + Kdf/CryptHkdf.c=0D + Cipher/CryptAes.c=0D + Pk/CryptRsaBasic.c=0D + Pk/CryptRsaExt.c=0D + Pk/CryptPkcs1Oaep.c=0D + Pk/CryptPkcs5Pbkdf2.c=0D + Pk/CryptPkcs7Sign.c=0D + Pk/CryptPkcs7VerifyCommon.c=0D + Pk/CryptPkcs7VerifyBase.c=0D + Pk/CryptPkcs7VerifyEku.c=0D + Pk/CryptDh.c=0D + Pk/CryptX509.c=0D + Pk/CryptAuthenticode.c=0D + Pk/CryptTs.c=0D + Pem/CryptPem.c=0D +=0D + SysCall/UnitTestHostCrtWrapper.c=0D +=0D +[Sources.Ia32]=0D + Rand/CryptRandTsc.c=0D +=0D +[Sources.X64]=0D + Rand/CryptRandTsc.c=0D +=0D +[Sources.ARM]=0D + Rand/CryptRand.c=0D +=0D +[Sources.AARCH64]=0D + Rand/CryptRand.c=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + CryptoPkg/CryptoPkg.dec=0D +=0D +[LibraryClasses]=0D + BaseLib=0D + BaseMemoryLib=0D + MemoryAllocationLib=0D + DebugLib=0D + OpensslLib=0D +=0D +#=0D +# Remove these [BuildOptions] after this library is cleaned up=0D +#=0D +[BuildOptions]=0D + #=0D + # suppress the following warnings so we do not break the build with warn= ings-as-errors:=0D + # C4090: 'function' : different 'const' qualifiers=0D + # C4018: '>': signed/unsigned mismatch=0D + MSFT:*_*_*_CC_FLAGS =3D /wd4090 /wd4018=0D +=0D + # -JCryptoPkg/Include : To disable the use of the system includes provid= ed by RVCT=0D + # --diag_remark=3D1 : Reduce severity of "#1-D: last line of file en= ds without a newline"=0D + RVCT:*_*_ARM_CC_FLAGS =3D -JCryptoPkg/Include --diag_remark=3D1=0D +=0D + GCC:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99=0D + GCC:*_CLANG38_*_CC_FLAGS =3D -std=3Dc99=0D +=0D + XCODE:*_*_*_CC_FLAGS =3D -std=3Dc99=0D diff --git a/CryptoPkg/Test/UnitTest/CryptoPkgHostUnitTest.dsc b/CryptoPkg/= Test/UnitTest/CryptoPkgHostUnitTest.dsc new file mode 100644 index 000000000000..d8605176e697 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/CryptoPkgHostUnitTest.dsc @@ -0,0 +1,35 @@ +## @file=0D +# CryptoPkg DSC file used to build host-based unit tests.=0D +#=0D +# Copyright (c) Microsoft Corporation.
=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +[Defines]=0D + PLATFORM_NAME =3D CryptoPkgHostTest=0D + PLATFORM_GUID =3D C7F97D6D-54AC-45A9-8197-CC99B20CC7EC=0D + PLATFORM_VERSION =3D 0.1=0D + DSC_SPECIFICATION =3D 0x00010005=0D + OUTPUT_DIRECTORY =3D Build/CryptoPkg/HostTest=0D + SUPPORTED_ARCHITECTURES =3D IA32|X64=0D + BUILD_TARGETS =3D NOOPT=0D + SKUID_IDENTIFIER =3D DEFAULT=0D +=0D +!include UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc=0D +=0D +[LibraryClasses]=0D + OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf=0D + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf= =0D +=0D +[LibraryClasses.AARCH64, LibraryClasses.ARM]=0D + RngLib|MdePkg/Library/BaseRngLibNull/BaseRngLibNull.inf=0D +=0D +[LibraryClasses.X64, LibraryClasses.IA32]=0D + RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf=0D +=0D +[Components]=0D + #=0D + # Build HOST_APPLICATION that tests the SampleUnitTest=0D + #=0D + CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSigna= tures.h b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSignatur= es.h new file mode 100644 index 000000000000..9f5f813ef8b1 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Pkcs7EkuTestSignatures.h @@ -0,0 +1,789 @@ +/*++=0D +=0D +Copyright (C) Microsoft Corporation. All Rights Reserved.=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +Module Name:=0D + AllTestSignatures.h=0D +=0D +Abstract:=0D + This file has test signatures in byte array format for Unit-Testing the= =0D + Enhanced Key Usage (EKU) parsing function.=0D +=0D + EFI_STATUS=0D + EFIAPI=0D + VerifyEKUsInPkcs7Signature (=0D + IN CONST UINT8 *Pkcs7Signature,=0D + IN CONST UINT32 SignatureSize,=0D + IN CONST CHAR8 *RequiredEKUs[],=0D + IN CONST UINT32 RequiredEKUsSize,=0D + IN BOOLEAN RequireAllPresent=0D + );=0D +=0D + Note: These byte arrays were created by running BinToH.exe on the P7B=0D + signature files.=0D +--*/=0D +=0D +=0D +//=0D +// This is the ProductionECCSignature.p7b in byte array format. It has on= e=0D +// EKU in it. (Firmware signing)=0D +// "1.3.6.1.4.1.311.76.9.21.1"=0D +//=0D +CONST UINT8 ProductionECCSignature[] =3D=0D +{=0D + 0x30, 0x82, 0x04, 0xC0, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0= x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, 0= x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0x80, 0x30, 0x82, 0x03, 0= x7C, 0x30, 0x82, 0x03,=0D + 0x22, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x13, 0x33, 0x00, 0x00, 0x00, 0= x03, 0x7E, 0x2E, 0x8F,=0D + 0xBD, 0xA5, 0xC9, 0x2C, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0= x0A, 0x06, 0x08, 0x2A,=0D + 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x81, 0x8F, 0x31, 0x0B, 0= x30, 0x09, 0x06, 0x03,=0D + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0= x03, 0x55, 0x04, 0x08,=0D + 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0= x31, 0x10, 0x30, 0x0E,=0D + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0= x6E, 0x64, 0x31, 0x1E,=0D + 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0= x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0= x6F, 0x6E, 0x31, 0x39,=0D + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x30, 0x4D, 0x69, 0x63, 0= x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x53, 0x75, 0x72, 0x66, 0x61, 0= x63, 0x65, 0x20, 0x41,=0D + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20, 0x46, 0x69, 0x72, 0= x6D, 0x77, 0x61, 0x72,=0D + 0x65, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x38, 0x30, 0x1E, 0x17, 0= x0D, 0x31, 0x38, 0x30,=0D + 0x37, 0x31, 0x32, 0x31, 0x38, 0x33, 0x37, 0x30, 0x37, 0x5A, 0x17, 0x0D, 0= x31, 0x39, 0x30, 0x37,=0D + 0x31, 0x32, 0x31, 0x38, 0x33, 0x37, 0x30, 0x37, 0x5A, 0x30, 0x3A, 0x31, 0= x38, 0x30, 0x36, 0x06,=0D + 0x03, 0x55, 0x04, 0x03, 0x13, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0= x6F, 0x66, 0x74, 0x20,=0D + 0x45, 0x43, 0x43, 0x20, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0= x41, 0x63, 0x63, 0x65,=0D + 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0= x72, 0x65, 0x20, 0x53,=0D + 0x69, 0x67, 0x6E, 0x65, 0x72, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0= x86, 0x48, 0xCE, 0x3D,=0D + 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0= x03, 0x42, 0x00, 0x04,=0D + 0x7D, 0xDF, 0xDE, 0xFA, 0xEE, 0xA5, 0x66, 0x33, 0xAA, 0xCC, 0xA4, 0x18, 0= x65, 0x9E, 0x3A, 0xC6,=0D + 0x4B, 0xCB, 0xD5, 0x78, 0x94, 0x14, 0xEE, 0xAA, 0xF3, 0x9D, 0xCB, 0x38, 0= x6C, 0x5D, 0xFE, 0x3F,=0D + 0x8A, 0xA9, 0x8D, 0x04, 0xD2, 0xFE, 0xAA, 0x38, 0xF3, 0xD6, 0x4A, 0x7E, 0= xCF, 0x12, 0x95, 0xCF,=0D + 0xAD, 0x92, 0x33, 0xF7, 0x38, 0x83, 0xC5, 0xFD, 0xCF, 0xD0, 0x96, 0x08, 0= xCA, 0x62, 0x7D, 0x22,=0D + 0xA3, 0x82, 0x01, 0xAF, 0x30, 0x82, 0x01, 0xAB, 0x30, 0x0E, 0x06, 0x03, 0= x55, 0x1D, 0x0F, 0x01,=0D + 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03, 0= x55, 0x1D, 0x25, 0x04,=0D + 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0= x4C, 0x09, 0x15, 0x01,=0D + 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 0= x30, 0x00, 0x30, 0x1D,=0D + 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xE7, 0xD1, 0xD4, 0= x74, 0x71, 0xF4, 0xC9,=0D + 0x35, 0x04, 0xA7, 0x9A, 0x1E, 0x0C, 0xDD, 0xF4, 0x8D, 0x5C, 0x1E, 0xF2, 0= x29, 0x30, 0x37, 0x06,=0D + 0x03, 0x55, 0x1D, 0x11, 0x04, 0x30, 0x30, 0x2E, 0xA4, 0x2C, 0x30, 0x2A, 0= x31, 0x10, 0x30, 0x0E,=0D + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x07, 0x53, 0x75, 0x72, 0x66, 0x61, 0= x63, 0x65, 0x31, 0x16,=0D + 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x05, 0x13, 0x0D, 0x34, 0x34, 0x30, 0= x38, 0x31, 0x31, 0x2B,=0D + 0x34, 0x34, 0x30, 0x38, 0x36, 0x32, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0= x23, 0x04, 0x18, 0x30,=0D + 0x16, 0x80, 0x14, 0x6F, 0x3A, 0xCC, 0x1B, 0x2F, 0x17, 0x5C, 0xED, 0xEB, 0= xC8, 0xBF, 0x93, 0xA7,=0D + 0xB5, 0x93, 0xD1, 0x4D, 0x40, 0xAA, 0x03, 0x30, 0x75, 0x06, 0x03, 0x55, 0= x1D, 0x1F, 0x04, 0x6E,=0D + 0x30, 0x6C, 0x30, 0x6A, 0xA0, 0x68, 0xA0, 0x66, 0x86, 0x64, 0x68, 0x74, 0= x74, 0x70, 0x3A, 0x2F,=0D + 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0= x66, 0x74, 0x2E, 0x63,=0D + 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x6F, 0x70, 0x73, 0x2F, 0x63, 0x72, 0= x6C, 0x2F, 0x4D, 0x69,=0D + 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x25, 0x32, 0x30, 0x45, 0x43, 0= x43, 0x25, 0x32, 0x30,=0D + 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x25, 0x32, 0x30, 0x41, 0x63, 0= x63, 0x65, 0x73, 0x73,=0D + 0x6F, 0x72, 0x79, 0x25, 0x32, 0x30, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0= x72, 0x65, 0x25, 0x32,=0D + 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x32, 0x30, 0x31, 0x38, 0x2E, 0x63, 0= x72, 0x6C, 0x30, 0x81,=0D + 0x82, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0= x76, 0x30, 0x74, 0x30,=0D + 0x72, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0= x66, 0x68, 0x74, 0x74,=0D + 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0= x6F, 0x73, 0x6F, 0x66,=0D + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 0x69, 0x6F, 0x70, 0x73, 0= x2F, 0x63, 0x65, 0x72,=0D + 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0= x25, 0x32, 0x30, 0x45,=0D + 0x43, 0x43, 0x25, 0x32, 0x30, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0= x25, 0x32, 0x30, 0x41,=0D + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x25, 0x32, 0x30, 0x46, 0= x69, 0x72, 0x6D, 0x77,=0D + 0x61, 0x72, 0x65, 0x25, 0x32, 0x30, 0x43, 0x41, 0x25, 0x32, 0x30, 0x32, 0= x30, 0x31, 0x38, 0x2E,=0D + 0x63, 0x72, 0x74, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0= x04, 0x03, 0x02, 0x03,=0D + 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x3D, 0xCF, 0xEF, 0xB8, 0xF0, 0x87, 0= xEE, 0x7E, 0x80, 0x71,=0D + 0x04, 0x77, 0x68, 0xDC, 0x66, 0x2F, 0x09, 0xA7, 0xF0, 0x76, 0x57, 0x7C, 0= x12, 0x5A, 0xE4, 0x80,=0D + 0x5A, 0xA0, 0xF2, 0x2C, 0x45, 0x1B, 0x02, 0x21, 0x00, 0xEB, 0x5F, 0x89, 0= xD5, 0xEB, 0x03, 0x46,=0D + 0x9E, 0x08, 0x95, 0x2A, 0x39, 0x30, 0x5D, 0x49, 0xB6, 0x24, 0xCE, 0x78, 0= x1B, 0xB8, 0x1D, 0x0F,=0D + 0xD1, 0x24, 0xD0, 0xA9, 0x18, 0x0F, 0x45, 0x4F, 0xF6, 0x31, 0x82, 0x01, 0= x17, 0x30, 0x82, 0x01,=0D + 0x13, 0x02, 0x01, 0x01, 0x30, 0x81, 0xA7, 0x30, 0x81, 0x8F, 0x31, 0x0B, 0= x30, 0x09, 0x06, 0x03,=0D + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0= x03, 0x55, 0x04, 0x08,=0D + 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0= x31, 0x10, 0x30, 0x0E,=0D + 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0= x6E, 0x64, 0x31, 0x1E,=0D + 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0= x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0= x6F, 0x6E, 0x31, 0x39,=0D + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x30, 0x4D, 0x69, 0x63, 0= x72, 0x6F, 0x73, 0x6F,=0D + 0x66, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x53, 0x75, 0x72, 0x66, 0x61, 0= x63, 0x65, 0x20, 0x41,=0D + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x79, 0x20, 0x46, 0x69, 0x72, 0= x6D, 0x77, 0x61, 0x72,=0D + 0x65, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x38, 0x02, 0x13, 0x33, 0= x00, 0x00, 0x00, 0x03,=0D + 0x7E, 0x2E, 0x8F, 0xBD, 0xA5, 0xC9, 0x2C, 0x13, 0x00, 0x00, 0x00, 0x00, 0= x00, 0x03, 0x30, 0x0D,=0D + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0= x00, 0x30, 0x0B, 0x06,=0D + 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00, 0x04, 0x48, 0= x30, 0x46, 0x02, 0x21,=0D + 0x00, 0x85, 0xC7, 0x25, 0x5C, 0xF8, 0x5A, 0x13, 0xB7, 0xB6, 0x3A, 0xF1, 0= x04, 0x72, 0xAC, 0xB3,=0D + 0xF8, 0xC3, 0xE0, 0xE3, 0xD7, 0x98, 0x1B, 0xCF, 0x04, 0xA8, 0x0C, 0x7B, 0= xBB, 0x7D, 0x40, 0xC2,=0D + 0x99, 0x02, 0x21, 0x00, 0xA3, 0x83, 0x12, 0xE4, 0xB6, 0x3C, 0xC9, 0x3F, 0= x05, 0xCF, 0x70, 0x57,=0D + 0x54, 0x74, 0x0E, 0xEC, 0x14, 0xAD, 0x2C, 0x66, 0x9D, 0x72, 0x73, 0x62, 0= x41, 0xA6, 0xC7, 0x90,=0D + 0x05, 0x35, 0xF5, 0x80,=0D +};=0D +=0D +//=0D +// This is the TestSignedWithMultipleCerts.bin.Signature.p7b in byte array= =0D +// format. It has two certs in it, and the leaf has an EKU of=0D +// "1.3.6.1.4.1.311.76.9.21.1"=0D +//=0D +CONST UINT8 TestSignedMultipleCerts[] =3D=0D +{=0D + 0x30, 0x82, 0x04, 0x90, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, = 0x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0xC2, 0x30, 0x82, 0x01, = 0xC5, 0x30, 0x82, 0x01,=0D + 0x6A, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x16, 0x2F, 0xD8, 0x2B, = 0x8A, 0x98, 0x6A, 0x8A,=0D + 0x43, 0xC2, 0x22, 0xA5, 0x47, 0xA1, 0x18, 0xDD, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, = 0x46, 0x69, 0x72, 0x6D,=0D + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, = 0x30, 0x1E, 0x17, 0x0D,=0D + 0x31, 0x38, 0x30, 0x37, 0x31, 0x38, 0x32, 0x33, 0x31, 0x36, 0x31, 0x32, = 0x5A, 0x17, 0x0D, 0x33,=0D + 0x38, 0x30, 0x37, 0x31, 0x38, 0x32, 0x33, 0x32, 0x36, 0x31, 0x32, 0x5A, = 0x30, 0x28, 0x31, 0x26,=0D + 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1D, 0x53, 0x75, 0x72, = 0x66, 0x61, 0x63, 0x65,=0D + 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, = 0x53, 0x69, 0x67, 0x6E,=0D + 0x65, 0x72, 0x4C, 0x65, 0x61, 0x66, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, = 0x07, 0x03, 0x42, 0x00,=0D + 0x04, 0x2E, 0x4C, 0x85, 0xFD, 0x86, 0x85, 0x4C, 0x55, 0x96, 0x17, 0xE3, = 0x0C, 0xC1, 0xCB, 0xD9,=0D + 0x95, 0xCF, 0xC7, 0xEA, 0x57, 0x02, 0x5C, 0x4F, 0x92, 0x7C, 0x35, 0xBF, = 0x2B, 0x3D, 0xBA, 0x14,=0D + 0xE5, 0x39, 0x9D, 0x9B, 0x64, 0x4A, 0x25, 0x29, 0xD5, 0x61, 0xDA, 0xFD, = 0x51, 0x24, 0xB3, 0xE2,=0D + 0x4E, 0x00, 0x59, 0xDF, 0xB4, 0x96, 0x42, 0x59, 0xA4, 0xBC, 0xA7, 0x64, = 0x8F, 0x3A, 0x17, 0x33,=0D + 0x55, 0xA3, 0x78, 0x30, 0x76, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, = 0x01, 0x01, 0xFF, 0x04,=0D + 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1D, 0x25, = 0x04, 0x0F, 0x30, 0x0D,=0D + 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x4C, 0x09, 0x15, = 0x01, 0x30, 0x0C, 0x06,=0D + 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, = 0x1F, 0x06, 0x03, 0x55,=0D + 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x63, 0x69, 0x95, 0xE3, = 0xDD, 0xF4, 0xF8, 0x42,=0D + 0xEA, 0x55, 0x95, 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F, = 0x30, 0x1D, 0x06, 0x03,=0D + 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0xD6, 0x4A, 0xF8, 0x77, 0x21, = 0x34, 0xEC, 0xC0, 0xAE,=0D + 0x4D, 0x8F, 0x17, 0x86, 0xFF, 0xEA, 0xE3, 0x83, 0x42, 0x32, 0x83, 0x30, = 0x0A, 0x06, 0x08, 0x2A,=0D + 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, = 0x02, 0x21, 0x00, 0x9A,=0D + 0xAB, 0xE3, 0x6F, 0xD7, 0xB3, 0x0F, 0x83, 0x8A, 0xA1, 0x64, 0x70, 0xC1, = 0xAC, 0x54, 0xE2, 0x59,=0D + 0x7C, 0x8B, 0x11, 0x8F, 0x76, 0xB1, 0x9C, 0x5F, 0xDA, 0x7D, 0x04, 0x3C, = 0x73, 0xB5, 0xCF, 0x02,=0D + 0x21, 0x00, 0xB3, 0x31, 0xC1, 0x48, 0x3C, 0xEE, 0xA1, 0x6D, 0xA9, 0xF7, = 0xF5, 0x9F, 0xD3, 0x6F,=0D + 0x7D, 0x6F, 0xAB, 0x76, 0x12, 0xEE, 0x01, 0x4D, 0xFC, 0xE6, 0x87, 0xEA, = 0xAB, 0x09, 0x98, 0xD8,=0D + 0x97, 0x6F, 0x30, 0x82, 0x01, 0xF5, 0x30, 0x82, 0x01, 0x58, 0xA0, 0x03, = 0x02, 0x01, 0x02, 0x02,=0D + 0x10, 0x4D, 0x88, 0xBF, 0x04, 0xDF, 0x10, 0x57, 0xBA, 0x43, 0x53, 0x6C, = 0xFD, 0xA5, 0x90, 0xA7,=0D + 0x6F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, = 0x02, 0x30, 0x28, 0x31,=0D + 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1D, 0x53, 0x75, = 0x72, 0x66, 0x61, 0x63,=0D + 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, = 0x65, 0x53, 0x69, 0x67,=0D + 0x6E, 0x65, 0x72, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x31, = 0x38, 0x30, 0x31, 0x31,=0D + 0x36, 0x32, 0x33, 0x32, 0x31, 0x31, 0x33, 0x5A, 0x17, 0x0D, 0x33, 0x38, = 0x30, 0x31, 0x31, 0x36,=0D + 0x32, 0x33, 0x33, 0x31, 0x31, 0x33, 0x5A, 0x30, 0x26, 0x31, 0x24, 0x30, = 0x22, 0x06, 0x03, 0x55,=0D + 0x04, 0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, = 0x65, 0x73, 0x74, 0x46,=0D + 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, = 0x72, 0x43, 0x41, 0x30,=0D + 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, = 0x06, 0x08, 0x2A, 0x86,=0D + 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x0E, 0x58, = 0xA3, 0xDB, 0xD3, 0x9C,=0D + 0x21, 0xFC, 0x63, 0x6F, 0xBD, 0xB9, 0xA7, 0x8A, 0xB3, 0xBF, 0x40, 0x87, = 0x43, 0x06, 0x53, 0x91,=0D + 0x54, 0x31, 0x11, 0x0D, 0x3B, 0x50, 0x32, 0xEA, 0x11, 0xA3, 0x3D, 0x77, = 0x08, 0x9E, 0xBC, 0x06,=0D + 0x5C, 0x21, 0x48, 0x9D, 0x9B, 0x7C, 0x45, 0xFD, 0x4B, 0xD7, 0x0C, 0x04, = 0xD4, 0xE0, 0x0C, 0xB7,=0D + 0x6C, 0xBF, 0x22, 0xE1, 0x00, 0x99, 0x75, 0x39, 0x27, 0x59, 0xA3, 0x66, = 0x30, 0x64, 0x30, 0x0E,=0D + 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, = 0x02, 0x04, 0x30, 0x12,=0D + 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30, 0x06, = 0x01, 0x01, 0xFF, 0x02,=0D + 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, = 0x16, 0x80, 0x14, 0x6D,=0D + 0x8B, 0x24, 0xBF, 0x20, 0x9D, 0x54, 0xAF, 0x04, 0x5B, 0x84, 0x91, 0x96, = 0xAE, 0x99, 0xC1, 0x23,=0D + 0x1C, 0x0E, 0xAC, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, = 0x04, 0x14, 0x63, 0x69,=0D + 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95, 0x54, 0x07, 0xC4, = 0xC5, 0x2A, 0xD2, 0xA9,=0D + 0x2D, 0x2F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, = 0x03, 0x02, 0x03, 0x81,=0D + 0x8A, 0x00, 0x30, 0x81, 0x86, 0x02, 0x41, 0x2A, 0xD4, 0xFC, 0x35, 0x28, = 0x73, 0x9F, 0xB3, 0x8A,=0D + 0xE3, 0x13, 0x7F, 0xCA, 0x36, 0x88, 0x1E, 0xD0, 0x95, 0xDC, 0xE9, 0x8A, = 0x9D, 0xC0, 0x27, 0x8C,=0D + 0xD8, 0x57, 0x57, 0x5F, 0xDC, 0x13, 0x53, 0x68, 0xED, 0x2F, 0x4D, 0x6A, = 0x77, 0xA2, 0x55, 0x48,=0D + 0xCB, 0x24, 0x55, 0x3A, 0x30, 0x32, 0xE5, 0x5C, 0xDF, 0x96, 0xF1, 0x15, = 0xD4, 0xE7, 0xCD, 0x6A,=0D + 0x26, 0xBD, 0x7B, 0x92, 0x50, 0x74, 0xE4, 0x56, 0x02, 0x41, 0x46, 0x33, = 0x61, 0x30, 0xFF, 0xA8,=0D + 0x53, 0x31, 0x38, 0xCA, 0x6B, 0x77, 0x88, 0x36, 0x9A, 0x0B, 0x57, 0xC3, = 0xD1, 0xB2, 0xA7, 0x40,=0D + 0x53, 0x6A, 0xD1, 0x6C, 0x8A, 0x8B, 0x3C, 0x29, 0xC1, 0x2B, 0x82, 0x61, = 0x2F, 0x1A, 0x9F, 0x2C,=0D + 0x9A, 0x81, 0xD0, 0x2B, 0x3E, 0x0D, 0x99, 0xB7, 0xD4, 0x7E, 0xA7, 0xEA, = 0x0C, 0x8E, 0x13, 0x0E,=0D + 0x53, 0x65, 0x48, 0x17, 0xE5, 0xFA, 0x91, 0x79, 0x98, 0xC7, 0xA1, 0x31, = 0x81, 0xA6, 0x30, 0x81,=0D + 0xA3, 0x02, 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, = 0x73, 0x74, 0x46, 0x69,=0D + 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, = 0x43, 0x41, 0x02, 0x10,=0D + 0x16, 0x2F, 0xD8, 0x2B, 0x8A, 0x98, 0x6A, 0x8A, 0x43, 0xC2, 0x22, 0xA5, = 0x47, 0xA1, 0x18, 0xDD,=0D + 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, = 0x01, 0x05, 0x00, 0x30,=0D + 0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00, = 0x04, 0x46, 0x30, 0x44,=0D + 0x02, 0x20, 0x40, 0xD4, 0xD4, 0xAF, 0x89, 0xFA, 0x83, 0x44, 0x7B, 0x59, = 0xB4, 0x2B, 0x99, 0xF0,=0D + 0xD4, 0xB0, 0x75, 0x2E, 0x56, 0xAA, 0x0A, 0xDA, 0xCC, 0x82, 0xD5, 0xBC, = 0x8D, 0xC4, 0x00, 0xF6,=0D + 0x46, 0xA4, 0x02, 0x20, 0x6F, 0xA7, 0xE1, 0x32, 0xB2, 0xF2, 0x5A, 0x69, = 0xC5, 0x45, 0xB6, 0x35,=0D + 0x04, 0x05, 0x9B, 0xAC, 0x44, 0xB4, 0xA0, 0xE1, 0x25, 0x92, 0xE8, 0x3E, = 0x8F, 0x85, 0xA3, 0xBE,=0D + 0x34, 0xFE, 0x78, 0x31,=0D +};=0D +=0D +//=0D +// This is the TestSignedWithMultipleEKUsInCert.bin.Signature.p7b signatur= e in=0D +// byte array format. It has two EKU's in it:=0D +// "1.3.6.1.4.1.311.76.9.21.1"=0D +// "1.3.6.1.4.1.311.76.9.21.2"=0D +//=0D +CONST UINT8 TestSignedWithMultipleEKUsInCert[] =3D=0D +{=0D + 0x30, 0x82, 0x06, 0x2C, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, = 0x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x04, 0x9E, 0x30, 0x82, 0x01, = 0xF5, 0x30, 0x82, 0x01,=0D + 0x58, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x4D, 0x88, 0xBF, 0x04, = 0xDF, 0x10, 0x57, 0xBA,=0D + 0x43, 0x53, 0x6C, 0xFD, 0xA5, 0x90, 0xA7, 0x6F, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x28, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x1D, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, = 0x46, 0x69, 0x72, 0x6D,=0D + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x52, 0x6F, = 0x6F, 0x74, 0x30, 0x1E,=0D + 0x17, 0x0D, 0x31, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x32, 0x31, = 0x31, 0x33, 0x5A, 0x17,=0D + 0x0D, 0x33, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x33, 0x31, 0x31, = 0x33, 0x5A, 0x30, 0x26,=0D + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53, = 0x75, 0x72, 0x66, 0x61,=0D + 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, = 0x72, 0x65, 0x53, 0x69,=0D + 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, = 0x07, 0x03, 0x42, 0x00,=0D + 0x04, 0x0E, 0x58, 0xA3, 0xDB, 0xD3, 0x9C, 0x21, 0xFC, 0x63, 0x6F, 0xBD, = 0xB9, 0xA7, 0x8A, 0xB3,=0D + 0xBF, 0x40, 0x87, 0x43, 0x06, 0x53, 0x91, 0x54, 0x31, 0x11, 0x0D, 0x3B, = 0x50, 0x32, 0xEA, 0x11,=0D + 0xA3, 0x3D, 0x77, 0x08, 0x9E, 0xBC, 0x06, 0x5C, 0x21, 0x48, 0x9D, 0x9B, = 0x7C, 0x45, 0xFD, 0x4B,=0D + 0xD7, 0x0C, 0x04, 0xD4, 0xE0, 0x0C, 0xB7, 0x6C, 0xBF, 0x22, 0xE1, 0x00, = 0x99, 0x75, 0x39, 0x27,=0D + 0x59, 0xA3, 0x66, 0x30, 0x64, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, = 0x01, 0x01, 0xFF, 0x04,=0D + 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, = 0x01, 0x01, 0xFF, 0x04,=0D + 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, = 0x03, 0x55, 0x1D, 0x23,=0D + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6D, 0x8B, 0x24, 0xBF, 0x20, 0x9D, = 0x54, 0xAF, 0x04, 0x5B,=0D + 0x84, 0x91, 0x96, 0xAE, 0x99, 0xC1, 0x23, 0x1C, 0x0E, 0xAC, 0x30, 0x1D, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x63, 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8, = 0x42, 0xEA, 0x55, 0x95,=0D + 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F, 0x30, 0x0A, 0x06, = 0x08, 0x2A, 0x86, 0x48,=0D + 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8A, 0x00, 0x30, 0x81, 0x86, = 0x02, 0x41, 0x2A, 0xD4,=0D + 0xFC, 0x35, 0x28, 0x73, 0x9F, 0xB3, 0x8A, 0xE3, 0x13, 0x7F, 0xCA, 0x36, = 0x88, 0x1E, 0xD0, 0x95,=0D + 0xDC, 0xE9, 0x8A, 0x9D, 0xC0, 0x27, 0x8C, 0xD8, 0x57, 0x57, 0x5F, 0xDC, = 0x13, 0x53, 0x68, 0xED,=0D + 0x2F, 0x4D, 0x6A, 0x77, 0xA2, 0x55, 0x48, 0xCB, 0x24, 0x55, 0x3A, 0x30, = 0x32, 0xE5, 0x5C, 0xDF,=0D + 0x96, 0xF1, 0x15, 0xD4, 0xE7, 0xCD, 0x6A, 0x26, 0xBD, 0x7B, 0x92, 0x50, = 0x74, 0xE4, 0x56, 0x02,=0D + 0x41, 0x46, 0x33, 0x61, 0x30, 0xFF, 0xA8, 0x53, 0x31, 0x38, 0xCA, 0x6B, = 0x77, 0x88, 0x36, 0x9A,=0D + 0x0B, 0x57, 0xC3, 0xD1, 0xB2, 0xA7, 0x40, 0x53, 0x6A, 0xD1, 0x6C, 0x8A, = 0x8B, 0x3C, 0x29, 0xC1,=0D + 0x2B, 0x82, 0x61, 0x2F, 0x1A, 0x9F, 0x2C, 0x9A, 0x81, 0xD0, 0x2B, 0x3E, = 0x0D, 0x99, 0xB7, 0xD4,=0D + 0x7E, 0xA7, 0xEA, 0x0C, 0x8E, 0x13, 0x0E, 0x53, 0x65, 0x48, 0x17, 0xE5, = 0xFA, 0x91, 0x79, 0x98,=0D + 0xC7, 0xA1, 0x30, 0x82, 0x02, 0xA1, 0x30, 0x82, 0x02, 0x47, 0xA0, 0x03, = 0x02, 0x01, 0x02, 0x02,=0D + 0x10, 0x29, 0xBB, 0x52, 0x25, 0xED, 0x34, 0xB7, 0xBA, 0x40, 0xF8, 0xC3, = 0x14, 0xB5, 0xC8, 0x86,=0D + 0x9E, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, = 0x02, 0x30, 0x26, 0x31,=0D + 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53, 0x75, = 0x72, 0x66, 0x61, 0x63,=0D + 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, = 0x65, 0x53, 0x69, 0x67,=0D + 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, = 0x37, 0x32, 0x37, 0x32,=0D + 0x30, 0x33, 0x34, 0x31, 0x31, 0x5A, 0x17, 0x0D, 0x32, 0x33, 0x30, 0x37, = 0x32, 0x37, 0x32, 0x30,=0D + 0x34, 0x34, 0x31, 0x31, 0x5A, 0x30, 0x3A, 0x31, 0x38, 0x30, 0x36, 0x06, = 0x03, 0x55, 0x04, 0x03,=0D + 0x0C, 0x2F, 0x54, 0x65, 0x73, 0x74, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, = 0x65, 0x46, 0x69, 0x72,=0D + 0x6D, 0x77, 0x61, 0x72, 0x65, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67, = 0x6E, 0x65, 0x72, 0x4D,=0D + 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x45, 0x4B, 0x55, 0x73, 0x49, = 0x6E, 0x43, 0x65, 0x72,=0D + 0x74, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, = 0x86, 0xF7, 0x0D, 0x01,=0D + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, = 0x0A, 0x02, 0x82, 0x01,=0D + 0x01, 0x00, 0xD0, 0x61, 0xA5, 0xCD, 0x49, 0x4B, 0x5C, 0x88, 0x89, 0x09, = 0xCA, 0xE7, 0xEB, 0x58,=0D + 0x91, 0x8F, 0x59, 0xBE, 0xE8, 0x16, 0xC0, 0xEF, 0x75, 0xE5, 0x18, 0x88, = 0xE8, 0xCE, 0xFA, 0xD2,=0D + 0xB0, 0x77, 0xC1, 0xD2, 0xF2, 0x9E, 0x65, 0xE8, 0xDB, 0x6B, 0x8C, 0x93, = 0xE5, 0x39, 0x1D, 0xF9,=0D + 0x37, 0x2A, 0x52, 0x7F, 0xC3, 0x93, 0xD7, 0x9F, 0x03, 0x83, 0xBC, 0x6E, = 0xC6, 0x83, 0x64, 0x15,=0D + 0x1A, 0x5C, 0x74, 0x41, 0x40, 0x21, 0xC9, 0x25, 0xF0, 0x14, 0xA3, 0x29, = 0x97, 0x29, 0x8C, 0x5D,=0D + 0xED, 0xE9, 0x8D, 0x66, 0xCC, 0xD1, 0xD1, 0xE0, 0x08, 0x52, 0xA5, 0x93, = 0x07, 0xCB, 0xF8, 0x95,=0D + 0x2C, 0x8D, 0x29, 0x84, 0x10, 0x5F, 0x57, 0x52, 0x10, 0x75, 0x35, 0x8A, = 0x84, 0xE3, 0xAE, 0x10,=0D + 0x57, 0x29, 0xE9, 0xEB, 0x6E, 0xD2, 0xC7, 0x6D, 0x35, 0x43, 0x67, 0x82, = 0xE3, 0x98, 0x29, 0x9C,=0D + 0x59, 0x77, 0xA0, 0x00, 0x27, 0xB2, 0x5D, 0xB9, 0x84, 0x31, 0x89, 0x2F, = 0x77, 0xC5, 0xB9, 0x23,=0D + 0xE0, 0x14, 0x94, 0x6F, 0x33, 0xD5, 0x3B, 0x58, 0xFB, 0xD6, 0xB6, 0xE5, = 0xD4, 0x09, 0x3D, 0xB2,=0D + 0xE7, 0x87, 0xC6, 0xEA, 0x73, 0x61, 0x6D, 0xDA, 0xFA, 0x95, 0x2B, 0x2B, = 0x8A, 0xEC, 0x7E, 0x68,=0D + 0x0F, 0x98, 0x16, 0x08, 0xFF, 0xB2, 0xC1, 0xBF, 0xAB, 0x3D, 0xB0, 0xC2, = 0xD5, 0x16, 0xAE, 0x71,=0D + 0x54, 0x48, 0xD1, 0x52, 0x72, 0xFD, 0x42, 0x09, 0x66, 0xAF, 0x50, 0xDE, = 0x4C, 0x3C, 0x6A, 0xBC,=0D + 0x1F, 0xC5, 0x0A, 0xA0, 0xC5, 0x9A, 0xF1, 0xB2, 0xB2, 0x3F, 0x14, 0xE1, = 0x93, 0x07, 0xF0, 0x00,=0D + 0x04, 0xEF, 0x16, 0x76, 0x18, 0x10, 0x65, 0x63, 0x42, 0x42, 0x12, 0xD0, = 0x65, 0xF5, 0xA2, 0xCF,=0D + 0x90, 0xBE, 0x65, 0x57, 0x25, 0x8C, 0xAC, 0x5E, 0x05, 0x31, 0x91, 0x9E, = 0x4D, 0x18, 0xBC, 0x15,=0D + 0x30, 0x7B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x78, 0x30, 0x76, 0x30, = 0x0E, 0x06, 0x03, 0x55,=0D + 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, = 0x24, 0x06, 0x03, 0x55,=0D + 0x1D, 0x25, 0x04, 0x1D, 0x30, 0x1B, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, = 0x01, 0x82, 0x37, 0x4C,=0D + 0x09, 0x15, 0x01, 0x06, 0x0C, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, = 0x4C, 0x09, 0x15, 0x01,=0D + 0x02, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, = 0x80, 0x14, 0x63, 0x69,=0D + 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95, 0x54, 0x07, 0xC4, = 0xC5, 0x2A, 0xD2, 0xA9,=0D + 0x2D, 0x2F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, = 0x14, 0xC0, 0xDC, 0xCB,=0D + 0x76, 0x52, 0x84, 0x91, 0xF5, 0x37, 0x0D, 0x85, 0xB6, 0x45, 0x23, 0xFA, = 0xA0, 0xAD, 0xC1, 0x1D,=0D + 0x92, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, = 0x02, 0x03, 0x48, 0x00,=0D + 0x30, 0x45, 0x02, 0x21, 0x00, 0xF4, 0xB0, 0x8A, 0x91, 0x96, 0x61, 0xDF, = 0xC3, 0x54, 0xA5, 0xB3,=0D + 0x1A, 0x3C, 0x28, 0x06, 0xC0, 0xA1, 0xF5, 0x72, 0xD1, 0x02, 0x5C, 0x69, = 0xB6, 0x6C, 0xA8, 0xDC,=0D + 0x6B, 0x78, 0xD9, 0x0C, 0x9A, 0x02, 0x20, 0x37, 0x2C, 0x61, 0x9E, 0x6E, = 0x5F, 0xC6, 0xFA, 0x92,=0D + 0x52, 0xB0, 0x4E, 0x52, 0xC7, 0xF1, 0xE9, 0x0F, 0xB6, 0xD5, 0x08, 0x10, = 0x41, 0x3A, 0x61, 0xFD,=0D + 0xC5, 0x70, 0x87, 0xBB, 0x49, 0x82, 0xEA, 0x31, 0x82, 0x01, 0x65, 0x30, = 0x82, 0x01, 0x61, 0x02,=0D + 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, = 0x46, 0x69, 0x72, 0x6D,=0D + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, = 0x02, 0x10, 0x29, 0xBB,=0D + 0x52, 0x25, 0xED, 0x34, 0xB7, 0xBA, 0x40, 0xF8, 0xC3, 0x14, 0xB5, 0xC8, = 0x86, 0x9E, 0x30, 0x0D,=0D + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, = 0x00, 0x30, 0x0D, 0x06,=0D + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, = 0x04, 0x82, 0x01, 0x00,=0D + 0xBB, 0x51, 0xDD, 0x8F, 0xB4, 0x99, 0x37, 0x13, 0x94, 0x6F, 0x09, 0x05, = 0xBA, 0x5B, 0x8D, 0x86,=0D + 0x9A, 0xB0, 0x51, 0xEB, 0x6B, 0x10, 0xD7, 0xD1, 0x95, 0x4A, 0x4D, 0x23, = 0xA3, 0x37, 0x82, 0xDF,=0D + 0x1F, 0x24, 0xE4, 0x62, 0x4F, 0xD4, 0x52, 0x73, 0xF8, 0x39, 0x2B, 0x46, = 0xF4, 0x61, 0xCE, 0xF1,=0D + 0x64, 0xD7, 0x60, 0xC9, 0xCC, 0xCA, 0x8D, 0x94, 0xA5, 0x67, 0x68, 0x2B, = 0xE4, 0xB0, 0xD7, 0x64,=0D + 0xC8, 0xF3, 0x9C, 0x98, 0x2C, 0x0A, 0x69, 0x56, 0xD6, 0x59, 0xDF, 0x4D, = 0x38, 0xE7, 0xD4, 0x63,=0D + 0x2B, 0x74, 0xA1, 0xA3, 0xF9, 0xE1, 0x1A, 0x12, 0x2B, 0x04, 0x46, 0x11, = 0xA8, 0x26, 0x00, 0x15,=0D + 0x4F, 0x14, 0x7F, 0xB1, 0xB4, 0x25, 0x0C, 0x87, 0xB0, 0x56, 0x8C, 0xBE, = 0x0D, 0xFA, 0x66, 0x6F,=0D + 0x8A, 0xCB, 0x0A, 0x88, 0x3B, 0xF6, 0x52, 0xCD, 0xBB, 0xA2, 0xA9, 0xAD, = 0xAD, 0x09, 0x0D, 0xDA,=0D + 0x79, 0x8A, 0xAE, 0xE5, 0x9D, 0xCE, 0x5C, 0x60, 0x99, 0x67, 0x26, 0xC4, = 0xAF, 0xD4, 0x01, 0xB1,=0D + 0x6D, 0xD1, 0x8C, 0x4D, 0x1D, 0xBD, 0xAB, 0x42, 0x2C, 0xF2, 0xD8, 0x07, = 0x3F, 0xDC, 0x5E, 0x68,=0D + 0x4C, 0xD9, 0xDB, 0xC0, 0x93, 0xBB, 0x8E, 0xA0, 0xA2, 0x09, 0x5F, 0x03, = 0x58, 0x48, 0x54, 0xF6,=0D + 0xF0, 0xDA, 0x7A, 0x7F, 0xC4, 0xD2, 0x9F, 0x64, 0xF5, 0x85, 0x86, 0x48, = 0xDF, 0x7F, 0x86, 0x14,=0D + 0x7C, 0x62, 0x77, 0x1D, 0x22, 0xE5, 0x34, 0x42, 0xE4, 0x49, 0x38, 0xB4, = 0xE4, 0x22, 0xFB, 0x5F,=0D + 0xB5, 0xEA, 0xBA, 0x90, 0x51, 0xC0, 0xC6, 0x94, 0x09, 0xE4, 0xB7, 0x15, = 0x3F, 0x07, 0x23, 0xE8,=0D + 0x46, 0x93, 0xA5, 0x7B, 0x7A, 0x91, 0xDA, 0x8E, 0x7C, 0xAF, 0xBD, 0x41, = 0xB9, 0xDE, 0x85, 0x04,=0D + 0xBC, 0x08, 0x6C, 0x08, 0x56, 0x16, 0xDB, 0xB5, 0xEE, 0x65, 0x76, 0xE9, = 0x78, 0xD3, 0xDD, 0xD8,=0D +=0D +};=0D +=0D +//=0D +// This is the TestSignedWithProductId10001.bin.p7b in byte array format.= =0D +// It has two EKU's in it: (Product ID is 10001)=0D +// "1.3.6.1.4.1.311.76.9.21.1"=0D +// "1.3.6.1.4.1.311.76.9.21.1.10001"=0D +//=0D +CONST UINT8 TestSignedWithProductId10001[] =3D=0D +{=0D + 0x30, 0x82, 0x06, 0x1E, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, = 0x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x04, 0x90, 0x30, 0x82, 0x01, = 0xF5, 0x30, 0x82, 0x01,=0D + 0x58, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x4D, 0x88, 0xBF, 0x04, = 0xDF, 0x10, 0x57, 0xBA,=0D + 0x43, 0x53, 0x6C, 0xFD, 0xA5, 0x90, 0xA7, 0x6F, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x28, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x1D, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, = 0x46, 0x69, 0x72, 0x6D,=0D + 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x52, 0x6F, = 0x6F, 0x74, 0x30, 0x1E,=0D + 0x17, 0x0D, 0x31, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x32, 0x31, = 0x31, 0x33, 0x5A, 0x17,=0D + 0x0D, 0x33, 0x38, 0x30, 0x31, 0x31, 0x36, 0x32, 0x33, 0x33, 0x31, 0x31, = 0x33, 0x5A, 0x30, 0x26,=0D + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53, = 0x75, 0x72, 0x66, 0x61,=0D + 0x63, 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, = 0x72, 0x65, 0x53, 0x69,=0D + 0x67, 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, = 0x07, 0x03, 0x42, 0x00,=0D + 0x04, 0x0E, 0x58, 0xA3, 0xDB, 0xD3, 0x9C, 0x21, 0xFC, 0x63, 0x6F, 0xBD, = 0xB9, 0xA7, 0x8A, 0xB3,=0D + 0xBF, 0x40, 0x87, 0x43, 0x06, 0x53, 0x91, 0x54, 0x31, 0x11, 0x0D, 0x3B, = 0x50, 0x32, 0xEA, 0x11,=0D + 0xA3, 0x3D, 0x77, 0x08, 0x9E, 0xBC, 0x06, 0x5C, 0x21, 0x48, 0x9D, 0x9B, = 0x7C, 0x45, 0xFD, 0x4B,=0D + 0xD7, 0x0C, 0x04, 0xD4, 0xE0, 0x0C, 0xB7, 0x6C, 0xBF, 0x22, 0xE1, 0x00, = 0x99, 0x75, 0x39, 0x27,=0D + 0x59, 0xA3, 0x66, 0x30, 0x64, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, = 0x01, 0x01, 0xFF, 0x04,=0D + 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, = 0x01, 0x01, 0xFF, 0x04,=0D + 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, = 0x03, 0x55, 0x1D, 0x23,=0D + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x6D, 0x8B, 0x24, 0xBF, 0x20, 0x9D, = 0x54, 0xAF, 0x04, 0x5B,=0D + 0x84, 0x91, 0x96, 0xAE, 0x99, 0xC1, 0x23, 0x1C, 0x0E, 0xAC, 0x30, 0x1D, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x63, 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8, = 0x42, 0xEA, 0x55, 0x95,=0D + 0x54, 0x07, 0xC4, 0xC5, 0x2A, 0xD2, 0xA9, 0x2D, 0x2F, 0x30, 0x0A, 0x06, = 0x08, 0x2A, 0x86, 0x48,=0D + 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8A, 0x00, 0x30, 0x81, 0x86, = 0x02, 0x41, 0x2A, 0xD4,=0D + 0xFC, 0x35, 0x28, 0x73, 0x9F, 0xB3, 0x8A, 0xE3, 0x13, 0x7F, 0xCA, 0x36, = 0x88, 0x1E, 0xD0, 0x95,=0D + 0xDC, 0xE9, 0x8A, 0x9D, 0xC0, 0x27, 0x8C, 0xD8, 0x57, 0x57, 0x5F, 0xDC, = 0x13, 0x53, 0x68, 0xED,=0D + 0x2F, 0x4D, 0x6A, 0x77, 0xA2, 0x55, 0x48, 0xCB, 0x24, 0x55, 0x3A, 0x30, = 0x32, 0xE5, 0x5C, 0xDF,=0D + 0x96, 0xF1, 0x15, 0xD4, 0xE7, 0xCD, 0x6A, 0x26, 0xBD, 0x7B, 0x92, 0x50, = 0x74, 0xE4, 0x56, 0x02,=0D + 0x41, 0x46, 0x33, 0x61, 0x30, 0xFF, 0xA8, 0x53, 0x31, 0x38, 0xCA, 0x6B, = 0x77, 0x88, 0x36, 0x9A,=0D + 0x0B, 0x57, 0xC3, 0xD1, 0xB2, 0xA7, 0x40, 0x53, 0x6A, 0xD1, 0x6C, 0x8A, = 0x8B, 0x3C, 0x29, 0xC1,=0D + 0x2B, 0x82, 0x61, 0x2F, 0x1A, 0x9F, 0x2C, 0x9A, 0x81, 0xD0, 0x2B, 0x3E, = 0x0D, 0x99, 0xB7, 0xD4,=0D + 0x7E, 0xA7, 0xEA, 0x0C, 0x8E, 0x13, 0x0E, 0x53, 0x65, 0x48, 0x17, 0xE5, = 0xFA, 0x91, 0x79, 0x98,=0D + 0xC7, 0xA1, 0x30, 0x82, 0x02, 0x93, 0x30, 0x82, 0x02, 0x39, 0xA0, 0x03, = 0x02, 0x01, 0x02, 0x02,=0D + 0x10, 0x1F, 0x65, 0xF1, 0x29, 0x3B, 0x89, 0x6A, 0xBF, 0x43, 0xAF, 0xC7, = 0x30, 0x36, 0xD1, 0x0D,=0D + 0x2B, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, = 0x02, 0x30, 0x26, 0x31,=0D + 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1B, 0x53, 0x75, = 0x72, 0x66, 0x61, 0x63,=0D + 0x65, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, 0x72, = 0x65, 0x53, 0x69, 0x67,=0D + 0x6E, 0x65, 0x72, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, = 0x38, 0x30, 0x32, 0x31,=0D + 0x36, 0x34, 0x32, 0x32, 0x33, 0x5A, 0x17, 0x0D, 0x32, 0x33, 0x30, 0x38, = 0x30, 0x32, 0x31, 0x36,=0D + 0x35, 0x32, 0x32, 0x33, 0x5A, 0x30, 0x2B, 0x31, 0x29, 0x30, 0x27, 0x06, = 0x03, 0x55, 0x04, 0x03,=0D + 0x0C, 0x20, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x72, 0x6D, 0x77, 0x61, = 0x72, 0x65, 0x53, 0x69,=0D + 0x67, 0x6E, 0x65, 0x72, 0x50, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x49, = 0x44, 0x31, 0x30, 0x30,=0D + 0x30, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, = 0x48, 0x86, 0xF7, 0x0D,=0D + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, = 0x01, 0x0A, 0x02, 0x82,=0D + 0x01, 0x01, 0x00, 0x8C, 0x26, 0x35, 0xBC, 0x18, 0x06, 0x44, 0x65, 0xF6, = 0x55, 0x29, 0x78, 0x26,=0D + 0xCA, 0x57, 0xD0, 0x4C, 0x31, 0x84, 0x5B, 0x64, 0xDE, 0x8E, 0x34, 0x84, = 0x45, 0x12, 0xE8, 0x5A,=0D + 0x86, 0x4B, 0x5A, 0x61, 0x4C, 0xD8, 0xE2, 0x7D, 0x3B, 0xBD, 0x25, 0x58, = 0x30, 0x1D, 0x5E, 0x65,=0D + 0x50, 0xC3, 0x07, 0xF2, 0x50, 0xE1, 0x48, 0x2A, 0xD9, 0x70, 0x5F, 0xF3, = 0x2B, 0xF1, 0x1F, 0x21,=0D + 0x06, 0x62, 0x81, 0xE9, 0x8E, 0xDA, 0xDC, 0x69, 0xA3, 0x6E, 0x2F, 0xD2, = 0x3A, 0x79, 0x01, 0xAF,=0D + 0xA1, 0x2A, 0x28, 0xDD, 0x32, 0x4E, 0xCE, 0x40, 0xB8, 0x41, 0xA4, 0x7D, = 0x3D, 0x70, 0x3F, 0xC4,=0D + 0xDA, 0x61, 0x18, 0xBF, 0xFC, 0xAB, 0x16, 0xE3, 0x65, 0x3F, 0x6D, 0x76, = 0x37, 0xAD, 0x1F, 0x11,=0D + 0x05, 0x0F, 0xC2, 0x56, 0xD1, 0x45, 0xBD, 0x25, 0xCC, 0x19, 0xC4, 0x2A, = 0x03, 0xED, 0x3B, 0x05,=0D + 0xA7, 0x87, 0x30, 0xE6, 0x84, 0x11, 0x88, 0xD0, 0x91, 0x4E, 0x52, 0xB5, = 0x97, 0xDF, 0x57, 0xEF,=0D + 0x5E, 0x72, 0x68, 0x49, 0x85, 0xC8, 0x7F, 0xA7, 0x5F, 0x7B, 0xE7, 0xCE, = 0xA1, 0x53, 0xBA, 0xF8,=0D + 0xA9, 0xDF, 0x8C, 0x8C, 0x72, 0xD2, 0xA9, 0x7A, 0xF5, 0x07, 0x4A, 0x75, = 0x1A, 0x0F, 0x50, 0x9E,=0D + 0xEA, 0x4C, 0xFC, 0xC7, 0x74, 0xE2, 0x4D, 0xD1, 0x01, 0xC4, 0xB6, 0xCA, = 0xA5, 0xCC, 0x23, 0xFA,=0D + 0xDE, 0xF2, 0x9C, 0x8B, 0xA6, 0x32, 0x8D, 0xED, 0x97, 0xCC, 0x50, 0xB0, = 0xB6, 0x1C, 0x89, 0x64,=0D + 0xFC, 0xD7, 0xD0, 0x19, 0x01, 0x50, 0xD9, 0xBC, 0x78, 0xB1, 0x76, 0x6D, = 0x01, 0xF8, 0xEC, 0x68,=0D + 0x97, 0x20, 0x32, 0xD0, 0x57, 0x76, 0x93, 0x73, 0xC9, 0x2B, 0x68, 0x9D, = 0x5E, 0xE1, 0x70, 0xDD,=0D + 0x6F, 0x3A, 0x09, 0x20, 0x63, 0xE9, 0xD9, 0x30, 0x05, 0x14, 0x4A, 0x76, = 0xA7, 0x3E, 0x61, 0xCD,=0D + 0x2F, 0x6D, 0xE3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x79, 0x30, 0x77, = 0x30, 0x0E, 0x06, 0x03,=0D + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, = 0x30, 0x25, 0x06, 0x03,=0D + 0x55, 0x1D, 0x25, 0x04, 0x1E, 0x30, 0x1C, 0x06, 0x0B, 0x2B, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x4C, 0x09, 0x15, 0x01, 0x06, 0x0D, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, = 0x37, 0x4C, 0x09, 0x15,=0D + 0x01, 0xCE, 0x11, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, = 0x30, 0x16, 0x80, 0x14,=0D + 0x63, 0x69, 0x95, 0xE3, 0xDD, 0xF4, 0xF8, 0x42, 0xEA, 0x55, 0x95, 0x54, = 0x07, 0xC4, 0xC5, 0x2A,=0D + 0xD2, 0xA9, 0x2D, 0x2F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, = 0x16, 0x04, 0x14, 0x09,=0D + 0x10, 0xEE, 0x7B, 0xB0, 0x56, 0xB0, 0xCE, 0x42, 0x83, 0x84, 0x90, 0x70, = 0xAF, 0x8D, 0x58, 0x1B,=0D + 0x77, 0x43, 0x0E, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, = 0x04, 0x03, 0x02, 0x03,=0D + 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xEE, 0x2A, 0x00, 0x7E, 0xC6, = 0x4E, 0x6F, 0x22, 0xCC,=0D + 0x16, 0xEA, 0xAC, 0x90, 0x3D, 0xD7, 0x6E, 0xAA, 0xBF, 0x7E, 0xC7, 0x45, = 0x3F, 0x36, 0x22, 0x81,=0D + 0xC6, 0x38, 0xD3, 0x1E, 0xDF, 0x5F, 0x2C, 0x02, 0x20, 0x21, 0xEC, 0xCF, = 0x78, 0x1D, 0xDB, 0x4F,=0D + 0x50, 0xE8, 0xD6, 0x07, 0xB0, 0x6A, 0xE9, 0x1E, 0xBF, 0x9C, 0xE8, 0xB9, = 0xF7, 0xC6, 0xEA, 0x04,=0D + 0x7B, 0x5E, 0xD8, 0x67, 0xAB, 0xD2, 0xDE, 0x77, 0xB9, 0x31, 0x82, 0x01, = 0x65, 0x30, 0x82, 0x01,=0D + 0x61, 0x02, 0x01, 0x01, 0x30, 0x3A, 0x30, 0x26, 0x31, 0x24, 0x30, 0x22, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x0C, 0x1B, 0x53, 0x75, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x65, = 0x73, 0x74, 0x46, 0x69,=0D + 0x72, 0x6D, 0x77, 0x61, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, = 0x43, 0x41, 0x02, 0x10,=0D + 0x1F, 0x65, 0xF1, 0x29, 0x3B, 0x89, 0x6A, 0xBF, 0x43, 0xAF, 0xC7, 0x30, = 0x36, 0xD1, 0x0D, 0x2B,=0D + 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, = 0x01, 0x05, 0x00, 0x30,=0D + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, = 0x05, 0x00, 0x04, 0x82,=0D + 0x01, 0x00, 0x1F, 0x7F, 0x30, 0xDC, 0xD4, 0x12, 0x9D, 0x0B, 0x71, 0x30, = 0x69, 0x91, 0xCC, 0x8A,=0D + 0xFB, 0xF6, 0x54, 0x14, 0x4C, 0x0B, 0x78, 0xCE, 0xD3, 0xC6, 0xCE, 0x3E, = 0xAC, 0xCC, 0x0F, 0xCE,=0D + 0x3A, 0xFC, 0x63, 0x96, 0xD2, 0x7B, 0xDB, 0xF7, 0xE7, 0x6D, 0x64, 0x52, = 0x5C, 0x5D, 0x19, 0xBF,=0D + 0xE3, 0x04, 0x71, 0x8A, 0xD1, 0x2A, 0xB6, 0x5A, 0x8C, 0xFC, 0xE2, 0x51, = 0x27, 0x64, 0x9B, 0xA8,=0D + 0x84, 0x69, 0x60, 0x4E, 0x56, 0x83, 0x91, 0x4F, 0xEB, 0x5A, 0xB7, 0x73, = 0xE1, 0xAC, 0x24, 0xD2,=0D + 0x60, 0xD8, 0x58, 0x21, 0x51, 0x7B, 0x87, 0x93, 0x5B, 0x5F, 0x91, 0x4B, = 0x8C, 0xFE, 0xA5, 0x16,=0D + 0x2E, 0x33, 0x4D, 0xBB, 0x0C, 0x95, 0x5C, 0xC3, 0x9C, 0x3D, 0xBB, 0x58, = 0x17, 0x39, 0x1E, 0x10,=0D + 0x47, 0xCD, 0xEE, 0xD3, 0xE7, 0x73, 0x44, 0x7D, 0x35, 0xD9, 0x9F, 0xC3, = 0xAC, 0x11, 0x2E, 0x29,=0D + 0x54, 0x80, 0x8F, 0x19, 0xDC, 0xC3, 0x11, 0x3D, 0x75, 0xF0, 0x3B, 0x34, = 0x63, 0xB1, 0x59, 0x1D,=0D + 0x4B, 0x66, 0xBE, 0xB8, 0xAC, 0x36, 0x71, 0x63, 0xD4, 0x41, 0xCF, 0x24, = 0x2A, 0x3F, 0xC5, 0x25,=0D + 0xD2, 0x45, 0x9B, 0xD3, 0x77, 0xD8, 0xD8, 0x1A, 0xC6, 0xAE, 0xE3, 0xF5, = 0xC5, 0xEB, 0xF3, 0x92,=0D + 0x27, 0x3C, 0x3F, 0x48, 0x96, 0xF2, 0xB4, 0x66, 0x0A, 0xFB, 0xBF, 0x76, = 0xDC, 0x1E, 0xC5, 0xC6,=0D + 0x4D, 0xA1, 0x5C, 0x13, 0x22, 0xF8, 0x89, 0xE2, 0x15, 0x43, 0x84, 0xEF, = 0xC8, 0x30, 0xE5, 0xF0,=0D + 0xBA, 0x51, 0x96, 0x3E, 0xF9, 0xCB, 0x41, 0xE6, 0x36, 0xD4, 0xE3, 0xDA, = 0x71, 0xC8, 0x5E, 0x43,=0D + 0x7A, 0xBE, 0x8E, 0xC0, 0xA5, 0xEF, 0x66, 0xFD, 0x63, 0xD3, 0xF1, 0xBF, = 0x66, 0x4F, 0x35, 0x24,=0D + 0x66, 0xC9, 0xCD, 0x1E, 0x3D, 0x71, 0x19, 0x84, 0x1A, 0x9D, 0xA5, 0x56, = 0xF4, 0xF9, 0xE0, 0x88,=0D + 0x7C, 0x52,=0D +};=0D +=0D +//=0D +// This is TestSignEKUsWith1CertInSignature.bin.p7b in byte array format.= =0D +// It has one EKU in it:=0D +// "1.3.6.1.4.1.311.76.9.21.1"=0D +//=0D +CONST UINT8 TestSignEKUsWith1CertInSignature[] =3D=0D +{=0D + 0x30, 0x82, 0x02, 0x7D, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, = 0x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x01, 0xB2, 0x30, 0x82, 0x01, = 0xAE, 0x30, 0x82, 0x01,=0D + 0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB, = 0x00, 0x35, 0xC8, 0x96,=0D + 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, = 0x69, 0x6E, 0x67, 0x49,=0D + 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, = 0x31, 0x38, 0x30, 0x38,=0D + 0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x33, = 0x38, 0x30, 0x38, 0x31,=0D + 0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30, 0x23, 0x31, 0x21, = 0x30, 0x1F, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, = 0x50, 0x61, 0x72, 0x73,=0D + 0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67, 0x6E, 0x65, = 0x72, 0x30, 0x59, 0x30,=0D + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6, 0xEA, 0x5E, 0x14, = 0x20, 0x6D, 0x11, 0xC0,=0D + 0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8, 0x21, 0x21, 0x3A, = 0xC2, 0xBA, 0x37, 0x24,=0D + 0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F, 0xA8, 0xDC, 0x3A, = 0x06, 0x30, 0x53, 0xFC,=0D + 0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40, 0xE8, 0x97, 0x6A, = 0x63, 0x30, 0xF7, 0x37,=0D + 0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3, 0x6A, 0x30, 0x68, = 0x30, 0x0E, 0x06, 0x03,=0D + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, = 0x30, 0x16, 0x06, 0x03,=0D + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, = 0x18, 0x30, 0x16, 0x80,=0D + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0, = 0x40, 0x3C, 0x3E, 0x9C,=0D + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, = 0x04, 0x16, 0x04, 0x14,=0D + 0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4, 0xC8, 0x0D, 0x4C, = 0x0A, 0xD3, 0xD4, 0xDE,=0D + 0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, = 0x3D, 0x04, 0x03, 0x02,=0D + 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C, 0x39, 0xC6, 0x6C, = 0xD6, 0x8F, 0x20, 0xA5,=0D + 0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC, 0x2E, 0x1B, 0x6F, = 0x6F, 0x79, 0x9F, 0x8D,=0D + 0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02, 0x21, 0x00, 0xC5, = 0xD8, 0x49, 0xD1, 0x40,=0D + 0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10, 0x8A, 0x3C, 0x4E, = 0xA0, 0xD6, 0x6B, 0x8C,=0D + 0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43, 0x4B, 0x35, 0x31, = 0x81, 0xA3, 0x30, 0x81,=0D + 0xA0, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, = 0x72, 0x73, 0x69, 0x6E,=0D + 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x02, 0x10, = 0x3E, 0xEE, 0x4B, 0xFB,=0D + 0x00, 0x35, 0xC8, 0x96, 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, = 0x30, 0x0D, 0x06, 0x09,=0D + 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, = 0x0B, 0x06, 0x07, 0x2A,=0D + 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00, 0x04, 0x47, 0x30, 0x45, = 0x02, 0x21, 0x00, 0xB8,=0D + 0xCC, 0x0F, 0xD2, 0x50, 0x47, 0x3A, 0x11, 0x8D, 0xAE, 0x6C, 0xE9, 0x03, = 0x64, 0xA7, 0x44, 0xE6,=0D + 0x0F, 0xF8, 0x6F, 0x7E, 0xE7, 0x61, 0x25, 0x8C, 0x67, 0xE8, 0xC2, 0xD6, = 0x33, 0x91, 0x62, 0x02,=0D + 0x20, 0x78, 0xF8, 0x94, 0x0F, 0x46, 0xD2, 0xE2, 0x2B, 0x33, 0xAF, 0xBD, = 0x38, 0xA4, 0x43, 0xA6,=0D + 0x6F, 0x8A, 0xBE, 0x26, 0xDC, 0xD0, 0x82, 0x01, 0x3D, 0x00, 0xF3, 0xC2, = 0x07, 0x8A, 0xE8, 0xFD,=0D + 0x18,=0D +};=0D +=0D +//=0D +// This is TestSignEKUsWith2CertsInSignature.bin.p7b in byte array format.= =0D +// It has one EKU in it:=0D +// "1.3.6.1.4.1.311.76.9.21.1"=0D +//=0D +CONST UINT8 TestSignEKUsWith2CertsInSignature[] =3D=0D +{=0D + 0x30, 0x82, 0x04, 0x61, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, = 0x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x03, 0x96, 0x30, 0x82, 0x01, = 0xAE, 0x30, 0x82, 0x01,=0D + 0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB, = 0x00, 0x35, 0xC8, 0x96,=0D + 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, = 0x69, 0x6E, 0x67, 0x49,=0D + 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, = 0x31, 0x38, 0x30, 0x38,=0D + 0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x33, = 0x38, 0x30, 0x38, 0x31,=0D + 0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30, 0x23, 0x31, 0x21, = 0x30, 0x1F, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, = 0x50, 0x61, 0x72, 0x73,=0D + 0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67, 0x6E, 0x65, = 0x72, 0x30, 0x59, 0x30,=0D + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6, 0xEA, 0x5E, 0x14, = 0x20, 0x6D, 0x11, 0xC0,=0D + 0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8, 0x21, 0x21, 0x3A, = 0xC2, 0xBA, 0x37, 0x24,=0D + 0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F, 0xA8, 0xDC, 0x3A, = 0x06, 0x30, 0x53, 0xFC,=0D + 0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40, 0xE8, 0x97, 0x6A, = 0x63, 0x30, 0xF7, 0x37,=0D + 0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3, 0x6A, 0x30, 0x68, = 0x30, 0x0E, 0x06, 0x03,=0D + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, = 0x30, 0x16, 0x06, 0x03,=0D + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, = 0x18, 0x30, 0x16, 0x80,=0D + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0, = 0x40, 0x3C, 0x3E, 0x9C,=0D + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, = 0x04, 0x16, 0x04, 0x14,=0D + 0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4, 0xC8, 0x0D, 0x4C, = 0x0A, 0xD3, 0xD4, 0xDE,=0D + 0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, = 0x3D, 0x04, 0x03, 0x02,=0D + 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C, 0x39, 0xC6, 0x6C, = 0xD6, 0x8F, 0x20, 0xA5,=0D + 0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC, 0x2E, 0x1B, 0x6F, = 0x6F, 0x79, 0x9F, 0x8D,=0D + 0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02, 0x21, 0x00, 0xC5, = 0xD8, 0x49, 0xD1, 0x40,=0D + 0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10, 0x8A, 0x3C, 0x4E, = 0xA0, 0xD6, 0x6B, 0x8C,=0D + 0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43, 0x4B, 0x35, 0x30, = 0x82, 0x01, 0xE0, 0x30,=0D + 0x82, 0x01, 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79, 0x28, = 0x1A, 0xE8, 0x7F, 0x21,=0D + 0x4F, 0xBB, 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60, 0xD6, 0x30, 0x0A, = 0x06, 0x08, 0x2A, 0x86,=0D + 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31, 0x1F, 0x30, 0x1D, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, = 0x72, 0x73, 0x69, 0x6E,=0D + 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x1E, 0x17, = 0x0D, 0x31, 0x38, 0x30,=0D + 0x38, 0x31, 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34, 0x5A, 0x17, 0x0D, = 0x33, 0x38, 0x30, 0x38,=0D + 0x31, 0x35, 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A, 0x30, 0x22, 0x31, = 0x20, 0x30, 0x1E, 0x06,=0D + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, = 0x55, 0x50, 0x61, 0x72,=0D + 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, = 0x41, 0x30, 0x59, 0x30,=0D + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66, 0x41, 0xE6, 0x86, = 0x7D, 0x5B, 0x96, 0x6C,=0D + 0x99, 0x2A, 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC, 0x1C, 0x9F, 0xEB, = 0xBE, 0x9D, 0x53, 0xBA,=0D + 0x50, 0x0F, 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2, 0x6C, 0xC2, 0xC9, = 0xAA, 0x99, 0x0B, 0x04,=0D + 0xA0, 0x6A, 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3, 0xDE, 0x22, 0x57, = 0xB1, 0x8A, 0x5C, 0xBC,=0D + 0xDF, 0x22, 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3, 0x7E, 0x30, 0x7C, = 0x30, 0x0E, 0x06, 0x03,=0D + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, = 0x30, 0x16, 0x06, 0x03,=0D + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, = 0x01, 0xFF, 0x04, 0x08,=0D + 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03, = 0x55, 0x1D, 0x23, 0x04,=0D + 0x18, 0x30, 0x16, 0x80, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40, = 0x74, 0x75, 0x0F, 0x85,=0D + 0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x1D, 0x06, = 0x03, 0x55, 0x1D, 0x0E,=0D + 0x04, 0x16, 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, = 0xFF, 0x35, 0xD0, 0x40,=0D + 0x3C, 0x3E, 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66, 0x02, 0x31, 0x00, = 0xEE, 0x78, 0xDB, 0x74,=0D + 0x56, 0xA3, 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0, 0x76, 0xD1, 0xE4, = 0xFE, 0xAA, 0xA4, 0xC3,=0D + 0x7D, 0x40, 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B, 0x9A, 0x60, 0x37, = 0x2F, 0xB6, 0xF4, 0xCB,=0D + 0xEA, 0xC8, 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB, 0xD2, 0x42, 0x05, = 0x02, 0x31, 0x00, 0x9E,=0D + 0x91, 0xF9, 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC, 0x36, 0x05, 0x3B, = 0x50, 0x11, 0x91, 0x9A,=0D + 0xFA, 0x6B, 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98, 0x7E, 0x7D, 0xFD, = 0xA8, 0xE3, 0xB2, 0x4F,=0D + 0x71, 0x91, 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8, 0x19, 0x09, 0xF6, = 0x22, 0xBE, 0xC4, 0x31,=0D + 0x81, 0xA3, 0x30, 0x81, 0xA0, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22, = 0x31, 0x20, 0x30, 0x1E,=0D + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, = 0x4B, 0x55, 0x50, 0x61,=0D + 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, = 0x43, 0x41, 0x02, 0x10,=0D + 0x3E, 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8, 0x96, 0x41, 0xF4, 0xF6, 0x57, = 0x16, 0xAD, 0x20, 0xCB,=0D + 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, = 0x01, 0x05, 0x00, 0x30,=0D + 0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x05, 0x00, = 0x04, 0x47, 0x30, 0x45,=0D + 0x02, 0x20, 0x4A, 0xFD, 0xAE, 0xDD, 0x5D, 0xC5, 0x86, 0x48, 0xDC, 0xC1, = 0xC3, 0xA7, 0xE6, 0x4E,=0D + 0x7F, 0x8B, 0x7B, 0xAB, 0x2C, 0x60, 0xDD, 0x79, 0x4C, 0xF2, 0x45, 0xED, = 0x7A, 0xA5, 0x24, 0xE6,=0D + 0x0E, 0x60, 0x02, 0x21, 0x00, 0xAD, 0xCA, 0x3C, 0x29, 0x2F, 0xF9, 0xB1, = 0x8E, 0x58, 0x29, 0x3F,=0D + 0x97, 0x20, 0x03, 0x6A, 0x14, 0xDA, 0x83, 0x4A, 0x8F, 0x3E, 0x95, 0x37, = 0xC3, 0xF0, 0x12, 0x2A,=0D + 0x7B, 0x24, 0x59, 0x69, 0x27,=0D +};=0D +=0D +//=0D +// This is TestSignEKUsWith3CertsInSignature.bin.p7b=0D +// It has one EKU in it:=0D +// "1.3.6.1.4.1.311.76.9.21.1"=0D +//=0D +const UINT8 TestSignEKUsWith3CertsInSignature[] =3D=0D +{=0D + 0x30, 0x82, 0x06, 0x65, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, = 0x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x05, 0x9B, 0x30, 0x82, 0x01, = 0xAE, 0x30, 0x82, 0x01,=0D + 0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB, = 0x00, 0x35, 0xC8, 0x96,=0D + 0x41, 0xF4, 0xF6, 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, = 0x69, 0x6E, 0x67, 0x49,=0D + 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, = 0x31, 0x38, 0x30, 0x38,=0D + 0x31, 0x35, 0x31, 0x37, 0x33, 0x35, 0x35, 0x30, 0x5A, 0x17, 0x0D, 0x33, = 0x38, 0x30, 0x38, 0x31,=0D + 0x35, 0x31, 0x37, 0x34, 0x35, 0x35, 0x30, 0x5A, 0x30, 0x23, 0x31, 0x21, = 0x30, 0x1F, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x0C, 0x18, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, = 0x50, 0x61, 0x72, 0x73,=0D + 0x69, 0x6E, 0x67, 0x4C, 0x65, 0x61, 0x66, 0x53, 0x69, 0x67, 0x6E, 0x65, = 0x72, 0x30, 0x59, 0x30,=0D + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xF6, 0xEA, 0x5E, 0x14, = 0x20, 0x6D, 0x11, 0xC0,=0D + 0xFD, 0xF9, 0xB9, 0xB5, 0x8F, 0xBB, 0x3E, 0x8B, 0xE8, 0x21, 0x21, 0x3A, = 0xC2, 0xBA, 0x37, 0x24,=0D + 0x61, 0x14, 0x7E, 0xA8, 0x86, 0x0A, 0x5C, 0xD3, 0x5F, 0xA8, 0xDC, 0x3A, = 0x06, 0x30, 0x53, 0xFC,=0D + 0x85, 0xBC, 0x60, 0x5C, 0x28, 0x07, 0xCA, 0x12, 0x40, 0xE8, 0x97, 0x6A, = 0x63, 0x30, 0xF7, 0x37,=0D + 0x25, 0x76, 0x4D, 0xA9, 0x1A, 0x8C, 0x36, 0xAA, 0xA3, 0x6A, 0x30, 0x68, = 0x30, 0x0E, 0x06, 0x03,=0D + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, = 0x30, 0x16, 0x06, 0x03,=0D + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, = 0x18, 0x30, 0x16, 0x80,=0D + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0, = 0x40, 0x3C, 0x3E, 0x9C,=0D + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, = 0x04, 0x16, 0x04, 0x14,=0D + 0xE8, 0x47, 0x05, 0xA2, 0x59, 0xE9, 0x89, 0x81, 0xF4, 0xC8, 0x0D, 0x4C, = 0x0A, 0xD3, 0xD4, 0xDE,=0D + 0x9F, 0xA6, 0xC7, 0x79, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, = 0x3D, 0x04, 0x03, 0x02,=0D + 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x8C, 0x39, 0xC6, 0x6C, = 0xD6, 0x8F, 0x20, 0xA5,=0D + 0x85, 0x97, 0x27, 0xF9, 0xB5, 0x26, 0xA2, 0xAB, 0xEC, 0x2E, 0x1B, 0x6F, = 0x6F, 0x79, 0x9F, 0x8D,=0D + 0xCE, 0x9D, 0x12, 0x23, 0x5F, 0x04, 0xFA, 0xBE, 0x02, 0x21, 0x00, 0xC5, = 0xD8, 0x49, 0xD1, 0x40,=0D + 0xE3, 0x2C, 0xDF, 0xC3, 0xD4, 0x11, 0xF9, 0x5E, 0x10, 0x8A, 0x3C, 0x4E, = 0xA0, 0xD6, 0x6B, 0x8C,=0D + 0x0E, 0x7B, 0xF1, 0x2B, 0x20, 0x9C, 0x68, 0x53, 0x43, 0x4B, 0x35, 0x30, = 0x82, 0x01, 0xE0, 0x30,=0D + 0x82, 0x01, 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79, 0x28, = 0x1A, 0xE8, 0x7F, 0x21,=0D + 0x4F, 0xBB, 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60, 0xD6, 0x30, 0x0A, = 0x06, 0x08, 0x2A, 0x86,=0D + 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31, 0x1F, 0x30, 0x1D, = 0x06, 0x03, 0x55, 0x04,=0D + 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, = 0x72, 0x73, 0x69, 0x6E,=0D + 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x1E, 0x17, = 0x0D, 0x31, 0x38, 0x30,=0D + 0x38, 0x31, 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34, 0x5A, 0x17, 0x0D, = 0x33, 0x38, 0x30, 0x38,=0D + 0x31, 0x35, 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A, 0x30, 0x22, 0x31, = 0x20, 0x30, 0x1E, 0x06,=0D + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, = 0x55, 0x50, 0x61, 0x72,=0D + 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, = 0x41, 0x30, 0x59, 0x30,=0D + 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66, 0x41, 0xE6, 0x86, = 0x7D, 0x5B, 0x96, 0x6C,=0D + 0x99, 0x2A, 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC, 0x1C, 0x9F, 0xEB, = 0xBE, 0x9D, 0x53, 0xBA,=0D + 0x50, 0x0F, 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2, 0x6C, 0xC2, 0xC9, = 0xAA, 0x99, 0x0B, 0x04,=0D + 0xA0, 0x6A, 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3, 0xDE, 0x22, 0x57, = 0xB1, 0x8A, 0x5C, 0xBC,=0D + 0xDF, 0x22, 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3, 0x7E, 0x30, 0x7C, = 0x30, 0x0E, 0x06, 0x03,=0D + 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, = 0x30, 0x16, 0x06, 0x03,=0D + 0x55, 0x1D, 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, = 0x04, 0x01, 0x82, 0x37,=0D + 0x4C, 0x09, 0x15, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, = 0x01, 0xFF, 0x04, 0x08,=0D + 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03, = 0x55, 0x1D, 0x23, 0x04,=0D + 0x18, 0x30, 0x16, 0x80, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40, = 0x74, 0x75, 0x0F, 0x85,=0D + 0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x1D, 0x06, = 0x03, 0x55, 0x1D, 0x0E,=0D + 0x04, 0x16, 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, = 0xFF, 0x35, 0xD0, 0x40,=0D + 0x3C, 0x3E, 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66, 0x02, 0x31, 0x00, = 0xEE, 0x78, 0xDB, 0x74,=0D + 0x56, 0xA3, 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0, 0x76, 0xD1, 0xE4, = 0xFE, 0xAA, 0xA4, 0xC3,=0D + 0x7D, 0x40, 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B, 0x9A, 0x60, 0x37, = 0x2F, 0xB6, 0xF4, 0xCB,=0D + 0xEA, 0xC8, 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB, 0xD2, 0x42, 0x05, = 0x02, 0x31, 0x00, 0x9E,=0D + 0x91, 0xF9, 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC, 0x36, 0x05, 0x3B, = 0x50, 0x11, 0x91, 0x9A,=0D + 0xFA, 0x6B, 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98, 0x7E, 0x7D, 0xFD, = 0xA8, 0xE3, 0xB2, 0x4F,=0D + 0x71, 0x91, 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8, 0x19, 0x09, 0xF6, = 0x22, 0xBE, 0xC4, 0x30,=0D + 0x82, 0x02, 0x01, 0x30, 0x82, 0x01, 0x62, 0xA0, 0x03, 0x02, 0x01, 0x02, = 0x02, 0x10, 0x41, 0x02,=0D + 0xBA, 0xF9, 0x87, 0x65, 0x6C, 0xB8, 0x4C, 0xD9, 0xA1, 0x04, 0x1C, 0x46, = 0x4F, 0xE4, 0x30, 0x0A,=0D + 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x1D, = 0x31, 0x1B, 0x30, 0x19,=0D + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x12, 0x54, 0x65, 0x73, 0x74, 0x45, = 0x4B, 0x55, 0x50, 0x61,=0D + 0x72, 0x73, 0x69, 0x6E, 0x67, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, = 0x0D, 0x31, 0x38, 0x30,=0D + 0x38, 0x31, 0x35, 0x31, 0x37, 0x32, 0x39, 0x32, 0x39, 0x5A, 0x17, 0x0D, = 0x33, 0x38, 0x30, 0x38,=0D + 0x31, 0x35, 0x31, 0x37, 0x33, 0x39, 0x32, 0x39, 0x5A, 0x30, 0x21, 0x31, = 0x1F, 0x30, 0x1D, 0x06,=0D + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, = 0x55, 0x50, 0x61, 0x72,=0D + 0x73, 0x69, 0x6E, 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, = 0x30, 0x76, 0x30, 0x10,=0D + 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x05, 0x2B, = 0x81, 0x04, 0x00, 0x22,=0D + 0x03, 0x62, 0x00, 0x04, 0xF9, 0xDC, 0xB9, 0x3F, 0xA8, 0xB5, 0x2B, 0x2E, = 0xA7, 0xFC, 0x88, 0xC6,=0D + 0xEF, 0x9C, 0x36, 0x61, 0x3E, 0xFF, 0x8A, 0x5A, 0x52, 0xFF, 0x5A, 0xD0, = 0x2C, 0x08, 0xD6, 0x73,=0D + 0x12, 0xF9, 0x62, 0x1E, 0x73, 0x76, 0x83, 0x49, 0xC8, 0xDE, 0xEB, 0x29, = 0xA4, 0x78, 0x2A, 0xC1,=0D + 0x30, 0x11, 0x0B, 0x2F, 0x38, 0x00, 0xB7, 0x6B, 0x6B, 0x8E, 0x8C, 0x4B, = 0x33, 0x09, 0xF1, 0xEA,=0D + 0xA4, 0x9E, 0x10, 0x4F, 0xC3, 0xBC, 0x30, 0x16, 0x1A, 0x8B, 0xD7, 0x9C, = 0x14, 0x11, 0x4E, 0x56,=0D + 0x64, 0x7E, 0x51, 0xE7, 0xDA, 0x26, 0x40, 0xB0, 0xD0, 0xF8, 0xF2, 0xB2, = 0x5D, 0x8C, 0x8B, 0x49,=0D + 0x0C, 0x4E, 0x58, 0xB0, 0xA3, 0x63, 0x30, 0x61, 0x30, 0x0E, 0x06, 0x03, = 0x55, 0x1D, 0x0F, 0x01,=0D + 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x0F, 0x06, 0x03, = 0x55, 0x1D, 0x13, 0x01,=0D + 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1F, 0x06, = 0x03, 0x55, 0x1D, 0x23,=0D + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x04, 0xA6, 0xCD, 0x4D, 0xAE, 0x9C, = 0x17, 0xDB, 0xC8, 0x13,=0D + 0x57, 0x2D, 0x72, 0x48, 0xAC, 0xBB, 0x6B, 0x1F, 0xFF, 0x61, 0x30, 0x1D, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40, = 0x74, 0x75, 0x0F, 0x85,=0D + 0xCE, 0x5D, 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x0A, 0x06, = 0x08, 0x2A, 0x86, 0x48,=0D + 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x81, 0x8C, 0x00, 0x30, 0x81, 0x88, = 0x02, 0x42, 0x01, 0xB4,=0D + 0x75, 0x0B, 0x2F, 0x2A, 0xAA, 0x77, 0x03, 0x08, 0xD9, 0x95, 0x13, 0x2C, = 0xE8, 0x47, 0x69, 0x97,=0D + 0xD1, 0x6B, 0xE0, 0x23, 0x94, 0xD5, 0x34, 0x8F, 0x80, 0x20, 0xE3, 0x72, = 0x07, 0x7C, 0x6A, 0x52,=0D + 0xE6, 0xF2, 0xC7, 0x85, 0xBD, 0xB6, 0x65, 0x8F, 0x61, 0x73, 0xF9, 0xE7, = 0x3A, 0x31, 0x46, 0xC6,=0D + 0xF2, 0xCE, 0xA7, 0x9E, 0xD0, 0xE2, 0xEF, 0x07, 0x59, 0xD0, 0xF1, 0xC4, = 0xF6, 0x58, 0x9A, 0x16,=0D + 0x02, 0x42, 0x00, 0x86, 0xE0, 0x25, 0xC1, 0x48, 0xD0, 0x33, 0x30, 0x55, = 0xA8, 0x60, 0x44, 0xCA,=0D + 0x47, 0x04, 0x93, 0x46, 0x81, 0xE9, 0x13, 0xE9, 0x67, 0x26, 0x23, 0x2A, = 0xBD, 0xEF, 0xC4, 0xCC,=0D + 0x12, 0x99, 0xB3, 0x9E, 0x3D, 0x78, 0xC8, 0x42, 0x06, 0x40, 0x48, 0xCA, = 0x3D, 0xCC, 0xD7, 0xA2,=0D + 0x35, 0x37, 0x76, 0x12, 0xDB, 0x9C, 0x90, 0xA4, 0xE4, 0x16, 0xAC, 0x5E, = 0xD8, 0x04, 0xF1, 0x59,=0D + 0x66, 0x85, 0xE2, 0x68, 0x31, 0x81, 0xA2, 0x30, 0x81, 0x9F, 0x02, 0x01, = 0x01, 0x30, 0x36, 0x30,=0D + 0x22, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, = 0x54, 0x65, 0x73, 0x74,=0D + 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, = 0x73, 0x75, 0x69, 0x6E,=0D + 0x67, 0x43, 0x41, 0x02, 0x10, 0x3E, 0xEE, 0x4B, 0xFB, 0x00, 0x35, 0xC8, = 0x96, 0x41, 0xF4, 0xF6,=0D + 0x57, 0x16, 0xAD, 0x20, 0xCB, 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 0x48, = 0x01, 0x65, 0x03, 0x04,=0D + 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, = 0x3D, 0x02, 0x01, 0x05,=0D + 0x00, 0x04, 0x46, 0x30, 0x44, 0x02, 0x20, 0x52, 0x90, 0x02, 0x9E, 0xE8, = 0xBF, 0xE8, 0x7E, 0x05,=0D + 0x3B, 0xA3, 0x93, 0xDD, 0x6C, 0x35, 0x31, 0xA3, 0x29, 0x4F, 0x9A, 0x78, = 0xEF, 0xD1, 0xAD, 0x07,=0D + 0x37, 0x2D, 0x9A, 0x81, 0xFD, 0x7D, 0xFC, 0x02, 0x20, 0x4C, 0x8A, 0xA4, = 0xBD, 0x63, 0x7B, 0x8A,=0D + 0x2C, 0x9E, 0xFC, 0x2A, 0x0F, 0x91, 0xF4, 0x97, 0xB5, 0x3B, 0xC9, 0xD1, = 0xCA, 0xEB, 0x02, 0x6A,=0D + 0xB6, 0xFF, 0xE1, 0x15, 0xF5, 0xA2, 0x11, 0xF4, 0xD9,=0D +};=0D +=0D +//=0D +// This signature was signed with a leaf that has no EKU's present in the = certificate.=0D +//=0D +CONST UINT8 TestSignatureWithNoEKUsPresent[] =3D=0D +{=0D + 0x30, 0x82, 0x07, 0xDB, 0x02, 0x01, 0x01, 0x31, 0x0F, 0x30, 0x0D, 0x06, = 0x09, 0x60, 0x86, 0x48,=0D + 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, 0x30, 0x0B, 0x06, 0x09, = 0x2A, 0x86, 0x48, 0x86,=0D + 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x06, 0x51, 0x30, 0x82, 0x01, = 0xE0, 0x30, 0x82, 0x01,=0D + 0x65, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x79, 0x28, 0x1A, 0xE8, = 0x7F, 0x21, 0x4F, 0xBB,=0D + 0x47, 0x2F, 0x74, 0x75, 0xE6, 0x98, 0x60, 0xD6, 0x30, 0x0A, 0x06, 0x08, = 0x2A, 0x86, 0x48, 0xCE,=0D + 0x3D, 0x04, 0x03, 0x02, 0x30, 0x21, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, = 0x55, 0x04, 0x03, 0x0C,=0D + 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, = 0x69, 0x6E, 0x67, 0x50,=0D + 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, = 0x38, 0x30, 0x38, 0x31,=0D + 0x35, 0x31, 0x37, 0x33, 0x32, 0x35, 0x34, 0x5A, 0x17, 0x0D, 0x33, 0x38, = 0x30, 0x38, 0x31, 0x35,=0D + 0x31, 0x37, 0x34, 0x32, 0x35, 0x34, 0x5A, 0x30, 0x22, 0x31, 0x20, 0x30, = 0x1E, 0x06, 0x03, 0x55,=0D + 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, = 0x61, 0x72, 0x73, 0x69,=0D + 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x30, = 0x59, 0x30, 0x13, 0x06,=0D + 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, = 0x48, 0xCE, 0x3D, 0x03,=0D + 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x66, 0x41, 0xE6, 0x86, 0x7D, 0x5B, = 0x96, 0x6C, 0x99, 0x2A,=0D + 0x82, 0x53, 0x58, 0xA3, 0x6F, 0x59, 0xFC, 0x1C, 0x9F, 0xEB, 0xBE, 0x9D, = 0x53, 0xBA, 0x50, 0x0F,=0D + 0x66, 0xBC, 0xE5, 0x90, 0x7E, 0xAA, 0xA2, 0x6C, 0xC2, 0xC9, 0xAA, 0x99, = 0x0B, 0x04, 0xA0, 0x6A,=0D + 0xB4, 0xC1, 0xF7, 0x55, 0x60, 0x58, 0xE3, 0xDE, 0x22, 0x57, 0xB1, 0x8A, = 0x5C, 0xBC, 0xDF, 0x22,=0D + 0x8A, 0x2B, 0x04, 0x7D, 0x7A, 0x6C, 0xA3, 0x7E, 0x30, 0x7C, 0x30, 0x0E, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x16, = 0x06, 0x03, 0x55, 0x1D,=0D + 0x25, 0x04, 0x0F, 0x30, 0x0D, 0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, = 0x82, 0x37, 0x4C, 0x09,=0D + 0x15, 0x01, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, = 0x04, 0x08, 0x30, 0x06,=0D + 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, = 0x23, 0x04, 0x18, 0x30,=0D + 0x16, 0x80, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40, 0x74, 0x75, = 0x0F, 0x85, 0xCE, 0x5D,=0D + 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x1D, 0x06, 0x03, 0x55, = 0x1D, 0x0E, 0x04, 0x16,=0D + 0x04, 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, = 0xD0, 0x40, 0x3C, 0x3E,=0D + 0x9C, 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, = 0x48, 0xCE, 0x3D, 0x04,=0D + 0x03, 0x02, 0x03, 0x69, 0x00, 0x30, 0x66, 0x02, 0x31, 0x00, 0xEE, 0x78, = 0xDB, 0x74, 0x56, 0xA3,=0D + 0xC2, 0x44, 0x25, 0x0F, 0xA1, 0x89, 0xC0, 0x76, 0xD1, 0xE4, 0xFE, 0xAA, = 0xA4, 0xC3, 0x7D, 0x40,=0D + 0xE3, 0x28, 0x1B, 0x0D, 0xAB, 0x32, 0x6B, 0x9A, 0x60, 0x37, 0x2F, 0xB6, = 0xF4, 0xCB, 0xEA, 0xC8,=0D + 0x65, 0xB6, 0xDC, 0x24, 0x90, 0x10, 0xFB, 0xD2, 0x42, 0x05, 0x02, 0x31, = 0x00, 0x9E, 0x91, 0xF9,=0D + 0x96, 0x8A, 0x41, 0x2C, 0x5E, 0x6B, 0xBC, 0x36, 0x05, 0x3B, 0x50, 0x11, = 0x91, 0x9A, 0xFA, 0x6B,=0D + 0x7F, 0x01, 0xF4, 0x6A, 0x7E, 0xCD, 0x98, 0x7E, 0x7D, 0xFD, 0xA8, 0xE3, = 0xB2, 0x4F, 0x71, 0x91,=0D + 0xF5, 0xE0, 0x82, 0xA5, 0xE7, 0x5A, 0xE8, 0x19, 0x09, 0xF6, 0x22, 0xBE, = 0xC4, 0x30, 0x82, 0x02,=0D + 0x01, 0x30, 0x82, 0x01, 0x62, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, = 0x41, 0x02, 0xBA, 0xF9,=0D + 0x87, 0x65, 0x6C, 0xB8, 0x4C, 0xD9, 0xA1, 0x04, 0x1C, 0x46, 0x4F, 0xE4, = 0x30, 0x0A, 0x06, 0x08,=0D + 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x1D, 0x31, 0x1B, = 0x30, 0x19, 0x06, 0x03,=0D + 0x55, 0x04, 0x03, 0x0C, 0x12, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, = 0x50, 0x61, 0x72, 0x73,=0D + 0x69, 0x6E, 0x67, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x31, = 0x38, 0x30, 0x38, 0x31,=0D + 0x35, 0x31, 0x37, 0x32, 0x39, 0x32, 0x39, 0x5A, 0x17, 0x0D, 0x33, 0x38, = 0x30, 0x38, 0x31, 0x35,=0D + 0x31, 0x37, 0x33, 0x39, 0x32, 0x39, 0x5A, 0x30, 0x21, 0x31, 0x1F, 0x30, = 0x1D, 0x06, 0x03, 0x55,=0D + 0x04, 0x03, 0x0C, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, = 0x61, 0x72, 0x73, 0x69,=0D + 0x6E, 0x67, 0x50, 0x6F, 0x6C, 0x69, 0x63, 0x79, 0x43, 0x41, 0x30, 0x76, = 0x30, 0x10, 0x06, 0x07,=0D + 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x05, 0x2B, 0x81, 0x04, = 0x00, 0x22, 0x03, 0x62,=0D + 0x00, 0x04, 0xF9, 0xDC, 0xB9, 0x3F, 0xA8, 0xB5, 0x2B, 0x2E, 0xA7, 0xFC, = 0x88, 0xC6, 0xEF, 0x9C,=0D + 0x36, 0x61, 0x3E, 0xFF, 0x8A, 0x5A, 0x52, 0xFF, 0x5A, 0xD0, 0x2C, 0x08, = 0xD6, 0x73, 0x12, 0xF9,=0D + 0x62, 0x1E, 0x73, 0x76, 0x83, 0x49, 0xC8, 0xDE, 0xEB, 0x29, 0xA4, 0x78, = 0x2A, 0xC1, 0x30, 0x11,=0D + 0x0B, 0x2F, 0x38, 0x00, 0xB7, 0x6B, 0x6B, 0x8E, 0x8C, 0x4B, 0x33, 0x09, = 0xF1, 0xEA, 0xA4, 0x9E,=0D + 0x10, 0x4F, 0xC3, 0xBC, 0x30, 0x16, 0x1A, 0x8B, 0xD7, 0x9C, 0x14, 0x11, = 0x4E, 0x56, 0x64, 0x7E,=0D + 0x51, 0xE7, 0xDA, 0x26, 0x40, 0xB0, 0xD0, 0xF8, 0xF2, 0xB2, 0x5D, 0x8C, = 0x8B, 0x49, 0x0C, 0x4E,=0D + 0x58, 0xB0, 0xA3, 0x63, 0x30, 0x61, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, = 0x0F, 0x01, 0x01, 0xFF,=0D + 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, = 0x13, 0x01, 0x01, 0xFF,=0D + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1F, 0x06, 0x03, 0x55, = 0x1D, 0x23, 0x04, 0x18,=0D + 0x30, 0x16, 0x80, 0x14, 0x04, 0xA6, 0xCD, 0x4D, 0xAE, 0x9C, 0x17, 0xDB, = 0xC8, 0x13, 0x57, 0x2D,=0D + 0x72, 0x48, 0xAC, 0xBB, 0x6B, 0x1F, 0xFF, 0x61, 0x30, 0x1D, 0x06, 0x03, = 0x55, 0x1D, 0x0E, 0x04,=0D + 0x16, 0x04, 0x14, 0x0B, 0x8A, 0xC7, 0xA8, 0x53, 0x07, 0x40, 0x74, 0x75, = 0x0F, 0x85, 0xCE, 0x5D,=0D + 0x5C, 0xC2, 0x23, 0x32, 0xC0, 0xFC, 0xC9, 0x30, 0x0A, 0x06, 0x08, 0x2A, = 0x86, 0x48, 0xCE, 0x3D,=0D + 0x04, 0x03, 0x02, 0x03, 0x81, 0x8C, 0x00, 0x30, 0x81, 0x88, 0x02, 0x42, = 0x01, 0xB4, 0x75, 0x0B,=0D + 0x2F, 0x2A, 0xAA, 0x77, 0x03, 0x08, 0xD9, 0x95, 0x13, 0x2C, 0xE8, 0x47, = 0x69, 0x97, 0xD1, 0x6B,=0D + 0xE0, 0x23, 0x94, 0xD5, 0x34, 0x8F, 0x80, 0x20, 0xE3, 0x72, 0x07, 0x7C, = 0x6A, 0x52, 0xE6, 0xF2,=0D + 0xC7, 0x85, 0xBD, 0xB6, 0x65, 0x8F, 0x61, 0x73, 0xF9, 0xE7, 0x3A, 0x31, = 0x46, 0xC6, 0xF2, 0xCE,=0D + 0xA7, 0x9E, 0xD0, 0xE2, 0xEF, 0x07, 0x59, 0xD0, 0xF1, 0xC4, 0xF6, 0x58, = 0x9A, 0x16, 0x02, 0x42,=0D + 0x00, 0x86, 0xE0, 0x25, 0xC1, 0x48, 0xD0, 0x33, 0x30, 0x55, 0xA8, 0x60, = 0x44, 0xCA, 0x47, 0x04,=0D + 0x93, 0x46, 0x81, 0xE9, 0x13, 0xE9, 0x67, 0x26, 0x23, 0x2A, 0xBD, 0xEF, = 0xC4, 0xCC, 0x12, 0x99,=0D + 0xB3, 0x9E, 0x3D, 0x78, 0xC8, 0x42, 0x06, 0x40, 0x48, 0xCA, 0x3D, 0xCC, = 0xD7, 0xA2, 0x35, 0x37,=0D + 0x76, 0x12, 0xDB, 0x9C, 0x90, 0xA4, 0xE4, 0x16, 0xAC, 0x5E, 0xD8, 0x04, = 0xF1, 0x59, 0x66, 0x85,=0D + 0xE2, 0x68, 0x30, 0x82, 0x02, 0x64, 0x30, 0x82, 0x02, 0x0A, 0xA0, 0x03, = 0x02, 0x01, 0x02, 0x02,=0D + 0x10, 0x2B, 0x7B, 0xDA, 0xCD, 0x87, 0xA0, 0xFD, 0x81, 0x49, 0x5E, 0x0E, = 0xDD, 0x4F, 0x81, 0x48,=0D + 0x2D, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, = 0x02, 0x30, 0x22, 0x31,=0D + 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, = 0x73, 0x74, 0x45, 0x4B,=0D + 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, = 0x69, 0x6E, 0x67, 0x43,=0D + 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x38, 0x32, 0x33, 0x31, = 0x39, 0x33, 0x30, 0x30,=0D + 0x32, 0x5A, 0x17, 0x0D, 0x33, 0x38, 0x30, 0x38, 0x32, 0x33, 0x31, 0x39, = 0x34, 0x30, 0x30, 0x32,=0D + 0x5A, 0x30, 0x27, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, = 0x0C, 0x1C, 0x54, 0x65,=0D + 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, = 0x4E, 0x6F, 0x45, 0x4B,=0D + 0x55, 0x73, 0x49, 0x6E, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x72, 0x30, 0x82, = 0x01, 0x22, 0x30, 0x0D,=0D + 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, = 0x00, 0x03, 0x82, 0x01,=0D + 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA5, = 0x9B, 0x95, 0xF0, 0x63,=0D + 0x88, 0xC3, 0x74, 0x26, 0x08, 0x68, 0x25, 0xAA, 0x16, 0xBB, 0x2A, 0x15, = 0xC1, 0xA2, 0xAF, 0x72,=0D + 0x06, 0x51, 0x37, 0xE1, 0x4F, 0x6D, 0x6A, 0xFC, 0x17, 0xCE, 0x82, 0x7B, = 0x79, 0xFF, 0x2A, 0x84,=0D + 0x0F, 0xCB, 0xA9, 0x65, 0x70, 0xC9, 0xF9, 0xE7, 0x61, 0x90, 0x28, 0x03, = 0x6E, 0x41, 0x25, 0xFF,=0D + 0xC2, 0x3A, 0x60, 0x1A, 0x42, 0x37, 0x80, 0x9F, 0x6B, 0x99, 0x11, 0x5A, = 0x1F, 0xAE, 0x7B, 0x3F,=0D + 0xF3, 0x2B, 0x45, 0xDD, 0xDA, 0xC4, 0x32, 0xD7, 0xD8, 0xB5, 0x3D, 0x46, = 0x0C, 0x8A, 0x11, 0xEE,=0D + 0x94, 0x8C, 0xB5, 0x69, 0xD3, 0x91, 0x4F, 0x4E, 0xE5, 0xBB, 0x93, 0xDD, = 0x1E, 0xA7, 0x20, 0x03,=0D + 0xFD, 0xD6, 0x8F, 0x76, 0x91, 0x9A, 0x2B, 0x41, 0x91, 0xD8, 0x35, 0x7A, = 0x0D, 0x80, 0xB9, 0xD4,=0D + 0xD2, 0x56, 0xF1, 0xF9, 0xC5, 0xE6, 0xF2, 0xAE, 0x10, 0x7E, 0xD7, 0x6C, = 0x40, 0x86, 0x37, 0x99,=0D + 0x85, 0xF4, 0xCA, 0x1D, 0x6D, 0x90, 0x63, 0xF7, 0x63, 0xC6, 0x00, 0xA1, = 0xA9, 0x79, 0x7D, 0x88,=0D + 0x05, 0xA2, 0x92, 0x64, 0xA7, 0x8E, 0xA8, 0x9E, 0xC3, 0x1F, 0x63, 0xEE, = 0x6C, 0xE3, 0x9B, 0xA6,=0D + 0xD7, 0x9D, 0x9C, 0x9F, 0x0D, 0x7A, 0xF7, 0x00, 0x92, 0x16, 0xE8, 0x64, = 0x36, 0x07, 0x66, 0x8E,=0D + 0x6E, 0x51, 0x09, 0x3F, 0x2A, 0xD6, 0x6D, 0x4E, 0xCC, 0x49, 0xE1, 0xC3, = 0x59, 0x63, 0xDC, 0x51,=0D + 0xAA, 0xD1, 0xE7, 0x42, 0x2F, 0x72, 0x25, 0x46, 0x83, 0x7D, 0x23, 0xCE, = 0xF7, 0x96, 0x2F, 0x04,=0D + 0xE8, 0xAE, 0xF6, 0x19, 0x6D, 0x2D, 0xB2, 0x64, 0xDB, 0x69, 0x33, 0x96, = 0x58, 0xA0, 0x6C, 0x77,=0D + 0xF0, 0xD0, 0x5E, 0x36, 0xB1, 0x28, 0x89, 0x83, 0xB6, 0xA5, 0x13, 0x0E, = 0x6B, 0x6E, 0x73, 0x2C,=0D + 0x6F, 0xDA, 0xF9, 0x6C, 0x11, 0x4F, 0xCC, 0xF7, 0x89, 0x77, 0x83, 0x02, = 0x03, 0x01, 0x00, 0x01,=0D + 0xA3, 0x52, 0x30, 0x50, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, = 0x01, 0xFF, 0x04, 0x04,=0D + 0x03, 0x02, 0x01, 0x86, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, = 0x18, 0x30, 0x16, 0x80,=0D + 0x14, 0xA4, 0x21, 0xA5, 0x99, 0x40, 0x41, 0xF7, 0x1B, 0xFF, 0x35, 0xD0, = 0x40, 0x3C, 0x3E, 0x9C,=0D + 0x7C, 0xD1, 0xCC, 0xD1, 0xD1, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, = 0x04, 0x16, 0x04, 0x14,=0D + 0xB6, 0xAF, 0x0D, 0xC1, 0xBE, 0xD1, 0xE4, 0x21, 0x37, 0xFF, 0xAC, 0x7D, = 0x2D, 0xD4, 0x51, 0x8A,=0D + 0x61, 0x95, 0x50, 0x7F, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, = 0x3D, 0x04, 0x03, 0x02,=0D + 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x74, 0x7D, 0xF5, 0xAF, 0xC3, = 0xA7, 0x06, 0x99, 0x1F,=0D + 0x2C, 0xAF, 0x69, 0xAA, 0x40, 0x97, 0xE9, 0xF8, 0x4C, 0xD2, 0x71, 0x17, = 0x25, 0x85, 0xB7, 0xA6,=0D + 0x97, 0x61, 0x89, 0x82, 0xED, 0xF0, 0xF6, 0x02, 0x21, 0x00, 0xA6, 0xF4, = 0x59, 0x85, 0x53, 0x31,=0D + 0xEF, 0x6F, 0x37, 0xB6, 0x8E, 0xA2, 0xDE, 0xC3, 0xFD, 0xD6, 0xFB, 0x50, = 0x63, 0x4E, 0xB4, 0xBB,=0D + 0xC1, 0xB1, 0x07, 0x82, 0x80, 0x14, 0x28, 0x6A, 0x94, 0x94, 0x31, 0x82, = 0x01, 0x61, 0x30, 0x82,=0D + 0x01, 0x5D, 0x02, 0x01, 0x01, 0x30, 0x36, 0x30, 0x22, 0x31, 0x20, 0x30, = 0x1E, 0x06, 0x03, 0x55,=0D + 0x04, 0x03, 0x0C, 0x17, 0x54, 0x65, 0x73, 0x74, 0x45, 0x4B, 0x55, 0x50, = 0x61, 0x72, 0x73, 0x69,=0D + 0x6E, 0x67, 0x49, 0x73, 0x73, 0x75, 0x69, 0x6E, 0x67, 0x43, 0x41, 0x02, = 0x10, 0x2B, 0x7B, 0xDA,=0D + 0xCD, 0x87, 0xA0, 0xFD, 0x81, 0x49, 0x5E, 0x0E, 0xDD, 0x4F, 0x81, 0x48, = 0x2D, 0x30, 0x0D, 0x06,=0D + 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, 0x00, = 0x30, 0x0D, 0x06, 0x09,=0D + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, = 0x82, 0x01, 0x00, 0x39,=0D + 0xEC, 0xA8, 0x00, 0x4F, 0x7E, 0x2C, 0x3C, 0x48, 0xDF, 0x6F, 0x6A, 0x37, = 0x69, 0xA4, 0xB1, 0xEB,=0D + 0x7D, 0xD2, 0x3B, 0xC5, 0xEE, 0x57, 0x1F, 0x8F, 0xCA, 0x60, 0x80, 0x88, = 0x24, 0x29, 0xB5, 0x00,=0D + 0x28, 0xFF, 0x8F, 0x0A, 0x1E, 0xB0, 0x9E, 0x90, 0x09, 0xF1, 0x46, 0xC1, = 0x53, 0xE8, 0x27, 0x29,=0D + 0xFA, 0xFE, 0xA3, 0x84, 0x79, 0xB2, 0x27, 0x46, 0x9B, 0xD8, 0x33, 0xBD, = 0x8F, 0x41, 0x06, 0xEE,=0D + 0xD6, 0xE7, 0x49, 0xAF, 0x48, 0xD0, 0xD4, 0xF1, 0x06, 0xCC, 0xD3, 0x26, = 0x47, 0xAE, 0x03, 0x7A,=0D + 0xA5, 0xAF, 0xDE, 0x7F, 0x57, 0x32, 0x51, 0x49, 0x8C, 0x18, 0xD2, 0x4D, = 0x50, 0x27, 0xAC, 0x7C,=0D + 0x33, 0xB8, 0xB8, 0x1C, 0xF8, 0x0C, 0x49, 0xEB, 0xF5, 0xD7, 0xA0, 0x35, = 0x77, 0x61, 0xC0, 0x60,=0D + 0xAF, 0x23, 0x8C, 0xCC, 0xB0, 0x58, 0xB3, 0x08, 0x89, 0x2B, 0xC0, 0x61, = 0x0C, 0xA6, 0x40, 0x7A,=0D + 0x37, 0x6D, 0x6D, 0x44, 0xFF, 0xF1, 0xCE, 0xDE, 0x7A, 0x0C, 0xC4, 0x51, = 0x61, 0xE6, 0x72, 0x6B,=0D + 0xA9, 0x6A, 0x7B, 0xCF, 0xAA, 0x9A, 0x28, 0x74, 0x87, 0x30, 0xBA, 0xED, = 0x40, 0xF0, 0x75, 0x2B,=0D + 0xD7, 0xE6, 0x9F, 0xDD, 0x6B, 0xB7, 0xEA, 0x08, 0x0D, 0x9F, 0xA3, 0x25, = 0x27, 0xB7, 0xBF, 0x41,=0D + 0xC2, 0x64, 0xB5, 0x6F, 0x8F, 0xB1, 0x5F, 0xE5, 0xDF, 0xCA, 0x16, 0x04, = 0x61, 0xFF, 0x74, 0x25,=0D + 0xEE, 0xF6, 0x69, 0xF1, 0x7F, 0xE5, 0x97, 0x72, 0x58, 0xD8, 0x9F, 0xA5, = 0x19, 0x32, 0x46, 0x95,=0D + 0x67, 0x63, 0x23, 0x54, 0x46, 0x05, 0x15, 0xC3, 0x3E, 0x04, 0x7E, 0x88, = 0xD0, 0xB5, 0x52, 0xF0,=0D + 0x38, 0x3C, 0x8B, 0xD4, 0x3D, 0x9A, 0x55, 0x1B, 0x14, 0xE5, 0x37, 0x8D, = 0xB7, 0x6C, 0x39, 0x91,=0D + 0x23, 0x31, 0x63, 0x89, 0x7C, 0x75, 0x02, 0x79, 0xCC, 0x95, 0x58, 0x99, = 0x3A, 0xDB, 0xF5,=0D +};=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.= h b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h new file mode 100644 index 000000000000..9d1cb150a113 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLib.h @@ -0,0 +1,121 @@ +/** @file=0D + Application for Cryptographic Primitives Validation.=0D +=0D +Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#ifndef __CRYPTEST_H__=0D +#define __CRYPTEST_H__=0D +=0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +#include =0D +//#include =0D +#include =0D +//#include =0D +=0D +#define UNIT_TEST_NAME "BaseCryptLib Unit Test"=0D +#define UNIT_TEST_VERSION "1.0"=0D +=0D +typedef struct {=0D + CHAR8 *Description;=0D + CHAR8 *ClassName;=0D + UNIT_TEST_FUNCTION Func;=0D + UNIT_TEST_PREREQUISITE PreReq;=0D + UNIT_TEST_CLEANUP CleanUp;=0D + UNIT_TEST_CONTEXT Context;=0D +} TEST_DESC;=0D +=0D +typedef struct {=0D + CHAR8 *Title;=0D + CHAR8 *Package;=0D + UNIT_TEST_SUITE_SETUP Sup;=0D + UNIT_TEST_SUITE_TEARDOWN Tdn;=0D + UINTN *TestNum;=0D + TEST_DESC *TestDesc;=0D +} SUITE_DESC;=0D +=0D +extern UINTN mPkcs7EkuTestNum;=0D +extern TEST_DESC mPkcs7EkuTest[];=0D +=0D +extern UINTN mHashTestNum;=0D +extern TEST_DESC mHashTest[];=0D +=0D +extern UINTN mHmacTestNum;=0D +extern TEST_DESC mHmacTest[];=0D +=0D +extern UINTN mBlockCipherTestNum;=0D +extern TEST_DESC mBlockCipherTest[];=0D +=0D +extern UINTN mRsaTestNum;=0D +extern TEST_DESC mRsaTest[];=0D +=0D +extern UINTN mRsaCertTestNum;=0D +extern TEST_DESC mRsaCertTest[];=0D +=0D +extern UINTN mPkcs7TestNum;=0D +extern TEST_DESC mPkcs7Test[];=0D +=0D +extern UINTN mPkcs5TestNum;=0D +extern TEST_DESC mPkcs5Test[];=0D +=0D +extern UINTN mAuthenticodeTestNum;=0D +extern TEST_DESC mAuthenticodeTest[];=0D +=0D +extern UINTN mImageTimestampTestNum;=0D +extern TEST_DESC mImageTimestampTest[];=0D +=0D +extern UINTN mDhTestNum;=0D +extern TEST_DESC mDhTest[];=0D +=0D +extern UINTN mPrngTestNum;=0D +extern TEST_DESC mPrngTest[];=0D +=0D +extern UINTN mOaepTestNum;=0D +extern TEST_DESC mOaepTest[];=0D +=0D +/** Creates a framework you can use */=0D +EFI_STATUS=0D +EFIAPI=0D +CreateUnitTest (=0D + IN CHAR8* UnitTestName,=0D + IN CHAR8* UnitTestVersion,=0D + IN OUT UNIT_TEST_FRAMEWORK_HANDLE* Framework=0D +);=0D +=0D +/**=0D + Validate UEFI-OpenSSL DH Interfaces.=0D +=0D + @retval EFI_SUCCESS Validation succeeded.=0D + @retval EFI_ABORTED Validation failed.=0D +=0D +**/=0D +EFI_STATUS=0D +ValidateCryptDh (=0D + VOID=0D + );=0D +=0D +/**=0D + Validate UEFI-OpenSSL pseudorandom number generator interfaces.=0D +=0D + @retval EFI_SUCCESS Validation succeeded.=0D + @retval EFI_ABORTED Validation failed.=0D +=0D +**/=0D +EFI_STATUS=0D +ValidateCryptPrng (=0D + VOID=0D + );=0D +=0D +=0D +=0D +#endif=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibH= ost.inf b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost= .inf new file mode 100644 index 000000000000..300b98e40b33 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibHost.inf @@ -0,0 +1,46 @@ +## @file=0D +# Host-based UnitTest for BaseCryptLib=0D +#=0D +# Copyright (c) Microsoft Corporation.
=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010005=0D + BASE_NAME =3D BaseCryptLibUnitTestHost=0D + FILE_GUID =3D 0cb84598-824b-4833-b705-bdefdcbba1d5=0D + MODULE_TYPE =3D HOST_APPLICATION=0D + VERSION_STRING =3D 1.0=0D +=0D +#=0D +# The following information is for reference only and not required by the = build tools.=0D +#=0D +# VALID_ARCHITECTURES =3D IA32 X64=0D +#=0D +=0D +[Sources]=0D + UnitTestMain.c=0D + BaseCryptLibUnitTests.c=0D + TestBaseCryptLib.h=0D + HashTests.c=0D + HmacTests.c=0D + BlockCipherTests.c=0D + RsaTests.c=0D + RsaPkcs7Tests.c=0D + Pkcs5Pbkdf2Tests.c=0D + AuthenticodeTests.c=0D + TSTests.c=0D + DhTests.c=0D + RandTests.c=0D + Pkcs7EkuTests.c=0D + OaepEncryptTests.c=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + CryptoPkg/CryptoPkg.dec=0D +=0D +[LibraryClasses]=0D + BaseLib=0D + DebugLib=0D + BaseCryptLib=0D + UnitTestLib=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibU= efiShell.inf b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLi= bUefiShell.inf new file mode 100644 index 000000000000..6cd4a31be2c8 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestBaseCryptLibUefiShel= l.inf @@ -0,0 +1,49 @@ +## @file=0D +# BaseCryptLib UnitTest built for execution in UEFI Shell.=0D +#=0D +# Copyright (c) Microsoft Corporation.
=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010006=0D + BASE_NAME =3D BaseCryptLibTestUefiShell=0D + FILE_GUID =3D ed54ee8c-ef7a-41f2-83d5-0e0d4cd88c21=0D + MODULE_TYPE =3D UEFI_APPLICATION=0D + VERSION_STRING =3D 1.0=0D + ENTRY_POINT =3D DxeEntryPoint=0D +=0D +#=0D +# The following information is for reference only and not required by the = build tools.=0D +#=0D +# VALID_ARCHITECTURES =3D IA32 X64=0D +#=0D +=0D +[Sources]=0D + UnitTestMain.c=0D + BaseCryptLibUnitTests.c=0D + TestBaseCryptLib.h=0D + HashTests.c=0D + HmacTests.c=0D + BlockCipherTests.c=0D + RsaTests.c=0D + RsaPkcs7Tests.c=0D + Pkcs5Pbkdf2Tests.c=0D + AuthenticodeTests.c=0D + TSTests.c=0D + DhTests.c=0D + RandTests.c=0D + Pkcs7EkuTests.c=0D + OaepEncryptTests.c=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + CryptoPkg/CryptoPkg.dec=0D +=0D +[LibraryClasses]=0D + UefiApplicationEntryPoint=0D + BaseLib=0D + DebugLib=0D + UnitTestLib=0D + PrintLib=0D + BaseCryptLib=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Chai= nCreationInstructions.txt b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Te= stEKUCerts/ChainCreationInstructions.txt new file mode 100644 index 000000000000..0ca6830516ea --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/ChainCreati= onInstructions.txt @@ -0,0 +1,92 @@ +--------------------------------------------------------------------------= ------=0D +File: ChainCreationInstructions.txt=0D +=0D +Description: This folder contains INI files that are required to genera= te=0D + the following test cert chains. Certs will be copied onto = the=0D + file system AND MY store when they are generated by certre= q.exe.=0D +=0D +Note that typically certreq.exe operates on INF files, but in this folder= =0D +we use INI files so that our build system does not complain about INF's be= ing=0D +in the tree, but not in the CryptoPkg.dsc file.=0D +=0D +To create your own certificates and signatures for testing, this file demo= nstrates=0D +how the test certificate chains and signatures were created.=0D +=0D +To create test signatures, run SignFirmwareWithEKUs.cmd (with SignTool.exe= in=0D +your path). You can then use your favorite BinaryToHex converter to conve= rt=0D +the binary into a byte array that you can include in AllTestSignatures.h=0D +=0D +Copyright (C) Microsoft Corporation. All Rights Reserved.=0D +--------------------------------------------------------------------------= ------=0D +Cert Chain:=0D +=0D + ------------------------------------------=0D + | | // Root of trust. ECDSA= P521 curve=0D + | TestEKUParsingRoot | // SHA 256 Key Usage: C= ERT_DIGITAL_SIGNATURE_KEY_USAGE=0D + | | // CERT_KEY_CERT_SIGN_K= EY_USAGE | CERT_CRL_SIGN_KEY_USAGE=0D + ------------------------------------------=0D + ^=0D + |=0D + ------------------------------------------=0D + | | // Issues subordinate C= As. ECC P384 curve.=0D + | TestEKUParsingPolicyCA | // SHA 256 Key Usage:=0D + | | // CERT_KEY_CERT_SIGN_K= EY_USAGE | CERT_CRL_SIGN_KEY_USAGE=0D + ------------------------------------------=0D + ^=0D + |=0D + ------------------------------------------=0D + | | // Issues end-entity (l= eaf) signers. ECC P256 curve.=0D + | TestEKUParsingIssuingCA | // SHA 256 Key Usage: C= ERT_DIGITAL_SIGNATURE_KEY_USAGE=0D + | | // Enhanced Key Usage:= =0D + ------------------------------------------ // 1.3.6.1.4.1.311.76.9= .21.1 (Surface firmware signing)=0D + ^=0D + |=0D + --------------------------------------=0D + / / // Leaf signer, ECC P2= 56 curve.=0D + / TestEKUParsingLeafSigner / // SHA 256 Key Usage: C= ERT_DIGITAL_SIGNATURE_KEY_USAGE=0D + / / // Enhanced Key usages:= =0D + -------------------------------------- // 1.3.6.1.4.1.311.76.9= .21.1 (Surface firmware signing)=0D + // 1.3.6.1.4.1.311.76.9= .21.1.N, N =3D=3D Product ID.=0D +=0D +=0D +=0D +=0D +--------------------------------------------------------------------------= -------=0D +=0D +=0D +--- files required ---=0D +=0D +TestEKUParsingRoot.ini - This certificate is the root CA und= er which all CAs live.=0D +TestEKUParsingPolicyCA.ini - This policy CA will issue subordina= te CA's with EKU constraints.=0D +TestEKUParsingIssuingCA.ini - CA to issue end-entity leafs.=0D +TestEKUParsingLeafSigner.ini - End-Entity leaf signer.=0D +TestEKUParsingLeafSignerPid12345.ini - End-Entity, with EKU: 1.3.6.1.4.1.3= 11.76.9.21.1.12345.=0D +TestEKUParsingNoEKUsInSigner.ini - Leaf with no EKU's specified.=0D +TestEKUParsingLeafSignerPid1.ini - Test with naming files ini, to get = around build complaints.=0D +--- Commands to execute ---=0D +=0D +certreq.exe -new TestEKUParsingRoot.ini= TestEKUParsingRoot.cer=0D +certreq.exe -new -q -cert "TestEKUParsingRoot" TestEKUParsingPolicyCA= .ini TestEKUParsingPolicyCA.cer=0D +certreq.exe -new -q -cert "TestEKUParsingPolicyCA" TestEKUParsingIssuingC= A.ini TestEKUParsingIssuingCA.cer=0D +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingLeafSign= er.ini TestEKUParsingLeafSigner.cer=0D +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingLeafSign= erPid12345.ini TestEKUParsingLeafSignerPid12345.cer=0D +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingNoEKUsIn= Signer.ini TestEKUParsingNoEKUsInSigner.cer=0D +certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingLeafSign= erPid1.ini TestEKUParsingLeafSignerPid1.cer=0D +=0D +--------------------------------------------------------------------------= -------=0D +=0D +Then start mmc->Add certificates, Local Computer/open Personal/Certs and e= xport the keys into the pfx files below.=0D +Note: You should see a little key on the top left of each cert icon, whic= h means you have the private key=0D + for this cert. If you don't see it something is wrong. For each c= ert, right-click and do all tasks,=0D + export. Yes, Export the private key. PCKS#12 format, include all = certs in path if possible.=0D +=0D + If we automated the call to certreq above, there is a PowerShell "P= KI" cmdlet which has=0D + an Export-PfxCertificate command.=0D +=0D +Passwords: TestEKUParsingRoot.pfx =3D=3D TestEKUParsingRoot= =0D + TestEKUParsingPolicyCA.pfx =3D=3D TestEKUParsingPoli= cyCA=0D + TestEKUParsingIssuingCA.pfx =3D=3D TestEKUParsingIssu= ingCA=0D + TestEKUParsingLeafSigner.pfx =3D=3D TestEKUParsingLeaf= Signer=0D + TestEKUParsingLeafSignerPid12345.pfx =3D=3D TestEKUParsingLeaf= SignerPid12345=0D + TestEKUParsingNoEKUsInSigner.pfx =3D=3D TestEKUParsingNoEK= UsInSigner=0D +=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Crea= teTestCerts.cmd b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts= /CreateTestCerts.cmd new file mode 100644 index 000000000000..6d68afdab77d --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/CreateTestC= erts.cmd @@ -0,0 +1,11 @@ +@ECHO OFF=0D +REM=0D +REM Use this file to create test certificates.=0D +REM=0D +call certreq.exe -new TestEKUParsingRoo= t.ini TestEKUParsingRoot.cer=0D +call certreq.exe -new -q -cert "TestEKUParsingRoot" TestEKUParsingPol= icyCA.ini TestEKUParsingPolicyCA.cer=0D +call certreq.exe -new -q -cert "TestEKUParsingPolicyCA" TestEKUParsingIss= uingCA.ini TestEKUParsingIssuingCA.cer=0D +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingLea= fSigner.ini TestEKUParsingLeafSigner.cer=0D +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingLea= fSignerPid12345.ini TestEKUParsingLeafSignerPid12345.cer=0D +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingNoE= KUsInSigner.ini TestEKUParsingNoEKUsInSigner.cer=0D +call certreq.exe -new -q -cert "TestEKUParsingIssuingCA" TestEKUParsingLea= fSignerPid1.ini TestEKUParsingLeafSignerPid1.cer=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Sign= FirmwareWithEKUs.cmd b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKU= Certs/SignFirmwareWithEKUs.cmd new file mode 100644 index 000000000000..ce03e33a7169 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/SignFirmwar= eWithEKUs.cmd @@ -0,0 +1,76 @@ +@ECHO OFF=0D +REM This script will use various certificates to sign blobs for testing = purposes.=0D +REM=0D +REM=0D +REM Our EKU test certificate chain:=0D +REM ------------------------------------------=0D +REM | | // Root of trust. ECDSA= P521 curve=0D +REM | TestEKUParsingRoot | // SHA 256 Key Usage: C= ERT_DIGITAL_SIGNATURE_KEY_USAGE=0D +REM | | // CERT_KEY_CERT_SIGN_K= EY_USAGE | CERT_CRL_SIGN_KEY_USAGE=0D +REM ------------------------------------------=0D +REM ^=0D +REM |=0D +REM ------------------------------------------=0D +REM | | // Issues subordinate C= As. ECC P384 curve.=0D +REM | TestEKUParsingPolicyCA | // SHA 256 Key Usage:=0D +REM | | // CERT_KEY_CERT_SIGN_K= EY_USAGE | CERT_CRL_SIGN_KEY_USAGE=0D +REM ------------------------------------------=0D +REM ^=0D +REM |=0D +REM ------------------------------------------=0D +REM | | // Issues end-entity (l= eaf) signers. ECC P256 curve.=0D +REM | TestEKUParsingIssuingCA | // SHA 256 Key Usage: C= ERT_DIGITAL_SIGNATURE_KEY_USAGE=0D +REM | | // Enhanced Key Usage:= =0D +REM ------------------------------------------ // 1.3.6.1.4.1.311.76.9= .21.1 (Surface firmware signing)=0D +REM ^=0D +REM |=0D +REM --------------------------------------=0D +REM / TestEKUParsingLeafSigner && / // Leaf signer, ECC P2= 56 curve.=0D +REM / TestEKUParsingLeafSignerPid12345 / // SHA 256 Key Usage: C= ERT_DIGITAL_SIGNATURE_KEY_USAGE=0D +REM / / // Enhanced Key usages:= =0D +REM -------------------------------------- // 1.3.6.1.4.1.311.76.9= .21.1 (Surface firmware signing)=0D +REM // 1.3.6.1.4.1.311.76.9= .21.1.N, N =3D=3D Product ID.=0D +REM=0D +REM=0D +REM=0D +REM Dev Note: SignTool.exe must be in your path when running this script= .=0D +=0D +del *.p7b=0D +ECHO -------------------------------------------------------------------=0D +ECHO Press any key 4 times to append time to the test blobs to sign.=0D +time >> TestSignWithOneEKUInLeafSigner.bin=0D +time >> TestSignWithTwoEKUsInLeafSignerPid1.bin=0D +time >> TestSignWithTwoEKUsInLeafSignerPid12345.bin=0D +time >> TestSignWithNoEKUsInLeafSigner.bin=0D +=0D +=0D +REM=0D +REM Create a signature with TestEKUParsingLeafSigner.cer which has one EKU= in it,=0D +REM and add the Policy CA in the signature.=0D +REM=0D +call signtool.exe sign /fd sha256 /f TestEKUParsingLeafSigner.cer = /p7 . /u 1.3.6.1.4.1.311.76.9.21.1 /ac TestEKUParsing= PolicyCA.cer /p7co 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug = TestSignWithOneEKUInLeafSigner.bin=0D +=0D +REM=0D +REM Create a signature with two EKU's in the leaf signer. (1.3.6.1.4.1.31= 1.76.9.21.1, and 1.3.6.1.4.1.311.76.9.21.1.1)=0D +REM=0D +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 TestSignWithTwoEKUsInLeafSi= gnerPid1.bin=0D +=0D +REM=0D +REM Create a signature with two EKUs in the leaf (1.3.6.1.4.1.311.76.9.21.= 1, and 1.3.6.1.4.1.311.76.9.21.1.12345)=0D +REM=0D +call signtool.exe sign /fd sha256 /f TestEKUParsingLeafSignerPid12345.cer = /p7 . /u 1.3.6.1.4.1.311.76.9.21.1.12345 /p7co= 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug TestSignWithTwoEKU= sInLeafSignerPid12345.bin=0D +=0D +=0D +REM=0D +REM Create a signature with a leaf that does not have any EKUs in the sign= ture.=0D +REM=0D +call signtool.exe sign /fd sha256 /f TestEKUParsingNoEKUsInSigner.cer /p7 = . /p7co 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /v /debug TestSignWi= thNoEKUsInLeafSigner.bin=0D +=0D +REM=0D +REM Rename *.p7 to *.p7b=0D +REM=0D +rename *.p7 *.p7b=0D +ECHO ---------------------------------------------------------------------= ------=0D +ECHO Now you can use your favorite "Binary To Hex" converter to convert th= e=0D +ECHO signatures (P7B files) to byte arrays and add them to AllTestSignatur= es.h=0D +ECHO ---------------------------------------------------------------------= ------=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Test= EKUParsingIssuingCA.ini b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Test= EKUCerts/TestEKUParsingIssuingCA.ini new file mode 100644 index 000000000000..8576783473e9 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUPars= ingIssuingCA.ini @@ -0,0 +1,45 @@ +[Version]=0D +Signature=3D"$Windows NT$=0D +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0D +; 2.5.29.19 =3D=3D Basic Constraints for CA=0D +[Strings]=0D +szOID_BASIC_CONSTRAINTS2 =3D "2.5.29.19"=0D +=0D +[EnhancedKeyUsageExtension]=0D +OID =3D 1.3.6.1.4.1.311.76.9.21.1=0D +=0D +[NewRequest]=0D +Subject =3D "CN=3DTestEKUParsingIssuingCA"=0D +Exportable =3D true=0D +KeyLength =3D 256=0D +HashAlgorithm =3D sha256=0D +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE"=0D +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG"=0D +MachineKeySet =3D True=0D +RequestType =3D cert=0D +ValidityPeriodUnits =3D 20=0D +ValidityPeriod =3D Years=0D +ProviderName =3D "Microsoft Software Key Storage Provider"=0D +KeyAlgorithm =3D "ECDSA_P256"=0D +=0D +=0D +[Extensions]=0D +%szOID_BASIC_CONSTRAINTS2% =3D "{text}"=0D + _continue_ =3D "ca=3DTrue"=0D +=0D +Critical=3D%szOID_BASIC_CONSTRAINTS2%=0D +=0D +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0D +; This extension is so the this CA is only allowed to=0D +; issue end-entity certs.=0D +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0D +[BasicConstraintsExtension]=0D +PathLength=3D0=0D +=0D +;=0D +; Surface Firmware Signing EKU=0D +;=0D +[Extensions]=0D + 2.5.29.37 =3D "{text}"=0D + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1"=0D +=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Test= EKUParsingLeafSigner.ini b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/Tes= tEKUCerts/TestEKUParsingLeafSigner.ini new file mode 100644 index 000000000000..f501537343ca --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUPars= ingLeafSigner.ini @@ -0,0 +1,25 @@ +[Version]=0D +Signature=3D"$Windows NT$=0D +=0D +[EnhancedKeyUsageExtension]=0D +OID =3D 1.3.6.1.4.1.311.76.9.21.1=0D +=0D +[NewRequest]=0D +Subject =3D "CN=3DTestEKUParsingLeafSigner"=0D +Exportable =3D true=0D +KeyLength =3D 256=0D +HashAlgorithm =3D sha256=0D +KeyUsage =3D "CERT_DIGITAL_SIGNATURE_KEY_USAGE"=0D +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG"=0D +MachineKeySet =3D True=0D +RequestType =3D cert=0D +ValidityPeriodUnits =3D 20=0D +ValidityPeriod =3D Years=0D +ProviderName =3D "Microsoft Software Key Storage Provider"=0D +KeyAlgorithm =3D "ECDSA_P256"=0D +=0D +;=0D +; Surface test firwmare signing EKU=0D +;=0D +[Extensions]=0D + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1"=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Test= EKUParsingLeafSignerPid1.ini b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib= /TestEKUCerts/TestEKUParsingLeafSignerPid1.ini new file mode 100644 index 000000000000..35aa78c493b0 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUPars= ingLeafSignerPid1.ini @@ -0,0 +1,24 @@ +[Version]=0D +Signature=3D"$Windows NT$=0D +=0D +[EnhancedKeyUsageExtension]=0D +OID =3D 1.3.6.1.4.1.311.76.9.21.1=0D +OID =3D 1.3.6.1.4.1.311.76.9.21.1.1=0D +=0D +[NewRequest]=0D +Subject =3D "CN=3DTestEKUParsingLeafSignerPid1"=0D +Exportable =3D true=0D +KeyLength =3D 2048=0D +HashAlgorithm =3D sha256=0D +KeySpec =3D AT_SIGNATURE=0D +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_DIGITAL_SIGNATURE_KEY_US= AGE | CERT_CRL_SIGN_KEY_USAGE"=0D +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG"=0D +MachineKeySet =3D True=0D +RequestType =3D cert=0D +ValidityPeriodUnits =3D 5=0D +ValidityPeriod =3D Years=0D +=0D +[Extensions]=0D + 2.5.29.37 =3D "{text}"=0D + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1,"=0D + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1.1"=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Test= EKUParsingLeafSignerPid12345.ini b/CryptoPkg/Test/UnitTest/Library/BaseCryp= tLib/TestEKUCerts/TestEKUParsingLeafSignerPid12345.ini new file mode 100644 index 000000000000..67c5741f4d26 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUPars= ingLeafSignerPid12345.ini @@ -0,0 +1,27 @@ +[Version]=0D +Signature=3D"$Windows NT$=0D +=0D +[EnhancedKeyUsageExtension]=0D +OID =3D 1.3.6.1.4.1.311.76.9.21.1=0D +OID =3D 1.3.6.1.4.1.311.76.9.21.1.12345=0D +=0D +[NewRequest]=0D +Subject =3D "CN=3DTestEKUParsingLeafSignerPid12345"=0D +Exportable =3D true=0D +KeyLength =3D 2048=0D +HashAlgorithm =3D sha256=0D +KeySpec =3D AT_SIGNATURE=0D +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_DIGITAL_SIGNATURE_KEY_US= AGE | CERT_CRL_SIGN_KEY_USAGE"=0D +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG"=0D +MachineKeySet =3D True=0D +RequestType =3D cert=0D +ValidityPeriodUnits =3D 5=0D +ValidityPeriod =3D Years=0D +=0D +[Extensions]=0D + 2.5.29.37 =3D "{text}"=0D + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1,"=0D + _continue_ =3D "1.3.6.1.4.1.311.76.9.21.1.12345"=0D +=0D +=0D +=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Test= EKUParsingNoEKUsInSigner.ini b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib= /TestEKUCerts/TestEKUParsingNoEKUsInSigner.ini new file mode 100644 index 000000000000..60743b02a94b --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUPars= ingNoEKUsInSigner.ini @@ -0,0 +1,16 @@ +[Version]=0D +Signature=3D"$Windows NT$=0D +=0D +=0D +[NewRequest]=0D +Subject =3D "CN=3DTestEKUParsingNoEKUsInSigner"=0D +Exportable =3D true=0D +KeyLength =3D 2048=0D +HashAlgorithm =3D sha256=0D +KeySpec =3D AT_SIGNATURE=0D +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE | CERT_DIGITAL_SIGNATURE_KEY_US= AGE | CERT_CRL_SIGN_KEY_USAGE"=0D +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG"=0D +MachineKeySet =3D True=0D +RequestType =3D cert=0D +ValidityPeriodUnits =3D 20=0D +ValidityPeriod =3D Years=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Test= EKUParsingPolicyCA.ini b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestE= KUCerts/TestEKUParsingPolicyCA.ini new file mode 100644 index 000000000000..2ccda66596bc --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUPars= ingPolicyCA.ini @@ -0,0 +1,28 @@ +[Version]=0D +Signature=3D"$Windows NT$=0D +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0D +; 2.5.29.19 =3D=3D Basic Constraints for CA=0D +[Strings]=0D +szOID_BASIC_CONSTRAINTS2 =3D "2.5.29.19"=0D +=0D +[NewRequest]=0D +Subject =3D "CN=3DTestEKUParsingPolicyCA"=0D +Exportable =3D true=0D +KeyLength =3D 384=0D +HashAlgorithm =3D sha256=0D +KeyUsage =3D "CERT_KEY_CERT_SIGN_KEY_USAGE"=0D +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG"=0D +MachineKeySet =3D True=0D +RequestType =3D cert=0D +ValidityPeriodUnits =3D 20=0D +ValidityPeriod =3D Years=0D +ProviderName =3D "Microsoft Software Key Storage Provider"=0D +KeyAlgorithm =3D "ECDSA_P384"=0D +=0D +=0D +[Extensions]=0D +%szOID_BASIC_CONSTRAINTS2% =3D "{text}"=0D + _continue_ =3D "ca=3DTrue"=0D +=0D +Critical=3D%szOID_BASIC_CONSTRAINTS2%=0D +=0D diff --git a/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/Test= EKUParsingRoot.ini b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCe= rts/TestEKUParsingRoot.ini new file mode 100644 index 000000000000..d8cd7d1f82a3 --- /dev/null +++ b/CryptoPkg/Test/UnitTest/Library/BaseCryptLib/TestEKUCerts/TestEKUPars= ingRoot.ini @@ -0,0 +1,28 @@ +[Version]=0D +Signature=3D"$Windows NT$=0D +=0D +[Strings]=0D +szOID_BASIC_CONSTRAINTS2 =3D "2.5.29.19"=0D +=0D +[NewRequest]=0D +Subject =3D "CN=3DTestEKUParsingRoot"=0D +Exportable =3D true=0D +KeyLength =3D 521=0D +HashAlgorithm =3D sha256=0D +KeyUsage =3D "CERT_DIGITAL_SIGNATURE_KEY_USAGE | CERT_KEY_CERT_SIGN_KEY_US= AGE | CERT_CRL_SIGN_KEY_USAGE"=0D +KeyUsageProperty =3D "NCRYPT_ALLOW_SIGNING_FLAG"=0D +MachineKeySet =3D True=0D +RequestType =3D cert=0D +ValidityPeriodUnits =3D 30=0D +ValidityPeriod =3D Years=0D +ProviderName =3D "Microsoft Software Key Storage Provider"=0D +KeyAlgorithm =3D ECDSA_P521=0D +=0D +=0D +=0D +=0D +[Extensions]=0D +%szOID_BASIC_CONSTRAINTS2% =3D "{text}"=0D + _continue_ =3D "ca=3DTrue"=0D +=0D +Critical=3D%szOID_BASIC_CONSTRAINTS2%=0D --=20 2.27.0.windows.1