diff options
| author | Steven Fackler <[email protected]> | 2016-11-07 20:42:43 +0000 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2016-11-07 20:42:43 +0000 |
| commit | d78acc729bbe0960ddbeabb40530427175512a29 (patch) | |
| tree | 8fb71b4668e3a25ce1ad9a778f5b2a58a9c9f6bc /openssl/src/x509/tests.rs | |
| parent | Add stack creation and push (diff) | |
| download | rust-openssl-d78acc729bbe0960ddbeabb40530427175512a29.tar.xz rust-openssl-d78acc729bbe0960ddbeabb40530427175512a29.zip | |
Add an X509ReqBuilder
Diffstat (limited to 'openssl/src/x509/tests.rs')
| -rw-r--r-- | openssl/src/x509/tests.rs | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/openssl/src/x509/tests.rs b/openssl/src/x509/tests.rs index 510bb437..514b8edc 100644 --- a/openssl/src/x509/tests.rs +++ b/openssl/src/x509/tests.rs @@ -5,7 +5,8 @@ use bn::{BigNum, MSB_MAYBE_ZERO}; use hash::MessageDigest; use pkey::PKey; use rsa::Rsa; -use x509::{X509, X509Generator, X509Name}; +use stack::Stack; +use x509::{X509, X509Generator, X509Name, X509Req}; use x509::extension::{Extension, BasicConstraints, KeyUsage, ExtendedKeyUsage, SubjectKeyIdentifier, AuthorityKeyIdentifier, SubjectAlternativeName}; use x509::extension::AltNameOption as SAN; @@ -187,6 +188,7 @@ fn x509_builder() { let name = name.build(); let mut builder = X509::builder().unwrap(); + builder.set_version(2).unwrap(); builder.set_subject_name(&name).unwrap(); builder.set_issuer_name(&name).unwrap(); builder.set_not_before(&Asn1Time::days_from_now(0).unwrap()).unwrap(); @@ -232,3 +234,29 @@ fn x509_builder() { let cn = x509.subject_name().entries_by_nid(nid::COMMONNAME).next().unwrap(); assert_eq!("foobar.com".as_bytes(), cn.data().as_slice()); } + +#[test] +fn x509_req_builder() { + let pkey = pkey(); + + let mut name = X509Name::builder().unwrap(); + name.append_entry_by_nid(nid::COMMONNAME, "foobar.com").unwrap(); + let name = name.build(); + + let mut builder = X509Req::builder().unwrap(); + builder.set_version(2).unwrap(); + builder.set_subject_name(&name).unwrap(); + builder.set_pubkey(&pkey).unwrap(); + + let mut extensions = Stack::new().unwrap(); + let key_usage = KeyUsage::new().digital_signature().key_encipherment().build().unwrap(); + extensions.push(key_usage).unwrap(); + let subject_alternative_name = SubjectAlternativeName::new() + .dns("example.com") + .build(&builder.x509v3_context(None)) + .unwrap(); + extensions.push(subject_alternative_name).unwrap(); + builder.add_extensions(&extensions).unwrap(); + + builder.sign(&pkey, MessageDigest::sha256()).unwrap(); +} |