+internal openssl cert provider
This commit is contained in:
42
src/certs.rs
42
src/certs.rs
@@ -1,9 +1,9 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use anyhow::{anyhow, Context, Result};
|
||||
|
||||
use std::{path::PathBuf, sync::Arc};
|
||||
|
||||
use crate::common::{is_file_exist, read_file, write_file, AppConfig};
|
||||
use crate::crypto::ICryptoProvider;
|
||||
use crate::common::{is_file_exist, read_file, write_file, AppConfig, OpenSSLProviderArg, VarsMap};
|
||||
use crate::crypto::{ICryptoProvider, OpenSSLBinProvider, OpenSSLLibProvider};
|
||||
|
||||
pub(crate) struct Certs<T>
|
||||
where
|
||||
@@ -56,8 +56,8 @@ where
|
||||
return Ok(false);
|
||||
}
|
||||
|
||||
self.request().await?;
|
||||
self.sign().await?;
|
||||
self.request().await.context("req error")?;
|
||||
self.sign().await.context("sign error")?;
|
||||
|
||||
let (template_file, ca_file, cert_file, key_file) = (
|
||||
self.template_file.clone(),
|
||||
@@ -87,3 +87,35 @@ where
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn build_client_config(config: &AppConfig, vars: VarsMap) -> Result<()> {
|
||||
let result_file: PathBuf;
|
||||
let created: bool;
|
||||
|
||||
if let OpenSSLProviderArg::ExternalBin(_) = config.openssl {
|
||||
let certs = Certs::new(config, OpenSSLBinProvider::from_cfg(config, vars));
|
||||
created = certs
|
||||
.build_client_config()
|
||||
.await
|
||||
.context("external openssl error")?;
|
||||
result_file = certs.config_file;
|
||||
} else {
|
||||
let certs = Certs::new(config, OpenSSLLibProvider::from_cfg(config, vars));
|
||||
created = certs
|
||||
.build_client_config()
|
||||
.await
|
||||
.context("internal openssl error")?;
|
||||
result_file = certs.config_file;
|
||||
}
|
||||
|
||||
let result_file = result_file
|
||||
.to_str()
|
||||
.ok_or(anyhow!("result_file PathBuf to str convert error"))?;
|
||||
|
||||
if created {
|
||||
println!("created: {result_file}");
|
||||
Ok(())
|
||||
} else {
|
||||
Err(anyhow!("file exists: {result_file}"))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user