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