From: Yehuda Sadeh Date: Tue, 2 Mar 2021 21:50:54 +0000 (-0800) Subject: rgw: make AWSSignerV4 stateless X-Git-Tag: v17.1.0~2581^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=86946711572930421dabb2f636afc5b79eabffd4;p=ceph.git rgw: make AWSSignerV4 stateless Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_rest_client.cc b/src/rgw/rgw_rest_client.cc index 2f4c6458bc66..a98ba3b60d82 100644 --- a/src/rgw/rgw_rest_client.cc +++ b/src/rgw/rgw_rest_client.cc @@ -246,9 +246,7 @@ static int sign_request_v4(const DoutPrefixProvider *dpp, RGWAccessKey& key, } } - rgw::auth::s3::AWSSignerV4 signer(dpp); - - auto sigv4_data = signer.prepare(key.id, region, service, info, opt_content, true); + auto sigv4_data = rgw::auth::s3::AWSSignerV4::prepare(dpp, key.id, region, service, info, opt_content, true); auto sigv4_headers = sigv4_data.signature_factory(dpp, key.key, sigv4_data); for (auto& entry : sigv4_headers) { diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 31fbc206d946..6562708e9aa8 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -5198,12 +5198,13 @@ AWSGeneralAbstractor::get_v4_canonical_headers( } AWSSignerV4::prepare_result_t -AWSSignerV4::prepare(const std::string& access_key_id, +AWSSignerV4::prepare(const DoutPrefixProvider *dpp, + const std::string& access_key_id, const string& region, const string& service, const req_info& info, const bufferlist *opt_content, - bool s3_op) const + bool s3_op) { std::string signed_hdrs; @@ -5233,8 +5234,8 @@ AWSSignerV4::prepare(const std::string& access_key_id, gen_v4_canonical_headers(info, extra_headers, &signed_hdrs); using sanitize = rgw::crypt_sanitize::log_content; - ldout(cct, 10) << "canonical headers format = " - << sanitize{canonical_headers} << dendl; + ldpp_dout(dpp, 10) << "canonical headers format = " + << sanitize{canonical_headers} << dendl; bool is_non_s3_op = !s3_op; @@ -5260,6 +5261,8 @@ AWSSignerV4::prepare(const std::string& access_key_id, /* Craft canonical query string. std::moving later so non-const here. */ auto canonical_qs = rgw::auth::s3::gen_v4_canonical_qs(info); + auto cct = dpp->get_cct(); + /* Craft canonical request. */ auto canonical_req_hash = \ rgw::auth::s3::get_v4_canon_req_hash(cct, diff --git a/src/rgw/rgw_rest_s3.h b/src/rgw/rgw_rest_s3.h index 0b8b614c5149..1824e79f6037 100644 --- a/src/rgw/rgw_rest_s3.h +++ b/src/rgw/rgw_rest_s3.h @@ -1108,12 +1108,13 @@ public: signature_factory_t signature_factory; }; - prepare_result_t prepare(const std::string& access_key_id, - const string& region, - const string& service, - const req_info& info, - const bufferlist *opt_content, - bool s3_op) const; + static prepare_result_t prepare(const DoutPrefixProvider *dpp, + const std::string& access_key_id, + const string& region, + const string& service, + const req_info& info, + const bufferlist *opt_content, + bool s3_op); };