removed obsolete INTEGRITY_TEST and fips signer code
[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 plugins plugins
41 * @ingroup libstrongswan
42 *
43 * @defgroup utils utils
44 * @ingroup libstrongswan
45 */
46
47 /**
48 * @defgroup library library
49 * @{ @ingroup libstrongswan
50 */
51
52 #ifndef LIBRARY_H_
53 #define LIBRARY_H_
54
55 #include <printf_hook.h>
56 #include <utils.h>
57 #include <chunk.h>
58 #include <settings.h>
59 #include <integrity_checker.h>
60 #include <plugins/plugin_loader.h>
61 #include <crypto/crypto_factory.h>
62 #include <fetcher/fetcher_manager.h>
63 #include <database/database_factory.h>
64 #include <credentials/credential_factory.h>
65
66 typedef struct library_t library_t;
67
68 /**
69 * Libstrongswan library context, contains library relevant globals.
70 */
71 struct library_t {
72
73 /**
74 * Printf hook registering facility
75 */
76 printf_hook_t *printf_hook;
77
78 /**
79 * crypto algorithm registry and factory
80 */
81 crypto_factory_t *crypto;
82
83 /**
84 * credential constructor registry and factory
85 */
86 credential_factory_t *creds;
87
88 /**
89 * URL fetching facility
90 */
91 fetcher_manager_t *fetcher;
92
93 /**
94 * database construction factory
95 */
96 database_factory_t *db;
97
98 /**
99 * plugin loading facility
100 */
101 plugin_loader_t *plugins;
102
103 /**
104 * various settings loaded from settings file
105 */
106 settings_t *settings;
107
108 /**
109 * integrity checker to verify code integrity
110 */
111 integrity_checker_t *integrity;
112
113 /**
114 * is leak detective running?
115 */
116 bool leak_detective;
117 };
118
119 /**
120 * Initialize library, creates "lib" instance.
121 *
122 * @param settings file to read settings from, may be NULL for none
123 * @return FALSE if integrity check failed
124 */
125 bool library_init(char *settings);
126
127 /**
128 * Deinitialize library, destroys "lib" instance.
129 */
130 void library_deinit();
131
132 /**
133 * Library instance, set after between library_init() and library_deinit() calls.
134 */
135 extern library_t *lib;
136
137 #endif /** LIBRARY_H_ @}*/