Unverified Commit 8c5ce91d authored by Steven Fackler's avatar Steven Fackler Committed by GitHub
Browse files

Merge pull request #1084 from npmccallum/nid

Add the ability to get Nid from MessageDigest and EcGroupRef
parents a335c1b2 702bc48b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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(
+1 −0
Original line number Diff line number Diff line
@@ -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;
+10 −0
Original line number Diff line number Diff line
@@ -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! {
+5 −0
Original line number Diff line number Diff line
@@ -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 {}