You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
617 B
Rust
21 lines
617 B
Rust
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<u8>);
|
|
|
|
#[derive(sqlx::Type, Clone, Serialize, Deserialize)]
|
|
#[sqlx(transparent)]
|
|
pub struct PrivateKeyDer(Vec<u8>);
|
|
|
|
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))
|
|
}
|