Commit 0980164b authored by Alexandru Gagniuc's avatar Alexandru Gagniuc Committed by Tom Rini
Browse files

image: Add support for placing crypto_algo in linker lists



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: default avatarAlexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Simon Glass's avatarSimon Glass <sjg@chromium.org>
parent cab22c88
......@@ -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;
}
......
......@@ -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,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment