image: Rename CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT
[platform/kernel/u-boot.git] / include / image.h
index 138c83d..b242007 100644 (file)
@@ -30,10 +30,10 @@ struct fdt_region;
 #define IMAGE_ENABLE_FIT       1
 #define IMAGE_ENABLE_OF_LIBFDT 1
 #define CONFIG_FIT_VERBOSE     1 /* enable fit_format_{error,warning}() */
-#define CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT 1
-#define CONFIG_FIT_ENABLE_SHA256_SUPPORT
-#define CONFIG_FIT_ENABLE_SHA384_SUPPORT
-#define CONFIG_FIT_ENABLE_SHA512_SUPPORT
+#define CONFIG_FIT_RSASSA_PSS 1
+#define CONFIG_FIT_SHA256
+#define CONFIG_FIT_SHA384
+#define CONFIG_FIT_SHA512
 #define CONFIG_SHA1
 #define CONFIG_SHA256
 #define CONFIG_SHA384
@@ -68,7 +68,7 @@ struct fdt_region;
 #  ifdef CONFIG_SPL_MD5_SUPPORT
 #   define IMAGE_ENABLE_MD5    1
 #  endif
-#  ifdef CONFIG_SPL_SHA1_SUPPORT
+#  ifdef CONFIG_SPL_FIT_SHA1
 #   define IMAGE_ENABLE_SHA1   1
 #  endif
 # else
@@ -89,22 +89,22 @@ struct fdt_region;
 #define IMAGE_ENABLE_SHA1      0
 #endif
 
-#if defined(CONFIG_FIT_ENABLE_SHA256_SUPPORT) || \
-       defined(CONFIG_SPL_SHA256_SUPPORT)
+#if defined(CONFIG_FIT_SHA256) || \
+       defined(CONFIG_SPL_FIT_SHA256)
 #define IMAGE_ENABLE_SHA256    1
 #else
 #define IMAGE_ENABLE_SHA256    0
 #endif
 
-#if defined(CONFIG_FIT_ENABLE_SHA384_SUPPORT) || \
-       defined(CONFIG_SPL_SHA384_SUPPORT)
+#if defined(CONFIG_FIT_SHA384) || \
+       defined(CONFIG_SPL_FIT_SHA384)
 #define IMAGE_ENABLE_SHA384    1
 #else
 #define IMAGE_ENABLE_SHA384    0
 #endif
 
-#if defined(CONFIG_FIT_ENABLE_SHA512_SUPPORT) || \
-       defined(CONFIG_SPL_SHA512_SUPPORT)
+#if defined(CONFIG_FIT_SHA512) || \
+       defined(CONFIG_SPL_FIT_SHA512)
 #define IMAGE_ENABLE_SHA512    1
 #else
 #define IMAGE_ENABLE_SHA512    0
@@ -434,7 +434,7 @@ typedef struct bootm_headers {
 #define        BOOTM_STATE_OS_GO       (0x00000400)
        int             state;
 
-#ifdef CONFIG_LMB
+#if defined(CONFIG_LMB) && !defined(USE_HOSTCC)
        struct lmb      lmb;            /* for memory mgmt */
 #endif
 } bootm_headers_t;
@@ -886,6 +886,11 @@ static inline int image_check_type(const image_header_t *hdr, uint8_t type)
 }
 static inline int image_check_arch(const image_header_t *hdr, uint8_t arch)
 {
+#ifndef USE_HOSTCC
+       /* Let's assume that sandbox can load any architecture */
+       if (IS_ENABLED(CONFIG_SANDBOX))
+               return true;
+#endif
        return (image_get_arch(hdr) == arch) ||
                (image_get_arch(hdr) == IH_ARCH_ARM && arch == IH_ARCH_ARM64);
 }
@@ -1131,9 +1136,10 @@ int fit_cipher_data(const char *keydir, void *keydest, void *fit,
  *     0, on success
  *     libfdt error code, on failure
  */
-int fit_add_verification_data(const char *keydir, void *keydest, void *fit,
-                             const char *comment, int require_keys,
-                             const char *engine_id, const char *cmdname);
+int fit_add_verification_data(const char *keydir, const char *keyfile,
+                             void *keydest, void *fit, const char *comment,
+                             int require_keys, const char *engine_id,
+                             const char *cmdname);
 
 int fit_image_verify_with_data(const void *fit, int image_noffset,
                               const void *data, size_t size);
@@ -1158,7 +1164,7 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp);
  * @fit: pointer to the FIT format image header
  * @return 0 if OK, -ENOEXEC if not an FDT file, -EINVAL if the full FDT check
  *     failed (e.g. due to bad structure), -ENOMSG if the description is
- *     missing, -ENODATA if the timestamp is missing, -ENOENT if the /images
+ *     missing, -EBADMSG if the timestamp is missing, -ENOENT if the /images
  *     path is missing
  */
 int fit_check_format(const void *fit, ulong size);
@@ -1219,16 +1225,19 @@ int calculate_hash(const void *data, int data_len, const char *algo,
 # if defined(CONFIG_FIT_SIGNATURE)
 #  define IMAGE_ENABLE_SIGN    1
 #  define IMAGE_ENABLE_VERIFY  1
+#  define IMAGE_ENABLE_VERIFY_ECDSA    1
 #  define FIT_IMAGE_ENABLE_VERIFY      1
 #  include <openssl/evp.h>
 # else
 #  define IMAGE_ENABLE_SIGN    0
 #  define IMAGE_ENABLE_VERIFY  0
+# define IMAGE_ENABLE_VERIFY_ECDSA     0
 #  define FIT_IMAGE_ENABLE_VERIFY      0
 # endif
 #else
 # define IMAGE_ENABLE_SIGN     0
 # define IMAGE_ENABLE_VERIFY           CONFIG_IS_ENABLED(RSA_VERIFY)
+# define IMAGE_ENABLE_VERIFY_ECDSA     0
 # define FIT_IMAGE_ENABLE_VERIFY       CONFIG_IS_ENABLED(FIT_SIGNATURE)
 #endif
 
@@ -1248,10 +1257,17 @@ void image_set_host_blob(void *host_blob);
 #endif
 #endif /* IMAGE_ENABLE_FIT */
 
-/* Information passed to the signing routines */
+/*
+ * Information passed to the signing routines
+ *
+ * Either 'keydir',  'keyname', or 'keyfile' can be NULL. However, either
+ * 'keyfile', or both 'keydir' and 'keyname' should have valid values. If
+ * neither are valid, some operations might fail with EINVAL.
+ */
 struct image_sign_info {
        const char *keydir;             /* Directory conaining keys */
        const char *keyname;            /* Name of key to use */
+       const char *keyfile;            /* Filename of private or public key */
        void *fit;                      /* Pointer to FIT blob */
        int node_offset;                /* Offset of signature node */
        const char *name;               /* Algorithm name */
@@ -1278,7 +1294,7 @@ struct image_region {
 };
 
 #if IMAGE_ENABLE_VERIFY
-# include <u-boot/rsa-checksum.h>
+# include <u-boot/hash-checksum.h>
 #endif
 struct checksum_algo {
        const char *name;
@@ -1565,11 +1581,14 @@ int board_fit_config_name_match(const char *name);
  * into the FIT creation (i.e. the binary blobs would have been pre-processed
  * before being added to the FIT image).
  *
+ * @fit: pointer to fit image
+ * @node: offset of image node
  * @image: pointer to the image start pointer
  * @size: pointer to the image size
  * @return no return value (failure should be handled internally)
  */
-void board_fit_image_post_process(void **p_image, size_t *p_size);
+void board_fit_image_post_process(const void *fit, int node, void **p_image,
+                                 size_t *p_size);
 
 #define FDT_ERROR      ((ulong)(-1))