]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: switch from boost::string_ref to string_view in AWSv4-related code.
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 11 May 2017 18:06:59 +0000 (20:06 +0200)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 7 Jun 2017 10:43:19 +0000 (12:43 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_auth_s3.cc
src/rgw/rgw_auth_s3.h
src/rgw/rgw_common.cc
src/rgw/rgw_common.h
src/rgw/rgw_rest_s3.cc

index d8113e6109dca341b40f9d2fd092a9318e787918..3cfffdfb00947aa8eb0693212ea2bacdc4717082 100644 (file)
@@ -14,6 +14,7 @@
 #include "rgw_crypt_sanitize.h"
 
 #include "include/str_list.h"
+#include <boost/utility/string_view.hpp>
 
 #define dout_context g_ceph_context
 #define dout_subsys ceph_subsys_rgw
@@ -593,12 +594,12 @@ get_v4_canonical_headers(const req_info& info,
  */
 sha256_digest_t
 get_v4_canon_req_hash(CephContext* cct,
-                      const boost::string_ref& http_verb,
+                      const boost::string_view& http_verb,
                       const std::string& canonical_uri,
                       const std::string& canonical_qs,
                       const std::string& canonical_hdrs,
                       const std::string& signed_hdrs,
-                      const boost::string_ref& request_payload_hash)
+                      const boost::string_view& request_payload_hash)
 {
   ldout(cct, 10) << "payload request hash = " << request_payload_hash << dendl;
 
@@ -630,9 +631,9 @@ get_v4_canon_req_hash(CephContext* cct,
  * http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html
  */
 std::string get_v4_string_to_sign(CephContext* const cct,
-                                  const boost::string_ref& algorithm,
-                                  const boost::string_ref& request_date,
-                                  const boost::string_ref& credential_scope,
+                                  const boost::string_view& algorithm,
+                                  const boost::string_view& request_date,
+                                  const boost::string_view& credential_scope,
                                   const sha256_digest_t& canonreq_hash)
 {
   const auto hexed_cr_hash = buf_to_hex(canonreq_hash);
@@ -653,10 +654,10 @@ std::string get_v4_string_to_sign(CephContext* const cct,
 }
 
 
-static inline std::tuple<boost::string_ref,             /* date */
-                         boost::string_ref,             /* region */
-                         boost::string_ref>             /* service */
-parse_cred_scope(boost::string_ref credential_scope)
+static inline std::tuple<boost::string_view,            /* date */
+                         boost::string_view,            /* region */
+                         boost::string_view>            /* service */
+parse_cred_scope(boost::string_view credential_scope)
 {
   /* date cred */
   size_t pos = credential_scope.find("/");
@@ -676,7 +677,7 @@ parse_cred_scope(boost::string_ref credential_scope)
 }
 
 static inline std::vector<unsigned char>
-transform_secret_key(const boost::string_ref& secret_access_key)
+transform_secret_key(const boost::string_view& secret_access_key)
 {
   /* TODO(rzarzynski): switch to constexpr when C++14 becomes available. */
   static const std::initializer_list<unsigned char> AWS4 { 'A', 'W', 'S', '4' };
@@ -701,10 +702,10 @@ transform_secret_key(const boost::string_ref& secret_access_key)
  * calculate the SigningKey of AWS auth version 4
  */
 sha256_digest_t get_v4_signing_key(CephContext* const cct,
-                                   const boost::string_ref& credential_scope,
-                                   const boost::string_ref& secret_access_key)
+                                   const boost::string_view& credential_scope,
+                                   const boost::string_view& secret_access_key)
 {
-  boost::string_ref date, region, service;
+  boost::string_view date, region, service;
   std::tie(date, region, service) = parse_cred_scope(credential_scope);
 
   const auto utfed_sec_key = transform_secret_key(secret_access_key);
@@ -714,7 +715,7 @@ sha256_digest_t get_v4_signing_key(CephContext* const cct,
 
   /* aws4_request */
   const auto signing_key = calc_hmac_sha256(service_k,
-                                            boost::string_ref("aws4_request"));
+                                            boost::string_view("aws4_request"));
 
   ldout(cct, 10) << "date_k    = " << buf_to_hex(date_k).data() << dendl;
   ldout(cct, 10) << "region_k  = " << buf_to_hex(region_k).data() << dendl;
@@ -732,7 +733,7 @@ sha256_digest_t get_v4_signing_key(CephContext* const cct,
 std::array<char, CEPH_CRYPTO_HMACSHA256_DIGESTSIZE * 2 + 1>
 get_v4_signature(CephContext* const cct,
                  const sha256_digest_t& signing_key,
-                 const boost::string_ref& string_to_sign)
+                 const boost::string_view& string_to_sign)
 {
   /* The server-side generated signature for comparison. */
   const auto signature = \
index 9d0cb129515eb3ed52dd6ac4d5fcce239065e892..69ea89f3d52744aa8669503e722904a52be2c2d0 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <boost/container/static_vector.hpp>
 #include <boost/utility/string_ref.hpp>
+#include <boost/utility/string_view.hpp>
 
 #include "rgw_common.h"
 #include "rgw_rest_s3.h"
@@ -402,28 +403,28 @@ boost::optional<std::string> get_v4_canonical_headers(const req_info& info,
 
 extern sha256_digest_t
 get_v4_canon_req_hash(CephContext* cct,
-                      const boost::string_ref& http_verb,
+                      const boost::string_view& http_verb,
                       const std::string& canonical_uri,
                       const std::string& canonical_qs,
                       const std::string& canonical_hdrs,
                       const std::string& signed_hdrs,
-                      const boost::string_ref& request_payload_hash);
+                      const boost::string_view& request_payload_hash);
 
 std::string get_v4_string_to_sign(CephContext* cct,
-                                  const boost::string_ref& algorithm,
-                                  const boost::string_ref& request_date,
-                                  const boost::string_ref& credential_scope,
+                                  const boost::string_view& algorithm,
+                                  const boost::string_view& request_date,
+                                  const boost::string_view& credential_scope,
                                   const sha256_digest_t& canonreq_hash);
 
 extern sha256_digest_t
 get_v4_signing_key(CephContext* const cct,
-                   const boost::string_ref& credential_scope,
-                   const boost::string_ref& access_key_secret);
+                   const boost::string_view& credential_scope,
+                   const boost::string_view& access_key_secret);
 
 extern std::array<char, CEPH_CRYPTO_HMACSHA256_DIGESTSIZE * 2 + 1>
 get_v4_signature(CephContext* cct,
                  const sha256_digest_t& signing_key,
-                 const boost::string_ref& string_to_sign);
+                 const boost::string_view& string_to_sign);
 
 static inline
 std::string get_v2_signature(CephContext*,
index 97cee5e69814779114e2c996d4da7378dee02691..f107ad33eb19d4cd0e815f8a48f7e91140021af0 100644 (file)
@@ -7,6 +7,7 @@
 #include <string>
 #include <boost/tokenizer.hpp>
 #include <boost/algorithm/string.hpp>
+#include <boost/utility/string_view.hpp>
 
 #include "json_spirit/json_spirit.h"
 #include "common/ceph_json.h"
@@ -680,7 +681,7 @@ using ceph::crypto::SHA256;
 /*
  * calculate the sha256 hash value of a given msg
  */
-sha256_digest_t calc_hash_sha256(const boost::string_ref& msg)
+sha256_digest_t calc_hash_sha256(const boost::string_view& msg)
 {
   std::array<unsigned char, CEPH_CRYPTO_HMACSHA256_DIGESTSIZE> hash;
 
index fc246db6c9373622735e3517f982a2db5ed6d953..6e425016ecd9fc6783be9f2b42cfcc4100441f3f 100644 (file)
@@ -18,6 +18,8 @@
 
 #include <array>
 
+#include <boost/utility/string_view.hpp>
+
 #include "common/ceph_crypto.h"
 #include "common/perf_counters.h"
 #include "acconfig.h"
@@ -2232,7 +2234,7 @@ calc_hmac_sha256(const char *key, const int key_len,
 }
 
 static inline sha256_digest_t
-calc_hmac_sha256(const boost::string_ref& key, const boost::string_ref& msg) {
+calc_hmac_sha256(const boost::string_view& key, const boost::string_view& msg) {
   std::array<unsigned char, CEPH_CRYPTO_HMACSHA256_DIGESTSIZE> dest;
   calc_hmac_sha256(key.data(), key.size(),
                    msg.data(), msg.size(),
@@ -2242,7 +2244,7 @@ calc_hmac_sha256(const boost::string_ref& key, const boost::string_ref& msg) {
 
 static inline sha256_digest_t
 calc_hmac_sha256(const std::vector<unsigned char>& key,
-                 const boost::string_ref& msg) {
+                 const boost::string_view& msg) {
   std::array<unsigned char, CEPH_CRYPTO_HMACSHA256_DIGESTSIZE> dest;
   calc_hmac_sha256(reinterpret_cast<const char*>(key.data()), key.size(),
                    msg.data(), msg.size(),
@@ -2253,7 +2255,7 @@ calc_hmac_sha256(const std::vector<unsigned char>& key,
 template<size_t KeyLenN>
 static inline sha256_digest_t
 calc_hmac_sha256(const std::array<unsigned char, KeyLenN>& key,
-                 const boost::string_ref& msg) {
+                 const boost::string_view& msg) {
   std::array<unsigned char, CEPH_CRYPTO_HMACSHA256_DIGESTSIZE> dest;
   calc_hmac_sha256(reinterpret_cast<const char*>(key.data()), key.size(),
                    msg.data(), msg.size(),
@@ -2261,7 +2263,7 @@ calc_hmac_sha256(const std::array<unsigned char, KeyLenN>& key,
   return dest;
 }
 
-extern sha256_digest_t calc_hash_sha256(const boost::string_ref& msg);
+extern sha256_digest_t calc_hash_sha256(const boost::string_view& msg);
 
 using ceph::crypto::SHA256;
 extern SHA256* calc_hash_sha256_open_stream();
index b6006114827cb4005f47720f9021c728197ca5c1..4f0ccc896f205ea6d7cc18f2d6cc9916f87fe29f 100644 (file)
@@ -12,6 +12,7 @@
 #include "common/safe_io.h"
 #include <boost/algorithm/string.hpp>
 #include <boost/algorithm/string/replace.hpp>
+#include <boost/utility/string_view.hpp>
 
 #include "rgw_rest.h"
 #include "rgw_rest_s3.h"
@@ -3569,8 +3570,8 @@ static inline
 std::string v4_signature(const std::string& credential_scope,
 
                          CephContext* const cct,
-                         const boost::string_ref& secret_key,
-                         const boost::string_ref& string_to_sign)
+                         const boost::string_view& secret_key,
+                         const boost::string_view& string_to_sign)
 {
   auto signing_key = \
     rgw::auth::s3::get_v4_signing_key(cct, credential_scope, secret_key);