2015-03-22 10 views
3

После завершения разработки Java-карты на эмуляторах теперь я имею дело с реальной картой Java (Gemalto IDCore 3010). Я столкнулся с Global Platform, но у меня проблемы даже с самым простым примером кода, который будет перечислять апплеты на карте.Открытие безопасного соединения с Java-картой и глобальной платформой

Это исходный код:

mode_201 
enable_trace 
establish_context 
card_connect 
select -AID a0000000030000 
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f // Open secure channel 
get_status -element e0 
card_disconnect 
release_context 

Что я изменил и это, как это сейчас:

//I changed this, because the Card Management & API is compliant with GP2.1.1. 
mode_211 
enable_trace 
establish_context 
//Switches are not necessary as I am using only one single-slot card reader 
card_connect 
//The auto-detected ISD AID of the card is: A000000018434D00 
select -AID A000000018434D00 
//This is the line where the command fails 
open_sc -security 0 -keyind 0 -keyver 0 -keyDerivation none -key 47454d5850524553534f53414d504c45 // Open secure channel 
//This would list applets and packages and security domains 
get_status -element e0 
card_disconnect 
release_context 

На странице Global Platform можно найти, что они являются переключатели для open_sc команда:

open_sc -keyind x -keyver x -key xyz -mac_key xyz -enc_key xyz -kek_key xyz -security x -scp x -scpimpl x -keyDerivation x 
Open secure channel 

Но, к сожалению Я не мог найти достаточно информации об этих коммутаторах.

  • keyind: Единственная информация, которую я нашел, что это ключевой показатель, который я предположил бы тоже все сам.
  • ключver: Keyset версия. То же, что и выше.
  • ключ: Я читал, что если у меня есть карта, которая использует деривацию ключа, я должен включить режим деривации с параметром -keyDerivation, и я должен указать с ключом-ключом (mother) ключом. Итак, здесь я предоставил свой основной ключ (4F454D5850524553534F53414D504C45).
  • mac_key: Это не должно быть релевантно, поскольку оно рассчитывается из главного ключа.
  • enc_key: Это не должно быть релевантно, поскольку оно рассчитывается из главного ключа.
  • kek_key: Это не должно быть релевантно, поскольку оно рассчитывается из главного ключа.
  • security: Информация, которую я нашел, это: 0: clear, 1: MAC, 3: MAC + ENC. Поскольку в таблице моей карты я не мог найти что-то вроде этого, я выбрал «0».
  • scp: Протокол безопасного канала (1 SCP01, 2 SCP02, по умолчанию не установлен). Не обязательно указывать в явном виде. Моя карта поддерживает как SCP01, так и SCP02.
  • scpimpl: Реализация безопасного канала (по умолчанию не установлено). Не обязательно указывать в явном виде.
  • keyDerivation: Возможные значения: «none», «visa2» или «emvcps11». Кроме того, поскольку я не мог найти информацию об этом в таблице данных, я складываю ее в «none».

Это сообщение об ошибке, что я получаю с измененным кодом:

C:\JavaCard\GPShell-1.4.4>GPShell.exe list.txt 
mode_211 
enable_trace 
establish_context 
card_connect 
select -AID A000000018434D00 
Command --> 00A4040008A000000018434D00 
Wrapped command --> 00A4040008A000000018434D00 
Response <-- 6F198408A000000018434D00A50D9F6E061291518101009F6501FF9000 
open_sc -security 0 -keyind 0 -keyver 0 -keyDerivation none -key 47454d585052455 
3534f53414d504c45 // Open secure channel 
Command --> 80CA006600 
Wrapped command --> 80CA006600 
Response <-- 6A88 
GP211_get_secure_channel_protocol_details() returns 0x80206A88 (6A88: Referenced 
data not found.) 

Может кто-нибудь сказать мне, что это не так, и как я должен параметризацию и выполнить open_sc команду? Большое спасибо!

Решение: Это рабочая версия:

mode_201 
enable_trace 
establish_context 
card_connect 
select -AID A000000018434D00 
open_sc -scp 1 -scpimpl 0x15 -security 3 -keyind 0 -keyver 0 -key 47454d5850524553534f53414d504c45 -keyDerivation visa2 
get_status -element e0 
card_disconnect 
release_context 

ответ

1

К сожалению, в отличие от других устройств повседневной жизни полные руководства или инструкции часто не обеспечивается с помощью смарт-карт. Если у вас нет некоторых необходимых параметров, вы теряетесь. Попробуйте использовать переключатель mode_201:

mode_201 
enable_trace 
enable_timer 
establish_context 
card_connect 
select -AID A000000018434D00 
open_sc -security 3 -keyind 0 -keyver 0 -key 47454d5850524553534f53414d504c45 -keyDerivation visa2 // Open secure channel 
get_status -element e0 
card_disconnect 
release_context 

Существует пример файл называется listgemXpressoProR3_2E64.txt: https://sourceforge.net/p/globalplatform/code/HEAD/tree/trunk/gpshell/helloInstallgemXpressoProR3_2E64.txt

Может быть, ваша карта совместима с этой Gemalto карты.

+0

Спасибо, хотя, к сожалению, это не сработало. Такое же сообщение об ошибке: ссылочные данные не найдены. Думаю, я попытаюсь снова связаться с Гемалто и посмотреть, смогут ли они помочь. – bp14

+0

Можете ли вы попробовать '-keyind 0 -keyver 32'? Это была ключевая версия другой карты Гемалто. Если у вас есть решение, поделитесь им. –

+0

К сожалению, я снова получил возвращаемые данные not found. – bp14

-1

Пожалуйста, попробуйте ниже скрипт:

mode_211 
gemXpressoPro 
enable_trace 
establish_context 
card_connect -readerNumber 1 
select -AID A000000018434D00 
open_sc -security 3 -keyind 0 -keyver 0 -key 47454d5850524553534f53414d504c45 -mac_key 47454d5850524553534f53414d504c45 -enc_key 47454d5850524553534f53414d504c45 // Open secure channel 
delete -AID A000000482 
card_disconnect 
release_context