hide credentials headers in credential_factory.h
[strongswan.git] / src / libstrongswan / library.h
1 /*
2 * Copyright (C) 2008 Martin Willi
3 * Hochschule fuer Technik Rapperswil
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 */
15
16 /**
17 * @defgroup libstrongswan libstrongswan
18 *
19 * @defgroup asn1 asn1
20 * @ingroup libstrongswan
21 *
22 * @defgroup credentials credentials
23 * @ingroup libstrongswan
24 *
25 * @defgroup keys keys
26 * @ingroup credentials
27 *
28 * @defgroup certificates certificates
29 * @ingroup credentials
30 *
31 * @defgroup crypto crypto
32 * @ingroup libstrongswan
33
34 * @defgroup database database
35 * @ingroup libstrongswan
36
37 * @defgroup fetcher fetcher
38 * @ingroup libstrongswan
39
40 * @defgroup fips fips
41 * @ingroup libstrongswan
42
43 * @defgroup plugins plugins
44 * @ingroup libstrongswan
45
46 * @defgroup utils utils
47 * @ingroup libstrongswan
48 */
49
50 /**
51 * @defgroup library library
52 * @{ @ingroup libstrongswan
53 */
54
55 #ifndef LIBRARY_H_
56 #define LIBRARY_H_
57
58 #include <printf_hook.h>
59 #include <utils.h>
60 #include <chunk.h>
61 #include <settings.h>
62 #include <plugins/plugin_loader.h>
63 #include <crypto/crypto_factory.h>
64 #include <fetcher/fetcher_manager.h>
65 #include <database/database_factory.h>
66 #include <credentials/credential_factory.h>
67
68 typedef struct library_t library_t;
69
70 /**
71 * Libstrongswan library context, contains library relevant globals.
72 */
73 struct library_t {
74
75 /**
76 * Printf hook registering facility
77 */
78 printf_hook_t *printf_hook;
79
80 /**
81 * crypto algorithm registry and factory
82 */
83 crypto_factory_t *crypto;
84
85 /**
86 * credential constructor registry and factory
87 */
88 credential_factory_t *creds;
89
90 /**
91 * URL fetching facility
92 */
93 fetcher_manager_t *fetcher;
94
95 /**
96 * database construction factory
97 */
98 database_factory_t *db;
99
100 /**
101 * plugin loading facility
102 */
103 plugin_loader_t *plugins;
104
105 /**
106 * various settings loaded from settings file
107 */
108 settings_t *settings;
109
110 /**
111 * is leak detective running?
112 */
113 bool leak_detective;
114 };
115
116 /**
117 * Initialize library, creates "lib" instance.
118 *
119 * @param settings file to read settings from, may be NULL for none
120 */
121 void library_init(char *settings);
122
123 /**
124 * Deinitialize library, destroys "lib" instance.
125 */
126 void library_deinit();
127
128 /**
129 * Library instance, set after between library_init() and library_deinit() calls.
130 */
131 extern library_t *lib;
132
133 #endif /** LIBRARY_H_ @}*/