]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/image-sig.c
tpm: Drop two unused options
[karo-tx-uboot.git] / common / image-sig.c
index 973b06d505f174177c3ea634af38b86c4eddb6d5..eda5e1353ab0add00db84fd00a53590ac28238cc 100644 (file)
 DECLARE_GLOBAL_DATA_PTR;
 #endif /* !USE_HOSTCC*/
 #include <image.h>
-#include <rsa.h>
+#include <u-boot/rsa.h>
+#include <u-boot/rsa-checksum.h>
 
 #define IMAGE_MAX_HASHED_NODES         100
 
+#ifdef USE_HOSTCC
+void *host_blob;
+void image_set_host_blob(void *blob)
+{
+       host_blob = blob;
+}
+void *image_get_host_blob(void)
+{
+       return host_blob;
+}
+#endif
+
+struct checksum_algo checksum_algos[] = {
+       {
+               "sha1",
+               SHA1_SUM_LEN,
+               RSA2048_BYTES,
+#if IMAGE_ENABLE_SIGN
+               EVP_sha1,
+#endif
+               hash_calculate,
+               padding_sha1_rsa2048,
+       },
+       {
+               "sha256",
+               SHA256_SUM_LEN,
+               RSA2048_BYTES,
+#if IMAGE_ENABLE_SIGN
+               EVP_sha256,
+#endif
+               hash_calculate,
+               padding_sha256_rsa2048,
+       },
+       {
+               "sha256",
+               SHA256_SUM_LEN,
+               RSA4096_BYTES,
+#if IMAGE_ENABLE_SIGN
+               EVP_sha256,
+#endif
+               hash_calculate,
+               padding_sha256_rsa4096,
+       }
+
+};
+
 struct image_sig_algo image_sig_algos[] = {
        {
                "sha1,rsa2048",
                rsa_sign,
                rsa_add_verify_data,
                rsa_verify,
+               &checksum_algos[0],
+       },
+       {
+               "sha256,rsa2048",
+               rsa_sign,
+               rsa_add_verify_data,
+               rsa_verify,
+               &checksum_algos[1],
+       },
+       {
+               "sha256,rsa4096",
+               rsa_sign,
+               rsa_add_verify_data,
+               rsa_verify,
+               &checksum_algos[2],
        }
+
 };
 
 struct image_sig_algo *image_get_sig_algo(const char *name)
@@ -149,9 +212,7 @@ static int fit_image_verify_sig(const void *fit, int image_noffset,
        int ret;
 
        /* Process all hash subnodes of the component image node */
-       for (noffset = fdt_first_subnode(fit, image_noffset);
-            noffset >= 0;
-            noffset = fdt_next_subnode(fit, noffset)) {
+       fdt_for_each_subnode(fit, noffset, image_noffset) {
                const char *name = fit_get_name(fit, noffset, NULL);
 
                if (!strncmp(name, FIT_SIG_NODENAME,
@@ -199,9 +260,7 @@ int fit_image_verify_required_sigs(const void *fit, int image_noffset,
                return 0;
        }
 
-       for (noffset = fdt_first_subnode(sig_blob, sig_node);
-            noffset >= 0;
-            noffset = fdt_next_subnode(sig_blob, noffset)) {
+       fdt_for_each_subnode(sig_blob, noffset, sig_node) {
                const char *required;
                int ret;
 
@@ -334,9 +393,7 @@ static int fit_config_verify_sig(const void *fit, int conf_noffset,
        int ret;
 
        /* Process all hash subnodes of the component conf node */
-       for (noffset = fdt_first_subnode(fit, conf_noffset);
-            noffset >= 0;
-            noffset = fdt_next_subnode(fit, noffset)) {
+       fdt_for_each_subnode(fit, noffset, conf_noffset) {
                const char *name = fit_get_name(fit, noffset, NULL);
 
                if (!strncmp(name, FIT_SIG_NODENAME,
@@ -381,9 +438,7 @@ int fit_config_verify_required_sigs(const void *fit, int conf_noffset,
                return 0;
        }
 
-       for (noffset = fdt_first_subnode(sig_blob, sig_node);
-            noffset >= 0;
-            noffset = fdt_next_subnode(sig_blob, noffset)) {
+       fdt_for_each_subnode(sig_blob, noffset, sig_node) {
                const char *required;
                int ret;
 
@@ -404,6 +459,6 @@ int fit_config_verify_required_sigs(const void *fit, int conf_noffset,
 
 int fit_config_verify(const void *fit, int conf_noffset)
 {
-       return !fit_config_verify_required_sigs(fit, conf_noffset,
-                                               gd_fdt_blob());
+       return fit_config_verify_required_sigs(fit, conf_noffset,
+                                              gd_fdt_blob());
 }