ts_crypto/
lib.rs

1//! `ts-crypto`
2
3pub mod edwards;
4pub mod elliptic;
5pub mod known;
6pub mod rsa;
7
8/// Trait for verifying a signature.
9pub trait VerifySignature {
10    /// Returns if this key verifies this signature
11    fn verifies_signature(&self, signature: &[u8], message: &[u8]) -> bool;
12}
13
14/// Trait for signing a message
15pub trait SignMessage {
16    /// Sign the given message
17    fn sign(&self, message: &[u8]) -> Vec<u8>;
18}
19
20/// Trait for creating a verifying key.
21pub trait ToVerifier {
22    /// The verifying key
23    type Key: VerifySignature;
24
25    /// Create a verifying key from this key.
26    fn verifying_key(&self) -> Self::Key;
27}
28
29/// Create a key from a `DER` encoded document
30pub trait FromDer: Sized {
31    /// Create a key from a `DER` encoded document
32    fn from_der(der: &[u8]) -> Option<Self>;
33
34    /// Create a key from a `PEM` encoded `DER`
35    fn from_pem(pem: &[u8]) -> Option<Self> {
36        let (_, der) = der::pem::decode_vec(pem).ok()?;
37        Self::from_der(&der)
38    }
39}