После завершения разработки 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
Спасибо, хотя, к сожалению, это не сработало. Такое же сообщение об ошибке: ссылочные данные не найдены. Думаю, я попытаюсь снова связаться с Гемалто и посмотреть, смогут ли они помочь. – bp14
Можете ли вы попробовать '-keyind 0 -keyver 32'? Это была ключевая версия другой карты Гемалто. Если у вас есть решение, поделитесь им. –
К сожалению, я снова получил возвращаемые данные not found. – bp14