7 #include <boost/asio/ssl.hpp> 9 #include <boost/beast/core/multi_buffer.hpp> 10 #include <boost/beast/http/message.hpp> 11 #include <boost/fiber/mutex.hpp> 13 #include "absl/strings/string_view.h" 14 #include "util/status.h" 20 AWS(
const std::string& region_id,
const std::string& service)
21 : region_id_(region_id), service_(service) {
31 void Sign(absl::string_view domain, absl::string_view body_hash256,
32 ::boost::beast::http::header<true, ::boost::beast::http::fields>* header)
const;
34 void SignEmpty(absl::string_view domain,
35 ::boost::beast::http::header<true, ::boost::beast::http::fields>* header)
const {
36 return Sign(domain, absl::string_view{kHashEmpty, 64}, header);
39 static ::boost::asio::ssl::context CheckedSslContext();
43 static const char kHashEmpty[];
45 std::string AuthHeader(absl::string_view method, absl::string_view headers,
46 absl::string_view target, absl::string_view content_sha256,
47 absl::string_view amz_date)
const;
49 std::string region_id_, service_, secret_, access_key_;
51 mutable ::boost::fibers::mutex mu_;
52 mutable std::string sign_key_;
54 std::string credential_scope_;
60 void Sha256String(absl::string_view str,
char out[65]);
61 void Sha256String(const ::boost::beast::multi_buffer& mb,
char out[65]);