Browse Source

Merge branch '2021-09-14-assorted-fixes'

- Assorted bugfixes
Tom Rini 2 years ago
parent
commit
c6eac9122f
6 changed files with 29 additions and 21 deletions
  1. 6 17
      common/image-sig.c
  2. 1 1
      drivers/pinctrl/Kconfig
  3. 4 0
      include/image.h
  4. 2 2
      lib/Kconfig
  5. 1 1
      lib/rsa/rsa-sign.c
  6. 15 0
      lib/rsa/rsa-verify.c

+ 6 - 17
common/image-sig.c

@@ -51,19 +51,6 @@ struct checksum_algo checksum_algos[] = {
 
 
 };
 };
 
 
-struct padding_algo padding_algos[] = {
-	{
-		.name = "pkcs-1.5",
-		.verify = padding_pkcs_15_verify,
-	},
-#ifdef CONFIG_FIT_RSASSA_PSS
-	{
-		.name = "pss",
-		.verify = padding_pss_verify,
-	}
-#endif /* CONFIG_FIT_RSASSA_PSS */
-};
-
 struct checksum_algo *image_get_checksum_algo(const char *full_name)
 struct checksum_algo *image_get_checksum_algo(const char *full_name)
 {
 {
 	int i;
 	int i;
@@ -129,14 +116,16 @@ struct crypto_algo *image_get_crypto_algo(const char *full_name)
 
 
 struct padding_algo *image_get_padding_algo(const char *name)
 struct padding_algo *image_get_padding_algo(const char *name)
 {
 {
-	int i;
+	struct padding_algo *padding, *end;
 
 
 	if (!name)
 	if (!name)
 		return NULL;
 		return NULL;
 
 
-	for (i = 0; i < ARRAY_SIZE(padding_algos); i++) {
-		if (!strcmp(padding_algos[i].name, name))
-			return &padding_algos[i];
+	padding = ll_entry_start(struct padding_algo, paddings);
+	end = ll_entry_end(struct padding_algo, paddings);
+	for (; padding < end; padding++) {
+		if (!strcmp(padding->name, name))
+			return padding;
 	}
 	}
 
 
 	return NULL;
 	return NULL;

+ 1 - 1
drivers/pinctrl/Kconfig

@@ -69,7 +69,7 @@ config PINCONF_RECURSIVE
 	  direct children of the pin controller device (may be grandchildren for
 	  direct children of the pin controller device (may be grandchildren for
 	  example). It is define is each individual pin controller device.
 	  example). It is define is each individual pin controller device.
 	  Say Y here if you want to keep this behavior with the pinconfig
 	  Say Y here if you want to keep this behavior with the pinconfig
-	  u-class: all sub are recursivelly bounded.
+	  u-class: all sub are recursively bounded.
 	  If the option is disabled, this behavior is deactivated and only
 	  If the option is disabled, this behavior is deactivated and only
 	  the direct children of pin controller will be assumed as pin
 	  the direct children of pin controller will be assumed as pin
 	  configuration; you can save memory footprint when this feature is
 	  configuration; you can save memory footprint when this feature is

+ 4 - 0
include/image.h

@@ -1312,6 +1312,10 @@ struct padding_algo {
 		      const uint8_t *hash, int hash_len);
 		      const uint8_t *hash, int hash_len);
 };
 };
 
 
+/* Declare a new U-Boot padding algorithm handler */
+#define U_BOOT_PADDING_ALGO(__name)						\
+ll_entry_declare(struct padding_algo, __name, paddings)
+
 /**
 /**
  * image_get_checksum_algo() - Look up a checksum algorithm
  * image_get_checksum_algo() - Look up a checksum algorithm
  *
  *

+ 2 - 2
lib/Kconfig

@@ -474,7 +474,7 @@ config LZMA
 config LZO
 config LZO
 	bool "Enable LZO decompression support"
 	bool "Enable LZO decompression support"
 	help
 	help
-	  This enables support for LZO compression algorithm.r
+	  This enables support for the LZO compression algorithm.
 
 
 config GZIP
 config GZIP
 	bool "Enable gzip decompression support"
 	bool "Enable gzip decompression support"
@@ -533,7 +533,7 @@ config SPL_GZIP
 	bool "Enable gzip decompression support for SPL build"
 	bool "Enable gzip decompression support for SPL build"
 	select SPL_ZLIB
 	select SPL_ZLIB
 	help
 	help
-	  This enables support for GZIP compression altorithm for SPL boot.
+	  This enables support for the GZIP compression algorithm for SPL boot.
 
 
 config SPL_ZLIB
 config SPL_ZLIB
 	bool
 	bool

+ 1 - 1
lib/rsa/rsa-sign.c

@@ -269,7 +269,7 @@ static int rsa_engine_get_priv_key(const char *keydir, const char *name,
 			snprintf(key_id, sizeof(key_id),
 			snprintf(key_id, sizeof(key_id),
 				 "%s%s",
 				 "%s%s",
 				 keydir, name);
 				 keydir, name);
-		else if (keydir)
+		else if (name)
 			snprintf(key_id, sizeof(key_id),
 			snprintf(key_id, sizeof(key_id),
 				 "%s",
 				 "%s",
 				 name);
 				 name);

+ 15 - 0
lib/rsa/rsa-verify.c

@@ -95,6 +95,13 @@ int padding_pkcs_15_verify(struct image_sign_info *info,
 	return 0;
 	return 0;
 }
 }
 
 
+#ifndef USE_HOSTCC
+U_BOOT_PADDING_ALGO(pkcs_15) = {
+	.name = "pkcs-1.5",
+	.verify = padding_pkcs_15_verify,
+};
+#endif
+
 #ifdef CONFIG_FIT_RSASSA_PSS
 #ifdef CONFIG_FIT_RSASSA_PSS
 static void u32_i2osp(uint32_t val, uint8_t *buf)
 static void u32_i2osp(uint32_t val, uint8_t *buf)
 {
 {
@@ -296,6 +303,14 @@ out:
 
 
 	return ret;
 	return ret;
 }
 }
+
+#ifndef USE_HOSTCC
+U_BOOT_PADDING_ALGO(pss) = {
+	.name = "pss",
+	.verify = padding_pss_verify,
+};
+#endif
+
 #endif
 #endif
 
 
 #if CONFIG_IS_ENABLED(FIT_SIGNATURE) || CONFIG_IS_ENABLED(RSA_VERIFY_WITH_PKEY)
 #if CONFIG_IS_ENABLED(FIT_SIGNATURE) || CONFIG_IS_ENABLED(RSA_VERIFY_WITH_PKEY)