Implement arbitrary X509 Extended Key Usage values

This commit is contained in:
Jethro Beekman 2015-06-30 22:25:00 -07:00
parent 8d1abf5156
commit 53b868697a
2 changed files with 6 additions and 3 deletions

View File

@ -77,7 +77,7 @@ impl fmt::Display for KeyUsageOption {
} }
} }
#[derive(Clone,Copy)] #[derive(Clone)]
pub enum ExtKeyUsageOption { pub enum ExtKeyUsageOption {
ServerAuth, ServerAuth,
ClientAuth, ClientAuth,
@ -90,6 +90,8 @@ pub enum ExtKeyUsageOption {
MsSgc, MsSgc,
MsEfs, MsEfs,
NsSgc, NsSgc,
/// An arbitrary key usage by OID.
Other(String),
} }
impl fmt::Display for ExtKeyUsageOption { impl fmt::Display for ExtKeyUsageOption {
@ -106,6 +108,7 @@ impl fmt::Display for ExtKeyUsageOption {
&ExtKeyUsageOption::MsSgc => "msSGC", &ExtKeyUsageOption::MsSgc => "msSGC",
&ExtKeyUsageOption::MsEfs => "msEFS", &ExtKeyUsageOption::MsEfs => "msEFS",
&ExtKeyUsageOption::NsSgc =>"nsSGC", &ExtKeyUsageOption::NsSgc =>"nsSGC",
&ExtKeyUsageOption::Other(ref s) => &s[..],
}) })
} }
} }

View File

@ -6,7 +6,7 @@ use std::fs::File;
use crypto::hash::Type::{SHA256}; use crypto::hash::Type::{SHA256};
use x509::{X509, X509Generator}; use x509::{X509, X509Generator};
use x509::KeyUsage::{DigitalSignature, KeyEncipherment}; use x509::KeyUsage::{DigitalSignature, KeyEncipherment};
use x509::ExtKeyUsage::{ClientAuth, ServerAuth}; use x509::ExtKeyUsage::{self, ClientAuth, ServerAuth};
use nid::Nid; use nid::Nid;
#[test] #[test]
@ -17,7 +17,7 @@ fn test_cert_gen() {
.set_CN("test_me") .set_CN("test_me")
.set_sign_hash(SHA256) .set_sign_hash(SHA256)
.set_usage(&[DigitalSignature, KeyEncipherment]) .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(); let (cert, pkey) = gen.generate().unwrap();
cert.write_pem(&mut io::sink()).unwrap(); cert.write_pem(&mut io::sink()).unwrap();