1#[cfg(feature = "bls-signatures")]
2mod bls_signatures;
3#[cfg(feature = "bls-signatures")]
4pub use bls_signatures::{BlsError, PublicKey, SecretKey, Signature};
5#[cfg(feature = "bls-signatures")]
6pub mod native_bls;
7#[cfg(feature = "bls-signatures")]
9pub mod serde;
10
11use crate::{ProtocolError, PublicKeyValidationError};
12
13pub trait BlsModule {
14 fn validate_public_key(&self, pk: &[u8]) -> Result<(), PublicKeyValidationError>;
15 fn verify_signature(
16 &self,
17 signature: &[u8],
18 data: &[u8],
19 public_key: &[u8],
20 ) -> Result<bool, ProtocolError>;
21 fn private_key_to_public_key(&self, private_key: &[u8]) -> Result<Vec<u8>, ProtocolError>;
22 fn sign(&self, data: &[u8], private_key: &[u8]) -> Result<Vec<u8>, ProtocolError>;
23}