41#include <openssl/sha.h>
46const std::string ENDL{
"\n"};
47const std::string POST{
"POST"};
48const std::string GET{
"GET"};
49const std::string STRING_TO_SIGN_ALGO{
"AWS4-HMAC-SHA256"};
50const std::string AWS4{
"AWS4"};
51const std::string AWS4_REQUEST{
"aws4_request"};
53std::string join(
const std::vector<std::string> &ss,
const std::string &delim);
55std::string sha256_base16(
const std::string &str);
57std::map<std::string, std::string> canonicalize_headers(
const std::vector<std::string> &headers);
59const std::string map_headers_string(
const std::map<std::string, std::string> &header_key2val);
61const std::string map_signed_headers(
const std::map<std::string, std::string> &header_key2val);
63const std::string canonicalize_request(
const std::string &http_request_method,
64 const std::string &canonical_uri,
65 const std::string &canonical_query_string,
66 const std::string &canonical_headers,
67 const std::string &signed_headers,
68 const std::string &payload);
70const std::string string_to_sign(
const std::string &algorithm,
71 const std::time_t &request_date,
72 const std::string &credential_scope,
73 const std::string &hashed_canonical_request);
75const std::string ISO8601_date(
const std::time_t &t);
77const std::string utc_yyyymmdd(
const std::time_t &t);
79const std::string credential_scope(
const std::time_t &t,
80 const std::string region,
81 const std::string service);
83const std::string calculate_signature(
const std::time_t &request_date,
84 const std::string secret,
85 const std::string region,
86 const std::string service,
87 const std::string string_to_sign);
90const std::string compute_awsv4_signature(std::shared_ptr<http::url> &uri_str,
const std::time_t &request_date,
91 const std::string &public_key,
const std::string &secret_key,
92 const std::string ®ion,
const std::string &service =
"s3");