verified_descriptor.rs (775B)
1 use radroots_blossom::{BlobDescriptor, BlobUrl, MediaType, Sha256}; 2 3 fn main() -> Result<(), radroots_blossom::Error> { 4 let bytes = b"hello"; 5 let hash = Sha256::digest(bytes); 6 let media_type = MediaType::parse("text/plain")?; 7 let url = BlobUrl::parse(&format!("https://media.example/{hash}.txt"))?; 8 let descriptor = BlobDescriptor::new( 9 url, 10 hash, 11 bytes.len() as u64, 12 media_type.clone(), 13 1_725_105_921, 14 )?; 15 16 let verified = descriptor 17 .approve_reference()? 18 .verify_bytes(bytes, &media_type)?; 19 20 assert_eq!(verified.sha256(), hash); 21 assert_eq!(verified.size(), 5); 22 assert_eq!( 23 verified.url().as_str(), 24 format!("https://media.example/{hash}.txt") 25 ); 26 Ok(()) 27 }