Blame test/pkey_meth_test.c

Packit Service 084de1
/*
Packit Service 084de1
 * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
 *
Packit Service 084de1
 * Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
 * this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
 * in the file LICENSE in the source distribution or at
Packit Service 084de1
 * https://www.openssl.org/source/license.html
Packit Service 084de1
 */
Packit Service 084de1
Packit Service 084de1
/* Internal tests for EVP_PKEY method ordering */
Packit Service 084de1
Packit Service 084de1
#include <stdio.h>
Packit Service 084de1
#include <string.h>
Packit Service 084de1
Packit Service 084de1
#include <openssl/evp.h>
Packit Service 084de1
#include "testutil.h"
Packit Service 084de1
Packit Service 084de1
/* Test of EVP_PKEY_ASN1_METHOD ordering */
Packit Service 084de1
static int test_asn1_meths(void)
Packit Service 084de1
{
Packit Service 084de1
    int i;
Packit Service 084de1
    int prev = -1;
Packit Service 084de1
    int good = 1;
Packit Service 084de1
    int pkey_id;
Packit Service 084de1
    const EVP_PKEY_ASN1_METHOD *ameth;
Packit Service 084de1
Packit Service 084de1
    for (i = 0; i < EVP_PKEY_asn1_get_count(); i++) {
Packit Service 084de1
        ameth = EVP_PKEY_asn1_get0(i);
Packit Service 084de1
        EVP_PKEY_asn1_get0_info(&pkey_id, NULL, NULL, NULL, NULL, ameth);
Packit Service 084de1
        if (pkey_id < prev)
Packit Service 084de1
            good = 0;
Packit Service 084de1
        prev = pkey_id;
Packit Service 084de1
Packit Service 084de1
    }
Packit Service 084de1
    if (!good) {
Packit Service 084de1
        TEST_error("EVP_PKEY_ASN1_METHOD table out of order");
Packit Service 084de1
        for (i = 0; i < EVP_PKEY_asn1_get_count(); i++) {
Packit Service 084de1
            const char *info;
Packit Service 084de1
Packit Service 084de1
            ameth = EVP_PKEY_asn1_get0(i);
Packit Service 084de1
            EVP_PKEY_asn1_get0_info(&pkey_id, NULL, NULL, &info, NULL, ameth);
Packit Service 084de1
            if (info == NULL)
Packit Service 084de1
                info = "<NO NAME>";
Packit Service 084de1
            TEST_note("%d : %s : %s", pkey_id, OBJ_nid2ln(pkey_id), info);
Packit Service 084de1
        }
Packit Service 084de1
    }
Packit Service 084de1
    return good;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
/* Test of EVP_PKEY_METHOD ordering */
Packit Service 084de1
static int test_pkey_meths(void)
Packit Service 084de1
{
Packit Service 084de1
    size_t i;
Packit Service 084de1
    int prev = -1;
Packit Service 084de1
    int good = 1;
Packit Service 084de1
    int pkey_id;
Packit Service 084de1
    const EVP_PKEY_METHOD *pmeth;
Packit Service 084de1
Packit Service 084de1
    for (i = 0; i < EVP_PKEY_meth_get_count(); i++) {
Packit Service 084de1
        pmeth = EVP_PKEY_meth_get0(i);
Packit Service 084de1
        EVP_PKEY_meth_get0_info(&pkey_id, NULL, pmeth);
Packit Service 084de1
        if (pkey_id < prev)
Packit Service 084de1
            good = 0;
Packit Service 084de1
        prev = pkey_id;
Packit Service 084de1
Packit Service 084de1
    }
Packit Service 084de1
    if (!good) {
Packit Service 084de1
        TEST_error("EVP_PKEY_METHOD table out of order");
Packit Service 084de1
        for (i = 0; i < EVP_PKEY_meth_get_count(); i++) {
Packit Service 084de1
            pmeth = EVP_PKEY_meth_get0(i);
Packit Service 084de1
            EVP_PKEY_meth_get0_info(&pkey_id, NULL, pmeth);
Packit Service 084de1
            TEST_note("%d : %s", pkey_id, OBJ_nid2ln(pkey_id));
Packit Service 084de1
        }
Packit Service 084de1
    }
Packit Service 084de1
    return good;
Packit Service 084de1
}
Packit Service 084de1
Packit Service 084de1
int setup_tests(void)
Packit Service 084de1
{
Packit Service 084de1
    ADD_TEST(test_asn1_meths);
Packit Service 084de1
    ADD_TEST(test_pkey_meths);
Packit Service 084de1
    return 1;
Packit Service 084de1
}