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 {
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[..],
})
}
}

View File

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