crypto: ecdh - comply with crypto_kpp_maxsize()
authorTudor-Dan Ambarus <tudor.ambarus@microchip.com>
Thu, 25 May 2017 07:18:10 +0000 (10:18 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 10 Jun 2017 04:04:28 +0000 (12:04 +0800)
crypto_kpp_maxsize() asks for the output buffer size without
caring for errors. It allways assume that will be called after
a valid setkey. Comply with it and return what he wants.

nbytes has no sense now, remove it and directly return the maxsize.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/ecdh.c

index ed1464a5ce1b2864666d4cf9b17d0f8b3e0bece9..4aa0b0cb462788f4485616253a2ade8e6b01ea95 100644 (file)
@@ -104,13 +104,12 @@ static int ecdh_compute_value(struct kpp_request *req)
        return ret;
 }
 
-static int ecdh_max_size(struct crypto_kpp *tfm)
+static unsigned int ecdh_max_size(struct crypto_kpp *tfm)
 {
        struct ecdh_ctx *ctx = ecdh_get_ctx(tfm);
-       int nbytes = ctx->ndigits << ECC_DIGITS_TO_BYTES_SHIFT;
 
-       /* Public key is made of two coordinates */
-       return 2 * nbytes;
+       /* Public key is made of two coordinates, add one to the left shift */
+       return ctx->ndigits << (ECC_DIGITS_TO_BYTES_SHIFT + 1);
 }
 
 static void no_exit_tfm(struct crypto_kpp *tfm)