Skip to main content

retain_supported_hashes

Function retain_supported_hashes 

Source
pub fn retain_supported_hashes(
    hashes: &HashMap<HashAlgorithm, HashValue>,
) -> Vec<(&'static HashAlgorithm, HashValue)>
Expand description

Given a map of hash algorithms and their values and retains the supported hashes. Returns an Err if there is no match.

use std::collections::HashMap;
use tuf::crypto::{retain_supported_hashes, HashValue, HashAlgorithm};

let mut map = HashMap::new();
assert!(retain_supported_hashes(&map).is_empty());

let sha512_value = HashValue::new(vec![0x00, 0x01]);
let _ = map.insert(HashAlgorithm::Sha512, sha512_value.clone());
assert_eq!(
    retain_supported_hashes(&map),
    vec![
        (&HashAlgorithm::Sha512, sha512_value.clone()),
    ],
);

let sha256_value = HashValue::new(vec![0x02, 0x03]);
let _ = map.insert(HashAlgorithm::Sha256, sha256_value.clone());
assert_eq!(
    retain_supported_hashes(&map),
    vec![
        (&HashAlgorithm::Sha512, sha512_value.clone()),
        (&HashAlgorithm::Sha256, sha256_value.clone()),
    ],
);

let md5_value = HashValue::new(vec![0x04, 0x05]);
let _ = map.insert(HashAlgorithm::Unknown("md5".into()), md5_value);
assert_eq!(
    retain_supported_hashes(&map),
    vec![
        (&HashAlgorithm::Sha512, sha512_value),
        (&HashAlgorithm::Sha256, sha256_value),
    ],
);