コード例 #1
0
    utility::string_t get_queue_sas_string_to_sign(const utility::string_t& identifier, const shared_access_policy& policy, const utility::string_t& resource, const storage_credentials& credentials)
    {
        utility::ostringstream_t str;
        get_sas_string_to_sign(str, identifier, policy, resource);

        return calculate_hmac_sha256_hash(str.str(), credentials);
    }
コード例 #2
0
    void shared_key_authentication_handler::sign_request(web::http::http_request& request, operation_context context) const
    {
        web::http::http_headers& headers = request.headers();
        headers.add(ms_header_date, utility::datetime::utc_now().to_string());

        if (m_credentials.is_shared_key())
        {
            utility::string_t string_to_sign = m_canonicalizer->canonicalize(request, context);
            
            if (core::logger::instance().should_log(context, client_log_level::log_level_verbose))
            {
                utility::string_t with_dots(string_to_sign);
                std::replace(with_dots.begin(), with_dots.end(), _XPLATSTR('\n'), _XPLATSTR('.'));
                core::logger::instance().log(context, client_log_level::log_level_verbose, _XPLATSTR("StringToSign: ") + with_dots);
            }

            utility::string_t header_value;
            header_value.reserve(256);
            header_value.append(m_canonicalizer->authentication_scheme());
            header_value.append(_XPLATSTR(" "));
            header_value.append(m_credentials.account_name());
            header_value.append(_XPLATSTR(":"));
            header_value.append(calculate_hmac_sha256_hash(string_to_sign, m_credentials));

            headers.add(web::http::header_names::authorization, header_value);
        }
    }
コード例 #3
0
    utility::string_t get_table_sas_string_to_sign(const utility::string_t& identifier, const shared_access_policy& policy, const utility::string_t& start_partition_key, const utility::string_t& start_row_key, const utility::string_t& end_partition_key, const utility::string_t& end_row_key, const utility::string_t& resource, const storage_credentials& credentials)
    {
        utility::ostringstream_t str;
        get_sas_string_to_sign(str, identifier, policy, resource);

        str << U('\n') << start_partition_key;
        str << U('\n') << start_row_key;
        str << U('\n') << end_partition_key;
        str << U('\n') << end_row_key;

        return calculate_hmac_sha256_hash(str.str(), credentials);
    }
コード例 #4
0
    utility::string_t get_blob_sas_string_to_sign(const utility::string_t& identifier, const shared_access_policy& policy, const cloud_blob_shared_access_headers& headers, const utility::string_t& resource, const storage_credentials& credentials)
    {
        utility::ostringstream_t str;
        get_sas_string_to_sign(str, identifier, policy, resource);
        str << U('\n') << headers.cache_control();
        str << U('\n') << headers.content_disposition();
        str << U('\n') << headers.content_encoding();
        str << U('\n') << headers.content_language();
        str << U('\n') << headers.content_type();

        return calculate_hmac_sha256_hash(str.str(), credentials);
    }