#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
*/
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;
* 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);
}
-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("/");
}
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' };
* 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);
/* 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;
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 = \
#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"
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*,
#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"
/*
* 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;
#include <array>
+#include <boost/utility/string_view.hpp>
+
#include "common/ceph_crypto.h"
#include "common/perf_counters.h"
#include "acconfig.h"
}
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(),
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(),
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(),
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();
#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"
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);