MCPcopy Create free account
hub / github.com/Dstack-TEE/dstack / quote_with_app_id

Method quote_with_app_id

dstack-attest/src/attestation.rs:1029–1071  ·  view source on GitHub ↗
(report_data: &[u8; 64], app_id: Option<[u8; 20]>)

Source from the content-addressed store, hash-verified

1027 }
1028
1029 pub fn quote_with_app_id(report_data: &[u8; 64], app_id: Option<[u8; 20]>) -> Result<Self> {
1030 // Lock to prevent concurrent quote generation (TDX driver doesn't support it)
1031 let _guard = QUOTE_LOCK
1032 .lock()
1033 .map_err(|_| anyhow!("Quote lock poisoned"))?;
1034
1035 let mode = AttestationMode::detect()?;
1036 let runtime_events = if mode.is_composable() {
1037 RuntimeEvent::read_all().context("Failed to read runtime events")?
1038 } else if let Some(app_id) = app_id {
1039 vec![RuntimeEvent::new("app-id".to_string(), app_id.to_vec())]
1040 } else {
1041 vec![]
1042 };
1043
1044 let quote = match mode {
1045 AttestationMode::DstackTdx => {
1046 let quote = tdx_attest::get_quote(report_data).context("Failed to get quote")?;
1047 let event_log =
1048 cc_eventlog::tdx::read_event_log().context("Failed to read event log")?;
1049 AttestationQuote::DstackTdx(TdxQuote { quote, event_log })
1050 }
1051 AttestationMode::DstackGcpTdx | AttestationMode::DstackNitroEnclave => {
1052 bail!("Unsupported attestation mode: {mode:?}");
1053 }
1054 };
1055 let config = match &quote {
1056 AttestationQuote::DstackTdx(_) => {
1057 read_vm_config().context("Failed to read VM config")?
1058 }
1059 AttestationQuote::DstackGcpTdx | AttestationQuote::DstackNitroEnclave => {
1060 bail!("Unsupported attestation mode: {mode:?}");
1061 }
1062 };
1063
1064 Ok(Self {
1065 quote,
1066 runtime_events,
1067 report_data: *report_data,
1068 config,
1069 report: (),
1070 })
1071 }
1072}
1073
1074impl Attestation {

Callers

nothing calls this directly

Calls 5

read_event_logFunction · 0.85
read_vm_configFunction · 0.85
is_composableMethod · 0.80
get_quoteFunction · 0.50
lockMethod · 0.45

Tested by

no test coverage detected