blob: e18a6f4685063b936d0707f9740a4bc400767b6e [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "hwsec-test-utils/fake_pca_agent/pca_enroll_v1.h"
#include <memory>
#include <string>
#include <vector>
#include <base/optional.h>
#include <base/strings/string_number_conversions.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
namespace hwsec_test_utils {
namespace {
// A real challenge response from a developer-mode device.
constexpr char kEnrollRequestInHex[] =
"0AE10C12800291D78402ACFFEF69CD5C07739AE8D27CF73CCFF6C951844E8CB1BB0298DF69"
"3F6A17C73285FD5B98AE0E0376D287DFCCC4CE15A76F9AEECE550E1CCAAC21D5281928A869"
"C5CB5E068E255274A59C210A220B4DF15664EACD7739B94C599E25B2366B53DB2CAA3A0CD1"
"6FFEEE58AD0E2EFEE8B3ECFD81EC76BD9E912DAA7C5A09CED0EC771B9D6FBCC0C53790098A"
"63F30E9DB701B7D01A093E9D3382C545DA8A449FEEF60C7B3AE5D570204E4FBBF97F982466"
"1F81D3EA397637F052631AE44289DAB1ACCD742EEC673A1DAF39093186C890C9859A2B6C65"
"E1CF9068E32B15E4ADEE86F283E09ED868FB4577E1FE107F1A84471AD6BF00B9C3BE508CFC"
"E597871A108CA75ADABF2D984F15058A78859CF2972240F9F9FFF29B6D6D1D9B4AF27ABF08"
"59436F762A05E533102BCEBB30B88200E487C0BCBF7BE8CBCD294E450E6B68383C29C02977"
"BB7560F8418CE5871E9463F8652A800AC9ADDA3834F84E1BF769A6E2AE9F7C4367D8AAAB60"
"58D7CAC407B743F23DB68E6B95A8034BF405FAA99EC6B8DD0D1DE23287EFA0959B6D690ED7"
"59429705A06FC9B0B018179F48C0D0BFC5CC15B457163EA3EF59ED0A9A3BDDC091D0AEF2A5"
"0B3B9A05DEAC4CC23A7D6FF70636A2CD4698F3653A9737E28F719023586DFB8F3882DC834A"
"80593F8F2919D49830FAC3B6E394BB1C663FB7DC658C2C45B9F52514B1B22984BAD9A9976F"
"1226FDB2158C38631A3B9422C2F72676B613528C5FDEF0614CBECBB27539C5CC9C04D612D1"
"83126F1201AA072686B1CFE0AD6EC0F273FEB5A5505176A6792B926FBE2DB5ECD5CC5AD7AF"
"663974C2DD38A751B42AC01533B1EAAAAA7CAF6E98F8ABBB2E56C187AF9AA341B01D4F2A5A"
"4F03C58FF51F8D29AB8CCBC576EB672AA0C4C851433D9020CA5821F721C129F7AC10B33738"
"B90BFFDDBE65E84F02A01BF2DCD56932488BE5F76378B96FA13CDDE508FA03A9ED2BBC0B7C"
"B71E94E30356685E1DDE922EC02AC95D504413E7164153CDB4E1E41D3DF3E7CED1D2361E99"
"19704952464473AEE8AC18877CAC9025129B118FE68383C64F30BD49EF24A9EA1C5DC1F3BB"
"1469E932C1516F5566C81F843EE1EE53FD689959D5FB0C2383F3D2E160056295CC7B5275C6"
"697FB23B021D8F09CD25C3C82CDF071E58886C91A0C473166BA301930781626053615984B5"
"6EE5FCDEC2F78587104EF0069603F575F12564394284773CF0BF88900537536D5610712344"
"1BAD7AAB5867BCCF758CD44637215F430F7BDF9FA8F30B9069F70BCA83D6921061E29CD7BF"
"5D182CF259D7C39E2AB95511417DBCBFED99035584A904E5DFFCE1202307C72616B76464FD"
"66D755F13899C06D8071E5EC9847D099A0FE0274ECB0E310EE9A771AF9B7D39BC376057380"
"52C708F3AFB3CF87C610B351F55FC47E37CDFA17512CCB6167F2EC1783BB9D30EE040A7F93"
"C0A763ED0CF1B19BBD68E1D4C639C33FDBC678A31CDE950960276A3603381EEAA021742604"
"31B8E2687A38501E5F59BF81D356465E45D51F4B09A2A1185F770F031B8AECB7FAFB07ADBF"
"2AA1DB772A0B7C0D827B81646966839A45CD47E29C01A49CC324790266E8C26836F98E53BF"
"B1EB7D5CA037948DD0CD03C60B47F2DF93B7F324B2B68464CC4F0FBE90EA3E25FF9B1599FB"
"5C7C7592B0EAE372375FC542AE30891839E3BC6F9C247DEAD64183026F24F0DEAEB295BE17"
"A227EDC877025F5889B84DFD9D211C92062D4EBF19171F7AF1FE16FDC691B669E027431FB5"
"1E780297C36B2F2A6E767F6F96A869ADFAA3A2CD41F6A760731FCF115C57AAF0A3B78EAC97"
"81C2E57EBF0C2C9D92472E5BE7654EAA4D246EF067F48A32FFF800EC6C8E0C728737309E71"
"4C082C4414B4B1432A91E05F84862A3FF3604B30FEC555BFFBCB983B89D63B86348E59B5E7"
"5365CBA39EA85230697BD47DD9BE18FCB484DF898BF04B34766EFA2EBA5CB026389FE871A1"
"E5D113B934B8B7209DA8B8E37423DFEABA4B5F45305302E789B5B52A9F4E680D2F157BF9F5"
"14C93179715CF7D9A3459F58E9CAC38646211F3E4C45B5761254B3217FE0301CC3136A8547"
"BE077BD8ACE868C25ED3BAFB2EB4A49B2E92DC9ACC165826B03830F082715B698F355FCDF1"
"0767EE1E17426527CD60402F1E3D920EED26DD75446B1C5A3A3557C5D731EF5464616AEA5A"
"7B565EDD3950ABD88718FFA979987B33791C50176E89F2FEF1192B3A21F7199DD53F344A32"
"DCCCF53F5D1FF6254326B0A5FFC89B15444DE84053D5AB221E6A586655F7F1E6C9A8B2B90B"
"7732054361456E63129C0200000001000100020000000C0000080000000002000000000000"
"010092B0082F981D839323B73F98D42941612C0D2B890AD3C2DCB5E94CFF8518A34E67ADD5"
"39B7EC6E81AFD19D9408B37CA49405F62B4CA8E8B6A7F3B07E13222A0BADDDFDA90B34B31E"
"0D8B3FFE2C44D15F9432C193E5AE17CA0BB26A341E4ECFF261C06179D95890956F4D99FB17"
"F96C4F976AAADD39C9E5C49AEB7D169E768DBCEE3B58E7CB0CD5EA20769E24E40F791F1579"
"1367C732EE88BAD9B4087FBCDC0A97ECE9C18BEA47763753A426E0F37E7B675CE4C9090555"
"AF49B9ED8121252811A193AA57964C200920559A7041EEF758C67BCAFC1CAD3A33F8394E79"
"C65143FF1DCB517BB74107E4FAA6BC21291B3D61F903F155635E91E9DC2142B7C510902F1A"
"CB020A8002804F4EDE62D4AA8C8E614DF4D2760CEF44E9CCFF7F727C9EC8570481D2495566"
"0287D2AC32CAAEECAFE90E32E9BB7CEEB1D80449A024AEE98C0094818119FD553C7CC8ED17"
"6DB25F546B8B466B019C821497748FBA6AE8F3ED00FCA09EBA21567601BA2D83C69A97137F"
"5B3A94542BDA21ED174ED3159E7C4847326E7A17AD2E109C9C5C44D8A94DF94F7B0DEDD3DB"
"6F86A5EF427F43EE29A023EB6463E4F918D9E9715AD71148A7E05CCA2F03DE7FE65AB5FB93"
"77249A24CF9B574BF6C3424C733CA8F17B892095245FEBE0036F4BB1C24F8766F90147F95A"
"18057545751E0040007FDCCB121B00F881293C521C4F3BCEB9C1389A288CCE92CD386BB5AD"
"6FCE12300101000051554F54531C585D525B83CD901717617DC2A06CE30B0B0A0000000000"
"0000000000000000000000000000001A14865AEDD337518E56F648440B81B4CBD9359FDFF3"
"22E0020A80024A2149D502C25B05955C2E6116BE7526F1D6691D4B18EA499E0A3D669E817E"
"38AA0FE1ADB80E7466D1739506F79FEB883C024396EA8D9A0B939AF61D6EFB080A344DDA79"
"2D9F416C88DC63792244658A912CC4D7CA343819CCF079A701BCC26F9A5F25BDC09DD4ECCB"
"194914A9E130B32E873BE49C103EC235FA70C7BEB4B827DC41D807BB7E716F2FEA7940F2D3"
"70C87335A967A5216F7692EAC7071C3FBA380179377A36F4C36CBC2FA14AE04C969F083F27"
"3E0D6B91DF29667FCDA2D64A05D95DC53D5FDFC552DA98C46D586482895D95B6F39F7366FC"
"02B8E3E7A2A54B671A9C94212836811964D26EE0C78723A2609D0A27BF727A6C5768CFA14C"
"E38CF812300101000051554F54E65F9ABC7607AD60DD8ECD35D156508CD7FA8E1100000000"
"000000000000000000000000000000001A140B17BFBBACD56AE2BFCCCEEFCDA05582B492AC"
"7922134348454C4C20544553542036323937204445562A20F2526B31A6C612D67D0BD0A950"
"E5E2AA7AD0C88453E2CA5CCA68171E8A09DF573001";
} // namespace
class PcaEnrollV1Test : public testing::Test {
public:
PcaEnrollV1Test() {
SetupEnrollRequestToVerify();
pca_enroll_ = std::make_unique<fake_pca_agent::PcaEnrollV1>(request_);
}
~PcaEnrollV1Test() override = default;
protected:
attestation::AttestationEnrollmentRequest request_;
std::unique_ptr<fake_pca_agent::PcaEnrollV1> pca_enroll_;
void SetupEnrollRequestToVerify() {
std::vector<uint8_t> output;
ASSERT_TRUE(base::HexStringToBytes(kEnrollRequestInHex, &output));
ASSERT_TRUE(
request_.ParseFromString(std::string(output.begin(), output.end())));
}
};
TEST_F(PcaEnrollV1Test, Enroll) {
EXPECT_TRUE(pca_enroll_->Preprocess());
EXPECT_TRUE(pca_enroll_->Verify());
EXPECT_TRUE(pca_enroll_->Generate());
}
} // namespace hwsec_test_utils