| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2024-09-05 15:35:49 +08:00
										 |  |  |  * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2018-12-06 20:05:25 +08:00
										 |  |  |  * Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  |  * 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
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <stdio.h>
 | 
					
						
							|  |  |  | #include <openssl/opensslconf.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <string.h>
 | 
					
						
							|  |  |  | #include <openssl/evp.h>
 | 
					
						
							|  |  |  | #include <openssl/ssl.h>
 | 
					
						
							|  |  |  | #include <openssl/tls1.h>
 | 
					
						
							|  |  |  | #include "testutil.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 17:45:24 +08:00
										 |  |  | static int expect_failure = 0; | 
					
						
							| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | static int test_func(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2024-05-13 17:45:24 +08:00
										 |  |  |     int ret = 0; | 
					
						
							| 
									
										
										
										
											2024-04-26 23:23:13 +08:00
										 |  |  |     SSL_CTX *ctx; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 17:45:24 +08:00
										 |  |  |     ctx = SSL_CTX_new(TLS_method()); | 
					
						
							|  |  |  |     if (expect_failure) { | 
					
						
							|  |  |  |         if (!TEST_ptr_null(ctx)) | 
					
						
							|  |  |  |             goto err; | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         if (!TEST_ptr(ctx)) | 
					
						
							|  |  |  |             return 0; | 
					
						
							|  |  |  |         if (!TEST_int_eq(SSL_CTX_get_min_proto_version(ctx), TLS1_2_VERSION) | 
					
						
							|  |  |  |             && !TEST_int_eq(SSL_CTX_get_max_proto_version(ctx), TLS1_2_VERSION)) { | 
					
						
							|  |  |  |             TEST_info("min/max version setting incorrect"); | 
					
						
							|  |  |  |             goto err; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-05-13 17:45:24 +08:00
										 |  |  |     ret = 1; | 
					
						
							|  |  |  |  err: | 
					
						
							| 
									
										
										
										
											2024-04-26 23:23:13 +08:00
										 |  |  |     SSL_CTX_free(ctx); | 
					
						
							|  |  |  |     return ret; | 
					
						
							| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int global_init(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (!OPENSSL_init_ssl(OPENSSL_INIT_ENGINE_ALL_BUILTIN | 
					
						
							|  |  |  |                           | OPENSSL_INIT_LOAD_CONFIG, NULL)) | 
					
						
							|  |  |  |         return 0; | 
					
						
							|  |  |  |     return 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-13 17:45:24 +08:00
										 |  |  | typedef enum OPTION_choice { | 
					
						
							|  |  |  |     OPT_ERR = -1, | 
					
						
							|  |  |  |     OPT_EOF = 0, | 
					
						
							|  |  |  |     OPT_FAIL, | 
					
						
							|  |  |  |     OPT_TEST_ENUM | 
					
						
							|  |  |  | } OPTION_CHOICE; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const OPTIONS *test_get_options(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     static const OPTIONS test_options[] = { | 
					
						
							|  |  |  |         OPT_TEST_OPTIONS_DEFAULT_USAGE, | 
					
						
							|  |  |  |         { "f", OPT_FAIL, '-', "A failure is expected" }, | 
					
						
							|  |  |  |         { NULL } | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     return test_options; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  | int setup_tests(void) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2024-05-13 17:45:24 +08:00
										 |  |  |     OPTION_CHOICE o; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     while ((o = opt_next()) != OPT_EOF) { | 
					
						
							|  |  |  |         switch (o) { | 
					
						
							|  |  |  |         case OPT_FAIL: | 
					
						
							|  |  |  |             expect_failure = 1; | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         case OPT_TEST_CASES: | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         default: | 
					
						
							|  |  |  |             return 0; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-19 22:01:39 +08:00
										 |  |  |     ADD_TEST(test_func); | 
					
						
							|  |  |  |     return 1; | 
					
						
							|  |  |  | } |