$Id: ChangeLog,v 1.190 2003/06/24 09:51:50 aquamaniac Exp $ ============================================================================== 2003/06/24 MARK: Released Version 0.9.1 (stable) ============================================================================== 2003/06/23: Martin Preuss ------------------------------------------------ - updated documentation 2003/06/16: Martin Preuss ------------------------------------------------ - fixed a typo reported by Thomas Viehmann 2003/06/13: Martin Preuss ------------------------------------------------ - added debug message to libchipcard.c. This lets me see which version is used. 2003/06/04: Martin Preuss ------------------------------------------------ - fixed a small memory leak in chipcardd: ARGUMENTS where never freed 2003/06/03: Martin Preuss ------------------------------------------------ - fixed a bug in configure script: Apparently newer versions of autoconf do not provide the variables "libdir" et al which are known to work in a Makefile inside the configure script. In fact using these variables in a configure script is deprecated. So as a quick (and ugly) hack I replaced "libdir" by "$prefix/lib" ("prefix" is available). Maybe we should change this later. 2003/05/17 Martin Preuss ------------------------------------------------ - fixed OpenBSD stuff ============================================================================== 2003/05/13 MARK: Released Version 0.9 (stable) ============================================================================== 2003/05/09 Martin Preuss ------------------------------------------------ - fixed the "dismissing" problem in CTClient. Now if a request is withdrawn or abandoned CTCLient adds this requestId to an internal list. Whenever a message arrives for which no active request exists, then this list will be consulted. This allows to silently dismiss messages to already withdrawn or abandoned requests and stay alert if a really unrequested message arrives ;-) ============================================================================== 2003/05/08 MARK: Released Version 0.9beta1 ============================================================================== 2003/05/08 Martin Preuss ------------------------------------------------ - added method RSACard::pinStatus() which returns the error counter for the PIN of an RSA card - added command "pinstatus" to tool hbcicard which uses the previously declared method - fixed a bug in libchipcard.m4 - locale-path is no longer hardcoded into the tools - reimported chameleon and parts of aqservice into Libchipcard. Those libraries have meanwhile improved a lot, so Libchipcard should benefit from it - ChipCard_StopWait now calls the new function ChipCard_AbandonRequest instead of ChipCard_WithdrawRequest. This allows me to get rid of the hoax "Got an unrequested message, dismissing". This is a hoax in this case because the message recieved in fact WAS requested. - added a line to the output of "hbcicard info" which shows the ATR of a card - improved ReaderServer_CheckWaitResponses, now the first time a WaitRequest is checked it get's ALL currently active readers, not only the first one found. 2003/05/07 Martin Preuss ------------------------------------------------ - added function to Logger which allows to use a user defined function for logging. This one is to be used by the win32 version of chipcardd. 2003/05/06 Martin Preuss ------------------------------------------------ - added HBCICard::getinstituteData which now returns an error instead of throwing it. This allows using OpenHBCI's plugin system even with GCC 2.95, which does not support exceptions in DLopened libraries. 2003/04/24 Martin Preuss ------------------------------------------------ - SECURITY FIX in CTCore_UnregisterClient: If a client still has a reader open while it gets unregistered the reader will be disconnected, so that a possibly existing security context on the card will be reset. This will have to go in 0.8.4 as well ! - fixed a serious bug in CTConfig_ImportGroup. Grmp, maybe I will have to make a 0.8.5 release as well $%$&! ============================================================================== 2003/04/24 MARK: Started Working on Version 0.9 ============================================================================== WARNING: The current CVS version breaks compatibility with prior versions! So if you have to rely on the old API you should continue to use the latest version from the 0.8 branch. What's new ? Direct creation of CTCard and derived objects is no longer allowed. You must now use the new class CTCardTrader which waits for cards and returns a valid CTCard object if a card becomes available. This new class basically replaces the whole startWaitForCard et. al. stuff which started to become intransparent. I included some very descriptive tutorials to show how this works. I will add support for the current version to the appropriate OpenHBCI plugins in order to make tis version usable with OpenHBCI. The CTCard class is now much cleaner, some unnecessary methods of CTCard have been removed and some bugs have been discovered and fixed. I also started to work on a windows version of the chipcardd. The tools and Libchipcard itself already work under Windows, but due to the Windows environment which is totally incompatible with Unix (->signals and other stuff are missing here) the chipcardd which was designed for POSIX systems is more or less useless under Windows. I also started adding internationalization to the tools. 2003/04/23 Martin Preuss ------------------------------------------------ - fixed a bug in command files, now Cyberjack and Towitoko readers should be fully supported again with processor cards 2003/04/22 Martin Preuss ------------------------------------------------ - started working on chipcardd for Windoze - introduced cardId to CTCore. Whenever a new card is inserted into a reader the card counter of that reader is incremented. This will be used for the new versions of some messages to identify the card to use. - introduced lockedSince field to CTCore, this holds the time when a reader gets locked. This will be used to timeout a lock. 2003/04/21 Martin Preuss ------------------------------------------------ - added support for OpenBSD ports - example configuration files are now installed in ${datadir}/libchipcard/examples (needed for OpenBSD) 2003/04/20 Martin Preuss ------------------------------------------------ - fixed configure environment, so that you can now do "configure" from outside the source directory (like OpenBSD's port environment does) ============================================================================== 2003/04/19 MARK: Released stable version 0.8.3 ============================================================================== 2003/04/19 Martin Preuss ------------------------------------------------ - libchipcard-config does not return system include directories anymore - corrected driver description file for Orga readers 2003/04/15 Martin Preuss ------------------------------------------------ - "libchipcard-config --libraries" now does not report all libraries used by libchipcard. These dependencies are already stored within the library itself. 2003/04/14 Martin Preuss ------------------------------------------------ - added a warning to the tool hbcicard when it is used to access an unsupported card. 2003/04/12 Martin Preuss ------------------------------------------------ - adapted to newer versions of OpenSSL: For unknown reasons OpenSSL wants an exponent even for private RSA keys. So this is now created when reading an RSA key from an IPCMessage. - updated libtool from 1.4.2 to 1.4.3 to support Debian mips and mipsel architectures 2003/04/11 Martin Preuss ------------------------------------------------ - started working on internationalization: HBCICard is the first tool to ship with a complete German translation. 2003/04/10 Martin Preuss ------------------------------------------------ - applied a patch by Stephan Kulow to hbcicard.cpp for gcc33 - added information on how to use a Orga HML5021 device 2003/04/09 Martin Preuss ------------------------------------------------ - kvkd now beeps after reading a card: 1x: Ok 2x: Could not read card, please retry Yx: Could not write data to directory This can be turned off by option "--nobeep", Y can be set using "--beeps Y". - fixed a bug in CTCard - fixed a bug in readerserver.c 2003/04/08 Martin Preuss ------------------------------------------------ - added driver description file for Orga readers - added commands for Orga readers 2003/04/02 Martin Preuss ------------------------------------------------ - RequestWait now has an additional parameter: statusDelta. It tells the server which parts of the reader status must have changed before the server sends a status change notification. It defaults to "~0", so Libchipcard behaves just as it did before. - KVKd now uses the new statusDelta parameter, because it would otherwise read the same card again and again. - improved KVKd: It now uses the same logging mechanism all other tools use. - kvkd is now able to reconnect if the server for some reasons went down. - improved logging output of chipcardd ============================================================================== 2003/03/31 MARK: Released stable version 0.8.2 ============================================================================== 2003/03/31 Martin Preuss ------------------------------------------------ - the tools now use CTCard::getCard() instead of CTCard::waitForCard() - readertest now accepts the parameter "-n NAME" to give the reader name. This allows to test PC/SC readers, too. - added AS_SCRUB_INCLUDE, this macro removes all system include directories from variables. It is now used by my m4-macros to get rid of the compiler warnings in GCC3. This macro has been written by thomas@apestaart.org. 2003/03/28 Martin Preuss ------------------------------------------------ - chipcardd now dumps the ATR of an inserted card - calling srandom/srand before using random numbers. This allows for better random numbers to be used for initial reader ids etc. - improved messages in CTCore_Init ============================================================================== 2003/03/11 MARK: Released stable version 0.8.1 ============================================================================== 2003/03/04 Martin Preuss ------------------------------------------------ - improved SuSE init script, now "reload" and "probe" work as expected, and chipcardd is started after hwscan - chipcardd-nanny now additionally goes down if the chipcardd is disabled by the configuration file AND the option "--exit-on-error" is given - simplified building of RPM packages 2003/03/03 Martin Preuss ------------------------------------------------ - fixed a bug in configure.in detected by E.Oltmanns 2003/03/02 Martin Preuss ------------------------------------------------ - fixed a bug in ctcore/readerserver reported by Michael Muehle: Readerdescription was freed but still used afterwards. This only occurred when adding a reader which already exists, in most cases with PC/SC. - added a notice concerning OpenSSL to the COPYING file - incorporated changes to FreeBSD/port stuff according to latest changes in FreeBSD CVS by Kris Kennaway ============================================================================== 2003/02/18 MARK: Released stable version 0.8 ============================================================================== 2003/02/17 Martin Preuss ------------------------------------------------ - hmm, nice way to commit my birthday ;-) - added driver descriptions. Now the translation of port names (e.g. "COM1") to port values (e.g. "0") for CTAPI drivers is no longre hardwired into Libchipcard. You can now add support for any CTAPI driver by just adding such a description file. Please have a look into the folder "data/drivers". - removed driverType from find and wait requests. No application should depend on the way a reader is accessed. - reader type is now given as a string to those requests. This allows the driver to lookup the port values even for readers not already known. - please note that older clients will not work with version 0.8 daemons, because of changes in some messages. - internally switched over to version 0.8 - added command line option "--exit-on-error" to chipcardd. Normally the supervising process simply suspends chipcardd if there was a setup error amd waits either for a HUP or CONT signal. With this option chipcardd will exit completely upon setup error. - removed call to "bind" for Unix Domain Sockets when making a connection. This is not needed. - fixed Unix Domain Sockets code, it should now work with BSDs, too. - Chipcard now chmods unix domain sockets to grant access to other users. 2003/02/16 Martin Preuss ------------------------------------------------ - chipcardd is smarter now when it comes to respawning the server due to an uncaught signal. If the respawn frequency gets too high the nanny sleeps for a second. If the respawn frequency stays that high after about 10 respawns within a short period the nanny will suspend the daemon. This way the daemon never eats up all the CPU power in useless respawnings. - finished implementing unix domain socket transportlayer. If this layer type is used no encryption takes place, thus allowing even slower machines to perform in acceptable speed. - improved config file handling: now you can additionally give the reader flags like this: "flags=keypad,display" instead of "flags=3" Please note that numerical values are deprecated, so for 0.9 they most likely won't be supported anymore. 2003/02/15 Martin Preuss ------------------------------------------------ - fixed many memory leaks found using "valgrind". Really nice tool ;-) - InetAddr and InetSocket can now use Unix Domain Sockets This allows me to later add the possibility to add those socket's use to chipcardd - inetaddr.{c,h}: removed functions InetAddr_Create and InetAddr_Destroy, replaced them by InetAddr_new and InetAddr_free, respectively. Now the inetaddr stuff fits better into my current coding style. Fortunately the address and socket stuff was nicely abstracted so there is no need to change chipcardd or the tools (puh ;-) - added new IPCTransportLayer: Unix. This one now uses Unix Domain Sockets for interprocess communication. - added manpage for kvkd written by Thomas Viehmann 2003/02/13 Martin Preuss ------------------------------------------------ - added last two manpages written by Thomas Viehmann: - memcard.1.in - libchipcard-config.1.in 2003/02/12 Martin Preuss ------------------------------------------------ - improved specfiles ============================================================================== 2003/02/11 MARK: Released stable version 0.7.5 ============================================================================== 2003/02/11 Martin Preuss ------------------------------------------------ - chipcardd daemon now sends error messages if it encounters problems with the client's messages. If there is an error with the key exchange procedure then the connection will be terminated. - added documentation of chipcardd messages - adjusted version numbers prior to next release 2003/02/09 Martin Preuss ------------------------------------------------ - logger now logs the process id if "getpid" is available - improved chipcard daemon a lot: - now the daemon forks itself twice: - first time to get into background (this fork can be prohibited) - this background process is the nanny of the real chipcard daemon ;-) Well, that means this process does nothing but watching the chipcard chipcard daemon. If the daemon is stopped for any reason then this control process restarts it, if appropriate. You can now temporarily suspend the chipcard daemon or force it to reload its configuration. These new features are used by KCardSetup, so there is no need to kill and restart chipcardd by hand ;-) - third process, this is forked off the second, and it really does the hard work ;-) - adjusted manpage for chipcardd accordingly 2003/02/08 Martin Preuss ------------------------------------------------ - fixed a bug in IPCTransportLayerTCP_Disconnect 2003/02/07 Martin Preuss ------------------------------------------------ - fixed a serious bug in client/server code. In most cases this error never occurred, but if it did it crashed the chipcard daemon - added client id to key request message - fixed some bugs in Card File System Code - added ripemd160 code to module "cryp" - applied a bugfix figured out by Danny Milosavljevic. Thanks !!! This spurious bug was starting to give me headache ! - started working on tool "rsacard" to use a RSA HBCI card for cryptographic purposes 2003/02/06 Martin Preuss ------------------------------------------------ - included a patch for readertest.c submitted by Thomas Viehmann. This tool now takes descriptive arguments instead of numeric ones - added last missing manpages written by Thomas Viehmann. Thanks, Thomas ;-) 2003/02/05 Martin Preuss ------------------------------------------------ - added new data type for configuration file driven command engine: "fpin2". This type is a FPIN2 block used by HBCI cards for pin verification - moved class HBCICard to use doCommand for pin verification ============================================================================== 2003/02/01 MARK: Released stable version 0.7.4 ============================================================================== 2003/01/30 Martin Preuss ------------------------------------------------ - fixed a bug in tool HBCICard and corresponding card 2003/01/29 Martin Preuss ------------------------------------------------ - added logging options to memcard (just like the other tools had them) - increased verbosity of ctclient.c 2003/01/28 Martin Preuss ------------------------------------------------ - fixed a bug in CTAPI code: Readertype "other" wasn't completely handled. - init scripts now use the correct prefix 2003/01/27 Martin Preuss ------------------------------------------------ - fixed a bug in CTAPI code. Grmpf, I will have to make a new release this week :-( - fixed a bug in chameleon/error.c ============================================================================== 2003/01/25 MARK: Released stable version 0.7.3 ============================================================================== 2003/01/25 Martin Preuss ------------------------------------------------ - tool hbcicard: - command "type" is more precise about the card type if the card is a DDV card. - added command "info" which shows some general information about the card 2003/01/24 Martin Preuss ------------------------------------------------ - removed hardwired references to chameleon (this allows to later use a system wide libchameleon. Another step towards chameleons independance) - fixed a bug in server code: When connection was broken the clients were not completely unregistered from the driver. This sometimes made the applications wait forever for a reader, because the reader stays locked by the client which already died. 2003/01/22 Martin Preuss ------------------------------------------------ - CTCard: added methods getCard() and checkCard(), which will soon replace waitForCard(). These methods work together to wait for a special card to be inserted. Please note that the following methods are now deprecated and will be removed for 0.8: - waitForCard() - startWaitForCard() - checkWaitForCard() - stopWaitForCard() ============================================================================== 2003/01/19 MARK: Released stable version 0.7.2 ============================================================================== 2003/01/19 Martin Preuss ------------------------------------------------ - exchanged "CONFIG_MODE_xyz" by "CONFIGMODE_xyz" to not disturb OpenHBCI - started working on FreeBSD packaging - more cleanups/fixes 2003/01/18 Martin Preuss ------------------------------------------------ - RPM fixes - added distribution specific stuff for Mandrake - removed -o root" from install instructions ============================================================================== 2003/01/17 MARK: Released stable version 0.7.1 ============================================================================== 2003/01/16 Martin Preuss ------------------------------------------------ - added manpages for HBCICard and GeldKarte provided by Thomas Viehmann 2003/01/13 Martin Preuss ------------------------------------------------ - changed name of win32 DLL - fixed include error 2003/01/11 Martin Preuss ------------------------------------------------ - minor changes for windows compatibility - changed ERROR_SEVERITY_ERROR to ERROR_SEVERITY_ERR, because WIN32 already defines such a macro - separated LibChipCard code from code in engine/service, this allows me to use the service code in other projects, too. I had to clean up the message number space, so all tools in 0.7.1 will only work with library version 0.7.1 ! - changed name of "chameleon/{posix, windows}/socket.{h,c}" to "chameleon/{posix, windows}/inetsocket.{h,c}", because at least BeOS falsely includes the included socket.h instead of the system socket.h 2003/01/10 Martin Preuss ------------------------------------------------ - changed name of pcsc library from "libpcsclite.so" to "libpcsclite.so.0", since at least Debian ships without the first one - now all directories are included in "make (dist)clean" - started porting to WIN32 - improved naming scheme for enums to not disturb OpenHBCI - added directory.{c,h} to src/libchipcard/engine/chameleon/windows 2003/01/09 Martin Preuss ------------------------------------------------ - minor fixes for FreeBSD 4.6.2 ============================================================================== 2003/01/08 MARK: Released stable version 0.7 ============================================================================== 2003/01/08 Martin Preuss ------------------------------------------------ - cleaned up IPC_TransportLayer - added Socket_SetReuseAddress to socket module - chipcardd now sets socket option "SO_REUSEADDR" to allow faster restart of a killed chipcardd (inspired by Thomas Viehmann) - updated specfile, now 3 RPM packages are build: libchipcard, libchipcard-devel and libchipcard-tools - added default config files (won't overwrite existing ones) - added a command to hbcicard: "type", to show the type of the card (either DDV or RSA) - added init-scripts for SuSE and RedHat - changed specfile management 2003/01/07 Martin Preuss ------------------------------------------------ - added Thomas Viehmann to the THANKS file for his phantastic Debian packages - chipcardd now gives a warning if a pid file already exists, instead of aborting 2003/01/06 Martin Preuss ------------------------------------------------ - removed final (grmpf!!!) occurrence of chroot_dir - cleaned up "Makefile.dist" - updated documentation for chipcardd - fixed a bug in ctkvkcard, falsely assumed that the card has 256 bytes of RAM (older cards sometimes only have 128 bytes) - chipcardd now dumps an error message to stderr, too, if it cannot start its sercice (avoids confusion when starting the chipcardd via command line) 2003/01/05 Martin Preuss ------------------------------------------------ - added a new module to chameleon: "logger". This is now used by the debug macros to dump the debug messages either to stderr, a file or syslog. The new logger even allows to dynamically change the log level (this feature is needed by chipcardd) - chipcardd now uses the "logger" - updated manpage of chipcardd to reflect the changes - added handler for signals "USR1" and "USR2" to chipcardd. They have the following meaning: USR1: increase log level by one (making chipcardd more verbous) USR2: decrease log level by one (making chipcardd less verbous) - hbcicard now checks for a keypad instead of assuming the reader has one 2002/12/30 Martin Preuss ------------------------------------------------ - replaced manpage libchipcard.conf.5 - fixed a bug in rsacard.h - added manpages for the other configuration files - documented example configuration files 2002/12/29 Martin Preuss ------------------------------------------------ - removed "chroot_dir" (missed that before previous release) - chipcardd now uses a pid file to check whether another instance of it is already running - config file loader did not set the readerflags accordingly, this resulted in most cases in the assumption the reader has a keypad when it has not - changed the handling of pin input/change code of CTProcessorCard - fixed a bug in hbcicard 2002/12/28 Martin Preuss ------------------------------------------------ - started separation of KDE tools from LibChipCard - updated spec file - fixed some bugs in KDE3 detection - fixed a bug in CTCore when no PCSC is available - added more explanations for error codes - added error category "k_CTERROR_API", which specifies errors returned by ChipCard_xyz functions - documented the C interface of LibChipCard 2002/12/22 Martin Preuss ------------------------------------------------ - improved command engine again: Now the path is given as part of the group name. This allows to put commands for multiple readers into a single file. - ported KMedicalCard to version 0.7 - fixed some bugs in Makefile.am's 2002/12/21 Martin Preuss ------------------------------------------------ - completed RSACard class - some internal cleanups - tested LibChipCard with a Cyberjack reader (and it works) - improved command engine: Now all card types of a class a searched for a command (e.g. for a HBCICard the commands are searched in "HBCICard", "CTProcessorCard" and "CTCard" since HBCICard inherits the other classes). - added class CTGeldKarte which supports German money cards. - added tool "geldkarte" which shows some information about that kind of cards - cleaned up commands - added CTCard::doCallBack() to allow C++ classes to implement the callback stuff in C++. 2002/12/16 Martin Preuss ------------------------------------------------ - much improved RSACard, so that it may be used by OpenHBCI - tool HBCICard is now able to dump and modify the content of a RSA card, too. Therefore it now checks of what type the inserted card is. You can now even change the pin of an RSA card with this tool ;-) - some internal cleanups - added a flag to superrequests to mark that ALL sub requests have to be answered ============================================================================== 2002/12/15 MARK: Released version 0.7beta1 ============================================================================== 2002/12/15 Martin Preuss ------------------------------------------------ - added much functionality to RSACard, which now basically works. Untested is "setBankKey", that will be tested when I start to implement this card in OpenHBCI. - fixed some bugs in the command files. 2002/12/14 Martin Preuss ------------------------------------------------ - fixed and improved the configuration file driven command engine: now the "DATA" field of an APDU may have multiple arguments, even with fixed and variable parameters intermixed. - started working on RSACard, added command file for this class - added "cardcommander", a simple tool which helps at least myself much in debugging code for the new class RSACard - fixed a bug in reader status change detection. Now when there is a client waiting for a card and all available readers are in use the client will be informed whenever a reader is released. 2002/12/13 Martin Preuss ------------------------------------------------ - added KVK Daemon, a daemon for German medical cards as requested by Karsten Hilbert (Gnumed) - CTCard: - splitted waitForCard into three parts: - startWaitForCard (which issues the wait request to all servers) - checkWaitForCard (checks for any response from any server) - stopWaitForCard. (issues a stop request to all servers) Of course for your conveniance "waitForCard" still exists, but it now internally calls the three methods above - installation prefix will now be honoured (well, at least at all locations I spotted ;-) So now the configuration files AND the command files are expected within the given prefix: - configuration files in $sysconfdir - command and other data files in $datadir - kvkd now creates temporary files and renames then after writing to their real name. This introduces a kind of file locking, since "rename" is defined to be atomic. 2002/12/12 Martin Preuss ------------------------------------------------ - added tool "readertest", which is used by KCardSetup - KCardSetup is now able to check the configuration for a reader (just as KLCSetup was) 2002/12/11 Martin Preuss ------------------------------------------------ - fixed a whole bunch of minor bugs - cleanup - if there are multiple servers and we issue a super request (which is a request that is send to each server) then the client no longer aborts if there was one failing server. Failing servers are simply ignored. - this version now compiles and works under FreeBSD 4.6.2, too 2002/12/10 Martin Preuss ------------------------------------------------ - added CTAPI driver mode, tested so far with a Kobil reader - chipcard daemon now forks into background (if fork is available) - chipcard daemon handles some signals (if signal handling is available) - general cleanup - added README-0.7 - implemented timeout in CTCard::_responseLoop - improved documentation of CTCard - internal debugging to allow OpenHBCI to use this version of LibChipCard - include files are now installed to "$INCLUDE/chipcard" 2002/12/08 Martin Preuss ------------------------------------------------ - added ChipCard requests that allow waiting for a card to be inserted into a specified or unspecified reader - tools ctfstool, memcard and hbcicard now work again with the new version All tools allow now to specify the name of the libchipcard configuration file to use - removed some debug messages (they are now printed only if the debug mode is quite high) - more cleanups ;-) - added callback mechanism to CTCard - started reenabling KCardSetup, it is at least able to setup the server configuration. - completed KCardSetup - CTCard is now auto-initializing LibChipCard again, so it now shows the same behaviour as before 2002/12/07 Martin Preuss ------------------------------------------------ - completed C++-Interface. It still needs some detailed work, but it basically works now. At least "kvktest" and "hbcitest" do now compile and run. - added some test files for the command engine. Most card classes still use the old "execCommand" method, but they will successively be turned over to the new "doCommand" method, which performs a command lookup for the current card and reader. - PC/SC driver now calls SCardReconnect if a client wants to connect a card which physically already is connected. This allows intermixed usage of processor memory AND processor cards ;-) 2002/12/06 Martin Preuss ------------------------------------------------ - added chipcardd (chipcard daemon), this is just a raw an unfinished version of the daemon, but it at least works so that I'm able to debug the rest of libchipcard now - nearly completed core of libchipcard - now ChipCard_CheckAllocReader returns a description of the reader - libchipcard now reads a configuration file and command files on startup (upon ChipCard_Init) - added "cmdtest" to test subdirectory - I will now start to rewrite the CTCard class 2002/12/04 Martin Preuss ------------------------------------------------ - started to completely rewrite LibChipCard. It's core is now in C instead of C++. This makes it a tenth of the size of the 0.6.1 version !! - added configuration file driven chipcard command engine, it allows to extend libchipcard without recompiling it - LibChipCard is now based on a client-server model. The former libchipcard.so is now only a client to the server. Only the server contains card reader handling code, so the client is much leaner now than the former libchipcard library used to be. - the newly introduced client-server model uses rsa encryption to exchange a blowfish crypto key, which will then be used for all further communication between them. This secures the communication, because sometimes we have to transmit secret data (e.g. when verifying the pin with terminals that have no keypad, or when reading secret data from the chip card) - this allows the client to be most platform independant, since only the transport layer and crypto functions have to be ported - it also allows to use card readers inside a private network (or within the internet, but that would not really make sense to do so ;-) 2002/11/21 Martin Preuss ------------------------------------------------ - further work on IPC stuff 2002/11/19 Martin Preuss ------------------------------------------------ - restarted working on IPC from scratch. Most stuff is now based on C with wrappers for C++. The old version worked, but it was too much based on C++ and had a to narrow design. That would be ok for LibChipCard itself, but I'd rather like to use these parts of this library in other projects, too. Also the old IPC version was way too complicated, and thus too difficult to maintain. 2002/11/05 Martin Preuss ------------------------------------------------ - first request works ! ;-) now we can receive the server's public key. I will now have to further implement the channel opening protocol 2002/11/04 Martin Preuss ------------------------------------------------ - simplyfied the IPC stuff, removed some classes, added others 2002/11/03 Martin Preuss ------------------------------------------------ - signing, verifying, encrypting and decrypting works, will now have to sort it into the IPC stuff - added C++ classes for encryption (highly inspired by the class RSAKey of the project OpenHBCI). - further work on CTCardServer - implemented encryption layer within the IPC framework - nearly finished design of IPC client and server base classes, now I can concentrate on implementing servers and clients for libchipcard itself ;-) 2002/11/02 Martin Preuss ------------------------------------------------ - added IPCRequestClient - added IPCRequestServerTCP - added CTCardServerTCP - removed need for loading the configuration file multiple times. Now it is read once at the beginning and passed to all objects which need the configuration. - added RSA crypto stuff to chameleon (currently only OpenSSL is supported) - moved some members/fields from IPCMessage (and underlying IPCMESSAGE) to IPCRequest to allow for a more generic use of IPCMessage/IPCMESSAGE 2002/11/01 Martin Preuss ------------------------------------------------ - further work on IPC stuff - switched normal pointer usage to usage of "SmartPointer" - added IPCRequest - added IPCRequestService - added IPCRequestServer - added new test module to cfgtest: "ipc" 2002/10/31 Martin Preuss ------------------------------------------------ - chameleonplus/error is now better usable - moved ipc stuff into its own sublibrary - added IPCServiceTCP, IPCEndPointTCP - copied CTPointer to chameleonplus/smartpointer.h and adapted it to be used as a part of chameleonplus. I intend to use this really nice class in other projects, too. I will also switch usage of normal pointers in the IPC sublibrary to the usage of SmartPointer. Later I will make CTPointer just a "#define CTPointer SmartPointer". - improved IPCServiceTCP::walkEndPoints 2002/10/30 Martin Preuss ------------------------------------------------ - added IPCService, modified IPCEndPoint - changed default installation directory to "/usr/local", since the OpenHBCI configure script otherwise doesn't work. 2002/10/29 Martin Preuss ------------------------------------------------ - automake/autoconf/configure scripts: - improved KDE/QT detection - added asynchronous reading and writing methods to IPCEndPoint ============================================================================== 2002/10/25 MARK: Released version 0.6final ============================================================================== 2002/10/25 Martin Preuss ------------------------------------------------ - cleanups prior to release of the final version 0.6 - make libchipcard compile properly under WIN32 (mingw32) - updated man pages - added options to libchipcard-config to retrieve version information about LibChipCard - updated example configuration files - disabled some not-implemented buttons - added help texts to kCardSetup - MAN pages are now installed again - fixed a bug in KCardSetup with QT2/KDE2 - fixed a bug in KPCSCSetup with QT2/KDE2 2002/10/24 Martin Preuss ------------------------------------------------ - cleanups prior to release of the final version 0.6 2002/10/21 Martin Preuss ------------------------------------------------ - modified IPCMessage to be better usable for IPC purposes ;-) - modified IPCEndPoint to be better usable for IPC purposes ;-) 2002/10/20 Martin Preuss ------------------------------------------------ - added new tests to "cfgtest": - status: checks whether the card is inserted - status+: checks whether the card is inserted and reads some bytes from the card - current version now works with Towitoko readers again ;-) - added Matthias Fechner to the THANKS file ============================================================================== 2002/10/19 MARK: Released version 0.6beta6 ============================================================================== 2002/10/19 Martin Preuss ------------------------------------------------ - added verbosity to KMedicalCard to fix pending bugs. ============================================================================== 2002/10/18 MARK: Released version 0.6beta5 ============================================================================== 2002/10/18 Martin Preuss ------------------------------------------------ - fixed some bugs in CTAPI code. This code has gone too long without being checked :-( But now it works again (at least with Kobil trying kmedicalcard and kcarddebugger). 2002/10/16 Martin Preuss ------------------------------------------------ - fixed a bug in CTCard (it didn't copy the service pointer) - minor changes ============================================================================== 2002/10/15 MARK: Released version 0.6beta4 ============================================================================== 2002/10/14 Martin Preuss ------------------------------------------------ - fixed a bug in CTAPI driver management. 2002/10/12 Martin Preuss ------------------------------------------------ - added IPC stuff to chameleon and chameleonplus 2002/10/10 Martin Preuss ------------------------------------------------ - added folder "m4" and filled it with a lot of autotool-macros. This dramatically simplifies the "configure.in" file. It also has the advantage that I can easily use these macros in other projects, too. - changed the structure of libchipcard to provide a better overview 2002/10/09 Martin Preuss ------------------------------------------------ - probably fixed a bug in CTDriverCTAPI concerning "Cyberjack". - added KCardSetup, which will replace KLCSetup. 2002/10/08 Martin Preuss ------------------------------------------------ - CTError: - added constructor which allows referring to other errors. This can be used to report an error occurring in other classes than that which returns the error. - changed communication between CTCard objects and the rest of libchipcard. - improved write performance, since the latest towitoko driver has no problems with some strange 32 or 64 byte boundaries anymore. If you are using the towitoko CTAPI driver then you should update to at least version 2.0.7. - transformed class libChipCard into a manager for CTCardService objects. It will be easy now to add the long planned daemon mode !! As soon as I have finished by other library (libchameleon) I will switch over the network stuff in cardfs to a cleaner mode. ============================================================================== 2002/09/30 MARK: Released version 0.6beta3 If all works well I will make a final release in October. ============================================================================== 2002/09/29 Martin Preuss ------------------------------------------------ - all code now compiles under gcc 3.2, too. - updated some docu files (README, THANKS etc) ============================================================================== 2002/09/12 MARK: Released version 0.6beta2 ============================================================================== 2002/09/09 Martin Preuss ------------------------------------------------ - started porting some system dependant classes to WIN32 2002/09/01 Martin Preuss ------------------------------------------------ - fixed a bug in CTFileBase which caused it to loose blocks when trying to write to a file while the card is full. In that case all blocks already allocated by a new file would be lost (marked "used" in the FAT but not assigned to any CTDirEntry). - fixed a bug in CTMemoryCard: ChangePin used a false INS code. - fixed a bug in tool memcard: it always wrote to address 0 - added "-p" option to memcard to allow setting a pin (does not work with my cards here, as it seems [SLE4428]) 2002/08/31 Martin Preuss ------------------------------------------------ - restored support for FreeBSD. Now libchipcard can be compiled under FreeBSD 4.6.2 using KDE 3. Please note that you have to use "gmake" instead of make under FreeBSD! PC/SC support is available under FreeBSD, too. ============================================================================== 2002/08/19 MARK: Released version 0.6beta1 ============================================================================== 2002/08/19 Martin Preuss ------------------------------------------------ - fixed a bug in CTLibloaderPCSC when no PC/SC is available - if no PC/SC then kpcscsetup will not be compiled 2002/08/18 Martin Preuss ------------------------------------------------ - changes in protocol between file server and client: now the first argument the client sends is its id. This can later be used to check for which client an operation is to be performed. - improved API documentation - added many README files - updated doc/html/development - updated main README - fixed a bug that caused kpcscsetup not to compile with qt2 2002/08/17 Martin Preuss ------------------------------------------------ - moved all card file system stuff into its own folder and library - added CardFS daemon. This daemon can be used by other programs to gain access to the LibChipCard-CardFS 1.0. This way multiple processes can work with the card without corrupting data on the card (hopefully ;-). - created class for lufs (http://lufs.sf.net), now reading a file from the card works. - added CTFileBase::rename() - added command "mv" to ctfstool to allow moving a file/directory. This works similar to its pendant in the unix world (e.g. moving a file from one folder to another etc.) - improved CARDFS daemon: If there is no connection waiting then he will start writing the changed data to the card. If no data is left to be written then the daemon will stretch the waiting time thus minimizing his system load affect. - copied the version of the smart pointer from OpenHBCI project back to this, since the OpenHBCIversion was newer. However, there is no problem since I'm the author of these classes. - improved documentation about the file system 2002/08/14 Martin Preuss ------------------------------------------------ - further work on new filesystem: - renamed some classes of the old filesystem, I need some of these names for the new file system. That isn't much of a problem since the old file system will be completely replaced by the new one. For compatibility reasons I keep the classes of the old file system to allow reading/writing of cards with that file system. - completed CTFileBase - completed CTFile and CTDirectory Now I can concentrate on debugging and adding some management methods. - added ctfstoolold which will continue reading/writing old file systems - started working on new ctfstool - completed new file system, completed new ctfstool - ctfstoolold is now only able to READ files off a card, it cannot write them to a card since the old file system is deprecated. 2002/08/13 Martin Preuss ------------------------------------------------ - HBCICard: transformed s_card_id to HBCICard::CardData in analogy to HBCICard::instituteData. - further work on new file system 2002/08/10 Martin Preuss ------------------------------------------------ - further work on new filesystem, completed CTSuperBlock and CTCryptedBlockMedium 2002/08/09 Martin Preuss ------------------------------------------------ - improved API documentation - started working on the second file system for chipcards 2002/08/08 Martin Preuss ------------------------------------------------ - removed "winscard.h" since SCARD support is no longer supported under Windows. Sorry, but SCARD does not work with memory cards as it seems. - now even when using PC/SC we are able to check whether there is a card inserted or not. - KMedicalCard: error messages are now readable (error was shown, but the detailed reason was hidden due to the desktop width) - CTCommand: - Now all members are private, you can access them via methods. This is much cleaner, and it allows further internal changes to not appear in the API. - renamed trailer1 to sw1() (so called in all docus I know) - renamed trailer2 to sw2() (so called in all docus I know) - added many consts - libChipCard: Now all members are private, to acess them you have to use the methodes. - CTConfig: same thing. 2002/08/07 Martin Preuss ------------------------------------------------ - added KDE tool "kPCSCSetup" which allows setting up the PC/SC environment - added "winscard.h" taken from pcsc-lite 1.1.1 (MUSCLE) - CTCard/Terminal: retrying of commands is now done in CTCard, this way I don't have to implement these checks in each driver/terminal. 2002/08/06 Martin Preuss ------------------------------------------------ - CTTerminal: simplified and cleaned up, made members private - CTCard: - removed slot (this might be handled by creating different terminals for different slots of a terminal). - added parameter to closeCard() to enforce disconnection of a card - CTCommand: removed sad and dad, these are determined by the driver. ============================================================================== 2002/08/05 MARK: Released version 0.5.3 ============================================================================== 2002/08/05 Martin Preuss ------------------------------------------------ - fixed some serious bugs in memcard tool. It should now work as intended. - modified and added a patch submitted by Georg Sauthoff to allow creation of Gentoo source packages. 2002/08/02 Martin Preuss ------------------------------------------------ - cleaned up includes - added driver and terminal which uses SCard (MUSCLE) for interaction with the card reader (still not ported to Windows !) ============================================================================== 2002/07/26 MARK: Released version 0.5.2 ============================================================================== 2002/07/25 Martin Preuss ------------------------------------------------ - updated documentation in doc/html - forgot to make libchipcard save the new attributes (hasDisplay, hasKeyPad). Fixed. 2002/07/24 Martin Preuss ------------------------------------------------ - added options to hbcicard tool to allow setting of country code and bank code. - added "haskeypad" and "hasdisplay" to CTConfig - added HBCICard::verifyPin() without argument. This method lets the user enter the pin via the terminals keypad. ============================================================================== 2002/06/24 MARK: Released version 0.5.1 ============================================================================== 2002/06/22 Martin Preuss ------------------------------------------------ - fixed a bug that caused libchipcard not to recognize "other" types. - changed Towitoko specific stuff, since Towitoko uses different port values for WIN32 and Linux. - fixed bugs in tools which cause them to segfault if no command was given ============================================================================== 2002/06/22 MARK: Released version 0.5 ============================================================================== 2002/06/22 Martin Preuss ------------------------------------------------ - removed network specific stuff, that might come in 0.6 or something like that, since I have not much time for now ============================================================================== 2002/06/12 MARK: Released version 0.5beta2 ============================================================================== 2002/06/11 Martin Preuss ------------------------------------------------ - added inclusion of "ctdriver.h" to cterror.cpp 2002/06/10 Martin Preuss ------------------------------------------------ - HBCICard: added method cardNumber() which returns exactly that ;-) 2002/06/09 Martin Preuss ------------------------------------------------ - fixed a severe bug in CTPointer which caused in sometimes to throw an exception when trying to attach to an unattached pointer. 2002/06/07 Martin Preuss ------------------------------------------------ - HBCICard: added new sub class instituteData which replaces s_institute_id. This new class is now returned by getInstituteData and needed by putInstituteData. The latter method supports changing of institute data and writing it to the card. This is needed for some DDV-1 cards which are provided by some credit institutes with no user id stored on it. I'll need to change "HBCIChipCard" in OpenHBCI, too. - added new tool: hbcicard. This tool now allows reading and manipulation of the institute data stored on a HBCI card - fixed a bug that libChipCard::_findTerminal() not to select the first terminal in the configuration file if no shortname is given. - added new tab to KCardDebugger: Special tab for HBCI cards - fixed a bug in HBCICard::_getKeyVersion0 that caused it to return a false number. - added new tab to KCardDebugger: Special tab for German medical cards - added objectDescription(), it returns the description of the object pointed to (please note that setDescription() only changes the description of the pointer itself). 2002/06/06 Martin Preuss ------------------------------------------------ - now the i18n files are installed to proper places ============================================================================== 2002/06/06 MARK: Released version 0.5beta1 ============================================================================== 2002/06/05 Martin Preuss ------------------------------------------------ - ctpointer.h: added missing check for _delete in destructor 2002/06/04 Martin Preuss ------------------------------------------------ - HBCICard: - added a warning to the debugging output to mark which area shows your PIN and should therefore be deleted prior to submitting the output for bug reporting. 2002/06/03 Martin Preuss ------------------------------------------------ - CTCard: - added selectFile(), two basic commands to select a file on a card. - CTProcessorCard: - added fallback mechanism to selectXX methods. They now first try to execute the command intended, and if that fails they call selectFile() - selectXX methods now only try the fallback if the error returned was not 6a,82 ("File Not Found") - HBCICard: - removed breakpoint from verifyPin() 2002/06/02 Martin Preuss ------------------------------------------------ - added information directoy to output of "kio_card". It shows information about all card readers which are configured. - added retry code to CTTerminalCTAPI::execCommand() that is executed upon error 0,67,0 (wrong length of ISO command). This should fix a bug occurring when selecting files on some processor cards. - added "CTCard::cardTypes()", which SHOULD be overloaded by inheriting classes to return a comma separated list of card types THAT card belongs to, e.g. a HBCI card would return "CTProcessorCard,HBCICard". 2002/06/01 Martin Preuss ------------------------------------------------ - fixed bugs which occurred with Kobil drivers: - CTCard::readBinary() aborted when reading beyond end of file (it should rather read all data until the end and then return the data gathered so far) - CTTerminalCTAPI::execCommand() aborted on error "0x6c" rather than taking the proposed actions (which is to restart the command with the size advised by the driver in SW2) - excluded some classes from normal API doc generation. These are classes clearly marked as internal. - further work on CTDriverNet. I guess it will not be finished for version 0.5. But I think I will release a new major beta version anyway, since there are some very deep changes which have to be tested. 2002/05/31 Martin Preuss ------------------------------------------------ - improved CTCard::readBinary/updateBinary. Now there are no size restrictions. Offset is now a normal INT to enable future use with next generation memory cards (more than 64KB). This code has moved from CTCardMedium to CTCard. - CTCard::updateBinary now takes care of the 32 byte boundary, which MUST NOT be crossed when writing bytes to a Towitoko reader. - added tool "memcard". This allows to read/write data from/to a memory card. - added CTDriver::driverCharacteristics(). This may be used to return some usefull flags about the driver. - added configure option "--enable-full-doc" which enables "make srcdoc" to create the full apidoc, including every class in the "src/chipcard" subdir. Without this switch "make srcdoc" will only create an API documentation about the classes a developer will need, no internal class will be included. - reorganized the library, cleaned up the namespace: - libChipCard is now better abstracted from CTAPI drivers. Generally it should now be possible to write wrappers for other drivers as well (e.g. pc/sc drivers where CTAPI drivers are missing). Well, this is not directly supported for now, but it now is possible. - removed all those "c_" classes from API namespace (there are still some classes of this type but they are not part of the API). The prefix "c_" now changed to "CT" in most cases - introduced new class "CTDriver" which replaces the "c_ctapi*" stuff. Now there is only ONE prototype for all kinds of drivers, which a real driver inherits. The only driver that does (for now) is the class "CTDriverCTAPI". - introduced the class "CTDriverManager", which now does most of the stuff the class "libChipCard" previously did. It handles the list of known drivers and card readers - struct "ctCommand" has become class "CTCommand" and resides in its own source files. It did loose its member "le" which actually wasn't used anymore. - each "CTDriver" class now holds a list of known/used terminals that are driven by that driver. This list has been in class "libChipCard" in previous versions. - added "drivertype" to "[term]" section of the configuration file. This defaults to "ctapi". It is used to determine the type of the driver. For now the only valid type is "ctapi". - added the ability to lock a terminal for exclusive use by one card. This is needed for the network mode to come. CTCard now calls this method upon connect to the card. If the card is closed (disconnected) then the terminal gets unlocked. - removed obsolete methods {open,close}HBCICard from HBCICard - changed names of the CTAPI error codes from k_CTAPI_ERROR_XX to k_CTERROR_XX, because they do not only apply to CTAPI drivers. - more abstraction from CTAPI. Now it is up to the driver how it interacts with its CTTerminal class. Please note that each driver should have its own CTTerminal derived class ! So when implementing a new driver you have to create at least two classes: CTTerminalYOURDRIVER and CTDriverYOURDRIVER. 2002/05/30 Martin Preuss ------------------------------------------------ - started reorganizing this library internally. Hopefully only a few things will get to the API level. Next version will not rely so much on CTAPI 2002/05/29 Martin Preuss ------------------------------------------------ - changed CTTerminal: - added locking mechanism (lockTerminal/unlockTerminal) - therefore a client registering scheme had to be introduced. This is done transparently by CTCard, so the application developer doesn't have to deal with it. - registerCard(): usually called by CTCard, hence the name. This aquires an ID from the CTTerminal. This id is used when checking if the terminal is locked by someone else - unregisterCard(): frees the ID at the terminal, removes possible lock. - changed the way libChipCard creates new CTTerminals. This doesn't affect application developers, since this is internal stuff between CTCard and libChipCard. Now there are these methods in libChipCard: - registerCard(): This is usually called by CTCard, hence the name. It - loads the apropriate driver (if it not already is) - creates a CTTerminal (if it not already exists) - registers with this terminal, thus getting an ID from the terminal. This is needed for the new lock/unlock mechanism. This method does NOT call openTerminal() !! This is now done by CTCard. 2002/05/28 Martin Preuss ------------------------------------------------ - added CTInetAddress, CTSocket. Thes are taken from my other project AqMoney and adapted to libchipcard. - added additional (and optional) parameter to constructor of CTError. This can be used to directly give an explanation. - added "_command" to CTTerminal to be used by CTServer. Now really ALL communication with the CTAPI is performed via CTTerminal. 2002/05/27 Martin Preuss ------------------------------------------------ - incorporated changes to c_ctapilib.{cpp,h} submitted by Torsten Pfuetzenreuter to make libChipCard compilable with Visual-C++. Thanks Torsten ! - CTTerminal now honours returncode 0x67 ("Wrong Length") in addition to 0x6c) and retries the command with the exact length returned. If the exact size proposed is 0 then we try both possible sizes: 0 and 256. So with this libChipCard should work with more cards. - libChipCard::terminals() now returns a copy of the terminal list instead of its address. - added class CTService (and ctservice.cpp), new CTServer now inherits it as CTClient will. - class CTServer finished, will now start working on CTClient - updated some info files (README, NEWS, TODO) - changed specfile to use @prefix@ - CTClient done, I can now start working on c_ctapinet.{cpp,h} - added CTClient to CVS 2002/05/26 Martin Preuss ------------------------------------------------ - improved search functions to find QT and KDE (now works with Debian again). - changed Makefile.am's of especially the KDE applications to allow building of Debian packages - "number" in config file is now obsolete, added the ability to determine this number automatically. This is achieved by addition of the methods c_ctapi::registerClient() and c_ctapi::unregisterClient() which are now called by CTTerminal::openTerminal()/CTTerminal::closeTerminal(), respectively. I need this especially for the netowrked/daemon mode to come in the next major release - readded c_ctapi-cyberjack (was lost due to cvs problems) - added CTServer, started working on a Client-Server-Framework - added methods to CTTermSection for import/export from/to BER-TLV tags - added ctservice.h - added toTLVString()/fromTLVString() and a new constructor to CTError - replaced old specfile with that submitted by Antonio Cavallo - fixed RPM-specific bugs in the Makefile.am's of the KDE subdirectory (fix also submitted by Antonio. Thanks!!) ============================================================================== 2002/05/25 MARK: Released version 0.4.2 ============================================================================== 2002/05/25 Martin Preuss ------------------------------------------------ - kCardDebugger is back again ;-) The new rewritten code has now the same functionality as it has in previous versions so it now is included again in normal build. It scans faster now. - added development info to package - better handling of destination directories for manpages (may now be given to ./configure with "--mandir=DIR". - minor changes in Makefile.am-files: "make distclean" now also does "make mrproper" to remove all moc and ui-derived files - make now ignores an error that occurrs when UIC tries to compile a user interface which contains KDE widgets. usually you'll see error 127 (relocation error) which can be ignored, since the output is valid anyway. This is an ugly hack but I don't know how to work around it otherwise. 2002/05/23 Martin Preuss ------------------------------------------------ - Happy birthday "Grundgesetz" ;-) (German constitution, May 23, 1949) - repaired CVS, now CVS access works again - removed some "return"s from void methods in CTFileSystem - added new result-codes to CTError to be treated as "ok", those are GSM result codes - fixed a bug in KLCSetup when editing a terminal. In that case the list of readers was not updated. - made the port selector in KLCSetup editable, this is needed for "Other" devices, which use this field to select a port number instead of a symbolic name. - libchipcard.m4 reintroduced (disappeared due to some problems with CVS) - added a man page for libchipcard.conf 2002/05/21 Martin Preuss ------------------------------------------------ - added configure option to specify where to install KDE applications, default is to install in KDE system directory 2002-05-15 Martin Preuss ------------------------------------------------ - added manual page for ctfstool 2002-05-15 Martin Preuss ------------------------------------------------ - report an error if CTCard::reopenCard() is called 2002/05/15: Martin Preuss ------------------------------------------------ - improved error reporting code in CTTerminal. Now on error he information about which command failed is included in the info field of CTError. - added German translation for KCardDebugger - moved ctfstool into its own directory 2002/05/14: Martin Preuss ------------------------------------------------ - libchipcard.{h,cpp}: added member configFileName that allows to specify the name of the configuration file. That might be needed for the daemon mode to come. - added support for SCT-Reiner Cyberjack USB. Will be tested next week, I recently ordered one of their readers - now better support for other CTAPI providong readers. Other drivers can give a port number to be directly used with the CTAPI (i.e. the "port" field in the configuration file specifies this number instead of a port name) - added libchipcard.m4 This makes building applications based on libchipcard easier. You get all necessary flags by the new autoconf/automake macro "AC_LIBCHIPCARD" 2002/05/12: Martin Preuss ------------------------------------------------ - added CTError::explanation() which now returns a string translation of the error codes. If no info is given upon creation of a CTError object then this explanation will be set as info. That make CTTerminal::execCommand() now give some more usefull information about an error. All programs which used CTError::errorString() will benefit from this update. - now CTTLV works more according to the ISO standard. Added support for simple TLV tags - kCardDebugger is now able to select files on memory cards. - added support for Towitoko USB devices. Well, that support only works if the Towitoko driver itself is compiled with USB support generally achieved by config-option "--enable-usb". 2002/05/11: Martin Preuss ------------------------------------------------ - now openCard()/closeCard() work the way they were intended to. Therefore card specific methods like openHBCICard() are not needed anymore. These methods still exist, but they issue a warning upon call. Now all CTCard derived classes should use the intended methods. - added methods to CTCard which allow to identify a special card after beeing opened as CTCard() objects. These methods are reopenCard() and cardType(). - rewrote kCardDebugger. It is now easier to extend. Maybe I will add some tabs for cards already supported directly (such as KVKCard, HBCICard). 2002/05/08: Martin Preuss ------------------------------------------------ - started on a card debugger for KDE (kCardDebugger) 2002/05/07: Martin Preuss ------------------------------------------------ - moved all QT tools/programs to KDE, adding internationalisation to all those tools. German translation provided 2002/05/05: Martin Preuss ------------------------------------------------ - added methods to CTFileBase that allow to act on records of a file. Those methods are - readRecord() : reads a whole record - writeRecord() : writes a whole record (or appends one) - removeRecord() : removes a record from the file - sizeRecord() : returns the size of a record 2002/05/04: Martin Preuss ------------------------------------------------ - fixed a bug in KIO_SLAVE , now errors that occur during execution are reported to the user as intended - fixed a minor bug that appeared when the username for encrypted card file system was longer than 8 bytes 2002/05/03: Martin Preuss ------------------------------------------------ - added encryption If desired the data on a card will be encrypted using 2 key triple DES. Therefore OpenSSL is needed. If OpenSSL does not exist then encryption mode is just not available. 2002/04/29: Martin Preuss ------------------------------------------------ - improved documentation, fixed some bugs here and there 2002/04/26: Martin Preuss ------------------------------------------------ - fixed a severe bug in data cache 2002/04/25: Martin Preuss ------------------------------------------------ - major rewrite of the card filesystem. It should work better now, but it still needs testing !! - cleaned up name space 2002/04/23: Martin Preuss ------------------------------------------------ - added KMedicalCard. This is an improved version of qkvk. It know features internationalization and compiles under KDE. - improved KIO slave for "card:/" protocol. - fixed some bugs in CTFilesystem and friends 2002/04/22: Martin Preuss ------------------------------------------------ - added classes CTFileSystem, CTFile and CTDirectory. These classes implement a file system on a memory card. They are under heavy debugging, so for now I recommend against using these classes to store important data. - added kio_card, a new protocol to KDE. This allows browsing through the CTCardFS (memory card file system introduced by libchipcard) with konqueror (KDE browser) 2002/04/06: Martin Preuss ------------------------------------------------ - changes in configure script, now libchipcard compiles with QT2 and QT3, as you choose 2002/03/30: Martin Preuss ------------------------------------------------ - fixed a bug that caused qlcsetup to loose terminal settings - major internal changes/fixes to the configure script now this library should compile even under Debian Linux 3.0. - added ability to create RPM and DEB packages to "Makefile". 2002/03/27: Martin Preuss ------------------------------------------------ - now we are able to build a Windows-DLL when compiling under mingw32 system ! - corrected a bug that prevented CTCard from calculating the correct size of a memory card. 2002/03/19: Martin Preuss ------------------------------------------------ - support for type 1 HBCI cards debugged, now it works !! 2002/03/17: Martin Preuss ------------------------------------------------ - added a setup utility for libChipCard using QT. 2002/03/16: Martin Preuss ------------------------------------------------ - started working on a setup utility for libchipcard using QT. 2002/03/14: Martin Preuss ------------------------------------------------ - added support for Windows. Libchipcard compiles under mingw32 (I used their msys+mingw). The executables should run at least under Windows XP and Windows98. Under this systems the CTAPI libraries have other names than under Unix-like systems. Towitoko drivers are: - "c:\windows\ct32.dll" - "c:\windows\cttwkw32.dll" This is the path you should give as "driver" in the "[term]" section of your configuration file. - configure sets path and name of the global configuration file according to the target system: - Windows: "c:\windows\libchipcard.ini" - Linux, FreeBSD: "/etc/libchipcard.conf" You can now give this name as an argument to configure (see "--help"). 2002/03/13: Martin Preuss ------------------------------------------------ - added support for FreeBSD. Therefore I had to patch the source code of the Towitoko CTAPI driver. Since this is the only CTAPI running under FreeBSD (does anybody know about others?) FreeBSD support is only possible with Towitoko readers. 2002/03/12: Martin Preuss ------------------------------------------------ - added "defaulTerminal" to class "libChipCard". Now you can change the terminal to use after CTCard or derived objects are initialized. You do this by giving an empty terminalName to their constructors. Everytime you want to access the card, the current default terminal is used. See "qkvk" on how this works. - "configure" now searches for the library which contains the library loading functions (dlopen, dlclose etc) 2002/03/11: Martin Preuss ------------------------------------------------ - libchipcard now uses a configuration file ("/etc/libchipcard.conf") to check which CTAPI is to be loaded at runtime. This makes it possible to link programs and libraries against libchipcard without a need to have a card reader. There will only be an error message when you try to communicate with a card reader that does not exist. 2002/03/07: Martin Preuss ------------------------------------------------ - "CTCard::_getStatus()" and thereby all derived methods have been improved to handle CTAPI drivers which return a full TLV upon "GET_STATUS" commands. This allows KOBIL KAAN readers to be used with libchipcard again. - moved static variables and terminal opening/closing from CTCard to CTTerminal (terminalPort, terminalHandle) 2002/01/25: Martin Preuss ------------------------------------------------ - changed the meaning of method CTCard::isInserted(), this method now only reports if the card is INSERTED, the card does not have to be CONNECTED, too. - added CTCard::isConnected(), which now checks if the card is CONNECTED. 2002/01/09: Martin Preuss ------------------------------------------------ - started working on version 0.2 - now the automatic terminal mode is the only mode allowed - implemented a better mechanism to return result codes - removed CTKVKCard::writeCardData(), because you should not use that function at all. And I do not know if it even is allowed to do so. Well, if you want to write data to it (thus using it as a simple memory card) use the class CTMemoryCard directly 2002/01/06: Martin Preuss ------------------------------------------------ - added a port selector to qkvk, just to let you select the port your reader is at (turning version of qkvk to 0.1.1). 2002/01/05: Martin Preuss ------------------------------------------------ - fixed a bug in CTCard which occurred in automatic terminal mode: Calling "isInserted" lead to a SegFault when there where no open card. Now in this case "isInserted" simply returns "false", since there can be no card connected if none is open. 2001/12/30: Martin Preuss ------------------------------------------------ - HBCICard: added openHBCICard() and closeHBCICard(), now this class checks the type on inserted HBCI card whenever it gets opened via openHBCICard. This may be considered a bugfix ;-) 2001/12/29: Martin Preuss ------------------------------------------------ - added automatic terminal mode. Description: When you open the first chip card a static CTTerminal object will be created and opened. After the last chip card is closed the created CTTerminal object will be closed and destroyed. This way you do not have to care about the terminal, it makes using chip cards much easier. This mode is selected by omitting the CTTerminal pointer in the card's constructor. Please note that you should NOT mix the usage of both constructor types in a program ! - added tutorial2 This is exactly the same as tutorial1, except that it uses the new automatic terminal mode. - changed kvktest and qkvk to use the new mode 2001/12/27: Martin Preuss ------------------------------------------------ - added a tiny QT program to show the content of your health insurance card this only compiles if you have QT 2.0 or higher installed, otherwise it is just ignored 2001/12/23: Martin Preuss ------------------------------------------------ - BUGFIX: HBCICard::verifyPin() now only returns true if the pin could be verified positive 2001/12/22: Martin Preuss ------------------------------------------------ - KOBIL chip card readers now work ;-) - changed some constants, so that we can transparently work with other CTAPIs than libtowitoko - PORT_COM1 -> k_CT_PORT_COM1 - PORT_COM2 -> k_CT_PORT_COM2 - PORT_COM3 -> k_CT_PORT_COM3 - PORT_COM4 -> k_CT_PORT_COM4 - HOST -> k_CT_HOST - CT -> k_CT_CT That was necessary since KOBIL needs other values at least for the PORT stuff. This way you simply take the values libchipcard as found for you. 2001/12/21: Martin Preuss ------------------------------------------------ - added support for KOBIL chip card readers 2001/12/09: Martin Preuss ------------------------------------------------ - minor corrections in API documentation - reduced usage of pointers - cleaned up the test directory 2001/12/07: Martin Preuss ------------------------------------------------ - added support for type 1 HBCI chip cards (not tested though, because I dont have those cards for now 2001/12/02: Martin Preuss ------------------------------------------------ - applied a patch submitted by Micha Lenk for correct calculation of the checksum for ctkvkcard 2001/12/01: Martin Preuss ------------------------------------------------ - Changed name of class ECCard to HBCICard, because this class was intended to be used for accessing hbci cards rather than for euro cheque cards