projects
/
platform
/
kernel
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.denx.de/u-boot-nand-flash
[platform/kernel/u-boot.git]
/
common
/
image-sig.c
diff --git
a/common/image-sig.c
b/common/image-sig.c
index
8b6f49b
..
eda5e13
100644
(file)
--- a/
common/image-sig.c
+++ b/
common/image-sig.c
@@
-13,15
+13,20
@@
DECLARE_GLOBAL_DATA_PTR;
#endif /* !USE_HOSTCC*/
#include <image.h>
DECLARE_GLOBAL_DATA_PTR;
#endif /* !USE_HOSTCC*/
#include <image.h>
-#include <rsa.h>
-#include <rsa-checksum.h>
+#include <
u-boot/
rsa.h>
+#include <
u-boot/
rsa-checksum.h>
#define IMAGE_MAX_HASHED_NODES 100
#ifdef USE_HOSTCC
#define IMAGE_MAX_HASHED_NODES 100
#ifdef USE_HOSTCC
-__attribute__((weak)) void *get_blob(void)
+void *host_blob;
+void image_set_host_blob(void *blob)
{
{
- return NULL;
+ host_blob = blob;
+}
+void *image_get_host_blob(void)
+{
+ return host_blob;
}
#endif
}
#endif
@@
-29,24
+34,36
@@
struct checksum_algo checksum_algos[] = {
{
"sha1",
SHA1_SUM_LEN,
{
"sha1",
SHA1_SUM_LEN,
+ RSA2048_BYTES,
#if IMAGE_ENABLE_SIGN
EVP_sha1,
#if IMAGE_ENABLE_SIGN
EVP_sha1,
-#else
- sha1_calculate,
- padding_sha1_rsa2048,
#endif
#endif
+ hash_calculate,
+ padding_sha1_rsa2048,
},
{
"sha256",
SHA256_SUM_LEN,
},
{
"sha256",
SHA256_SUM_LEN,
+ RSA2048_BYTES,
#if IMAGE_ENABLE_SIGN
EVP_sha256,
#if IMAGE_ENABLE_SIGN
EVP_sha256,
-#e
lse
-
sha256
_calculate,
+#e
ndif
+
hash
_calculate,
padding_sha256_rsa2048,
padding_sha256_rsa2048,
+ },
+ {
+ "sha256",
+ SHA256_SUM_LEN,
+ RSA4096_BYTES,
+#if IMAGE_ENABLE_SIGN
+ EVP_sha256,
#endif
#endif
+ hash_calculate,
+ padding_sha256_rsa4096,
}
}
+
};
};
+
struct image_sig_algo image_sig_algos[] = {
{
"sha1,rsa2048",
struct image_sig_algo image_sig_algos[] = {
{
"sha1,rsa2048",
@@
-61,7
+78,15
@@
struct image_sig_algo image_sig_algos[] = {
rsa_add_verify_data,
rsa_verify,
&checksum_algos[1],
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)
};
struct image_sig_algo *image_get_sig_algo(const char *name)
@@
-187,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 */
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,
const char *name = fit_get_name(fit, noffset, NULL);
if (!strncmp(name, FIT_SIG_NODENAME,
@@
-237,9
+260,7
@@
int fit_image_verify_required_sigs(const void *fit, int image_noffset,
return 0;
}
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;
const char *required;
int ret;
@@
-372,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 */
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,
const char *name = fit_get_name(fit, noffset, NULL);
if (!strncmp(name, FIT_SIG_NODENAME,
@@
-419,9
+438,7
@@
int fit_config_verify_required_sigs(const void *fit, int conf_noffset,
return 0;
}
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;
const char *required;
int ret;
@@
-442,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)
{
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());
}
}