]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - tools/image-host.c
dm: pmic: max77686: Correct two typos in a comment
[karo-tx-uboot.git] / tools / image-host.c
index 0d5c88ca73c6894fded23b5c4e0359c5cb63acdf..7effb6cea59e2a084e253e26661949f058c8b534 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include "mkimage.h"
+#include <bootm.h>
 #include <image.h>
 #include <version.h>
 
@@ -224,7 +225,9 @@ static int fit_image_process_sig(const char *keydir, void *keydest,
        ret = fit_image_write_sig(fit, noffset, value, value_len, comment,
                        NULL, 0);
        if (ret) {
-               printf("Can't write signature for '%s' signature node in '%s' image node: %s\n",
+               if (ret == -FDT_ERR_NOSPACE)
+                       return -ENOSPC;
+               printf("Can't write signature for '%s' signature node in '%s' conf node: %s\n",
                       node_name, image_name, fdt_strerror(ret));
                return -1;
        }
@@ -403,7 +406,7 @@ static int fit_config_get_hash_list(void *fit, int conf_noffset,
                goto err_mem;
 
        /* Get a list of images that we intend to sign */
-       prop = fit_config_get_image_list(fit, conf_noffset, &len,
+       prop = fit_config_get_image_list(fit, sig_offset, &len,
                                        &allow_missing);
        if (!prop)
                return 0;
@@ -589,10 +592,13 @@ static int fit_config_process_sig(const char *keydir, void *keydest,
                return -1;
        }
 
-       if (fit_image_write_sig(fit, noffset, value, value_len, comment,
-                               region_prop, region_proplen)) {
-               printf("Can't write signature for '%s' signature node in '%s' conf node\n",
-                      node_name, conf_name);
+       ret = fit_image_write_sig(fit, noffset, value, value_len, comment,
+                               region_prop, region_proplen);
+       if (ret) {
+               if (ret == -FDT_ERR_NOSPACE)
+                       return -ENOSPC;
+               printf("Can't write signature for '%s' signature node in '%s' conf node: %s\n",
+                      node_name, conf_name, fdt_strerror(ret));
                return -1;
        }
        free(value);
@@ -602,10 +608,15 @@ static int fit_config_process_sig(const char *keydir, void *keydest,
        info.keyname = fdt_getprop(fit, noffset, "key-name-hint", NULL);
 
        /* Write the public key into the supplied FDT file */
-       if (keydest && info.algo->add_verify_data(&info, keydest)) {
-               printf("Failed to add verification data for '%s' signature node in '%s' image node\n",
-                      node_name, conf_name);
-               return -1;
+       if (keydest) {
+               ret = info.algo->add_verify_data(&info, keydest);
+               if (ret == -ENOSPC)
+                       return -ENOSPC;
+               if (ret) {
+                       printf("Failed to add verification data for '%s' signature node in '%s' image node\n",
+                              node_name, conf_name);
+               }
+               return ret;
        }
 
        return 0;
@@ -678,7 +689,7 @@ int fit_add_verification_data(const char *keydir, void *keydest, void *fit,
        confs_noffset = fdt_path_offset(fit, FIT_CONFS_PATH);
        if (confs_noffset < 0) {
                printf("Can't find images parent node '%s' (%s)\n",
-                      FIT_IMAGES_PATH, fdt_strerror(confs_noffset));
+                      FIT_CONFS_PATH, fdt_strerror(confs_noffset));
                return -ENOENT;
        }
 
@@ -695,3 +706,23 @@ int fit_add_verification_data(const char *keydir, void *keydest, void *fit,
 
        return 0;
 }
+
+#ifdef CONFIG_FIT_SIGNATURE
+int fit_check_sign(const void *fit, const void *key)
+{
+       int cfg_noffset;
+       int ret;
+
+       cfg_noffset = fit_conf_get_node(fit, NULL);
+       if (!cfg_noffset)
+               return -1;
+
+       printf("Verifying Hash Integrity ... ");
+       ret = fit_config_verify(fit, cfg_noffset);
+       if (ret)
+               return ret;
+       ret = bootm_host_load_images(fit, cfg_noffset);
+
+       return ret;
+}
+#endif