| // 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_certify_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 cert request from a real DUT. |
| constexpr char kCertRequestInHex[] = |
| "0ABE043082023A308201220202250F300D06092A864886F70D01010505003048310B300906" |
| "035504061302435231253023060355040A0C1C4174746573746174696F6E204C6F63616C20" |
| "5465737420496E6672613112301006035504030C096C6F63616C686F7374301E170D323030" |
| "3531343038313830325A170D3230303531353038313830325A3048310B3009060355040613" |
| "02435231253023060355040A0C1C4174746573746174696F6E204C6F63616C205465737420" |
| "496E6672613112301006035504030C096C6F63616C686F73743059301306072A8648CE3D02" |
| "0106082A8648CE3D03010703420004595CE669CD3D9A3B5D9CBF88EA41685C60F192F2F6CF" |
| "89B92B4897C200671C397D25EB6CDD7D4D88492EAC63916C910A3C20B5253A5E98015CB002" |
| "FD873FC8B8300D06092A864886F70D0101050500038201010044344BC56105A008C14792AF" |
| "16446A589BE252922655438DF1EBF1B485A9A9D329A6A76DED829C9CC49CA159F592DBD8E6" |
| "0E52FA508016DFBC9947B77A43EEE65DB099F29ECEBE7FEC0AC20C085D52FE37E8F2852839" |
| "1A44D12ED776B18D9DDB5CF9F28AD4EB86756321A88EE0416E19E89F3B807882B7C1EC1536" |
| "B1311AC2E6B1305E4C6494B034F6A14EFB810ECE852B7341FDD66AAAA688DFB98148EED002" |
| "6C4BE88859A603C01B39EB3A2A0DBF92411DF93F7E40F343F69B75E0CB234B15FC86AB38D2" |
| "18A0E6F87A6D8A3E92CF4AEBC983D9542BBFD7CAD9C7F9FA56035C702E61A5FFFECE6EA5A5" |
| "3D60AB80F42CB60EFF67EF14C381513B8922F6003F271A96020001000B0004047200000010" |
| "00100800000000000100BCD564598AB9CA22DF5976CB6E0C6A54BEA3E423C063B707C14A9C" |
| "12FEFDE1DE4B5A466A820F96722B55C9A8C20AEA5BE87E0B2CCA952B768BE66B4C2A0932CF" |
| "456B8F781BEB781B742A9CF2B78DC6CD4A3E77079FA6FBE1A95A8A46F0F4F90DCD93B4DF71" |
| "5BCDDF39C3FC2A04BE3A6C23A283BFDF6340981EEB1A4325AD09CC7D7447EA4D9FD4345043" |
| "CB43E0E895E7A1E687D4C6A81DDEB3597851CB821597E3BF3BFF831E4B4A8C97446C296B9A" |
| "059DF9E31D7ED1F4C89912CC367F1793AA5E6D17E8B74DFE7F2C028638F92FBED040CE0A24" |
| "19720646C716B328157DA4E972826DE41A7445972807C8472849A0DB2FE756552AFB8D0D89" |
| "F1D4631E478F6922A101FF54434780170022000B683E138E6F387DE1C238C1CB7EEBA04807" |
| "4AF34DA49E54CEEAC1F415260AD1CE00143B04E4AB59D6FCFE4D208C818A6EC5A6D55B543C" |
| "02BF6B73A4BADEB0AA475B04AF956FAA01FE7D8A21EBAE8F1E0022000BCE44882446451FD3" |
| "BB7D9BD3F16FD717B9EAD32BD18CF391C7BE46F839CF30260022000B15CAB16007E29654A9" |
| "E6059A566BA716EB22EC989A63A14E529CB8EF0CE35AB12A473045022036F49EE597116C24" |
| "E41CAE491D9BE248833FE6948520259593D4190AD1E755A4022100CD1339072B90EFF7F0A6" |
| "26E9FCEF74EA8142E823D5865F41B5E3E286370B82645214898D625D003C32C0BF31F47F8E" |
| "A91CE36328D10E58017002"; |
| } // namespace |
| |
| class PcaCertifyV2Test : public testing::Test { |
| public: |
| PcaCertifyV2Test() { |
| SetupCertRequestToVerify(); |
| pca_certify_ = std::make_unique<fake_pca_agent::PcaCertifyV2>(request_); |
| } |
| ~PcaCertifyV2Test() override = default; |
| |
| protected: |
| attestation::AttestationCertificateRequest request_; |
| std::unique_ptr<fake_pca_agent::PcaCertifyV2> pca_certify_; |
| |
| void SetupCertRequestToVerify() { |
| std::vector<uint8_t> output; |
| ASSERT_TRUE(base::HexStringToBytes(kCertRequestInHex, &output)); |
| ASSERT_TRUE( |
| request_.ParseFromString(std::string(output.begin(), output.end()))); |
| } |
| }; |
| |
| TEST_F(PcaCertifyV2Test, Certify) { |
| EXPECT_TRUE(pca_certify_->Preprocess()); |
| EXPECT_TRUE(pca_certify_->Verify()); |
| EXPECT_TRUE(pca_certify_->Generate()); |
| } |
| |
| } // namespace hwsec_test_utils |