rsa: Fix two errors in the implementation

1. Failure to set the return code correctly
2. Failure to detect the loop end condition when the value is equal to
the modulus.

Reported-by: Jeroen Hofstee <jeroen@myspectrum.nl>
Signed-off-by: Simon Glass <sjg@chromium.org>
master
Simon Glass 11 years ago committed by Tom Rini
parent 8ac22a60e2
commit 5426716231
  1. 1
      lib/rsa/rsa-sign.c
  2. 4
      lib/rsa/rsa-verify.c

@ -76,6 +76,7 @@ static int rsa_get_pub_key(const char *keydir, const char *name, RSA **rsap)
rsa = EVP_PKEY_get1_RSA(key); rsa = EVP_PKEY_get1_RSA(key);
if (!rsa) { if (!rsa) {
rsa_err("Couldn't convert to a RSA style key"); rsa_err("Couldn't convert to a RSA style key");
ret = -EINVAL;
goto err_rsa; goto err_rsa;
} }
fclose(f); fclose(f);

@ -57,9 +57,9 @@ static void subtract_modulus(const struct rsa_public_key *key, uint32_t num[])
static int greater_equal_modulus(const struct rsa_public_key *key, static int greater_equal_modulus(const struct rsa_public_key *key,
uint32_t num[]) uint32_t num[])
{ {
uint32_t i; int i;
for (i = key->len - 1; i >= 0; i--) { for (i = (int)key->len - 1; i >= 0; i--) {
if (num[i] < key->modulus[i]) if (num[i] < key->modulus[i])
return 0; return 0;
if (num[i] > key->modulus[i]) if (num[i] > key->modulus[i])

Loading…
Cancel
Save