summaryrefslogtreecommitdiff
path: root/src/libstrongswan/library.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstrongswan/library.h')
-rw-r--r--src/libstrongswan/library.h324
1 files changed, 59 insertions, 265 deletions
diff --git a/src/libstrongswan/library.h b/src/libstrongswan/library.h
index 51b72bfce..6cb57ef20 100644
--- a/src/libstrongswan/library.h
+++ b/src/libstrongswan/library.h
@@ -1,12 +1,5 @@
-/**
- * @file library.h
- *
- * @brief Helper functions and definitions.
- *
- */
-
/*
- * Copyright (C) 2006 Martin Willi
+ * Copyright (C) 2008 Martin Willi
* Hochschule fuer Technik Rapperswil
*
* This program is free software; you can redistribute it and/or modify it
@@ -19,318 +12,119 @@
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
- * RCSID $Id: library.h 3255 2007-10-07 13:35:42Z andreas $
+ * $Id: library.h 3589 2008-03-13 14:14:44Z martin $
*/
-#ifndef LIBRARY_H_
-#define LIBRARY_H_
-
/**
* @defgroup libstrongswan libstrongswan
*
- * libstrongswan: library with various cryptographic, X.509 trust chain and
- * identity management functions.
- */
-
-/**
* @defgroup asn1 asn1
- *
- * ASN.1 definitions, parser and generator functions.
- *
* @ingroup libstrongswan
- */
-
-/**
- * @defgroup crypto crypto
- *
- * Various cryptographic algorithms.
*
+ * @defgroup credentials credentials
* @ingroup libstrongswan
- */
-
-/**
- * @defgroup crypters crypters
- *
- * Symmetric encryption algorithms, used for
- * encryption and decryption.
- *
- * @ingroup crypto
- */
-
-/**
- * @defgroup hashers hashers
- *
- * Hashing algorithms, such as MD5 or SHA1
- *
- * @ingroup crypto
- */
-
-/**
- * @defgroup prfs prfs
- *
- * Pseudo random functions, used to generate
- * pseude random byte sequences.
- *
- * @ingroup crypto
- */
-
-/**
- * @defgroup rsa rsa
- *
- * RSA private/public key algorithm.
*
- * @ingroup crypto
- */
-
-/**
- * @defgroup signers signers
+ * @defgroup keys keys
+ * @ingroup credentials
*
- * Symmetric signing algorithms,
- * used to ensure message integrity.
+ * @defgroup certificates certificates
+ * @ingroup credentials
*
- * @ingroup crypto
- */
-
-/**
+ * @defgroup crypto crypto
+ * @ingroup libstrongswan
+
+ * @defgroup database database
+ * @ingroup libstrongswan
+
+ * @defgroup fetcher fetcher
+ * @ingroup libstrongswan
+
* @defgroup fips fips
- *
- * Code integrity check of libstrongswan
- *
* @ingroup libstrongswan
- */
-
-/**
+
+ * @defgroup plugins plugins
+ * @ingroup libstrongswan
+
* @defgroup utils utils
- *
- * Generic helper classes.
- *
* @ingroup libstrongswan
*/
-#include <gmp.h>
-#include <sys/types.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <printf.h>
-
-#include <enum.h>
-
-/**
- * Number of bits in a byte
- */
-#define BITS_PER_BYTE 8
-
-/**
- * Default length for various auxiliary text buffers
- */
-#define BUF_LEN 512
-
-/**
- * Macro compares two strings for equality
- */
-#define streq(x,y) (strcmp(x, y) == 0)
-
-/**
- * Macro compares two strings for equality
- */
-#define strneq(x,y,len) (strncmp(x, y, len) == 0)
-
-/**
- * Macro compares two binary blobs for equality
- */
-#define memeq(x,y,len) (memcmp(x, y, len) == 0)
-
-/**
- * Macro gives back larger of two values.
- */
-#define max(x,y) ((x) > (y) ? (x):(y))
-
-/**
- * Macro gives back smaller of two values.
- */
-#define min(x,y) ((x) < (y) ? (x):(y))
-
-/**
- * Call destructor of an object, if object != NULL
- */
-#define DESTROY_IF(obj) if (obj) obj->destroy(obj)
-
-/**
- * Call offset destructor of an object, if object != NULL
- */
-#define DESTROY_OFFSET_IF(obj, offset) if (obj) obj->destroy_offset(obj, offset);
-
/**
- * Call function destructor of an object, if object != NULL
+ * @defgroup library library
+ * @{ @ingroup libstrongswan
*/
-#define DESTROY_FUNCTION_IF(obj, fn) if (obj) obj->destroy_function(obj, fn);
-/**
- * Debug macro to follow control flow
- */
-#define POS printf("%s, line %d\n", __FILE__, __LINE__)
-
-/**
- * Macro to allocate a sized type.
- */
-#define malloc_thing(thing) ((thing*)malloc(sizeof(thing)))
+#ifndef LIBRARY_H_
+#define LIBRARY_H_
-/**
- * Assign a function as a class method
- */
-#define ASSIGN(method, function) (method = (typeof(method))function)
+#include <utils.h>
+#include <chunk.h>
+#include <settings.h>
+#include <printf_hook.h>
+#include <plugins/plugin_loader.h>
+#include <crypto/crypto_factory.h>
+#include <credentials/credential_factory.h>
+#include <fetcher/fetcher_manager.h>
+#include <database/database_factory.h>
-/**
- * time_t not defined
- */
-#define UNDEFINED_TIME 0
+typedef struct library_t library_t;
/**
- * General purpose boolean type.
+ * Libstrongswan library context, contains library relevant globals.
*/
-typedef int bool;
-#define FALSE 0
-#define TRUE 1
-
-typedef enum status_t status_t;
+struct library_t {
-/**
- * Return values of function calls.
- */
-enum status_t {
- /**
- * Call succeeded.
- */
- SUCCESS,
-
- /**
- * Call failed.
- */
- FAILED,
-
- /**
- * Out of resources.
- */
- OUT_OF_RES,
-
- /**
- * The suggested operation is already done
- */
- ALREADY_DONE,
-
/**
- * Not supported.
+ * Printf hook registering facility
*/
- NOT_SUPPORTED,
+ printf_hook_t *printf_hook;
/**
- * One of the arguments is invalid.
+ * crypto algorithm registry and factory
*/
- INVALID_ARG,
+ crypto_factory_t *crypto;
/**
- * Something could not be found.
+ * credential constructor registry and factory
*/
- NOT_FOUND,
+ credential_factory_t *creds;
/**
- * Error while parsing.
+ * URL fetching facility
*/
- PARSE_ERROR,
+ fetcher_manager_t *fetcher;
/**
- * Error while verifying.
+ * database construction factory
*/
- VERIFY_ERROR,
+ database_factory_t *db;
/**
- * Object in invalid state.
+ * plugin loading facility
*/
- INVALID_STATE,
+ plugin_loader_t *plugins;
/**
- * Destroy object which called method belongs to.
+ * various settings loaded from settings file
*/
- DESTROY_ME,
-
- /**
- * Another call to the method is required.
- */
- NEED_MORE,
+ settings_t *settings;
};
/**
- * used by strict_crl_policy
- */
-typedef enum {
- STRICT_NO,
- STRICT_YES,
- STRICT_IFURI
-} strict_t;
-
-/**
- * enum_names for type status_t.
- */
-extern enum_name_t *status_names;
-
-/**
- * deprecated pluto style return value:
- * error message, NULL for success
- */
-typedef const char *err_t;
-
-/**
- * Handle struct timeval like an own type.
- */
-typedef struct timeval timeval_t;
-
-/**
- * Handle struct timespec like an own type.
- */
-typedef struct timespec timespec_t;
-
-/**
- * Handle struct chunk_t like an own type.
- */
-typedef struct sockaddr sockaddr_t;
-
-/**
- * Clone a data to a newly allocated buffer
- */
-void *clalloc(void *pointer, size_t size);
-
-/**
- * Same as memcpy, but XORs src into dst instead of copy
- */
-void memxor(u_int8_t dest[], u_int8_t src[], size_t n);
-
-/**
- * Special type to count references
+ * Initialize library, creates "lib" instance.
+ *
+ * @param settings file to read settings from, may be NULL for none
*/
-typedef volatile u_int refcount_t;
+void library_init(char *settings);
/**
- * @brief Get a new reference.
- *
- * Increments the reference counter atomic.
- *
- * @param ref pointer to ref counter
+ * Deinitialize library, destroys "lib" instance.
*/
-void ref_get(refcount_t *ref);
+void library_deinit();
/**
- * @brief Put back a unused reference.
- *
- * Decrements the reference counter atomic and
- * says if more references available.
- *
- * @param ref pointer to ref counter
- * @return TRUE if no more references counted
+ * Library instance, set after between library_init() and library_deinit() calls.
*/
-bool ref_put(refcount_t *ref);
-
-
-#include <chunk.h>
-#include <printf_hook.h>
+extern library_t *lib;
-#endif /* LIBRARY_H_ */
+#endif /* LIBRARY_H_ @}*/