soft3/radio/iroh-blobs/src/hash/root_policy.rs

use iroh::{EndpointAddr, SecretKey};
use iroh_tickets::Ticket;

use super::Hash;
use crate::{ticket::BlobTicket, BlobFormat};

#[test]
fn published_tree_anchors() {
    for (data, expected) in [
        (
            &b""[..],
            "ea57b2e6b1ec7d2de11b15cb6d7060dd61d247fe0fbf5f7d3fb97a7be9328552",
        ),
        (
            &b"hello"[..],
            "626fa46e4e7bd5c87d630eef8333931a0b9198587400a0191eae7821692880d7",
        ),
    ] {
        assert_eq!(Hash::new(data).to_hex(), expected);
        assert_eq!(hemera::tree::fixed_chunk_root(data).to_hex(), expected);
    }
}

#[test]
fn canonical_key_and_legacy_ticket_bytes() {
    let data: Vec<u8> = (0..8192)
        .map(|i| ((i * 31 + i / 4096) % 256) as u8)
        .collect();
    let canonical: Hash = "2abf65dd26465a7352707d79d18ff3aab9ee5d97614a774619c79ed527e20190"
        .parse()
        .unwrap();
    let old: Hash = "11890a7e7cf1e4de463a04bf53bfdf269d627983a221daaf9029a3ff43297389"
        .parse()
        .unwrap();
    assert_eq!(Hash::new(&data), canonical);
    assert_eq!(Hash::from(hemera::tree::fixed_chunk_root(&data)), canonical);
    let addr = EndpointAddr::new(SecretKey::from_bytes(&[42; 32]).public());
    for root in [canonical, old] {
        let ticket = BlobTicket::new(addr.clone(), root, BlobFormat::Raw);
        let bytes = ticket.to_bytes();
        let parsed = BlobTicket::from_bytes(&bytes).unwrap();
        assert_eq!(parsed.hash(), root);
        assert_eq!(parsed.to_bytes(), bytes);
    }
    assert_ne!(canonical, old);
}

Homonyms

soft3/radio/cyber-bao/tests/root_policy.rs

Graph