version 1.12, 2001/09/13 09:48:39 |
version 1.12.2.2, 2002/10/11 14:53:07 |
|
|
rk[6] = GETU32(cipherKey + 24); |
rk[6] = GETU32(cipherKey + 24); |
rk[7] = GETU32(cipherKey + 28); |
rk[7] = GETU32(cipherKey + 28); |
if (keyBits == 256) { |
if (keyBits == 256) { |
for (;;) { |
for (;;) { |
temp = rk[ 7]; |
temp = rk[ 7]; |
rk[ 8] = rk[ 0] ^ |
rk[ 8] = rk[ 0] ^ |
(Te4[(temp >> 16) & 0xff] & 0xff000000) ^ |
(Te4[(temp >> 16) & 0xff] & 0xff000000) ^ |
(Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^ |
(Te4[(temp >> 8) & 0xff] & 0x00ff0000) ^ |
(Te4[(temp ) & 0xff] & 0x0000ff00) ^ |
(Te4[(temp ) & 0xff] & 0x0000ff00) ^ |
(Te4[(temp >> 24) ] & 0x000000ff) ^ |
(Te4[(temp >> 24) ] & 0x000000ff) ^ |
rcon[i]; |
rcon[i]; |
rk[ 9] = rk[ 1] ^ rk[ 8]; |
rk[ 9] = rk[ 1] ^ rk[ 8]; |
rk[10] = rk[ 2] ^ rk[ 9]; |
rk[10] = rk[ 2] ^ rk[ 9]; |
rk[11] = rk[ 3] ^ rk[10]; |
rk[11] = rk[ 3] ^ rk[10]; |
if (++i == 7) { |
if (++i == 7) { |
return 14; |
return 14; |
} |
} |
temp = rk[11]; |
temp = rk[11]; |
rk[12] = rk[ 4] ^ |
rk[12] = rk[ 4] ^ |
(Te4[(temp >> 24) ] & 0xff000000) ^ |
(Te4[(temp >> 24) ] & 0xff000000) ^ |
(Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^ |
(Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^ |
(Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^ |
(Te4[(temp >> 8) & 0xff] & 0x0000ff00) ^ |
(Te4[(temp ) & 0xff] & 0x000000ff); |
(Te4[(temp ) & 0xff] & 0x000000ff); |
rk[13] = rk[ 5] ^ rk[12]; |
rk[13] = rk[ 5] ^ rk[12]; |
rk[14] = rk[ 6] ^ rk[13]; |
rk[14] = rk[ 6] ^ rk[13]; |
rk[15] = rk[ 7] ^ rk[14]; |
rk[15] = rk[ 7] ^ rk[14]; |
|
|
rk += 8; |
rk += 8; |
} |
} |
} |
} |
return 0; |
return 0; |
} |
} |
|
|
t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38]; |
t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38]; |
t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39]; |
t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39]; |
if (Nr > 10) { |
if (Nr > 10) { |
/* round 10: */ |
/* round 10: */ |
s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40]; |
s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40]; |
s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41]; |
s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41]; |
s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42]; |
s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42]; |
s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43]; |
s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43]; |
/* round 11: */ |
/* round 11: */ |
t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44]; |
t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44]; |
t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45]; |
t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45]; |
t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46]; |
t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46]; |
t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47]; |
t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47]; |
if (Nr > 12) { |
if (Nr > 12) { |
/* round 12: */ |
/* round 12: */ |
s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48]; |
s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >> 8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48]; |
s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49]; |
s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >> 8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49]; |
s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50]; |
s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >> 8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50]; |
s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51]; |
s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >> 8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51]; |
/* round 13: */ |
/* round 13: */ |
t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52]; |
t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >> 8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52]; |
t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53]; |
t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >> 8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53]; |
t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54]; |
t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >> 8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54]; |
t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55]; |
t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >> 8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55]; |
} |
} |
} |
} |
rk += Nr << 2; |
rk += Nr << 2; |
#else /* !FULL_UNROLL */ |
#else /* !FULL_UNROLL */ |
|
|
*/ |
*/ |
r = Nr >> 1; |
r = Nr >> 1; |
for (;;) { |
for (;;) { |
t0 = |
t0 = |
Te0[(s0 >> 24) ] ^ |
Te0[(s0 >> 24) ] ^ |
Te1[(s1 >> 16) & 0xff] ^ |
Te1[(s1 >> 16) & 0xff] ^ |
Te2[(s2 >> 8) & 0xff] ^ |
Te2[(s2 >> 8) & 0xff] ^ |
Te3[(s3 ) & 0xff] ^ |
Te3[(s3 ) & 0xff] ^ |
rk[4]; |
rk[4]; |
t1 = |
t1 = |
Te0[(s1 >> 24) ] ^ |
Te0[(s1 >> 24) ] ^ |
Te1[(s2 >> 16) & 0xff] ^ |
Te1[(s2 >> 16) & 0xff] ^ |
Te2[(s3 >> 8) & 0xff] ^ |
Te2[(s3 >> 8) & 0xff] ^ |
Te3[(s0 ) & 0xff] ^ |
Te3[(s0 ) & 0xff] ^ |
rk[5]; |
rk[5]; |
t2 = |
t2 = |
Te0[(s2 >> 24) ] ^ |
Te0[(s2 >> 24) ] ^ |
Te1[(s3 >> 16) & 0xff] ^ |
Te1[(s3 >> 16) & 0xff] ^ |
Te2[(s0 >> 8) & 0xff] ^ |
Te2[(s0 >> 8) & 0xff] ^ |
Te3[(s1 ) & 0xff] ^ |
Te3[(s1 ) & 0xff] ^ |
rk[6]; |
rk[6]; |
t3 = |
t3 = |
Te0[(s3 >> 24) ] ^ |
Te0[(s3 >> 24) ] ^ |
Te1[(s0 >> 16) & 0xff] ^ |
Te1[(s0 >> 16) & 0xff] ^ |
Te2[(s1 >> 8) & 0xff] ^ |
Te2[(s1 >> 8) & 0xff] ^ |
Te3[(s2 ) & 0xff] ^ |
Te3[(s2 ) & 0xff] ^ |
rk[7]; |
rk[7]; |
|
|
rk += 8; |
rk += 8; |
if (--r == 0) { |
if (--r == 0) { |
break; |
break; |
} |
} |
|
|
s0 = |
s0 = |
Te0[(t0 >> 24) ] ^ |
Te0[(t0 >> 24) ] ^ |
Te1[(t1 >> 16) & 0xff] ^ |
Te1[(t1 >> 16) & 0xff] ^ |
Te2[(t2 >> 8) & 0xff] ^ |
Te2[(t2 >> 8) & 0xff] ^ |
Te3[(t3 ) & 0xff] ^ |
Te3[(t3 ) & 0xff] ^ |
rk[0]; |
rk[0]; |
s1 = |
s1 = |
Te0[(t1 >> 24) ] ^ |
Te0[(t1 >> 24) ] ^ |
Te1[(t2 >> 16) & 0xff] ^ |
Te1[(t2 >> 16) & 0xff] ^ |
Te2[(t3 >> 8) & 0xff] ^ |
Te2[(t3 >> 8) & 0xff] ^ |
Te3[(t0 ) & 0xff] ^ |
Te3[(t0 ) & 0xff] ^ |
rk[1]; |
rk[1]; |
s2 = |
s2 = |
Te0[(t2 >> 24) ] ^ |
Te0[(t2 >> 24) ] ^ |
Te1[(t3 >> 16) & 0xff] ^ |
Te1[(t3 >> 16) & 0xff] ^ |
Te2[(t0 >> 8) & 0xff] ^ |
Te2[(t0 >> 8) & 0xff] ^ |
Te3[(t1 ) & 0xff] ^ |
Te3[(t1 ) & 0xff] ^ |
rk[2]; |
rk[2]; |
s3 = |
s3 = |
Te0[(t3 >> 24) ] ^ |
Te0[(t3 >> 24) ] ^ |
Te1[(t0 >> 16) & 0xff] ^ |
Te1[(t0 >> 16) & 0xff] ^ |
Te2[(t1 >> 8) & 0xff] ^ |
Te2[(t1 >> 8) & 0xff] ^ |
Te3[(t2 ) & 0xff] ^ |
Te3[(t2 ) & 0xff] ^ |
rk[3]; |
rk[3]; |
} |
} |
#endif /* ?FULL_UNROLL */ |
#endif /* ?FULL_UNROLL */ |
/* |
/* |
|
|
t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38]; |
t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38]; |
t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39]; |
t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39]; |
if (Nr > 10) { |
if (Nr > 10) { |
/* round 10: */ |
/* round 10: */ |
s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40]; |
s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40]; |
s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41]; |
s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41]; |
s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42]; |
s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42]; |
s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43]; |
s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43]; |
/* round 11: */ |
/* round 11: */ |
t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44]; |
t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44]; |
t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45]; |
t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45]; |
t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46]; |
t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46]; |
t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47]; |
t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47]; |
if (Nr > 12) { |
if (Nr > 12) { |
/* round 12: */ |
/* round 12: */ |
s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48]; |
s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >> 8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48]; |
s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49]; |
s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >> 8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49]; |
s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50]; |
s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >> 8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50]; |
s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51]; |
s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >> 8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51]; |
/* round 13: */ |
/* round 13: */ |
t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52]; |
t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >> 8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52]; |
t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53]; |
t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >> 8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53]; |
t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54]; |
t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >> 8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54]; |
t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55]; |
t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >> 8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55]; |
} |
} |
} |
} |
rk += Nr << 2; |
rk += Nr << 2; |
#else /* !FULL_UNROLL */ |
#else /* !FULL_UNROLL */ |
|
|
*/ |
*/ |
r = Nr >> 1; |
r = Nr >> 1; |
for (;;) { |
for (;;) { |
t0 = |
t0 = |
Td0[(s0 >> 24) ] ^ |
Td0[(s0 >> 24) ] ^ |
Td1[(s3 >> 16) & 0xff] ^ |
Td1[(s3 >> 16) & 0xff] ^ |
Td2[(s2 >> 8) & 0xff] ^ |
Td2[(s2 >> 8) & 0xff] ^ |
Td3[(s1 ) & 0xff] ^ |
Td3[(s1 ) & 0xff] ^ |
rk[4]; |
rk[4]; |
t1 = |
t1 = |
Td0[(s1 >> 24) ] ^ |
Td0[(s1 >> 24) ] ^ |
Td1[(s0 >> 16) & 0xff] ^ |
Td1[(s0 >> 16) & 0xff] ^ |
Td2[(s3 >> 8) & 0xff] ^ |
Td2[(s3 >> 8) & 0xff] ^ |
Td3[(s2 ) & 0xff] ^ |
Td3[(s2 ) & 0xff] ^ |
rk[5]; |
rk[5]; |
t2 = |
t2 = |
Td0[(s2 >> 24) ] ^ |
Td0[(s2 >> 24) ] ^ |
Td1[(s1 >> 16) & 0xff] ^ |
Td1[(s1 >> 16) & 0xff] ^ |
Td2[(s0 >> 8) & 0xff] ^ |
Td2[(s0 >> 8) & 0xff] ^ |
Td3[(s3 ) & 0xff] ^ |
Td3[(s3 ) & 0xff] ^ |
rk[6]; |
rk[6]; |
t3 = |
t3 = |
Td0[(s3 >> 24) ] ^ |
Td0[(s3 >> 24) ] ^ |
Td1[(s2 >> 16) & 0xff] ^ |
Td1[(s2 >> 16) & 0xff] ^ |
Td2[(s1 >> 8) & 0xff] ^ |
Td2[(s1 >> 8) & 0xff] ^ |
Td3[(s0 ) & 0xff] ^ |
Td3[(s0 ) & 0xff] ^ |
rk[7]; |
rk[7]; |
|
|
rk += 8; |
rk += 8; |
if (--r == 0) { |
if (--r == 0) { |
break; |
break; |
} |
} |
|
|
s0 = |
s0 = |
Td0[(t0 >> 24) ] ^ |
Td0[(t0 >> 24) ] ^ |
Td1[(t3 >> 16) & 0xff] ^ |
Td1[(t3 >> 16) & 0xff] ^ |
Td2[(t2 >> 8) & 0xff] ^ |
Td2[(t2 >> 8) & 0xff] ^ |
Td3[(t1 ) & 0xff] ^ |
Td3[(t1 ) & 0xff] ^ |
rk[0]; |
rk[0]; |
s1 = |
s1 = |
Td0[(t1 >> 24) ] ^ |
Td0[(t1 >> 24) ] ^ |
Td1[(t0 >> 16) & 0xff] ^ |
Td1[(t0 >> 16) & 0xff] ^ |
Td2[(t3 >> 8) & 0xff] ^ |
Td2[(t3 >> 8) & 0xff] ^ |
Td3[(t2 ) & 0xff] ^ |
Td3[(t2 ) & 0xff] ^ |
rk[1]; |
rk[1]; |
s2 = |
s2 = |
Td0[(t2 >> 24) ] ^ |
Td0[(t2 >> 24) ] ^ |
Td1[(t1 >> 16) & 0xff] ^ |
Td1[(t1 >> 16) & 0xff] ^ |
Td2[(t0 >> 8) & 0xff] ^ |
Td2[(t0 >> 8) & 0xff] ^ |
Td3[(t3 ) & 0xff] ^ |
Td3[(t3 ) & 0xff] ^ |
rk[2]; |
rk[2]; |
s3 = |
s3 = |
Td0[(t3 >> 24) ] ^ |
Td0[(t3 >> 24) ] ^ |
Td1[(t2 >> 16) & 0xff] ^ |
Td1[(t2 >> 16) & 0xff] ^ |
Td2[(t1 >> 8) & 0xff] ^ |
Td2[(t1 >> 8) & 0xff] ^ |
Td3[(t0 ) & 0xff] ^ |
Td3[(t0 ) & 0xff] ^ |
rk[3]; |
rk[3]; |
} |
} |
#endif /* ?FULL_UNROLL */ |
#endif /* ?FULL_UNROLL */ |
/* |
/* |
|
|
rijndael_set_key(rijndael_ctx *ctx, u_char *key, int bits, int encrypt) |
rijndael_set_key(rijndael_ctx *ctx, u_char *key, int bits, int encrypt) |
{ |
{ |
ctx->Nr = rijndaelKeySetupEnc(ctx->ek, key, bits); |
ctx->Nr = rijndaelKeySetupEnc(ctx->ek, key, bits); |
if (encrypt) { |
if (encrypt) { |
ctx->decrypt = 0; |
ctx->decrypt = 0; |
memset(ctx->dk, 0, sizeof(ctx->dk)); |
memset(ctx->dk, 0, sizeof(ctx->dk)); |
} else { |
} else { |
ctx->decrypt = 1; |
ctx->decrypt = 1; |
memcpy(ctx->dk, ctx->ek, sizeof(ctx->ek)); |
memcpy(ctx->dk, ctx->ek, sizeof(ctx->dk)); |
rijndaelKeySetupDec(ctx->dk, key, bits, ctx->Nr); |
rijndaelKeySetupDec(ctx->dk, key, bits, ctx->Nr); |
} |
} |
} |
} |
|
|