9#include "aws/core/auth/signer/AWSAuthSignerBase.h"
11#include <aws/core/utils/Array.h>
12#include <aws/core/utils/memory/stl/AWSSet.h>
13#include <aws/core/utils/threading/ReaderWriterLock.h>
14#include <aws/core/utils/crypto/Sha256.h>
15#include <aws/core/utils/crypto/Sha256HMAC.h>
16#include <aws/core/http/HttpRequest.h>
17#include <aws/core/endpoint/internal/AWSEndpointAttribute.h>
19#include <aws/crt/auth/Sigv4Signing.h>
38 class AWSCredentialsProvider;
39 class CredentialsResolutionContext;
43 SIGV4 =
static_cast<int>(Aws::Crt::Auth::SigningAlgorithm::SigV4),
44 ASYMMETRIC_SIGV4 =
static_cast<int>(Aws::Crt::Auth::SigningAlgorithm::SigV4A),
88 AWSAuthV4Signer(
const std::shared_ptr<Auth::AWSCredentialsProvider>& credentialsProvider,
116 return SignRequest(request, m_region.c_str(), m_serviceName.c_str(),
true);
126 return SignRequest(request, m_region.c_str(), m_serviceName.c_str(), signBody);
136 return SignRequest(request, region, m_serviceName.c_str(), signBody);
211 bool signBody,
long long expirationTimeInSeconds, Aws::Crt::Auth::SignatureType signatureType)
const;
218 const char* region,
const char* serviceName,
bool signBody)
const;
222 std::shared_ptr<Auth::AWSCredentialsProvider> m_credentialsProvider;
236 bool m_urlEscapePath;
237 mutable Aws::Crt::Auth::Sigv4HttpRequestSigner m_crtSigner{};
AWSAuthV4Signer(const std::shared_ptr< Auth::AWSCredentialsProvider > &credentialsProvider, const char *serviceName, const Aws::String ®ion, PayloadSigningPolicy signingPolicy=PayloadSigningPolicy::RequestDependent, bool urlEscapePath=true, Aws::Auth::AWSSigningAlgorithm signingAlgorithm=Aws::Auth::AWSSigningAlgorithm::SIGV4)
Aws::String GenerateSignature(const Aws::Auth::AWSCredentials &credentials, const Aws::String &stringToSign, const Aws::String &simpleDate) const
bool PresignRequest(Aws::Http::HttpRequest &request, const char *region, long long expirationInSeconds=0) const override
bool SignRequest(Aws::Http::HttpRequest &request, bool signBody) const override
const char * GetName() const override
virtual ~AWSAuthV4Signer()
Aws::String GetRegion() const
void UpdateUserAgentWithCredentialFeatures(Aws::Http::HttpRequest &request, const Aws::Auth::CredentialsResolutionContext &context) const
bool ShouldSignHeader(const Aws::String &header) const
bool PresignRequest(Aws::Http::HttpRequest &request, const char *region, const char *serviceName, long long expirationInSeconds=0) const override
bool m_includeSha256HashHeader
bool SignRequest(Aws::Http::HttpRequest &request, const char *region, const char *serviceName, bool signBody) const override
bool SignRequest(Aws::Http::HttpRequest &request, const char *region, bool signBody) const override
bool SignRequest(Aws::Http::HttpRequest &request) const override
virtual Aws::Auth::AWSCredentials GetCredentials(const std::shared_ptr< Aws::Http::ServiceSpecificParameters > &serviceSpecificParameters) const
Aws::String GetServiceName() const
bool PresignRequest(Aws::Http::HttpRequest &request, long long expirationInSeconds=0) const override
bool PresignRequest(Aws::Http::HttpRequest &request, const Aws::Auth::AWSCredentials &creds, const char *region, const char *serviceName, long long expirationInSeconds=0) const
virtual bool ServiceRequireUnsignedPayload(const Aws::String &serviceName) const
AWS_CORE_API const char SIGV4_SIGNER[]
AWS_CORE_API const char ASYMMETRIC_SIGV4_SIGNER[]
std::basic_string< char, std::char_traits< char >, Aws::Allocator< char > > String
std::set< T, std::less< T >, Aws::Allocator< T > > Set