aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorJethro Beekman <[email protected]>2015-06-30 22:25:00 -0700
committerJethro Beekman <[email protected]>2015-07-01 00:18:45 -0700
commit53b868697a754229ba457908f29af5e8fd83404a (patch)
tree31de85bb9b56383dbbf814bec16625ff70839917 /openssl/src
parentImplement "extensions" field in X509generator, and change existing extensions... (diff)
downloadrust-openssl-53b868697a754229ba457908f29af5e8fd83404a.tar.xz
rust-openssl-53b868697a754229ba457908f29af5e8fd83404a.zip
Implement arbitrary X509 Extended Key Usage values
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/x509/extension.rs5
-rw-r--r--openssl/src/x509/tests.rs4
2 files changed, 6 insertions, 3 deletions
diff --git a/openssl/src/x509/extension.rs b/openssl/src/x509/extension.rs
index 4f8a3c3b..66b218ad 100644
--- a/openssl/src/x509/extension.rs
+++ b/openssl/src/x509/extension.rs
@@ -77,7 +77,7 @@ impl fmt::Display for KeyUsageOption {
}
}
-#[derive(Clone,Copy)]
+#[derive(Clone)]
pub enum ExtKeyUsageOption {
ServerAuth,
ClientAuth,
@@ -90,6 +90,8 @@ pub enum ExtKeyUsageOption {
MsSgc,
MsEfs,
NsSgc,
+ /// An arbitrary key usage by OID.
+ Other(String),
}
impl fmt::Display for ExtKeyUsageOption {
@@ -106,6 +108,7 @@ impl fmt::Display for ExtKeyUsageOption {
&ExtKeyUsageOption::MsSgc => "msSGC",
&ExtKeyUsageOption::MsEfs => "msEFS",
&ExtKeyUsageOption::NsSgc =>"nsSGC",
+ &ExtKeyUsageOption::Other(ref s) => &s[..],
})
}
}
diff --git a/openssl/src/x509/tests.rs b/openssl/src/x509/tests.rs
index ca9ce68c..66dc33d3 100644
--- a/openssl/src/x509/tests.rs
+++ b/openssl/src/x509/tests.rs
@@ -6,7 +6,7 @@ use std::fs::File;
use crypto::hash::Type::{SHA256};
use x509::{X509, X509Generator};
use x509::KeyUsage::{DigitalSignature, KeyEncipherment};
-use x509::ExtKeyUsage::{ClientAuth, ServerAuth};
+use x509::ExtKeyUsage::{self, ClientAuth, ServerAuth};
use nid::Nid;
#[test]
@@ -17,7 +17,7 @@ fn test_cert_gen() {
.set_CN("test_me")
.set_sign_hash(SHA256)
.set_usage(&[DigitalSignature, KeyEncipherment])
- .set_ext_usage(&[ClientAuth, ServerAuth]);
+ .set_ext_usage(&[ClientAuth, ServerAuth, ExtKeyUsage::Other("2.999".to_owned())]);
let (cert, pkey) = gen.generate().unwrap();
cert.write_pem(&mut io::sink()).unwrap();