aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/x509/tests.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2016-11-07 20:42:43 +0000
committerSteven Fackler <[email protected]>2016-11-07 20:42:43 +0000
commitd78acc729bbe0960ddbeabb40530427175512a29 (patch)
tree8fb71b4668e3a25ce1ad9a778f5b2a58a9c9f6bc /openssl/src/x509/tests.rs
parentAdd stack creation and push (diff)
downloadrust-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.rs30
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();
+}