COM Basic

Die Nutzung von PC/SC mittels COM kommt mit wesentlich weniger 
Programmzeilen aus als ein vergleichbares C- oder C++-Programm. Das 
Dialogfeld zur Aufnahme der Eingabefelder fr die PIN und den 
Terminalnamen ist unter Visual Basic schnell zusammengeklickt. Bevor 
jedoch die eigentliche Programmierung losgehen kann, muss man dem 
Projekt noch die Referenzen auf die COM-Objekte hinzufgen. Durch 
Klicken auf den Punkt "Verweise" im "Projekt"- Men gelangt man in den 
dafr zustndigen Dialog. Falls - wie im Falle von PC/SC - keine 
Klassenbibliothek im .tlb- oder .olb-Format verfgbar ist, kann man auch 
direkt auf die drei bentigten DLLs scarddat.dll, scardsrv.dll und 
scardmgr.dll zurckgreifen. Sie enthalten alle notwendigen Informationen. 
Einzige Ausnahme stellt Microsofts Windows 2000 dar, welches auf die drei 
einzelnen DLLs verzichtet und dafr eine Typbibliothek namens 
SCardSsp.tlb bereitstellt. Zu finden sind all diese Dateien im SYTEM32-
Verzeichnis auf jedem Rechner mit installierter PC/SC-Untersttzung.

Durch das Hinzufgen dieser Verweise stehen alle Klassen zur Verfgung, 
die das Programm fr die Definition der drei Objekte ISCard, ISCardCmd 
und ISCardISO7816 bentigt. Whrend ISCard fr das ffnen einer 
Verbindung zur Chipkarte und das grundlegende Management zustndig ist, 
liegt die Aufgabe von ISCardCmd in der Bereitstellung einer APDU. 
ISCardISO7816 ist fr APDUs zum Aufruf der in der ISO 7816-4 definierten 
Standard-Kommandos zustndig.

Fr eine Referenz der im Beispielprogramm verwendeten und aller anderen 
zur Verfgung stehenden Klassen verweise ich auf das MSDN oder besser 
noch die Hilfedatei SCard.chm aus dem frei erhltlichen SDK. Dessen 
Download 
(www.microsoft.com/msdownload/platformsdk/setuplauncher.htm) ist zwar 
selbst bei der Minimal-Installation eine abendfllende Angelegenheit, lohnt 
sich aber schon wegen des enthaltenen Ordners voller Beispielprogramme 
rund um die Kombination von PC/SC und SmartCard.

Das ganze Programm (siehe verify.frm) besteht eigentlich blo aus den zwei 
Methoden VERIFY_Click und ENDE_Click. Whrend letztere das Beenden 
des Programms mittels eines simplen End bernimmt, kmmert sich die erste 
um das Senden der in ein VERIFY-Kommando eingebetteten PIN an die 
Chipkarte.

Dazu stellt VERIFY_Click mittels ISCard.AttachByReader zunchst eine 
Verbindung zu der Chipkarte in dem im Eingabefeld Leser ausgewhlten 
Chipkartenterminal her. Neben dem Terminalnamen sind noch zwei weitere 
Parameter ntig: Die Angabe Exclusive reserviert die Karte fr eine alleinige 
Nutzung durch die Anwendung, und T1 Or T0 sorgt dafr, dass als 
Kommunikationsprotokoll sowohl T=0 als auch T=1 erlaubt ist. Nach dem 
endgltigen Sperren von Zugriffen anderer Programme auf die Karte mittels 
ISCard.Lock ist diese fr Zugriffe jeglicher Art gerstet.

Bevor das VERIFY-Kommando an die Karte gesendet werden kann, muss 
noch eine entsprechende APDU erstellt werden. Dazu lesen die nchsten 
Programmzeilen die vom Anwender im Eingabefeld PIN_Eingabe abgelegte 
PIN aus und kopieren diese in den ByteBuffer namens PIN. Aus diesem 
erstellt ISO7816.VERIFY eine ISO- konforme VERIFY-APDU mit der 
bergebenen PIN im Datenfeld und bergibt diese an ISCardCmd. Der 
Aufruf von ISCard.Transaction sendet schlielich die nun in ISCardCmd 
abgelegte VERIFY-APDU an die Chipkarte.

Zur Auswertung der Antwort kommt wieder ISCardCmd zum Zuge. Dieses 
Objekt enthlt nicht nur die Kommando-APDU, sondern nimmt nach dem 
Senden des Kommandos auch die von der Chipkarte kommende Antwort-
APDU auf. Das Beispielprogramm prft lediglich, ob deren Trailer in den 
Feldern ReplyStatusSW1 und ReplyStatusSW2 die Bytefolge 90h:00h 
enthlt, die eine korrekte PIN kennzeichnet. Eine entsprechende Message-
Box setzt dann auch den Anwender darber in Kenntnis.

Vor dem Beenden von VERIFY_Click muss jetzt nur noch die Karte durch 
den Aufruf von ISCard.UnlockSCard "entsperrt" und danach die Karte 
mittels ISCard.Detach freigegeben werden.
