public:
const Type type;
const char* name;
+ const char* name_uc;
const uint16_t digest_size;
const uint16_t armored_size;
const uint16_t flags;
return sz / 3 * 4 + 4;
}
- constexpr Desc(Type _type, const char* _name, uint16_t _size,
- uint16_t _flags)
- : type(_type), name(_name),
+ constexpr Desc(Type _type, const char* _name, const char* _name_uc,
+ uint16_t _size, uint16_t _flags)
+ : type(_type), name(_name), name_uc(_name_uc),
digest_size(_size),
armored_size(to_armored_size(digest_size)),
flags(_flags)
public:
static constexpr std::array<Desc, 9> checksums =
{
- Desc(Type::none, "none", 0, FLAG_NONE),
- Desc(Type::crc32, "crc32", 4, FLAG_AWS_CKSUM|FLAG_CRC),
- Desc(Type::crc32c, "crc32c", 4, FLAG_AWS_CKSUM|FLAG_CRC),
- Desc(Type::xxh3, "xxh3", 8, FLAG_NONE),
- Desc(Type::sha1, "sha1", 20, FLAG_AWS_CKSUM),
- Desc(Type::sha256, "sha256", 32, FLAG_AWS_CKSUM),
- Desc(Type::sha512, "sha512", 64, FLAG_NONE),
- Desc(Type::blake3, "blake3", 32, FLAG_NONE),
- Desc(Type::crc64nvme, "crc64nvme", 8, FLAG_AWS_CKSUM|FLAG_CRC),
+ Desc(Type::none, "none", "NONE", 0, FLAG_NONE),
+ Desc(Type::crc32, "crc32", "CRC32", 4, FLAG_AWS_CKSUM|FLAG_CRC),
+ Desc(Type::crc32c, "crc32c", "CRC32C", 4, FLAG_AWS_CKSUM|FLAG_CRC),
+ Desc(Type::xxh3, "xxh3", "XXH3", 8, FLAG_NONE),
+ Desc(Type::sha1, "sha1", "SHA1", 20, FLAG_AWS_CKSUM),
+ Desc(Type::sha256, "sha256", "SHA256", 32, FLAG_AWS_CKSUM),
+ Desc(Type::sha512, "sha512", "SHA512", 64, FLAG_NONE),
+ Desc(Type::blake3, "blake3", "BLAKE3", 32, FLAG_NONE),
+ Desc(Type::crc64nvme, "crc64nvme", "CRC64NVME", 8, FLAG_AWS_CKSUM|FLAG_CRC),
};
static constexpr uint16_t max_digest_size = 64;
return (Cksum::checksums[uint16_t(type)]).name;
}
+ const char* uc_type_string() const {
+ return (Cksum::checksums[uint16_t(type)]).name_uc;
+ }
+
const bool aws() const {
return (Cksum::checksums[uint16_t(type)]).aws();
}
}
std::string element_name() const {
- std::string ts{type_string()};
- return fmt::format("Checksum{}", boost::to_upper_copy(ts));
+ return fmt::format("Checksum{}", uc_type_string());
}
std::string_view raw() const {
return ckd.name;
}
+ static inline std::string to_uc_string(const Type type) {
+ const auto& ckd = Cksum::checksums[uint16_t(type)];
+ return ckd.name_uc;
+ }
+
static inline Type parse_cksum_type(const char* name)
{
for (const auto& ck : Cksum::checksums) {
auto& k = p.first;
auto cksum_type = rgw::cksum::parse_cksum_type_hdr(k);
if (cksum_type != rgw::cksum::Type::none) {
- put_prop("HTTP_X_AMZ_CHECKSUM_ALGORITHM",
- boost::to_upper_copy(to_string(cksum_type)));
+ put_prop("HTTP_X_AMZ_CHECKSUM_ALGORITHM", to_uc_string(cksum_type));
bufferlist& d = p.second.data;
std::string v {
rgw_trim_whitespace(std::string_view(d.c_str(), d.length()))};
dump_header_if_nonempty(s, "x-amz-abort-rule-id", rule_id);
}
if (cksum_algo != rgw::cksum::Type::none) {
- dump_header(s, "x-amz-checksum-algorithm",
- boost::to_upper_copy(to_string(cksum_algo)));
+ dump_header(s, "x-amz-checksum-algorithm", to_uc_string(cksum_algo));
}
end_header(s, this, to_mime_type(s->format));
if (op_ret == 0) {
Container element that identifies who initiated the multipart upload. If the initiator is an AWS account, this element provides the same information as the Owner element. If the initiator is an IAM User, this element provides the user ARN and display name, see https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html */
if (cksum && cksum->aws()) {
- s->formatter->dump_string("ChecksumAlgorithm",
- boost::to_upper_copy(std::string(cksum->type_string())));
+ s->formatter->dump_string("ChecksumAlgorithm", cksum->uc_type_string());
}
for (; iter != upload->get_parts().end(); ++iter) {