80 static inline bool is_sev_snp()
82 return access(
DEVICE, W_OK) == 0;
93 if (report_data.
data.size() <= snp_attestation_report_data_size)
100 throw std::logic_error(
101 "User-defined report data is larger than available space");
104 int fd = open(
DEVICE, O_RDWR | O_CLOEXEC);
107 throw std::logic_error(fmt::format(
"Failed to open \"{}\"",
DEVICE));
116 .request_len =
sizeof(req),
117 .request_uaddr =
reinterpret_cast<uint64_t
>(&req),
118 .response_len =
sizeof(resp),
119 .response_uaddr =
reinterpret_cast<uint64_t
>(&resp),
127 throw std::logic_error(
128 "Failed to issue ioctl SEV_SNP_GUEST_MSG_REPORT");
139 auto quote_bytes =
reinterpret_cast<uint8_t*
>(&resp.
report);
140 return {quote_bytes, quote_bytes + resp.
report_size};
Definition attestation_sev_snp.h:289
Definition snp_ioctl5.h:86
Attestation(const PlatformAttestationReportData &report_data)
Definition snp_ioctl5.h:91
std::vector< uint8_t > get_raw() override
Definition snp_ioctl5.h:137
const snp::Attestation & get() const override
Definition snp_ioctl5.h:132
#define CCF_APP_FAIL
Definition logger.h:400
Definition snp_ioctl5.h:19
constexpr auto DEVICE
Definition snp_ioctl5.h:20
constexpr int SEV_SNP_GUEST_MSG_REPORT
Definition snp_ioctl5.h:77
MsgType
Definition snp_ioctl5.h:36
@ MSG_CPUID_REQ
Definition snp_ioctl5.h:38
@ MSG_TYPE_INVALID
Definition snp_ioctl5.h:37
@ MSG_KEY_RSP
Definition snp_ioctl5.h:41
@ MSG_ABSORB_REQ
Definition snp_ioctl5.h:48
@ MSG_TYPE_MAX
Definition snp_ioctl5.h:52
@ MSG_CPUID_RSP
Definition snp_ioctl5.h:39
@ MSG_EXPORT_REQ
Definition snp_ioctl5.h:44
@ MSG_IMPORT_REQ
Definition snp_ioctl5.h:46
@ MSG_VMRK_RSP
Definition snp_ioctl5.h:51
@ MSG_VMRK_REQ
Definition snp_ioctl5.h:50
@ MSG_REPORT_RSP
Definition snp_ioctl5.h:43
@ MSG_IMPORT_RSP
Definition snp_ioctl5.h:47
@ MSG_REPORT_REQ
Definition snp_ioctl5.h:42
@ MSG_KEY_REQ
Definition snp_ioctl5.h:40
@ MSG_ABSORB_RSP
Definition snp_ioctl5.h:49
@ MSG_EXPORT_RSP
Definition snp_ioctl5.h:45
constexpr char SEV_GUEST_IOC_TYPE
Definition snp_ioctl5.h:76
Definition attestation_sev_snp.h:164
Definition snp_ioctl5.h:57
uint8_t report_data[snp_attestation_report_data_size]
Definition snp_ioctl5.h:58
uint8_t reserved[28]
Definition snp_ioctl5.h:60
uint32_t vmpl
Definition snp_ioctl5.h:59
Definition snp_ioctl5.h:66
uint8_t padding[64]
Definition snp_ioctl5.h:71
uint8_t reserved[0x20 - 0x8]
Definition snp_ioctl5.h:69
uint32_t report_size
Definition snp_ioctl5.h:68
uint32_t status
Definition snp_ioctl5.h:67
struct Attestation report
Definition snp_ioctl5.h:70
Definition snp_ioctl5.h:23
uint8_t rsp_msg_type
Definition snp_ioctl5.h:25
uint16_t request_len
Definition snp_ioctl5.h:27
uint64_t request_uaddr
Definition snp_ioctl5.h:28
uint16_t response_len
Definition snp_ioctl5.h:29
uint32_t error
Definition snp_ioctl5.h:31
uint8_t req_msg_type
Definition snp_ioctl5.h:24
uint64_t response_uaddr
Definition snp_ioctl5.h:30
uint8_t msg_version
Definition snp_ioctl5.h:26