There's no downside to always build the digest verification code in PBL and export pbl_barebox_verify to access it. This allows board code to use the function for verifying other firmware blobs and CONFIG_PBL_VERIFY_PIGGY=y will remain to enable the verification at barebox proper extraction time. Code not using it will have the function sections garbage collected by the linker, so no functional change. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- v1 -> v2: - no change --- crypto/Makefile | 3 +-- include/pbl.h | 3 +++ pbl/decomp.c | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/crypto/Makefile b/crypto/Makefile index 762d7e543be4..22035d4f69ee 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -10,8 +10,7 @@ obj-$(CONFIG_DIGEST_MD5_GENERIC) += md5.o obj-$(CONFIG_DIGEST_SHA1_GENERIC) += sha1.o obj-$(CONFIG_DIGEST_SHA224_GENERIC) += sha2.o obj-$(CONFIG_DIGEST_SHA256_GENERIC) += sha2.o -pbl-$(CONFIG_PBL_VERIFY_PIGGY) += sha2.o -pbl-$(CONFIG_PBL_VERIFY_PIGGY) += digest.o +pbl-y += sha2.o digest.o obj-$(CONFIG_DIGEST_SHA384_GENERIC) += sha4.o obj-$(CONFIG_DIGEST_SHA512_GENERIC) += sha4.o obj-y += memneq.o diff --git a/include/pbl.h b/include/pbl.h index 0dc23c72dcf5..7dc4fa309257 100644 --- a/include/pbl.h +++ b/include/pbl.h @@ -30,4 +30,7 @@ const void * fdt_device_get_match_data(const void *fdt, const char *nodepath, const struct fdt_device_id ids[]); +int pbl_barebox_verify(const void *compressed_start, unsigned int len, + const void *hash, unsigned int hash_len); + #endif /* __PBL_H__ */ diff --git a/pbl/decomp.c b/pbl/decomp.c index 1e0ef81ada00..553895bac5e8 100644 --- a/pbl/decomp.c +++ b/pbl/decomp.c @@ -54,14 +54,14 @@ static void noinline errorfn(char *error) extern unsigned char sha_sum[]; extern unsigned char sha_sum_end[]; -static int pbl_barebox_verify(void *compressed_start, unsigned int len, void *hash, - unsigned int hash_len) +int pbl_barebox_verify(const void *compressed_start, unsigned int len, + const void *hash, unsigned int hash_len) { struct sha256_state sha_state = { 0 }; struct digest d = { .ctx = &sha_state }; char computed_hash[SHA256_DIGEST_SIZE]; int i; - char *char_hash = hash; + const char *char_hash = hash; if (hash_len != SHA256_DIGEST_SIZE) return -1; -- 2.30.2