77#[ cfg( feature = "zeroize" ) ]
88use cipher:: zeroize:: ZeroizeOnDrop ;
99use cipher:: {
10- consts:: { U16 , U4 , U8 } ,
11- generic_array:: GenericArray ,
12- inout:: { InOut , InOutBuf } ,
13- AlgorithmName , Block , BlockCipher , BlockDecrypt , BlockSizeUser , Key , KeyInit , KeySizeUser ,
14- ParBlocks , ParBlocksSizeUser , Unsigned ,
10+ AlgorithmName , Block , BlockCipherDecBackend , BlockCipherDecClosure , BlockCipherDecrypt ,
11+ BlockCipherEncBackend , BlockCipherEncClosure , BlockCipherEncrypt , BlockSizeUser , InOut , Key ,
12+ KeyInit , KeySizeUser , ParBlocks , ParBlocksSizeUser ,
13+ consts:: { U4 , U8 , U16 } ,
1514} ;
1615use cipher:: { BlockBackend , BlockEncrypt } ;
1716use core:: { arch:: aarch64:: * , fmt} ;
@@ -92,13 +91,10 @@ macro_rules! sm4_e {
9291 }
9392}
9493
95- type ParBlocks4 < T > = GenericArray < Block < T > , U4 > ;
96- type ParBlocks8 < T > = GenericArray < Block < T > , U8 > ;
97-
9894#[ inline]
9995#[ target_feature( enable = "sm4" ) ]
100- pub ( super ) unsafe fn sm4_encrypt4 < T : BlockSizeUser > (
101- blocks : InOut < ' _ , ' _ , ParBlocks4 < T > > ,
96+ pub ( super ) unsafe fn sm4_encrypt4 < T : ParBlocksSizeUser > (
97+ blocks : InOut < ' _ , ' _ , ParBlocks < T > > ,
10298 rk : & [ uint32x4_t ; 8 ] ,
10399) {
104100 let ( in_ptr, out_ptr) = blocks. into_raw ( ) ;
@@ -127,8 +123,8 @@ pub(super) unsafe fn sm4_encrypt4<T: BlockSizeUser>(
127123
128124#[ inline]
129125#[ target_feature( enable = "sm4" ) ]
130- pub ( super ) unsafe fn sm4_encrypt8 < T : BlockSizeUser > (
131- blocks : InOut < ' _ , ' _ , ParBlocks8 < T > > ,
126+ pub ( super ) unsafe fn sm4_encrypt8 < T : ParBlocksSizeUser > (
127+ blocks : InOut < ' _ , ' _ , ParBlocks < T > > ,
132128 rk : & [ uint32x4_t ; 8 ] ,
133129) {
134130 let ( in_ptr, out_ptr) = blocks. into_raw ( ) ;
@@ -165,7 +161,7 @@ pub(super) unsafe fn sm4_encrypt8<T: BlockSizeUser>(
165161
166162#[ inline]
167163#[ target_feature( enable = "sm4" ) ]
168- pub ( super ) unsafe fn sm4_encrypt1 < T : BlockSizeUser > (
164+ pub ( super ) unsafe fn sm4_encrypt1 < T : BlocksSizeUser > (
169165 block : InOut < ' _ , ' _ , Block < T > > ,
170166 rk : & [ uint32x4_t ; 8 ] ,
171167) {
@@ -189,8 +185,8 @@ pub(super) unsafe fn sm4_encrypt1<T: BlockSizeUser>(
189185
190186#[ inline]
191187#[ target_feature( enable = "sm4" ) ]
192- pub ( super ) unsafe fn sm4_decrypt4 < T : BlockSizeUser > (
193- blocks : InOut < ' _ , ' _ , ParBlocks4 < T > > ,
188+ pub ( super ) unsafe fn sm4_decrypt4 < T : ParBlocksSizeUser > (
189+ blocks : InOut < ' _ , ' _ , ParBlocks < T > > ,
194190 rk : & [ uint32x4_t ; 8 ] ,
195191) {
196192 let ( in_ptr, out_ptr) = blocks. into_raw ( ) ;
@@ -220,7 +216,7 @@ pub(super) unsafe fn sm4_decrypt4<T: BlockSizeUser>(
220216#[ inline]
221217#[ target_feature( enable = "sm4" ) ]
222218pub ( super ) unsafe fn sm4_decrypt8 < T : BlockSizeUser > (
223- blocks : InOut < ' _ , ' _ , ParBlocks8 < T > > ,
219+ blocks : InOut < ' _ , ' _ , ParBlocks < T > > ,
224220 rk : & [ uint32x4_t ; 8 ] ,
225221) {
226222 let ( in_ptr, out_ptr) = blocks. into_raw ( ) ;
@@ -286,8 +282,6 @@ pub struct Sm4 {
286282 drk : [ uint32x4_t ; 8 ] ,
287283}
288284
289- impl BlockCipher for Sm4 { }
290-
291285impl KeySizeUser for Sm4 {
292286 type KeySize = U16 ;
293287}
@@ -359,8 +353,9 @@ impl BlockSizeUser for Sm4 {
359353 type BlockSize = U16 ;
360354}
361355
362- impl BlockEncrypt for Sm4 {
363- fn encrypt_with_backend ( & self , f : impl cipher:: BlockClosure < BlockSize = Self :: BlockSize > ) {
356+ impl BlockCipherEncrypt for Sm4 {
357+ #[ inline]
358+ fn encrypt_with_backend ( & self , f : impl BlockCipherEncClosure < BlockSize = Self :: BlockSize > ) {
364359 f. call ( & mut Sm4Enc ( self ) )
365360 }
366361}
@@ -375,14 +370,14 @@ impl<'a> ParBlocksSizeUser for Sm4Enc<'a> {
375370 type ParBlocksSize = U8 ;
376371}
377372
378- impl < ' a > BlockBackend for Sm4Enc < ' a > {
373+ impl < ' a > BlockCipherEncBackend for Sm4Enc < ' a > {
379374 #[ inline( always) ]
380- fn proc_block ( & mut self , block : InOut < ' _ , ' _ , Block < Self > > ) {
375+ fn encrypt_block ( & self , block : InOut < ' _ , ' _ , Block < Self > > ) {
381376 unsafe { sm4_encrypt1 :: < Self > ( block, & self . 0 . erk ) }
382377 }
383378
384379 #[ inline( always) ]
385- fn proc_tail_blocks ( & mut self , blocks : InOutBuf < ' _ , ' _ , Block < Self > > ) {
380+ fn encrypt_tail_blocks ( & self , blocks : InOutBuf < ' _ , ' _ , Block < Self > > ) {
386381 assert ! ( blocks. len( ) < Self :: ParBlocksSize :: USIZE ) ;
387382
388383 let ( chunks, tail) = blocks. into_chunks :: < U4 > ( ) ;
@@ -396,13 +391,13 @@ impl<'a> BlockBackend for Sm4Enc<'a> {
396391 }
397392
398393 #[ inline( always) ]
399- fn proc_par_blocks ( & mut self , blocks : InOut < ' _ , ' _ , ParBlocks < Self > > ) {
394+ fn encrypt_par_blocks ( & mut self , blocks : InOut < ' _ , ' _ , ParBlocks < Self > > ) {
400395 unsafe { sm4_encrypt8 :: < Self > ( blocks, & self . 0 . erk ) }
401396 }
402397}
403398
404- impl BlockDecrypt for Sm4 {
405- fn decrypt_with_backend ( & self , f : impl cipher :: BlockClosure < BlockSize = Self :: BlockSize > ) {
399+ impl BlockCipherDecrypt for Sm4 {
400+ fn decrypt_with_backend ( & self , f : impl BlockCipherDecClosure < BlockSize = Self :: BlockSize > ) {
406401 f. call ( & mut Sm4Dec ( self ) )
407402 }
408403}
@@ -417,14 +412,14 @@ impl<'a> ParBlocksSizeUser for Sm4Dec<'a> {
417412 type ParBlocksSize = U8 ;
418413}
419414
420- impl < ' a > BlockBackend for Sm4Dec < ' a > {
415+ impl < ' a > BlockCipherDecBackend for Sm4Dec < ' a > {
421416 #[ inline( always) ]
422- fn proc_block ( & mut self , block : InOut < ' _ , ' _ , Block < Self > > ) {
417+ fn decrypt_block ( & self , block : InOut < ' _ , ' _ , Block < Self > > ) {
423418 unsafe { sm4_decrypt1 :: < Self > ( block, & self . 0 . drk ) }
424419 }
425420
426421 #[ inline( always) ]
427- fn proc_tail_blocks ( & mut self , blocks : InOutBuf < ' _ , ' _ , Block < Self > > ) {
422+ fn decrypt_tail_blocks ( & self , blocks : InOutBuf < ' _ , ' _ , Block < Self > > ) {
428423 assert ! ( blocks. len( ) < Self :: ParBlocksSize :: USIZE ) ;
429424
430425 let ( chunks, tail) = blocks. into_chunks :: < U4 > ( ) ;
@@ -438,7 +433,7 @@ impl<'a> BlockBackend for Sm4Dec<'a> {
438433 }
439434
440435 #[ inline( always) ]
441- fn proc_par_blocks ( & mut self , blocks : InOut < ' _ , ' _ , ParBlocks < Self > > ) {
436+ fn decrypt_par_blocks ( & mut self , blocks : InOut < ' _ , ' _ , ParBlocks < Self > > ) {
442437 unsafe { sm4_decrypt8 :: < Self > ( blocks, & self . 0 . drk ) }
443438 }
444439}
0 commit comments