summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorNicola Tuveri <nic.tuv@gmail.com>2020-07-16 01:57:09 +0300
committerNicola Tuveri <nic.tuv@gmail.com>2021-08-30 16:11:36 +0300
commit3d97638062595efb23b32f9150c38d60db89de7f (patch)
tree8c80248710470d69e23b38a8dcae69e7e22096c1 /test
parentf661c76a9e27a87f4bbbed135faf89a3fccac75f (diff)
Add tests for i2d_TYPE_fp and d2i_TYPE_fp
These functions are part of the public API but we don't have tests covering their usage. They are actually implemented as macros and the absence of tests has caused them to fall out-of-sync with the latest changes to ASN1 related functions and cause compilation warnings. @@ Note: This commit limits to ECPKParameters as a type. (cherry picked from commit ea1128e94e36fa9fa25278dc6b3f5b42d8735782) Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/12457)
Diffstat (limited to 'test')
-rw-r--r--test/ec_internal_test.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/test/ec_internal_test.c b/test/ec_internal_test.c
index 5b708e201c..7ca408b3c2 100644
--- a/test/ec_internal_test.c
+++ b/test/ec_internal_test.c
@@ -283,6 +283,47 @@ static int decoded_flag_test(void)
return testresult;
}
+static
+int ecpkparams_i2d2i_test(int n)
+{
+ EC_GROUP *g1 = NULL, *g2 = NULL;
+ FILE *fp = NULL;
+ int nid = curves[n].nid;
+ int testresult = 0;
+
+ /* create group */
+ if (!TEST_ptr(g1 = EC_GROUP_new_by_curve_name(nid)))
+ goto end;
+
+ /* encode params to file */
+ if (!TEST_ptr(fp = fopen("params.der", "wb"))
+ || !TEST_true(i2d_ECPKParameters_fp(fp, g1)))
+ goto end;
+
+ /* flush and close file */
+ if (!TEST_int_eq(fclose(fp), 0)) {
+ fp = NULL;
+ goto end;
+ }
+ fp = NULL;
+
+ /* decode params from file */
+ if (!TEST_ptr(fp = fopen("params.der", "rb"))
+ || !TEST_ptr(g2 = d2i_ECPKParameters_fp(fp, NULL)))
+ goto end;
+
+ testresult = 1; /* PASS */
+
+end:
+ if (fp != NULL)
+ fclose(fp);
+
+ EC_GROUP_free(g1);
+ EC_GROUP_free(g2);
+
+ return testresult;
+}
+
int setup_tests(void)
{
crv_len = EC_get_builtin_curves(NULL, 0);
@@ -297,6 +338,8 @@ int setup_tests(void)
#endif
ADD_ALL_TESTS(field_tests_default, crv_len);
ADD_TEST(decoded_flag_test);
+ ADD_ALL_TESTS(ecpkparams_i2d2i_test, crv_len);
+
return 1;
}