openssl_sys/
sha.rs

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