mirror of https://gitee.com/openkylin/linux.git
crypto: chcr - Cosmetic change
Moves get_aes_decrypt_key function to .c file and declare inline for "aes_ks_subword" Signed-off-by: Jitendra Lulla <JLULLA@chelsio.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
b3e1e0cbd9
commit
39f91a34f3
|
@ -178,6 +178,58 @@ static inline unsigned int calc_tx_flits_ofld(const struct sk_buff *skb)
|
|||
return flits + sgl_len(cnt);
|
||||
}
|
||||
|
||||
static inline void get_aes_decrypt_key(unsigned char *dec_key,
|
||||
const unsigned char *key,
|
||||
unsigned int keylength)
|
||||
{
|
||||
u32 temp;
|
||||
u32 w_ring[MAX_NK];
|
||||
int i, j, k;
|
||||
u8 nr, nk;
|
||||
|
||||
switch (keylength) {
|
||||
case AES_KEYLENGTH_128BIT:
|
||||
nk = KEYLENGTH_4BYTES;
|
||||
nr = NUMBER_OF_ROUNDS_10;
|
||||
break;
|
||||
case AES_KEYLENGTH_192BIT:
|
||||
nk = KEYLENGTH_6BYTES;
|
||||
nr = NUMBER_OF_ROUNDS_12;
|
||||
break;
|
||||
case AES_KEYLENGTH_256BIT:
|
||||
nk = KEYLENGTH_8BYTES;
|
||||
nr = NUMBER_OF_ROUNDS_14;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < nk; i++)
|
||||
w_ring[i] = be32_to_cpu(*(u32 *)&key[4 * i]);
|
||||
|
||||
i = 0;
|
||||
temp = w_ring[nk - 1];
|
||||
while (i + nk < (nr + 1) * 4) {
|
||||
if (!(i % nk)) {
|
||||
/* RotWord(temp) */
|
||||
temp = (temp << 8) | (temp >> 24);
|
||||
temp = aes_ks_subword(temp);
|
||||
temp ^= round_constant[i / nk];
|
||||
} else if (nk == 8 && (i % 4 == 0)) {
|
||||
temp = aes_ks_subword(temp);
|
||||
}
|
||||
w_ring[i % nk] ^= temp;
|
||||
temp = w_ring[i % nk];
|
||||
i++;
|
||||
}
|
||||
i--;
|
||||
for (k = 0, j = i % nk; k < nk; k++) {
|
||||
*((u32 *)dec_key + k) = htonl(w_ring[j]);
|
||||
j--;
|
||||
if (j < 0)
|
||||
j += nk;
|
||||
}
|
||||
}
|
||||
|
||||
static struct shash_desc *chcr_alloc_shash(unsigned int ds)
|
||||
{
|
||||
struct crypto_shash *base_hash = NULL;
|
||||
|
|
|
@ -394,7 +394,7 @@ static const u8 aes_sbox[256] = {
|
|||
187, 22
|
||||
};
|
||||
|
||||
static u32 aes_ks_subword(const u32 w)
|
||||
static inline u32 aes_ks_subword(const u32 w)
|
||||
{
|
||||
u8 bytes[4];
|
||||
|
||||
|
@ -412,61 +412,4 @@ static u32 round_constant[11] = {
|
|||
0x1B000000, 0x36000000, 0x6C000000
|
||||
};
|
||||
|
||||
/* dec_key - OUTPUT - Reverse round key
|
||||
* key - INPUT - key
|
||||
* keylength - INPUT - length of the key in number of bits
|
||||
*/
|
||||
static inline void get_aes_decrypt_key(unsigned char *dec_key,
|
||||
const unsigned char *key,
|
||||
unsigned int keylength)
|
||||
{
|
||||
u32 temp;
|
||||
u32 w_ring[MAX_NK];
|
||||
int i, j, k;
|
||||
u8 nr, nk;
|
||||
|
||||
switch (keylength) {
|
||||
case AES_KEYLENGTH_128BIT:
|
||||
nk = KEYLENGTH_4BYTES;
|
||||
nr = NUMBER_OF_ROUNDS_10;
|
||||
break;
|
||||
|
||||
case AES_KEYLENGTH_192BIT:
|
||||
nk = KEYLENGTH_6BYTES;
|
||||
nr = NUMBER_OF_ROUNDS_12;
|
||||
break;
|
||||
case AES_KEYLENGTH_256BIT:
|
||||
nk = KEYLENGTH_8BYTES;
|
||||
nr = NUMBER_OF_ROUNDS_14;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
for (i = 0; i < nk; i++ )
|
||||
w_ring[i] = be32_to_cpu(*(u32 *)&key[4 * i]);
|
||||
|
||||
i = 0;
|
||||
temp = w_ring[nk - 1];
|
||||
while(i + nk < (nr + 1) * 4) {
|
||||
if(!(i % nk)) {
|
||||
/* RotWord(temp) */
|
||||
temp = (temp << 8) | (temp >> 24);
|
||||
temp = aes_ks_subword(temp);
|
||||
temp ^= round_constant[i / nk];
|
||||
}
|
||||
else if (nk == 8 && (i % 4 == 0))
|
||||
temp = aes_ks_subword(temp);
|
||||
w_ring[i % nk] ^= temp;
|
||||
temp = w_ring[i % nk];
|
||||
i++;
|
||||
}
|
||||
i--;
|
||||
for (k = 0, j = i % nk; k < nk; k++) {
|
||||
*((u32 *)dec_key + k) = htonl(w_ring[j]);
|
||||
j--;
|
||||
if(j < 0)
|
||||
j += nk;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __CHCR_ALGO_H__ */
|
||||
|
|
Loading…
Reference in New Issue