From b57cd2ed45dd66bf95bf74609fc4beee4577384a Mon Sep 17 00:00:00 2001 From: lubeilin <1791778603@qq.com> Date: Thu, 29 Feb 2024 22:12:40 +0800 Subject: [PATCH] =?UTF-8?q?[mio]=20=E7=AE=80=E5=8C=96feature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnt/src/cipher/mod.rs | 5 ++++- vnt/src/cipher/rsa_cipher.rs | 43 +++++++++--------------------------- 2 files changed, 15 insertions(+), 33 deletions(-) diff --git a/vnt/src/cipher/mod.rs b/vnt/src/cipher/mod.rs index a2f9bbc..cc31860 100644 --- a/vnt/src/cipher/mod.rs +++ b/vnt/src/cipher/mod.rs @@ -21,7 +21,7 @@ mod openssl_aes_ecb; #[cfg(any(feature = "aes_gcm", feature = "server_encrypt"))] #[cfg(feature = "ring-cipher")] mod ring_aes_gcm_cipher; -mod rsa_cipher; + #[cfg(feature = "sm4_cbc")] mod sm4_cbc; pub use cipher::Cipher; @@ -34,4 +34,7 @@ pub use cipher::CipherModel; feature = "sm4_cbc" ))] pub use finger::Finger; +#[cfg(feature = "server_encrypt")] +mod rsa_cipher; +#[cfg(feature = "server_encrypt")] pub use rsa_cipher::RsaCipher; diff --git a/vnt/src/cipher/rsa_cipher.rs b/vnt/src/cipher/rsa_cipher.rs index ce2d248..38d4f51 100644 --- a/vnt/src/cipher/rsa_cipher.rs +++ b/vnt/src/cipher/rsa_cipher.rs @@ -1,32 +1,24 @@ use crate::protocol::NetPacket; use std::io; - -#[cfg(feature = "server_encrypt")] -use crate::protocol::body::{RsaSecretBody, RSA_ENCRYPTION_RESERVED}; -#[cfg(feature = "server_encrypt")] -use rand::Rng; -#[cfg(feature = "server_encrypt")] -use rsa::pkcs8::der::Decode; -#[cfg(feature = "server_encrypt")] -use rsa::RsaPublicKey; -#[cfg(feature = "server_encrypt")] -use sha2::Digest; -#[cfg(feature = "server_encrypt")] -use spki::{DecodePublicKey, EncodePublicKey}; +use { + crate::protocol::body::{RsaSecretBody, RSA_ENCRYPTION_RESERVED}, + rand::Rng, + rsa::pkcs8::der::Decode, + rsa::RsaPublicKey, + sha2::Digest, + spki::{DecodePublicKey, EncodePublicKey}, +}; #[derive(Clone)] pub struct RsaCipher { - #[cfg(feature = "server_encrypt")] inner: Inner, } -#[cfg(feature = "server_encrypt")] #[derive(Clone)] struct Inner { public_key: RsaPublicKey, } impl RsaCipher { - #[cfg(feature = "server_encrypt")] pub fn new(der: &[u8]) -> io::Result { match RsaPublicKey::from_public_key_der(der) { Ok(public_key) => { @@ -39,11 +31,7 @@ impl RsaCipher { )), } } - #[cfg(not(feature = "server_encrypt"))] - pub fn new(_der: &[u8]) -> io::Result { - unimplemented!() - } - #[cfg(feature = "server_encrypt")] + pub fn finger(&self) -> io::Result { match self.inner.public_key.to_public_key_der() { Ok(der) => match rsa::pkcs8::SubjectPublicKeyInfoRef::from_der(der.as_bytes()) { @@ -65,21 +53,12 @@ impl RsaCipher { )), } } - #[cfg(not(feature = "server_encrypt"))] - pub fn finger(&self) -> io::Result { - unimplemented!() + pub fn public_key(&self) -> io::Result<&RsaPublicKey> { + return Ok(&self.inner.public_key); } } impl RsaCipher { - #[cfg(not(feature = "server_encrypt"))] - pub fn encrypt + AsMut<[u8]>>( - &self, - _net_packet: &mut NetPacket, - ) -> io::Result>> { - unimplemented!() - } - #[cfg(feature = "server_encrypt")] /// net_packet 必须预留足够长度 pub fn encrypt + AsMut<[u8]>>( &self,