2015-06-11 17 views
0

Я могу прочитать смарт-карту с помощью смартфона смартфонов Tactivo от PB, но не знаком с процессом проверки. Вот пример того, что я должен прочитать вход:Как проверить карту Smart/CAC с использованием ввода Precise Biometrics Tactivo

... 
channel = card.getBasicChannel(); 

     // See www.globalplatform.org for more information about this command. 
     // CLA = 0x80 
     // INS = 0xCa 
     // P1 = 0x9F 
     // P2 = 0x7F 
     // Le = 0x00 
     CommandAPDU GET_DATA_CardProductionLifeCycle = new CommandAPDU(0x80, 0xCA, 0x9F, 0x7F, 0x00); 

     ResponseAPDU cardResponse; 

     // Send the command to the card 
     cardResponse = channel.transmit(GET_DATA_CardProductionLifeCycle); 

     // Check SW1 if we provided wrong Le 
     if (cardResponse.getSW1() == 0x6C) { 
      // Modify the command with correct Le reported by the card in SW2. 
      GET_DATA_CardProductionLifeCycle = new CommandAPDU(0x80, 0xCA, 0x9F, 0x7F, cardResponse.getSW2()); 
      // Re-send the command but now with correct Le 
      cardResponse = channel.transmit(GET_DATA_CardProductionLifeCycle); 
     } 

     // Check if the card has data for us to collect 
     if (cardResponse.getSW1() == 0x61) { 
      // Issue a GET RESPONSE command using SW2 as Le 
      CommandAPDU GET_RESPONSE = new CommandAPDU(0x00, 0xC0, 0x00, 0x00, cardResponse.getSW2()); 
      cardResponse = channel.transmit(GET_RESPONSE); 
     } 

     // Check the final result of the GET DATA CPLC command 
     if (cardResponse.getSW() != 0x9000) { 
      // The card does not support Global Platform 
      System.out.println(String.format("8Card responded with SW:%04x", cardResponse.getSW()));// some sort of SW from the card here... Read as "SW: 6a82 
      System.out.println("9This card does not support the Global Platform " + "GET CPLC command"); 

      return; 
     } 

     // we do not validate the data in this example - we assume that it is 
     // correct... 
... 

Если кто имеет опыт работы с смарт-карты/CAC карта valitaion/аутентификацией, пожалуйста, дайте мне некоторые указания, например, или что-то отрабатывать. Потому что там очень мало документации.

UPDATE: У меня есть приложение для Android, которое я хочу защитить смарт-картой. Я могу прочитать ввод любой смарт-карты, используя считыватель смарт-карт Precise Biometrics Tactivo Smart Card. Как я могу проверить/аутентифицировать этот вход, чтобы разрешить доступ к приложению только определенным пользователям?

+1

Я не понимаю тег android. Также попробуйте уточнить свой вопрос, чтобы избежать опроса или закрытия запросов: это читатель, приложение CAC, смарт-карты в целом? На какой вклад вы ссылаетесь (PIN-код, отпечаток пальца)? И что вы подразумеваете под проверкой? – guidot

+0

См. Обновление. Я имею в виду вход, который я получаю, когда подключаю смарт-карту к считывателю карт. Я могу получить вход с: 'String UID = card.getATR(). ToString();' Как я могу проверить это? Или это неверная переменная для проверки в первую очередь? – hunterInt

ответ

1

ATR не подходит для валидации любого типа, так как он обычно используется тысячами карт.

В то время как карты имеют уникальный идентификатор (конкретный производитель), это может быть легко подделано после того, как будет найдена действительная.

Типичные средства требуют определенной карты (в качестве компонента авторизации два фактора, добавив что-то у вас есть к то йо знать например PIN-код, пароль) является выполнение в внешней аутентификации. Поскольку для этого вам нужно хранить собственный ключ на карте, это не будет вариантом для карты, которой вы просто обладаете.

+0

уважаемое руководство, для бога, пожалуйста, измените свой аватар на более дружелюбную картину: (Скалистый человек, что его лицо разрушено из-за кислотного дождя? :(почему? (Временный комментарий) – Abraham

 Смежные вопросы

  • Нет связанных вопросов^_^