| // 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 |