summaryrefslogtreecommitdiff
path: root/zen/open_ssl.h
diff options
context:
space:
mode:
authorB Stack <bgstack15@gmail.com>2019-07-15 10:48:05 -0400
committerB Stack <bgstack15@gmail.com>2019-07-15 10:48:05 -0400
commitb16e10f6abbec3d6a44f735ceb57ab2ba6f097c6 (patch)
tree784c8392abe55b38ae84bb645134afdfde6f825e /zen/open_ssl.h
parentadd upstream 10.14 (diff)
downloadFreeFileSync-b16e10f6abbec3d6a44f735ceb57ab2ba6f097c6.tar.gz
FreeFileSync-b16e10f6abbec3d6a44f735ceb57ab2ba6f097c6.tar.bz2
FreeFileSync-b16e10f6abbec3d6a44f735ceb57ab2ba6f097c6.zip
add zen/open_ssl.cpp from upstream
Upstream added this file which was a hard dependency that should be bundled. See https://freefilesync.org/forum/viewtopic.php?t=6486.
Diffstat (limited to 'zen/open_ssl.h')
-rw-r--r--zen/open_ssl.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/zen/open_ssl.h b/zen/open_ssl.h
new file mode 100644
index 00000000..5bf4e9ce
--- /dev/null
+++ b/zen/open_ssl.h
@@ -0,0 +1,49 @@
+// *****************************************************************************
+// * This file is part of the FreeFileSync project. It is distributed under *
+// * GNU General Public License: https://www.gnu.org/licenses/gpl-3.0 *
+// * Copyright (C) Zenju (zenju AT freefilesync DOT org) - All Rights Reserved *
+// *****************************************************************************
+
+#ifndef OPEN_SSL_H_801974580936508934568792347506
+#define OPEN_SSL_H_801974580936508934568792347506
+
+#include <zen/zstring.h>
+#include <zen/sys_error.h>
+
+
+namespace zen //init OpenSSL before use!
+{
+enum class RsaStreamType
+{
+ pkix, //base-64-encoded SubjectPublicKeyInfo structure ("BEGIN PUBLIC KEY")
+ pkcs1, //base-64-encoded RSA number and exponent ("BEGIN RSA PUBLIC KEY")
+ pkcs1_raw
+};
+
+//verify signatures produced with: "openssl dgst -sha256 -sign private.pem -out file.sig file.txt"
+void verifySignature(const std::string& message,
+ const std::string& signature,
+ const std::string& publicKeyStream,
+ RsaStreamType streamType); //throw SysError
+
+std::string convertRsaKey(const std::string& keyStream, RsaStreamType typeFrom, RsaStreamType typeTo, bool publicKey); //throw SysError
+
+
+class TlsContext
+{
+public:
+ TlsContext(int socket, //throw SysError
+ const Zstring& server,
+ const Zstring* caCertFilePath /*optional: enable certificate validation*/);
+ ~TlsContext();
+
+ size_t tryRead( void* buffer, size_t bytesToRead ); //throw SysError; may return short, only 0 means EOF!
+ size_t tryWrite(const void* buffer, size_t bytesToWrite); //throw SysError; may return short! CONTRACT: bytesToWrite > 0
+
+private:
+ class Impl;
+ const std::unique_ptr<Impl> pimpl_;
+};
+}
+
+#endif //OPEN_SSL_H_801974580936508934568792347506
bgstack15