aboutsummaryrefslogtreecommitdiff
path: root/openssl/src/x509
diff options
context:
space:
mode:
authormredlek <[email protected]>2017-02-07 20:41:27 +0100
committermredlek <[email protected]>2017-02-07 20:41:27 +0100
commit30a634c877b831a0e8faf26433a302f8df61d256 (patch)
treec6aa3a0edd4ec50e5a7e571d4facc2502a4b4d7f /openssl/src/x509
parentAdd setters to new getter-functions in X509ReqRef (diff)
parentMerge pull request #572 from sfackler/foreign-types (diff)
downloadrust-openssl-30a634c877b831a0e8faf26433a302f8df61d256.tar.xz
rust-openssl-30a634c877b831a0e8faf26433a302f8df61d256.zip
Merge branch 'master' into x509_req_version_subject
Diffstat (limited to 'openssl/src/x509')
-rw-r--r--openssl/src/x509/mod.rs52
-rw-r--r--openssl/src/x509/store.rs18
2 files changed, 59 insertions, 11 deletions
diff --git a/openssl/src/x509/mod.rs b/openssl/src/x509/mod.rs
index c08fc337..174635ca 100644
--- a/openssl/src/x509/mod.rs
+++ b/openssl/src/x509/mod.rs
@@ -1,3 +1,5 @@
+use ffi;
+use foreign_types::{ForeignType, ForeignTypeRef};
use libc::{c_char, c_int, c_long, c_ulong};
use std::borrow::Borrow;
use std::collections::HashMap;
@@ -17,9 +19,7 @@ use hash::MessageDigest;
use pkey::{PKey, PKeyRef};
use rand::rand_bytes;
use error::ErrorStack;
-use ffi;
use nid::Nid;
-use types::{OpenSslType, OpenSslTypeRef};
use string::OpensslString;
use stack::{Stack, StackRef, Stackable};
@@ -53,7 +53,13 @@ pub const X509_FILETYPE_PEM: X509FileType = X509FileType(ffi::X509_FILETYPE_PEM)
pub const X509_FILETYPE_ASN1: X509FileType = X509FileType(ffi::X509_FILETYPE_ASN1);
pub const X509_FILETYPE_DEFAULT: X509FileType = X509FileType(ffi::X509_FILETYPE_DEFAULT);
-type_!(X509StoreContext, X509StoreContextRef, ffi::X509_STORE_CTX, ffi::X509_STORE_CTX_free);
+foreign_type! {
+ type CType = ffi::X509_STORE_CTX;
+ fn drop = ffi::X509_STORE_CTX_free;
+
+ pub struct X509StoreContext;
+ pub struct X509StoreContextRef;
+}
impl X509StoreContextRef {
pub fn error(&self) -> Option<X509VerifyError> {
@@ -354,7 +360,13 @@ impl X509Generator {
}
}
-type_!(X509, X509Ref, ffi::X509, ffi::X509_free);
+foreign_type! {
+ type CType = ffi::X509;
+ fn drop = ffi::X509_free;
+
+ pub struct X509;
+ pub struct X509Ref;
+}
impl X509Ref {
pub fn subject_name(&self) -> &X509NameRef {
@@ -513,7 +525,13 @@ impl Stackable for X509 {
type StackType = ffi::stack_st_X509;
}
-type_!(X509Name, X509NameRef, ffi::X509_NAME, ffi::X509_NAME_free);
+foreign_type! {
+ type CType = ffi::X509_NAME;
+ fn drop = ffi::X509_NAME_free;
+
+ pub struct X509Name;
+ pub struct X509NameRef;
+}
impl X509Name {
/// Loads subject names from a file containing PEM-formatted certificates.
@@ -567,7 +585,13 @@ impl<'a> Iterator for X509NameEntries<'a> {
}
}
-type_!(X509NameEntry, X509NameEntryRef, ffi::X509_NAME_ENTRY, ffi::X509_NAME_ENTRY_free);
+foreign_type! {
+ type CType = ffi::X509_NAME_ENTRY;
+ fn drop = ffi::X509_NAME_ENTRY_free;
+
+ pub struct X509NameEntry;
+ pub struct X509NameEntryRef;
+}
impl X509NameEntryRef {
pub fn data(&self) -> &Asn1StringRef {
@@ -578,7 +602,13 @@ impl X509NameEntryRef {
}
}
-type_!(X509Req, X509ReqRef, ffi::X509_REQ, ffi::X509_REQ_free);
+foreign_type! {
+ type CType = ffi::X509_REQ;
+ fn drop = ffi::X509_REQ_free;
+
+ pub struct X509Req;
+ pub struct X509ReqRef;
+}
impl X509Req {
/// Reads CSR from PEM
@@ -751,7 +781,13 @@ impl X509VerifyError {
}
}
-type_!(GeneralName, GeneralNameRef, ffi::GENERAL_NAME, ffi::GENERAL_NAME_free);
+foreign_type! {
+ type CType = ffi::GENERAL_NAME;
+ fn drop = ffi::GENERAL_NAME_free;
+
+ pub struct GeneralName;
+ pub struct GeneralNameRef;
+}
impl GeneralNameRef {
/// Returns the contents of this `GeneralName` if it is a `dNSName`.
diff --git a/openssl/src/x509/store.rs b/openssl/src/x509/store.rs
index dd08a49b..8b7a084b 100644
--- a/openssl/src/x509/store.rs
+++ b/openssl/src/x509/store.rs
@@ -1,12 +1,18 @@
use ffi;
+use foreign_types::ForeignTypeRef;
use std::mem;
use {cvt, cvt_p};
use error::ErrorStack;
-use types::OpenSslTypeRef;
use x509::X509;
-type_!(X509StoreBuilder, X509StoreBuilderRef, ffi::X509_STORE, ffi::X509_STORE_free);
+foreign_type! {
+ type CType = ffi::X509_STORE;
+ fn drop = ffi::X509_STORE_free;
+
+ pub struct X509StoreBuilder;
+ pub struct X509StoreBuilderRef;
+}
impl X509StoreBuilder {
/// Returns a builder for a certificate store.
@@ -50,4 +56,10 @@ impl X509StoreBuilderRef {
}
}
-type_!(X509Store, X509StoreRef, ffi::X509_STORE, ffi::X509_STORE_free);
+foreign_type! {
+ type CType = ffi::X509_STORE;
+ fn drop = ffi::X509_STORE_free;
+
+ pub struct X509Store;
+ pub struct X509StoreRef;
+}