]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: make AWSSignerV4 stateless
authorYehuda Sadeh <yehuda@redhat.com>
Tue, 2 Mar 2021 21:50:54 +0000 (13:50 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Tue, 9 Mar 2021 10:04:58 +0000 (02:04 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_rest_client.cc
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_rest_s3.h

index 2f4c6458bc66ee3d2e8479b0de17c8c9e094b1aa..a98ba3b60d824a4da9f60318bbfac1f63cd76502 100644 (file)
@@ -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) {
index 31fbc206d9462cc117543816a2a9986414112864..6562708e9aa8374afc9808ad04b5e2511bf46899 100644 (file)
@@ -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,
index 0b8b614c514919156b857756c41661fb46b2f4f7..1824e79f60376f0ee39d5df381883944e24a00fd 100644 (file)
@@ -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);
 };