@@ -339,13 +339,34 @@ def test_blocksize_name(self):
339339 self .check_blocksize_name ('sha256' , 64 , 32 )
340340 self .check_blocksize_name ('sha384' , 128 , 48 )
341341 self .check_blocksize_name ('sha512' , 128 , 64 )
342+
343+ @requires_sha3
344+ def test_blocksize_name_sha3 (self ):
342345 self .check_blocksize_name ('sha3_224' , 144 , 28 )
343346 self .check_blocksize_name ('sha3_256' , 136 , 32 )
344347 self .check_blocksize_name ('sha3_384' , 104 , 48 )
345348 self .check_blocksize_name ('sha3_512' , 72 , 64 )
346349 self .check_blocksize_name ('shake_128' , 168 , 0 , 32 )
347350 self .check_blocksize_name ('shake_256' , 136 , 0 , 64 )
348351
352+ def check_sha3 (self , name , capacity , rate , suffix ):
353+ constructors = self .constructors_to_test [name ]
354+ for hash_object_constructor in constructors :
355+ m = hash_object_constructor ()
356+ self .assertEqual (capacity + rate , 1600 )
357+ self .assertEqual (m ._capacity_bits , capacity )
358+ self .assertEqual (m ._rate_bits , rate )
359+ self .assertEqual (m ._suffix , suffix )
360+
361+ @requires_sha3
362+ def test_extra_sha3 (self ):
363+ self .check_sha3 ('sha3_224' , 448 , 1152 , b'\x06 ' )
364+ self .check_sha3 ('sha3_256' , 512 , 1088 , b'\x06 ' )
365+ self .check_sha3 ('sha3_384' , 768 , 832 , b'\x06 ' )
366+ self .check_sha3 ('sha3_512' , 1024 , 576 , b'\x06 ' )
367+ self .check_sha3 ('shake_128' , 256 , 1344 , b'\x1f ' )
368+ self .check_sha3 ('shake_256' , 512 , 1088 , b'\x1f ' )
369+
349370 @requires_blake2
350371 def test_blocksize_name_blake2 (self ):
351372 self .check_blocksize_name ('blake2b' , 128 , 64 )
0 commit comments