175 lines
3.5 KiB
C++

/*
* Copyright (c) 2015, 2016 Oracle and/or its affiliates. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of the
* License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#include "ngs_common/options_ssl.h"
#include "mysql/service_ssl_wrapper.h"
#include "ngs/memory.h"
#include <iterator>
using namespace ngs;
std::string Options_session_ssl::ssl_cipher()
{
char result[1024];
ssl_wrapper_cipher(m_vio, result, sizeof(result));
return result;
}
std::string Options_session_ssl::ssl_version()
{
char result[256];
ssl_wrapper_version(m_vio, result, sizeof(result));
return result;
}
std::vector<std::string> Options_session_ssl::ssl_cipher_list()
{
std::vector<std::string> result;
const size_t num_of_elements = 1024;
const char *versions[num_of_elements];
long number_of_items = ssl_wrapper_cipher_list(m_vio, versions, num_of_elements);
std::copy(versions, versions + number_of_items, std::back_inserter(result));
return result;
}
long Options_session_ssl::ssl_verify_depth()
{
return ssl_wrapper_verify_depth(m_vio);
}
long Options_session_ssl::ssl_verify_mode()
{
return ssl_wrapper_verify_mode(m_vio);
}
long Options_session_ssl::ssl_sessions_reused()
{
return 0;
}
long Options_session_ssl::ssl_get_verify_result_and_cert()
{
return ssl_wrapper_get_verify_result_and_cert(m_vio);
}
std::string Options_session_ssl::ssl_get_peer_certificate_issuer()
{
char issuer[1024];
ssl_wrapper_get_peer_certificate_issuer(m_vio, issuer, sizeof(issuer));
return issuer;
}
std::string Options_session_ssl::ssl_get_peer_certificate_subject()
{
char subject[1024];
ssl_wrapper_get_peer_certificate_subject(m_vio, subject, sizeof(subject));
return subject;
}
long Options_context_ssl::ssl_ctx_verify_depth()
{
return ssl_wrapper_ctx_verify_depth(m_vio_ssl);
}
long Options_context_ssl::ssl_ctx_verify_mode()
{
return ssl_wrapper_ctx_verify_mode(m_vio_ssl);
}
std::string Options_context_ssl::ssl_server_not_after()
{
char result[200];
ssl_wrapper_ctx_server_not_after(m_vio_ssl, result, sizeof(result));
return result;
}
std::string Options_context_ssl::ssl_server_not_before()
{
char result[200];
ssl_wrapper_ctx_server_not_before(m_vio_ssl, result, sizeof(result));
return result;
}
long Options_context_ssl::ssl_sess_accept_good()
{
return ssl_wrapper_sess_accept_good(m_vio_ssl);
}
long Options_context_ssl::ssl_sess_accept()
{
return ssl_wrapper_sess_accept(m_vio_ssl);
}
long Options_context_ssl::ssl_accept_renegotiates()
{
return 0;
}
long Options_context_ssl::ssl_session_cache_hits()
{
return 0;
}
long Options_context_ssl::ssl_session_cache_misses()
{
return 0;
}
std::string Options_context_ssl::ssl_session_cache_mode()
{
return "OFF";
}
long Options_context_ssl::ssl_session_cache_overflows()
{
return 0;
}
long Options_context_ssl::ssl_session_cache_size()
{
return 0;
}
long Options_context_ssl::ssl_session_cache_timeouts()
{
return 0;
}
long Options_context_ssl::ssl_used_session_cache_entries()
{
return 0;
}