All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandru Gagniuc <mr.nuke.me@gmail.com>
To: u-boot@lists.denx.de
Subject: [PATCH 11/18] image: Add support for placing crypto_algo in linker lists
Date: Mon, 17 May 2021 11:38:33 -0500	[thread overview]
Message-ID: <20210517163840.839097-12-mr.nuke.me@gmail.com> (raw)
In-Reply-To: <20210517163840.839097-1-mr.nuke.me@gmail.com>

The purpose of this change is to enable crypto algorithms to be placed
in linker lists, rather than be declared as a static array. The goal
is to remove the crypto_algos array in a subsequent patch.

Create a new linker list named "cryptos", and search it when
image_get_crypto_algo() is invoked.

NOTE that adding support for manual relocation of crypto_algos within
linker lists is beyond the scope of this patch.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
 common/image-sig.c | 9 +++++++++
 include/image.h    | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/common/image-sig.c b/common/image-sig.c
index 5e2d171975..81a3b739fe 100644
--- a/common/image-sig.c
+++ b/common/image-sig.c
@@ -107,6 +107,7 @@ struct checksum_algo *image_get_checksum_algo(const char *full_name)
 
 struct crypto_algo *image_get_crypto_algo(const char *full_name)
 {
+	struct crypto_algo *crypto, *end;
 	int i;
 	const char *name;
 
@@ -133,6 +134,14 @@ struct crypto_algo *image_get_crypto_algo(const char *full_name)
 			return &crypto_algos[i];
 	}
 
+	crypto = ll_entry_start(struct crypto_algo, cryptos);
+	end = ll_entry_end(struct crypto_algo, cryptos);
+	for (; crypto < end; crypto++) {
+		if (!strcmp(crypto->name, name))
+			return crypto;
+	}
+
+	/* Not found */
 	return NULL;
 }
 
diff --git a/include/image.h b/include/image.h
index dbb24993f1..f7f8f8a029 100644
--- a/include/image.h
+++ b/include/image.h
@@ -47,6 +47,7 @@ struct fdt_region;
 #include <lmb.h>
 #include <asm/u-boot.h>
 #include <command.h>
+#include <linker_lists.h>
 
 /* Take notice of the 'ignore' property for hashes */
 #define IMAGE_ENABLE_IGNORE	1
@@ -1328,6 +1329,10 @@ struct crypto_algo {
 		      uint8_t *sig, uint sig_len);
 };
 
+/* Declare a new U-Boot crypto algorithm handler */
+#define U_BOOT_CRYPTO_ALGO(__name)						\
+ll_entry_declare(struct crypto_algo, __name, cryptos)
+
 struct padding_algo {
 	const char *name;
 	int (*verify)(struct image_sign_info *info,
-- 
2.31.1

  parent reply	other threads:[~2021-05-17 16:38 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-17 16:38 [PATCH 00/18] image: Reduce #ifdef abuse in image code Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 01/18] image: Shorten FIT_ENABLE_SHAxxx_SUPPORT Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 02/18] image: Rename SPL_SHAxxx_SUPPORT to SPL_FIT_SHAxxx Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 03/18] image: Rename CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 04/18] Kconfig: Rename SPL_CRC32_SUPPORT to SPL_CRC32 Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 05/18] Kconfig: Rename SPL_MD5_SUPPORT to SPL_MD5 Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 06/18] image: Drop IMAGE_ENABLE_SHA1 Alexandru Gagniuc
2021-05-19 16:36   ` Simon Glass
2021-05-19 17:44     ` Alex G
2021-05-19 21:55       ` Simon Glass
2021-05-20  2:41         ` Alex G.
2021-05-20 17:52           ` Simon Glass
2021-05-20 23:13             ` Alex G.
2021-05-20 23:17               ` Simon Glass
2021-05-21  0:07                 ` Alex G.
2021-05-21 19:39                   ` Simon Glass
2021-05-24 19:59                     ` Alex G.
2021-06-22 13:31                       ` Simon Glass
2021-05-17 16:38 ` [PATCH 07/18] image: Drop IMAGE_ENABLE_SHAxxx Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 08/18] image: Drop IMAGE_ENABLE_BEST_MATCH Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 09/18] common: Move host-only logic in image-sig.c to separate file Alexandru Gagniuc
2021-05-17 19:47   ` Alex G.
2021-05-19 16:36     ` Simon Glass
2021-05-17 16:38 ` [PATCH 10/18] common: image-sig.c: Remove host-specific logic and #ifdefs Alexandru Gagniuc
2021-05-17 16:38 ` Alexandru Gagniuc [this message]
2021-05-17 16:38 ` [PATCH 12/18] image: rsa: Move verification algorithm to a linker list Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 13/18] image: image-sig.c: Remove crypto_algos array Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 14/18] lib: ecdsa: Remove #ifdefs from ecdsa.h Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 15/18] lib: rsa: Remove #ifdefs from rsa.h Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 16/18] image: Eliminate IMAGE_ENABLE_VERIFY macro Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 17/18] image: Eliminate IMAGE_ENABLE_VERIFY_ECDSA macro Alexandru Gagniuc
2021-05-17 16:38 ` [PATCH 18/18] [UNTESTED] image: Add support for relocating crypto_algos in linker lists Alexandru Gagniuc

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210517163840.839097-12-mr.nuke.me@gmail.com \
    --to=mr.nuke.me@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.