|
- //
- // ssl/context_base.hpp
- // ~~~~~~~~~~~~~~~~~~~~
- //
- // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- //
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- //
-
- #ifndef ASIO_SSL_CONTEXT_BASE_HPP
- #define ASIO_SSL_CONTEXT_BASE_HPP
-
- #if defined(_MSC_VER) && (_MSC_VER >= 1200)
- # pragma once
- #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
- #include "asio/detail/config.hpp"
- #include "asio/ssl/detail/openssl_types.hpp"
-
- #include "asio/detail/push_options.hpp"
-
- namespace asio {
- namespace ssl {
-
- /// The context_base class is used as a base for the basic_context class
- /// template so that we have a common place to define various enums.
- class context_base
- {
- public:
- /// Different methods supported by a context.
- enum method
- {
- /// Generic SSL version 2.
- sslv2,
-
- /// SSL version 2 client.
- sslv2_client,
-
- /// SSL version 2 server.
- sslv2_server,
-
- /// Generic SSL version 3.
- sslv3,
-
- /// SSL version 3 client.
- sslv3_client,
-
- /// SSL version 3 server.
- sslv3_server,
-
- /// Generic TLS version 1.
- tlsv1,
-
- /// TLS version 1 client.
- tlsv1_client,
-
- /// TLS version 1 server.
- tlsv1_server,
-
- /// Generic SSL/TLS.
- sslv23,
-
- /// SSL/TLS client.
- sslv23_client,
-
- /// SSL/TLS server.
- sslv23_server,
-
- /// Generic TLS version 1.1.
- tlsv11,
-
- /// TLS version 1.1 client.
- tlsv11_client,
-
- /// TLS version 1.1 server.
- tlsv11_server,
-
- /// Generic TLS version 1.2.
- tlsv12,
-
- /// TLS version 1.2 client.
- tlsv12_client,
-
- /// TLS version 1.2 server.
- tlsv12_server
- };
-
- /// Bitmask type for SSL options.
- typedef long options;
-
- #if defined(GENERATING_DOCUMENTATION)
- /// Implement various bug workarounds.
- static const long default_workarounds = implementation_defined;
-
- /// Always create a new key when using tmp_dh parameters.
- static const long single_dh_use = implementation_defined;
-
- /// Disable SSL v2.
- static const long no_sslv2 = implementation_defined;
-
- /// Disable SSL v3.
- static const long no_sslv3 = implementation_defined;
-
- /// Disable TLS v1.
- static const long no_tlsv1 = implementation_defined;
-
- /// Disable TLS v1.1.
- static const long no_tlsv1_1 = implementation_defined;
-
- /// Disable TLS v1.2.
- static const long no_tlsv1_2 = implementation_defined;
-
- /// Disable compression. Compression is disabled by default.
- static const long no_compression = implementation_defined;
- #else
- ASIO_STATIC_CONSTANT(long, default_workarounds = SSL_OP_ALL);
- ASIO_STATIC_CONSTANT(long, single_dh_use = SSL_OP_SINGLE_DH_USE);
- ASIO_STATIC_CONSTANT(long, no_sslv2 = SSL_OP_NO_SSLv2);
- ASIO_STATIC_CONSTANT(long, no_sslv3 = SSL_OP_NO_SSLv3);
- ASIO_STATIC_CONSTANT(long, no_tlsv1 = SSL_OP_NO_TLSv1);
- # if defined(SSL_OP_NO_TLSv1_1)
- ASIO_STATIC_CONSTANT(long, no_tlsv1_1 = SSL_OP_NO_TLSv1_1);
- # else // defined(SSL_OP_NO_TLSv1_1)
- ASIO_STATIC_CONSTANT(long, no_tlsv1_1 = 0x10000000L);
- # endif // defined(SSL_OP_NO_TLSv1_1)
- # if defined(SSL_OP_NO_TLSv1_2)
- ASIO_STATIC_CONSTANT(long, no_tlsv1_2 = SSL_OP_NO_TLSv1_2);
- # else // defined(SSL_OP_NO_TLSv1_2)
- ASIO_STATIC_CONSTANT(long, no_tlsv1_2 = 0x08000000L);
- # endif // defined(SSL_OP_NO_TLSv1_2)
- # if defined(SSL_OP_NO_COMPRESSION)
- ASIO_STATIC_CONSTANT(long, no_compression = SSL_OP_NO_COMPRESSION);
- # else // defined(SSL_OP_NO_COMPRESSION)
- ASIO_STATIC_CONSTANT(long, no_compression = 0x20000L);
- # endif // defined(SSL_OP_NO_COMPRESSION)
- #endif
-
- /// File format types.
- enum file_format
- {
- /// ASN.1 file.
- asn1,
-
- /// PEM file.
- pem
- };
-
- #if !defined(GENERATING_DOCUMENTATION)
- // The following types and constants are preserved for backward compatibility.
- // New programs should use the equivalents of the same names that are defined
- // in the asio::ssl namespace.
- typedef int verify_mode;
- ASIO_STATIC_CONSTANT(int, verify_none = SSL_VERIFY_NONE);
- ASIO_STATIC_CONSTANT(int, verify_peer = SSL_VERIFY_PEER);
- ASIO_STATIC_CONSTANT(int,
- verify_fail_if_no_peer_cert = SSL_VERIFY_FAIL_IF_NO_PEER_CERT);
- ASIO_STATIC_CONSTANT(int, verify_client_once = SSL_VERIFY_CLIENT_ONCE);
- #endif
-
- /// Purpose of PEM password.
- enum password_purpose
- {
- /// The password is needed for reading/decryption.
- for_reading,
-
- /// The password is needed for writing/encryption.
- for_writing
- };
-
- protected:
- /// Protected destructor to prevent deletion through this type.
- ~context_base()
- {
- }
- };
-
- } // namespace ssl
- } // namespace asio
-
- #include "asio/detail/pop_options.hpp"
-
- #endif // ASIO_SSL_CONTEXT_BASE_HPP
|