lib: ecdsa: Add ECDSA384 support
Add ECDSA384 algorithm support for image signing and verification. Signed-off-by: Chia-Wei Wang <chiawei_wang@aspeedtech.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -65,6 +65,7 @@ int ecdsa_verify(struct image_sign_info *info,
|
|||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
#define ECDSA256_BYTES (256 / 8)
|
#define ECDSA256_BYTES (256 / 8)
|
||||||
|
#define ECDSA384_BYTES (384 / 8)
|
||||||
#define ECDSA521_BYTES ((521 + 7) / 8)
|
#define ECDSA521_BYTES ((521 + 7) / 8)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -22,8 +22,10 @@ static int ecdsa_key_size(const char *curve_name)
|
|||||||
{
|
{
|
||||||
if (!strcmp(curve_name, "prime256v1"))
|
if (!strcmp(curve_name, "prime256v1"))
|
||||||
return 256;
|
return 256;
|
||||||
else
|
else if (!strcmp(curve_name, "secp384r1"))
|
||||||
return 0;
|
return 384;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fdt_get_key(struct ecdsa_public_key *key, const void *fdt, int node)
|
static int fdt_get_key(struct ecdsa_public_key *key, const void *fdt, int node)
|
||||||
@@ -121,12 +123,18 @@ int ecdsa_verify(struct image_sign_info *info,
|
|||||||
return ecdsa_verify_hash(dev, info, hash, sig, sig_len);
|
return ecdsa_verify_hash(dev, info, hash, sig, sig_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
U_BOOT_CRYPTO_ALGO(ecdsa) = {
|
U_BOOT_CRYPTO_ALGO(ecdsa256) = {
|
||||||
.name = "ecdsa256",
|
.name = "ecdsa256",
|
||||||
.key_len = ECDSA256_BYTES,
|
.key_len = ECDSA256_BYTES,
|
||||||
.verify = ecdsa_verify,
|
.verify = ecdsa_verify,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
U_BOOT_CRYPTO_ALGO(ecdsa384) = {
|
||||||
|
.name = "ecdsa384",
|
||||||
|
.key_len = ECDSA384_BYTES,
|
||||||
|
.verify = ecdsa_verify,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* uclass definition for ECDSA API
|
* uclass definition for ECDSA API
|
||||||
*
|
*
|
||||||
|
@@ -76,6 +76,13 @@ struct crypto_algo crypto_algos[] = {
|
|||||||
.add_verify_data = ecdsa_add_verify_data,
|
.add_verify_data = ecdsa_add_verify_data,
|
||||||
.verify = ecdsa_verify,
|
.verify = ecdsa_verify,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = "ecdsa384",
|
||||||
|
.key_len = ECDSA384_BYTES,
|
||||||
|
.sign = ecdsa_sign,
|
||||||
|
.add_verify_data = ecdsa_add_verify_data,
|
||||||
|
.verify = ecdsa_verify,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "secp521r1",
|
.name = "secp521r1",
|
||||||
.key_len = ECDSA521_BYTES,
|
.key_len = ECDSA521_BYTES,
|
||||||
|
Reference in New Issue
Block a user