#[macro_export]
macro_rules! sm_map {
($($index:expr => $data:expr),*) => {
{
let mut msgs = std::collections::BTreeMap::new();
$(
msgs.insert($index, crate::SignatureMessage::hash($data));
)*
msgs
}
};
}
#[macro_export]
macro_rules! pm_revealed {
($data:expr) => {
ProofMessage::Revealed(SignatureMessage::hash($data))
};
}
#[macro_export]
macro_rules! pm_revealed_raw {
($data:expr) => {
ProofMessage::Revealed($data)
};
}
#[macro_export]
macro_rules! pm_hidden {
($data:expr) => {
ProofMessage::Hidden(HiddenMessage::ProofSpecificBlinding(
SignatureMessage::hash($data),
))
};
($data:expr, $bf:expr) => {
ProofMessage::Hidden(HiddenMessage::ExternalBlinding(
SignatureMessage::hash($data),
$bf,
))
};
}
#[macro_export]
macro_rules! pm_hidden_raw {
($data:expr) => {
ProofMessage::Hidden(HiddenMessage::ProofSpecificBlinding($data))
};
($data:expr, $bf:expr) => {
ProofMessage::Hidden(HiddenMessage::ExternalBlinding($data, $bf))
};
}
use crate::{ProofNonce, SignatureMessage};
pub enum ProofMessage {
Revealed(SignatureMessage),
Hidden(HiddenMessage),
}
impl ProofMessage {
pub fn get_message(&self) -> SignatureMessage {
match *self {
ProofMessage::Revealed(ref r) => *r,
ProofMessage::Hidden(HiddenMessage::ProofSpecificBlinding(ref p)) => *p,
ProofMessage::Hidden(HiddenMessage::ExternalBlinding(ref m, _)) => *m,
}
}
}
pub enum HiddenMessage {
ProofSpecificBlinding(SignatureMessage),
ExternalBlinding(SignatureMessage, ProofNonce),
}