diff --git a/attestation-agent/deps/crypto/src/native/rsa.rs b/attestation-agent/deps/crypto/src/native/rsa.rs index e13a8ca86..90eab4a17 100644 --- a/attestation-agent/deps/crypto/src/native/rsa.rs +++ b/attestation-agent/deps/crypto/src/native/rsa.rs @@ -8,8 +8,9 @@ use openssl::{ pkey::Private, rsa::{Padding, Rsa}, }; +use zeroize::Zeroizing; -use crate::PaddingMode; +use crate::rsa::PaddingMode; #[derive(Debug, Clone)] pub struct RSAKeyPair { @@ -44,4 +45,16 @@ impl RSAKeyPair { pub fn e(&self) -> Vec { self.private_key.e().to_vec() } + + pub fn to_pkcs1_pem(&self) -> Result> { + let res = self.private_key.private_key_to_pem()?; + let pem = String::from_utf8(res)?; + Ok(Zeroizing::new(pem)) + } + + pub fn from_pkcs1_pem(pem: &str) -> Result { + let private_key = Rsa::::private_key_from_pem(pem.as_bytes())?; + + Ok(Self { private_key }) + } }