Add pointers to enforce lifetimes

This commit is contained in:
Steven Fackler 2013-12-08 22:12:49 -08:00
parent 08ef3b5b04
commit 608d6558de
1 changed files with 10 additions and 1 deletions

11
lib.rs
View File

@ -194,17 +194,26 @@ impl X509StoreContext {
if ptr.is_null() { if ptr.is_null() {
None None
} else { } else {
Some(X509 { x509: ptr }) Some(X509 { ctx: self, x509: ptr })
} }
} }
} }
/// A public key certificate /// A public key certificate
pub struct X509<'ctx> { pub struct X509<'ctx> {
priv ctx: &'ctx X509StoreContext,
priv x509: *ffi::X509 priv x509: *ffi::X509
} }
impl<'ctx> X509<'ctx> {
pub fn subject_name<'a>(&'a self) -> X509Name<'a> {
let name = unsafe { ffi::X509_get_subject_name(self.x509) };
X509Name { x509: self, name: name }
}
}
pub struct X509Name<'x> { pub struct X509Name<'x> {
priv x509: &'x X509<'x>,
priv name: *ffi::X509_NAME priv name: *ffi::X509_NAME
} }