aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2017-07-25 17:48:26 +0100
committerDr. Stephen Henson <steve@openssl.org>2017-07-29 23:04:09 +0100
commit48ed9c23b052d3fed465967eb4193a7c87d0a24d (patch)
treebd1b4eb1c03d873e6b86c25df553c6a7a9351761 /test
parent8bf2d93057a8b2a9f3851b3b42065c84d1202fa9 (diff)
downloadopenssl-48ed9c23b052d3fed465967eb4193a7c87d0a24d.zip
openssl-48ed9c23b052d3fed465967eb4193a7c87d0a24d.tar.gz
openssl-48ed9c23b052d3fed465967eb4193a7c87d0a24d.tar.bz2
Add public key method enumeration function.
Add functions to enumerate public key methods. Add test to ensure table is in the correct order. Reviewed-by: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/4015)
Diffstat (limited to 'test')
-rw-r--r--test/pkey_meth_test.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/test/pkey_meth_test.c b/test/pkey_meth_test.c
index 5e6a7d4..ea77790 100644
--- a/test/pkey_meth_test.c
+++ b/test/pkey_meth_test.c
@@ -15,13 +15,8 @@
#include <openssl/evp.h>
#include "testutil.h"
-/**********************************************************************
- *
- * Test of EVP_PKEY_ASN1 method ordering
- *
- ***/
-
-static int test_asn1_meths()
+/* Test of EVP_PKEY_ASN1_METHOD ordering */
+static int test_asn1_meths(void)
{
int i;
int prev = -1;
@@ -52,8 +47,37 @@ static int test_asn1_meths()
return good;
}
+/* Test of EVP_PKEY_METHOD ordering */
+static int test_pkey_meths()
+{
+ size_t i;
+ int prev = -1;
+ int good = 1;
+ int pkey_id;
+ const EVP_PKEY_METHOD *pmeth;
+
+ for (i = 0; i < EVP_PKEY_meth_get_count(); i++) {
+ pmeth = EVP_PKEY_meth_get0(i);
+ EVP_PKEY_meth_get0_info(&pkey_id, NULL, pmeth);
+ if (pkey_id < prev)
+ good = 0;
+ prev = pkey_id;
+
+ }
+ if (!good) {
+ TEST_error("EVP_PKEY_METHOD table out of order");
+ for (i = 0; i < EVP_PKEY_meth_get_count(); i++) {
+ pmeth = EVP_PKEY_meth_get0(i);
+ EVP_PKEY_meth_get0_info(&pkey_id, NULL, pmeth);
+ TEST_note("%d : %s", pkey_id, OBJ_nid2ln(pkey_id));
+ }
+ }
+ return good;
+}
+
int setup_tests()
{
ADD_TEST(test_asn1_meths);
+ ADD_TEST(test_pkey_meths);
return 1;
}