iroh_db_security/
backup.rs

1use iroh_db_core::AuthorId;
2
3use crate::{SecurityError, key::backup_signature_message};
4
5/// Verifies a backup catalog signature under its distinct protocol context.
6pub fn verify_backup_signature(
7    author: AuthorId,
8    canonical_catalog_bytes: &[u8],
9    signature: &[u8; 64],
10) -> Result<(), SecurityError> {
11    let public_key = iroh_base::PublicKey::try_from(author.as_bytes())
12        .map_err(|_| SecurityError::InvalidAuthor)?;
13    let signature = iroh_base::Signature::from_bytes(signature);
14    public_key
15        .verify(
16            &backup_signature_message(canonical_catalog_bytes),
17            &signature,
18        )
19        .map_err(|_| SecurityError::InvalidSignature)
20}