2016-05-14 9 views
-1

Ich bin eine Anwendung für Smartcard zu entwickeln und wenn ich mit dem T = 0 Protokoll arbeiten die Anwendung perfekt läuft, aber für T = 1 SCardTransmit Funktion gibtConvert APDU zu Smartcard von protocolo T = 0 bis T = 1

ungültige Parameter ERROR 80100004.

Meine Frage ist der Vektor das gleiche Format für beide Protokolle hat oder das Vektorformat ändern?

public void Trasmision() 
{ 
    **Byte[] vectorSend = { 0x00, 0xa4, 0x04, 0x00, 0x00, 0x6f, 0x65 };** 
    UInt32 inT2 = (UInt32)vectorSend.Length; 
    vectorIn = new Byte[254]; 
    UInt32 inT = (UInt32)vectorIn.Length; 
    IntPtr PT1 =GetPciT0() ; 
    this.rTransmit = SCardTransmit(this.hContext, GetPciT1(), vectorSend, inT2, request, vectorIn, inT); 
} 
+7

Sie sollten Ihren Titel auf Englisch übersetzen :) –

+0

APDU zu PC/SC (SmartCard) Protokoll T1 –

+0

Haben Sie 'SCARD_PROTOCOL_T1' in Ihrem' SCardConnect' Anruf? Haben Sie 'Byte [] versucht vectorSend = {0x00, 0xa4, 0x00, 0x00, 0x02, 0x6f, 0x65, 0x00};' oder 'Byte [] vectorSend = {0x00, 0xa4, 0x04, 0x00, 0x02, 0x6f, 0x65, 0x00}; '(was ist seltsam)? Ist die Karte eine (U) SIM? – vlp

Antwort

0

Während T = 0 kennt nur einen P3, die auf Befehl Fall T = 1 unterscheidet zwischen LC für Länge von Befehlsdaten und LE zur Länge des Antwort werden muss analysiert abhängig. Beachten Sie, dass LE dem Befehlsdatenfeld folgen muss.

Während ich mir der C# API nicht bewusst bin, schätze ich das Problem stammt von der 00 vor 6F. Dies kann nicht LC sein (weil ich anstelle, dass 6F 65 die Befehlsdaten ist, daher sollte es 02 sein) und wie es ist, wird es als erweiterte Längenangabe für ein LC mit 6F 65 interpretiert, aber keine Befehlsdaten folgen.

+0

Hallo und vielen Dank für die Information fijate jetzt habe ich das, dass ich mit einer Anwendung von meinen Chipkarten lese, aber ich liege falsch, sind die entsprechenden Befehle zu arbeiten, sind so gut, oder sollten sie ändern mit T1-Protokoll –

+0

SELECT ISD mit Null-Länge AID 00 a4 04 00 00 SELECT FILE Master File (falls vorhanden) 00 a4 00 00 00 SELECT FILE Master File durch Kennung (falls vorhanden) auf tramajar 00 a4 00 00 02 3f 00 00 –