use super::{KeyedSig, SectionAuthUtils};
use crate::messaging::system::SectionAuth;
use crate::routing::{Error, Result};
use serde::Serialize;
pub(crate) fn prove<T: Serialize>(secret_key: &bls::SecretKey, payload: &T) -> Result<KeyedSig> {
let bytes = bincode::serialize(payload).map_err(|_| Error::InvalidPayload)?;
Ok(KeyedSig {
public_key: secret_key.public_key(),
signature: secret_key.sign(&bytes),
})
}
pub(crate) fn section_signed<T: Serialize>(
secret_key: &bls::SecretKey,
payload: T,
) -> Result<SectionAuth<T>> {
let sig = prove(secret_key, &payload)?;
Ok(SectionAuth::new(payload, sig))
}