diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2017-07-25 17:48:26 +0100 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2017-07-29 23:04:09 +0100 |
commit | 48ed9c23b052d3fed465967eb4193a7c87d0a24d (patch) | |
tree | bd1b4eb1c03d873e6b86c25df553c6a7a9351761 /test | |
parent | 8bf2d93057a8b2a9f3851b3b42065c84d1202fa9 (diff) | |
download | openssl-48ed9c23b052d3fed465967eb4193a7c87d0a24d.tar.gz |
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.c | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/test/pkey_meth_test.c b/test/pkey_meth_test.c index 5e6a7d4257..ea77790a03 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; } |