From c399cb17141707db794b18b184afecaf5a7e4bb7 Mon Sep 17 00:00:00 2001 From: tb <> Date: Sat, 26 Oct 2024 20:50:53 +0000 Subject: {d2i,i2d}_ECParameters() also want a bit of exercising --- src/regress/lib/libcrypto/ec/ec_asn1_test.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/regress/lib/libcrypto/ec/ec_asn1_test.c b/src/regress/lib/libcrypto/ec/ec_asn1_test.c index e5813d830c..ee4f86e5cf 100644 --- a/src/regress/lib/libcrypto/ec/ec_asn1_test.c +++ b/src/regress/lib/libcrypto/ec/ec_asn1_test.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ec_asn1_test.c,v 1.17 2024/10/26 13:49:08 tb Exp $ */ +/* $OpenBSD: ec_asn1_test.c,v 1.18 2024/10/26 20:50:53 tb Exp $ */ /* * Copyright (c) 2017, 2021 Joel Sing * Copyright (c) 2024 Theo Buehler @@ -2830,6 +2830,33 @@ ec_group_check_private_key(const struct ec_private_key *key) goto err; } + /* + * Also tickle the ECParameters API a little bit. + */ + + freezero(der, der_len); + der = NULL; + + if ((der_len = i2d_ECParameters(ec_key, &der)) <= 0) { + fprintf(stderr, "FAIL: i2d_ECParameters returned %d for %s\n", + der_len, key->name); + goto err; + } + + /* Deliberately don't free ec_pub_key to see if we don't leak. */ + p = der; + if (d2i_ECParameters(&ec_pub_key, &p, der_len) == NULL) { + fprintf(stderr, "FAIL: d2i_ECParameters for %s\n", key->name); + goto err; + } + + if ((rv = EC_GROUP_cmp(EC_KEY_get0_group(ec_key), + EC_KEY_get0_group(ec_pub_key), NULL)) != 0) { + fprintf(stderr, "FAIL: EC_GROUP_cmp returned %d for %s\n", + rv, key->name); + goto err; + } + failed = 0; err: -- cgit v1.2.3-55-g6feb