     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27

    use std::io::{self, Read, Write};

    // mod rsa;
    mod ed25519;

    // pub use self::rsa::RSA;

    pub use self::ed25519::ED25519;

    pub trait KeyPair: Sync + Send {
        fn system(&self) -> &'static CryptoSystem;

        fn has_private(&self) -> bool;

        fn verify(&self, data: &[u8], signature: &[u8]) -> Result<bool, ()>;
        fn sign(&self, data: &[u8]) -> Result<Vec<u8>, ()>;

        fn write_public(&self, w: &mut Write) -> io::Result<()>;
        fn export(&self, w: &mut Write) -> io::Result<()>;
    }

    pub struct CryptoSystem {
        pub id: &'static str,
        pub generate_key_pair: fn(bits: Option<u32>) -> Box<KeyPair>,
        pub import: fn(r: &mut Read) -> io::Result<Box<KeyPair>>,
        pub read_public: fn(r: &mut Read) -> io::Result<Box<KeyPair>>,
    }

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)