|
|
|
@ -636,7 +636,8 @@ DECLSPEC void Cast5SetKey (PRIVATE_AS CAST_KEY *key, u32 keylength, PRIVATE_AS c
|
|
|
|
|
#define x(i) GETBYTE(X[i/4], 3-i%4)
|
|
|
|
|
#define z(i) GETBYTE(Z[i/4], 3-i%4)
|
|
|
|
|
|
|
|
|
|
for (i=0; i<=16; i+=16) {
|
|
|
|
|
for (i = 0; i <= 16; i += 16)
|
|
|
|
|
{
|
|
|
|
|
// this part is copied directly from RFC 2144 (with some search and replace) by Wei Dai
|
|
|
|
|
Z[0] = X[0] ^ s_S[4][x(0xD)] ^ s_S[5][x(0xF)] ^ s_S[6][x(0xC)] ^ s_S[7][x(0xE)] ^ s_S[6][x(0x8)];
|
|
|
|
|
Z[1] = X[2] ^ s_S[4][z(0x0)] ^ s_S[5][z(0x2)] ^ s_S[6][z(0x1)] ^ s_S[7][z(0x3)] ^ s_S[7][x(0xA)];
|
|
|
|
@ -673,11 +674,13 @@ DECLSPEC void Cast5SetKey (PRIVATE_AS CAST_KEY *key, u32 keylength, PRIVATE_AS c
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 data[32];
|
|
|
|
|
for (i = 0; i < 16; i++) {
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
|
{
|
|
|
|
|
data[i * 2] = K[i];
|
|
|
|
|
data[i * 2 + 1] = ((K[i + 16]) + 16) & 0x1f; // here only the lowest 5 bits are set..
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (i=16; i<32; i++)
|
|
|
|
|
for (i = 16; i < 32; i++)
|
|
|
|
|
K[i] &= 0x1f;
|
|
|
|
|
}
|
|
|
|
|