From e9117f9966dc7027063a5e491e094df711216049 Mon Sep 17 00:00:00 2001 From: Conrad Ludgate Date: Sun, 18 Aug 2024 21:28:00 +0100 Subject: [PATCH] yescrypt cleanups (#510) no point rewriting pbkdf2, hmac, sha2, salsa20 etc... --- .github/workflows/yescrypt.yml | 4 +- Cargo.lock | 4 + yescrypt/Cargo.toml | 6 +- yescrypt/README.md | 2 +- yescrypt/src/common.rs | 87 +- yescrypt/src/lib.rs | 382 +++--- yescrypt/src/salsa20.rs | 269 +--- yescrypt/src/sha256.rs | 2318 +------------------------------- yescrypt/tests/kats.rs | 6 +- 9 files changed, 281 insertions(+), 2797 deletions(-) diff --git a/.github/workflows/yescrypt.yml b/.github/workflows/yescrypt.yml index 275194fb..70241927 100644 --- a/.github/workflows/yescrypt.yml +++ b/.github/workflows/yescrypt.yml @@ -29,7 +29,7 @@ jobs: include: # 32-bit Linux - target: i686-unknown-linux-gnu - rust: 1.60.0 # MSRV + rust: 1.72.0 # MSRV deps: sudo apt update && sudo apt install gcc-multilib - target: i686-unknown-linux-gnu rust: stable @@ -37,7 +37,7 @@ jobs: # 64-bit Linux - target: x86_64-unknown-linux-gnu - rust: 1.60.0 # MSRV + rust: 1.72.0 # MSRV - target: x86_64-unknown-linux-gnu rust: stable steps: diff --git a/Cargo.lock b/Cargo.lock index 1a4a340f..0be79d95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -585,7 +585,11 @@ name = "yescrypt" version = "0.0.0" dependencies = [ "hex-literal", + "hmac", "libc", + "pbkdf2", + "salsa20", + "sha2", ] [[package]] diff --git a/yescrypt/Cargo.toml b/yescrypt/Cargo.toml index 391b9703..ba2c1255 100644 --- a/yescrypt/Cargo.toml +++ b/yescrypt/Cargo.toml @@ -13,10 +13,14 @@ keywords = ["crypto", "hashing", "password", "phf"] categories = ["authentication", "cryptography", "no-std"] readme = "README.md" edition = "2021" -rust-version = "1.60" +rust-version = "1.72" [dependencies] libc = "0.2" +hmac = { version = "0.13.0-pre.3", default-features = false } +pbkdf2 = { version = "=0.13.0-pre.0", path = "../pbkdf2" } +salsa20 = { version = "=0.11.0-pre", default-features = false } +sha2 = { version = "=0.11.0-pre.3", default-features = false } #[dev-dependencies] hex-literal = "0.4" diff --git a/yescrypt/README.md b/yescrypt/README.md index 9f74b793..e0a1cf30 100644 --- a/yescrypt/README.md +++ b/yescrypt/README.md @@ -13,7 +13,7 @@ Pure Rust implementation of the [yescrypt] password hashing function. ## Minimum Supported Rust Version -Rust **1.60** or higher. +Rust **1.72** or higher. Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump. diff --git a/yescrypt/src/common.rs b/yescrypt/src/common.rs index be5ce188..839db4b6 100644 --- a/yescrypt/src/common.rs +++ b/yescrypt/src/common.rs @@ -8,11 +8,7 @@ unused_mut )] -use crate::{ - encrypt_dir_t, - sha256::{SHA256_Final, SHA256_Init, SHA256_Update, SHA256_CTX}, - size_t, uint32_t, uint64_t, uint8_t, Binary, DEC, -}; +use crate::{encrypt_dir_t, size_t, uint32_t, uint64_t, uint8_t, Binary, DEC}; static mut itoa64: *const libc::c_char = b"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\0" as *const u8 @@ -327,10 +323,10 @@ pub(crate) unsafe fn encode64( if dnext.is_null() { return 0 as *mut uint8_t; } - dstlen = dstlen.wrapping_sub(dnext.offset_from(dst) as u64); + dstlen = dstlen.wrapping_sub(dnext.offset_from(dst) as usize); dst = dnext; } - if dstlen < 1 as libc::c_int as libc::c_ulong { + if dstlen < 1 { return 0 as *mut uint8_t; } *dst = 0 as libc::c_int as uint8_t; @@ -374,7 +370,7 @@ pub(crate) unsafe fn encode64_uint32( bits = (bits as libc::c_uint).wrapping_add(6 as libc::c_int as libc::c_uint) as uint32_t as uint32_t; } - if dstlen <= chars as libc::c_ulong { + if dstlen <= chars as usize { return 0 as *mut uint8_t; } let fresh0 = dst; @@ -405,7 +401,7 @@ unsafe fn encode64_uint32_fixed( let mut bits: uint32_t = 0; bits = 0 as libc::c_int as uint32_t; while bits < srcbits { - if dstlen < 2 as libc::c_int as libc::c_ulong { + if dstlen < 2 { return 0 as *mut uint8_t; } let fresh4 = dst; @@ -417,7 +413,7 @@ unsafe fn encode64_uint32_fixed( bits = (bits as libc::c_uint).wrapping_add(6 as libc::c_int as libc::c_uint) as uint32_t as uint32_t; } - if src != 0 || dstlen < 1 as libc::c_int as libc::c_ulong { + if src != 0 || dstlen < 1 { return 0 as *mut uint8_t; } *dst = 0 as libc::c_int as uint8_t; @@ -430,11 +426,9 @@ pub(crate) unsafe fn encrypt( mut key: *const Binary, mut dir: encrypt_dir_t, ) { - let mut ctx: SHA256_CTX = SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }; + use sha2::digest::array::Array; + use sha2::Digest; + let mut f: [libc::c_uchar; 36] = [0; 36]; let mut halflen: size_t = 0; let mut which: size_t = 0; @@ -444,8 +438,8 @@ pub(crate) unsafe fn encrypt( if datalen == 0 { return; } - if datalen > 64 as libc::c_int as libc::c_ulong { - datalen = 64 as libc::c_int as size_t; + if datalen > 64 { + datalen = 64; } halflen = datalen >> 1 as libc::c_int; which = 0 as libc::c_int as size_t; @@ -462,43 +456,30 @@ pub(crate) unsafe fn encrypt( f[33 as libc::c_int as usize] = ::core::mem::size_of::() as libc::c_ulong as libc::c_uchar; f[34 as libc::c_int as usize] = datalen as libc::c_uchar; + let mut ctx2 = sha2::Sha256::new(); loop { - SHA256_Init(&mut ctx); f[35 as libc::c_int as usize] = round; - SHA256_Update( - &mut ctx, - &mut *f.as_mut_ptr().offset(32 as libc::c_int as isize) as *mut libc::c_uchar - as *const libc::c_void, - 4 as libc::c_int as size_t, - ); - SHA256_Update( - &mut ctx, - key as *const libc::c_void, - ::core::mem::size_of::() as libc::c_ulong, - ); - SHA256_Update( - &mut ctx, - &mut *data.offset(which as isize) as *mut libc::c_uchar as *const libc::c_void, - halflen, - ); - if datalen & 1 as libc::c_int as libc::c_ulong != 0 { - f[0 as libc::c_int as usize] = (*data - .offset(datalen.wrapping_sub(1 as libc::c_int as libc::c_ulong) as isize) - as libc::c_int - & mask as libc::c_int) as libc::c_uchar; - SHA256_Update( - &mut ctx, - f.as_mut_ptr() as *const libc::c_void, - 1 as libc::c_int as size_t, - ); + ctx2.update(&f[32..]); + ctx2.update(&*core::ptr::slice_from_raw_parts( + key as *const u8, + ::core::mem::size_of::(), + )); + ctx2.update(&*core::ptr::slice_from_raw_parts( + data.offset(which as isize), + halflen as usize, + )); + + if datalen & 1 != 0 { + f[0] = *data.offset(datalen.wrapping_sub(1) as isize) & mask; + ctx2.update(&f[0..1]); } - SHA256_Final(f.as_mut_ptr(), &mut ctx); + + ctx2.finalize_into_reset(Array::from_mut_slice(&mut f[..32])); which ^= halflen; memxor(&mut *data.offset(which as isize), f.as_mut_ptr(), halflen); - if datalen & 1 as libc::c_int as libc::c_ulong != 0 { - mask = (mask as libc::c_int ^ 0xff as libc::c_int) as libc::c_uchar; - let ref mut fresh13 = - *data.offset(datalen.wrapping_sub(1 as libc::c_int as libc::c_ulong) as isize); + if datalen & 1 != 0 { + mask ^= 0xff; + let ref mut fresh13 = *data.offset(datalen.wrapping_sub(1) as isize); *fresh13 = (*fresh13 as libc::c_int ^ f[halflen as usize] as libc::c_int & mask as libc::c_int) as libc::c_uchar; @@ -510,12 +491,12 @@ pub(crate) unsafe fn encrypt( } } -pub(crate) unsafe fn integerify(mut B: *const uint32_t, mut r: size_t) -> uint64_t { +pub(crate) unsafe fn integerify(mut B: *const uint32_t, mut r: usize) -> uint64_t { let mut X: *const uint32_t = &*B.offset( - (2 as libc::c_int as libc::c_ulong) + (2usize) .wrapping_mul(r) - .wrapping_sub(1 as libc::c_int as libc::c_ulong) - .wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize, + .wrapping_sub(1usize) + .wrapping_mul(16usize) as isize, ) as *const uint32_t; return ((*X.offset(13 as libc::c_int as isize) as uint64_t) << 32 as libc::c_int) .wrapping_add(*X.offset(0 as libc::c_int as isize) as libc::c_ulong); diff --git a/yescrypt/src/lib.rs b/yescrypt/src/lib.rs index ddc1b217..6731faf1 100644 --- a/yescrypt/src/lib.rs +++ b/yescrypt/src/lib.rs @@ -65,7 +65,7 @@ use libc::{free, malloc, memcpy, memset, strlen, strncmp, strrchr}; type uint8_t = libc::c_uchar; type uint32_t = libc::c_uint; type uint64_t = libc::c_ulong; -type size_t = libc::c_ulong; +type size_t = usize; type encrypt_dir_t = libc::c_int; #[derive(Copy, Clone)] @@ -129,11 +129,11 @@ pub unsafe fn yescrypt(mut passwd: *const uint8_t, mut setting: *const uint8_t) 0 as *const Shared, &mut local, passwd, - strlen(passwd as *mut libc::c_char) as u64, + strlen(passwd as *mut libc::c_char), setting, 0 as *const Binary, buf.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 140]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 140]>(), ); if yescrypt_free_local(&mut local) != 0 { return 0 as *mut uint8_t; @@ -307,7 +307,7 @@ pub unsafe fn yescrypt_r( .wrapping_div(6), ) .wrapping_add(1); - if !(need > buflen as usize || need < saltstrlen) { + if !(need > buflen || need < saltstrlen) { if !(yescrypt_kdf( shared, local, @@ -317,13 +317,13 @@ pub unsafe fn yescrypt_r( saltlen, &mut params, hashbin.as_mut_ptr(), - ::core::mem::size_of::<[libc::c_uchar; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[libc::c_uchar; 32]>(), ) != 0) { if !key.is_null() { encrypt( hashbin.as_mut_ptr(), - ::core::mem::size_of::<[libc::c_uchar; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[libc::c_uchar; 32]>(), key, ENC, ); @@ -340,9 +340,9 @@ pub unsafe fn yescrypt_r( *fresh16 = '$' as i32 as uint8_t; dst = encode64( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), hashbin.as_mut_ptr(), - ::core::mem::size_of::<[libc::c_uchar; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[libc::c_uchar; 32]>(), ); if dst.is_null() || dst >= buf.offset(buflen as isize) { return 0 as *mut uint8_t; @@ -400,13 +400,13 @@ pub unsafe fn yescrypt_kdf( 0 as libc::c_int as uint32_t, NROM, dk.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>(), ); if retval != 0 { return retval; } passwd = dk.as_mut_ptr(); - passwdlen = ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong; + passwdlen = ::core::mem::size_of::<[uint8_t; 32]>(); } return yescrypt_kdf_body( shared, local, passwd, passwdlen, salt, saltlen, flags, N, r, p, t, NROM, buf, buflen, @@ -510,7 +510,7 @@ pub unsafe fn yescrypt_init_shared( t, 0 as libc::c_int as uint64_t, salt.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>(), ) != 0) { if !(yescrypt_kdf_body( @@ -519,7 +519,7 @@ pub unsafe fn yescrypt_init_shared( seed, seedlen, salt.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>(), flags | 0x1000000 as libc::c_int as libc::c_uint, N, r, @@ -527,7 +527,7 @@ pub unsafe fn yescrypt_init_shared( t, N, salt.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>(), ) != 0) { if !(yescrypt_kdf_body( @@ -536,7 +536,7 @@ pub unsafe fn yescrypt_init_shared( seed, seedlen, salt.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>(), flags | 0x1000000 as libc::c_int as libc::c_uint, N, r, @@ -544,7 +544,7 @@ pub unsafe fn yescrypt_init_shared( t, N, salt.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>(), ) != 0) { tag = ((*shared).aligned as *mut uint8_t) @@ -606,7 +606,7 @@ pub unsafe fn yescrypt_digest_shared(mut shared: *mut Shared) -> Binary { let mut tag: *mut uint32_t = 0 as *mut uint32_t; let mut tag1: uint64_t = 0; let mut tag2: uint64_t = 0; - if (*shared).aligned_size < 48 as libc::c_int as libc::c_ulong { + if (*shared).aligned_size < 48 { return digest; } tag = ((*shared).aligned as *mut uint8_t) @@ -668,7 +668,7 @@ pub unsafe fn yescrypt_encode_params( src, srclen, buf.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 96]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 96]>(), ); } @@ -684,9 +684,7 @@ pub unsafe fn yescrypt_encode_params_r( let mut NROM_log2: uint32_t = 0; let mut have: uint32_t = 0; let mut dst: *mut uint8_t = 0 as *mut uint8_t; - if srclen - > (18446744073709551615 as libc::c_ulong).wrapping_div(16 as libc::c_int as libc::c_ulong) - { + if srclen > usize::MAX / 16 { return 0 as *mut uint8_t; } if (*params).flags < 0x2 as libc::c_int as libc::c_uint { @@ -725,7 +723,7 @@ pub unsafe fn yescrypt_encode_params_r( *fresh19 = '$' as i32 as uint8_t; dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), flavor, 0 as libc::c_int as uint32_t, ); @@ -734,7 +732,7 @@ pub unsafe fn yescrypt_encode_params_r( } dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), N_log2, 1 as libc::c_int as uint32_t, ); @@ -743,7 +741,7 @@ pub unsafe fn yescrypt_encode_params_r( } dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), (*params).r, 1 as libc::c_int as uint32_t, ); @@ -766,7 +764,7 @@ pub unsafe fn yescrypt_encode_params_r( if have != 0 { dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), have, 1 as libc::c_int as uint32_t, ); @@ -777,7 +775,7 @@ pub unsafe fn yescrypt_encode_params_r( if (*params).p != 1 as libc::c_int as libc::c_uint { dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), (*params).p, 2 as libc::c_int as uint32_t, ); @@ -788,7 +786,7 @@ pub unsafe fn yescrypt_encode_params_r( if (*params).t != 0 { dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), (*params).t, 1 as libc::c_int as uint32_t, ); @@ -799,7 +797,7 @@ pub unsafe fn yescrypt_encode_params_r( if (*params).g != 0 { dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), (*params).g, 1 as libc::c_int as uint32_t, ); @@ -810,7 +808,7 @@ pub unsafe fn yescrypt_encode_params_r( if NROM_log2 != 0 { dst = encode64_uint32( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), NROM_log2, 1 as libc::c_int as uint32_t, ); @@ -826,7 +824,7 @@ pub unsafe fn yescrypt_encode_params_r( *fresh20 = '$' as i32 as uint8_t; dst = encode64( dst, - buflen.wrapping_sub(dst.offset_from(buf) as u64), + buflen.wrapping_sub(dst.offset_from(buf) as usize), src, srclen, ); @@ -907,9 +905,7 @@ pub unsafe fn yescrypt_reencrypt( } else { 0 as libc::c_int as libc::c_long }) as size_t; - if saltstrlen - > ((64 as libc::c_int * 8 as libc::c_int + 5 as libc::c_int) / 6 as libc::c_int) - as libc::c_ulong + if saltstrlen > ((64 * 8 + 5) / 6) || strlen(hashstart as *mut libc::c_char) != (::core::mem::size_of::()) .wrapping_mul(8) @@ -920,12 +916,9 @@ pub unsafe fn yescrypt_reencrypt( } if saltstrlen != 0 { let mut saltend: *const uint8_t = 0 as *const uint8_t; - saltlen = ::core::mem::size_of::<[libc::c_uchar; 64]>() as libc::c_ulong; + saltlen = ::core::mem::size_of::<[libc::c_uchar; 64]>(); saltend = decode64(saltbin.as_mut_ptr(), &mut saltlen, saltstart, saltstrlen); - if saltend.is_null() - || *saltend as libc::c_int != '$' as i32 - || saltlen < 1 as libc::c_int as libc::c_ulong - || saltlen > 64 as libc::c_int as libc::c_ulong + if saltend.is_null() || *saltend as libc::c_int != '$' as i32 || saltlen < 1 || saltlen > 64 { current_block = 11385396242402735691; } else { @@ -942,19 +935,19 @@ pub unsafe fn yescrypt_reencrypt( } match current_block { 14401909646449704462 => { - hashlen = ::core::mem::size_of::<[libc::c_uchar; 32]>() as libc::c_ulong; + hashlen = ::core::mem::size_of::<[libc::c_uchar; 32]>(); hashend = decode64( hashbin.as_mut_ptr(), &mut hashlen, hashstart, - (::core::mem::size_of::() as libc::c_ulong) - .wrapping_mul(8 as libc::c_int as libc::c_ulong) - .wrapping_add(5 as libc::c_int as libc::c_ulong) - .wrapping_div(6 as libc::c_int as libc::c_ulong), + (::core::mem::size_of::()) + .wrapping_mul(8) + .wrapping_add(5) + .wrapping_div(6), ); if !(hashend.is_null() || *hashend as libc::c_int != 0 - || hashlen != ::core::mem::size_of::<[libc::c_uchar; 32]>() as libc::c_ulong) + || hashlen != ::core::mem::size_of::<[libc::c_uchar; 32]>()) { if !from_key.is_null() { encrypt(hashbin.as_mut_ptr(), hashlen, from_key, DEC); @@ -965,7 +958,7 @@ pub unsafe fn yescrypt_reencrypt( if saltstrlen != 0 { if (encode64( saltstart, - saltstrlen.wrapping_add(1 as libc::c_int as libc::c_ulong), + saltstrlen.wrapping_add(1), saltbin.as_mut_ptr(), saltlen, )) @@ -984,11 +977,11 @@ pub unsafe fn yescrypt_reencrypt( _ => { if !(encode64( hashstart, - (::core::mem::size_of::() as libc::c_ulong) - .wrapping_mul(8 as libc::c_int as libc::c_ulong) - .wrapping_add(5 as libc::c_int as libc::c_ulong) - .wrapping_div(6 as libc::c_int as libc::c_ulong) - .wrapping_add(1 as libc::c_int as libc::c_ulong), + (::core::mem::size_of::()) + .wrapping_mul(8) + .wrapping_add(5) + .wrapping_div(6) + .wrapping_add(1), hashbin.as_mut_ptr(), hashlen, )) @@ -1013,11 +1006,11 @@ unsafe fn yescrypt_kdf_body( mut salt: *const uint8_t, mut saltlen: size_t, mut flags: Flags, - mut N: uint64_t, + mut N: u64, mut r: uint32_t, mut p: uint32_t, mut t: uint32_t, - mut NROM: uint64_t, + mut NROM: u64, mut buf: *mut uint8_t, mut buflen: size_t, ) -> libc::c_int { @@ -1078,11 +1071,7 @@ unsafe fn yescrypt_kdf_body( } match current_block { 2868539653012386629 => { - if !(buflen - > ((1 as libc::c_int as uint64_t) << 32 as libc::c_int) - .wrapping_sub(1 as libc::c_int as libc::c_ulong) - .wrapping_mul(32 as libc::c_int as libc::c_ulong)) - { + if !(buflen > (1usize << 32).wrapping_sub(1).wrapping_mul(32)) { if !((r as uint64_t).wrapping_mul(p as uint64_t) >= ((1 as libc::c_int) << 30 as libc::c_int) as libc::c_ulong) { @@ -1139,10 +1128,9 @@ unsafe fn yescrypt_kdf_body( _ => { VROM = 0 as *const uint32_t; if !shared.is_null() { - let mut expected_size: uint64_t = (128 as libc::c_int - as size_t) - .wrapping_mul(r as libc::c_ulong) - .wrapping_mul(NROM); + let mut expected_size = (128usize) + .wrapping_mul(r as usize) + .wrapping_mul(NROM as usize); if NROM & NROM .wrapping_sub(1 as libc::c_int as libc::c_ulong) @@ -1212,7 +1200,7 @@ unsafe fn yescrypt_kdf_body( != 0 { V = (*local).aligned as *mut uint32_t; - if (*local).aligned_size < V_size as u64 { + if (*local).aligned_size < V_size { if !((*local).base).is_null() || !((*local).aligned).is_null() || (*local).base_size != 0 @@ -1227,7 +1215,7 @@ unsafe fn yescrypt_kdf_body( (*local).aligned = V as *mut libc::c_void; (*local).base = (*local).aligned; - (*local).aligned_size = V_size as u64; + (*local).aligned_size = V_size; (*local).base_size = (*local).aligned_size; current_block = 9853141518545631134; @@ -1329,7 +1317,7 @@ unsafe fn yescrypt_kdf_body( .as_mut_ptr() as *mut uint8_t; passwdlen = ::core::mem::size_of::<[uint32_t; 8]>() - as libc::c_ulong; + ; } PBKDF2_SHA256( passwd, @@ -1339,15 +1327,15 @@ unsafe fn yescrypt_kdf_body( 1 as libc::c_int as uint64_t, B as *mut uint8_t, - B_size as u64, + B_size, ); if flags != 0 { blkcpy( sha256.as_mut_ptr(), B, - (::core::mem::size_of::<[uint32_t; 8]>() as libc::c_ulong) + (::core::mem::size_of::<[uint32_t; 8]>() ) .wrapping_div( - ::core::mem::size_of::() as libc::c_ulong, + ::core::mem::size_of::() , ), ); } @@ -1403,10 +1391,10 @@ unsafe fn yescrypt_kdf_body( while i < p { smix( &mut *B - .offset( - (32 as libc::c_int as size_t) - .wrapping_mul(r as libc::c_ulong) - .wrapping_mul(i as libc::c_ulong) as isize, + .add( + (32usize) + .wrapping_mul(r as usize) + .wrapping_mul(i as usize), ), r as size_t, N, @@ -1429,16 +1417,16 @@ unsafe fn yescrypt_kdf_body( dkp = buf; if flags != 0 && buflen - < ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong + < ::core::mem::size_of::<[uint8_t; 32]>() { PBKDF2_SHA256( passwd, passwdlen, B as *mut uint8_t, - B_size as u64, + B_size , 1 as libc::c_int as uint64_t, dk.as_mut_ptr(), - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>() , ); dkp = dk.as_mut_ptr(); } @@ -1446,7 +1434,7 @@ unsafe fn yescrypt_kdf_body( passwd, passwdlen, B as *mut uint8_t, - B_size as u64, + B_size, 1 as libc::c_int as uint64_t, buf, @@ -1461,7 +1449,7 @@ unsafe fn yescrypt_kdf_body( { HMAC_SHA256_Buf( dkp as *const libc::c_void, - ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong, + ::core::mem::size_of::<[uint8_t; 32]>() , b"Client Key\0" as *const u8 as *const libc::c_char as *const libc::c_void, 10 as libc::c_int as size_t, @@ -1469,15 +1457,12 @@ unsafe fn yescrypt_kdf_body( ); let mut clen: size_t = buflen; - if clen - > ::core::mem::size_of::<[uint8_t; 32]>() as libc::c_ulong - { - clen = ::core::mem::size_of::<[uint8_t; 32]>() - as libc::c_ulong; + if clen > ::core::mem::size_of::<[uint8_t; 32]>() { + clen = ::core::mem::size_of::<[uint8_t; 32]>(); } SHA256_Buf( sha256.as_mut_ptr() as *mut uint8_t as *const libc::c_void, - ::core::mem::size_of::<[uint32_t; 8]>() as libc::c_ulong, + ::core::mem::size_of::<[uint32_t; 8]>(), dk.as_mut_ptr(), ); memcpy( @@ -1540,9 +1525,9 @@ unsafe fn pwxform(mut B: *mut uint32_t, mut ctx: *mut PwxformCtx) { let mut j: size_t = 0; let mut k: size_t = 0; i = 0 as libc::c_int as size_t; - while i < 6 as libc::c_int as libc::c_ulong { + while i < 6 { j = 0 as libc::c_int as size_t; - while j < 4 as libc::c_int as libc::c_ulong { + while j < 4 { let mut xl: uint32_t = (*X.offset(j as isize))[0 as libc::c_int as usize][0 as libc::c_int as usize]; let mut xh: uint32_t = @@ -1564,7 +1549,7 @@ unsafe fn pwxform(mut B: *mut uint32_t, mut ctx: *mut PwxformCtx) { as isize, ); k = 0 as libc::c_int as size_t; - while k < 2 as libc::c_int as libc::c_ulong { + while k < 2 { let mut x: uint64_t = 0; let mut s0: uint64_t = 0; let mut s1: uint64_t = 0; @@ -1586,9 +1571,7 @@ unsafe fn pwxform(mut B: *mut uint32_t, mut ctx: *mut PwxformCtx) { (*X.offset(j as isize))[k as usize][0 as libc::c_int as usize] = x as uint32_t; (*X.offset(j as isize))[k as usize][1 as libc::c_int as usize] = (x >> 32 as libc::c_int) as uint32_t; - if i != 0 as libc::c_int as libc::c_ulong - && i != (6 as libc::c_int - 1 as libc::c_int) as libc::c_ulong - { + if i != 0usize && i != (6 - 1) { (*S2.offset(w as isize))[0 as libc::c_int as usize] = x as uint32_t; (*S2.offset(w as isize))[1 as libc::c_int as usize] = (x >> 32 as libc::c_int) as uint32_t; @@ -1607,83 +1590,59 @@ unsafe fn pwxform(mut B: *mut uint32_t, mut ctx: *mut PwxformCtx) { (*ctx).S0 = S2; (*ctx).S1 = S0; (*ctx).S2 = S1; - (*ctx).w = w - & (((1 as libc::c_int) << 8 as libc::c_int) * 2 as libc::c_int - 1 as libc::c_int) - as libc::c_ulong; + (*ctx).w = w & (((1usize) << 8usize) * 2usize - 1usize); } -unsafe fn blockmix_pwxform(mut B: *mut uint32_t, mut ctx: *mut PwxformCtx, mut r: size_t) { +unsafe fn blockmix_pwxform(mut B: *mut uint32_t, mut ctx: *mut PwxformCtx, mut r: usize) { let mut X: [uint32_t; 16] = [0; 16]; let mut r1: size_t = 0; let mut i: size_t = 0; - r1 = (128 as libc::c_int as libc::c_ulong) - .wrapping_mul(r) - .wrapping_div((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong); + r1 = (128usize).wrapping_mul(r).wrapping_div(4 * 2 * 8); blkcpy( X.as_mut_ptr(), &mut *B.offset( - r1.wrapping_sub(1 as libc::c_int as libc::c_ulong) - .wrapping_mul( - ((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong) - .wrapping_div(::core::mem::size_of::() as libc::c_ulong), - ) as isize, + r1.wrapping_sub(1usize) + .wrapping_mul((4usize * 2 * 8).wrapping_div(::core::mem::size_of::())) + as isize, ), - ((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong) - .wrapping_div(::core::mem::size_of::() as libc::c_ulong), + (4usize * 2 * 8).wrapping_div(::core::mem::size_of::()), ); i = 0 as libc::c_int as size_t; while i < r1 { - if r1 > 1 as libc::c_int as libc::c_ulong { + if r1 > 1 { blkxor( X.as_mut_ptr(), &mut *B.offset( i.wrapping_mul( - ((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong) - .wrapping_div(::core::mem::size_of::() as libc::c_ulong), + (4usize * 2 * 8).wrapping_div(::core::mem::size_of::()), ) as isize, ), - ((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong) - .wrapping_div(::core::mem::size_of::() as libc::c_ulong), + (4usize * 2 * 8).wrapping_div(::core::mem::size_of::()), ); } pwxform(X.as_mut_ptr(), ctx); blkcpy( &mut *B.offset( - i.wrapping_mul( - ((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong) - .wrapping_div(::core::mem::size_of::() as libc::c_ulong), - ) as isize, + i.wrapping_mul((4usize * 2 * 8).wrapping_div(::core::mem::size_of::())) + as isize, ), X.as_mut_ptr(), - ((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong) - .wrapping_div(::core::mem::size_of::() as libc::c_ulong), + (4usize * 2 * 8).wrapping_div(::core::mem::size_of::()), ); i = i.wrapping_add(1); i; } - i = r1 - .wrapping_sub(1 as libc::c_int as libc::c_ulong) - .wrapping_mul((4 as libc::c_int * 2 as libc::c_int * 8 as libc::c_int) as libc::c_ulong) - .wrapping_div(64 as libc::c_int as libc::c_ulong); - salsa20::salsa20( - &mut *B.offset(i.wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize), - 2 as libc::c_int as uint32_t, - ); + i = r1.wrapping_sub(1).wrapping_mul(4 * 2 * 8).wrapping_div(64); + salsa20::salsa20_2(&mut *B.add(i.wrapping_mul(16))); i = i.wrapping_add(1); i; - while i < (2 as libc::c_int as libc::c_ulong).wrapping_mul(r) { + while i < (2usize).wrapping_mul(r) { blkxor( - &mut *B.offset(i.wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize), - &mut *B.offset( - i.wrapping_sub(1 as libc::c_int as libc::c_ulong) - .wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize, - ), + &mut *B.offset(i.wrapping_mul(16usize) as isize), + &mut *B.offset(i.wrapping_sub(1usize).wrapping_mul(16usize) as isize), 16 as libc::c_int as size_t, ); - salsa20::salsa20( - &mut *B.offset(i.wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize), - 2 as libc::c_int as uint32_t, - ); + salsa20::salsa20_2(&mut *B.offset(i.wrapping_mul(16) as isize)); i = i.wrapping_add(1); i; } @@ -1691,19 +1650,19 @@ unsafe fn blockmix_pwxform(mut B: *mut uint32_t, mut ctx: *mut PwxformCtx, mut r unsafe fn smix( mut B: *mut uint32_t, - mut r: size_t, - mut N: uint64_t, + mut r: usize, + mut N: u64, mut p: uint32_t, mut t: uint32_t, mut flags: Flags, mut V: *mut uint32_t, - mut NROM: uint64_t, + mut NROM: u64, mut VROM: *const uint32_t, mut XY: *mut uint32_t, mut ctx: *mut PwxformCtx, mut passwd: *mut uint8_t, ) { - let mut s: size_t = (32 as libc::c_int as libc::c_ulong).wrapping_mul(r); + let mut s: size_t = (32 * r) as size_t; let mut Nchunk: uint64_t = 0; let mut Nloop_all: uint64_t = 0; let mut Nloop_rw: uint64_t = 0; @@ -1759,9 +1718,9 @@ unsafe fn smix( N.wrapping_sub(Vchunk) }; let mut Bp: *mut uint32_t = - &mut *B.offset((i as libc::c_ulong).wrapping_mul(s) as isize) as *mut uint32_t; + &mut *B.offset((i as usize).wrapping_mul(s) as isize) as *mut uint32_t; let mut Vp: *mut uint32_t = - &mut *V.offset(Vchunk.wrapping_mul(s) as isize) as *mut uint32_t; + &mut *V.offset((Vchunk as usize).wrapping_mul(s) as isize) as *mut uint32_t; let mut ctx_i: *mut PwxformCtx = 0 as *mut PwxformCtx; if flags & 0x2 as libc::c_int as libc::c_uint != 0 { ctx_i = &mut *ctx.offset(i as isize) as *mut PwxformCtx; @@ -1788,8 +1747,7 @@ unsafe fn smix( (*ctx_i).w = 0 as libc::c_int as size_t; if i == 0 as libc::c_int as libc::c_uint { HMAC_SHA256_Buf( - Bp.offset(s.wrapping_sub(16 as libc::c_int as libc::c_ulong) as isize) - as *const libc::c_void, + Bp.offset(s.wrapping_sub(16) as isize) as *const libc::c_void, 64 as libc::c_int as size_t, passwd as *const libc::c_void, 32 as libc::c_int as size_t, @@ -1817,7 +1775,7 @@ unsafe fn smix( i = 0 as libc::c_int as uint32_t; while i < p { let mut Bp_0: *mut uint32_t = - &mut *B.offset((i as libc::c_ulong).wrapping_mul(s) as isize) as *mut uint32_t; + &mut *B.offset((i as usize).wrapping_mul(s) as isize) as *mut uint32_t; smix2( Bp_0, r, @@ -1841,7 +1799,7 @@ unsafe fn smix( unsafe fn smix1( mut B: *mut uint32_t, - mut r: size_t, + mut r: usize, mut N: uint64_t, mut flags: Flags, mut V: *mut uint32_t, @@ -1850,26 +1808,21 @@ unsafe fn smix1( mut XY: *mut uint32_t, mut ctx: *mut PwxformCtx, ) { - let mut s: size_t = (32 as libc::c_int as libc::c_ulong).wrapping_mul(r); + let mut s: size_t = (32usize).wrapping_mul(r); let mut X: *mut uint32_t = XY; let mut Y: *mut uint32_t = &mut *XY.offset(s as isize) as *mut uint32_t; - let mut i: uint64_t = 0; + let mut i: usize = 0; let mut j: uint64_t = 0; let mut k: size_t = 0; k = 0 as libc::c_int as size_t; - while k < (2 as libc::c_int as libc::c_ulong).wrapping_mul(r) { - i = 0 as libc::c_int as uint64_t; - while i < 16 as libc::c_int as libc::c_ulong { - *X.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add(i) as isize, - ) = le32dec( + while k < (2usize).wrapping_mul(r) { + i = 0; + while i < 16usize { + *X.offset(k.wrapping_mul(16usize).wrapping_add(i) as isize) = le32dec( &mut *B.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add( - i.wrapping_mul(5 as libc::c_int as libc::c_ulong) - .wrapping_rem(16 as libc::c_int as libc::c_ulong), - ) as isize, + k.wrapping_mul(16usize) + .wrapping_add(i.wrapping_mul(5usize).wrapping_rem(16usize)) + as isize, ) as *mut uint32_t as *const libc::c_void, ); i = i.wrapping_add(1); @@ -1878,26 +1831,40 @@ unsafe fn smix1( k = k.wrapping_add(1); k; } - i = 0 as libc::c_int as uint64_t; + let mut i = 0; while i < N { - blkcpy(&mut *V.offset(i.wrapping_mul(s) as isize), X, s); + blkcpy( + &mut *V.offset(usize::try_from(i).unwrap().wrapping_mul(s) as isize), + X, + s, + ); if !VROM.is_null() && i == 0 as libc::c_int as libc::c_ulong { blkxor( X, &*VROM.offset( - NROM.wrapping_sub(1 as libc::c_int as libc::c_ulong) + usize::try_from(NROM) + .unwrap() + .wrapping_sub(1) .wrapping_mul(s) as isize, ), s, ); } else if !VROM.is_null() && i & 1 as libc::c_int as libc::c_ulong != 0 { - j = integerify(X, r) & NROM.wrapping_sub(1 as libc::c_int as libc::c_ulong); - blkxor(X, &*VROM.offset(j.wrapping_mul(s) as isize), s); + j = integerify(X, r) & NROM.wrapping_sub(1); + blkxor( + X, + &*VROM.offset(usize::try_from(j).unwrap().wrapping_mul(s) as isize), + s, + ); } else if flags & 0x2 as libc::c_int as libc::c_uint != 0 && i > 1 as libc::c_int as libc::c_ulong { j = wrap(integerify(X, r), i); - blkxor(X, &mut *V.offset(j.wrapping_mul(s) as isize), s); + blkxor( + X, + &mut *V.offset(usize::try_from(j).unwrap().wrapping_mul(s) as isize), + s, + ); } if !ctx.is_null() { blockmix_pwxform(X, ctx, r); @@ -1908,21 +1875,16 @@ unsafe fn smix1( i; } k = 0 as libc::c_int as size_t; - while k < (2 as libc::c_int as libc::c_ulong).wrapping_mul(r) { - i = 0 as libc::c_int as uint64_t; - while i < 16 as libc::c_int as libc::c_ulong { + while k < (2usize).wrapping_mul(r) { + let mut i = 0; + while i < 16usize { le32enc( &mut *B.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add( - i.wrapping_mul(5 as libc::c_int as libc::c_ulong) - .wrapping_rem(16 as libc::c_int as libc::c_ulong), - ) as isize, + k.wrapping_mul(16usize) + .wrapping_add(i.wrapping_mul(5usize).wrapping_rem(16usize)) + as isize, ) as *mut uint32_t as *mut libc::c_void, - *X.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add(i) as isize, - ), + *X.offset(k.wrapping_mul(16usize).wrapping_add(i) as isize), ); i = i.wrapping_add(1); i; @@ -1934,36 +1896,31 @@ unsafe fn smix1( unsafe fn smix2( mut B: *mut uint32_t, - mut r: size_t, - mut N: uint64_t, - mut Nloop: uint64_t, + mut r: usize, + mut N: u64, + mut Nloop: u64, mut flags: Flags, mut V: *mut uint32_t, - mut NROM: uint64_t, + mut NROM: u64, mut VROM: *const uint32_t, mut XY: *mut uint32_t, mut ctx: *mut PwxformCtx, ) { - let mut s: size_t = (32 as libc::c_int as libc::c_ulong).wrapping_mul(r); + let mut s: size_t = (32usize).wrapping_mul(r); let mut X: *mut uint32_t = XY; let mut Y: *mut uint32_t = &mut *XY.offset(s as isize) as *mut uint32_t; - let mut i: uint64_t = 0; + // let mut i: uint64_t = 0; let mut j: uint64_t = 0; let mut k: size_t = 0; k = 0 as libc::c_int as size_t; - while k < (2 as libc::c_int as libc::c_ulong).wrapping_mul(r) { - i = 0 as libc::c_int as uint64_t; - while i < 16 as libc::c_int as libc::c_ulong { - *X.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add(i) as isize, - ) = le32dec( + while k < (2usize).wrapping_mul(r) { + let mut i = 0; + while i < 16usize { + *X.offset(k.wrapping_mul(16usize).wrapping_add(i) as isize) = le32dec( &mut *B.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add( - i.wrapping_mul(5 as libc::c_int as libc::c_ulong) - .wrapping_rem(16 as libc::c_int as libc::c_ulong), - ) as isize, + k.wrapping_mul(16usize) + .wrapping_add(i.wrapping_mul(5usize).wrapping_rem(16usize)) + as isize, ) as *mut uint32_t as *const libc::c_void, ); i = i.wrapping_add(1); @@ -1972,16 +1929,28 @@ unsafe fn smix2( k = k.wrapping_add(1); k; } - i = 0 as libc::c_int as uint64_t; + let mut i = 0; while i < Nloop { - if !VROM.is_null() && i & 1 as libc::c_int as libc::c_ulong != 0 { - j = integerify(X, r) & NROM.wrapping_sub(1 as libc::c_int as libc::c_ulong); - blkxor(X, &*VROM.offset(j.wrapping_mul(s) as isize), s); + if !VROM.is_null() && i & 1 != 0 { + j = integerify(X, r) & NROM.wrapping_sub(1); + blkxor( + X, + &*VROM.offset(usize::try_from(j).unwrap().wrapping_mul(s) as isize), + s, + ); } else { - j = integerify(X, r) & N.wrapping_sub(1 as libc::c_int as libc::c_ulong); - blkxor(X, &mut *V.offset(j.wrapping_mul(s) as isize), s); + j = integerify(X, r) & N.wrapping_sub(1); + blkxor( + X, + &mut *V.offset(usize::try_from(j).unwrap().wrapping_mul(s) as isize), + s, + ); if flags & 0x2 as libc::c_int as libc::c_uint != 0 { - blkcpy(&mut *V.offset(j.wrapping_mul(s) as isize), X, s); + blkcpy( + &mut *V.offset(usize::try_from(j).unwrap().wrapping_mul(s) as isize), + X, + s, + ); } } if !ctx.is_null() { @@ -1993,21 +1962,16 @@ unsafe fn smix2( i; } k = 0 as libc::c_int as size_t; - while k < (2 as libc::c_int as libc::c_ulong).wrapping_mul(r) { - i = 0 as libc::c_int as uint64_t; - while i < 16 as libc::c_int as libc::c_ulong { + while k < (2usize).wrapping_mul(r) { + let mut i = 0; + while i < 16usize { le32enc( &mut *B.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add( - i.wrapping_mul(5 as libc::c_int as libc::c_ulong) - .wrapping_rem(16 as libc::c_int as libc::c_ulong), - ) as isize, + k.wrapping_mul(16) + .wrapping_add(i.wrapping_mul(5).wrapping_rem(16)) + as isize, ) as *mut uint32_t as *mut libc::c_void, - *X.offset( - k.wrapping_mul(16 as libc::c_int as libc::c_ulong) - .wrapping_add(i) as isize, - ), + *X.offset(k.wrapping_mul(16).wrapping_add(i) as isize), ); i = i.wrapping_add(1); i; diff --git a/yescrypt/src/salsa20.rs b/yescrypt/src/salsa20.rs index 3a2f1806..1349cafa 100644 --- a/yescrypt/src/salsa20.rs +++ b/yescrypt/src/salsa20.rs @@ -1,252 +1,47 @@ +use salsa20::cipher::Unsigned; + use crate::{ common::{blkcpy, blkxor}, - size_t, uint32_t, + uint32_t, }; -pub(crate) unsafe fn salsa20(mut B: *mut uint32_t, mut rounds: uint32_t) { +pub(crate) unsafe fn salsa20_2(mut B: *mut uint32_t) { + salsa20::(B); +} + +unsafe fn salsa20(mut B: *mut uint32_t) { let mut x: [uint32_t; 16] = [0; 16]; - let mut i: size_t = 0; - i = 0 as libc::c_int as size_t; - while i < 16 as libc::c_int as libc::c_ulong { - x[i.wrapping_mul(5 as libc::c_int as libc::c_ulong) - .wrapping_rem(16 as libc::c_int as libc::c_ulong) as usize] = *B.offset(i as isize); - i = i.wrapping_add(1); - i; + for i in 0..16 { + x[i * 5 % 16] = *B.offset(i as isize); } - i = 0 as libc::c_int as size_t; - while i < rounds as libc::c_ulong { - x[4 as libc::c_int as usize] ^= (x[0 as libc::c_int as usize]) - .wrapping_add(x[12 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[0 as libc::c_int as usize]).wrapping_add(x[12 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[8 as libc::c_int as usize] ^= (x[4 as libc::c_int as usize]) - .wrapping_add(x[0 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[4 as libc::c_int as usize]).wrapping_add(x[0 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[12 as libc::c_int as usize] ^= (x[8 as libc::c_int as usize]) - .wrapping_add(x[4 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[8 as libc::c_int as usize]).wrapping_add(x[4 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[0 as libc::c_int as usize] ^= (x[12 as libc::c_int as usize]) - .wrapping_add(x[8 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[12 as libc::c_int as usize]).wrapping_add(x[8 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - x[9 as libc::c_int as usize] ^= (x[5 as libc::c_int as usize]) - .wrapping_add(x[1 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[5 as libc::c_int as usize]).wrapping_add(x[1 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[13 as libc::c_int as usize] ^= (x[9 as libc::c_int as usize]) - .wrapping_add(x[5 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[9 as libc::c_int as usize]).wrapping_add(x[5 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[1 as libc::c_int as usize] ^= (x[13 as libc::c_int as usize]) - .wrapping_add(x[9 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[13 as libc::c_int as usize]).wrapping_add(x[9 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[5 as libc::c_int as usize] ^= (x[1 as libc::c_int as usize]) - .wrapping_add(x[13 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[1 as libc::c_int as usize]).wrapping_add(x[13 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - x[14 as libc::c_int as usize] ^= (x[10 as libc::c_int as usize]) - .wrapping_add(x[6 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[10 as libc::c_int as usize]).wrapping_add(x[6 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[2 as libc::c_int as usize] ^= (x[14 as libc::c_int as usize]) - .wrapping_add(x[10 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[14 as libc::c_int as usize]).wrapping_add(x[10 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[6 as libc::c_int as usize] ^= (x[2 as libc::c_int as usize]) - .wrapping_add(x[14 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[2 as libc::c_int as usize]).wrapping_add(x[14 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[10 as libc::c_int as usize] ^= (x[6 as libc::c_int as usize]) - .wrapping_add(x[2 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[6 as libc::c_int as usize]).wrapping_add(x[2 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - x[3 as libc::c_int as usize] ^= (x[15 as libc::c_int as usize]) - .wrapping_add(x[11 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[15 as libc::c_int as usize]).wrapping_add(x[11 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[7 as libc::c_int as usize] ^= (x[3 as libc::c_int as usize]) - .wrapping_add(x[15 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[3 as libc::c_int as usize]).wrapping_add(x[15 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[11 as libc::c_int as usize] ^= (x[7 as libc::c_int as usize]) - .wrapping_add(x[3 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[7 as libc::c_int as usize]).wrapping_add(x[3 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[15 as libc::c_int as usize] ^= (x[11 as libc::c_int as usize]) - .wrapping_add(x[7 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[11 as libc::c_int as usize]).wrapping_add(x[7 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - x[1 as libc::c_int as usize] ^= (x[0 as libc::c_int as usize]) - .wrapping_add(x[3 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[0 as libc::c_int as usize]).wrapping_add(x[3 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[2 as libc::c_int as usize] ^= (x[1 as libc::c_int as usize]) - .wrapping_add(x[0 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[1 as libc::c_int as usize]).wrapping_add(x[0 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[3 as libc::c_int as usize] ^= (x[2 as libc::c_int as usize]) - .wrapping_add(x[1 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[2 as libc::c_int as usize]).wrapping_add(x[1 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[0 as libc::c_int as usize] ^= (x[3 as libc::c_int as usize]) - .wrapping_add(x[2 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[3 as libc::c_int as usize]).wrapping_add(x[2 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - x[6 as libc::c_int as usize] ^= (x[5 as libc::c_int as usize]) - .wrapping_add(x[4 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[5 as libc::c_int as usize]).wrapping_add(x[4 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[7 as libc::c_int as usize] ^= (x[6 as libc::c_int as usize]) - .wrapping_add(x[5 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[6 as libc::c_int as usize]).wrapping_add(x[5 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[4 as libc::c_int as usize] ^= (x[7 as libc::c_int as usize]) - .wrapping_add(x[6 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[7 as libc::c_int as usize]).wrapping_add(x[6 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[5 as libc::c_int as usize] ^= (x[4 as libc::c_int as usize]) - .wrapping_add(x[7 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[4 as libc::c_int as usize]).wrapping_add(x[7 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - x[11 as libc::c_int as usize] ^= (x[10 as libc::c_int as usize]) - .wrapping_add(x[9 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[10 as libc::c_int as usize]).wrapping_add(x[9 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[8 as libc::c_int as usize] ^= (x[11 as libc::c_int as usize]) - .wrapping_add(x[10 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[11 as libc::c_int as usize]).wrapping_add(x[10 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[9 as libc::c_int as usize] ^= (x[8 as libc::c_int as usize]) - .wrapping_add(x[11 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[8 as libc::c_int as usize]).wrapping_add(x[11 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[10 as libc::c_int as usize] ^= (x[9 as libc::c_int as usize]) - .wrapping_add(x[8 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[9 as libc::c_int as usize]).wrapping_add(x[8 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - x[12 as libc::c_int as usize] ^= (x[15 as libc::c_int as usize]) - .wrapping_add(x[14 as libc::c_int as usize]) - << 7 as libc::c_int - | (x[15 as libc::c_int as usize]).wrapping_add(x[14 as libc::c_int as usize]) - >> 32 as libc::c_int - 7 as libc::c_int; - x[13 as libc::c_int as usize] ^= (x[12 as libc::c_int as usize]) - .wrapping_add(x[15 as libc::c_int as usize]) - << 9 as libc::c_int - | (x[12 as libc::c_int as usize]).wrapping_add(x[15 as libc::c_int as usize]) - >> 32 as libc::c_int - 9 as libc::c_int; - x[14 as libc::c_int as usize] ^= (x[13 as libc::c_int as usize]) - .wrapping_add(x[12 as libc::c_int as usize]) - << 13 as libc::c_int - | (x[13 as libc::c_int as usize]).wrapping_add(x[12 as libc::c_int as usize]) - >> 32 as libc::c_int - 13 as libc::c_int; - x[15 as libc::c_int as usize] ^= (x[14 as libc::c_int as usize]) - .wrapping_add(x[13 as libc::c_int as usize]) - << 18 as libc::c_int - | (x[14 as libc::c_int as usize]).wrapping_add(x[13 as libc::c_int as usize]) - >> 32 as libc::c_int - 18 as libc::c_int; - i = (i as libc::c_ulong).wrapping_add(2 as libc::c_int as libc::c_ulong) as size_t - as size_t; + + use salsa20::cipher::StreamCipherCore; + + let mut block = [0u8; 64]; + salsa20::SalsaCore::::from_raw_state(x).write_keystream_block((&mut block).into()); + + for (c, b) in block.chunks_exact(4).zip(x.iter_mut()) { + *b = u32::from_le_bytes(c.try_into().expect("4 bytes is 1 u32")).wrapping_sub(*b); } - i = 0 as libc::c_int as size_t; - while i < 16 as libc::c_int as libc::c_ulong { - let ref mut fresh4 = *B.offset(i as isize); - *fresh4 = (*fresh4 as libc::c_uint).wrapping_add( - x[i.wrapping_mul(5 as libc::c_int as libc::c_ulong) - .wrapping_rem(16 as libc::c_int as libc::c_ulong) as usize], - ) as uint32_t as uint32_t; - i = i.wrapping_add(1); - i; + + for i in 0..16 { + let x = (*B.offset(i as isize)).wrapping_add(x[i * 5 % 16]); + B.offset(i as isize).write(x) } } -pub(crate) unsafe fn blockmix_salsa8(mut B: *mut uint32_t, mut Y: *mut uint32_t, mut r: size_t) { +pub(crate) unsafe fn blockmix_salsa8(mut B: *mut uint32_t, mut Y: *mut uint32_t, mut r: usize) { let mut X: [uint32_t; 16] = [0; 16]; - let mut i: size_t = 0; - blkcpy( - X.as_mut_ptr(), - &mut *B.offset( - (2 as libc::c_int as libc::c_ulong) - .wrapping_mul(r) - .wrapping_sub(1 as libc::c_int as libc::c_ulong) - .wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize, - ), - 16 as libc::c_int as size_t, - ); - i = 0 as libc::c_int as size_t; - while i < (2 as libc::c_int as libc::c_ulong).wrapping_mul(r) { - blkxor( - X.as_mut_ptr(), - &mut *B.offset(i.wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize), - 16 as libc::c_int as size_t, - ); - salsa20(X.as_mut_ptr(), 8 as libc::c_int as uint32_t); - blkcpy( - &mut *Y.offset(i.wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize), - X.as_mut_ptr(), - 16 as libc::c_int as size_t, - ); - i = i.wrapping_add(1); - i; + blkcpy(X.as_mut_ptr(), &mut *B.add((2 * r - 1) * 16), 16); + for i in 0..(2 * r) { + blkxor(X.as_mut_ptr(), &mut *B.add(i * 16), 16); + salsa20::(X.as_mut_ptr()); + blkcpy(&mut *Y.add(i * 16), X.as_mut_ptr(), 16); } - i = 0 as libc::c_int as size_t; - while i < r { - blkcpy( - &mut *B.offset(i.wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize), - &mut *Y.offset( - i.wrapping_mul(2 as libc::c_int as libc::c_ulong) - .wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize, - ), - 16 as libc::c_int as size_t, - ); - i = i.wrapping_add(1); - i; + for i in 0..r { + blkcpy(&mut *B.add(i * 16), &mut *Y.add((i * 2) * 16), 16); } - i = 0 as libc::c_int as size_t; - while i < r { - blkcpy( - &mut *B.offset( - i.wrapping_add(r) - .wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize, - ), - &mut *Y.offset( - i.wrapping_mul(2 as libc::c_int as libc::c_ulong) - .wrapping_add(1 as libc::c_int as libc::c_ulong) - .wrapping_mul(16 as libc::c_int as libc::c_ulong) as isize, - ), - 16 as libc::c_int as size_t, - ); - i = i.wrapping_add(1); - i; + for i in 0..r { + blkcpy(&mut *B.add((i + r) * 16), &mut *Y.add((i * 2 + 1) * 16), 16); } } diff --git a/yescrypt/src/sha256.rs b/yescrypt/src/sha256.rs index 5b272fa5..eb67b0d1 100644 --- a/yescrypt/src/sha256.rs +++ b/yescrypt/src/sha256.rs @@ -8,1977 +8,17 @@ unused_mut )] -use crate::{size_t, uint32_t, uint64_t, uint8_t}; -use libc::{memcpy, memset}; - -#[derive(Copy, Clone)] -#[repr(C)] -pub struct SHA256_CTX { - pub state: [uint32_t; 8], - pub count: uint64_t, - pub buf: [uint8_t; 64], -} - -#[derive(Copy, Clone)] -#[repr(C)] -pub struct HMAC_SHA256_CTX { - pub ictx: SHA256_CTX, - pub octx: SHA256_CTX, -} - -#[derive(Copy, Clone)] -#[repr(C)] -pub union C2RustUnnamed { - pub tmp8: [uint8_t; 96], - pub state: [uint32_t; 8], -} - -#[inline] -unsafe fn be32dec(mut pp: *const libc::c_void) -> uint32_t { - let mut p: *const uint8_t = pp as *const uint8_t; - return (*p.offset(3 as libc::c_int as isize) as uint32_t) - .wrapping_add((*p.offset(2 as libc::c_int as isize) as uint32_t) << 8 as libc::c_int) - .wrapping_add((*p.offset(1 as libc::c_int as isize) as uint32_t) << 16 as libc::c_int) - .wrapping_add((*p.offset(0 as libc::c_int as isize) as uint32_t) << 24 as libc::c_int); -} - -#[inline] -unsafe fn be32enc(mut pp: *mut libc::c_void, mut x: uint32_t) { - let mut p: *mut uint8_t = pp as *mut uint8_t; - *p.offset(3 as libc::c_int as isize) = (x & 0xff as libc::c_int as libc::c_uint) as uint8_t; - *p.offset(2 as libc::c_int as isize) = - (x >> 8 as libc::c_int & 0xff as libc::c_int as libc::c_uint) as uint8_t; - *p.offset(1 as libc::c_int as isize) = - (x >> 16 as libc::c_int & 0xff as libc::c_int as libc::c_uint) as uint8_t; - *p.offset(0 as libc::c_int as isize) = - (x >> 24 as libc::c_int & 0xff as libc::c_int as libc::c_uint) as uint8_t; -} - -#[inline] -unsafe fn be64enc(mut pp: *mut libc::c_void, mut x: uint64_t) { - let mut p: *mut uint8_t = pp as *mut uint8_t; - *p.offset(7 as libc::c_int as isize) = (x & 0xff as libc::c_int as libc::c_ulong) as uint8_t; - *p.offset(6 as libc::c_int as isize) = - (x >> 8 as libc::c_int & 0xff as libc::c_int as libc::c_ulong) as uint8_t; - *p.offset(5 as libc::c_int as isize) = - (x >> 16 as libc::c_int & 0xff as libc::c_int as libc::c_ulong) as uint8_t; - *p.offset(4 as libc::c_int as isize) = - (x >> 24 as libc::c_int & 0xff as libc::c_int as libc::c_ulong) as uint8_t; - *p.offset(3 as libc::c_int as isize) = - (x >> 32 as libc::c_int & 0xff as libc::c_int as libc::c_ulong) as uint8_t; - *p.offset(2 as libc::c_int as isize) = - (x >> 40 as libc::c_int & 0xff as libc::c_int as libc::c_ulong) as uint8_t; - *p.offset(1 as libc::c_int as isize) = - (x >> 48 as libc::c_int & 0xff as libc::c_int as libc::c_ulong) as uint8_t; - *p.offset(0 as libc::c_int as isize) = - (x >> 56 as libc::c_int & 0xff as libc::c_int as libc::c_ulong) as uint8_t; -} - -unsafe fn be32enc_vect(mut dst: *mut uint8_t, mut src: *const uint32_t, mut len: size_t) { - loop { - be32enc( - &mut *dst.offset(0 as libc::c_int as isize) as *mut uint8_t as *mut libc::c_void, - *src.offset(0 as libc::c_int as isize), - ); - be32enc( - &mut *dst.offset(4 as libc::c_int as isize) as *mut uint8_t as *mut libc::c_void, - *src.offset(1 as libc::c_int as isize), - ); - src = src.offset(2 as libc::c_int as isize); - dst = dst.offset(8 as libc::c_int as isize); - len = len.wrapping_sub(1); - if !(len != 0) { - break; - } - } -} - -unsafe fn be32dec_vect(mut dst: *mut uint32_t, mut src: *const uint8_t, mut len: size_t) { - loop { - *dst.offset(0 as libc::c_int as isize) = be32dec(&*src.offset(0 as libc::c_int as isize) - as *const uint8_t - as *const libc::c_void); - *dst.offset(1 as libc::c_int as isize) = be32dec(&*src.offset(4 as libc::c_int as isize) - as *const uint8_t - as *const libc::c_void); - src = src.offset(8 as libc::c_int as isize); - dst = dst.offset(2 as libc::c_int as isize); - len = len.wrapping_sub(1); - if !(len != 0) { - break; - } - } -} - -static mut Krnd: [uint32_t; 64] = [ - 0x428a2f98 as libc::c_int as uint32_t, - 0x71374491 as libc::c_int as uint32_t, - 0xb5c0fbcf as libc::c_uint, - 0xe9b5dba5 as libc::c_uint, - 0x3956c25b as libc::c_int as uint32_t, - 0x59f111f1 as libc::c_int as uint32_t, - 0x923f82a4 as libc::c_uint, - 0xab1c5ed5 as libc::c_uint, - 0xd807aa98 as libc::c_uint, - 0x12835b01 as libc::c_int as uint32_t, - 0x243185be as libc::c_int as uint32_t, - 0x550c7dc3 as libc::c_int as uint32_t, - 0x72be5d74 as libc::c_int as uint32_t, - 0x80deb1fe as libc::c_uint, - 0x9bdc06a7 as libc::c_uint, - 0xc19bf174 as libc::c_uint, - 0xe49b69c1 as libc::c_uint, - 0xefbe4786 as libc::c_uint, - 0xfc19dc6 as libc::c_int as uint32_t, - 0x240ca1cc as libc::c_int as uint32_t, - 0x2de92c6f as libc::c_int as uint32_t, - 0x4a7484aa as libc::c_int as uint32_t, - 0x5cb0a9dc as libc::c_int as uint32_t, - 0x76f988da as libc::c_int as uint32_t, - 0x983e5152 as libc::c_uint, - 0xa831c66d as libc::c_uint, - 0xb00327c8 as libc::c_uint, - 0xbf597fc7 as libc::c_uint, - 0xc6e00bf3 as libc::c_uint, - 0xd5a79147 as libc::c_uint, - 0x6ca6351 as libc::c_int as uint32_t, - 0x14292967 as libc::c_int as uint32_t, - 0x27b70a85 as libc::c_int as uint32_t, - 0x2e1b2138 as libc::c_int as uint32_t, - 0x4d2c6dfc as libc::c_int as uint32_t, - 0x53380d13 as libc::c_int as uint32_t, - 0x650a7354 as libc::c_int as uint32_t, - 0x766a0abb as libc::c_int as uint32_t, - 0x81c2c92e as libc::c_uint, - 0x92722c85 as libc::c_uint, - 0xa2bfe8a1 as libc::c_uint, - 0xa81a664b as libc::c_uint, - 0xc24b8b70 as libc::c_uint, - 0xc76c51a3 as libc::c_uint, - 0xd192e819 as libc::c_uint, - 0xd6990624 as libc::c_uint, - 0xf40e3585 as libc::c_uint, - 0x106aa070 as libc::c_int as uint32_t, - 0x19a4c116 as libc::c_int as uint32_t, - 0x1e376c08 as libc::c_int as uint32_t, - 0x2748774c as libc::c_int as uint32_t, - 0x34b0bcb5 as libc::c_int as uint32_t, - 0x391c0cb3 as libc::c_int as uint32_t, - 0x4ed8aa4a as libc::c_int as uint32_t, - 0x5b9cca4f as libc::c_int as uint32_t, - 0x682e6ff3 as libc::c_int as uint32_t, - 0x748f82ee as libc::c_int as uint32_t, - 0x78a5636f as libc::c_int as uint32_t, - 0x84c87814 as libc::c_uint, - 0x8cc70208 as libc::c_uint, - 0x90befffa as libc::c_uint, - 0xa4506ceb as libc::c_uint, - 0xbef9a3f7 as libc::c_uint, - 0xc67178f2 as libc::c_uint, -]; - -unsafe fn SHA256_Transform( - mut state: *mut uint32_t, - mut block: *const uint8_t, - mut W: *mut uint32_t, - mut S: *mut uint32_t, -) { - let mut i: libc::c_int = 0; - be32dec_vect(W, block, 8 as libc::c_int as size_t); - memcpy(S as *mut libc::c_void, state as *const libc::c_void, 32); - i = 0 as libc::c_int; - while i < 64 as libc::c_int { - let mut x_xor_y: uint32_t = 0; - let mut y_xor_z: uint32_t = *S - .offset(((65 as libc::c_int - i) % 8 as libc::c_int) as isize) - ^ *S.offset(((66 as libc::c_int - i) % 8 as libc::c_int) as isize); - let ref mut fresh0 = - *S.offset(((71 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh0 = (*fresh0 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((0 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(0 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh1 = - *S.offset(((67 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh1 = (*fresh1 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh2 = - *S.offset(((71 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh2 = (*fresh2 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 0 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh3 = - *S.offset(((71 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh3 = (*fresh3 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((1 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(1 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh4 = - *S.offset(((67 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh4 = (*fresh4 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh5 = - *S.offset(((71 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh5 = (*fresh5 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 1 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh6 = - *S.offset(((71 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh6 = (*fresh6 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((2 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(2 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh7 = - *S.offset(((67 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh7 = (*fresh7 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh8 = - *S.offset(((71 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh8 = (*fresh8 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 2 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh9 = - *S.offset(((71 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh9 = (*fresh9 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((3 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(3 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh10 = - *S.offset(((67 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh10 = (*fresh10 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh11 = - *S.offset(((71 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh11 = (*fresh11 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 3 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh12 = - *S.offset(((71 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh12 = (*fresh12 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((4 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(4 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh13 = - *S.offset(((67 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh13 = (*fresh13 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh14 = - *S.offset(((71 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh14 = (*fresh14 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 4 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh15 = - *S.offset(((71 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh15 = (*fresh15 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((5 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(5 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh16 = - *S.offset(((67 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh16 = (*fresh16 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh17 = - *S.offset(((71 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh17 = (*fresh17 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 5 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh18 = - *S.offset(((71 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh18 = (*fresh18 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((6 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(6 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh19 = - *S.offset(((67 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh19 = (*fresh19 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh20 = - *S.offset(((71 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh20 = (*fresh20 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 6 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh21 = - *S.offset(((71 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh21 = (*fresh21 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((7 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(7 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh22 = - *S.offset(((67 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh22 = (*fresh22 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh23 = - *S.offset(((71 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh23 = (*fresh23 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 7 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh24 = - *S.offset(((71 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh24 = (*fresh24 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((8 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(8 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh25 = - *S.offset(((67 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh25 = (*fresh25 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh26 = - *S.offset(((71 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh26 = (*fresh26 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 8 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh27 = - *S.offset(((71 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh27 = (*fresh27 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset(((68 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S - .offset(((68 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset(((68 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - & (*S.offset( - ((69 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize, - )) - ^ *S.offset( - ((70 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((9 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(9 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh28 = - *S.offset(((67 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh28 = (*fresh28 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh29 = - *S.offset(((71 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh29 = (*fresh29 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset(((64 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S - .offset(((64 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset(((65 as libc::c_int - 9 as libc::c_int) % 8 as libc::c_int) as isize) - ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh30 = - *S.offset(((71 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh30 = (*fresh30 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset( - ((68 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) & (*S.offset( - ((69 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - )) ^ *S.offset( - ((70 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((10 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(10 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh31 = - *S.offset(((67 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh31 = (*fresh31 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh32 = - *S.offset(((71 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh32 = (*fresh32 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset( - ((65 as libc::c_int - 10 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh33 = - *S.offset(((71 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh33 = (*fresh33 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset( - ((68 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) & (*S.offset( - ((69 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - )) ^ *S.offset( - ((70 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((11 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(11 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh34 = - *S.offset(((67 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh34 = (*fresh34 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh35 = - *S.offset(((71 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh35 = (*fresh35 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset( - ((65 as libc::c_int - 11 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh36 = - *S.offset(((71 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh36 = (*fresh36 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset( - ((68 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) & (*S.offset( - ((69 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - )) ^ *S.offset( - ((70 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((12 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(12 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh37 = - *S.offset(((67 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh37 = (*fresh37 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh38 = - *S.offset(((71 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh38 = (*fresh38 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset( - ((65 as libc::c_int - 12 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh39 = - *S.offset(((71 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh39 = (*fresh39 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset( - ((68 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) & (*S.offset( - ((69 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - )) ^ *S.offset( - ((70 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((13 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(13 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh40 = - *S.offset(((67 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh40 = (*fresh40 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh41 = - *S.offset(((71 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh41 = (*fresh41 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset( - ((65 as libc::c_int - 13 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh42 = - *S.offset(((71 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh42 = (*fresh42 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset( - ((68 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) & (*S.offset( - ((69 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - )) ^ *S.offset( - ((70 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((14 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(14 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh43 = - *S.offset(((67 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh43 = (*fresh43 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh44 = - *S.offset(((71 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh44 = (*fresh44 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset( - ((65 as libc::c_int - 14 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - let ref mut fresh45 = - *S.offset(((71 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh45 = (*fresh45 as libc::c_uint).wrapping_add( - ((*S.offset(((68 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize) - >> 6 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 6 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 11 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 11 as libc::c_int) - ^ (*S.offset( - ((68 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 25 as libc::c_int - | *S.offset( - ((68 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 25 as libc::c_int)) - .wrapping_add( - *S.offset( - ((68 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) & (*S.offset( - ((69 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ *S.offset( - ((70 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - )) ^ *S.offset( - ((70 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ), - ) - .wrapping_add(*W.offset((15 as libc::c_int + i) as isize)) - .wrapping_add(Krnd[(15 as libc::c_int + i) as usize]), - ) as uint32_t as uint32_t; - let ref mut fresh46 = - *S.offset(((67 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh46 = (*fresh46 as libc::c_uint).wrapping_add( - *S.offset(((71 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize), - ) as uint32_t as uint32_t; - x_xor_y = *S.offset(((64 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize) - ^ *S.offset(((65 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize); - let ref mut fresh47 = - *S.offset(((71 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize); - *fresh47 = (*fresh47 as libc::c_uint).wrapping_add( - ((*S.offset(((64 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize) - >> 2 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 2 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 13 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 13 as libc::c_int) - ^ (*S.offset( - ((64 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) >> 22 as libc::c_int - | *S.offset( - ((64 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) << 32 as libc::c_int - 22 as libc::c_int)) - .wrapping_add( - *S.offset( - ((65 as libc::c_int - 15 as libc::c_int) % 8 as libc::c_int) as isize, - ) ^ x_xor_y & y_xor_z, - ), - ) as uint32_t as uint32_t; - y_xor_z = x_xor_y; - if i == 48 as libc::c_int { - break; - } - *W.offset((i + 0 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 0 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 0 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 0 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 0 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 0 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 0 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 0 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 0 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 0 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 0 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 0 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 0 as libc::c_int) as isize)); - *W.offset((i + 1 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 1 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 1 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 1 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 1 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 1 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 1 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 1 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 1 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 1 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 1 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 1 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 1 as libc::c_int) as isize)); - *W.offset((i + 2 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 2 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 2 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 2 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 2 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 2 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 2 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 2 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 2 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 2 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 2 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 2 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 2 as libc::c_int) as isize)); - *W.offset((i + 3 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 3 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 3 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 3 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 3 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 3 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 3 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 3 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 3 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 3 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 3 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 3 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 3 as libc::c_int) as isize)); - *W.offset((i + 4 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 4 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 4 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 4 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 4 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 4 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 4 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 4 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 4 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 4 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 4 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 4 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 4 as libc::c_int) as isize)); - *W.offset((i + 5 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 5 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 5 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 5 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 5 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 5 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 5 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 5 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 5 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 5 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 5 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 5 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 5 as libc::c_int) as isize)); - *W.offset((i + 6 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 6 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 6 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 6 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 6 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 6 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 6 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 6 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 6 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 6 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 6 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 6 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 6 as libc::c_int) as isize)); - *W.offset((i + 7 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 7 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 7 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 7 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 7 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 7 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 7 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 7 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 7 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 7 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 7 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 7 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 7 as libc::c_int) as isize)); - *W.offset((i + 8 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 8 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 8 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 8 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 8 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 8 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 8 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 8 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 8 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 8 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 8 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 8 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 8 as libc::c_int) as isize)); - *W.offset((i + 9 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 9 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 9 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 9 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 9 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 9 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 9 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 9 as libc::c_int + 1 as libc::c_int) as isize) >> 7 as libc::c_int - | *W.offset((i + 9 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 9 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 9 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 9 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 9 as libc::c_int) as isize)); - *W.offset((i + 10 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 10 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 10 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 10 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 10 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 10 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 10 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 10 as libc::c_int + 1 as libc::c_int) as isize) - >> 7 as libc::c_int - | *W.offset((i + 10 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 10 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 10 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 10 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 10 as libc::c_int) as isize)); - *W.offset((i + 11 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 11 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 11 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 11 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 11 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 11 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 11 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 11 as libc::c_int + 1 as libc::c_int) as isize) - >> 7 as libc::c_int - | *W.offset((i + 11 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 11 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 11 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 11 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 11 as libc::c_int) as isize)); - *W.offset((i + 12 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 12 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 12 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 12 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 12 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 12 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 12 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 12 as libc::c_int + 1 as libc::c_int) as isize) - >> 7 as libc::c_int - | *W.offset((i + 12 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 12 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 12 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 12 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 12 as libc::c_int) as isize)); - *W.offset((i + 13 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 13 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 13 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 13 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 13 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 13 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 13 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 13 as libc::c_int + 1 as libc::c_int) as isize) - >> 7 as libc::c_int - | *W.offset((i + 13 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 13 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 13 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 13 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 13 as libc::c_int) as isize)); - *W.offset((i + 14 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 14 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 14 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 14 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 14 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 14 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 14 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 14 as libc::c_int + 1 as libc::c_int) as isize) - >> 7 as libc::c_int - | *W.offset((i + 14 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 14 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 14 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 14 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 14 as libc::c_int) as isize)); - *W.offset((i + 15 as libc::c_int + 16 as libc::c_int) as isize) = ((*W - .offset((i + 15 as libc::c_int + 14 as libc::c_int) as isize) - >> 17 as libc::c_int - | *W.offset((i + 15 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 17 as libc::c_int) - ^ (*W.offset((i + 15 as libc::c_int + 14 as libc::c_int) as isize) - >> 19 as libc::c_int - | *W.offset((i + 15 as libc::c_int + 14 as libc::c_int) as isize) - << 32 as libc::c_int - 19 as libc::c_int) - ^ *W.offset((i + 15 as libc::c_int + 14 as libc::c_int) as isize) >> 10 as libc::c_int) - .wrapping_add(*W.offset((i + 15 as libc::c_int + 9 as libc::c_int) as isize)) - .wrapping_add( - (*W.offset((i + 15 as libc::c_int + 1 as libc::c_int) as isize) - >> 7 as libc::c_int - | *W.offset((i + 15 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 7 as libc::c_int) - ^ (*W.offset((i + 15 as libc::c_int + 1 as libc::c_int) as isize) - >> 18 as libc::c_int - | *W.offset((i + 15 as libc::c_int + 1 as libc::c_int) as isize) - << 32 as libc::c_int - 18 as libc::c_int) - ^ *W.offset((i + 15 as libc::c_int + 1 as libc::c_int) as isize) - >> 3 as libc::c_int, - ) - .wrapping_add(*W.offset((i + 15 as libc::c_int) as isize)); - i += 16 as libc::c_int; - } - let ref mut fresh48 = *state.offset(0 as libc::c_int as isize); - *fresh48 = (*fresh48 as libc::c_uint).wrapping_add(*S.offset(0 as libc::c_int as isize)) - as uint32_t as uint32_t; - let ref mut fresh49 = *state.offset(1 as libc::c_int as isize); - *fresh49 = (*fresh49 as libc::c_uint).wrapping_add(*S.offset(1 as libc::c_int as isize)) - as uint32_t as uint32_t; - let ref mut fresh50 = *state.offset(2 as libc::c_int as isize); - *fresh50 = (*fresh50 as libc::c_uint).wrapping_add(*S.offset(2 as libc::c_int as isize)) - as uint32_t as uint32_t; - let ref mut fresh51 = *state.offset(3 as libc::c_int as isize); - *fresh51 = (*fresh51 as libc::c_uint).wrapping_add(*S.offset(3 as libc::c_int as isize)) - as uint32_t as uint32_t; - let ref mut fresh52 = *state.offset(4 as libc::c_int as isize); - *fresh52 = (*fresh52 as libc::c_uint).wrapping_add(*S.offset(4 as libc::c_int as isize)) - as uint32_t as uint32_t; - let ref mut fresh53 = *state.offset(5 as libc::c_int as isize); - *fresh53 = (*fresh53 as libc::c_uint).wrapping_add(*S.offset(5 as libc::c_int as isize)) - as uint32_t as uint32_t; - let ref mut fresh54 = *state.offset(6 as libc::c_int as isize); - *fresh54 = (*fresh54 as libc::c_uint).wrapping_add(*S.offset(6 as libc::c_int as isize)) - as uint32_t as uint32_t; - let ref mut fresh55 = *state.offset(7 as libc::c_int as isize); - *fresh55 = (*fresh55 as libc::c_uint).wrapping_add(*S.offset(7 as libc::c_int as isize)) - as uint32_t as uint32_t; -} - -static mut PAD: [uint8_t; 64] = [ - 0x80 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, - 0 as libc::c_int as uint8_t, -]; - -unsafe fn SHA256_Pad(mut ctx: *mut SHA256_CTX, mut tmp32: *mut uint32_t) { - let mut r: usize = 0; - r = (*ctx).count as usize >> 3 & 0x3f; - if r < 56 { - memcpy( - &mut *((*ctx).buf).as_mut_ptr().offset(r as isize) as *mut uint8_t as *mut libc::c_void, - PAD.as_ptr() as *const libc::c_void, - 56usize.wrapping_sub(r), - ); - } else { - memcpy( - &mut *((*ctx).buf).as_mut_ptr().offset(r as isize) as *mut uint8_t as *mut libc::c_void, - PAD.as_ptr() as *const libc::c_void, - 64usize.wrapping_sub(r), - ); - SHA256_Transform( - ((*ctx).state).as_mut_ptr(), - ((*ctx).buf).as_mut_ptr(), - &mut *tmp32.offset(0 as libc::c_int as isize), - &mut *tmp32.offset(64 as libc::c_int as isize), - ); - memset( - &mut *((*ctx).buf).as_mut_ptr().offset(0 as libc::c_int as isize) as *mut uint8_t - as *mut libc::c_void, - 0 as libc::c_int, - 56usize, - ); - } - be64enc( - &mut *((*ctx).buf).as_mut_ptr().offset(56 as libc::c_int as isize) as *mut uint8_t - as *mut libc::c_void, - (*ctx).count, - ); - SHA256_Transform( - ((*ctx).state).as_mut_ptr(), - ((*ctx).buf).as_mut_ptr(), - &mut *tmp32.offset(0 as libc::c_int as isize), - &mut *tmp32.offset(64 as libc::c_int as isize), - ); -} - -static mut initial_state: [uint32_t; 8] = [ - 0x6a09e667 as libc::c_int as uint32_t, - 0xbb67ae85 as libc::c_uint, - 0x3c6ef372 as libc::c_int as uint32_t, - 0xa54ff53a as libc::c_uint, - 0x510e527f as libc::c_int as uint32_t, - 0x9b05688c as libc::c_uint, - 0x1f83d9ab as libc::c_int as uint32_t, - 0x5be0cd19 as libc::c_int as uint32_t, -]; - -pub unsafe fn SHA256_Init(mut ctx: *mut SHA256_CTX) { - (*ctx).count = 0 as libc::c_int as uint64_t; - memcpy( - ((*ctx).state).as_mut_ptr() as *mut libc::c_void, - initial_state.as_ptr() as *const libc::c_void, - core::mem::size_of::<[uint32_t; 8]>(), - ); -} - -unsafe fn _SHA256_Update( - mut ctx: *mut SHA256_CTX, - mut in_0: *const libc::c_void, - mut len: size_t, - mut tmp32: *mut uint32_t, -) { - let mut r: usize = 0; - let mut src: *const uint8_t = in_0 as *const uint8_t; - if len == 0 as libc::c_int as libc::c_ulong { - return; - } - r = (*ctx).count as usize >> 3 & 0x3f; - (*ctx).count = ((*ctx).count as libc::c_ulong).wrapping_add(len << 3 as libc::c_int) as uint64_t - as uint64_t; - if len < 64usize.wrapping_sub(r) as size_t { - memcpy( - &mut *((*ctx).buf).as_mut_ptr().offset(r as isize) as *mut uint8_t as *mut libc::c_void, - src as *const libc::c_void, - len as usize, - ); - return; - } - memcpy( - &mut *((*ctx).buf).as_mut_ptr().offset(r as isize) as *mut uint8_t as *mut libc::c_void, - src as *const libc::c_void, - 64usize.wrapping_sub(r), - ); - SHA256_Transform( - ((*ctx).state).as_mut_ptr(), - ((*ctx).buf).as_mut_ptr(), - &mut *tmp32.offset(0 as libc::c_int as isize), - &mut *tmp32.offset(64 as libc::c_int as isize), - ); - src = src.offset(64usize.wrapping_sub(r) as isize); - len = len.wrapping_sub(6usize.wrapping_sub(r) as size_t); - while len >= 64 as libc::c_int as libc::c_ulong { - SHA256_Transform( - ((*ctx).state).as_mut_ptr(), - src, - &mut *tmp32.offset(0 as libc::c_int as isize), - &mut *tmp32.offset(64 as libc::c_int as isize), - ); - src = src.offset(64 as libc::c_int as isize); - len = len.wrapping_sub(64); - } - memcpy( - ((*ctx).buf).as_mut_ptr() as *mut libc::c_void, - src as *const libc::c_void, - len as usize, - ); -} - -pub unsafe fn SHA256_Update( - mut ctx: *mut SHA256_CTX, - mut in_0: *const libc::c_void, - mut len: size_t, -) { - let mut tmp32: [uint32_t; 72] = [0; 72]; - _SHA256_Update(ctx, in_0, len, tmp32.as_mut_ptr()); -} - -unsafe fn _SHA256_Final( - mut digest: *mut uint8_t, - mut ctx: *mut SHA256_CTX, - mut tmp32: *mut uint32_t, -) { - SHA256_Pad(ctx, tmp32); - be32enc_vect( - digest, - ((*ctx).state).as_mut_ptr(), - 4 as libc::c_int as size_t, - ); -} - -pub unsafe fn SHA256_Final(mut digest: *mut uint8_t, mut ctx: *mut SHA256_CTX) { - let mut tmp32: [uint32_t; 72] = [0; 72]; - _SHA256_Final(digest, ctx, tmp32.as_mut_ptr()); -} +use crate::{size_t, uint64_t, uint8_t}; +use libc::memcpy; pub unsafe fn SHA256_Buf(mut in_0: *const libc::c_void, mut len: size_t, mut digest: *mut uint8_t) { - let mut ctx: SHA256_CTX = SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }; - let mut tmp32: [uint32_t; 72] = [0; 72]; - SHA256_Init(&mut ctx); - _SHA256_Update(&mut ctx, in_0, len, tmp32.as_mut_ptr()); - _SHA256_Final(digest, &mut ctx, tmp32.as_mut_ptr()); -} - -unsafe fn _HMAC_SHA256_Init( - mut ctx: *mut HMAC_SHA256_CTX, - mut _K: *const libc::c_void, - mut Klen: size_t, - mut tmp32: *mut uint32_t, - mut pad: *mut uint8_t, - mut khash: *mut uint8_t, -) { - let mut K: *const uint8_t = _K as *const uint8_t; - let mut i: size_t = 0; - if Klen > 64 as libc::c_int as libc::c_ulong { - SHA256_Init(&mut (*ctx).ictx); - _SHA256_Update(&mut (*ctx).ictx, K as *const libc::c_void, Klen, tmp32); - _SHA256_Final(khash, &mut (*ctx).ictx, tmp32); - K = khash; - Klen = 32; - } - SHA256_Init(&mut (*ctx).ictx); - memset(pad as *mut libc::c_void, 0x36 as libc::c_int, 64); - i = 0 as libc::c_int as size_t; - while i < Klen { - let ref mut fresh56 = *pad.offset(i as isize); - *fresh56 = (*fresh56 as libc::c_int ^ *K.offset(i as isize) as libc::c_int) as uint8_t; - i = i.wrapping_add(1); - i; - } - _SHA256_Update( - &mut (*ctx).ictx, - pad as *const libc::c_void, - 64 as libc::c_int as size_t, - tmp32, - ); - SHA256_Init(&mut (*ctx).octx); - memset(pad as *mut libc::c_void, 0x5c as libc::c_int, 64); - i = 0 as libc::c_int as size_t; - while i < Klen { - let ref mut fresh57 = *pad.offset(i as isize); - *fresh57 = (*fresh57 as libc::c_int ^ *K.offset(i as isize) as libc::c_int) as uint8_t; - i = i.wrapping_add(1); - i; - } - _SHA256_Update( - &mut (*ctx).octx, - pad as *const libc::c_void, - 64 as libc::c_int as size_t, - tmp32, - ); -} - -pub unsafe fn HMAC_SHA256_Init( - mut ctx: *mut HMAC_SHA256_CTX, - mut _K: *const libc::c_void, - mut Klen: size_t, -) { - let mut tmp32: [uint32_t; 72] = [0; 72]; - let mut pad: [uint8_t; 64] = [0; 64]; - let mut khash: [uint8_t; 32] = [0; 32]; - _HMAC_SHA256_Init( - ctx, - _K, - Klen, - tmp32.as_mut_ptr(), - pad.as_mut_ptr(), - khash.as_mut_ptr(), - ); -} - -unsafe fn _HMAC_SHA256_Update( - mut ctx: *mut HMAC_SHA256_CTX, - mut in_0: *const libc::c_void, - mut len: size_t, - mut tmp32: *mut uint32_t, -) { - _SHA256_Update(&mut (*ctx).ictx, in_0, len, tmp32); -} - -pub unsafe fn HMAC_SHA256_Update( - mut ctx: *mut HMAC_SHA256_CTX, - mut in_0: *const libc::c_void, - mut len: size_t, -) { - let mut tmp32: [uint32_t; 72] = [0; 72]; - _HMAC_SHA256_Update(ctx, in_0, len, tmp32.as_mut_ptr()); -} - -unsafe fn _HMAC_SHA256_Final( - mut digest: *mut uint8_t, - mut ctx: *mut HMAC_SHA256_CTX, - mut tmp32: *mut uint32_t, - mut ihash: *mut uint8_t, -) { - _SHA256_Final(ihash, &mut (*ctx).ictx, tmp32); - _SHA256_Update( - &mut (*ctx).octx, - ihash as *const libc::c_void, - 32 as libc::c_int as size_t, - tmp32, - ); - _SHA256_Final(digest, &mut (*ctx).octx, tmp32); -} - -pub unsafe fn HMAC_SHA256_Final(mut digest: *mut uint8_t, mut ctx: *mut HMAC_SHA256_CTX) { - let mut tmp32: [uint32_t; 72] = [0; 72]; - let mut ihash: [uint8_t; 32] = [0; 32]; - _HMAC_SHA256_Final(digest, ctx, tmp32.as_mut_ptr(), ihash.as_mut_ptr()); + use sha2::digest::array::Array; + use sha2::Digest; + let mut ctx = sha2::Sha256::new(); + ctx.update(&*core::ptr::slice_from_raw_parts(in_0 as *const u8, len)); + ctx.finalize_into(Array::from_mut_slice( + &mut *core::ptr::slice_from_raw_parts_mut(digest, 32), + )); } pub unsafe fn HMAC_SHA256_Buf( @@ -1988,62 +28,20 @@ pub unsafe fn HMAC_SHA256_Buf( mut len: size_t, mut digest: *mut uint8_t, ) { - let mut ctx: HMAC_SHA256_CTX = HMAC_SHA256_CTX { - ictx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - octx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - }; - let mut tmp32: [uint32_t; 72] = [0; 72]; - let mut tmp8: [uint8_t; 96] = [0; 96]; - _HMAC_SHA256_Init( - &mut ctx, - K, - Klen, - tmp32.as_mut_ptr(), - &mut *tmp8.as_mut_ptr().offset(0 as libc::c_int as isize), - &mut *tmp8.as_mut_ptr().offset(64 as libc::c_int as isize), - ); - _HMAC_SHA256_Update(&mut ctx, in_0, len, tmp32.as_mut_ptr()); - _HMAC_SHA256_Final( - digest, - &mut ctx, - tmp32.as_mut_ptr(), - &mut *tmp8.as_mut_ptr().offset(0 as libc::c_int as isize), - ); -} + use hmac::KeyInit; + use hmac::Mac; -unsafe fn SHA256_Pad_Almost( - mut ctx: *mut SHA256_CTX, - mut len: *mut uint8_t, - mut tmp32: *mut uint32_t, -) -> libc::c_int { - let mut r: uint32_t = 0; - r = ((*ctx).count >> 3 as libc::c_int & 0x3f as libc::c_int as libc::c_ulong) as uint32_t; - if r >= 56 as libc::c_int as libc::c_uint { - return -(1 as libc::c_int); - } - be64enc(len as *mut libc::c_void, (*ctx).count); - _SHA256_Update( - ctx, - PAD.as_ptr() as *const libc::c_void, - (56 as libc::c_int as libc::c_uint).wrapping_sub(r) as size_t, - tmp32, - ); - (*ctx).buf[63 as libc::c_int as usize] = *len.offset(7 as libc::c_int as isize); - _SHA256_Update( - ctx, - len as *const libc::c_void, - 7 as libc::c_int as size_t, - tmp32, - ); - return 0 as libc::c_int; + let key = &*core::ptr::slice_from_raw_parts(K as *const uint8_t, Klen); + + let mut hmac = hmac::Hmac::::new_from_slice(key) + .expect("key length should always be valid with hmac"); + + let mut in_0 = in_0; + let mut len = len; + hmac.update(&*core::ptr::slice_from_raw_parts(in_0 as *const u8, len)); + + let mac = hmac.finalize().into_bytes(); + memcpy(digest as *mut _, mac.as_ptr() as *const _, 32); } pub unsafe fn PBKDF2_SHA256( @@ -2055,271 +53,9 @@ pub unsafe fn PBKDF2_SHA256( mut buf: *mut uint8_t, mut dkLen: size_t, ) { - let mut current_block: u64; - let mut Phctx: HMAC_SHA256_CTX = HMAC_SHA256_CTX { - ictx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - octx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - }; - let mut PShctx: HMAC_SHA256_CTX = HMAC_SHA256_CTX { - ictx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - octx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - }; - let mut hctx: HMAC_SHA256_CTX = HMAC_SHA256_CTX { - ictx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - octx: SHA256_CTX { - state: [0; 8], - count: 0, - buf: [0; 64], - }, - }; - let mut tmp32: [uint32_t; 72] = [0; 72]; - let mut u: C2RustUnnamed = C2RustUnnamed { tmp8: [0; 96] }; - let mut i: size_t = 0; - let mut ivec: [uint8_t; 4] = [0; 4]; - let mut U: [uint8_t; 32] = [0; 32]; - let mut T: [uint8_t; 32] = [0; 32]; - let mut j: uint64_t = 0; - let mut k: libc::c_int = 0; - let mut clen: usize = 0; - if dkLen - <= (32 as libc::c_int as libc::c_ulong).wrapping_mul(4294967295 as libc::c_uint as size_t) - { - } else { - todo!("assert_fail"); - // __assert_fail( - // b"dkLen <= 32 * (size_t)(UINT32_MAX)\0" as *const u8 as *const libc::c_char, - // b"sha256.c\0" as *const u8 as *const libc::c_char, - // 558 as libc::c_int as libc::c_uint, - // (*::core::mem::transmute::< - // &[u8; 98], - // &[libc::c_char; 98], - // >( - // b"void PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t, uint64_t, uint8_t *, size_t)\0", - // )) - // .as_ptr(), - // ); - } - if dkLen - <= (32 as libc::c_int as libc::c_ulong).wrapping_mul(4294967295 as libc::c_uint as size_t) - { - } else { - todo!("assert_fail"); - // __assert_fail( - // b"dkLen <= 32 * (size_t)(UINT32_MAX)\0" as *const u8 - // as *const libc::c_char, - // b"sha256.c\0" as *const u8 as *const libc::c_char, - // 558 as libc::c_int as libc::c_uint, - // (*::core::mem::transmute::< - // &[u8; 98], - // &[libc::c_char; 98], - // >( - // b"void PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t, uint64_t, uint8_t *, size_t)\0", - // )) - // .as_ptr(), - // ); - } - if c == 1 as libc::c_int as libc::c_ulong - && dkLen & 31 as libc::c_int as libc::c_ulong == 0 as libc::c_int as libc::c_ulong - && saltlen & 63 as libc::c_int as libc::c_ulong <= 51 as libc::c_int as libc::c_ulong - { - let mut oldcount: uint32_t = 0; - let mut ivecp: *mut uint8_t = 0 as *mut uint8_t; - _HMAC_SHA256_Init( - &mut hctx, - passwd as *const libc::c_void, - passwdlen, - tmp32.as_mut_ptr(), - &mut *(u.tmp8).as_mut_ptr().offset(0 as libc::c_int as isize), - &mut *(u.tmp8).as_mut_ptr().offset(64 as libc::c_int as isize), - ); - _HMAC_SHA256_Update( - &mut hctx, - salt as *const libc::c_void, - saltlen, - tmp32.as_mut_ptr(), - ); - oldcount = (hctx.ictx.count & ((0x3f as libc::c_int) << 3 as libc::c_int) as libc::c_ulong) - as uint32_t; - _HMAC_SHA256_Update( - &mut hctx, - b"\0\0\0\0" as *const u8 as *const libc::c_char as *const libc::c_void, - 4 as libc::c_int as size_t, - tmp32.as_mut_ptr(), - ); - if (hctx.ictx.count & ((0x3f as libc::c_int) << 3 as libc::c_int) as libc::c_ulong) - < oldcount as libc::c_ulong - || SHA256_Pad_Almost(&mut hctx.ictx, (u.tmp8).as_mut_ptr(), tmp32.as_mut_ptr()) != 0 - { - current_block = 5148802568647841240; - } else { - ivecp = (hctx.ictx.buf) - .as_mut_ptr() - .offset((oldcount >> 3 as libc::c_int) as isize); - hctx.octx.count = (hctx.octx.count as libc::c_ulong) - .wrapping_add(((32 as libc::c_int) << 3 as libc::c_int) as libc::c_ulong) - as uint64_t as uint64_t; - SHA256_Pad_Almost(&mut hctx.octx, (u.tmp8).as_mut_ptr(), tmp32.as_mut_ptr()); - i = 0 as libc::c_int as size_t; - while i.wrapping_mul(32 as libc::c_int as libc::c_ulong) < dkLen { - be32enc( - ivecp as *mut libc::c_void, - i.wrapping_add(1 as libc::c_int as libc::c_ulong) as uint32_t, - ); - memcpy( - (u.state).as_mut_ptr() as *mut libc::c_void, - (hctx.ictx.state).as_mut_ptr() as *const libc::c_void, - core::mem::size_of::<[uint32_t; 8]>(), - ); - SHA256_Transform( - (u.state).as_mut_ptr(), - (hctx.ictx.buf).as_mut_ptr(), - &mut *tmp32.as_mut_ptr().offset(0 as libc::c_int as isize), - &mut *tmp32.as_mut_ptr().offset(64 as libc::c_int as isize), - ); - be32enc_vect( - (hctx.octx.buf).as_mut_ptr(), - (u.state).as_mut_ptr(), - 4 as libc::c_int as size_t, - ); - memcpy( - (u.state).as_mut_ptr() as *mut libc::c_void, - (hctx.octx.state).as_mut_ptr() as *const libc::c_void, - core::mem::size_of::<[uint32_t; 8]>(), - ); - SHA256_Transform( - (u.state).as_mut_ptr(), - (hctx.octx.buf).as_mut_ptr(), - &mut *tmp32.as_mut_ptr().offset(0 as libc::c_int as isize), - &mut *tmp32.as_mut_ptr().offset(64 as libc::c_int as isize), - ); - be32enc_vect( - &mut *buf.offset(i.wrapping_mul(32 as libc::c_int as libc::c_ulong) as isize), - (u.state).as_mut_ptr(), - 4, - ); - i = i.wrapping_add(1); - i; - } - current_block = 1847472278776910194; - } - } else { - current_block = 5148802568647841240; - } - match current_block { - 5148802568647841240 => { - _HMAC_SHA256_Init( - &mut Phctx, - passwd as *const libc::c_void, - passwdlen, - tmp32.as_mut_ptr(), - &mut *(u.tmp8).as_mut_ptr().offset(0 as libc::c_int as isize), - &mut *(u.tmp8).as_mut_ptr().offset(64 as libc::c_int as isize), - ); - memcpy( - &mut PShctx as *mut HMAC_SHA256_CTX as *mut libc::c_void, - &mut Phctx as *mut HMAC_SHA256_CTX as *const libc::c_void, - core::mem::size_of::(), - ); - _HMAC_SHA256_Update( - &mut PShctx, - salt as *const libc::c_void, - saltlen, - tmp32.as_mut_ptr(), - ); - i = 0 as libc::c_int as size_t; - while i.wrapping_mul(32 as libc::c_int as libc::c_ulong) < dkLen { - be32enc( - ivec.as_mut_ptr() as *mut libc::c_void, - i.wrapping_add(1 as libc::c_int as libc::c_ulong) as uint32_t, - ); - memcpy( - &mut hctx as *mut HMAC_SHA256_CTX as *mut libc::c_void, - &mut PShctx as *mut HMAC_SHA256_CTX as *const libc::c_void, - core::mem::size_of::(), - ); - _HMAC_SHA256_Update( - &mut hctx, - ivec.as_mut_ptr() as *const libc::c_void, - 4 as libc::c_int as size_t, - tmp32.as_mut_ptr(), - ); - _HMAC_SHA256_Final( - T.as_mut_ptr(), - &mut hctx, - tmp32.as_mut_ptr(), - (u.tmp8).as_mut_ptr(), - ); - if c > 1 as libc::c_int as libc::c_ulong { - memcpy( - U.as_mut_ptr() as *mut libc::c_void, - T.as_mut_ptr() as *const libc::c_void, - 32, - ); - j = 2 as libc::c_int as uint64_t; - while j <= c { - memcpy( - &mut hctx as *mut HMAC_SHA256_CTX as *mut libc::c_void, - &mut Phctx as *mut HMAC_SHA256_CTX as *const libc::c_void, - core::mem::size_of::(), - ); - _HMAC_SHA256_Update( - &mut hctx, - U.as_mut_ptr() as *const libc::c_void, - 32 as libc::c_int as size_t, - tmp32.as_mut_ptr(), - ); - _HMAC_SHA256_Final( - U.as_mut_ptr(), - &mut hctx, - tmp32.as_mut_ptr(), - (u.tmp8).as_mut_ptr(), - ); - k = 0 as libc::c_int; - while k < 32 as libc::c_int { - T[k as usize] = (T[k as usize] as libc::c_int - ^ U[k as usize] as libc::c_int) - as uint8_t; - k += 1; - k; - } - j = j.wrapping_add(1); - j; - } - } - clen = dkLen.wrapping_sub(i.wrapping_mul(32)) as usize; - if clen > 32 { - clen = 32; - } - memcpy( - &mut *buf.offset(i.wrapping_mul(32 as libc::c_int as libc::c_ulong) as isize) - as *mut uint8_t as *mut libc::c_void, - T.as_mut_ptr() as *const libc::c_void, - clen, - ); - i = i.wrapping_add(1); - i; - } - } - _ => {} - }; + let passwd = core::ptr::slice_from_raw_parts(passwd, passwdlen); + let salt = core::ptr::slice_from_raw_parts(salt, saltlen); + let res = core::ptr::slice_from_raw_parts_mut(buf, dkLen); + + pbkdf2::pbkdf2_hmac::(&*passwd, &*salt, c as u32, &mut *res); } diff --git a/yescrypt/tests/kats.rs b/yescrypt/tests/kats.rs index 95190574..87338620 100644 --- a/yescrypt/tests/kats.rs +++ b/yescrypt/tests/kats.rs @@ -39,12 +39,12 @@ fn yescrypt( ptr::null(), &mut local, passwd.as_ptr(), - passwd.len() as u64, + passwd.len(), salt.as_ptr(), - salt.len() as u64, + salt.len(), ¶ms, dst.as_mut_ptr(), - dstlen as u64, + dstlen, ) }; dst