Botan 2.13.0 Crypto and TLS for C++11

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

openssl.h
Go to the documentation of this file.
1 /*
2 * Utils for calling OpenSSL
3 * (C) 2015,2016 Jack Lloyd
4 *
5 * Botan is released under the Simplified BSD License (see license.txt)
6 */
7
8 #ifndef BOTAN_INTERNAL_OPENSSL_H_
9 #define BOTAN_INTERNAL_OPENSSL_H_
10
11 #include <botan/pk_ops_fwd.h>
12 #include <botan/secmem.h>
13 #include <botan/exceptn.h>
14 #include <memory>
15 #include <string>
16
17 #include <openssl/err.h>
18 #include <openssl/evp.h>
19
20 #if defined(BOTAN_HAS_RC4)
21 #include <openssl/rc4.h>
22 #endif
23
24 namespace Botan {
25
26 class BlockCipher;
27 class Cipher_Mode;
28 class StreamCipher;
29 class HashFunction;
30 class RandomNumberGenerator;
31 enum Cipher_Dir : int;
32
33 class BOTAN_PUBLIC_API(2,0) OpenSSL_Error final : public Exception
34 {
35 public:
36 OpenSSL_Error(const std::string& what, int err) :
37 Exception(what + " failed: " + ERR_error_string(err, nullptr)),
38 m_err(err) {}
39
40 ErrorType error_type() const noexcept override { return ErrorType::OpenSSLError; }
41
42 int error_code() const noexcept override { return m_err; }
43
44 private:
45 int m_err;
46 };
47
48 /* Block Ciphers */
49
50 std::unique_ptr<BlockCipher>
51 make_openssl_block_cipher(const std::string& name);
52
53 /* Cipher Modes */
54
55 Cipher_Mode*
56 make_openssl_cipher_mode(const std::string& name, Cipher_Dir direction);
57
58 /* Hash */
59
60 std::unique_ptr<HashFunction>
61 make_openssl_hash(const std::string& name);
62
63 /* RSA */
64
65 #if defined(BOTAN_HAS_RSA)
66
67 class RSA_PublicKey;
68 class RSA_PrivateKey;
69
70 std::unique_ptr<PK_Ops::Encryption>
71 make_openssl_rsa_enc_op(const RSA_PublicKey& key, const std::string& params);
72 std::unique_ptr<PK_Ops::Decryption>
73 make_openssl_rsa_dec_op(const RSA_PrivateKey& key, const std::string& params);
74
75 std::unique_ptr<PK_Ops::Verification>
76 make_openssl_rsa_ver_op(const RSA_PublicKey& key, const std::string& params);
77 std::unique_ptr<PK_Ops::Signature>
78 make_openssl_rsa_sig_op(const RSA_PrivateKey& key, const std::string& params);
79 std::unique_ptr<RSA_PrivateKey>
80 make_openssl_rsa_private_key(RandomNumberGenerator& rng, size_t rsa_bits);
81
82 #endif
83
84 /* ECDSA */
85
86 #if defined(BOTAN_HAS_ECDSA)
87
88 class ECDSA_PublicKey;
89 class ECDSA_PrivateKey;
90
91 std::unique_ptr<PK_Ops::Verification>
92 make_openssl_ecdsa_ver_op(const ECDSA_PublicKey& key, const std::string& params);
93 std::unique_ptr<PK_Ops::Signature>
94 make_openssl_ecdsa_sig_op(const ECDSA_PrivateKey& key, const std::string& params);
95
96 #endif
97
98 /* ECDH */
99
100 #if defined(BOTAN_HAS_ECDH)
101
102 class ECDH_PrivateKey;
103
104 std::unique_ptr<PK_Ops::Key_Agreement>
105 make_openssl_ecdh_ka_op(const ECDH_PrivateKey& key, const std::string& params);
106
107 #endif
108
109 #if defined(BOTAN_HAS_RC4)
110
111 std::unique_ptr<StreamCipher>
112 make_openssl_rc4(size_t skip);
113
114 #endif
115
116 }
117
118 #endif
Botan::Exception
Definition: exceptn.h:85
final
int(* final)(unsigned char *, CTX *)
Definition: commoncrypto_hash.cpp:28
BOTAN_PUBLIC_API
#define BOTAN_PUBLIC_API(maj, min)
Definition: compiler.h:31
Botan::OpenSSL_Error::error_type
ErrorType error_type() const noexceptoverride
Definition: openssl.h:40
Botan::make_openssl_cipher_mode
Cipher_Mode * make_openssl_cipher_mode(const std::string &name, Cipher_Dir direction)
Definition: openssl_mode.cpp:215
name
std::string name
Definition: commoncrypto_hash.cpp:23
Botan::make_openssl_hash
std::unique_ptr< HashFunction > make_openssl_hash(const std::string &name)
Definition: openssl_hash.cpp:104
Botan::ErrorType
ErrorType
Definition: exceptn.h:20
Botan
Definition: alg_id.cpp:13
Botan::OpenSSL_Error
Definition: openssl.h:33
Botan::OpenSSL_Error::error_code
int error_code() const noexceptoverride
Definition: openssl.h:42
Botan::Cipher_Dir
Cipher_Dir
Definition: cipher_mode.h:23
Botan::ErrorType::OpenSSLError
Botan::make_openssl_block_cipher
std::unique_ptr< BlockCipher > make_openssl_block_cipher(const std::string &name)
Definition: openssl_block.cpp:200
Botan::OpenSSL_Error::OpenSSL_Error
OpenSSL_Error(const std::string &what, int err)
Definition: openssl.h:36