mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 23:23:03 +00:00
crypto: inside-secure - Minor optimization recognizing CTR is always AES
Moved counter mode handling code in front as it doesn't depend on the rest of the code to be executed, it can just do its thing and exit. Signed-off-by: Pascal van Leeuwen <pvanleeuwen@verimatrix.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
aa88f331c8
commit
493e289ca8
@ -65,6 +65,19 @@ static void safexcel_cipher_token(struct safexcel_cipher_ctx *ctx, u8 *iv,
|
||||
{
|
||||
u32 block_sz = 0;
|
||||
|
||||
if (ctx->mode == CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD) {
|
||||
cdesc->control_data.options |= EIP197_OPTION_4_TOKEN_IV_CMD;
|
||||
|
||||
/* 32 bit nonce */
|
||||
cdesc->control_data.token[0] = ctx->nonce;
|
||||
/* 64 bit IV part */
|
||||
memcpy(&cdesc->control_data.token[1], iv, 8);
|
||||
/* 32 bit counter, start at 1 (big endian!) */
|
||||
cdesc->control_data.token[3] = cpu_to_be32(1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctx->mode != CONTEXT_CONTROL_CRYPTO_MODE_ECB) {
|
||||
switch (ctx->alg) {
|
||||
case SAFEXCEL_DES:
|
||||
@ -80,17 +93,7 @@ static void safexcel_cipher_token(struct safexcel_cipher_ctx *ctx, u8 *iv,
|
||||
cdesc->control_data.options |= EIP197_OPTION_4_TOKEN_IV_CMD;
|
||||
break;
|
||||
}
|
||||
|
||||
if (ctx->mode == CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD) {
|
||||
/* 32 bit nonce */
|
||||
cdesc->control_data.token[0] = ctx->nonce;
|
||||
/* 64 bit IV part */
|
||||
memcpy(&cdesc->control_data.token[1], iv, 8);
|
||||
/* 32 bit counter, start at 1 (big endian!) */
|
||||
cdesc->control_data.token[3] = cpu_to_be32(1);
|
||||
} else {
|
||||
memcpy(cdesc->control_data.token, iv, block_sz);
|
||||
}
|
||||
memcpy(cdesc->control_data.token, iv, block_sz);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user