192f3ab15Sopenharmony_ciuse super::*;
292f3ab15Sopenharmony_ciuse libc::*;
392f3ab15Sopenharmony_ciuse std::ptr;
492f3ab15Sopenharmony_ci
592f3ab15Sopenharmony_ci#[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
692f3ab15Sopenharmony_cipub const SHA_LBLOCK: c_int = 16;
792f3ab15Sopenharmony_ci
892f3ab15Sopenharmony_ci#[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
992f3ab15Sopenharmony_cipub type SHA_LONG = c_uint;
1092f3ab15Sopenharmony_ci
1192f3ab15Sopenharmony_cicfg_if! {
1292f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
1392f3ab15Sopenharmony_ci        #[cfg(ossl300)]
1492f3ab15Sopenharmony_ci        // Ideally we'd macro define these, but that crashes ctest :(
1592f3ab15Sopenharmony_ci        pub unsafe fn SHA1(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
1692f3ab15Sopenharmony_ci            if EVP_Q_digest(
1792f3ab15Sopenharmony_ci                ptr::null_mut(),
1892f3ab15Sopenharmony_ci                "SHA1\0".as_ptr() as *const c_char,
1992f3ab15Sopenharmony_ci                ptr::null(),
2092f3ab15Sopenharmony_ci                d as *const c_void,
2192f3ab15Sopenharmony_ci                n,
2292f3ab15Sopenharmony_ci                md,
2392f3ab15Sopenharmony_ci                ptr::null_mut(),
2492f3ab15Sopenharmony_ci            ) != 0
2592f3ab15Sopenharmony_ci            {
2692f3ab15Sopenharmony_ci                md
2792f3ab15Sopenharmony_ci            } else {
2892f3ab15Sopenharmony_ci                ptr::null_mut()
2992f3ab15Sopenharmony_ci            }
3092f3ab15Sopenharmony_ci        }
3192f3ab15Sopenharmony_ci
3292f3ab15Sopenharmony_ci        pub unsafe fn SHA224(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
3392f3ab15Sopenharmony_ci            if EVP_Q_digest(
3492f3ab15Sopenharmony_ci                ptr::null_mut(),
3592f3ab15Sopenharmony_ci                "SHA224\0".as_ptr() as *const c_char,
3692f3ab15Sopenharmony_ci                ptr::null(),
3792f3ab15Sopenharmony_ci                d as *const c_void,
3892f3ab15Sopenharmony_ci                n,
3992f3ab15Sopenharmony_ci                md,
4092f3ab15Sopenharmony_ci                ptr::null_mut(),
4192f3ab15Sopenharmony_ci            ) != 0 {
4292f3ab15Sopenharmony_ci                md
4392f3ab15Sopenharmony_ci            } else {
4492f3ab15Sopenharmony_ci                ptr::null_mut()
4592f3ab15Sopenharmony_ci            }
4692f3ab15Sopenharmony_ci        }
4792f3ab15Sopenharmony_ci
4892f3ab15Sopenharmony_ci        pub unsafe fn SHA256(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
4992f3ab15Sopenharmony_ci            if EVP_Q_digest(
5092f3ab15Sopenharmony_ci                ptr::null_mut(),
5192f3ab15Sopenharmony_ci                "SHA256\0".as_ptr() as *const c_char,
5292f3ab15Sopenharmony_ci                ptr::null(),
5392f3ab15Sopenharmony_ci                d as *const c_void,
5492f3ab15Sopenharmony_ci                n,
5592f3ab15Sopenharmony_ci                md,
5692f3ab15Sopenharmony_ci                ptr::null_mut(),
5792f3ab15Sopenharmony_ci            ) != 0 {
5892f3ab15Sopenharmony_ci                md
5992f3ab15Sopenharmony_ci            } else {
6092f3ab15Sopenharmony_ci                ptr::null_mut()
6192f3ab15Sopenharmony_ci            }
6292f3ab15Sopenharmony_ci        }
6392f3ab15Sopenharmony_ci    }
6492f3ab15Sopenharmony_ci}
6592f3ab15Sopenharmony_ci
6692f3ab15Sopenharmony_ci#[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
6792f3ab15Sopenharmony_cipub type SHA_LONG64 = u64;
6892f3ab15Sopenharmony_ci
6992f3ab15Sopenharmony_cicfg_if! {
7092f3ab15Sopenharmony_ci    if #[cfg(ossl300)] {
7192f3ab15Sopenharmony_ci        pub unsafe fn SHA384(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
7292f3ab15Sopenharmony_ci            if EVP_Q_digest(
7392f3ab15Sopenharmony_ci                ptr::null_mut(),
7492f3ab15Sopenharmony_ci                "SHA384\0".as_ptr() as *const c_char,
7592f3ab15Sopenharmony_ci                ptr::null(),
7692f3ab15Sopenharmony_ci                d as *const c_void,
7792f3ab15Sopenharmony_ci                n,
7892f3ab15Sopenharmony_ci                md,
7992f3ab15Sopenharmony_ci                ptr::null_mut(),
8092f3ab15Sopenharmony_ci            ) != 0 {
8192f3ab15Sopenharmony_ci                md
8292f3ab15Sopenharmony_ci            } else {
8392f3ab15Sopenharmony_ci                ptr::null_mut()
8492f3ab15Sopenharmony_ci            }
8592f3ab15Sopenharmony_ci        }
8692f3ab15Sopenharmony_ci
8792f3ab15Sopenharmony_ci        pub unsafe fn SHA512(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
8892f3ab15Sopenharmony_ci            if EVP_Q_digest(
8992f3ab15Sopenharmony_ci                ptr::null_mut(),
9092f3ab15Sopenharmony_ci                "SHA512\0".as_ptr() as *const c_char,
9192f3ab15Sopenharmony_ci                ptr::null(),
9292f3ab15Sopenharmony_ci                d as *const c_void,
9392f3ab15Sopenharmony_ci                n,
9492f3ab15Sopenharmony_ci                md,
9592f3ab15Sopenharmony_ci                ptr::null_mut(),
9692f3ab15Sopenharmony_ci            ) != 0 {
9792f3ab15Sopenharmony_ci                md
9892f3ab15Sopenharmony_ci            } else {
9992f3ab15Sopenharmony_ci                ptr::null_mut()
10092f3ab15Sopenharmony_ci            }
10192f3ab15Sopenharmony_ci        }
10292f3ab15Sopenharmony_ci    }
10392f3ab15Sopenharmony_ci}
104