diff options
author | B Stack <bgstack15@gmail.com> | 2019-07-15 10:48:05 -0400 |
---|---|---|
committer | B Stack <bgstack15@gmail.com> | 2019-07-15 10:48:05 -0400 |
commit | b16e10f6abbec3d6a44f735ceb57ab2ba6f097c6 (patch) | |
tree | 784c8392abe55b38ae84bb645134afdfde6f825e /zen/open_ssl.h | |
parent | add upstream 10.14 (diff) | |
download | FreeFileSync-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.h | 49 |
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 |