1 /*
2 * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10 #include <stdio.h>
11 #include <openssl/opensslconf.h>
12
13 #include <string.h>
14 #include <openssl/evp.h>
15 #include <openssl/ssl.h>
16 #include <openssl/tls1.h>
17 #include "testutil.h"
18
19 static int expect_failure = 0;
20
test_func(void)21 static int test_func(void)
22 {
23 int ret = 0;
24 SSL_CTX *ctx;
25
26 ctx = SSL_CTX_new(TLS_method());
27 if (expect_failure) {
28 if (!TEST_ptr_null(ctx))
29 goto err;
30 } else {
31 if (!TEST_ptr(ctx))
32 return 0;
33 if (!TEST_int_eq(SSL_CTX_get_min_proto_version(ctx), TLS1_2_VERSION)
34 && !TEST_int_eq(SSL_CTX_get_max_proto_version(ctx), TLS1_2_VERSION)) {
35 TEST_info("min/max version setting incorrect");
36 goto err;
37 }
38 }
39 ret = 1;
40 err:
41 SSL_CTX_free(ctx);
42 return ret;
43 }
44
global_init(void)45 int global_init(void)
46 {
47 if (!OPENSSL_init_ssl(OPENSSL_INIT_ENGINE_ALL_BUILTIN
48 | OPENSSL_INIT_LOAD_CONFIG,
49 NULL))
50 return 0;
51 return 1;
52 }
53
54 typedef enum OPTION_choice {
55 OPT_ERR = -1,
56 OPT_EOF = 0,
57 OPT_FAIL,
58 OPT_TEST_ENUM
59 } OPTION_CHOICE;
60
test_get_options(void)61 const OPTIONS *test_get_options(void)
62 {
63 static const OPTIONS test_options[] = {
64 OPT_TEST_OPTIONS_DEFAULT_USAGE,
65 { "f", OPT_FAIL, '-', "A failure is expected" },
66 { NULL }
67 };
68 return test_options;
69 }
70
setup_tests(void)71 int setup_tests(void)
72 {
73 OPTION_CHOICE o;
74
75 while ((o = opt_next()) != OPT_EOF) {
76 switch (o) {
77 case OPT_FAIL:
78 expect_failure = 1;
79 break;
80 case OPT_TEST_CASES:
81 break;
82 default:
83 return 0;
84 }
85 }
86
87 ADD_TEST(test_func);
88 return 1;
89 }
90