1use super::*;
2use libc::size_t;
3use std::ffi::{c_int, c_uchar, c_uint, c_void};
4use std::ptr;
5
6#[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
7pub const SHA_LBLOCK: c_int = 16;
8
9#[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
10pub type SHA_LONG = c_uint;
11
12cfg_if! {
13 if #[cfg(ossl300)] {
14 #[cfg(ossl300)]
15 pub unsafe fn SHA1(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
17 if EVP_Q_digest(
18 ptr::null_mut(),
19 c"SHA1".as_ptr(),
20 ptr::null(),
21 d as *const c_void,
22 n,
23 md,
24 ptr::null_mut(),
25 ) != 0
26 {
27 md
28 } else {
29 ptr::null_mut()
30 }
31 }
32
33 pub unsafe fn SHA224(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
34 if EVP_Q_digest(
35 ptr::null_mut(),
36 c"SHA224".as_ptr(),
37 ptr::null(),
38 d as *const c_void,
39 n,
40 md,
41 ptr::null_mut(),
42 ) != 0 {
43 md
44 } else {
45 ptr::null_mut()
46 }
47 }
48
49 pub unsafe fn SHA256(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
50 if EVP_Q_digest(
51 ptr::null_mut(),
52 c"SHA256".as_ptr(),
53 ptr::null(),
54 d as *const c_void,
55 n,
56 md,
57 ptr::null_mut(),
58 ) != 0 {
59 md
60 } else {
61 ptr::null_mut()
62 }
63 }
64 }
65}
66
67#[cfg(not(osslconf = "OPENSSL_NO_DEPRECATED_3_0"))]
68pub type SHA_LONG64 = u64;
69
70cfg_if! {
71 if #[cfg(ossl300)] {
72 pub unsafe fn SHA384(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
73 if EVP_Q_digest(
74 ptr::null_mut(),
75 c"SHA384".as_ptr(),
76 ptr::null(),
77 d as *const c_void,
78 n,
79 md,
80 ptr::null_mut(),
81 ) != 0 {
82 md
83 } else {
84 ptr::null_mut()
85 }
86 }
87
88 pub unsafe fn SHA512(d: *const c_uchar, n: size_t, md: *mut c_uchar) -> *mut c_uchar {
89 if EVP_Q_digest(
90 ptr::null_mut(),
91 c"SHA512".as_ptr(),
92 ptr::null(),
93 d as *const c_void,
94 n,
95 md,
96 ptr::null_mut(),
97 ) != 0 {
98 md
99 } else {
100 ptr::null_mut()
101 }
102 }
103 }
104}