Android-cuttlefish cvd tool
Public Member Functions | Private Attributes | List of all members
cuttlefish::ProxyKeymasterContext Class Reference

#include <proxy_keymaster_context.h>

Inheritance diagram for cuttlefish::ProxyKeymasterContext:
Inheritance graph
[legend]
Collaboration diagram for cuttlefish::ProxyKeymasterContext:
Collaboration graph
[legend]

Public Member Functions

 ProxyKeymasterContext (KeymasterContext &wrapped)
 
 ~ProxyKeymasterContext ()=default
 
keymaster::KmVersion GetKmVersion () const override
 
keymaster_error_t SetSystemVersion (uint32_t os_version, uint32_t os_patchlevel) override
 
void GetSystemVersion (uint32_t *os_version, uint32_t *os_patchlevel) const override
 
const keymaster::KeyFactory * GetKeyFactory (keymaster_algorithm_t algorithm) const override
 
const keymaster::OperationFactory * GetOperationFactory (keymaster_algorithm_t algorithm, keymaster_purpose_t purpose) const override
 
const keymaster_algorithm_t * GetSupportedAlgorithms (size_t *algorithms_count) const override
 
keymaster_error_t UpgradeKeyBlob (const keymaster::KeymasterKeyBlob &key_to_upgrade, const keymaster::AuthorizationSet &upgrade_params, keymaster::KeymasterKeyBlob *upgraded_key) const override
 
keymaster_error_t ParseKeyBlob (const keymaster::KeymasterKeyBlob &blob, const keymaster::AuthorizationSet &additional_params, keymaster::UniquePtr< keymaster::Key > *key) const override
 
keymaster_error_t AddRngEntropy (const uint8_t *buf, size_t length) const override
 
keymaster::KeymasterEnforcement * enforcement_policy () override
 
keymaster::AttestationContext * attestation_context () override
 
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
 
keymaster::CertificateChain GenerateSelfSignedCertificate (const keymaster::Key &key, const keymaster::AuthorizationSet &cert_params, bool fake_signature, keymaster_error_t *error) const override
 
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
 
keymaster_error_t CheckConfirmationToken (const std::uint8_t *input_data, size_t input_data_size, const uint8_t confirmation_token[keymaster::kConfirmationTokenSize]) const
 
keymaster::RemoteProvisioningContext * GetRemoteProvisioningContext () const override
 
keymaster_error_t SetVendorPatchlevel (uint32_t vendor_patchlevel) override
 
keymaster_error_t SetBootPatchlevel (uint32_t boot_patchlevel) override
 
keymaster_error_t SetVerifiedBootInfo (std::string_view verified_boot_state, std::string_view bootloader_state, const std::vector< uint8_t > &vbmeta_digest)
 
std::optional< uint32_t > GetVendorPatchlevel () const override
 
std::optional< uint32_t > GetBootPatchlevel () const override
 
keymaster_error_t SetAttestationIds (const keymaster::SetAttestationIdsRequest &request) override
 
keymaster_error_t SetAttestationIdsKM3 (const keymaster::SetAttestationIdsKM3Request &request) override
 

Private Attributes

KeymasterContext & wrapped_
 

Detailed Description

Implementation of KeymasterContext that proxies to another implementation.

Because AndroidKeymaster wraps a KeymasterContext and puts it into a unique pointer, it doesn't let the implementer manage the lifetime of the KeymasterContext implementation. This proxy breaks that relationship, and allows the lifetimes to be distinct as long as the KeymasterContext instance outlives the AndroidKeymaster instance.

Constructor & Destructor Documentation

◆ ProxyKeymasterContext()

cuttlefish::ProxyKeymasterContext::ProxyKeymasterContext ( KeymasterContext &  wrapped)
inline

◆ ~ProxyKeymasterContext()

cuttlefish::ProxyKeymasterContext::~ProxyKeymasterContext ( )
default

Member Function Documentation

◆ AddRngEntropy()

keymaster_error_t cuttlefish::ProxyKeymasterContext::AddRngEntropy ( const uint8_t *  buf,
size_t  length 
) const
inlineoverride

◆ attestation_context()

keymaster::AttestationContext * cuttlefish::ProxyKeymasterContext::attestation_context ( )
inlineoverride

◆ CheckConfirmationToken()

keymaster_error_t cuttlefish::ProxyKeymasterContext::CheckConfirmationToken ( const std::uint8_t *  input_data,
size_t  input_data_size,
const uint8_t  confirmation_token[keymaster::kConfirmationTokenSize] 
) const
inline

◆ enforcement_policy()

keymaster::KeymasterEnforcement * cuttlefish::ProxyKeymasterContext::enforcement_policy ( )
inlineoverride

◆ GenerateAttestation()

keymaster::CertificateChain cuttlefish::ProxyKeymasterContext::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
inlineoverride

◆ GenerateSelfSignedCertificate()

keymaster::CertificateChain cuttlefish::ProxyKeymasterContext::GenerateSelfSignedCertificate ( const keymaster::Key &  key,
const keymaster::AuthorizationSet &  cert_params,
bool  fake_signature,
keymaster_error_t *  error 
) const
inlineoverride

◆ GetBootPatchlevel()

std::optional< uint32_t > cuttlefish::ProxyKeymasterContext::GetBootPatchlevel ( ) const
inlineoverride

◆ GetKeyFactory()

const keymaster::KeyFactory * cuttlefish::ProxyKeymasterContext::GetKeyFactory ( keymaster_algorithm_t  algorithm) const
inlineoverride

◆ GetKmVersion()

keymaster::KmVersion cuttlefish::ProxyKeymasterContext::GetKmVersion ( ) const
inlineoverride

◆ GetOperationFactory()

const keymaster::OperationFactory * cuttlefish::ProxyKeymasterContext::GetOperationFactory ( keymaster_algorithm_t  algorithm,
keymaster_purpose_t  purpose 
) const
inlineoverride

◆ GetRemoteProvisioningContext()

keymaster::RemoteProvisioningContext * cuttlefish::ProxyKeymasterContext::GetRemoteProvisioningContext ( ) const
inlineoverride

◆ GetSupportedAlgorithms()

const keymaster_algorithm_t * cuttlefish::ProxyKeymasterContext::GetSupportedAlgorithms ( size_t *  algorithms_count) const
inlineoverride

◆ GetSystemVersion()

void cuttlefish::ProxyKeymasterContext::GetSystemVersion ( uint32_t *  os_version,
uint32_t *  os_patchlevel 
) const
inlineoverride

◆ GetVendorPatchlevel()

std::optional< uint32_t > cuttlefish::ProxyKeymasterContext::GetVendorPatchlevel ( ) const
inlineoverride

◆ ParseKeyBlob()

keymaster_error_t cuttlefish::ProxyKeymasterContext::ParseKeyBlob ( const keymaster::KeymasterKeyBlob &  blob,
const keymaster::AuthorizationSet &  additional_params,
keymaster::UniquePtr< keymaster::Key > *  key 
) const
inlineoverride

◆ SetAttestationIds()

keymaster_error_t cuttlefish::ProxyKeymasterContext::SetAttestationIds ( const keymaster::SetAttestationIdsRequest &  request)
inlineoverride

◆ SetAttestationIdsKM3()

keymaster_error_t cuttlefish::ProxyKeymasterContext::SetAttestationIdsKM3 ( const keymaster::SetAttestationIdsKM3Request &  request)
inlineoverride

◆ SetBootPatchlevel()

keymaster_error_t cuttlefish::ProxyKeymasterContext::SetBootPatchlevel ( uint32_t  boot_patchlevel)
inlineoverride

◆ SetSystemVersion()

keymaster_error_t cuttlefish::ProxyKeymasterContext::SetSystemVersion ( uint32_t  os_version,
uint32_t  os_patchlevel 
)
inlineoverride

◆ SetVendorPatchlevel()

keymaster_error_t cuttlefish::ProxyKeymasterContext::SetVendorPatchlevel ( uint32_t  vendor_patchlevel)
inlineoverride

◆ SetVerifiedBootInfo()

keymaster_error_t cuttlefish::ProxyKeymasterContext::SetVerifiedBootInfo ( std::string_view  verified_boot_state,
std::string_view  bootloader_state,
const std::vector< uint8_t > &  vbmeta_digest 
)
inline

◆ UnwrapKey()

keymaster_error_t cuttlefish::ProxyKeymasterContext::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
inlineoverride

◆ UpgradeKeyBlob()

keymaster_error_t cuttlefish::ProxyKeymasterContext::UpgradeKeyBlob ( const keymaster::KeymasterKeyBlob &  key_to_upgrade,
const keymaster::AuthorizationSet &  upgrade_params,
keymaster::KeymasterKeyBlob *  upgraded_key 
) const
inlineoverride

Member Data Documentation

◆ wrapped_

KeymasterContext& cuttlefish::ProxyKeymasterContext::wrapped_
private

The documentation for this class was generated from the following file: