|
|
|
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.aqbanking.de/).
|
|
- 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)
|
|
|
|
- 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
|
|
============
|
|
|
|
- GnuTLS >= 1.4 (>=2.0.1 recommended)
|
|
- libgcrypt (>=1.2.0)
|
|
|
|
|
|
|
|
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)
|
|
|
|
- FreeBSD
|
|
- Linux (i386, amd64, alpha)
|
|
- Mac OS-X
|
|
- NetBSD (untested, but most likely to work)
|
|
- OpenBSD (untested, but most likely to work)
|
|
- SunOS 5.9 (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 .
|
|
|
|
|
|
Architectures
|
|
=============
|
|
|
|
According to Debian Gwen runs on the following platforms:
|
|
- alpha
|
|
- amd64
|
|
- arm
|
|
- hppa
|
|
- i386
|
|
- ia64
|
|
- m68k
|
|
- mips
|
|
- mipsel
|
|
- powerpc
|
|
- s390
|
|
- sparc
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
"GWEN_SSL_DEBUG"
|
|
----------------
|
|
|
|
If this environment variable exists the SSL code will append data received
|
|
via an SSL connection to "/tmp/read.bin" and append data sent via an SSL
|
|
connection to /tmp/written.bin".
|
|
|
|
|
|
"GWEN_TLS_CIPHER_PRIORITIES"
|
|
--------------------------
|
|
|
|
If this environment variable is set, the SSL code will initialize the GnuTLS
|
|
library with the provided cipher priority list. If this environment variable
|
|
is unset, the default cipher priority list of the GnuTLS library is being used.
|
|
|
|
For the exact format of the cipher priority list and its default, please
|
|
consult the GnuTLS documentation, section "Priority strings":
|
|
http://gnutls.org/manual/html_node/Priority-Strings.html
|
|
|
|
|
|
Registry Keys
|
|
=============
|
|
|
|
On Windows platforms Gwen uses some keys below HKEY_CURRENT_USER
|
|
to store information about file/folder locations. The keys are set
|
|
in the Inno Setup file gwenhywfar.iss, so please check the
|
|
[Registry] section in gwenyhwfar.iss.in for the authoritative
|
|
source of available registry keys.
|
|
|
|
"Software\\Gwenhywfar\\Paths\\dbio-plugins"
|
|
-------------------------------------------
|
|
Complete path to the folder containing GWENs DBIO plugins.
|
|
(and some more keys. See gwenhywfar.iss.in)
|
|
|
|
|
|
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
|
|
AqBanking project aqbanking-devel (subscriber-only, please subscribe
|
|
on http://lists.sourceforge.net/lists/listinfo/aqbanking-devel),
|
|
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 2021/09/30
|
|
|
|
|