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();