diff options
author | Kasoju Mallikarjun <mkasoju@nvidia.com> | 2011-12-14 22:57:25 +0530 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-21 12:06:24 +0530 |
commit | eba78584106babe543ee7625652ef9760d3fc23f (patch) | |
tree | 8f5455bea15f84d6dd2d381c708fdff2d72e1875 /drivers/crypto | |
parent | ac5eaff3483fdf4fe57a233cb4118cbfea622b4b (diff) |
crypto: tegra-se: Added a check for valid key size
Check for valid key size before setting the key.
Bug 915210
Change-Id: I081e2af9505ea89719d447b4b0ca2b0177860d09
Reviewed-on: http://git-master/r/70046
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
Tested-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
Reviewed-by: Thomas Cherry <tcherry@nvidia.com>
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/tegra-se.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/crypto/tegra-se.c b/drivers/crypto/tegra-se.c index fea3f456a0b0..4083d155c874 100644 --- a/drivers/crypto/tegra-se.c +++ b/drivers/crypto/tegra-se.c @@ -955,6 +955,13 @@ static int tegra_se_aes_setkey(struct crypto_ablkcipher *tfm, return -EINVAL; } + if ((keylen != TEGRA_SE_KEY_128_SIZE) && + (keylen != TEGRA_SE_KEY_192_SIZE) && + (keylen != TEGRA_SE_KEY_256_SIZE)) { + dev_err(se_dev->dev, "invalid key size"); + return -EINVAL; + } + if (key) { if (!ctx->slot || (ctx->slot && ctx->slot->slot_num == ssk_slot.slot_num)) { @@ -1486,6 +1493,13 @@ int tegra_se_aes_cmac_setkey(struct crypto_ahash *tfm, const u8 *key, return -EINVAL; } + if ((keylen != TEGRA_SE_KEY_128_SIZE) && + (keylen != TEGRA_SE_KEY_192_SIZE) && + (keylen != TEGRA_SE_KEY_256_SIZE)) { + dev_err(se_dev->dev, "invalid key size"); + return -EINVAL; + } + if (key) { if (!ctx->slot || (ctx->slot && ctx->slot->slot_num == ssk_slot.slot_num)) { @@ -2144,7 +2158,7 @@ static int tegra_se_lp_encrypt_context_data(struct tegra_se_dev *se_dev, dst_ll = (struct tegra_se_ll *)(se_dev->dst_ll_buf + 1); src_ll->addr = se_dev->ctx_save_buf_adr + context_offset; src_ll->data_len = data_size; - dst_ll->addr = se_dev->ctx_save_buf_adr + context_offset;; + dst_ll->addr = se_dev->ctx_save_buf_adr + context_offset; dst_ll->data_len = data_size; se_writel(se_dev, SE_CONTEXT_SAVE_SRC(MEM), |