@@ -112,23 +112,26 @@ extern size_t CHAM128_Dec_AdvancedProcessBlocks_SSSE3(const word32* subKeys, siz
112
112
# endif // CRYPTOPP_SSSE3_AVAILABLE
113
113
#endif // CRYPTOPP_CHAM128_ADVANCED_PROCESS_BLOCKS
114
114
115
- std::string CHAM64::Base::AlgorithmProvider () const
116
- {
117
- return " C++" ;
118
- }
119
-
120
115
void CHAM64::Base::UncheckedSetKey (const byte *userKey, unsigned int keyLength, const NameValuePairs ¶ms)
121
116
{
122
117
CRYPTOPP_UNUSED (params);
123
118
m_kw = keyLength/sizeof (word16);
124
119
m_rk.New (2 *m_kw);
125
120
126
- for (size_t i = 0 ; i < m_kw; ++i, userKey += sizeof (word16 ))
121
+ for (size_t i = 0 ; i < m_kw; userKey += sizeof (word32 ))
127
122
{
128
123
// Do not cast the buffer. It will SIGBUS on some ARM and SPARC.
129
- const word16 rk = GetWord<word16>(false , BIG_ENDIAN_ORDER, userKey);
130
- m_rk[i] = rk ^ rotlConstant<1 >(rk) ^ rotlConstant<8 >(rk);
131
- m_rk[(i + m_kw) ^ 1 ] = rk ^ rotlConstant<1 >(rk) ^ rotlConstant<11 >(rk);
124
+ const word32 rk = GetWord<word32>(false , BIG_ENDIAN_ORDER, userKey);
125
+
126
+ const word16 rk1 = rk >> 16 ;
127
+ m_rk[i] = rk1 ^ rotlConstant<1 >(rk1) ^ rotlConstant<8 >(rk1);
128
+ m_rk[(i + m_kw) ^ 1 ] = rk1 ^ rotlConstant<1 >(rk1) ^ rotlConstant<11 >(rk1);
129
+ i++;
130
+
131
+ const word16 rk2 = rk & 0xffff ;
132
+ m_rk[i] = rk2 ^ rotlConstant<1 >(rk2) ^ rotlConstant<8 >(rk2);
133
+ m_rk[(i + m_kw) ^ 1 ] = rk2 ^ rotlConstant<1 >(rk2) ^ rotlConstant<11 >(rk2);
134
+ i++;
132
135
}
133
136
}
134
137
@@ -209,12 +212,13 @@ void CHAM128::Base::UncheckedSetKey(const byte *userKey, unsigned int keyLength,
209
212
m_kw = keyLength/sizeof (word32);
210
213
m_rk.New (2 *m_kw);
211
214
212
- for (size_t i = 0 ; i < m_kw; ++i, userKey += sizeof (word32))
215
+ for (size_t i = 0 ; i < m_kw; userKey += sizeof (word32))
213
216
{
214
217
// Do not cast the buffer. It will SIGBUS on some ARM and SPARC.
215
218
const word32 rk = GetWord<word32>(false , BIG_ENDIAN_ORDER, userKey);
216
219
m_rk[i] = rk ^ rotlConstant<1 >(rk) ^ rotlConstant<8 >(rk);
217
220
m_rk[(i + m_kw) ^ 1 ] = rk ^ rotlConstant<1 >(rk) ^ rotlConstant<11 >(rk);
221
+ i++;
218
222
}
219
223
}
220
224
0 commit comments