use crate::error::Result;
use crate::stream::ByteStream;
use super::Field;
#[derive(Debug, Clone)]
pub struct MdcPacket {
pub hash: [u8; 20],
}
pub fn parse_mdc(
stream: &mut ByteStream,
fields: &mut Vec<Field>,
body_offset: usize,
) -> Result<MdcPacket> {
let hash_start = body_offset + stream.pos();
let hash_bytes = stream.bytes(20)?;
let mut hash = [0u8; 20];
hash.copy_from_slice(&hash_bytes);
let hash_hex: String = hash.iter().map(|b| format!("{:02X}", b)).collect();
fields.push(Field::field(
"SHA-1 Hash",
hash_hex,
(hash_start, hash_start + 20),
));
Ok(MdcPacket { hash })
}