pub use super::ed25519;
use crate::proto;
pub use k256::ecdsa;
pub enum Signature {
Ecdsa(ecdsa::Signature),
Ed25519(ed25519::Signature),
}
impl Signature {
pub fn to_vec(&self) -> Vec<u8> {
match self {
Self::Ecdsa(sig) => sig.to_vec(),
Self::Ed25519(sig) => sig.to_vec(),
}
}
}
impl From<ecdsa::Signature> for Signature {
fn from(sig: ecdsa::Signature) -> Signature {
Self::Ecdsa(sig)
}
}
impl From<ed25519::Signature> for Signature {
fn from(sig: ed25519::Signature) -> Signature {
Self::Ed25519(sig)
}
}
impl From<Signature> for cometbft::Signature {
fn from(sig: Signature) -> cometbft::Signature {
sig.to_vec().try_into().expect("signature should be valid")
}
}
impl From<Signature> for proto::privval::celestia::SignedRawBytesResponse {
fn from(sig: Signature) -> Self {
proto::privval::celestia::SignedRawBytesResponse {
signature: sig.to_vec(),
error: None,
}
}
}