lib: rsa: check algo match in rsa_verify_with_keynode
authorMatthieu CASTET <castet.matthieu@free.fr>
Wed, 23 Sep 2020 17:11:44 +0000 (19:11 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 13 Oct 2020 01:30:38 +0000 (21:30 -0400)
The algo name should match between the FIT's signature node and the
U-Boot's control FDT.

If we do not check it, U-Boot's control FDT can expect sha512 hash but
nothing will prevent to accept image with sha1 hash if the signature is correct.

Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr>
lib/rsa/rsa-verify.c

index 2057f68..b9c800c 100644 (file)
@@ -439,12 +439,17 @@ static int rsa_verify_with_keynode(struct image_sign_info *info,
        struct key_prop prop;
        int length;
        int ret = 0;
+       const char *algo;
 
        if (node < 0) {
                debug("%s: Skipping invalid node", __func__);
                return -EBADF;
        }
 
+       algo = fdt_getprop(blob, node, "algo", NULL);
+       if (strcmp(info->name, algo))
+               return -EFAULT;
+
        prop.num_bits = fdtdec_get_int(blob, node, "rsa,num-bits", 0);
 
        prop.n0inv = fdtdec_get_int(blob, node, "rsa,n0-inverse", 0);