diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2016-11-19 21:52:34 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2016-11-20 00:22:02 +0000 |
commit | 52fe14e6628781f78ebe5468200e6c895c9bb47c (patch) | |
tree | 1f1a2dd570b1f8befd27336154e4666c9929422e /test/pkey_meth_test.c | |
parent | 7524c520173c2dcf75c50d9748d2aa62e163d58a (diff) | |
download | openssl-52fe14e6628781f78ebe5468200e6c895c9bb47c.tar.gz |
Add test to check EVP_PKEY method ordering.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'test/pkey_meth_test.c')
-rw-r--r-- | test/pkey_meth_test.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/pkey_meth_test.c b/test/pkey_meth_test.c new file mode 100644 index 0000000000..c76a54f0fb --- /dev/null +++ b/test/pkey_meth_test.c @@ -0,0 +1,63 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* Internal tests for EVP_PKEY method ordering */ + +#include <stdio.h> +#include <string.h> + +#include <openssl/evp.h> +#include "testutil.h" +#include "test_main.h" + +/********************************************************************** + * + * Test of EVP_PKEY_ASN1 method ordering + * + ***/ + +static int test_asn1_meths() +{ + int i; + int prev = -1; + int good = 1; + int pkey_id; + const EVP_PKEY_ASN1_METHOD *ameth; + + for (i = 0; i < EVP_PKEY_asn1_get_count(); i++) { + ameth = EVP_PKEY_asn1_get0(i); + EVP_PKEY_asn1_get0_info(&pkey_id, NULL, NULL, NULL, NULL, ameth); + if (pkey_id < prev) + good = 0; + prev = pkey_id; + + } + if (!good) { + fprintf(stderr, "EVP_PKEY_ASN1_METHOD table out of order!\n"); + for (i = 0; i < EVP_PKEY_asn1_get_count(); i++) { + const char *info; + + ameth = EVP_PKEY_asn1_get0(i); + EVP_PKEY_asn1_get0_info(&pkey_id, NULL, NULL, &info, NULL, ameth); + if (info == NULL) + info = "<NO NAME>"; + fprintf(stderr, "%d : %s : %s\n", pkey_id, OBJ_nid2ln(pkey_id), + info); + } + } else { + fprintf(stderr, "Order OK\n"); + } + + return good; +} + +void register_tests() +{ + ADD_TEST(test_asn1_meths); +} |