]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
image: Return destination node for add_verify_data() method
authorSimon Glass <sjg@chromium.org>
Fri, 12 Nov 2021 19:28:11 +0000 (12:28 -0700)
committerSimon Glass <sjg@chromium.org>
Wed, 26 Jan 2022 15:50:44 +0000 (08:50 -0700)
It is useful to know where the verification data was written. Update the
API to return this.

Signed-off-by: Simon Glass <sjg@chromium.org>
include/image.h
include/u-boot/ecdsa.h
include/u-boot/rsa.h
lib/ecdsa/ecdsa-libcrypto.c
lib/rsa/rsa-sign.c
tools/image-host.c

index 780b624c8c9ab35f2ea17d58cd74a16a5ee240a7..cf38aecaa9bb143fe8d5d71f49f4499d65041748 100644 (file)
@@ -1243,7 +1243,8 @@ struct crypto_algo {
         *
         * @info:       Specifies key and FIT information
         * @keydest:    Destination FDT blob for public key data
-        * @return: 0, on success, -ve on error
+        * @return: node offset within the FDT blob where the data was written,
+        *      or -ve on error
         */
        int (*add_verify_data)(struct image_sign_info *info, void *keydest);
 
index 0ceb0c1a084f9efe5a55a8bd62f6f9fdf57013c0..6e0269e3aed69b136c5664156385f64f4ce866c8 100644 (file)
@@ -44,8 +44,9 @@ int ecdsa_sign(struct image_sign_info *info, const struct image_region region[],
  *
  * @info:      Specifies key and FIT information
  * @keydest:   Destination FDT blob for public key data
- * @return: 0, on success, -ENOSPC if the keydest FDT blob ran out of space,
- * other -ve value on error
+ * @return: node offset within the FDT blob where the data was written on
+ *     success, -ENOSPC if the keydest FDT blob ran out of space, other -ve
+ *     value on other error
  */
 int ecdsa_add_verify_data(struct image_sign_info *info, void *keydest);
 
index 2ed2ac7e531dd765527f83f9f50a891985d6ff56..01b480d0f3ed887abcb30dff1abd2bd4e49a5dc4 100644 (file)
@@ -61,8 +61,9 @@ int rsa_sign(struct image_sign_info *info,
  *
  * @info:      Specifies key and FIT information
  * @keydest:   Destination FDT blob for public key data
- * @return: 0, on success, -ENOSPC if the keydest FDT blob ran out of space,
-               other -ve value on error
+ * @return: node offset within the FDT blob where the data was written on
+ *     success, -ENOSPC if the keydest FDT blob ran out of space, other -ve
+ *     value on other error
 */
 int rsa_add_verify_data(struct image_sign_info *info, void *keydest);
 
index ae6dfa0ba97fdb1db8b6e844ed381a0f2bb1aa0b..d5939af2c56e2b90e819ae2dd40779db88174112 100644 (file)
@@ -301,7 +301,7 @@ static int do_add(struct signer *ctx, void *fdt, const char *key_node_name)
        if (ret < 0)
                return ret;
 
-       return 0;
+       return key_node;
 }
 
 int ecdsa_add_verify_data(struct image_sign_info *info, void *fdt)
@@ -313,7 +313,7 @@ int ecdsa_add_verify_data(struct image_sign_info *info, void *fdt)
        fdt_key_name = info->keyname ? info->keyname : "default-key";
        ret = prepare_ctx(&ctx, info);
        if (ret >= 0)
-               do_add(&ctx, fdt, fdt_key_name);
+               ret = do_add(&ctx, fdt, fdt_key_name);
 
        free_ctx(&ctx);
        return ret;
index a95a3d2748adf2b93194f95e474d1bb7768d4afd..3e7b7982890bc95e20eb130cd6ce722ebb82c381 100644 (file)
@@ -703,5 +703,8 @@ err_get_pub_key:
        if (info->engine_id)
                rsa_engine_remove(e);
 
-       return ret;
+       if (ret)
+               return ret;
+
+       return node;
 }
index f13a94413646f2ffee4c7100ec1d8fb9f476c7cd..89520915aff33c37e55b8303232c6543a267973f 100644 (file)
@@ -267,7 +267,7 @@ static int fit_image_process_sig(const char *keydir, const char *keyfile,
         */
        if (keydest) {
                ret = info.crypto->add_verify_data(&info, keydest);
-               if (ret) {
+               if (ret < 0) {
                        printf("Failed to add verification data for '%s' signature node in '%s' image node\n",
                               node_name, image_name);
                        return ret;
@@ -1037,11 +1037,10 @@ static int fit_config_process_sig(const char *keydir, const char *keyfile,
        /* Write the public key into the supplied FDT file */
        if (keydest) {
                ret = info.crypto->add_verify_data(&info, keydest);
-               if (ret) {
+               if (ret < 0) {
                        printf("Failed to add verification data for '%s' signature node in '%s' configuration node\n",
                               node_name, conf_name);
                }
-               return ret;
        }
 
        return 0;