blob: 0b9b0fc7323c3bc69c03a6d71dce3d6600762371 [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_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