| /* |
| * Copyright 2016-2024 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 |
| */ |
| |
| #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" |
| |
| static int expect_failure = 0; |
| |
| static int test_func(void) |
| { |
| int ret = 0; |
| SSL_CTX *ctx; |
| |
| 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; |
| } |
| } |
| ret = 1; |
| err: |
| SSL_CTX_free(ctx); |
| return ret; |
| } |
| |
| int global_init(void) |
| { |
| if (!OPENSSL_init_ssl(OPENSSL_INIT_LOAD_CONFIG, NULL)) |
| return 0; |
| return 1; |
| } |
| |
| 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; |
| } |
| |
| int setup_tests(void) |
| { |
| 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; |
| } |
| } |
| |
| ADD_TEST(test_func); |
| return 1; |
| } |