mirror of https://github.com/openssl/openssl.git
				
				
				
			
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved.
 | |
|  *
 | |
|  * Licensed under the Apache License 2.0 (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 */
 | |
| 
 | |
| /*
 | |
|  * Because of *asn1_*
 | |
|  */
 | |
| #define OPENSSL_SUPPRESS_DEPRECATED
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <string.h>
 | |
| 
 | |
| #include <openssl/evp.h>
 | |
| #include "testutil.h"
 | |
| 
 | |
| #ifndef OPENSSL_NO_DEPRECATED_3_6
 | |
| /* Test of EVP_PKEY_ASN1_METHOD ordering */
 | |
| static int test_asn1_meths(void)
 | |
| {
 | |
|     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) {
 | |
|         TEST_error("EVP_PKEY_ASN1_METHOD table out of order");
 | |
|         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>";
 | |
|             TEST_note("%d : %s : %s", pkey_id, OBJ_nid2ln(pkey_id), info);
 | |
|         }
 | |
|     }
 | |
|     return good;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #ifndef OPENSSL_NO_DEPRECATED_3_0
 | |
| /* Test of EVP_PKEY_METHOD ordering */
 | |
| static int test_pkey_meths(void)
 | |
| {
 | |
|     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;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| int setup_tests(void)
 | |
| {
 | |
| #ifndef OPENSSL_NO_DEPRECATED_3_6
 | |
|     ADD_TEST(test_asn1_meths);
 | |
| #endif
 | |
| #ifndef OPENSSL_NO_DEPRECATED_3_0
 | |
|     ADD_TEST(test_pkey_meths);
 | |
| #endif
 | |
|     return 1;
 | |
| }
 |