XFS-сервис класса PIN. Модели SZZT ZT596E F17, F20¶
Поддерживаемые модели:
Модель |
PCI PTS |
Версия прошивки |
---|---|---|
ZT596E |
F17 1.0 |
F17 |
ZT596E |
F20 1.0 |
F20 |
С целью исключения рисков, связанных с неправильным конфигурированием ПО XFS-сервиса, поддержка моделей EPP-клавиатур ZT596 E F17, ZT596 E F20 обеспечивается единым XFS-сервисом. При старте ПО, происходит автоматическое определение протокола управления (F17, F20).
Файлы¶
AlgBase.dll;
EnlargeKey.dat;
ftd2xx.dll;
libeay32.dll;
PinpadC.dll;
PortBase.dll;
shqPS.EPP.ZT59x.exe;
shqSPEPP.dll;
SystemBase.dll;
szzt_layouts.xml;
ZTPinpad.dll.
Настройки XFS-провайдера¶
Раздел реестра: [HKLM\Software\XFS\PHYSICAL_SERVICES\EPP-ZT599\]
Параметры драйвера:
PORT – номер порта (COM1, COM2, и т.п.), к которому подключено устройство.
KEY_STROKE_BEEPER – разрешить/запретить звуковое сопровождение при вводе данных на клавиатуры модели F17, F20. Возможные значения:
YES
(разрешено),NO
(запрещено).CustomerDataInterpretation – интерпретация поля CustomerData (информация о клиенте) в процессе сборки PIN-блоков ANSI/ISO-0/ISO-3.
Возможные значения:
IAI
– поле CustomerData содержит строго IAI-часть PAN-а карты (ISO-7813);WHOLE_PAN
– передается весь PAN, считанный с карты, включая контрольный разряд (соответствует требованиям спецификации CEN/XFS версии 3.03);PAN_WITHOUT_CD
– передается PAN без контрольного разряда (соответствует требованиям спецификации CEN/XFS версий 3.10).
LAYOUT – раскладка клавиатуры. Значения клавиш пишутся слева направо сверху вниз, через запятую.
Возможные значения:
DEFAULT
;0–9
,00
,000
,DECPOINT
,ENTER
,CLEAR
,HELP
,CANCEL
,RES–RES8
,OEM1–OEM6
,UNUSED
(если кнопка не используется).
Значение по умолчанию:
1,2,3,CANCEL,4,5,6,CLEAR,7,8,9,HELP,RES1,0,DECPOINT,ENTER
.Внимание
Параметр LAYOUT не влияет на режим ввода ключа.
SECUREKEYENTRY_LAYOUT_WITH_SHIFT – включает|отключает клавишу Shift, используемую для переключения раскладки клавиатуры.
Возможные значения:
YES
– в режиме ввода ключа две раскладки: основная и альтернативная. Основная раскладка содержит цифры 0..9, альтернативная – буквы A..F. Доступны кнопки ENTER, CLEAR, BACKSPACE, CANCEL, HELP, SHIFT. Расположение кнопок не зависит от LAYOUT и доступно к прочтению средствами WFS_INF_PIN_SECUREKEY_DETAIL. Для переключения между раскладками используется кнопка SHIFT (совпадает с клавишей (.) или, если нет гравировки, то располагается справа от нуля).NO
– плоская раскладка. Расположение цифр:1 2 3 A 4 5 6 B 7 8 9 C E 0 E D
FDK_REMAPPING – в случае если УС оборудовано FDK-кнопками, подключенными через спец.электронику, данный параметр позволяет задать коды FDK-кнопок. По умолчанию принимается следующая раскладка:
L1: FDK8 R1: FDK1 L2: FDK7 R2: FDK2 L3: FDK6 R3: FDK3 L4: FDK5 R4: FDK4
Значение параметра кодируется в соответствии с правилом:
[L|R][1-4]:FDK[1-8](;[L|R][1-4]:FDK[1-8]){7}
. Пример:L1:FDK1;L2:FDK2;L3:FDK3;L4:FDK4;R1:FDK5;R2:FDK6;R3:FDK7;R4:FDK8
.LAST_HANDLED_FW – модель подключенной PIN-клавиатуры ZT59x. Возможные значения – код модели PIN-клавиатуры, например,
H50
,H12
,F17
. При подключении PIN-клавиатуры значение LAST_HANDLED_FW заполняется автоматически. При необходимости его можно указать вручную перед загрузкой ПроАТМ/XFS. При подключении PIN-клавиатуры ПроАТМ/XFS сравнивает ее модель и значение LAST_HANDLED_FW, если они не совпадают, то значение LAST_HANDLED_FW автоматически обновляется.SecureKeyEntry_BackspaceFDK – перечень номеров FDK-кнопок, реализующих логику кнопки BACKSPACE в режиме ввода ключа.
SecureKeyEntry_ClearFDK – перечень номеров FDK-кнопок, реализующих логику кнопки CLEAR в режиме ввода ключа.
SecureKeyEntry_CancelFDK – перечень номеров FDK-кнопок, реализующих логику кнопки CANCEL в режиме ввода ключа.
SecureKeyEntry_EnterFDK – перечень номеров FDK-кнопок, реализующих логику кнопки ENTER в режиме ввода ключа.
Для всех SecureKeyEntry через запятую указываются номера FDK-кнопок, которые реализуют логику очистки, отмены или завершения в режиме ввода ключа.
Внимание
Несмотря на то, что физически все DES/3DES ключи содержатся непосредственно в PIN-клавиатуре, информация об их привязке к XFS-именам, атрибутах использования и пр. заносится в системный реестр Windows (раздел [HKLM\SOFTWARE\XFS\PHYSICAL_SERVICES\EPP-ZT599]
). ПроATM/XFS гарантирует сохранность ранее загруженных DES/3DES ключей при переустановке ПО только, если указанный ключ реестра не подвергается частичному или полному уничтожению.
Информационные запросы¶
WFS_INF_PIN_KEY_DETAIL¶
Уточнение: bLoaded устанавливается в FALSE в том случае, если ключ находится в процессе конструирования (CONSTRUCT/SECURECONSTRUCT) и формально свидетельствует о том, что его нельзя использовать в крипто-операциях (в т.ч. операциях генерации KCV).
WFS_INF_PIN_KEY_DETAIL_EX¶
По информационному наполнению ничем не отличается от WFS_INF_PIN_KEY_DETAIL. Дополнительные поля bGeneration, bVersion, bActivatingDate[4], bExpiryDate[4] – для DES/3DES ключей, загруженных локально, не имеют никакого значения и поэтому, в соответствии со спецификацией, содержат значения 0xff
(0xffffffff
).
Команды¶
WFS_CMD_PIN_GET_DATA¶
Логика ввода открытых данных описана в стандарте XFS, а также детально рассматривается в приложении «ЭД. Особенности реализации. PIN.Клавиатурный ввод.Приложение. ПроАТМ_XFS». Кнопка КОРРЕКТИРОВКА может работать как CLEAR и как BACKSPACE. В funсKeyDetails указываются оба кода кнопки, однако поведение кнопки уточняется в момент запуска ввода. Если входной аргумент содержит в поле ulActiveKeys только код WFS_PIN_FK_CLEAR, данная кнопка будет работать как CLEAR. Если указан только WFS_PIN_FK_BACKSPACE – как BACKSPACE. Если указаны одновременно оба кода – как CLEAR.
WFS_CMD_PIN_GET_PIN¶
Внимание
Согласно требованиям PCI PTS, ввод PIN-кода прерывается по истечении таймаута активности 60 секунд. Для ПО верхнего уровня такая ситуация выглядит так, будто пользователь нажал кнопку ОТМЕНА.
Логика ввода PIN-кода описана в стандарте XFS, а также детально рассматривается в приложении «ЭД. Особенности реализации. PIN. Клавиатурный ввод. Приложение. ПроАТМ_XFS».
Кнопка КОРРЕКТИРОВКА может работать как CLEAR и как BACKSPACE (см. детали в описании WFS_CMD_PIN_GET_DATA).
WFS_CMD_PIN_CRYPT¶
В режиме генерации RANDOM отдает 8 байт случайных данных. В силу невостребованности, XFS-сервис не поддерживает функцию шифрования/дешифрования в режиме CBC с использованием инициализирующего вектора.
WFS_CMD_PIN_GET_PINBLOCK¶
Команда реализует сборку PIN-блока в форматах, указанных в capabilities. Исчерпывающее описание форматов PIN-блоков изложено в соответствующих стандартах (ISO 9564-1, Visa, Diebold).
Для формата ANSI/ISO0 интерпретация поля lpsCustomerData осуществляется в зависимости от выбранной при инсталляции настройки (см. описание параметра CustomerDataInterpretation).
PIN-клавиатура не поддерживает повторное шифрование с промежуточным XOR-замешиванием. Данный механизм реализуется программно. Таким образом, для осуществления повторного шифрования PIN-блока, требуется ключ с атрибутом CRYPT.
Если введенный PIN содержит меньше четырех цифр, запрос на сборку PIN-блока будет возвращать WFS_ERR_PIN_NOPIN. Если введенный PIN содержит больше 12 (ISOx) или 16 (IBM3624) цифр, запрос на сборку PIN-блока будет возвращать WFS_ERR_PIN_NOPIN.
В соответствии с политикой безопасности VISA, PIN-клавиатура сбрасывает содержимое PIN-буфера спустя десять минут после ввода PINа. Таким образом, по прошествии данного времени, будет невозможно собрать PIN-блок (код возврата – WFS_ERR_PIN_NOPIN).
WFS_CMD_PIN_GENERATE_KCV¶
Поддерживается режим: WFS_PIN_KCVZERO. В ответ возвращается 4-х байтный KCV.
WFS_CMD_PIN_SECUREKEY_ENTRY¶
Внимание
Согласно требованиям PCI PTS ввод ключа прерывается по истечении таймаута активности (60 секунд). Для ПО верхнего уровня такая ситуация выглядит так, будто пользователь нажал кнопку ОТМЕНА.
Логика ввода ключа описана в стандарте XFS, а также детально рассматривается в приложении «XFS.PIN – клавиатурный ввод».
Кнопка КОРРЕКТИРОВКА может работать как CLEAR и как BACKSPACE (см. детали в описании WFS_CMD_PIN_GET_DATA). Допускается ввод 16 и 32-значных ключей. Клавиатура не поддерживает вычисление KCV веденной части ключа.
Внимание
При слишком быстром вводе (чаще восьми нажатий в секунду) возможно переполнение буфера, в результате чего последующий импорт ключа завершится с ошибкой.
WFS_CMD_PIN_IMPORT_KEY¶
Емкость хранилища XFS-ключей, зависит от используемых функциональных атрибутов: не менее 116 ключей. Поддерживается CONSTRUCT и SECURECONSTRUCT сборка ключей в соответствии со спецификацией XFS + рядом ограничений, изложенных в этом разделе.
Общий принцип таков: для XOR-сборки ключа в памяти EPP, необходимо добавить флаг WFS_PIN_USECONSTRUCT либо WFS_PIN_USESECURECONSTRUCT. В ходе первой итерации ключ будет записан, в ходе последующих – смешан через функцию XOR с ранее имеющимся результатом. Для завершения импорта ключа необходимо выполнить финальную активацию: команда IMPORT_KEY с передачей fwUse-атрибутов с отсутствующими флагами CONSTRUCT и SECURECONSTRUCT. В ходе финальной активации, содержимое поля lpxValue ДОЛЖНО БЫТЬ ПУСТЫМ (такое требование не совсем соответствует спецификации XFS, однако позволяет четко отделить финализацию и перезапись ключа)! Выработка KCV консолидированного ключа осуществляется в рамках финальной активации.
Ограничения при использовании SECURECONSTRUCT:
KCV вырабатывается в рамках финальной активации ключа, а не при его вводе (WFS_CMD_PIN_SECUREKEY_ENTRY).
Импорт ключа возможен только с одним функциональным атрибутом (ограничение связано с тем, что содержимое KEY-буфера можно записать только в одну физическую ячейку EPP).
Импорт ключа должен выполняться ровно за две CONSTRUCT-итерации. После этого должен быть подан final construct. В случае нарушения данного ограничения, будет выдаваться ошибка WFS_ERR_INVALID_DATA.
Уточнение: ключ, импортируемый через механизм CONSTRUCT/SECURECONSTRUCT, так или иначе предоставляется в открытом виде. Не допускается установка параметра lpsEncKey в параметре запроса на импорт.
Уточнение по возвращаемым кодам ошибок:
SECURECONSTRUCT:
WFS_ERR_PIN_INVALIDKEYLENGTH: в том случае, если KEY-буфер клавиатуры не содержит ключа, либо длина загружаемой части отличается от длины ранее загруженной;
WFS_ERR_INVALID_DATA: в том случае, если предпринята попытка загрузить больше двух частей; в случае, если fwUse содержит более одного функционального атрибута или/и не совпадает с набором fwUse ранее загруженной части;
CONSTRUCT:
WFS_ERR_PIN_INVALIDKEYLENGTH: в том случае, если предпринята попытка загрузить ключ длиной отличной от 8 или 16 байт, либо если длина загружаемой части отличается от длины ранее загруженных.
WFS_ERR_INVALID_DATA: в том случае, если предпринята попытка загрузить больше двух частей; в случае, если fwUse содержит более одного функционального атрибута или (и) не совпадает с набором fwUse ранее загруженной части;
FINAL CONSTRUCTION:
WFS_ERR_PIN_KEYNOTFOUND: отсутствует ключ, пригодный для финализации (в т.ч. если SECURE-constructed ключ прошел меньше двух итераций сборки);
WFS_ERR_INVALID_DATA: если поле fwUse не совпадает с набором fwUse ранее загруженных частей.
Особенность: после импорта SECURED-entered части ключа, PIN-буфер клавиатуры очищается.
Уточнение: в режиме SECURECONSTRUCT, значение поля lpxValue игнорируется.
Замечание к WosaTest’s от WN: в диалоге с перечнем ключей, если ключ имеет атрибут SECURECONSTRUCT, в колонке fwUse данный атрибут не отображается (однако успешно отображается в логе, в главном окне).
XFS-сервис не поддерживает работу в режиме шифрования с передачей инициализирующего вектора. По этой причине импорт ключей с атрибутом WFS_PIN_USESVENCKEY не поддерживается.
RKL¶
Используются термины и сокращения, принятые в разделе 8 (стр. 95) спецификаций CWA 14050-6: 2005. В частности:
PKSI – открытый ключ доверенной стороны;
SKSI – закрытый ключ доверенной стороны;
PKATM – открытый ключ PIN-клавиатуры;
SKATM – закрытый ключ PIN-клавиатуры;
PKHOST – открытый ключ хоста (HSM);
SKHOST – закрытый ключ хоста (HSM);
UIATM – серийный номер PIN-клавиатуры;
KM – целевой DES мастер-ключ, импортируемый хостом в рамках процедуры RKL.
Поддержка RKL для клавиатур SZZT ZT596E F17 строится на механизме подписей («Remote Key Loading Using Signatures»), описанном в разделе 8.1 (стр. 96) спецификаций CWA 14050-6: 2005. Длина RSA ключей, применяемых в схеме 2048 бит.
Краткий перечень шагов:
экспорт PKATM , подписанного на SKSI ;
экспорт UIATM , подписанного на SKSI ;
импорт и верификация ключа PKHOST , подписанного на SKSI ;
импорт KM , зашифрованного на PKATM и подписанного SKHOST .
Детальное описание шагов – см. пункт «8.1.2 RSA Secure Key Exchange using Digital Signatures» документа CWA 14050-6: 2005.
Поддерживаемые шаги: 1, 2, 3 и 4 (основной). Шаг 4 – альтернативный, предусматривающий подмешивание случайного числа, не поддерживается.
Применяемые команды:
WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY;
WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM;
WFS_CMD_PIN_START_KEY_EXCHANGE;
WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY.
Выше перечисленные команды могут исполняться параллельно активному запросу WFS_CMD_PIN_GET_DATA.
Особенности реализации команд¶
Ниже приводятся особенности реализации команд, применяемых для поддержки RKL.
WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM¶
Команда применяется для экспорта PKATM и UIATM .
Входные аргументы:
wExportItemType – WFS_PIN_EXPORT_EPP_ID либо WFS_PIN_EXPORT_PUBLIC_KEY;
lpsName:
WFS_PIN_EXPORT_EPP_ID параметр игнорируется;
WFS_PIN_EXPORT_PUBLIC_KEY –
NULL
или_EPPCryptKey
.
На выходе – структура, содержащая экспортируемые данные, в полном соответствии со спецификациями CEN/XFS.
WFS_INF_PIN_KEY_DEAIL_EX¶
В силу того, что все экземпляры клавиатур SZZT ZT596E F17 идут с заранее прошитыми ключами SI и EPP, перечень ключей, полученный при помощи данного запроса, всегда содержит подразумеваемые ключи: _EPPCryptKey и _SigIssuerVendor. В т.ч. и в тех случаях, когда связь с EPP отсутствует.
WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY¶
Импорт или удаление ключа PKHOST .
Входные аргументы:
lpsKey – произвольное символическое имя, под которым ключ будет импортирован в систему. Длина – не более 64 знаков.
lpxValue – публичный ключ PKCS #1, представленный в DER ASN.1. В случае удаления ключа –
NULL
.dwUse:
WFS_PIN_USERSAPUBLICVERIFY
– импорт ключа хоста с верификацией подписи;WFS_PIN_USERSAPUBLIC
– не поддерживается;0
– режим удаления ключа.
lpsSigKey – имя ключа, на котором подписан импортируемый ключ. Поддерживается только подпись на ключе SKSI , поэтому параметр может принимать только следующие значения:
NULL
,_SigIssuerVendor
.dwRSASignatureAlgorithm – алгоритм подписи. Поддерживается строго WFS_PIN_SIGN_RSASSA_PKCS1_V1_5.
lpxSignature – подпись, 256 байт.
В режиме удаления требуется совпадение имени ключа с ранее загруженным. Если это не так, возвращаем непредусмотренный для данной ситуации код ошибки WFS_ERR_PIN_KEYNOTFOUND.
PIN-клавиатура не поддерживает генерацию проверочного значения, на выходе – WFS_PIN_RSA_KCV_NONE.
WFS_CMD_PIN_START_KEY_EXCHANGE¶
Команда предназначена для запуска процедуры передачи целевого мастер-ключа KM. Поскольку PIN-клавиатура не поддерживает генерацию случайного числа, отработка команды – чисто формальная, возвращается WFS_SUCCESS, а также пустое значение в поле lpxRandomItem.
WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY¶
Загрузка или удаление мастер-ключа KM .
Входные аргументы:
lpsKey – имя импортируемого или удаляемого DЕS-ключа. Данная команда не позволяет удалять RSA-ключи (в частности, публичный ключ хоста);
dwUse – атрибут ключа; если 0 – режим удаления ключа (в этом случае остальные параметры игнорируются);
lpsDecryptKey – имя подразумеваемого ключа SKATM :
NULL
или_EPPCryptKey
в явном виде;dwRSAEncipherAlgorithm – поддерживается строго WFS_PIN_CRYPT_RSAES_PKCS1_V1_5;
lpxValue – зашифрованный на PKATM целевой DES-ключ, 256 байт;
lpsSigKey – имя ранее импортированного ключа PKHOST ;
dwRSASignatureAlgorithm – строго WFS_PIN_SIGN_RSASSA_PKCS1_V1_5;
lpxSignature – подпись, 256 байт.
Пример работы¶
szExtra: VENDOR=DORS [SYSTEMA]
REMOTE_KEY_SCHEME=0x00000001 [WFS_PIN_RSA_AUTH_2PARTY_SIG]
RSA_SIGN_ALGORITHM=0x00000001 [WFS_PIN_SIGN_RSASSA_PKCS1_V1_5]
RSA_CRYPT_ALGORITHM=0x00000001 [WFS_PIN_CRYPT_RSAES_PKCS1_V1_5]
RSA_KEY_CHECK_MODE=0x00000001 [WFS_PIN_RSA_KCV_SHA1]
SIGNATURE_CAPABILITIES=0x00000004 [WFS_PIN_SIG_EXPORT_EPP_ID]
[16:24:12] WFSAsyncGetInfo ( WFS_INF_PIN_KEY_DETAIL_EX (407) ) returned WFS_SUCCESS (0) [ReqID: 21]
[16:24:12] WFSAsyncGetInfo ( WFS_INF_PIN_KEY_DETAIL_EX (407) ) completed with WFS_SUCCESS (0) [ReqID: 21]
sKeyName: _EPPCryptKey
dwUse: 0x00040000
WFS_PIN_USERSAPRIVATE (0x00040000)
bLoaded: TRUE
sKeyName: _SigIssuerVendor
dwUse: 0x08000000
WFS_PIN_USERSAPUBLICVERIFY (0x08000000)
bLoaded: TRUE
[16:31:42] WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM
wExportItemType: WFS_PIN_EXPORT_PUBLIC_KEY (2)
sName: _EPPCryptKey
[16:31:42] WFSAsyncExecute ( WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM (427) ) returned WFS_SUCCESS (0) [ReqID: 26]
[16:31:42] WFSAsyncExecute ( WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM (427) ) completed with WFS_SUCCESS (0) [ReqID: 26]
xValue
usLength: 270
data HEX:
30 82 01 0A 02 82 01 01 00 D4 A0 C9 ED 7C 17 5E 27 2E 8E C6 D2 B1 B6 C4 F3 76 5E 63 14 F4 45 5A 26 27 53 F5 21 2A DA 93 62 2D F5 5C 3D 71 75 FD B0 7E 59 32 35 51 99 F7 42 C3 56 5F 1F 16 3A 8C F6 BF E8 E8 E1 1D 5A 23 54 52 E2 45 C8 3A BA 47 3A 55 C5 CF 69 FF 78 55 1A EC 6A 07 66 93 E4 F2 9A 66 C0 83 E0 66 C0 CE A5 25 54 AD 51 FA 2D ED 31 28 C4 7C D8 29 9F 7F B1 AD 4E 93 EE 0D 35 A2 AA 77 45 D3 E5 2E 8B 5A D3 7E 55 85 08 4D E2 C0 C3 35 88 CA 96 40 33 5D 54 C0 89 B6 F9 C2 0D E8 DB 35 09 07 11 E3 1A 95 77 5D EA A7 22 09 28 9D DF B1 72 61 EE 7E 07 E2 6B CF 18 C4 49 96 FA 16 34 91 77 AB A8 67 10 DA C6 D3 F3 01 C1 E1 57 B2 BC 69 15 10 1A A6 5F D3 35 FD 7A A9 13 55 AC 06 B7 C6 FF 43 30 75 07 58 CE A8 FB 50 3A D6 AE F8 40 AE B7 B6 F7 5D 4F F7 0E 96 9D 74 C6 57 23 F4 B9 AA C9 21 7A AC 47 CE 91 02 03 01 00 01
dwRSASignatureAlgorithm: WFS_PIN_SIGN_RSASSA_PKCS1_V1_5 (1)
xSignature
usLength: 256
data HEX:
1C D3 61 EA 4D 99 DE F8 A7 34 54 04 E1 56 D7 E5 2F D4 AC 3D 06 F3 89 7A 21 8D B0 48 AB E4 64 15 B4 5B CA 69 B7 A5 A4 80 97 B2 52 6F 27 35 DF 85 79 70 78 A7 F8 B3 6A 8C 94 15 61 E4 D2 5E 03 27 A8 9A E9 5C FE 91 80 D6 04 A1 AE 53 21 34 90 E9 F9 9A A0 E3 95 27 AD DD 3B 1B 37 B5 0B 3A F7 B8 69 33 E1 50 65 11 34 01 CD FC D1 86 18 8C 1E C5 92 51 10 FA 5E B7 8F 69 E0 54 D9 CD 2C F1 53 C2 BE C0 14 57 1C 77 E6 57 A1 A5 C5 63 19 9A 26 8C 83 05 35 2D 00 B9 D2 70 58 C3 DC 74 22 81 CA 90 1F 9B B9 E4 1F D6 D1 E8 66 BF 19 BC DB DB F5 BB F6 9A C3 3D A6 74 35 17 CA 90 2F 12 50 7F AF 23 62 0B 00 25 49 4C 12 05 60 80 EF 52 4B 8B 1D A6 41 F6 D5 55 D9 CE C5 F2 A7 CC D3 AB 62 89 94 B2 CA 0D E0 95 1E DF 47 6D 20 C1 29 34 1B E3 FB 90 84 F5 50 66 2B 1D 28 E9 CE D5 FA 7F 35 25 28 5B
[16:32:40] WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM
wExportItemType: WFS_PIN_EXPORT_EPP_ID (1)
sName:
[16:32:40] WFSAsyncExecute ( WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM (427) ) returned WFS_SUCCESS (0) [ReqID: 27]
[16:32:40] WFSAsyncExecute ( WFS_CMD_PIN_EXPORT_RSA_ISSUER_SIGNED_ITEM (427) ) completed with WFS_SUCCESS (0) [ReqID: 27]
xValue
usLength: 8
data HEX:
35 33 39 31 39 36 33 31
dwRSASignatureAlgorithm: WFS_PIN_SIGN_RSASSA_PKCS1_V1_5 (1)
xSignature
usLength: 256
data HEX:
7A 16 57 1C 4C 2D 22 14 CF 01 4A 7C E4 18 E5 C1 6B C5 8F 6D 01 91 EB E6 37 AD 40 BC 92 5E B6 E7 E4 E2 74 8F 57 66 BF 37 30 46 0E 70 7D 8E AF 71 71 AB 52 75 BE 1F 6C A8 08 2A 1F B7 CF 15 05 0B AF 07 DA 94 FE DE 58 88 EF 18 DB B1 A1 1D 08 DB 1E EE 19 70 66 4F 19 F9 1D DC 3E E6 11 F2 31 C2 F8 BE A1 74 2E 79 D0 CB 32 68 B6 14 B7 E2 9B B0 03 F5 3D 7C 83 0C 5C 2C 3A 72 44 2E B3 52 B0 EC 45 BA AB 5B 93 39 5C 72 B8 90 AB C7 C3 BF 63 1E 8C 9C B4 95 6A 52 A7 35 2A F5 2F 00 1D EC 36 02 42 55 EB 88 D1 ED 6A B6 30 A6 05 4E 72 95 E6 88 AE AD 9A 9A BD 83 A1 B7 7D 0B A8 66 3C DC 1E 3F 40 05 19 C0 0E 39 54 4C CB 1F FC E3 29 B8 09 11 C1 4E 4C 51 A7 8E B5 5A 77 50 E2 68 D8 46 42 03 F7 DD 2E FD A4 EC EF 0D 75 41 6E 4E BC 1E A7 F5 E2 6F 19 BC 96 BB 85 E3 E1 81 08 2B 1A 12 5A 76
[16:34:02] WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY
sKey: PK_HOST
xValue HEX: 30 82 01 0a 02 82 01 01 00 cf 5b 89 bb 9f 9a e5 13 3f 5d 5c 75 ba d1 15 ee 2a 78 08 9a be ba 10 f1 4d f4 2d eb 1f e3 d5 a0 a9 9b 81 05 b9 96 c3 d5 5f 47 93 8a cc 46 a6 89 dc 11 93 b4 fb f0 45 23 04 8d 00 e5 9b ae cc 1e 47 2d ac 23 dd b8 e9 d7 fa 2c 70 ab ff a9 80 7e e5 16 1d 98 9c 04 e2 4a e7 d6 c3 f9 3d 50 47 1b 15 94 6c 30 61 77 96 96 9e 10 74 c6 14 8f 54 73 4b 55 b7 83 eb 33 63 7e c8 ed eb 58 e6 7d 6d f7 a9 2f 81 d3 c8 7c 75 c1 e8 78 74 eb 79 49 1c 47 82 aa e2 9a e2 17 38 1f 28 aa db 10 f3 29 37 49 eb cc ce 60 4b fa d4 ca 5c 1e 2c f9 0e 24 3b f7 8f 9c 77 05 df 03 ed 95 08 e9 75 d7 d1 86 22 a1 d2 ac 24 5c db b4 49 e8 12 fc fc fa ac 35 0c 75 02 6a 67 03 8d e9 a1 83 69 6f f8 13 81 8e 05 92 87 8a 14 38 29 4d 23 fb 09 fe 80 e4 4f 1d d7 ec d1 2f 7b ad 5a cd 3c 6b 03 43 f7 e8 72 79 54 1f 02 03 01 00 01
dwUse: WFS_PIN_USERSAPUBLICVERIFY (0x08000000)
sSigKey: _SigIssuerVendor
dwRSASignatureAlgorithm: WFS_PIN_SIGN_RSASSA_PKCS1_V1_5 (1)
xSignature HEX: 69 fa 54 2f 3e 9c c2 0c df 94 48 ce 7a 2f a5 23 74 04 b5 09 ea 6e 32 5b c9 47 0f 19 3e b8 28 12 57 ae 0e 09 47 59 ed 14 03 ff 15 fe c3 65 30 a8 18 17 13 2c 04 cf 7d dc cd 72 68 c5 25 7d 47 19 9c 47 9d 26 49 d7 b3 ca de 94 88 61 f9 32 e5 0d c9 20 a3 a5 47 41 2d 04 cf 10 8b 02 bd 69 62 6a 22 84 d0 18 21 28 8a 12 ef 87 39 5e c2 fc 7e 1a 4c 13 a9 41 50 71 76 3c 1d 41 d5 0c ff 86 eb 12 11 5a 2f 51 e9 c0 84 fb 38 af 9b fd 61 b5 ca 16 07 bc 3f e4 02 57 c1 bc 46 b2 90 b4 60 62 86 fa 0a de 4f 10 29 78 d1 ba 66 65 bd bc 54 92 c5 f0 2e a2 ab f6 91 48 8a a0 04 37 ee 74 d1 43 c6 e7 90 a6 68 ee b4 db db ab 4a d5 5c 0e a2 2f 37 6a 96 cd 4b a9 47 53 cc d1 90 3d 41 d0 d2 82 1b 7b 4f 4d 96 57 fe 8a 73 5f 13 33 cf c0 23 d2 45 1b da 4e 76 0f 0d 3a 13 f4 fc 0a a7 95 ff e3 4a c5
[16:34:02] WFSAsyncExecute ( WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY (426) ) returned WFS_SUCCESS (0) [ReqID: 30]
[16:34:03] WFSAsyncExecute ( WFS_CMD_PIN_IMPORT_RSA_PUBLIC_KEY (426) ) completed with WFS_SUCCESS (0) [ReqID: 30]
dwRSAKeyCheckMode: WFS_PIN_RSA_KCV_NONE (0)
lpxKeyCheckValue: NULL
[16:42:20] WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY
sKey: MASTER KEY
sDecryptKey: _EPPCryptKey
dwRSAEncipherAlgorithm: WFS_PIN_CRYPT_RSAES_PKCS1_V1_5 (1)
xValue HEX: 90 2d c4 4f 52 17 e5 12 cf 2f fe b5 36 a1 39 27 83 72 db d4 f5 e8 ea 47 1c a2 36 23 cb ca 47 ed c4 b6 e7 29 db 20 e9 66 9c dd 6e c0 ae 07 65 d9 7f 09 ef 46 2d b4 4d 1e f4 b8 78 43 2e 2e ec ae d6 83 6a 7e e0 0f c7 2a 2b 01 63 5e 6f 80 49 69 56 07 ce e2 39 77 a5 fc 54 90 87 63 1d fe 0a ec e2 66 7f 0e 32 a2 34 44 79 6d 2a aa db e3 4b 1a 17 69 ca bc af 6c 9f c5 43 83 45 54 94 0d e2 1e ca b0 aa e7 e8 ff c4 f3 7b ca 34 74 53 bc 9d 0a 25 cf b3 b6 87 18 de b3 c3 77 4d 34 2e 22 e2 cf 5d eb 49 32 3f 78 1a 23 10 48 73 86 6b 19 c7 53 7b 3f b4 42 66 3b 2f 35 83 60 7f 1b ff 87 55 12 32 42 d6 dc 09 dd 7a e4 6b 82 2a 59 94 00 4b e8 a5 40 6a bc 1b db 00 c4 1c 8b 48 40 1b b8 a3 13 55 50 8b a2 2c 53 77 ff 9a 17 0e 91 0e 0f 5d 8a e5 37 55 b7 1e 31 e0 be 17 db 95 35 f0 ee 7f 1f
dwUse: 0x00000020
WFS_PIN_USEKEYENCKEY (0x00000020)
sSigKey: PK_HOST
dwRSASignatureAlgorithm: WFS_PIN_SIGN_RSASSA_PKCS1_V1_5 (1)
xSignature HEX: a5 d3 c6 fb 21 15 21 98 75 fb 46 8e b1 f2 7d 42 a8 50 ed 2f a8 3a fb da 31 29 b4 18 4f c9 46 af 7a 7d 35 72 2a 5e ee 23 87 e6 18 c9 be f5 63 62 83 de 3b e8 70 b0 e8 5b 3c 4a b5 26 c6 ab d3 84 20 29 3b 93 63 c9 ff 23 50 78 99 32 23 21 e5 dc 48 75 24 7b e6 c9 b5 55 6d c5 06 62 24 e8 63 56 30 fa 62 bd 63 e7 e7 ae 2f 2b db 15 56 f9 38 b9 8e 2e db 6f 2a 49 91 57 4e 3c 53 08 0c 7a 97 8c 9b 26 18 e4 83 1e 29 7f 18 50 64 54 7a 8f 5f 17 8e 88 24 b8 f5 b2 06 3b 40 09 a1 b5 63 ec af 97 da 2f 06 61 29 b9 5c 51 66 05 b4 25 91 5e 20 9e af a6 c7 e7 98 bc 22 da 9d a1 5b 1d 6b ad 3b e5 10 1a b8 ff 64 7c c2 c0 08 98 89 50 6c 05 36 15 a4 0b 0d 2c c7 b2 d7 19 68 df 1a 97 c3 cb f7 87 12 23 13 15 84 65 b2 31 bb 74 5f 4c 8b 39 f1 23 11 60 6d 5c 4f 36 7d ca fe 4a 64 b2 9e b1 69 98
[16:42:21] WFSAsyncExecute ( WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY (428) ) returned WFS_SUCCESS (0)
[16:42:29] WFSAsyncExecute ( WFS_CMD_PIN_IMPORT_RSA_SIGNED_DES_KEY (428) ) completed with WFS_SUCCESS (0)
wKeyLength: WFS_PIN_KEYDOUBLE (2)
wKeyCheckMode: WFS_PIN_KCVZERO (0x0002)
xKeyCheckValue
usLength: 3
data HEX:
1A 16 9D
Коды ошибок оборудования¶
ERROR CODE |
ERROR NAME |
DESCRIPTION |
---|---|---|
0x00 |
STATUS_SUCCESS |
No error – status successful |
0x01 |
STATUS_INVALID_COMMAND_LENGTH |
Command length not comply with definition |
0x02 |
STATUS_INVALID_KEYID |
KeyID(s) is outside of valid range |
0x03 |
STATUS_INVALID_WRITE_MODE |
Invalid Write Mode Specified |
0x04 |
STATUS_KEYID_NOT_EXIST |
Key with specified ID doesn’t exist |
0x05 |
STATUS_KEY_LOCKED |
Key with specified ID is locked |
0x06 |
STATUS_INVALID_KEY_LENGTH |
The Key to be stored has invalid length (not 8 or 16 bytes) |
0x07 |
STATUS_INVALID_KEY_ATTRIBUTES |
Key ID has wrong attribute |
0x08 |
STATUS_INVALID_IV_ATTRIBUTES |
IV has wrong attribute |
0x09 |
STATUS_INVALID_MODE |
Invalid Entry Mode specified |
0x0a |
STATUS_INVALID_OFFSET_LENGTH |
Invalid Offset or Length – out of range |
0x0b |
STATUS_INVALID_LENGTH_OR_SUM |
Invalid Length or Offset+Length – out of range |
0x0c |
STATUS_INVALID_DATA_SPECIFIED |
Invalid data – values out of range |
0x0d |
STATUS_INVALID_PIN_LENGTH |
Invalid PIN Length |
0x0e |
STATUS_PIN_VERIFICATION_FAIL |
PIN verification failed |
0x0f |
STATUS_PIN_ENCRYPTION_SUSPENDED |
PIN encryption/verification suspended |
0x30 |
STATUS_INVALID_USERBLOCK_ADDRESS |
Invalid User Block Address specified |
0x41 |
STATUS_INVALID_MODULUS_LENGTH |
Invalid modulus length specified |
0x42 |
STATUS_INVALID_EXPONENT_LENGTH |
Invalid exponent length specified |
0x43 |
STATUS_INVALID_PKCS_STRUCTURE |
Invalid structure received |
0x44 |
STATUS_INVALID_PKCS_PADDING |
Invalid PKCS Padding |
0x45 |
STATUS_INVALID_SIGNATURE_LENGTH |
Invalid Signature Length |
0x46 |
STATUS_SIGNATURE_VERIFICATION_FAIL |
Signature verification failed |
0x47 |
STATUS_INVALID_SERIALNO_SPECIFIED |
Invalid Serial Number specified |
0x50 |
STATUS_EPP_NOT_INITIALIZED |
EPP Keypair and/or Serial# signature not loaded |
0x51 |
STATUS_EPP_ALREADY_INITIALIZED |
EPP Keypair and/or Serial# signature already loaded |
0x80 |
STATUS_AUTHENTICATION_FAILED |
Authenticate procedure failed |
0x81 |
STATUS_AUTHENTICATION_SUSPENDED |
Authenticate procedure locked out for X hours |
Подробное описание статусов устройства приведено в документе «ZT596 EPP. F17. Firmware Description».
Пример сообщения:
CZT596F17Handler::ProcessGenericCommand() - РЕЗУЛЬТАТ ВЫПОЛНЕНИЯ КОМАНДЫ:
nResult = 0x01 [ERR_STATUS_NEGATIVE], Status Code = 0x06 [STATUS_INVALID_KEY_LENGTH]