@@ -31,6 +31,8 @@ use cipher::{
3131use core:: fmt;
3232
3333mod bitslice;
34+ #[ macro_use]
35+ mod unroll;
3436
3537#[ cfg( feature = "zeroize" ) ]
3638use cipher:: zeroize:: { Zeroize , ZeroizeOnDrop } ;
@@ -56,73 +58,6 @@ fn xor(b1: Words, k: Words) -> Words {
5658 res
5759}
5860
59- macro_rules! repeat31 {
60- ( $i: ident, $body: block) => {
61- let $i = 0 ;
62- $body;
63- let $i = 1 ;
64- $body;
65- let $i = 2 ;
66- $body;
67- let $i = 3 ;
68- $body;
69- let $i = 4 ;
70- $body;
71- let $i = 5 ;
72- $body;
73- let $i = 6 ;
74- $body;
75- let $i = 7 ;
76- $body;
77- let $i = 8 ;
78- $body;
79- let $i = 9 ;
80- $body;
81- let $i = 10 ;
82- $body;
83- let $i = 11 ;
84- $body;
85- let $i = 12 ;
86- $body;
87- let $i = 13 ;
88- $body;
89- let $i = 14 ;
90- $body;
91- let $i = 15 ;
92- $body;
93- let $i = 16 ;
94- $body;
95- let $i = 17 ;
96- $body;
97- let $i = 18 ;
98- $body;
99- let $i = 19 ;
100- $body;
101- let $i = 20 ;
102- $body;
103- let $i = 21 ;
104- $body;
105- let $i = 22 ;
106- $body;
107- let $i = 23 ;
108- $body;
109- let $i = 24 ;
110- $body;
111- let $i = 25 ;
112- $body;
113- let $i = 26 ;
114- $body;
115- let $i = 27 ;
116- $body;
117- let $i = 28 ;
118- $body;
119- let $i = 29 ;
120- $body;
121- let $i = 30 ;
122- $body;
123- } ;
124- }
125-
12661fn expand_key ( source : & [ u8 ] , len_bits : usize ) -> [ u8 ; 32 ] {
12762 let mut key = [ 0u8 ; 32 ] ;
12863 key[ ..source. len ( ) ] . copy_from_slice ( source) ;
@@ -208,7 +143,7 @@ impl BlockCipherEncBackend for Serpent {
208143 fn encrypt_block ( & self , mut block : InOut < ' _ , ' _ , Block < Self > > ) {
209144 let mut b: [ u32 ; 4 ] = read_words ( block. get_in ( ) . into ( ) ) ;
210145
211- repeat31 ! ( i, {
146+ unroll31 ! ( i, {
212147 let xb = xor( b, self . round_keys[ i] ) ;
213148 let s = bitslice:: apply_s( i, xb) ;
214149 b = bitslice:: linear_transform( s) ;
@@ -238,7 +173,7 @@ impl BlockCipherDecBackend for Serpent {
238173 let xb = bitslice:: apply_s_inv ( ROUNDS - 1 , s) ;
239174 b = xor ( xb, self . round_keys [ ROUNDS - 1 ] ) ;
240175
241- repeat31 ! ( i, {
176+ unroll31 ! ( i, {
242177 let i = 30 - i;
243178 let s = bitslice:: linear_transform_inv( b) ;
244179 let xb = bitslice:: apply_s_inv( i, s) ;
0 commit comments