@@ -11,22 +11,19 @@ use digest::{
1111 BlockSizes ,
1212 hazmat:: { DeserializeStateError , SerializableState , SerializedState } ,
1313 } ,
14- typenum:: { Gr , IsGreater , IsLessOrEqual , LeEq , NonZero , U0 , U200 } ,
14+ typenum:: { IsLessOrEqual , True , U0 , U200 } ,
1515} ;
1616
1717/// Core Sha3 fixed output hasher state.
1818#[ derive( Clone ) ]
19- #[ allow( non_camel_case_types) ]
2019pub struct Sha3HasherCore <
2120 Rate ,
2221 OutputSize ,
2322 const PAD : u8 ,
2423 const ROUNDS : usize = DEFAULT_ROUND_COUNT ,
2524> where
26- Rate : BlockSizes + IsLessOrEqual < U200 > ,
27- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
28- LeEq < Rate , U200 > : NonZero ,
29- LeEq < OutputSize , U200 > : NonZero ,
25+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
26+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
3027{
3128 state : [ u64 ; PLEN ] ,
3229 _pd : PhantomData < ( Rate , OutputSize ) > ,
@@ -35,53 +32,43 @@ pub struct Sha3HasherCore<
3532impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > HashMarker
3633 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
3734where
38- Rate : BlockSizes + IsLessOrEqual < U200 > ,
39- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
40- LeEq < Rate , U200 > : NonZero ,
41- LeEq < OutputSize , U200 > : NonZero ,
35+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
36+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
4237{
4338}
4439
4540impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > BlockSizeUser
4641 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
4742where
48- Rate : BlockSizes + IsLessOrEqual < U200 > ,
49- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
50- LeEq < Rate , U200 > : NonZero ,
51- LeEq < OutputSize , U200 > : NonZero ,
43+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
44+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
5245{
5346 type BlockSize = Rate ;
5447}
5548
5649impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > BufferKindUser
5750 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
5851where
59- Rate : BlockSizes + IsLessOrEqual < U200 > ,
60- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
61- LeEq < Rate , U200 > : NonZero ,
62- LeEq < OutputSize , U200 > : NonZero ,
52+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
53+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
6354{
6455 type BufferKind = Eager ;
6556}
6657
6758impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > OutputSizeUser
6859 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
6960where
70- Rate : BlockSizes + IsLessOrEqual < U200 > ,
71- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
72- LeEq < Rate , U200 > : NonZero ,
73- LeEq < OutputSize , U200 > : NonZero ,
61+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
62+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
7463{
7564 type OutputSize = OutputSize ;
7665}
7766
7867impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > UpdateCore
7968 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
8069where
81- Rate : BlockSizes + IsLessOrEqual < U200 > ,
82- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
83- LeEq < Rate , U200 > : NonZero ,
84- LeEq < OutputSize , U200 > : NonZero ,
70+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
71+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
8572{
8673 #[ inline]
8774 fn update_blocks ( & mut self , blocks : & [ Block < Self > ] ) {
9582impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > FixedOutputCore
9683 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
9784where
98- Rate : BlockSizes + IsLessOrEqual < U200 > ,
99- OutputSize : ArraySize + IsLessOrEqual < U200 > + IsGreater < U0 > ,
100- LeEq < Rate , U200 > : NonZero ,
101- Gr < OutputSize , U0 > : NonZero ,
102- LeEq < OutputSize , U200 > : NonZero ,
85+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
86+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
10387{
10488 #[ inline]
10589 fn finalize_fixed_core ( & mut self , buffer : & mut Buffer < Self > , out : & mut Output < Self > ) {
@@ -121,8 +105,7 @@ where
121105impl < Rate , const PAD : u8 , const ROUNDS : usize > ExtendableOutputCore
122106 for Sha3HasherCore < Rate , U0 , PAD , ROUNDS >
123107where
124- Rate : BlockSizes + IsLessOrEqual < U200 > ,
125- LeEq < Rate , U200 > : NonZero ,
108+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
126109{
127110 type ReaderCore = Sha3ReaderCore < Rate , ROUNDS > ;
128111
@@ -144,10 +127,8 @@ where
144127impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > Default
145128 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
146129where
147- Rate : BlockSizes + IsLessOrEqual < U200 > ,
148- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
149- LeEq < Rate , U200 > : NonZero ,
150- LeEq < OutputSize , U200 > : NonZero ,
130+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
131+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
151132{
152133 #[ inline]
153134 fn default ( ) -> Self {
@@ -161,10 +142,8 @@ where
161142impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > Reset
162143 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
163144where
164- Rate : BlockSizes + IsLessOrEqual < U200 > ,
165- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
166- LeEq < Rate , U200 > : NonZero ,
167- LeEq < OutputSize , U200 > : NonZero ,
145+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
146+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
168147{
169148 #[ inline]
170149 fn reset ( & mut self ) {
@@ -175,10 +154,8 @@ where
175154impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > AlgorithmName
176155 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
177156where
178- Rate : BlockSizes + IsLessOrEqual < U200 > ,
179- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
180- LeEq < Rate , U200 > : NonZero ,
181- LeEq < OutputSize , U200 > : NonZero ,
157+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
158+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
182159{
183160 fn write_alg_name ( f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
184161 f. write_str ( "Sha3" ) // TODO
@@ -188,10 +165,8 @@ where
188165impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > fmt:: Debug
189166 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
190167where
191- Rate : BlockSizes + IsLessOrEqual < U200 > ,
192- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
193- LeEq < Rate , U200 > : NonZero ,
194- LeEq < OutputSize , U200 > : NonZero ,
168+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
169+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
195170{
196171 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
197172 f. write_str ( "Sha3FixedCore<Rate, OutputSize, PAD, ROUNDS> { ... }" )
@@ -201,10 +176,8 @@ where
201176impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > Drop
202177 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
203178where
204- Rate : BlockSizes + IsLessOrEqual < U200 > ,
205- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
206- LeEq < Rate , U200 > : NonZero ,
207- LeEq < OutputSize , U200 > : NonZero ,
179+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
180+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
208181{
209182 fn drop ( & mut self ) {
210183 #[ cfg( feature = "zeroize" ) ]
@@ -219,20 +192,16 @@ where
219192impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > digest:: zeroize:: ZeroizeOnDrop
220193 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
221194where
222- Rate : BlockSizes + IsLessOrEqual < U200 > ,
223- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
224- LeEq < Rate , U200 > : NonZero ,
225- LeEq < OutputSize , U200 > : NonZero ,
195+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
196+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
226197{
227198}
228199
229200impl < Rate , OutputSize , const PAD : u8 , const ROUNDS : usize > SerializableState
230201 for Sha3HasherCore < Rate , OutputSize , PAD , ROUNDS >
231202where
232- Rate : BlockSizes + IsLessOrEqual < U200 > ,
233- OutputSize : ArraySize + IsLessOrEqual < U200 > ,
234- LeEq < Rate , U200 > : NonZero ,
235- LeEq < OutputSize , U200 > : NonZero ,
203+ Rate : BlockSizes + IsLessOrEqual < U200 , Output = True > ,
204+ OutputSize : ArraySize + IsLessOrEqual < U200 , Output = True > ,
236205{
237206 type SerializedStateSize = U200 ;
238207
0 commit comments