Skip to main content

variant_ssl_sys/
sha.rs

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        // Ideally we'd macro define these, but that crashes ctest :(
16        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}