@@ -17,14 +17,15 @@ static void speck_key_expand48(const int64 *K, uint32 *k);
17
17
static void
18
18
speck_key_expand32 (const int64 K , uint16 * k )
19
19
{
20
+ const int rounds = 22 ;
20
21
int i ;
21
22
uint16 l [24 ];
22
23
23
24
l [2 ] = (K & 0xFFFF000000000000 ) >> 48 ;
24
25
l [1 ] = (K & 0x0000FFFF00000000 ) >> 32 ;
25
26
l [0 ] = (K & 0x00000000FFFF0000 ) >> 16 ;
26
27
27
- for (i = 0 ; i < 22 - 1 ; ++ i )
28
+ for (i = 0 ; i <= rounds - 2 ; ++ i )
28
29
{
29
30
l [i + 3 ] = ((uint16 ) (k [i ] + ROR16 (l [i ], 7 ))) ^ i ;
30
31
k [i + 1 ] = (ROL16 (k [i ], 2 ) ^ l [i + 3 ]);
@@ -34,14 +35,15 @@ speck_key_expand32(const int64 K, uint16 *k)
34
35
uint32
35
36
speck_encrypt32 (const uint32 xy , const int64 K )
36
37
{
37
- uint32 i ;
38
+ const int rounds = 22 ;
39
+ int i ;
38
40
uint16 k [22 ];
39
41
uint16 x = (xy & 0xFFFF0000 ) >> 16 , y = (xy & 0xFFFF );
40
42
41
43
k [0 ] = (K & 0xFFFF );
42
44
speck_key_expand32 (K , k );
43
45
44
- for (i = 0 ; i < 22 ; i ++ )
46
+ for (i = 0 ; i <= rounds - 1 ; i ++ )
45
47
{
46
48
x = (uint16 ) (ROR16 (x , 7 ) + y );
47
49
x ^= k [i ];
@@ -53,14 +55,15 @@ speck_encrypt32(const uint32 xy, const int64 K)
53
55
uint32
54
56
speck_decrypt32 (const uint32 xy , const int64 K )
55
57
{
56
- signed int i ;
58
+ const int rounds = 22 ;
59
+ int i ;
57
60
uint16 k [22 ];
58
61
uint16 x = (xy & 0xFFFF0000 ) >> 16 , y = (xy & 0xFFFF );
59
62
60
63
k [0 ] = (K & 0xFFFF );
61
64
speck_key_expand32 (K , k );
62
65
63
- for (i = 21 ; i >= 0 ; i -- )
66
+ for (i = rounds - 1 ; i >= 0 ; i -- )
64
67
{
65
68
y ^= x ;
66
69
y = ROR16 (y , 2 );
@@ -73,14 +76,15 @@ speck_decrypt32(const uint32 xy, const int64 K)
73
76
static void
74
77
speck_key_expand48 (const int64 * K , uint32 * k )
75
78
{
79
+ const int rounds = 23 ;
76
80
int i ;
77
81
uint32 l [25 ];
78
82
79
83
l [2 ] = (K [0 ] & 0xFFFFFF000000 ) >> 24 ;
80
84
l [1 ] = (K [0 ] & 0x000000FFFFFF ) >> 0 ;
81
85
l [0 ] = (K [1 ] & 0xFFFFFF000000 ) >> 24 ;
82
86
83
- for (i = 0 ; i < 23 - 1 ; ++ i )
87
+ for (i = 0 ; i <= rounds - 2 ; ++ i )
84
88
{
85
89
l [i + 3 ] = ((k [i ] + ROR24 (l [i ], 8 )) & 0xFFFFFF ) ^ i ;
86
90
k [i + 1 ] = (ROL24 (k [i ], 3 ) ^ l [i + 3 ]);
@@ -90,14 +94,15 @@ speck_key_expand48(const int64 *K, uint32 *k)
90
94
int64
91
95
speck_encrypt48 (const int64 xy , const int64 * K )
92
96
{
97
+ const int rounds = 23 ;
93
98
int i ;
94
99
uint32 k [23 ];
95
100
uint32 x = (xy & 0xFFFFFF000000 ) >> 24 , y = (xy & 0xFFFFFF );
96
101
97
102
k [0 ] = (K [1 ] & 0xFFFFFF );
98
103
speck_key_expand48 (K , k );
99
104
100
- for (i = 0 ; i < 23 ; i ++ )
105
+ for (i = 0 ; i <= rounds - 1 ; i ++ )
101
106
{
102
107
x = ((ROR24 (x , 8 ) + y ) & 0xFFFFFF );
103
108
x ^= k [i ];
@@ -109,14 +114,15 @@ speck_encrypt48(const int64 xy, const int64 *K)
109
114
int64
110
115
speck_decrypt48 (const int64 xy , const int64 * K )
111
116
{
112
- signed int i ;
117
+ const int rounds = 23 ;
118
+ int i ;
113
119
uint32 k [23 ];
114
120
uint32 x = (xy & 0xFFFFFF000000 ) >> 24 , y = (xy & 0xFFFFFF );
115
121
116
122
k [0 ] = (K [1 ] & 0xFFFFFF );
117
123
speck_key_expand48 (K , k );
118
124
119
- for (i = 22 ; i >= 0 ; i -- )
125
+ for (i = rounds - 1 ; i >= 0 ; i -- )
120
126
{
121
127
y ^= x ;
122
128
y = ROR24 (y , 3 );
0 commit comments