summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGalen Guyer <galen@galenguyer.com>2022-11-17 15:49:46 -0500
committerGalen Guyer <galen@galenguyer.com>2022-11-17 15:49:46 -0500
commite3bf3993d1134b2b22d52c1ab7c1c31f2179ea42 (patch)
treefbdcfd46e44282e0f2ca66c4b8889216dd8f9159
parent74a078e515e6f272c928deba3ee41130b164c447 (diff)
Better handling of non-dns SANsv1.5.2
-rw-r--r--Cargo.lock2
-rw-r--r--Cargo.toml2
-rw-r--r--src/lib/req.rs19
3 files changed, 13 insertions, 10 deletions
diff --git a/Cargo.lock b/Cargo.lock
index bac9bc8..25fc99e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -160,7 +160,7 @@ dependencies = [
[[package]]
name = "hancock"
-version = "1.5.1"
+version = "1.5.2"
dependencies = [
"caps",
"clap",
diff --git a/Cargo.toml b/Cargo.toml
index ac18fba..de6b8cc 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "hancock"
authors = ["Galen Guyer <galen@galenguyer.com>"]
-version = "1.5.1"
+version = "1.5.2"
edition = "2021"
license = "MIT"
diff --git a/src/lib/req.rs b/src/lib/req.rs
index f97955c..9587f10 100644
--- a/src/lib/req.rs
+++ b/src/lib/req.rs
@@ -78,17 +78,20 @@ pub fn generate_req(
if let Some(cn) = common_name {
if IpAddr::from_str(cn).is_ok() {
subject_alt_name.ip(cn);
- } else {
+ } else if cn.contains('@') {
+ subject_alt_name.email(cn);
+ } else if cn.contains('.') {
subject_alt_name.dns(cn);
}
}
- let subject_alt_name = subject_alt_name
- .build(&x509req_builder.x509v3_context(None))
- .unwrap();
- let mut stack = Stack::new().unwrap();
- stack.push(subject_alt_name).unwrap();
- x509req_builder.add_extensions(&stack).unwrap();
-
+ match subject_alt_name.build(&x509req_builder.x509v3_context(None)) {
+ Ok(subject_alt_name) => {
+ let mut stack = Stack::new().unwrap();
+ stack.push(subject_alt_name).unwrap();
+ x509req_builder.add_extensions(&stack).unwrap();
+ }
+ Err(_) => {}
+ }
let digest_algorithm = match pkey.id() {
Id::RSA => MessageDigest::sha256(),
Id::EC => MessageDigest::sha384(),