| // 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_v2.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[] = |
| "0A91091280022F683B1488572D3DD5D8452D0B2E85EAED13D3D6704F9C689810E1E4966A3A" |
| "C455424BCC2B96D4BF4BD8FBF363432899B8663B34B1B075867FBEB347BFB2835A569CFB8E" |
| "7856EB4420EB1B5D5CF9A50005C68339BD366E6E2CF7069140CC37B828A77EAA1C955008D2" |
| "9AA0072D91161AD6AAA9C36CF08A84CDA988C89E011315855AA3D45B2919CAA42489F67538" |
| "5206CC38349B4ACC28447278176B4EC0BCB581A40B3A7F7880F317DFB4F199C9C62B9B3AE3" |
| "7E530BDA52E9118CF634B59FC74A82B16D66B4189CD89108A5CC3C5591BD55AF7B77BD8DAE" |
| "BAD49EE860FD11A11ACA69A5AA67EB58D8AADD9D304BB37E16E7710436E9AFFA50C4098497" |
| "9456D31A10C5311C4A4CBCBCCC3FA6E3E655712CBC2240ACA34C0115ABE55DEEA3F0F2CFC6" |
| "CD9B5B341E4CE2D452E186A6ED9DB2CF3A9830E9C82820CFC27F1314CBC36472E209852C48" |
| "7D3361B9417F27825ECAF185392AB0064D98B35A7382B2372AC70B329C99DDCE854886AFDA" |
| "A0BBBF4F846A9559DC3933B1409C3028376E8604E9D0C35274DC5483F0AEA0EFC1A171559F" |
| "FF9B8FABF98C651629BAC24C157D9073647269B5A9737F8F40E59C326F89E1E2CBBA7BC07B" |
| "59003BFD90D6808E017447A67423E3CB15CF7C0F3D6849FF9422B8244072D7493B506909DB" |
| "573EAFA46EAD5DA0630242814DCA7032FBA08C8B8D879718B0586E467FCD2E157FEBB8DC24" |
| "A313B19320E1CEF1BAFF8B28A07F14DC04B3091832BF057628CE09478B4EC19A51AD825F70" |
| "F4659DBB4BF6B73E1710E5D203C94D3192B6CB0D5707C1CE275333057A0EB0DC3FBA4612A4" |
| "0346D7961A30BCEAA80E9A04E30F130728021E5E45BC5BA453C9EC3423CDE1634E4774FF8C" |
| "B410F9F71D06A98A3263D7DEA815E008BE417AC874FC1B30F0EE5A1B1A6457070331E0E007" |
| "AD472F621AC7317B59CD73B1677C35E70A2FB11EB9E246EB99C8B20C4F570078A6F8A68F48" |
| "15A4DDF3DD398EB705DAB069FA1586FBB4F8D4D9C1AEF4CF511C7288061804EE83556D6E75" |
| "BEFCED9498657080336B4BDF3F82A138515465343347754DA31975938A32E75B02973EA51B" |
| "ED4BA56BFB2950CF8A812BB48D6D661B1947550FE56838B7A35E2AB7E84A3A97A87C8CF09D" |
| "5A84E70AB1A7934A8154060A3CB34FEDACA5B8A6E46F584BF67C39E42331BB919E5653F51D" |
| "52C6EC57388D829A616796705417E489B2EB037D78F30EC5D379FF85F6A1AD87771127B7C2" |
| "449826BCB23F82B74438A75AFA7923052F50C3857F7054E843143916A3E7825FD3D56F4E01" |
| "B524723617FE0FBDB165C6E54927D814E3989CBAC1C9433580193E6A93D99ABB16EBC6BC78" |
| "093C10DE080140647F182FE2DD9A2E16E556631F75ACE1E0EC9844ABCDF663A9F2CFB3279A" |
| "58AC2501B7FBF6BE906408016D3D2021FFD47020FB1C5CB50D91C88B1C2CCB874D0557CD80" |
| "E31C74AF54C2F0032CF6C29D1E20D6643BE280C045E4D9F8DEF8DED56790C0411C8BED92DB" |
| "184EF09AAB9E2DB7F901C9BA103108DB2E92549CA87EFEC922DDE74C5FA5DBC59A8E2E8087" |
| "B69088373412AA1BE61897D9A757EAA35D895B281628DFAF285534F08B4273DA1C5A831957" |
| "07E6F9BDCF296A78BAB0206D19BF178CAC1732054361456E6312580023000B000504720000" |
| "00100018000B000300100020A93378E6A089B7211C8FBC62E33B3A566D0BDAB6544174FAB6" |
| "E389E582FE791300205CD6CD8DE23829D1F381A5B911F37F7DEA42026AA530185F8AA342B9" |
| "9A23FAD01ADE010A47304502210098F97D25A48732A8840D5F8C03BB81D8C322330E65B98E" |
| "C10C6FECA1AA195553022062967D53F1EB7192406A42B32820ADB1E8CE3C4D25DC967CFB68" |
| "DF377B0563441271FF54434780180022000B1EAEE68EAF1FF2E8A225B90D5505C1FFB8D550" |
| "55C72FFC3310A147EC101B9E200000026C684FBC42F45A80805DCEBFF9EAC7010FFB0F289B" |
| "1D64EA00000001000B0301000000203E48626DA845338A6560801F8EF5E2338BF8DFCF8596" |
| "AD107E228ADD67FC142A1A2023E14DD9BB51A50E16911F7E11DF1E1AAF0B17134DC739C565" |
| "3607A1EC8DD37A22F1010A483046022100D48A0C61983BA688E759A71BD1EDA90F6C3D9C94" |
| "6084C43AB9F2D2F36F4E5B7902210084258D17E6AE5515D83D0DC81BCD2D3E331CA8D23BFF" |
| "7B5FF83E58F69EF8F4DC1271FF54434780180022000B1EAEE68EAF1FF2E8A225B90D5505C1" |
| "FFB8D55055C72FFC3310A147EC101B9E200000026C684FBC42F51680805DCEBFF9EAC7010F" |
| "FB0F289B1D64EA00000001000B030200000020D73110549FD101849611D96BE29B2C3A3CB7" |
| "D511255E02547FE34989F5BCE8A91A20239E7396CAF5F0A15F73B05DA4E563FB00994A2362" |
| "0BD36E3E09C3DC15A41A612210534F52414B41205445535420313836392A20F2526B31A6C6" |
| "12D67D0BD0A950E5E2AA7AD0C88453E2CA5CCA68171E8A09DF5730023A910C128002147D15" |
| "D584C7B0E13DCC37B22ECA178AF874394218047ABC7560971F2A383C6A8B9A40EA3E50DC30" |
| "5AEA1152479F10B08A6E15A27D4E40B42EF67576C7D57CFE9A989C6F3F951FFEF53EA288AF" |
| "6F00ECA3E73E7F23E62DE8731D8E8142FF722F36C62D775E16C495169101866E2931CC047F" |
| "695B62F45B65D39406CC066794D9257843D30193C60240DB47B6E62FC5E8FCB9CAEAB3C771" |
| "8781DC7A6E67C95F3236C59C9D056D6E5C08F911A77B490D7B1685D6913FA274B0DA817192" |
| "DB8493E1B5C1CF11DA2FEDE897A18F1D827477A08A6FAF9AED6982C3B0F8F76404F2A7F380" |
| "F96FFED48607F6D1CE05569F0D7A7B82E53BF5A220DE42013289C12B38C97E1A10C17DA2A2" |
| "BEC08BF0CBE2231C4B32C1A0224051A8E8FBA907D354C01FF41CF02A76F24156E070C0DC27" |
| "F3BDAD3A4727A1AD360E0C4E7F1E7CBBE2F1782966AA3D09F40586E16469E62ACDB98D8D87" |
| "EFD054E02AB009B2871B7EC53100C0963200C1970976BB98E00B2B1DD34BCFA93D4E296292" |
| "13A2E5B267566168FD3B294C489192319DE80FA7096B7C5F4CE846F7573E6452EC2D2E7DC2" |
| "F7E92393B951644AC21D12B683A5A37F2DD5BCDA92B07EC40A000AAEDF4BC1E2A6EFF67A06" |
| "DACE9CD5886EAAAA1DED1EC841A9898450EE7381A373DDDCAD3D0A3CC708E94B363CE8E1A0" |
| "668B4376BF20DD08956E0EA0E650A9C3DAE60A308B251E075FB21E4DE4BA1FA5DFB5A431CF" |
| "87F18A531A349DECAB58A84A9F9FC2F39FB034ED29111E6A4AC9E27120CD8CA792281D564C" |
| "926D11B0596E9A7B2D030E14E65742096857C94699298D44A7F23C94DF1E145758E963D02E" |
| "B3ADC32217A6C5FBED82449ACD3391097D097353E4C837A766C8A3CFBDCD1E155983936DEC" |
| "FCF6CA4D86D4C2FE8ABE2C5908D8F5D34353348173AEB6EDB7524F1A3BE35718E3D3EE07FB" |
| "3777BF4A45086C935F87AB8F479D6BA51365E9D76319C68C6F5602BA4F9D95F22A0706C305" |
| "8A13C558D7603FAAF5089830E72893FCFB2CD35D680EF9742F6F023CFF5B9F68738FD583CC" |
| "67E055D5F30213119FBAAEEB45278DD0AB1776BA2113448FEB8E797314B5BFA0EBD7959A05" |
| "015DD18CBD2A3559E7312764A0E22A82E9F5EFACED52EE61024AB5EC3AC708E493885022EA" |
| "D0191B8DFEAB5633AA7620B1194EC970CD4A13F81A1A1BEC26ED46887D020BFDC6A95E0A50" |
| "37027EE096170927A262985A68F46E2F9A337AD7A828CF9FD3B054B42D76B885F0E8D31280" |
| "698B263E9ECB1103A2569D8F45E7CC0BE6A26AB0747B08C64033E501D812296314E3A5B118" |
| "9BBB5B442B260990D46C808C70FCDCF9D9DA4517741B88346FB79554378BE5556F9C6BBB24" |
| "19F638AD2CEE51B944ACF40B59618DAD3624DF82EA45FCDAC51B722BC1B490A490C503583A" |
| "EFB28435FD80944EB1B6592ABB452FD55B04C4DD89FDBBF92BC509337B50F18E406C4F1E54" |
| "1E77DAD0389982E9916DFE0AD4FBE0BD3D2E0A774B99BC003E0DBFF8454AB565E3D54A62FC" |
| "921FF9324BE4829B362BE5BA3231DF0482112BE4EDA8B2953A81425A78E142C08EAF7978DF" |
| "C595B696AFEDDB4EC85A1607952258E5255F79FE173898FF5658562634C1E75317DB91D055" |
| "784134018FE69DF9A7A6CC84EDCA6B485990415A8E48CD04ACA0C20E9993A5B7E2472AA9C1" |
| "AF94325B5999D9F267F9EA1FC18B003D97F56C1AB9DF3684C72AAA619A641BF72E0C2117E3" |
| "407CD1930E3E707CB93FDFA10E34A68282224B868157BE0C7560A381BEC6BB09ED38ADC924" |
| "009B6B7FF3A90F637D5E58EEDC4941B9D4F393490A2B4ABB7E95FA380734581BB546C9E442" |
| "B837975B687C1C01F15FFD4530DA36CFFDCE85BD76C486B9B909E212428452311BB91675FA" |
| "54FD5EAE933F6CFE21F0B1C82B0318A7457F6D04B317874464C3422BE7B5874BCF1DDB1818" |
| "1B173FC4BCC2503E0DF0703CB9D233240D31EEFAB06DC7C6A271E30DA90833A841AD1C979C" |
| "C624437F1FEE83CD4F88811B3C2E8318652FEB5E6D00E2D482563D4C082BC02B3A3823DD8E" |
| "FD4F0337165B51FE03CF3D98DB7D77D895A2A55A154D0D5658D363B90806C0622757B4B1AB" |
| "B3535718216D4B56068A52E160C5F4A79ECD2A9E6466A209CC21D4A2AC7B80BA606A2ABE41" |
| "486256E0211C0926E63167B011C904EE48BEAD3CDD4ACD32054361456E63"; |
| |
| } // namespace |
| |
| class PcaEnrollV2Test : public testing::Test { |
| public: |
| PcaEnrollV2Test() { |
| SetupEnrollRequestToVerify(); |
| pca_enroll_ = std::make_unique<fake_pca_agent::PcaEnrollV2>(request_); |
| } |
| ~PcaEnrollV2Test() override = default; |
| |
| protected: |
| attestation::AttestationEnrollmentRequest request_; |
| std::unique_ptr<fake_pca_agent::PcaEnrollV2> 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(PcaEnrollV2Test, Enroll) { |
| EXPECT_TRUE(pca_enroll_->Preprocess()); |
| EXPECT_TRUE(pca_enroll_->Verify()); |
| EXPECT_TRUE(pca_enroll_->Generate()); |
| } |
| |
| } // namespace hwsec_test_utils |