Coverage Report

Created: 2025-11-16 07:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/ctr-0.9.2/src/backend.rs
Line
Count
Source
1
use crate::CtrFlavor;
2
use cipher::{
3
    generic_array::ArrayLength, Block, BlockBackend, BlockClosure, BlockSizeUser, ParBlocks,
4
    ParBlocksSizeUser, StreamBackend, StreamClosure,
5
};
6
7
struct Backend<'a, F, B>
8
where
9
    F: CtrFlavor<B::BlockSize>,
10
    B: BlockBackend,
11
{
12
    ctr_nonce: &'a mut F::CtrNonce,
13
    backend: &'a mut B,
14
}
15
16
impl<'a, F, B> BlockSizeUser for Backend<'a, F, B>
17
where
18
    F: CtrFlavor<B::BlockSize>,
19
    B: BlockBackend,
20
{
21
    type BlockSize = B::BlockSize;
22
}
23
24
impl<'a, F, B> ParBlocksSizeUser for Backend<'a, F, B>
25
where
26
    F: CtrFlavor<B::BlockSize>,
27
    B: BlockBackend,
28
{
29
    type ParBlocksSize = B::ParBlocksSize;
30
}
31
32
impl<'a, F, B> StreamBackend for Backend<'a, F, B>
33
where
34
    F: CtrFlavor<B::BlockSize>,
35
    B: BlockBackend,
36
{
37
    #[inline(always)]
38
3.07k
    fn gen_ks_block(&mut self, block: &mut Block<Self>) {
39
3.07k
        let tmp = F::next_block(self.ctr_nonce);
40
3.07k
        self.backend.proc_block((&tmp, block).into());
41
3.07k
    }
<ctr::backend::Backend<ctr::flavors::ctr32::Ctr32BE, aes::ni::Aes128BackEnc> as cipher::stream_core::StreamBackend>::gen_ks_block
Line
Count
Source
38
3.07k
    fn gen_ks_block(&mut self, block: &mut Block<Self>) {
39
3.07k
        let tmp = F::next_block(self.ctr_nonce);
40
3.07k
        self.backend.proc_block((&tmp, block).into());
41
3.07k
    }
Unexecuted instantiation: <ctr::backend::Backend<ctr::flavors::ctr32::Ctr32BE, aes::soft::Aes128BackEnc> as cipher::stream_core::StreamBackend>::gen_ks_block
42
43
    #[inline(always)]
44
2.76k
    fn gen_par_ks_blocks(&mut self, blocks: &mut ParBlocks<Self>) {
45
2.76k
        let mut tmp = ParBlocks::<Self>::default();
46
22.1k
        for block in tmp.iter_mut() {
47
22.1k
            *block = F::next_block(self.ctr_nonce);
48
22.1k
        }
49
2.76k
        self.backend.proc_par_blocks((&tmp, blocks).into());
50
2.76k
    }
<ctr::backend::Backend<ctr::flavors::ctr32::Ctr32BE, aes::ni::Aes128BackEnc> as cipher::stream_core::StreamBackend>::gen_par_ks_blocks
Line
Count
Source
44
2.76k
    fn gen_par_ks_blocks(&mut self, blocks: &mut ParBlocks<Self>) {
45
2.76k
        let mut tmp = ParBlocks::<Self>::default();
46
22.1k
        for block in tmp.iter_mut() {
47
22.1k
            *block = F::next_block(self.ctr_nonce);
48
22.1k
        }
49
2.76k
        self.backend.proc_par_blocks((&tmp, blocks).into());
50
2.76k
    }
Unexecuted instantiation: <ctr::backend::Backend<ctr::flavors::ctr32::Ctr32BE, aes::soft::Aes128BackEnc> as cipher::stream_core::StreamBackend>::gen_par_ks_blocks
51
}
52
53
pub(crate) struct Closure<'a, F, BS, SC>
54
where
55
    F: CtrFlavor<BS>,
56
    BS: ArrayLength<u8>,
57
    SC: StreamClosure<BlockSize = BS>,
58
{
59
    pub(crate) ctr_nonce: &'a mut F::CtrNonce,
60
    pub(crate) f: SC,
61
}
62
63
impl<'a, F, BS, SC> BlockSizeUser for Closure<'a, F, BS, SC>
64
where
65
    F: CtrFlavor<BS>,
66
    BS: ArrayLength<u8>,
67
    SC: StreamClosure<BlockSize = BS>,
68
{
69
    type BlockSize = BS;
70
}
71
72
impl<'a, F, BS, SC> BlockClosure for Closure<'a, F, BS, SC>
73
where
74
    F: CtrFlavor<BS>,
75
    BS: ArrayLength<u8>,
76
    SC: StreamClosure<BlockSize = BS>,
77
{
78
    #[inline(always)]
79
2.09k
    fn call<B: BlockBackend<BlockSize = BS>>(self, backend: &mut B) {
80
2.09k
        let Self { ctr_nonce, f } = self;
81
2.09k
        f.call(&mut Backend::<F, B> { ctr_nonce, backend })
82
2.09k
    }
<ctr::backend::Closure<ctr::flavors::ctr32::Ctr32BE, typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, cipher::stream_core::WriteBlockCtx<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>>> as cipher::block::BlockClosure>::call::<aes::ni::Aes128BackEnc>
Line
Count
Source
79
1.21k
    fn call<B: BlockBackend<BlockSize = BS>>(self, backend: &mut B) {
80
1.21k
        let Self { ctr_nonce, f } = self;
81
1.21k
        f.call(&mut Backend::<F, B> { ctr_nonce, backend })
82
1.21k
    }
Unexecuted instantiation: <ctr::backend::Closure<ctr::flavors::ctr32::Ctr32BE, typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, cipher::stream_core::WriteBlockCtx<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>>> as cipher::block::BlockClosure>::call::<aes::soft::Aes128BackEnc>
<ctr::backend::Closure<ctr::flavors::ctr32::Ctr32BE, typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, cipher::stream_core::ApplyBlocksCtx<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>>> as cipher::block::BlockClosure>::call::<aes::ni::Aes128BackEnc>
Line
Count
Source
79
878
    fn call<B: BlockBackend<BlockSize = BS>>(self, backend: &mut B) {
80
878
        let Self { ctr_nonce, f } = self;
81
878
        f.call(&mut Backend::<F, B> { ctr_nonce, backend })
82
878
    }
Unexecuted instantiation: <ctr::backend::Closure<ctr::flavors::ctr32::Ctr32BE, typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, cipher::stream_core::ApplyBlocksCtx<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UInt<typenum::uint::UTerm, typenum::bit::B1>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>, typenum::bit::B0>>> as cipher::block::BlockClosure>::call::<aes::soft::Aes128BackEnc>
83
}