Android-cuttlefish cvd tool
tpm_attestation_record.h
Go to the documentation of this file.
1//
2// Copyright (C) 2020 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <cstdint>
19#include <memory>
20#include <optional>
21#include <string>
22#include <string_view>
23#include <vector>
24
25#include <keymaster/android_keymaster_messages.h>
26#include <keymaster/attestation_context.h>
27
28namespace cuttlefish {
29
31 std::vector<uint8_t> brand;
32 std::vector<uint8_t> device;
33 std::vector<uint8_t> product;
34 std::vector<uint8_t> serial;
35 std::vector<uint8_t> imei;
36 std::vector<uint8_t> meid;
37 std::vector<uint8_t> manufacturer;
38 std::vector<uint8_t> model;
39 std::vector<uint8_t> second_imei;
40};
41
42class TpmAttestationRecordContext : public keymaster::AttestationContext {
43public:
46
47 keymaster_security_level_t GetSecurityLevel() const override;
48 keymaster_error_t VerifyAndCopyDeviceIds(
49 const keymaster::AuthorizationSet&,
50 keymaster::AuthorizationSet*) const override;
51 keymaster::Buffer GenerateUniqueId(uint64_t, const keymaster_blob_t&, bool,
52 keymaster_error_t*) const override;
54 keymaster_error_t* error) const override;
55 keymaster::KeymasterKeyBlob GetAttestationKey(
56 keymaster_algorithm_t algorithm, keymaster_error_t* error) const override;
57 keymaster::CertificateChain GetAttestationChain(
58 keymaster_algorithm_t algorithm, keymaster_error_t* error) const override;
59 void SetVerifiedBootInfo(std::string_view verified_boot_state,
60 std::string_view bootloader_state,
61 const std::vector<uint8_t>& vbmeta_digest);
62 keymaster_error_t SetAttestationIds(
63 const keymaster::SetAttestationIdsRequest& request);
64 keymaster_error_t SetAttestationIdsKM3(
65 const keymaster::SetAttestationIdsKM3Request& request);
66
67private:
68 std::vector<uint8_t> vbmeta_digest_;
70 std::vector<uint8_t> unique_id_hbk_;
72};
73
74} // namespace cuttlefish
Definition: tpm_attestation_record.h:42
keymaster_error_t SetAttestationIdsKM3(const keymaster::SetAttestationIdsKM3Request &request)
Definition: tpm_attestation_record.cpp:198
keymaster::Buffer GenerateUniqueId(uint64_t, const keymaster_blob_t &, bool, keymaster_error_t *) const override
Definition: tpm_attestation_record.cpp:134
keymaster::CertificateChain GetAttestationChain(keymaster_algorithm_t algorithm, keymaster_error_t *error) const override
Definition: tpm_attestation_record.cpp:157
AttestationIds attestation_ids_
Definition: tpm_attestation_record.h:71
keymaster::KeymasterKeyBlob GetAttestationKey(keymaster_algorithm_t algorithm, keymaster_error_t *error) const override
Definition: tpm_attestation_record.cpp:151
keymaster_error_t VerifyAndCopyDeviceIds(const keymaster::AuthorizationSet &, keymaster::AuthorizationSet *) const override
Definition: tpm_attestation_record.cpp:68
const VerifiedBootParams * GetVerifiedBootParams(keymaster_error_t *error) const override
Definition: tpm_attestation_record.cpp:144
TpmAttestationRecordContext()
Definition: tpm_attestation_record.cpp:46
std::vector< uint8_t > unique_id_hbk_
Definition: tpm_attestation_record.h:70
keymaster_security_level_t GetSecurityLevel() const override
Definition: tpm_attestation_record.cpp:53
void SetVerifiedBootInfo(std::string_view verified_boot_state, std::string_view bootloader_state, const std::vector< uint8_t > &vbmeta_digest)
Definition: tpm_attestation_record.cpp:162
std::vector< uint8_t > vbmeta_digest_
Definition: tpm_attestation_record.h:68
VerifiedBootParams vb_params_
Definition: tpm_attestation_record.h:69
keymaster_error_t SetAttestationIds(const keymaster::SetAttestationIdsRequest &request)
Definition: tpm_attestation_record.cpp:182
#define error(format, args...)
Definition: fec_private.h:201
keymaster::AttestationContext::VerifiedBootParams VerifiedBootParams
Definition: tpm_attestation_record.cpp:28
Definition: alloc_utils.cpp:23
Definition: tpm_attestation_record.h:30
std::vector< uint8_t > manufacturer
Definition: tpm_attestation_record.h:37
std::vector< uint8_t > meid
Definition: tpm_attestation_record.h:36
std::vector< uint8_t > second_imei
Definition: tpm_attestation_record.h:39
std::vector< uint8_t > device
Definition: tpm_attestation_record.h:32
std::vector< uint8_t > imei
Definition: tpm_attestation_record.h:35
std::vector< uint8_t > model
Definition: tpm_attestation_record.h:38
std::vector< uint8_t > product
Definition: tpm_attestation_record.h:33
std::vector< uint8_t > brand
Definition: tpm_attestation_record.h:31
std::vector< uint8_t > serial
Definition: tpm_attestation_record.h:34