Loading openssl/src/dsa.rs +43 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ use std::ptr; use bn::BigNumRef; use error::ErrorStack; use pkey::{HasParams, HasPublic, Private, Public}; use pkey::{HasParams, HasPrivate, HasPublic, Private, Public}; use {cvt, cvt_p}; generic_foreign_type_and_impl_send_sync! { Loading Loading @@ -83,6 +83,28 @@ where public_key_to_der, ffi::i2d_DSA_PUBKEY } /// Returns a reference to the public exponent. pub fn pub_key(&self) -> &BigNumRef { unsafe { let mut pub_key = ptr::null(); DSA_get0_key(self.as_ptr(), &mut pub_key, ptr::null_mut()); BigNumRef::from_ptr(pub_key as *mut _) } } } impl<T> DsaRef<T> where T: HasPrivate, { pub fn priv_key(&self) -> &BigNumRef { unsafe { let mut priv_key = ptr::null(); DSA_get0_key(self.as_ptr(), ptr::null_mut(), &mut priv_key); BigNumRef::from_ptr(priv_key as *mut _) } } } impl<T> DsaRef<T> Loading Loading @@ -211,6 +233,26 @@ cfg_if! { } } cfg_if! { if #[cfg(any(ossl110, libressl273))] { use ffi::DSA_get0_key; } else { #[allow(bad_style)] unsafe fn DSA_get0_pqg( d: *mut ffi::DSA, pub_key: *mut *const ffi::BIGNUM, priv_key: *mut *const ffi::BIGNUM) { if !pub_key.is_null() { *pub_key = (*d).pub_key; } if !priv_key.is_null() { *priv_key = (*d).priv_key; } } } } #[cfg(test)] mod test { use super::*; Loading Loading
openssl/src/dsa.rs +43 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ use std::ptr; use bn::BigNumRef; use error::ErrorStack; use pkey::{HasParams, HasPublic, Private, Public}; use pkey::{HasParams, HasPrivate, HasPublic, Private, Public}; use {cvt, cvt_p}; generic_foreign_type_and_impl_send_sync! { Loading Loading @@ -83,6 +83,28 @@ where public_key_to_der, ffi::i2d_DSA_PUBKEY } /// Returns a reference to the public exponent. pub fn pub_key(&self) -> &BigNumRef { unsafe { let mut pub_key = ptr::null(); DSA_get0_key(self.as_ptr(), &mut pub_key, ptr::null_mut()); BigNumRef::from_ptr(pub_key as *mut _) } } } impl<T> DsaRef<T> where T: HasPrivate, { pub fn priv_key(&self) -> &BigNumRef { unsafe { let mut priv_key = ptr::null(); DSA_get0_key(self.as_ptr(), ptr::null_mut(), &mut priv_key); BigNumRef::from_ptr(priv_key as *mut _) } } } impl<T> DsaRef<T> Loading Loading @@ -211,6 +233,26 @@ cfg_if! { } } cfg_if! { if #[cfg(any(ossl110, libressl273))] { use ffi::DSA_get0_key; } else { #[allow(bad_style)] unsafe fn DSA_get0_pqg( d: *mut ffi::DSA, pub_key: *mut *const ffi::BIGNUM, priv_key: *mut *const ffi::BIGNUM) { if !pub_key.is_null() { *pub_key = (*d).pub_key; } if !priv_key.is_null() { *priv_key = (*d).priv_key; } } } } #[cfg(test)] mod test { use super::*; Loading