crypto_dispatch/
keypair.rs1use zeroize::Zeroizing;
6
7use crate::multikey;
8use crate::registry;
9use crate::AlgorithmError;
10use crypto_core::Algorithm;
11
12pub struct GeneratedKeypair {
14 pub public_key: Vec<u8>,
16 pub secret_key: Zeroizing<Vec<u8>>,
18 pub public_key_multikey: String,
20}
21
22pub fn generate_multikey_keypair(alg: Algorithm) -> Result<GeneratedKeypair, AlgorithmError> {
24 let (public, secret) = registry::generate_keypair(alg)?;
25 let multikey = multikey::public_key_to_multikey(alg, &public)?;
26
27 Ok(GeneratedKeypair {
28 public_key: public,
29 secret_key: secret,
30 public_key_multikey: multikey,
31 })
32}