Loading openssl/src/x509/extension.rs +5 −0 Original line number Diff line number Diff line Loading @@ -5,12 +5,14 @@ use nid::Nid; pub enum ExtensionType { KeyUsage, ExtKeyUsage, OtherNid(Nid), } #[derive(Clone)] pub enum Extension { KeyUsage(Vec<KeyUsageOption>), ExtKeyUsage(Vec<ExtKeyUsageOption>), OtherNid(Nid,String), } impl Extension { Loading @@ -18,6 +20,7 @@ impl Extension { match self { &Extension::KeyUsage(_) => ExtensionType::KeyUsage, &Extension::ExtKeyUsage(_) => ExtensionType::ExtKeyUsage, &Extension::OtherNid(nid,_) => ExtensionType::OtherNid(nid), } } Loading @@ -25,6 +28,7 @@ impl Extension { match self { &Extension::KeyUsage(_) => Nid::KeyUsage, &Extension::ExtKeyUsage(_) => Nid::ExtendedKeyUsage, &Extension::OtherNid(nid,_) => nid, } } } Loading @@ -44,6 +48,7 @@ impl ToString for Extension { match self { &Extension::KeyUsage(ref purposes) => join(purposes.iter(),","), &Extension::ExtKeyUsage(ref purposes) => join(purposes.iter(),","), &Extension::OtherNid(_,ref value) => value.clone(), } } } Loading openssl/src/x509/tests.rs +3 −2 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ use std::fs::File; use crypto::hash::Type::{SHA256}; use x509::{X509, X509Generator}; use x509::extension::Extension::{KeyUsage,ExtKeyUsage}; use x509::extension::Extension::{KeyUsage,ExtKeyUsage,OtherNid}; use x509::extension::KeyUsageOption::{DigitalSignature, KeyEncipherment}; use x509::extension::ExtKeyUsageOption::{self, ClientAuth, ServerAuth}; use nid::Nid; Loading @@ -18,7 +18,8 @@ fn test_cert_gen() { .set_CN("test_me") .set_sign_hash(SHA256) .add_extension(KeyUsage(vec![DigitalSignature, KeyEncipherment])) .add_extension(ExtKeyUsage(vec![ClientAuth, ServerAuth, ExtKeyUsageOption::Other("2.999".to_owned())])); .add_extension(ExtKeyUsage(vec![ClientAuth, ServerAuth, ExtKeyUsageOption::Other("2.999".to_owned())])) .add_extension(OtherNid(Nid::BasicConstraints,"critical,CA:TRUE".to_owned())); let (cert, pkey) = gen.generate().unwrap(); cert.write_pem(&mut io::sink()).unwrap(); Loading Loading
openssl/src/x509/extension.rs +5 −0 Original line number Diff line number Diff line Loading @@ -5,12 +5,14 @@ use nid::Nid; pub enum ExtensionType { KeyUsage, ExtKeyUsage, OtherNid(Nid), } #[derive(Clone)] pub enum Extension { KeyUsage(Vec<KeyUsageOption>), ExtKeyUsage(Vec<ExtKeyUsageOption>), OtherNid(Nid,String), } impl Extension { Loading @@ -18,6 +20,7 @@ impl Extension { match self { &Extension::KeyUsage(_) => ExtensionType::KeyUsage, &Extension::ExtKeyUsage(_) => ExtensionType::ExtKeyUsage, &Extension::OtherNid(nid,_) => ExtensionType::OtherNid(nid), } } Loading @@ -25,6 +28,7 @@ impl Extension { match self { &Extension::KeyUsage(_) => Nid::KeyUsage, &Extension::ExtKeyUsage(_) => Nid::ExtendedKeyUsage, &Extension::OtherNid(nid,_) => nid, } } } Loading @@ -44,6 +48,7 @@ impl ToString for Extension { match self { &Extension::KeyUsage(ref purposes) => join(purposes.iter(),","), &Extension::ExtKeyUsage(ref purposes) => join(purposes.iter(),","), &Extension::OtherNid(_,ref value) => value.clone(), } } } Loading
openssl/src/x509/tests.rs +3 −2 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ use std::fs::File; use crypto::hash::Type::{SHA256}; use x509::{X509, X509Generator}; use x509::extension::Extension::{KeyUsage,ExtKeyUsage}; use x509::extension::Extension::{KeyUsage,ExtKeyUsage,OtherNid}; use x509::extension::KeyUsageOption::{DigitalSignature, KeyEncipherment}; use x509::extension::ExtKeyUsageOption::{self, ClientAuth, ServerAuth}; use nid::Nid; Loading @@ -18,7 +18,8 @@ fn test_cert_gen() { .set_CN("test_me") .set_sign_hash(SHA256) .add_extension(KeyUsage(vec![DigitalSignature, KeyEncipherment])) .add_extension(ExtKeyUsage(vec![ClientAuth, ServerAuth, ExtKeyUsageOption::Other("2.999".to_owned())])); .add_extension(ExtKeyUsage(vec![ClientAuth, ServerAuth, ExtKeyUsageOption::Other("2.999".to_owned())])) .add_extension(OtherNid(Nid::BasicConstraints,"critical,CA:TRUE".to_owned())); let (cert, pkey) = gen.generate().unwrap(); cert.write_pem(&mut io::sink()).unwrap(); Loading