rind 0.1.4

Pure-Rust cryptography for MoQ, forked from graviola
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT-0

use crate::low::x86_64;
use crate::low::x86_64::cpu::{HaveAvx, HaveAvx2, HaveSha1, HaveSsse3, is_intel};

pub(crate) fn sha1_compress_blocks(state: &mut [u32; 5], blocks: &[u8]) {
    if let Some(token) = HaveSha1::check() {
        x86_64::sha1::sha1_compress_blocks_shaext(state, blocks, token)
    } else if let Some(token) = HaveAvx2::check() {
        x86_64::sha1::sha1_compress_blocks_avx2(state, blocks, token)
    } else if let Some(token) = HaveAvx::check().filter(|_| is_intel()) {
        x86_64::sha1::sha1_compress_blocks_avx(state, blocks, token)
    } else if let Some(token) = HaveSsse3::check() {
        x86_64::sha1::sha1_compress_blocks_ssse3(state, blocks, token)
    } else {
        x86_64::sha1::sha1_compress_blocks_nohw(state, blocks)
    }
}