mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
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: Alexandru Gagniuc <mr.nuke.me@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
cab22c8890
commit
0980164b13
2 changed files with 14 additions and 0 deletions
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue