1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use {PrivateKey, PublicKey};


impl PrivateKey {
    /// Return public key for this private key
    pub fn public_key(&self) -> PublicKey {
        match self {
            &PrivateKey::Ed25519(data) => {
                let mut ar = [0u8; 32];
                ar.copy_from_slice(&data[32..]);
                PublicKey::Ed25519(ar)
            }
            &PrivateKey::Rsa { ref e, ref n, .. } => {
                PublicKey::Rsa { exponent: e.clone(), modulus: n.clone() }
            }
        }
    }
}