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

Merge pull request #1427 from jiegec/add-sm3

Add sm3 cryptographic hash support
parents ad741f88 fb5f94e0
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -81,3 +81,7 @@ RUST_CONF_OPENSSL_NO_TLSEXT
#ifdef OPENSSL_NO_STDIO
RUST_CONF_OPENSSL_NO_STDIO
#endif

#ifdef OPENSSL_NO_SM3
RUST_CONF_OPENSSL_NO_SM3
#endif
+2 −0
Original line number Diff line number Diff line
@@ -243,6 +243,8 @@ extern "C" {
    #[cfg(ossl111)]
    pub fn EVP_shake256() -> *const EVP_MD;
    pub fn EVP_ripemd160() -> *const EVP_MD;
    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM3")))]
    pub fn EVP_sm3() -> *const EVP_MD;
    pub fn EVP_des_ecb() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3() -> *const EVP_CIPHER;
    pub fn EVP_des_ede3_cbc() -> *const EVP_CIPHER;
+8 −0
Original line number Diff line number Diff line
@@ -920,3 +920,11 @@ pub const NID_X448: c_int = 1035;
pub const NID_ED25519: c_int = 1087;
#[cfg(ossl111)]
pub const NID_ED448: c_int = 1088;
#[cfg(ossl111)]
pub const NID_sm3: c_int = 1143;
#[cfg(libressl291)]
pub const NID_sm3: c_int = 968;
#[cfg(ossl111)]
pub const NID_sm3WithRSAEncryption: c_int = 1144;
#[cfg(libressl291)]
pub const NID_sm3WithRSAEncryption: c_int = 969;
+18 −0
Original line number Diff line number Diff line
@@ -128,6 +128,11 @@ impl MessageDigest {
        unsafe { MessageDigest(ffi::EVP_ripemd160()) }
    }

    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM3")))]
    pub fn sm3() -> MessageDigest {
        unsafe { MessageDigest(ffi::EVP_sm3()) }
    }

    #[allow(clippy::trivially_copy_pass_by_ref)]
    pub fn as_ptr(&self) -> *const ffi::EVP_MD {
        self.0
@@ -626,6 +631,19 @@ mod tests {
        }
    }

    #[cfg(all(any(ossl111, libressl291), not(osslconf = "OPENSSL_NO_SM3")))]
    #[test]
    fn test_sm3() {
        let tests = [(
            "616263",
            "66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0",
        )];

        for test in tests.iter() {
            hash_test(MessageDigest::sm3(), test);
        }
    }

    #[test]
    fn from_nid() {
        assert_eq!(