#include <grpc/support/port_platform.h>
#include "src/core/lib/security/credentials/external/aws_request_signer.h"
#include <algorithm>
#include <initializer_list>
#include <utility>
#include <vector>
#include <openssl/crypto.h>
#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/sha.h>
#include "absl/status/statusor.h"
#include "absl/strings/ascii.h"
#include "absl/strings/escaping.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
#include "absl/time/clock.h"
#include "absl/time/time.h"
namespace grpc_core {
namespace {
const char kAlgorithm[] = …;
const char kDateFormat[] = …;
const char kXAmzDateFormat[] = …;
void SHA256(const std::string& str, unsigned char out[SHA256_DIGEST_LENGTH]) { … }
std::string SHA256Hex(const std::string& str) { … }
std::string HMAC(const std::string& key, const std::string& msg) { … }
}
AwsRequestSigner::AwsRequestSigner(
std::string access_key_id, std::string secret_access_key, std::string token,
std::string method, std::string url, std::string region,
std::string request_payload,
std::map<std::string, std::string> additional_headers,
grpc_error_handle* error)
: … { … }
std::map<std::string, std::string> AwsRequestSigner::GetSignedRequestHeaders() { … }
}