1*cf78ab8cSAndroid Build Coastguard Worker // Copyright 2023 Google LLC
2*cf78ab8cSAndroid Build Coastguard Worker //
3*cf78ab8cSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*cf78ab8cSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*cf78ab8cSAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*cf78ab8cSAndroid Build Coastguard Worker //
7*cf78ab8cSAndroid Build Coastguard Worker // https://www.apache.org/licenses/LICENSE-2.0
8*cf78ab8cSAndroid Build Coastguard Worker //
9*cf78ab8cSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*cf78ab8cSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*cf78ab8cSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cf78ab8cSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*cf78ab8cSAndroid Build Coastguard Worker // limitations under the License.
14*cf78ab8cSAndroid Build Coastguard Worker
15*cf78ab8cSAndroid Build Coastguard Worker use std::ffi::*;
16*cf78ab8cSAndroid Build Coastguard Worker use std::mem::MaybeUninit;
17*cf78ab8cSAndroid Build Coastguard Worker
18*cf78ab8cSAndroid Build Coastguard Worker extern "C" {
SHA1(d: *const c_uchar, n: usize, md: *mut c_uchar) -> *mut c_uchar19*cf78ab8cSAndroid Build Coastguard Worker fn SHA1(d: *const c_uchar, n: usize, md: *mut c_uchar) -> *mut c_uchar;
20*cf78ab8cSAndroid Build Coastguard Worker }
21*cf78ab8cSAndroid Build Coastguard Worker
sha1(data: &[u8]) -> [u8; 20]22*cf78ab8cSAndroid Build Coastguard Worker pub fn sha1(data: &[u8]) -> [u8; 20] {
23*cf78ab8cSAndroid Build Coastguard Worker unsafe {
24*cf78ab8cSAndroid Build Coastguard Worker let mut hash = MaybeUninit::<[u8; 20]>::uninit();
25*cf78ab8cSAndroid Build Coastguard Worker SHA1(data.as_ptr(), data.len(), hash.as_mut_ptr() as *mut _);
26*cf78ab8cSAndroid Build Coastguard Worker hash.assume_init()
27*cf78ab8cSAndroid Build Coastguard Worker }
28*cf78ab8cSAndroid Build Coastguard Worker }
29