From: Radoslaw Zarzynski Date: Thu, 11 May 2017 18:06:59 +0000 (+0200) Subject: rgw: switch from boost::string_ref to string_view in AWSv4-related code. X-Git-Tag: v12.1.0~155^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0e4e0e4d40b44ae4477389863bed6dadc16ca8f7;p=ceph.git rgw: switch from boost::string_ref to string_view in AWSv4-related code. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/rgw/rgw_auth_s3.cc b/src/rgw/rgw_auth_s3.cc index d8113e6109dc..3cfffdfb0094 100644 --- a/src/rgw/rgw_auth_s3.cc +++ b/src/rgw/rgw_auth_s3.cc @@ -14,6 +14,7 @@ #include "rgw_crypt_sanitize.h" #include "include/str_list.h" +#include #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 /* service */ -parse_cred_scope(boost::string_ref credential_scope) +static inline std::tuple /* 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 -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 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 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 = \ diff --git a/src/rgw/rgw_auth_s3.h b/src/rgw/rgw_auth_s3.h index 9d0cb129515e..69ea89f3d527 100644 --- a/src/rgw/rgw_auth_s3.h +++ b/src/rgw/rgw_auth_s3.h @@ -11,6 +11,7 @@ #include #include +#include #include "rgw_common.h" #include "rgw_rest_s3.h" @@ -402,28 +403,28 @@ boost::optional 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 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*, diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 97cee5e69814..f107ad33eb19 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -7,6 +7,7 @@ #include #include #include +#include #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 hash; diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index fc246db6c937..6e425016ecd9 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -18,6 +18,8 @@ #include +#include + #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 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& key, - const boost::string_ref& msg) { + const boost::string_view& msg) { std::array dest; calc_hmac_sha256(reinterpret_cast(key.data()), key.size(), msg.data(), msg.size(), @@ -2253,7 +2255,7 @@ calc_hmac_sha256(const std::vector& key, template static inline sha256_digest_t calc_hmac_sha256(const std::array& key, - const boost::string_ref& msg) { + const boost::string_view& msg) { std::array dest; calc_hmac_sha256(reinterpret_cast(key.data()), key.size(), msg.data(), msg.size(), @@ -2261,7 +2263,7 @@ calc_hmac_sha256(const std::array& 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(); diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index b6006114827c..4f0ccc896f20 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -12,6 +12,7 @@ #include "common/safe_io.h" #include #include +#include #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);