Hallo,
ich habe mir vor Jahren eine X# DLL zusammengebaut, indem ich aus einer C# DLL die benötigte Klasse und Methoden extrahiert und nach X# umgeschrieben habe. Die X# DLL behandelt die CardOSVersionen 4.0, 5.0 und 5.3. Nun gibt es aber nur mehr Karten mit neuen Chips mit der Version ACOS 4.1.
Hat jemand Erfahrung mit solchen Smartcards wie sie für die RKSV (RegistrierKassenSicherheitsVerordnung) verwendet werden?
Angeblich sollte nur der SELECT zu ändern sein, habe ich schon gemacht, hat aber nicht geholfen.
LG Franz
Smartcard Zugriff per X#
Moderator: wriedmann
Re: Smartcard Zugriff per X#
GESUCHT:
Programmierer der gegen Bezahlung entweder meine C# oder X# Testapp um das ACOS 4.1 Protokoll erweitert, X# preferred.
Doku von Globaltrust vorhanden.
Smartcard könnte auch gestellt werden.
LG
Programmierer der gegen Bezahlung entweder meine C# oder X# Testapp um das ACOS 4.1 Protokoll erweitert, X# preferred.
Doku von Globaltrust vorhanden.
Smartcard könnte auch gestellt werden.
LG
Re: Smartcard Zugriff per X#
Hallo,
wenn ich beim Zugriff auf die SmartCard eine alte Karte mit der CardOS Version 5.3 verwende, dann kommt in TransmitApduBytes korrekt retVal 9000 zurück und alles funktioniert. Verwende ich jedoch eine Karte mit der neuen ACOS Version 4.1, dann bringt TransmitApduBytes retVal 6700, was laut www "length incorrect" bedeutet. Ich habe keine Ahnung welche Länge damit gemeint ist und wie ich das beheben kann. Vielleicht kann mir jemand weiterhelfen.
LG Franz
wenn ich beim Zugriff auf die SmartCard eine alte Karte mit der CardOS Version 5.3 verwende, dann kommt in TransmitApduBytes korrekt retVal 9000 zurück und alles funktioniert. Verwende ich jedoch eine Karte mit der neuen ACOS Version 4.1, dann bringt TransmitApduBytes retVal 6700, was laut www "length incorrect" bedeutet. Ich habe keine Ahnung welche Länge damit gemeint ist und wie ich das beheben kann. Vielleicht kann mir jemand weiterhelfen.
LG Franz
Code: Select all
PUBLIC METHOD GetSerialNumber(readerName AS STRING , response OUT STRING ) AS LOGIC
LOCAL retVal AS STRING
LOCAL response2 AS BYTE[]
LOCAL response3 AS BYTE[]
//
TRY
retVal := ""
response2 := NULL
IF SELF:Connect(readerName)
SELF:ExecuteCommand(readerName, "00a40000021fff":ToByteArray(), OUT response2) // 4.1
IF SELF:TransmitApduBytes("00ca018108":ToByteArray(), OUT response3, OUT retVal)
response := response3:ToHexString()
RETURN TRUE
ENDIF
response := ""
RETURN FALSE
ENDIF
response := ""
RETURN FALSE
CATCH
response := ""
RETURN FALSE
END TRY
PUBLIC METHOD TransmitApduBytes(apdu AS BYTE[] , response OUT BYTE[] , retVal OUT STRING ) AS LOGIC
LOCAL receiveBuffer AS BYTE[]
LOCAL sCardError AS SCardError
LOCAL num AS LONG
//
IF SELF:m_Pci == IntPtr.Zero
response := NULL
retVal := "reader not initialized"
RETURN FALSE
ENDIF
receiveBuffer := BYTE[]{ 512 }
sCardError := SELF:m_Reader:Transmit(SELF:m_Pci, apdu, REF receiveBuffer)
IF sCardError != 0
retVal := SCardHelper.StringifyError(sCardError)
response := NULL
RETURN FALSE
ENDIF
num := receiveBuffer:Length
retVal := receiveBuffer:Skip(num - 2):Take(2):ToArray():ToHexString()
IF retVal:Equals("9000")
response := receiveBuffer:Take(num - 2):ToArray()
RETURN TRUE
ENDIF
response := receiveBuffer:Take(num):ToArray()
RETURN FALSE
Re: Smartcard Zugriff per X#
Ich habe inzwischen die Testapp mit den Erweiterungen für die a-trust ACOS-ID 4.1 Smartcards in C# zum Laufen gebracht und diese danach nach X# konvertiert. Der nächste Schritt ist, die Erweiterungen für a-trust ACOS-ID 4.1 in meine X# RKSV DLL zu übertragen, die ich dann in meine Kassenprogramme einbinde.
Globaltrust ACOS-ID 4.1 Smartcards verwenden leider eigene Codes für die Zugriffe. Die Doku ist sehr mau, besteht aus einem A4 Blatt mit einer Reihe Codes ohne nähere Erläuterung für welchen Zweck. Deshalb habe ich diese Routinen noch nicht geschafft. Emails mit Bitte um Hilfe werden nicht beantwortet.
Aber solange wenigstens a-trust Smartcards funktionieren, reicht das aus. Meine Kunden müssen halt dann a-trust Smartcards kaufen, Globaltrust braucht anscheindend meine Kunden nicht.
LG
Globaltrust ACOS-ID 4.1 Smartcards verwenden leider eigene Codes für die Zugriffe. Die Doku ist sehr mau, besteht aus einem A4 Blatt mit einer Reihe Codes ohne nähere Erläuterung für welchen Zweck. Deshalb habe ich diese Routinen noch nicht geschafft. Emails mit Bitte um Hilfe werden nicht beantwortet.
Aber solange wenigstens a-trust Smartcards funktionieren, reicht das aus. Meine Kunden müssen halt dann a-trust Smartcards kaufen, Globaltrust braucht anscheindend meine Kunden nicht.
LG

