intel_dcap_api/client/
fmspc.rs1use super::ApiClient; use crate::{
8 error::{check_status, IntelApiError},
9 responses::TcbEvaluationDataNumbersResponse,
10 types::{ApiVersion, PlatformFilter},
11 FmspcJsonResponse,
12};
13use reqwest::StatusCode;
14
15impl ApiClient {
16 pub async fn get_fmspcs(
32 &self,
33 platform_filter: Option<PlatformFilter>,
34 ) -> Result<FmspcJsonResponse, IntelApiError> {
35 if self.api_version == ApiVersion::V3 {
36 return Err(IntelApiError::UnsupportedApiVersion(
37 "API v4 only function".to_string(),
38 ));
39 }
40 let path = self.build_api_path("sgx", "", "fmspcs")?;
41 let mut url = self.base_url.join(&path)?;
42
43 if let Some(pf) = platform_filter {
44 url.query_pairs_mut()
45 .append_pair("platform", &pf.to_string());
46 }
47
48 let request_builder = self.client.get(url);
49 let response = self.execute_with_retry(request_builder).await?;
50 let response = check_status(response, &[StatusCode::OK]).await?;
51
52 let fmspcs_json = response.text().await?;
53
54 Ok(fmspcs_json)
55 }
56
57 pub async fn get_sgx_tcb_evaluation_data_numbers(
69 &self,
70 ) -> Result<TcbEvaluationDataNumbersResponse, IntelApiError> {
71 if self.api_version != ApiVersion::V4 {
73 return Err(IntelApiError::UnsupportedApiVersion(
74 "SGX TCB Evaluation Data Numbers endpoint requires API v4".to_string(),
75 ));
76 }
77
78 let path = self.build_api_path("sgx", "", "tcbevaluationdatanumbers")?;
79 let url = self.base_url.join(&path)?;
80 let request_builder = self.client.get(url);
81
82 let (tcb_evaluation_data_numbers_json, issuer_chain) = self
83 .fetch_json_with_issuer_chain(
84 request_builder,
85 "TCB-Evaluation-Data-Numbers-Issuer-Chain",
86 None,
87 )
88 .await?;
89
90 Ok(TcbEvaluationDataNumbersResponse {
91 tcb_evaluation_data_numbers_json,
92 issuer_chain,
93 })
94 }
95
96 pub async fn get_tdx_tcb_evaluation_data_numbers(
108 &self,
109 ) -> Result<TcbEvaluationDataNumbersResponse, IntelApiError> {
110 if self.api_version != ApiVersion::V4 {
112 return Err(IntelApiError::UnsupportedApiVersion(
113 "TDX TCB Evaluation Data Numbers endpoint requires API v4".to_string(),
114 ));
115 }
116
117 let path = self.build_api_path("tdx", "", "tcbevaluationdatanumbers")?;
118 let url = self.base_url.join(&path)?;
119 let request_builder = self.client.get(url);
120
121 let (tcb_evaluation_data_numbers_json, issuer_chain) = self
122 .fetch_json_with_issuer_chain(
123 request_builder,
124 "TCB-Evaluation-Data-Numbers-Issuer-Chain",
125 None,
126 )
127 .await?;
128
129 Ok(TcbEvaluationDataNumbersResponse {
130 tcb_evaluation_data_numbers_json,
131 issuer_chain,
132 })
133 }
134}