Merge pull request #1084 from npmccallum/nid

Add the ability to get Nid from MessageDigest and EcGroupRef
This commit is contained in:
Steven Fackler 2019-03-19 21:44:58 -04:00 committed by GitHub
commit 8c5ce91d07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 0 deletions

View File

@ -30,6 +30,8 @@ extern "C" {
ctx: *mut BN_CTX,
) -> c_int;
pub fn EC_GROUP_get_curve_name(group: *const EC_GROUP) -> c_int;
pub fn EC_GROUP_set_asn1_flag(key: *mut EC_GROUP, flag: c_int);
pub fn EC_GROUP_get_curve_GFp(

View File

@ -23,6 +23,7 @@ pub unsafe fn EVP_get_digestbynid(type_: c_int) -> *const EVP_MD {
extern "C" {
pub fn EVP_MD_size(md: *const EVP_MD) -> c_int;
pub fn EVP_MD_type(md: *const EVP_MD) -> c_int;
#[cfg(any(ossl110, libressl273))]
pub fn EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> c_int;

View File

@ -237,6 +237,16 @@ impl EcGroupRef {
ffi::EC_GROUP_set_asn1_flag(self.as_ptr(), flag.0);
}
}
/// Returns the name of the curve, if a name is associated.
///
/// OpenSSL documentation at [`EC_GROUP_get_curve_name`]
///
/// [`EC_GROUP_get_curve_name`]: https://www.openssl.org/docs/man1.1.0/crypto/EC_GROUP_get_curve_name.html
pub fn curve_name(&self) -> Option<Nid> {
let nid = unsafe { ffi::EC_GROUP_get_curve_name(self.as_ptr()) };
if nid > 0 { Some(Nid::from_raw(nid)) } else { None }
}
}
foreign_type_and_impl_send_sync! {

View File

@ -106,6 +106,11 @@ impl MessageDigest {
pub fn size(&self) -> usize {
unsafe { ffi::EVP_MD_size(self.0) as usize }
}
/// The name of the digest
pub fn type_(&self) -> Nid {
Nid::from_raw(unsafe { ffi::EVP_MD_type(self.0) })
}
}
unsafe impl Sync for MessageDigest {}