提交 457e6f73 编写于 作者: A Andrzej Zaborowski 提交者: Herbert Xu

crypto: rsa - only require output buffers as big as needed.

rhe RSA operations explicitly left-align the integers being written
skipping any leading zero bytes, but still require the output buffers to
include just enough space for the integer + the leading zero bytes.
Since the size of integer + the leading zero bytes (i.e. the key modulus
size) can now be obtained more easily through crypto_akcipher_maxsize
change the operations to only require as big a buffer as actually needed
if the caller has that information.  The semantics for request->dst_len
don't change.
Signed-off-by: NAndrew Zaborowski <andrew.zaborowski@intel.com>
Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
上级 9cbe21d8
...@@ -91,12 +91,6 @@ static int rsa_enc(struct akcipher_request *req) ...@@ -91,12 +91,6 @@ static int rsa_enc(struct akcipher_request *req)
goto err_free_c; goto err_free_c;
} }
if (req->dst_len < mpi_get_size(pkey->n)) {
req->dst_len = mpi_get_size(pkey->n);
ret = -EOVERFLOW;
goto err_free_c;
}
ret = -ENOMEM; ret = -ENOMEM;
m = mpi_read_raw_from_sgl(req->src, req->src_len); m = mpi_read_raw_from_sgl(req->src, req->src_len);
if (!m) if (!m)
...@@ -136,12 +130,6 @@ static int rsa_dec(struct akcipher_request *req) ...@@ -136,12 +130,6 @@ static int rsa_dec(struct akcipher_request *req)
goto err_free_m; goto err_free_m;
} }
if (req->dst_len < mpi_get_size(pkey->n)) {
req->dst_len = mpi_get_size(pkey->n);
ret = -EOVERFLOW;
goto err_free_m;
}
ret = -ENOMEM; ret = -ENOMEM;
c = mpi_read_raw_from_sgl(req->src, req->src_len); c = mpi_read_raw_from_sgl(req->src, req->src_len);
if (!c) if (!c)
...@@ -180,12 +168,6 @@ static int rsa_sign(struct akcipher_request *req) ...@@ -180,12 +168,6 @@ static int rsa_sign(struct akcipher_request *req)
goto err_free_s; goto err_free_s;
} }
if (req->dst_len < mpi_get_size(pkey->n)) {
req->dst_len = mpi_get_size(pkey->n);
ret = -EOVERFLOW;
goto err_free_s;
}
ret = -ENOMEM; ret = -ENOMEM;
m = mpi_read_raw_from_sgl(req->src, req->src_len); m = mpi_read_raw_from_sgl(req->src, req->src_len);
if (!m) if (!m)
...@@ -225,12 +207,6 @@ static int rsa_verify(struct akcipher_request *req) ...@@ -225,12 +207,6 @@ static int rsa_verify(struct akcipher_request *req)
goto err_free_m; goto err_free_m;
} }
if (req->dst_len < mpi_get_size(pkey->n)) {
req->dst_len = mpi_get_size(pkey->n);
ret = -EOVERFLOW;
goto err_free_m;
}
ret = -ENOMEM; ret = -ENOMEM;
s = mpi_read_raw_from_sgl(req->src, req->src_len); s = mpi_read_raw_from_sgl(req->src, req->src_len);
if (!s) { if (!s) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册