14#define FMT_HEADER_ONLY
15#include <fmt/format.h>
45 std::map<std::string, std::string>
params;
48 std::map<std::string, std::string>
headers = {};
55 using Server = std::list<EndpointInfo>;
77 std::optional<std::string>
url = std::nullopt;
95 static HostPort default_azure_endorsements_endpoint = {
96 "global.acccache.azure.net",
"443"};
99 make_azure_endorsements_server(
100 const HostPort& endpoint,
101 const std::string& chip_id_hex,
102 const std::string& reported_tcb,
103 size_t max_retries_count,
104 size_t max_client_response_size)
106 std::map<std::string, std::string> params;
107 params[
"api-version"] =
"2020-10-15-preview";
108 EndorsementEndpointsConfiguration::EndpointInfo info{
111 fmt::format(
"/SevSnpVM/certificates/{}/{}", chip_id_hex, reported_tcb),
115 info.max_retries_count = max_retries_count;
116 info.max_client_response_size = max_client_response_size;
123 static HostPort default_amd_endorsements_endpoint = {
124 "kdsintf.amd.com",
"443"};
127 const HostPort& endpoint,
128 const std::string& chip_id_hex,
129 const std::string& boot_loader,
130 const std::string& tee,
131 const std::string& snp,
132 const std::string& microcode,
134 size_t max_retries_count,
135 size_t max_client_response_size)
137 std::map<std::string, std::string> params;
138 params[
"blSPL"] = boot_loader;
139 params[
"teeSPL"] = tee;
140 params[
"snpSPL"] = snp;
141 params[
"ucodeSPL"] = microcode;
144 EndorsementEndpointsConfiguration::EndpointInfo leaf{
147 fmt::format(
"/vcek/v1/{}/{}",
to_string(product_name), chip_id_hex),
151 leaf.max_retries_count = max_retries_count;
152 leaf.max_client_response_size = max_client_response_size;
153 EndorsementEndpointsConfiguration::EndpointInfo chain{
156 fmt::format(
"/vcek/v1/{}/cert_chain",
to_string(product_name)),
158 chain.max_retries_count = max_retries_count;
159 chain.max_client_response_size = max_client_response_size;
161 server.push_back(leaf);
162 server.push_back(chain);
166 static HostPort default_thim_endorsements_endpoint = {
167 "169.254.169.254",
"80"};
170 make_thim_endorsements_server(
171 const HostPort& endpoint,
172 const std::string& chip_id_hex,
173 const std::string& reported_tcb,
174 size_t max_retries_count,
175 size_t max_client_response_size)
177 std::map<std::string, std::string> params;
178 params[
"tcbVersion"] = reported_tcb;
179 params[
"platformId"] = chip_id_hex;
180 EndorsementEndpointsConfiguration::EndpointInfo info{
183 "/metadata/THIM/amd/certification",
187 {{
"Metadata",
"true"}},
190 info.max_retries_count = max_retries_count;
191 info.max_client_response_size = max_client_response_size;
199struct formatter<
ccf::pal::snp::EndorsementEndpointsConfiguration::EndpointInfo>
201 template <
typename ParseContext>
202 constexpr auto parse(ParseContext& ctx)
207 template <
typename FormatContext>
210 FormatContext& ctx)
const
213 ctx.out(),
"http{}://{}:{}", e.
tls ?
"s" :
"", e.
host, e.
port);
#define DECLARE_JSON_REQUIRED_FIELDS(TYPE,...)
Definition json.h:714
#define DECLARE_JSON_TYPE(TYPE)
Definition json.h:663
#define DECLARE_JSON_REQUIRED_FIELDS_WITH_RENAMES(TYPE,...)
Definition json.h:752
#define DECLARE_JSON_TYPE_WITH_OPTIONAL_FIELDS(TYPE)
Definition json.h:690
#define DECLARE_JSON_OPTIONAL_FIELDS(TYPE,...)
Definition json.h:786
#define DECLARE_JSON_ENUM(TYPE,...)
Definition json.h:837
Definition attestation_sev_snp.h:24
std::string to_string(ProductName product)
Definition sev_snp_cpuid.h:92
ProductName
Definition sev_snp_cpuid.h:86
EndorsementsEndpointType
Definition attestation_sev_snp_endorsements.h:63
@ Azure
Definition attestation_sev_snp_endorsements.h:64
@ THIM
Definition attestation_sev_snp_endorsements.h:66
@ AMD
Definition attestation_sev_snp_endorsements.h:65
std::vector< EndorsementsServer > EndorsementsServers
Definition attestation_sev_snp_endorsements.h:87
Definition app_interface.h:14
Definition key_exchange.h:18
Definition attestation_sev_snp_endorsements.h:20
std::string tcbm
Definition attestation_sev_snp_endorsements.h:24
std::string certificate_chain
Definition attestation_sev_snp_endorsements.h:23
std::string vcek_cert
Definition attestation_sev_snp_endorsements.h:22
std::string cache_control
Definition attestation_sev_snp_endorsements.h:21
Definition attestation_sev_snp_endorsements.h:41
std::string host
Definition attestation_sev_snp_endorsements.h:42
std::map< std::string, std::string > params
Definition attestation_sev_snp_endorsements.h:45
std::map< std::string, std::string > headers
Definition attestation_sev_snp_endorsements.h:48
size_t max_retries_count
Definition attestation_sev_snp_endorsements.h:50
bool operator==(const EndpointInfo &) const =default
size_t max_client_response_size
Definition attestation_sev_snp_endorsements.h:51
bool response_is_der
Definition attestation_sev_snp_endorsements.h:46
std::string port
Definition attestation_sev_snp_endorsements.h:43
std::string uri
Definition attestation_sev_snp_endorsements.h:44
bool tls
Definition attestation_sev_snp_endorsements.h:49
bool response_is_thim_json
Definition attestation_sev_snp_endorsements.h:47
Definition attestation_sev_snp_endorsements.h:39
std::list< Server > servers
Definition attestation_sev_snp_endorsements.h:59
std::list< EndpointInfo > Server
Definition attestation_sev_snp_endorsements.h:55
Definition attestation_sev_snp_endorsements.h:75
std::optional< size_t > max_retries_count
Definition attestation_sev_snp_endorsements.h:78
std::optional< ccf::ds::SizeString > max_client_response_size
Definition attestation_sev_snp_endorsements.h:79
EndorsementsEndpointType type
Definition attestation_sev_snp_endorsements.h:76
bool operator==(const EndorsementsServer &) const =default
std::optional< std::string > url
Definition attestation_sev_snp_endorsements.h:77
Definition attestation_sev_snp_endorsements.h:90
std::string port
Definition attestation_sev_snp_endorsements.h:92
std::string host
Definition attestation_sev_snp_endorsements.h:91