CCF
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions
ccf::pal Namespace Reference

Namespaces

namespace  snp
 

Classes

class  AttestationCollateralFetchingTimeout
 
struct  AttestationMeasurement
 
struct  AttestationReportData
 
struct  is_attestation_measurement
 
struct  is_attestation_measurement< AttestationMeasurement< N, Tag > >
 
struct  MallocInfo
 
struct  PlatformAttestationMeasurement
 
struct  PlatformAttestationReportData
 
struct  UVMEndorsements
 

Typedefs

using RetrieveEndorsementCallback = std::function< void(const QuoteInfo &quote_info, const snp::EndorsementEndpointsConfiguration &config)>
 
using Mutex = std::mutex
 
using VirtualAttestationMeasurement = std::string
 
using SgxAttestationMeasurement = AttestationMeasurement< sgx_attestation_measurement_size >
 
using SnpAttestationMeasurement = AttestationMeasurement< snp_attestation_measurement_size >
 
using VirtualAttestationReportData = AttestationReportData< virtual_attestation_report_data_size >
 
using SgxAttestationReportData = AttestationReportData< sgx_attestation_report_data_size >
 
using SnpAttestationReportData = AttestationReportData< snp_attestation_report_data_size >
 
using Unique_ASN1_OBJECT = ccf::crypto::OpenSSL::Unique_SSL_OBJECT< ASN1_OBJECT, ASN1_OBJECT_new, ASN1_OBJECT_free >
 
using Unique_ASN1_INTEGER = ccf::crypto::OpenSSL::Unique_SSL_OBJECT< ASN1_INTEGER, ASN1_INTEGER_new, ASN1_INTEGER_free >
 

Enumerations

enum class  Platform : uint8_t { SGX = 0 , SNP = 1 , Virtual = 2 , Unknown = 3 }
 

Functions

void verify_virtual_attestation_report (const QuoteInfo &quote_info, PlatformAttestationMeasurement &measurement, PlatformAttestationReportData &report_data)
 
void verify_snp_attestation_report (const QuoteInfo &quote_info, PlatformAttestationMeasurement &measurement, PlatformAttestationReportData &report_data)
 
void verify_quote (const QuoteInfo &quote_info, PlatformAttestationMeasurement &measurement, PlatformAttestationReportData &report_data)
 
template<size_t N, typename Tag = void>
void to_json (nlohmann::json &j, const AttestationMeasurement< N, Tag > &measurement)
 
template<size_t N, typename Tag = void>
void from_json (const nlohmann::json &j, AttestationMeasurement< N, Tag > &measurement)
 
template<size_t N, typename Tag = void>
void fill_json_schema (nlohmann::json &schema, const AttestationMeasurement< N, Tag > *measurement_type)
 
std::string schema_name (const SgxAttestationMeasurement *sgx_measurement_type)
 
std::string schema_name (const SnpAttestationMeasurement *snp_measurement_type)
 
 DECLARE_JSON_TYPE (PlatformAttestationMeasurement)
 
 DECLARE_JSON_REQUIRED_FIELDS (PlatformAttestationMeasurement, data)
 
 DECLARE_JSON_ENUM (Platform, {{Platform::SGX, "SGX"}, {Platform::SNP, "SNP"}, {Platform::Virtual, "Virtual"}, {Platform::Unknown, "Unknown"}})
 
 DECLARE_JSON_TYPE (UVMEndorsements)
 
 DECLARE_JSON_REQUIRED_FIELDS (UVMEndorsements, did, feed, svn)
 
UVMEndorsements verify_uvm_endorsements_descriptor (const std::vector< uint8_t > &uvm_endorsements_raw, const pal::PlatformAttestationMeasurement &uvm_measurement)
 
std::optional< long > get_integer_from_cert_extensions (const ccf::crypto::OpenSSL::Unique_X509 &x509, const std::string &oid)
 
std::optional< snp::TcbVersionRawget_milan_genoa_tcb_from_cert (const crypto::Pem &vcek_leaf_cert)
 
std::optional< snp::TcbVersionRawget_turin_tcb_from_cert (const crypto::Pem &vcek_leaf_cert)
 
std::optional< snp::TcbVersionRawget_endorsed_tcb_from_cert (snp::ProductName product, const crypto::Pem &vcek_leaf_cert)
 
std::optional< std::vector< uint8_t > > get_endorsed_chip_id_from_cert (const crypto::Pem &vcek_leaf_cert)
 

Typedef Documentation

◆ Mutex

using ccf::pal::Mutex = typedef std::mutex

Virtual enclaves and the host code share the same PAL.

◆ RetrieveEndorsementCallback

using ccf::pal::RetrieveEndorsementCallback = typedef std::function<void( const QuoteInfo& quote_info, const snp::EndorsementEndpointsConfiguration& config)>

◆ SgxAttestationMeasurement

using ccf::pal::SgxAttestationMeasurement = typedef AttestationMeasurement<sgx_attestation_measurement_size>

◆ SgxAttestationReportData

using ccf::pal::SgxAttestationReportData = typedef AttestationReportData<sgx_attestation_report_data_size>

◆ SnpAttestationMeasurement

using ccf::pal::SnpAttestationMeasurement = typedef AttestationMeasurement<snp_attestation_measurement_size>

◆ SnpAttestationReportData

using ccf::pal::SnpAttestationReportData = typedef AttestationReportData<snp_attestation_report_data_size>

◆ Unique_ASN1_INTEGER

using ccf::pal::Unique_ASN1_INTEGER = typedef ccf::crypto::OpenSSL:: Unique_SSL_OBJECT<ASN1_INTEGER, ASN1_INTEGER_new, ASN1_INTEGER_free>

◆ Unique_ASN1_OBJECT

using ccf::pal::Unique_ASN1_OBJECT = typedef ccf::crypto::OpenSSL:: Unique_SSL_OBJECT<ASN1_OBJECT, ASN1_OBJECT_new, ASN1_OBJECT_free>

◆ VirtualAttestationMeasurement

using ccf::pal::VirtualAttestationMeasurement = typedef std::string

◆ VirtualAttestationReportData

using ccf::pal::VirtualAttestationReportData = typedef AttestationReportData<virtual_attestation_report_data_size>

Enumeration Type Documentation

◆ Platform

enum class ccf::pal::Platform : uint8_t
strong
Enumerator
SGX 
SNP 
Virtual 
Unknown 

Function Documentation

◆ DECLARE_JSON_ENUM()

ccf::pal::DECLARE_JSON_ENUM ( Platform  ,
{{Platform::SGX, "SGX"}, {Platform::SNP, "SNP"}, {Platform::Virtual, "Virtual"}, {Platform::Unknown, "Unknown"}}   
)

◆ DECLARE_JSON_REQUIRED_FIELDS() [1/2]

ccf::pal::DECLARE_JSON_REQUIRED_FIELDS ( PlatformAttestationMeasurement  ,
data   
)

◆ DECLARE_JSON_REQUIRED_FIELDS() [2/2]

ccf::pal::DECLARE_JSON_REQUIRED_FIELDS ( UVMEndorsements  ,
did  ,
feed  ,
svn   
)

◆ DECLARE_JSON_TYPE() [1/2]

ccf::pal::DECLARE_JSON_TYPE ( PlatformAttestationMeasurement  )

◆ DECLARE_JSON_TYPE() [2/2]

ccf::pal::DECLARE_JSON_TYPE ( UVMEndorsements  )

◆ fill_json_schema()

template<size_t N, typename Tag = void>
void ccf::pal::fill_json_schema ( nlohmann::json &  schema,
const AttestationMeasurement< N, Tag > *  measurement_type 
)
inline

◆ from_json()

template<size_t N, typename Tag = void>
void ccf::pal::from_json ( const nlohmann::json &  j,
AttestationMeasurement< N, Tag > &  measurement 
)
inline

◆ get_endorsed_chip_id_from_cert()

std::optional< std::vector< uint8_t > > ccf::pal::get_endorsed_chip_id_from_cert ( const crypto::Pem vcek_leaf_cert)

◆ get_endorsed_tcb_from_cert()

std::optional< snp::TcbVersionRaw > ccf::pal::get_endorsed_tcb_from_cert ( snp::ProductName  product,
const crypto::Pem vcek_leaf_cert 
)

◆ get_integer_from_cert_extensions()

std::optional< long > ccf::pal::get_integer_from_cert_extensions ( const ccf::crypto::OpenSSL::Unique_X509 x509,
const std::string &  oid 
)

◆ get_milan_genoa_tcb_from_cert()

std::optional< snp::TcbVersionRaw > ccf::pal::get_milan_genoa_tcb_from_cert ( const crypto::Pem vcek_leaf_cert)

◆ get_turin_tcb_from_cert()

std::optional< snp::TcbVersionRaw > ccf::pal::get_turin_tcb_from_cert ( const crypto::Pem vcek_leaf_cert)

◆ schema_name() [1/2]

std::string ccf::pal::schema_name ( const SgxAttestationMeasurement sgx_measurement_type)
inline

◆ schema_name() [2/2]

std::string ccf::pal::schema_name ( const SnpAttestationMeasurement snp_measurement_type)
inline

◆ to_json()

template<size_t N, typename Tag = void>
void ccf::pal::to_json ( nlohmann::json &  j,
const AttestationMeasurement< N, Tag > &  measurement 
)
inline

◆ verify_quote()

void ccf::pal::verify_quote ( const QuoteInfo quote_info,
PlatformAttestationMeasurement measurement,
PlatformAttestationReportData report_data 
)

◆ verify_snp_attestation_report()

void ccf::pal::verify_snp_attestation_report ( const QuoteInfo quote_info,
PlatformAttestationMeasurement measurement,
PlatformAttestationReportData report_data 
)

◆ verify_uvm_endorsements_descriptor()

UVMEndorsements ccf::pal::verify_uvm_endorsements_descriptor ( const std::vector< uint8_t > &  uvm_endorsements_raw,
const pal::PlatformAttestationMeasurement uvm_measurement 
)

◆ verify_virtual_attestation_report()

void ccf::pal::verify_virtual_attestation_report ( const QuoteInfo quote_info,
PlatformAttestationMeasurement measurement,
PlatformAttestationReportData report_data 
)