iroh_db_security/
snapshot.rs1use iroh_db_core::AuthorId;
2
3use crate::{SecurityError, key::snapshot_signature_message};
4
5pub fn verify_snapshot_signature(
7 author: AuthorId,
8 canonical_snapshot_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 &snapshot_signature_message(canonical_snapshot_bytes),
17 &signature,
18 )
19 .map_err(|_| SecurityError::InvalidSignature)
20}