confid: Remove unsafe from sha1_single_block

This commit is contained in:
Alex Page 2023-06-28 18:37:09 -04:00
parent 4671819397
commit 77d347b51f

View file

@ -678,7 +678,7 @@ fn rol(x: u32, shift: i32) -> u32 {
x << shift | x >> (32_i32 - shift)
}
unsafe fn sha1_single_block(input: *mut u8, output: *mut u8) {
fn sha1_single_block(input: &[u8], output: &mut [u8]) {
let mut a = 0x67452301_i32 as u32;
let mut b = 0xefcdab89_u32;
let mut c = 0x98badcfe_u32;
@ -687,10 +687,10 @@ unsafe fn sha1_single_block(input: *mut u8, output: *mut u8) {
let mut w: [u32; 80] = [0; 80];
let mut i = 0_i32 as usize;
while i < 16 {
w[i] = ((*input.add(4_usize.wrapping_mul(i)) as i32) << 24_i32
| (*input.add(4_usize.wrapping_mul(i).wrapping_add(1)) as i32) << 16_i32
| (*input.add(4_usize.wrapping_mul(i).wrapping_add(2)) as i32) << 8_i32
| *input.add(4_usize.wrapping_mul(i).wrapping_add(3)) as i32) as u32;
w[i] = ((input[4_usize.wrapping_mul(i)] as i32) << 24_i32
| (input[4_usize.wrapping_mul(i).wrapping_add(1)] as i32) << 16_i32
| (input[4_usize.wrapping_mul(i).wrapping_add(2)] as i32) << 8_i32
| input[4_usize.wrapping_mul(i).wrapping_add(3)] as i32) as u32;
i = i.wrapping_add(1);
}
i = 16_i32 as usize;
@ -765,26 +765,26 @@ unsafe fn sha1_single_block(input: *mut u8, output: *mut u8) {
c = c.wrapping_add(0x98badcfe_u32);
d = d.wrapping_add(0x10325476_i32 as u32);
e = e.wrapping_add(0xc3d2e1f0_u32);
*output.offset(0_i32 as isize) = (a >> 24_i32) as u8;
*output.offset(1_i32 as isize) = (a >> 16_i32) as u8;
*output.offset(2_i32 as isize) = (a >> 8_i32) as u8;
*output.offset(3_i32 as isize) = a as u8;
*output.offset(4_i32 as isize) = (b >> 24_i32) as u8;
*output.offset(5_i32 as isize) = (b >> 16_i32) as u8;
*output.offset(6_i32 as isize) = (b >> 8_i32) as u8;
*output.offset(7_i32 as isize) = b as u8;
*output.offset(8_i32 as isize) = (c >> 24_i32) as u8;
*output.offset(9_i32 as isize) = (c >> 16_i32) as u8;
*output.offset(10_i32 as isize) = (c >> 8_i32) as u8;
*output.offset(11_i32 as isize) = c as u8;
*output.offset(12_i32 as isize) = (d >> 24_i32) as u8;
*output.offset(13_i32 as isize) = (d >> 16_i32) as u8;
*output.offset(14_i32 as isize) = (d >> 8_i32) as u8;
*output.offset(15_i32 as isize) = d as u8;
*output.offset(16_i32 as isize) = (e >> 24_i32) as u8;
*output.offset(17_i32 as isize) = (e >> 16_i32) as u8;
*output.offset(18_i32 as isize) = (e >> 8_i32) as u8;
*output.offset(19_i32 as isize) = e as u8;
output[0] = (a >> 24_i32) as u8;
output[1] = (a >> 16_i32) as u8;
output[2] = (a >> 8_i32) as u8;
output[3] = a as u8;
output[4] = (b >> 24_i32) as u8;
output[5] = (b >> 16_i32) as u8;
output[6] = (b >> 8_i32) as u8;
output[7] = b as u8;
output[8] = (c >> 24_i32) as u8;
output[9] = (c >> 16_i32) as u8;
output[10] = (c >> 8_i32) as u8;
output[11] = c as u8;
output[12] = (d >> 24_i32) as u8;
output[13] = (d >> 16_i32) as u8;
output[14] = (d >> 8_i32) as u8;
output[15] = d as u8;
output[16] = (e >> 24_i32) as u8;
output[17] = (e >> 16_i32) as u8;
output[18] = (e >> 8_i32) as u8;
output[19] = e as u8;
}
unsafe fn mix(buffer: *mut u8, buf_size: usize, key: *const u8, key_size: usize) {
@ -811,7 +811,7 @@ unsafe fn mix(buffer: *mut u8, buf_size: usize, key: *const u8, key_size: usize)
half.wrapping_add(key_size)
.wrapping_mul(8)
.wrapping_div(0x100) as u8;
sha1_single_block(sha1_input.as_mut_ptr(), sha1_result.as_mut_ptr());
sha1_single_block(&sha1_input, &mut sha1_result);
let mut i = half & !3;
while i < half {
sha1_result[i] = sha1_result[i.wrapping_add(4).wrapping_sub(half & 3)];
@ -849,7 +849,7 @@ unsafe fn unmix(buffer: *mut u8, buf_size: usize, key: *const u8, key_size: usiz
half.wrapping_add(key_size)
.wrapping_mul(8)
.wrapping_div(0x100) as u8;
sha1_single_block(sha1_input.as_mut_ptr(), sha1_result.as_mut_ptr());
sha1_single_block(&sha1_input, &mut sha1_result);
let mut i = half & !3;
while i < half {
sha1_result[i] = sha1_result[i.wrapping_add(4).wrapping_sub(half & 3)];