21#include <keymaster/keymaster_context.h>
22#include <keymaster/km_openssl/attestation_record.h>
28class TpmAttestationRecordContext;
29class TpmResourceManager;
32class TpmRemoteProvisioningContext;
48 std::map<keymaster_algorithm_t, std::unique_ptr<keymaster::KeyFactory>>
68 uint32_t os_patchlevel)
override;
70 uint32_t* os_patchlevel)
const override;
73 keymaster_algorithm_t algorithm)
const override;
75 keymaster_algorithm_t algorithm,
76 keymaster_purpose_t purpose)
const override;
78 size_t* algorithms_count)
const override;
81 const keymaster::KeymasterKeyBlob& key_to_upgrade,
82 const keymaster::AuthorizationSet& upgrade_params,
83 keymaster::KeymasterKeyBlob* upgraded_key)
const override;
86 const keymaster::KeymasterKeyBlob& blob,
87 const keymaster::AuthorizationSet& additional_params,
88 keymaster::UniquePtr<keymaster::Key>* key)
const override;
91 size_t length)
const override;
100 const keymaster::Key& key,
101 const keymaster::AuthorizationSet& attest_params,
102 keymaster::UniquePtr<keymaster::Key> attest_key,
103 const keymaster::KeymasterBlob& issuer_subject,
104 keymaster_error_t*
error)
const override;
107 const keymaster::Key& key,
const keymaster::AuthorizationSet& cert_params,
108 bool fake_signature, keymaster_error_t*
error)
const override;
111 const keymaster::KeymasterKeyBlob& wrapped_key_blob,
112 const keymaster::KeymasterKeyBlob& wrapping_key_blob,
113 const keymaster::AuthorizationSet& wrapping_key_params,
114 const keymaster::KeymasterKeyBlob& masking_key,
115 keymaster::AuthorizationSet* wrapped_key_params,
116 keymaster_key_format_t* wrapped_key_format,
117 keymaster::KeymasterKeyBlob* wrapped_key_material)
const override;
120 const std::uint8_t* input_data,
size_t input_data_size,
121 const uint8_t confirmation_token[keymaster::kConfirmationTokenSize])
128 std::string_view verified_boot_state, std::string_view bootloader_state,
129 const std::vector<uint8_t>& vbmeta_digest)
override;
137 const keymaster::SetAttestationIdsRequest& request)
override {
142 const keymaster::SetAttestationIdsKM3Request& request)
override {
Definition: tpm_keymaster_context.h:40
std::optional< std::vector< uint8_t > > vbmeta_digest_
Definition: tpm_keymaster_context.h:57
std::unique_ptr< TpmRandomSource > random_source_
Definition: tpm_keymaster_context.h:45
keymaster_error_t CheckConfirmationToken(const std::uint8_t *input_data, size_t input_data_size, const uint8_t confirmation_token[keymaster::kConfirmationTokenSize]) const
Definition: tpm_keymaster_context.cpp:576
uint32_t os_patchlevel_
Definition: tpm_keymaster_context.h:52
keymaster_error_t SetVendorPatchlevel(uint32_t vendor_patchlevel) override
Definition: tpm_keymaster_context.cpp:648
std::map< keymaster_algorithm_t, std::unique_ptr< keymaster::KeyFactory > > key_factories_
Definition: tpm_keymaster_context.h:49
std::optional< uint32_t > GetVendorPatchlevel() const override
Definition: tpm_keymaster_context.cpp:678
uint32_t os_version_
Definition: tpm_keymaster_context.h:51
void GetSystemVersion(uint32_t *os_version, uint32_t *os_patchlevel) const override
Definition: tpm_keymaster_context.cpp:115
std::optional< uint32_t > boot_patchlevel_
Definition: tpm_keymaster_context.h:54
std::optional< std::string > bootloader_state_
Definition: tpm_keymaster_context.h:55
keymaster_error_t SetVerifiedBootInfo(std::string_view verified_boot_state, std::string_view bootloader_state, const std::vector< uint8_t > &vbmeta_digest) override
Definition: tpm_keymaster_context.cpp:614
keymaster_error_t SetBootPatchlevel(uint32_t boot_patchlevel) override
Definition: tpm_keymaster_context.cpp:663
std::vector< keymaster_algorithm_t > supported_algorithms_
Definition: tpm_keymaster_context.h:50
keymaster::OperationFactory * GetOperationFactory(keymaster_algorithm_t algorithm, keymaster_purpose_t purpose) const override
Definition: tpm_keymaster_context.cpp:131
keymaster_error_t SetAttestationIds(const keymaster::SetAttestationIdsRequest &request) override
Definition: tpm_keymaster_context.h:136
keymaster::CertificateChain GenerateAttestation(const keymaster::Key &key, const keymaster::AuthorizationSet &attest_params, keymaster::UniquePtr< keymaster::Key > attest_key, const keymaster::KeymasterBlob &issuer_subject, keymaster_error_t *error) const override
Definition: tpm_keymaster_context.cpp:281
const keymaster_algorithm_t * GetSupportedAlgorithms(size_t *algorithms_count) const override
Definition: tpm_keymaster_context.cpp:147
keymaster_error_t ParseKeyBlob(const keymaster::KeymasterKeyBlob &blob, const keymaster::AuthorizationSet &additional_params, keymaster::UniquePtr< keymaster::Key > *key) const override
Definition: tpm_keymaster_context.cpp:233
keymaster::RemoteProvisioningContext * GetRemoteProvisioningContext() const override
Definition: tpm_keymaster_context.cpp:599
keymaster::AttestationContext * attestation_context() override
Definition: tpm_keymaster_context.h:95
std::unique_ptr< TpmAttestationRecordContext > attestation_context_
Definition: tpm_keymaster_context.h:46
keymaster_error_t SetSystemVersion(uint32_t os_version, uint32_t os_patchlevel) override
Definition: tpm_keymaster_context.cpp:105
~TpmKeymasterContext()=default
keymaster_error_t SetAttestationIdsKM3(const keymaster::SetAttestationIdsKM3Request &request) override
Definition: tpm_keymaster_context.h:141
std::unique_ptr< TpmKeyBlobMaker > key_blob_maker_
Definition: tpm_keymaster_context.h:44
const keymaster::KeyFactory * GetKeyFactory(keymaster_algorithm_t algorithm) const override
Definition: tpm_keymaster_context.cpp:121
std::unique_ptr< TpmRemoteProvisioningContext > remote_provisioning_context_
Definition: tpm_keymaster_context.h:47
keymaster::KeymasterEnforcement & enforcement_
Definition: tpm_keymaster_context.h:43
TpmResourceManager & resource_manager_
Definition: tpm_keymaster_context.h:42
keymaster_error_t UnwrapKey(const keymaster::KeymasterKeyBlob &wrapped_key_blob, const keymaster::KeymasterKeyBlob &wrapping_key_blob, const keymaster::AuthorizationSet &wrapping_key_params, const keymaster::KeymasterKeyBlob &masking_key, keymaster::AuthorizationSet *wrapped_key_params, keymaster_key_format_t *wrapped_key_format, keymaster::KeymasterKeyBlob *wrapped_key_material) const override
Definition: tpm_keymaster_context.cpp:357
keymaster::KmVersion GetKmVersion() const override
Definition: tpm_keymaster_context.h:63
keymaster_error_t UpgradeKeyBlob(const keymaster::KeymasterKeyBlob &key_to_upgrade, const keymaster::AuthorizationSet &upgrade_params, keymaster::KeymasterKeyBlob *upgraded_key) const override
Definition: tpm_keymaster_context.cpp:182
keymaster::CertificateChain GenerateSelfSignedCertificate(const keymaster::Key &key, const keymaster::AuthorizationSet &cert_params, bool fake_signature, keymaster_error_t *error) const override
Definition: tpm_keymaster_context.cpp:332
TpmKeymasterContext(TpmResourceManager &, keymaster::KeymasterEnforcement &)
Definition: tpm_keymaster_context.cpp:77
std::optional< uint32_t > vendor_patchlevel_
Definition: tpm_keymaster_context.h:53
keymaster::KeymasterEnforcement * enforcement_policy() override
Definition: tpm_keymaster_context.cpp:274
std::optional< std::string > verified_boot_state_
Definition: tpm_keymaster_context.h:56
std::optional< uint32_t > GetBootPatchlevel() const override
Definition: tpm_keymaster_context.cpp:682
keymaster_error_t AddRngEntropy(const uint8_t *buf, size_t length) const override
Definition: tpm_keymaster_context.cpp:269
Definition: tpm_resource_manager.h:50
#define error(format, args...)
Definition: fec_private.h:201
Definition: alloc_utils.cpp:23