Pregunta

Estoy tratando de firmar un documento a través de Cryptotech SCR3310 usando Un marco de tarjetas inteligente para .net. Utilizo la demostración del segundo artículo (SmartCardFMWK). Mientras envía a APDucommand, obtendré errores como:

  • para verificar (nuevo apducommand (0x00, 0x20, 0, 1, nulo, 0))) SW1 = 69 SW2 = 83 (método de autenticación bloqueado) Errornr1
  • Para seleccionar archivo (nuevo apducommand (0x00, 0xa4, 0, 0, null, 0)) [SW = 61 SW2 = 2e] [4] Errornr2
  • para obtener respuesta (nuevo apducommand (0x00, 0xc0, 0, 0, nulo, 0)) SW = 68 00 Errornr3

CÓDIGO:

APDUCommand apduVerifyCHV = new APDUCommand(0x00, 0x20, 0, 1, null, 0)
APDUCommand apduSelectFile = new APDUCommand(0x00, 0xA4, 0, 0, null, 0)
APDUResponse apduResp;

CardNative iCard = new CardNative();
iCard.Connect(readers[0], SHARE.Shared, PROTOCOL.T0orT1); //connected
Console.WriteLine("Connects card on reader: " + readers[0]);

// Verify the PIN  (PIN = 12341234)
byte[] pin = new byte[] { 0x31, 0x32, 0x33, 0x34, 0x31, 0x32, 0x33, 0x34 }; 

APDUParam apduParam = new APDUParam();
apduParam.Data = pin;
apduVerifyCHV.Update(apduParam);
apduResp = iCard.Transmit(apduVerifyCHV); //ErrorNr1

// Select the MF (3F00)
apduParam.Data = new byte[] { 0x3F, 0x00 };
apduSelectFile = new APDUCommand(0x00, 0xA4, 0, 0, apduParam.Data, 0);

apduSelectFile.Update(apduParam);
apduResp = iCard.Transmit(apduSelectFile); //ErrorNr2
apduGetResponse.Update(apduParam);
apduResp = iCard.Transmit(apduGetResponse); //ErrorNr3

¿Qué haré para deshacerme de esos errores? Probé la tarjeta con otros programas y no hay errores.

Puede ser que los parámetros de apducommand estén incorrectos. ¿Cómo crees que?

¿Fue útil?

Solución

Si esta tarjeta funciona correctamente con otros programas, la clave es establecer los parámetros apropiados para el comando APDU. Nunca he hecho esto, pero mi amigo tenía algún proyecto universitario relacionado con las tarjetas de estudiantes. Me proporcionó el siguiente enlace con la lista de comandos APDU conocidos. No sé, tal vez te ayude a encontrar la combinación correcta.

Mesa de apdu

Otros consejos

  • El lector de tarjetas inteligentes en preguntas no es relevante, es un dispositivo de puerta de enlace para tarjeta. Tus errores no son del lector sino del tarjeta
  • Realmente necesitas tener un manual para tu tarjeta o puedes probar los comandos de ISO 7816-4
  • Llamar a obtener respuesta generalmente significaría usar el protocolo T = 0, se conecta con t = 0 o t = 1 que es predeterminado a t = 1 para tarjetas modernas que lo admiten.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top