
This is Gwenhywfar, a multi-platform helper library for networking and
security applications and libraries. 
It is used by 
 - libchipcard (http://www.libchipcard.de), 
 - OpenHBCI2 (http://www.openhbci.de), 
 - Simthetic, the simulation tool (http://simthetic.sourceforge.net)
 - AqBanking/AqHBCI (http://www.aquamaniac.de/aqbanking/).
 - and others by using one of the projects above


Features
--------

This library is written in C, and it follows the object-oriented
programming paradigm for most of its parts.  The header files can
directly be used from C++, too.

Gwenhywfar includes the following features:

- Basic Data types for binary buffers, ring buffers, linked lists, 
  error objects, string lists (src/base/), buffered IO operations (src/io/)

- Macros for typesafe list management

- OS abstraction functions for directory and Internet address handling
  and library loading (src/os/)

- Networking functions which allow to manage many connections to be used
  economically even in single threaded applications

- High-level functions for parsing files with a simplified "XML-like"
  format and accessing them like a hierarchical database (src/parser/)
  It is able to process valid XML files, too.

- High-level cryptographic functions on top of OpenSSL functionality
  (src/crypt/)

- Support for interprocess communication (HTTP on top of SSL or plain
  TCP/UDP sockets, with or without certificates for clients and/or servers)

- Console user-interface (including a simple HTML parser) based on
  ncurses

- A tool to generate simple data containers from XML files. It automatically
  generates getters, setters, constructor, destructor, deep-copy function,
  usage counter handling, modification tracking, functions for reading from 
  and writing to GWEN_DBs (used by AqBanking to create the transaction class)


Requirements
------------

- OpenSSL >= 0.9.6x (0.9.7x recommended); this can optionally be
  disabled by the configure switch --disable-ssl
- ncurses (optional, used for user interface library gwenui)


Platforms
---------

Gwenhywfar is being developed on Linux. But the following platforms are also
supported:

- Windows (98, NT and newer; for using this library from Microsoft
  Visual Studio C please see the explanations in test/README.MSVC)

- Linux     (i386, amd64, alpha)
- FreeBSD   (untested, but most likely to work)
- NetBSD    (untested, but most likely to work)
- OpenBSD   (untested, but most likely to work)
- SunOS 5.9 (compiles, untested, but most likely to work)
- Mac OS-X  (compiles, untested, but most likely to work)

On Windows, an .exe setup program is provided, created with the Inno
Setup Compiler http://www.jrsoftware.org/isdl.php .


Environment Variables
---------------------

"GWEN_MEMORY_DEBUG"
This integer variable tells gwen whether (and how) to print the memory
debugger statistic. This only works for sources compiled with the defined
macro GWEN_MEMORY_DEBUG. 
- "0" shows ALL listed objects
- "1" only shows those objects whose count is not 0


Documentation
-------------

The documentation can be found in the header files. Many header 
files already include extensive comments in doxygen-format (however some 
don't).
For a more or less complete API documentation use the command
"make srcdoc"
You will need the tool doxygen for this command to run.


Contact
-------

For questions about this library please ask on the mailing list of the
OpenHBCI project openhbci-general (subscriber-only, please subscribe
on http://lists.sourceforge.net/lists/listinfo/openhbci-general),
since this is where the author(s) hang out. 


Authors
-------

This library is being written by and is being maintained by Martin
Preuss <martin@libchipcard.de>. 

I also wish to thank Christian Stimming <stimming@tuhh.de> for his
contributions and for adding MSVC support to Gwen (thus making Gwen completely
available on Windows).



Name
----

The name of this library was chosen to honour a very special person ;-)
(that should suffice as an explanation)



Hamburg, Germany 2004/09/02


