diff --git a/examples/generate_self_signed_ca.rs b/examples/generate_self_signed_ca.rs index 6cb5a42..d82636a 100644 --- a/examples/generate_self_signed_ca.rs +++ b/examples/generate_self_signed_ca.rs @@ -1,6 +1,9 @@ use std::fs; -use rcgen::{BasicConstraints, Certificate, CertificateParams, DistinguishedName, DnType, IsCa, KeyPair, PKCS_ECDSA_P256_SHA256}; +use rcgen::{ + BasicConstraints, Certificate, CertificateParams, + DistinguishedName, DnType, IsCa, KeyPair, PKCS_ECDSA_P256_SHA256, +}; fn main() { let key_pair = KeyPair::generate(&PKCS_ECDSA_P256_SHA256).expect("Generate key pair failed"); diff --git a/src/app.rs b/src/app.rs index 07230d8..cd2fd36 100644 --- a/src/app.rs +++ b/src/app.rs @@ -20,13 +20,13 @@ pub struct ProxyApp { tls: bool, lookup_dns: bool, host_configs: Vec, - tokio_async_resolver: TokioAsyncResolver, + dns_resolver: TokioAsyncResolver, dns_resolver_cache_map: RwLock>, } impl ProxyApp { pub fn new(tls: bool, lookup_dns: bool, host_configs: Vec) -> Self { - let tokio_async_resolver = TokioAsyncResolver::tokio( + let dns_resolver = TokioAsyncResolver::tokio( ResolverConfig::default(), ResolverOpts::default(), ); @@ -34,7 +34,7 @@ impl ProxyApp { tls, lookup_dns, host_configs, - tokio_async_resolver, + dns_resolver, dns_resolver_cache_map: Default::default(), } } @@ -47,12 +47,11 @@ impl ProxyApp { return Some(ipv4_address.to_string()); } } - let ips = self.tokio_async_resolver.ipv4_lookup(hostname).await; + let ips = self.dns_resolver.ipv4_lookup(hostname).await; log::debug!("DNS lookup {} --> {:#?}", hostname, ips); match ips { Ok(ips) => { - let records = ips.as_lookup().records(); - for record in records { + for record in ips.as_lookup().records() { if let Some(RData::A(a)) = record.data() { let ipv4_address = a.0.to_string(); { diff --git a/src/cert.rs b/src/cert.rs index 2edd270..1aafc8f 100644 --- a/src/cert.rs +++ b/src/cert.rs @@ -36,35 +36,23 @@ pub fn issue_certificate(intermediate_certificate: &Certificate, domain: &str) - }) } +macro_rules! ecc_private_key_convert { + ($base_crate:ident, $pem:expr) => {{ + use $base_crate::{pkcs8::{DecodePrivateKey, EncodePrivateKey, LineEnding}, SecretKey}; + let secret_key = SecretKey::from_pkcs8_pem($pem); + if let Ok(secret_key) = secret_key { + if let Ok(pem) = secret_key.to_pkcs8_pem(LineEnding::CR) { + return pem.to_string(); + } + } + }}; +} + fn parse_pkcs8(pem: &str) -> String { // KeyPair only support PKCS#8 private key with public key, though public key is optional - { - use p256::{pkcs8::{DecodePrivateKey, EncodePrivateKey, LineEnding}, SecretKey}; - let secret_key = SecretKey::from_pkcs8_pem(pem); - if let Ok(secret_key) = secret_key { - if let Ok(pem) = secret_key.to_pkcs8_pem(LineEnding::CR) { - return pem.to_string(); - } - } - } - { - use p384::{pkcs8::{DecodePrivateKey, EncodePrivateKey, LineEnding}, SecretKey}; - let secret_key = SecretKey::from_pkcs8_pem(pem); - if let Ok(secret_key) = secret_key { - if let Ok(pem) = secret_key.to_pkcs8_pem(LineEnding::CR) { - return pem.to_string(); - } - } - } - { - use p521::{pkcs8::{DecodePrivateKey, EncodePrivateKey, LineEnding}, SecretKey}; - let secret_key = SecretKey::from_pkcs8_pem(pem); - if let Ok(secret_key) = secret_key { - if let Ok(pem) = secret_key.to_pkcs8_pem(LineEnding::CR) { - return pem.to_string(); - } - } - } + ecc_private_key_convert!(p256, pem); + ecc_private_key_convert!(p384, pem); + ecc_private_key_convert!(p521, pem); pem.to_string() }