use openssl::pkey::{Private, Public}; use openssl::rsa::Rsa; use serde::{Deserialize, Serialize}; use crate::core::*; #[derive(sqlx::Type, Clone, Serialize, Deserialize)] #[sqlx(transparent)] pub struct PublicKeyDer(Vec); #[derive(sqlx::Type, Clone, Serialize, Deserialize)] #[sqlx(transparent)] pub struct PrivateKeyDer(Vec); pub fn generate_keypair() -> Result<(PublicKeyDer, PrivateKeyDer)> { let private = Rsa::generate(4096)?; let public_key = PublicKeyDer(private.public_key_to_der()?); let private_key = PrivateKeyDer(private.private_key_to_der()?); Ok((public_key, private_key)) }