aboutsummaryrefslogtreecommitdiff
path: root/libbutl/openssl.mxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2021-09-28 19:24:31 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-09-28 20:29:59 +0300
commitdf1ef68cd8e8582724ce1192bfc202e0b9aeaf0c (patch)
treeb731ca4c68e60c00c7e7d499dbf4868ee7b71f44 /libbutl/openssl.mxx
parent7a4fc37f264cdb67f2f83fa92703c869215bbc86 (diff)
Get rid of C++ modules related code and rename *.mxx files to *.hxx
Diffstat (limited to 'libbutl/openssl.mxx')
-rw-r--r--libbutl/openssl.mxx183
1 files changed, 0 insertions, 183 deletions
diff --git a/libbutl/openssl.mxx b/libbutl/openssl.mxx
deleted file mode 100644
index 6a0907e..0000000
--- a/libbutl/openssl.mxx
+++ /dev/null
@@ -1,183 +0,0 @@
-// file : libbutl/openssl.mxx -*- C++ -*-
-// license : MIT; see accompanying LICENSE file
-
-#ifndef __cpp_modules_ts
-#pragma once
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <type_traits>
-
-#include <cstddef> // size_t
-#include <utility> // move(), forward()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.openssl;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.process; //@@ MOD TODO: should we re-export?
-import butl.fdstream;
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
-
-#include <libbutl/export.hxx>
-
-LIBBUTL_MODEXPORT namespace butl
-{
- // Perform a crypto operation using the openssl(1) program. Throw
- // process_error and io_error (both derive from system_error) in case of
- // errors.
- //
- // The I (in) and O (out) can be of the following types/values:
- //
- // nullfd Signal that no input/output is expected.
- //
- // path Read input/write output from/to a file. If the special "-"
- // value is used, then instead input is connected to the
- // openssl::out ofdstream member and output -- to the
- // openssl::in ifdstream member. Note that the argument type
- // should be path, not string (i.e., pass path("-")). Also
- // note that the streams are opened in the binary mode. To
- // change that, use fdstream_mode::text instead (see below).
- //
- // fdstream_mode Only text and binary values are meaningful. Same as
- // path("-"), but also specifies the translation mode.
- //
- // other Forwarded as is to process_start(). Normally either int or
- // auto_fd.
- //
- // For example:
- //
- // openssl os (path ("key.pub.pem"), // Read key from file,
- // path ("-"), // Write result to openssl::in.
- // 2,
- // "openssl", "pkey",
- // "-pubin", "-outform", "DER");
- //
- // Typical usage:
- //
- // try
- // {
- // openssl os (nullfd, // No input expected.
- // path ("-"), // Output to openssl::in.
- // 2, // Diagnostics to stderr.
- // path ("openssl"), // Program path.
- // "rand", // Command.
- // 64); // Command options.
- //
- // vector<char> r (os.in.read_binary ());
- // os.in.close ();
- //
- // if (!os.wait ())
- // ... // openssl returned non-zero status.
- // }
- // catch (const system_error& e)
- // {
- // cerr << "openssl error: " << e << endl;
- // }
- //
- // Notes:
- //
- // 1. If opened, in stream is in the skip mode (see fdstream_mode).
- //
- // 2. If opened, in/out must be explicitly closed before calling wait().
- //
- // 3. Normally the order of options is not important (unless they override
- // each other). However, openssl 1.0.1 seems to have bugs in that
- // department (that were apparently fixed in 1.0.2). To work around these
- // bugs pass user-supplied options first.
- //
- class LIBBUTL_SYMEXPORT openssl: public process
- {
- public:
- ifdstream in;
- ofdstream out;
-
- template <typename I,
- typename O,
- typename E,
- typename... A>
- openssl (I&& in,
- O&& out,
- E&& err,
- const process_env&,
- const std::string& command,
- A&&... options);
-
- // Version with the command line callback (see process_run_callback() for
- // details).
- //
- template <typename C,
- typename I,
- typename O,
- typename E,
- typename... A>
- openssl (const C&,
- I&& in,
- O&& out,
- E&& err,
- const process_env&,
- const std::string& command,
- A&&... options);
-
- private:
- template <typename T>
- struct is_other
- {
- using type = typename std::remove_reference<
- typename std::remove_cv<T>::type>::type;
-
- static const bool value = !(std::is_same<type, nullfd_t>::value ||
- std::is_same<type, path>::value ||
- std::is_same<type, fdstream_mode>::value);
- };
-
- struct io_data
- {
- fdpipe pipe;
- small_vector<const char*, 2> options;
- };
-
- pipe
- map_in (nullfd_t, io_data&);
-
- pipe
- map_in (const path&, io_data&);
-
- pipe
- map_in (fdstream_mode, io_data&);
-
- template <typename I>
- typename std::enable_if<is_other<I>::value, I>::type
- map_in (I&&, io_data&);
-
- pipe
- map_out (nullfd_t, io_data&);
-
- pipe
- map_out (const path&, io_data&);
-
- pipe
- map_out (fdstream_mode, io_data&);
-
- template <typename O>
- typename std::enable_if<is_other<O>::value, O>::type
- map_out (O&&, io_data&);
- };
-}
-
-#include <libbutl/openssl.ixx>
-#include <libbutl/openssl.txx>