use crate::{InternalError, dto::fleet_registry::FleetSubnetRootDrainingReservationResponse};
use sha2::{Digest, Sha256};
const ROOT_DRAINING_RESERVATION_HASH_DOMAIN: &[u8] =
b"canic/fleet-subnet-root/draining-reservation/v1";
pub struct FleetSubnetRootDrainingReservationOps;
impl FleetSubnetRootDrainingReservationOps {
pub fn content_hash(
response: &FleetSubnetRootDrainingReservationResponse,
) -> Result<[u8; 32], InternalError> {
let mut authority = response.clone();
authority.reservation_hash = [0; 32];
let payload = candid::encode_one(authority).map_err(|_error| InternalError::invariant())?;
let mut hasher = Sha256::new();
hasher.update(ROOT_DRAINING_RESERVATION_HASH_DOMAIN);
hasher.update(payload);
Ok(hasher.finalize().into())
}
}
#[cfg(test)]
mod tests;