Skip to content

Commit

Permalink
crypto: dh - Make public key test FIPS-only
Browse files Browse the repository at this point in the history
The function dh_is_pubkey_valid was added to for FIPS but it was
only partially conditional to fips_enabled.

In particular, the first test in the function relies on the last
test to work properly, but the last test is only run in FIPS mode.

Fix this inconsistency by making the whole function conditional
on fips_enabled.

Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
herbertx committed Mar 1, 2024
1 parent a24e3b5 commit f66a211
Showing 1 changed file with 29 additions and 28 deletions.
57 changes: 29 additions & 28 deletions crypto/dh.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,12 @@ static int dh_set_secret(struct crypto_kpp *tfm, const void *buf,
*/
static int dh_is_pubkey_valid(struct dh_ctx *ctx, MPI y)
{
MPI val, q;
int ret;

if (!fips_enabled)
return 0;

if (unlikely(!ctx->p))
return -EINVAL;

Expand All @@ -125,40 +131,35 @@ static int dh_is_pubkey_valid(struct dh_ctx *ctx, MPI y)
*
* For the safe-prime groups q = (p - 1)/2.
*/
if (fips_enabled) {
MPI val, q;
int ret;
val = mpi_alloc(0);
if (!val)
return -ENOMEM;

val = mpi_alloc(0);
if (!val)
return -ENOMEM;
q = mpi_alloc(mpi_get_nlimbs(ctx->p));
if (!q) {
mpi_free(val);
return -ENOMEM;
}

q = mpi_alloc(mpi_get_nlimbs(ctx->p));
if (!q) {
mpi_free(val);
return -ENOMEM;
}
/*
* ->p is odd, so no need to explicitly subtract one
* from it before shifting to the right.
*/
mpi_rshift(q, ctx->p, 1);

/*
* ->p is odd, so no need to explicitly subtract one
* from it before shifting to the right.
*/
mpi_rshift(q, ctx->p, 1);

ret = mpi_powm(val, y, q, ctx->p);
mpi_free(q);
if (ret) {
mpi_free(val);
return ret;
}
ret = mpi_powm(val, y, q, ctx->p);
mpi_free(q);
if (ret) {
mpi_free(val);
return ret;
}

ret = mpi_cmp_ui(val, 1);
ret = mpi_cmp_ui(val, 1);

mpi_free(val);
mpi_free(val);

if (ret != 0)
return -EINVAL;
}
if (ret != 0)
return -EINVAL;

return 0;
}
Expand Down

0 comments on commit f66a211

Please sign in to comment.