diff options
author | Andrew Duda | 2016-11-08 18:53:41 +0000 |
---|---|---|
committer | Tom Rini | 2016-11-21 14:07:31 -0500 |
commit | 0c1d74fda7c0063eeca4d8d9fa8674e6ec2ef685 (patch) | |
tree | 44482dc837d5bbd88006520062b443d43ab28fdb /common/image-sig.c | |
parent | da29f2991d75fc8aa3289407a0e686a4a22f8c9e (diff) |
image: Add crypto_algo struct for RSA info
Cut down on the repetition of algorithm information by defining separate
checksum and crypto structs. image_sig_algos are now simply pairs of
unique checksum and crypto algos.
Signed-off-by: Andrew Duda <aduda@meraki.com>
Signed-off-by: aduda <aduda@meraki.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/image-sig.c')
-rw-r--r-- | common/image-sig.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/common/image-sig.c b/common/image-sig.c index 008d2c56d1d..8b4314de09d 100644 --- a/common/image-sig.c +++ b/common/image-sig.c @@ -36,7 +36,6 @@ struct checksum_algo checksum_algos[] = { SHA1_SUM_LEN, SHA1_DER_LEN, sha1_der_prefix, - RSA2048_BYTES, #if IMAGE_ENABLE_SIGN EVP_sha1, #endif @@ -47,22 +46,28 @@ struct checksum_algo checksum_algos[] = { SHA256_SUM_LEN, SHA256_DER_LEN, sha256_der_prefix, - RSA2048_BYTES, #if IMAGE_ENABLE_SIGN EVP_sha256, #endif hash_calculate, + } + +}; + +struct crypto_algo crypto_algos[] = { + { + "rsa2048", + RSA2048_BYTES, + rsa_sign, + rsa_add_verify_data, + rsa_verify, }, { - "sha256", - SHA256_SUM_LEN, - SHA256_DER_LEN, - sha256_der_prefix, + "rsa4096", RSA4096_BYTES, -#if IMAGE_ENABLE_SIGN - EVP_sha256, -#endif - hash_calculate, + rsa_sign, + rsa_add_verify_data, + rsa_verify, } }; @@ -70,24 +75,18 @@ struct checksum_algo checksum_algos[] = { struct image_sig_algo image_sig_algos[] = { { "sha1,rsa2048", - rsa_sign, - rsa_add_verify_data, - rsa_verify, + &crypto_algos[0], &checksum_algos[0], }, { "sha256,rsa2048", - rsa_sign, - rsa_add_verify_data, - rsa_verify, + &crypto_algos[0], &checksum_algos[1], }, { "sha256,rsa4096", - rsa_sign, - rsa_add_verify_data, - rsa_verify, - &checksum_algos[2], + &crypto_algos[1], + &checksum_algos[1], } }; @@ -197,7 +196,8 @@ int fit_image_check_sig(const void *fit, int noffset, const void *data, region.data = data; region.size = size; - if (info.algo->verify(&info, ®ion, 1, fit_value, fit_value_len)) { + if (info.algo->crypto->verify(&info, ®ion, 1, fit_value, + fit_value_len)) { *err_msgp = "Verification failed"; return -1; } @@ -378,8 +378,8 @@ int fit_config_check_sig(const void *fit, int noffset, int required_keynode, struct image_region region[count]; fit_region_make_list(fit, fdt_regions, count, region); - if (info.algo->verify(&info, region, count, fit_value, - fit_value_len)) { + if (info.algo->crypto->verify(&info, region, count, fit_value, + fit_value_len)) { *err_msgp = "Verification failed"; return -1; } |