Signed-off-by: Tudor Ambarus <[email protected]>
---
crypto/rsa.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/crypto/rsa.c b/crypto/rsa.c
index 4c280b6..a80f76d 100644
--- a/crypto/rsa.c
+++ b/crypto/rsa.c
@@ -279,6 +279,9 @@ static int rsa_set_pub_key(struct crypto_akcipher *tfm,
const void *key,
if (ret)
return ret;
+ if (rsa_check_key_length(raw_key.n_sz << 3))
+ return -EINVAL;
+
mpi_key->e = mpi_read_raw_data(raw_key.e, raw_key.e_sz);
if (!mpi_key->e)
goto err;
@@ -287,11 +290,6 @@ static int rsa_set_pub_key(struct crypto_akcipher *tfm,
const void *key,
if (!mpi_key->n)
goto err;
- if (rsa_check_key_length(mpi_get_size(mpi_key->n) << 3)) {
- rsa_free_mpi_key(mpi_key);
- return -EINVAL;
- }
-
return 0;
err:
@@ -313,6 +311,9 @@ static int rsa_set_priv_key(struct crypto_akcipher *tfm,
const void *key,
if (ret)
return ret;
+ if (rsa_check_key_length(raw_key.n_sz << 3))
+ return -EINVAL;
+
mpi_key->d = mpi_read_raw_data(raw_key.d, raw_key.d_sz);
if (!mpi_key->d)
goto err;
@@ -325,11 +326,6 @@ static int rsa_set_priv_key(struct crypto_akcipher *tfm,
const void *key,
if (!mpi_key->n)
goto err;
- if (rsa_check_key_length(mpi_get_size(mpi_key->n) << 3)) {
- rsa_free_mpi_key(mpi_key);
- return -EINVAL;
- }
-
return 0;
err:
--
2.7.4