azure-security-attestation
attestation_client.hpp
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // SPDX-License-Identifier: MIT
3 
4 #pragma once
5 
8 #include <azure/core/context.hpp>
9 #include <azure/core/url.hpp>
10 #include <string>
11 
12 namespace Azure { namespace Core { namespace Http { namespace _internal {
13  class HttpPipeline;
14 }}}} // namespace Azure::Core::Http::_internal
15 
16 namespace Azure { namespace Security { namespace Attestation {
17 
116  class AttestationClient final {
117 
118  public:
131  static AttestationClient Create(
132  std::string const& endpoint,
133  std::shared_ptr<Core::Credentials::TokenCredential const> credential,
135  Azure::Core::Context const& constext = Azure::Core::Context{});
136 
150  static AttestationClient Create(
151  std::string const& endpoint,
153  Azure::Core::Context const& constext = Azure::Core::Context{});
154 
159  virtual ~AttestationClient() = default;
160 
165  AttestationClient(AttestationClient const& attestationClient)
166  : m_endpoint(attestationClient.m_endpoint), m_apiVersion(attestationClient.m_apiVersion),
167  m_pipeline(attestationClient.m_pipeline),
168  m_tokenValidationOptions(attestationClient.m_tokenValidationOptions),
169  m_attestationSigners(attestationClient.m_attestationSigners){};
170 
171  std::string const Endpoint() const { return m_endpoint.GetAbsoluteUrl(); }
172 
181  Response<Models::OpenIdMetadata> GetOpenIdMetadata(
182  Azure::Core::Context const& context = Azure::Core::Context::ApplicationContext) const;
183 
190  Response<Models::TokenValidationCertificateResult> GetTokenValidationCertificates(
191  Azure::Core::Context const& context = Azure::Core::Context{}) const;
192 
205  Response<Models::AttestationToken<Models::AttestationResult>> AttestSgxEnclave(
206  std::vector<uint8_t> const& sgxQuoteToAttest,
207  AttestSgxEnclaveOptions options = AttestSgxEnclaveOptions{},
208  Azure::Core::Context const& context = Azure::Core::Context{}) const;
209 
223  Response<Models::AttestationToken<Models::AttestationResult>> AttestOpenEnclave(
224  std::vector<uint8_t> const& openEnclaveReportToAttest,
225  AttestOpenEnclaveOptions options = AttestOpenEnclaveOptions{},
226  Azure::Core::Context const& context = Azure::Core::Context{}) const;
227 
247  Response<Models::TpmAttestationResult> AttestTpm(
248  AttestTpmOptions const& options,
249  Azure::Core::Context const& context = Azure::Core::Context{}) const;
250 
251  private:
252  Azure::Core::Url m_endpoint;
253  std::string m_apiVersion;
254  std::shared_ptr<Azure::Core::Credentials::TokenCredential const> m_credentials;
255  std::shared_ptr<Azure::Core::Http::_internal::HttpPipeline> m_pipeline;
256  AttestationTokenValidationOptions m_tokenValidationOptions;
257  std::vector<Models::AttestationSigner> m_attestationSigners;
258 
266  std::string const& endpoint,
267  std::shared_ptr<Core::Credentials::TokenCredential const> credential,
268  AttestationClientOptions options = AttestationClientOptions{});
269 
276  void RetrieveResponseValidationCollateral(
277  Azure::Core::Context const& context = Azure::Core::Context{});
278  };
279 
280 }}} // namespace Azure::Security::Attestation
attestation_client_models.hpp
Defines the Azure Attestation API types.
Azure::Security::Attestation::AttestationClient::GetOpenIdMetadata
Response< Models::OpenIdMetadata > GetOpenIdMetadata(Azure::Core::Context const &context=Azure::Core::Context::ApplicationContext) const
Definition: attestation_client.cpp:57
Azure::Security::Attestation::AttestationClientOptions
Define the options to create an Attestation client.
Definition: attestation_client_options.hpp:116
Azure::Security::Attestation::AttestationClient::AttestOpenEnclave
Response< Models::AttestationToken< Models::AttestationResult > > AttestOpenEnclave(std::vector< uint8_t > const &openEnclaveReportToAttest, AttestOpenEnclaveOptions options=AttestOpenEnclaveOptions{}, Azure::Core::Context const &context=Azure::Core::Context{}) const
Attest an OpenEnclave report, returning an attestation token representing the result of the attestati...
Definition: attestation_client.cpp:127
Azure
Azure SDK abstractions.
Definition: attestation_administration_client.hpp:12
Azure::Security::Attestation::AttestationClient::GetTokenValidationCertificates
Response< Models::TokenValidationCertificateResult > GetTokenValidationCertificates(Azure::Core::Context const &context=Azure::Core::Context{}) const
Retrieve the attestation signing certificates for this attestation instance.
Definition: attestation_client.cpp:68
attestation_client_options.hpp
Defines the supported options to create a Attestation clients.
Azure::Security::Attestation::AttestationClient::Create
static AttestationClient Create(std::string const &endpoint, std::shared_ptr< Core::Credentials::TokenCredential const > credential, AttestationClientOptions const &options=AttestationClientOptions{}, Azure::Core::Context const &constext=Azure::Core::Context{})
Construct a new Attestation Client object.
Definition: attestation_client.cpp:219
Azure::Security::Attestation::AttestationClient::AttestTpm
Response< Models::TpmAttestationResult > AttestTpm(AttestTpmOptions const &options, Azure::Core::Context const &context=Azure::Core::Context{}) const
Perform a single leg.
Definition: attestation_client.cpp:157
Azure::Security::Attestation::AttestationClient
Definition: attestation_client.hpp:116
Azure::Security::Attestation::AttestationClient::~AttestationClient
virtual ~AttestationClient()=default
Destructor.
Azure::Security::Attestation::AttestationClient::AttestSgxEnclave
Response< Models::AttestationToken< Models::AttestationResult > > AttestSgxEnclave(std::vector< uint8_t > const &sgxQuoteToAttest, AttestSgxEnclaveOptions options=AttestSgxEnclaveOptions{}, Azure::Core::Context const &context=Azure::Core::Context{}) const
Attest an SGX enclave, returning an attestation token representing the result of the attestation oper...
Definition: attestation_client.cpp:85
Azure::Security::Attestation::AttestationClient::AttestationClient
AttestationClient(AttestationClient const &attestationClient)
Construct a new Attestation Client object from an existing attestation client.
Definition: attestation_client.hpp:165