13#define FMT_HEADER_ONLY
14#include <fmt/format.h>
44 std::map<std::string, std::string>
params;
47 std::map<std::string, std::string>
headers = {};
52 using Server = std::list<EndpointInfo>;
74 std::optional<std::string>
url = std::nullopt;
89 static HostPort default_azure_endorsements_endpoint = {
90 "global.acccache.azure.net",
"443"};
93 make_azure_endorsements_server(
94 const HostPort& endpoint,
95 const std::string& chip_id_hex,
96 const std::string& reported_tcb)
98 std::map<std::string, std::string> params;
99 params[
"api-version"] =
"2020-10-15-preview";
103 fmt::format(
"/SevSnpVM/certificates/{}/{}", chip_id_hex, reported_tcb),
109 static HostPort default_amd_endorsements_endpoint = {
110 "kdsintf.amd.com",
"443"};
113 const HostPort& endpoint,
114 const std::string& chip_id_hex,
115 const std::string& boot_loader,
116 const std::string& tee,
117 const std::string& snp,
118 const std::string& microcode,
121 std::map<std::string, std::string> params;
122 params[
"blSPL"] = boot_loader;
123 params[
"teeSPL"] = tee;
124 params[
"snpSPL"] = snp;
125 params[
"ucodeSPL"] = microcode;
127 EndorsementEndpointsConfiguration::EndpointInfo leaf{
130 fmt::format(
"/vcek/v1/{}/{}",
to_string(product_name), chip_id_hex),
134 EndorsementEndpointsConfiguration::EndpointInfo chain{
137 fmt::format(
"/vcek/v1/{}/cert_chain",
to_string(product_name)),
141 server.push_back(leaf);
142 server.push_back(chain);
147 static HostPort default_thim_endorsements_endpoint = {
148 "169.254.169.254",
"80"};
151 make_thim_endorsements_server(
152 const HostPort& endpoint,
153 const std::string& chip_id_hex,
154 const std::string& reported_tcb)
156 std::map<std::string, std::string> params;
157 params[
"tcbVersion"] = reported_tcb;
158 params[
"platformId"] = chip_id_hex;
162 "/metadata/THIM/amd/certification",
166 {{
"Metadata",
"true"}},
174struct formatter<
ccf::pal::snp::EndorsementEndpointsConfiguration::EndpointInfo>
176 template <
typename ParseContext>
177 constexpr auto parse(ParseContext& ctx)
182 template <
typename FormatContext>
185 FormatContext& ctx)
const
188 ctx.out(),
"http{}://{}:{}", e.
tls ?
"s" :
"", e.
host, e.
port);
#define DECLARE_JSON_REQUIRED_FIELDS(TYPE,...)
Definition json.h:712
#define DECLARE_JSON_TYPE(TYPE)
Definition json.h:661
#define DECLARE_JSON_REQUIRED_FIELDS_WITH_RENAMES(TYPE,...)
Definition json.h:750
#define DECLARE_JSON_TYPE_WITH_OPTIONAL_FIELDS(TYPE)
Definition json.h:688
#define DECLARE_JSON_OPTIONAL_FIELDS(TYPE,...)
Definition json.h:784
#define DECLARE_JSON_ENUM(TYPE,...)
Definition json.h:835
Definition attestation_sev_snp.h:16
std::string to_string(ProductName product)
Definition sev_snp_cpuid.h:19
ProductName
Definition sev_snp_cpuid.h:14
EndorsementsEndpointType
Definition attestation_sev_snp_endorsements.h:60
@ Azure
Definition attestation_sev_snp_endorsements.h:61
@ THIM
Definition attestation_sev_snp_endorsements.h:63
@ AMD
Definition attestation_sev_snp_endorsements.h:62
std::vector< EndorsementsServer > EndorsementsServers
Definition attestation_sev_snp_endorsements.h:81
Definition app_interface.h:15
Definition key_exchange.h:18
Definition attestation_sev_snp_endorsements.h:19
std::string tcbm
Definition attestation_sev_snp_endorsements.h:23
std::string certificate_chain
Definition attestation_sev_snp_endorsements.h:22
std::string vcek_cert
Definition attestation_sev_snp_endorsements.h:21
std::string cache_control
Definition attestation_sev_snp_endorsements.h:20
Definition attestation_sev_snp_endorsements.h:40
std::string host
Definition attestation_sev_snp_endorsements.h:41
std::map< std::string, std::string > params
Definition attestation_sev_snp_endorsements.h:44
std::map< std::string, std::string > headers
Definition attestation_sev_snp_endorsements.h:47
bool operator==(const EndpointInfo &) const =default
bool response_is_der
Definition attestation_sev_snp_endorsements.h:45
std::string port
Definition attestation_sev_snp_endorsements.h:42
std::string uri
Definition attestation_sev_snp_endorsements.h:43
bool tls
Definition attestation_sev_snp_endorsements.h:48
bool response_is_thim_json
Definition attestation_sev_snp_endorsements.h:46
Definition attestation_sev_snp_endorsements.h:38
std::list< Server > servers
Definition attestation_sev_snp_endorsements.h:56
std::list< EndpointInfo > Server
Definition attestation_sev_snp_endorsements.h:52
Definition attestation_sev_snp_endorsements.h:72
EndorsementsEndpointType type
Definition attestation_sev_snp_endorsements.h:73
bool operator==(const EndorsementsServer &) const =default
std::optional< std::string > url
Definition attestation_sev_snp_endorsements.h:74
Definition attestation_sev_snp_endorsements.h:84
std::string port
Definition attestation_sev_snp_endorsements.h:86
std::string host
Definition attestation_sev_snp_endorsements.h:85