E-MailRelay
gssl_use_both.cpp
Go to the documentation of this file.
1//
2// Copyright (C) 2001-2024 Graeme Walker <graeme_walker@users.sourceforge.net>
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <http://www.gnu.org/licenses/>.
16// ===
17///
18/// \file gssl_use_both.cpp
19///
20
21#include "gdef.h"
22#include "gssl.h"
23#include "gssl_openssl.h"
24#include "gssl_mbedtls.h"
25#include "gtest.h"
26
27std::unique_ptr<GSsl::LibraryImpBase> GSsl::Library::newLibraryImp( G::StringArray & library_config , Library::LogFn log_fn , bool verbose )
28{
29 if( LibraryImpBase::consume(library_config,"mbedtls") || G::Test::enabled("ssl-use-mbedtls") )
30 {
31 return std::make_unique<MbedTls::LibraryImp>( library_config , log_fn , verbose ) ;
32 }
33 else
34 {
35 LibraryImpBase::consume( library_config , "openssl" ) ;
36 return std::make_unique<OpenSSL::LibraryImp>( library_config , log_fn , verbose ) ;
37 }
38}
39
40std::string GSsl::Library::credit( const std::string & prefix , const std::string & eol , const std::string & eot )
41{
42 return
43 OpenSSL::LibraryImp::credit( prefix , eol , eol ) +
44 MbedTls::LibraryImp::credit( prefix , eol , eot ) ;
45}
46
47std::string GSsl::Library::ids()
48{
49 return OpenSSL::LibraryImp::sid() + ", " + MbedTls::LibraryImp::sid() ;
50}
51
static bool consume(G::StringArray &list, std::string_view item)
A convenience function that removes the item from the list and returns true iff is was removed.
Definition: gssl.cpp:255
static std::string credit(const std::string &prefix, const std::string &eol, const std::string &eot)
Returns a multi-line library credit for all available TLS libraries.
Definition: gssl_none.cpp:85
static std::string ids()
Returns a concatenation of all available TLS library names and versions.
Definition: gssl_none.cpp:90
static bool enabled() noexcept
Returns true if test features are enabled.
Definition: gtest.cpp:79
An interface to an underlying TLS library.
std::vector< std::string > StringArray
A std::vector of std::strings.
Definition: gstringarray.h:30