aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/x509/tests.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2015-02-07 21:28:54 -0800
committerSteven Fackler <[email protected]>2015-02-07 21:30:05 -0800
commitec65b0c67b452539fded5e06cbb6ce1d165074e0 (patch)
treec50c22c2ce4ca095149c96a0f3a3b935b4012a5c /openssl/src/x509/tests.rs
parentFix deprecation warnings in openssl-sys (diff)
downloadrust-openssl-ec65b0c67b452539fded5e06cbb6ce1d165074e0.tar.xz
rust-openssl-ec65b0c67b452539fded5e06cbb6ce1d165074e0.zip
Move docs to this repo and auto build
Diffstat (limited to 'openssl/src/x509/tests.rs')
-rw-r--r--openssl/src/x509/tests.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/openssl/src/x509/tests.rs b/openssl/src/x509/tests.rs
new file mode 100644
index 00000000..4f24e70c
--- /dev/null
+++ b/openssl/src/x509/tests.rs
@@ -0,0 +1,51 @@
+use serialize::hex::FromHex;
+use std::old_io::{File, Open, Read};
+use std::old_io::util::NullWriter;
+
+use crypto::hash::Type::{SHA256};
+use x509::{X509, X509Generator};
+use x509::KeyUsage::{DigitalSignature, KeyEncipherment};
+use x509::ExtKeyUsage::{ClientAuth, ServerAuth};
+
+#[test]
+fn test_cert_gen() {
+ let gen = X509Generator::new()
+ .set_bitlength(2048)
+ .set_valid_period(365*2)
+ .set_CN("test_me")
+ .set_sign_hash(SHA256)
+ .set_usage(&[DigitalSignature, KeyEncipherment])
+ .set_ext_usage(&[ClientAuth, ServerAuth]);
+
+ let res = gen.generate();
+ assert!(res.is_ok());
+
+ let (cert, pkey) = res.unwrap();
+
+ let mut writer = NullWriter;
+ assert!(cert.write_pem(&mut writer).is_ok());
+ assert!(pkey.write_pem(&mut writer).is_ok());
+
+ // FIXME: check data in result to be correct, needs implementation
+ // of X509 getters
+}
+
+#[test]
+fn test_cert_loading() {
+ let cert_path = Path::new("test/cert.pem");
+ let mut file = File::open_mode(&cert_path, Open, Read)
+ .ok()
+ .expect("Failed to open `test/cert.pem`");
+
+ let cert = X509::from_pem(&mut file).ok().expect("Failed to load PEM");
+ let fingerprint = cert.fingerprint(SHA256).unwrap();
+
+ // Hash was generated as SHA256 hash of certificate "test/cert.pem"
+ // in DER format.
+ // Command: openssl x509 -in test/cert.pem -outform DER | openssl dgst -sha256
+ // Please update if "test/cert.pem" will ever change
+ let hash_str = "46e3f1a6d17a41ce70d0c66ef51cee2ab4ba67cac8940e23f10c1f944b49fb5c";
+ let hash_vec = hash_str.from_hex().unwrap();
+
+ assert_eq!(fingerprint.as_slice(), hash_vec.as_slice());
+}