aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2016-08-09 22:15:16 -0700
committerSteven Fackler <[email protected]>2016-08-09 22:15:16 -0700
commit1ac54b06e9c68ecc79e4bb0c4f65296c669a6cc8 (patch)
tree30fc7505d0d2165080608a266c9777ce29ced004 /openssl/src
parentMake c_helpers optional (diff)
downloadrust-openssl-1ac54b06e9c68ecc79e4bb0c4f65296c669a6cc8.tar.xz
rust-openssl-1ac54b06e9c68ecc79e4bb0c4f65296c669a6cc8.zip
Move X509_get_extensions to openssl helpers
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/c_helpers.c4
-rw-r--r--openssl/src/c_helpers.rs1
-rw-r--r--openssl/src/x509/mod.rs6
-rw-r--r--openssl/src/x509/tests.rs1
4 files changed, 10 insertions, 2 deletions
diff --git a/openssl/src/c_helpers.c b/openssl/src/c_helpers.c
index 5b1b9615..f8bc2d0d 100644
--- a/openssl/src/c_helpers.c
+++ b/openssl/src/c_helpers.c
@@ -7,3 +7,7 @@ void rust_SSL_CTX_clone(SSL_CTX *ctx) {
void rust_X509_clone(X509 *x509) {
CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509);
}
+
+STACK_OF(X509_EXTENSION) *rust_X509_get_extensions(X509 *x) {
+ return x->cert_info ? x->cert_info->extensions : NULL;
+}
diff --git a/openssl/src/c_helpers.rs b/openssl/src/c_helpers.rs
index 3d938192..f074d404 100644
--- a/openssl/src/c_helpers.rs
+++ b/openssl/src/c_helpers.rs
@@ -4,4 +4,5 @@ use ffi;
extern "C" {
pub fn rust_SSL_CTX_clone(cxt: *mut ffi::SSL_CTX);
pub fn rust_X509_clone(x509: *mut ffi::X509);
+ pub fn rust_X509_get_extensions(x: *mut ffi::X509) -> *mut ffi::stack_st_X509_EXTENSION;
}
diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs
index b7503e0a..3bdbaa67 100644
--- a/openssl/src/x509/mod.rs
+++ b/openssl/src/x509/mod.rs
@@ -17,7 +17,6 @@ use crypto::hash::Type as HashType;
use crypto::pkey::PKey;
use crypto::rand::rand_bytes;
use ffi;
-use ffi_extras;
use nid::Nid;
use error::ErrorStack;
@@ -346,6 +345,9 @@ impl X509Generator {
}
/// Obtain a certificate signing request (CSR)
+ ///
+ /// Requries the `x509_generator_request` feature.
+ #[cfg(feature = "x509_generator_request")]
pub fn request(&self, p_key: &PKey) -> Result<X509Req, ErrorStack> {
let cert = match self.sign(p_key) {
Ok(c) => c,
@@ -356,7 +358,7 @@ impl X509Generator {
let req = ffi::X509_to_X509_REQ(cert.handle(), ptr::null_mut(), ptr::null());
try_ssl_null!(req);
- let exts = ffi_extras::X509_get_extensions(cert.handle());
+ let exts = ::c_helpers::rust_X509_get_extensions(cert.handle());
if exts != ptr::null_mut() {
try_ssl!(ffi::X509_REQ_add_extensions(req, exts));
}
diff --git a/openssl/src/x509/tests.rs b/openssl/src/x509/tests.rs
index ab480836..c09b31cd 100644
--- a/openssl/src/x509/tests.rs
+++ b/openssl/src/x509/tests.rs
@@ -69,6 +69,7 @@ fn test_cert_gen_extension_bad_ordering() {
}
#[test]
+#[cfg(feature = "x509_generator_request")]
fn test_req_gen() {
let pkey = pkey();