signature/
keypair.rs

1//! Signing keypairs.
2
3/// Signing keypair with an associated verifying key.
4///
5/// This represents a type which holds both a signing key and a verifying key.
6pub trait Keypair {
7    /// Verifying key type for this keypair.
8    type VerifyingKey: Clone;
9
10    /// Get the verifying key which can verify signatures produced by the
11    /// signing key portion of this keypair.
12    fn verifying_key(&self) -> Self::VerifyingKey;
13}
14
15/// Signing keypair with an associated verifying key.
16///
17/// This represents a type which holds both a signing key and a verifying key.
18pub trait KeypairRef: AsRef<Self::VerifyingKey> {
19    /// Verifying key type for this keypair.
20    type VerifyingKey: Clone;
21}
22
23impl<K: KeypairRef> Keypair for K {
24    type VerifyingKey = <Self as KeypairRef>::VerifyingKey;
25
26    fn verifying_key(&self) -> Self::VerifyingKey {
27        self.as_ref().clone()
28    }
29}