///|
pub fn DigestField::to_string(self : DigestField) -> String {
let members = sort_digest_members(self.members)
let out = StringBuilder()
for i = 0; i < members.length(); i = i + 1 {
if i > 0 {
out.write_string(", ")
}
out.write_string(ascii_lower(members[i].algorithm))
out.write_string("=:")
out.write_string(@base64.std_encode2str(members[i].value.to_fixedarray()))
out.write_char(':')
}
out.to_string()
}
///|
pub fn PreferenceField::to_string(self : PreferenceField) -> String {
let members = sort_preferences(self.members)
let out = StringBuilder()
for i = 0; i < members.length(); i = i + 1 {
if i > 0 {
out.write_string(", ")
}
out.write_string(ascii_lower(members[i].algorithm))
out.write_char('=')
out.write_string(members[i].weight.to_string())
}
out.to_string()
}
///|
pub fn canonicalize_digest_field(
input : String,
) -> String raise DigestFieldError {
parse_digest_field(input).to_string()
}
///|
pub fn canonicalize_preference_field(
input : String,
) -> String raise DigestFieldError {
parse_preference_field(input).to_string()
}
///|
pub fn DigestField::get(self : DigestField, algorithm : String) -> Bytes? {
let expected = ascii_lower(algorithm)
for item in self.members {
if item.algorithm == expected {
return Some(item.value)
}
}
None
}