defuse_crypto/curve/
mod.rs1#[cfg(feature = "ed25519")]
2mod ed25519;
3#[cfg(feature = "ed25519")]
4pub use self::ed25519::*;
5
6#[cfg(feature = "secp256k1")]
7mod secp256k1;
8#[cfg(feature = "secp256k1")]
9pub use self::secp256k1::*;
10
11#[cfg(feature = "p256")]
12mod p256;
13#[cfg(feature = "p256")]
14pub use self::p256::*;
15
16pub trait Curve {
17 type PublicKey;
18 type Signature;
19
20 type Message: AsRef<[u8]> + ?Sized;
22
23 type VerifyingKey;
25}
26
27pub trait VerifiableCurve: Curve {
28 fn verify(
29 signature: &Self::Signature,
30 message: &Self::Message,
31 verifying_key: &Self::VerifyingKey,
32 ) -> Option<Self::PublicKey>;
33}