Botan 3.3.0
Crypto and TLS for C&
dyn_load.h
Go to the documentation of this file.
1/*
2* Dynamically Loaded Object
3* (C) 2010 Jack Lloyd
4*
5* Botan is released under the Simplified BSD License (see license.txt)
6*/
7
8#ifndef BOTAN_DYNAMIC_LOADER_H_
9#define BOTAN_DYNAMIC_LOADER_H_
10
11#include <botan/types.h>
12#include <string>
13
14namespace Botan {
15
16/**
17* Represents a DLL or shared object
18*/
20 public:
21 /**
22 * Load a DLL (or fail with an exception)
23 * @param lib_name name or path to a library
24 *
25 * If you don't use a full path, the search order will be defined
26 * by whatever the system linker does by default. Always using fully
27 * qualified pathnames can help prevent code injection attacks (eg
28 * via manipulation of LD_LIBRARY_PATH on Linux)
29 */
30 Dynamically_Loaded_Library(std::string_view lib_name);
31
32 /**
33 * Unload the DLL
34 * @warning Any pointers returned by resolve()/resolve_symbol()
35 * should not be used after this destructor runs.
36 */
38
39 /**
40 * Load a symbol (or fail with an exception)
41 * @param symbol names the symbol to load
42 * @return address of the loaded symbol
43 */
44 void* resolve_symbol(const std::string& symbol);
45
46 /**
47 * Convenience function for casting symbol to the right type
48 * @param symbol names the symbol to load
49 * @return address of the loaded symbol
50 */
51 template <typename T>
52 T resolve(const std::string& symbol) {
53 return reinterpret_cast<T>(resolve_symbol(symbol));
54 }
55
56 private:
59
60 std::string m_lib_name;
61 void* m_lib;
62};
63
64} // namespace Botan
65
66#endif
T resolve(const std::string &symbol)
Definition dyn_load.h:52
int(* final)(unsigned char *, CTX *)
#define BOTAN_TEST_API
Definition compiler.h:51
FE_25519 T
Definition ge.cpp:34