Files
DedicatedServerCourse/Plugins/GameLiftPlugin/Source/AWSSDK/Include/aws/crt/auth/Signing.h
2026-02-28 12:32:28 -05:00

100 lines
3.6 KiB
C++

#pragma once
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#include <aws/crt/Exports.h>
#include <aws/auth/signing_config.h>
#include <functional>
#include <memory>
namespace Aws
{
namespace Crt
{
namespace Http
{
class HttpRequest;
}
namespace Auth
{
/**
* RTTI indicator for signing configuration. We currently only support a single type (AWS), but
* we could expand to others in the future if needed.
*/
enum class SigningConfigType
{
Aws = AWS_SIGNING_CONFIG_AWS
};
/**
* HTTP signing callback. The second parameter is an aws error code, The signing was successful
* if the error code is AWS_ERROR_SUCCESS.
*/
using OnHttpRequestSigningComplete =
std::function<void(const std::shared_ptr<Aws::Crt::Http::HttpRequest> &, int)>;
/**
* Base class for all different signing configurations. Type functions as a
* primitive RTTI for downcasting.
*/
class AWS_CRT_CPP_API ISigningConfig
{
public:
ISigningConfig() = default;
ISigningConfig(const ISigningConfig &) = delete;
ISigningConfig(ISigningConfig &&) = delete;
ISigningConfig &operator=(const ISigningConfig &) = delete;
ISigningConfig &operator=(ISigningConfig &&) = delete;
virtual ~ISigningConfig() = default;
/**
* RTTI query for the SigningConfig hierarchy
* @return the type of signing configuration
*/
virtual SigningConfigType GetType(void) const = 0;
};
/**
* Abstract base for all http request signers. Asynchronous interface. Intended to
* be a tight wrapper around aws-c-* signer implementations.
*/
class AWS_CRT_CPP_API IHttpRequestSigner
{
public:
IHttpRequestSigner() = default;
IHttpRequestSigner(const IHttpRequestSigner &) = delete;
IHttpRequestSigner(IHttpRequestSigner &&) = delete;
IHttpRequestSigner &operator=(const IHttpRequestSigner &) = delete;
IHttpRequestSigner &operator=(IHttpRequestSigner &&) = delete;
virtual ~IHttpRequestSigner() = default;
/**
* Signs an http request based on the signing implementation and supplied configuration
* @param request http request to sign
* @param config base signing configuration. Actual type should match the configuration expected
* by the signer implementation
* @param completionCallback completion function to invoke when signing has completed or failed
* @return true if the signing process was kicked off, false if there was a synchronous failure.
*/
virtual bool SignRequest(
const std::shared_ptr<Aws::Crt::Http::HttpRequest> &request,
const ISigningConfig &config,
const OnHttpRequestSigningComplete &completionCallback) = 0;
/**
* @return Whether or not the signer is in a valid state
*/
virtual bool IsValid() const = 0;
};
} // namespace Auth
} // namespace Crt
} // namespace Aws