ccrt pg

18
SMART-CARD Smart- !" # !"#$% 18 2001

Upload: companiadekartsrl

Post on 18-Dec-2014

90 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Ccrt pg

УТВЕРЖДЁН

СИСТЕМА УЧЕТА ПОТРЕБЛЕНИЯ РЕСУРСОВ И БЕЗНАЛИЧНЫХ РАСЧЕТОВ С ИСПОЛЬЗОВАНИЕМ SMART-CARD

Программное обеспечение для поддержки Smart-карт

Модуль для проверки сертификатов транзакций

Руководство программиста

Листов 18

2001

Page 2: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 2 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

Аннотация Данный документ содержит описание функций (в стиле языка С), входящих вдинамически загружаемую библиотеку chkcert.dll. Приводится необходимая справочная информация, сведения о возможных ошибках,возникающих при работе функций библиотеки.

Page 3: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 3 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

Оглавление

1. ТЕРМИНОЛОГИЯ И УСЛОВНЫЕ ОБОЗНАЧЕНИЯ (ГЛОССАРИЙ)..................................... 4

1.1 СИСТЕМА ........................................................................................................................................... 4 1.2 СТАНДАРТЫ ШИФРОВАНИЯ ............................................................................................................... 4 1.3 КАРТЫ СИСТЕМЫ И ИНФОРМАЦИЯ НА КАРТАХ ................................................................................. 4 1.4 КЛЮЧИ СИСТЕМЫ.............................................................................................................................. 5

2. НАЗНАЧЕНИЕ БИБЛИОТЕКИ CHKCERT.DLL .......................................................................... 6

3. ОБЩИЕ СВЕДЕНИЯ ........................................................................................................................... 6

3. ОПИСАНИЕ ФУНКЦИЙ БИБЛИОТЕКИ CHKCERT.DLL......................................................... 7

3.1. ФУНКЦИЯ OPENCHKSESSION ......................................................................................................... 7 3.2. ФУНКЦИЯ CHKCERT ....................................................................................................................... 7 3.3. ФУНКЦИЯ CHKSCERT ..................................................................................................................... 8 3.4. ФУНКЦИЯ CLOSECHKSESSION ....................................................................................................... 9

4. ПРИЛОЖЕНИЯ..................................................................................................................................... 9

4.1. СООБЩЕНИЯ ОБ ОШИБКАХ............................................................................................................. 9 4.2. ПРИМЕР ВЫЗОВА ФУНКЦИЙ МОДУЛЯ ИЗ ПРОГРАММЫ (BORLAND C++ V.5.01) ....................... 13 4.3. РЕЗУЛЬТАТЫ РАБОТЫ ТЕСТОВОГО ПРИМЕРА ДЛЯ ФУНКЦИЙ МОДУЛЯ .................................... 16

Page 4: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 4 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

1. Терминология и условные обозначения (Глоссарий)

1.1 Система СУПР – Система учета потребления ресурсов и безналичных расчетов сиспользованием smart-карт (название системы). Payflex - Интеллектуальная (smart) карта фирмы Schlumberger, которая положена воснову систем безналичных расчетов, разрабатываемых компанией Dekart S.R.L. SCR-60, Reflex 60, Reflex 72 (Schlumberger), TOWITOKO ChipDrive - считыватели smart-карт, использующиеся в отдельных технологических звеньях СУПР. Работают только совместно с компьютером, и управляются программным обеспечением,работающем на компьютере.Эмитент - организация, выполняющая персонализацию карт держателей, ведущая базы карт-счетов держателей и обрабатывающая платёжные транзакции.ПЦ - процессинговый центр. Подразделение (участник) системы, в задачи которого входит обслуживание терминального поля, сбор транзакций от терминалов, их сортировку и рассылку эмитентам.ЦС – центр системы. Организация, занимающаяся предварительной персонализацией карт держателей и их передачей эмитентам (участникам системы). ЦСК - центр сертификации ключей (Certificate authority). Организация,обеспечивающая сертификацию ключей участников системы.Примечание. В СУПР функции центра системы и центра сертификации ключей выполняет одна организация.Держатель карты - физическое лицо, использующее карту в качестве платёжного инструмента при оплате товара или услуги.Платежная единица – условная товаро-денежная единица (рубли, леи, доллары,литры, кВт·ч. и т.д.), используемая в СУПР в качестве средства платежа.

1.2 Стандарты шифрования DES (Data Encryption Standard) - Стандарт шифрования данных. Симметричная система шифрования с длиной ключа и шифруемого блока данных 64 бита.Эффективная длина ключа на самом деле равна 56 (один бит каждого байта используется в качестве контрольного). RSA - система шифрования на основе открытых ключей. Применяется в системе для статической аутентификации карт держателей.SHS (Secure Hash Standard) - Стандарт на хеш-функцию. Стандарт определяет алгоритм Secure Hash Algorithm (SHA-1), который может использоваться для создания "сжатого" представления некоторой последовательности. Такое представление носит название дайджеста последовательности.

1.3 Карты системы и информация на картах SAM (Secure Application Module) – специальная карта, которая обеспечивает безопасность при операциях дебетования и кредитования.Карта доступа (или карта персональных ключей) – специальная карта, которая предназначена для защищенного хранения ключа (ключей) доступа ответственных лиц системы. Карта доступа принадлежит конкретному ответственному лицу системы и защищена его персональным идентификационным номером (PIN-кодом). Серийный номер карты - неизменяемая, уникальная для каждой карты двоичная последовательность длиной 8 байт, записываемая на карту заводом изготовителем.

Page 5: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 5 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

BIN (Bank Identification Number) – идентификационный номер эмитента (8 цифр), составленный в соответствии со стандартом ISO. PIN (Personal Identification Number) – персональный идентификационный номер пользователя (от 4 до 8 десятичных цифр). Владелец карты обязан держать свой PIN - код в секрете.PAN (Primary Account Number) – номер карты (19 цифр), первые 8 цифр которого соответствуют BIN. ID (Identifier) – идентификатор (8 цифр), определяющий имена файлов, в которых записываются RSA ключи процессингового центра и эмитента, запрос на сертификацию и сертификат, а также PAN-коды эмитента. Совпадает с BIN.

1.4 Ключи системы Ключи доступа – внутренние ключи, которые хранятся на карте доступа иприменяются для «открытия» различных технологических приложений системы,причем в большинстве случаев они служат для активизации других (секретных)ключей системы.Диверсификация ключа - "распыление" ключа. Используется для индивидуализации внутренних ключей карт держателей.Мастер ключ - секретный ключ симметричной системы шифрования, используемый в системе для диверсификации ключей карт держателей.Модуль - открытая часть ключа системы шифрования RSA. Экспонента - открытая часть ключа RSA. Может быть равной 3 либо четвёртому числу Ферма (Fermat 4 = 2^2^4+1 = 65537). В СУПР экспонента равна 3.Сертификат - двоичная последовательность, получаемая специальными криптографическими методами и служащая для проверки достоверности некоторой последовательности данных.Случайная последовательность - последовательность двоичных данных, которая создаётся специальными механизмами в картах и терминалах для модификации сообщений с целью индивидуализации протокола обмена от одного сеанса к другому

Page 6: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 6 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

2. Назначение библиотеки chkcert.dll Модуль chkcert.dll предназначен для проверки сертификатов дебетовых и

кредитовых транзакций. Функции библиотеки на основании данных о транзакции позволяют проверить аутентичности ее сертификата.

Модуль используется эмитентом!

3. Общие сведения

Динамически загружаемая библиотека chkcert.dll включает в себя следующие функции:• OpenChkSession – инициализация процесса;• ChkCert – проверка сертитификата транзакции, выполненной картой PAYFLEX 4K; • ChkSCert - проверка сертитификата транзакции, выполненной картой PAYFLEX 4K (Mask 5.0 S); • CloseChkSession – завершение процесса.Примечание. Работа с модулем должна начинаться вызовом функции OpenChkSession и завершаться вызовом функции CloseChkSession. Функции, входящие в модуль chkcert.dll, реализованы на языках программирования С, C++. Необходимое оборудование:• Компьютер IBM PC (486 и выше), имеющий свободные последовательные порты;

• Smart-карты: карта доступа;• Считыватель smart-карт одного из следующих типов: SCR-60, Reflex 60, Reflex 72

(Schlumberger), TOWITOKO ChipDrive. Необходимое программное обеспечение:• Операционная система MS Windows 9x, NT; • CT API для считывателей TOWITOKO ChipDrive и Schlumberger Reflex 72; • Файл второй группы ключей эмитента ID_эмитента.se2. Установка модуля chkcert.dll осуществляется простым его копированием всоответствующий каталог (SYSTEM, SYSTEM32) системы Windows.

Page 7: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 7 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

3. Описание функций библиотеки chkcert.dll

3.1. Функция OpenChkSession

Название: OpenChkSession Назначение: Функция обеспечивает инициализацию процесса проверки

сертификата транзакции.Условия применения:

Необходимо наличие карты доступа эмитента и файла со второй группой ключей эмитента.

Синтаксис: #include "ChkCert.h" int OpenChkSession (char *Port, short ReaderType, char *Iss_KeyFile, char *PIN, char *IccNo)

Входные данные:Port – указатель на строку содержащую имя коммуникационного порта (например, COM1, COM2, COM3, COM4).

ReaderType – целое число, указывающее тип считывателя.Поддерживаются 4 типа считывателей:

№ п.п. Производитель / Название ReaderType 1 Schlumberger / SCR 60 0 2 Schlumberger / Reflex 60 1 3 TOWITOKO / ChipDrive 2 4 Schlumberger / Reflex 72 3

Iss _KeyFile – указатель на строку, содержащую путь и имя файла со второй группой ключей эмитента (до 256 символов). PIN – указатель на строку, содержащую PIN–код карты доступа. PIN–код может состоять от 4 до 8 десятичных цифр.

Выходные данные:IccNo – указатель на буфер (строку), в котором будет возвращён серийный номер карты доступа. Размер буфера должен быть не менее 33 байтов.

Возвращаемое значение:1 – в случае успешного завершения программы, иначе отрицательное значение кода ошибки (см. коды ошибок п. 4.1).

Ограничения: Необходимо соблюдения строгого соответствия типа считывателя (ReaderType) с реальным считывателем, подключённым к данному последовательному порту. Несоблюдение этого ограничения приводит к непредсказуемым результатам.

Пример вызова функции из программы (BC++ v.5.01) см. п. 4.2

3.2. Функция ChkCert

Название: ChkCert

Page 8: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 8 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

Назначение: Функция осуществляет проверку сертитификата транзакции,выполненной картой PAYFLEX 4K.

Синтаксис: #include "ChkCert.h" int ChkCert (char Type, char *Rnd, char *Amn, char *CurTrno, char *Crt, char *SerNo)

Входные данные:Type – символ, определяющий тип транзакции:

• ‘P’, ‘F’, ‘A’ – дебетовая транзакция ;• ‘R’, ‘X’, ‘T’ – кредитовая транзакция.

Rnd – указатель на строку (16 символов), содержащую случайную последовательность в формате ASCII в шестнадцатеричном коде (функции DebitTransacion, CreditTransaction). Amn - указатель на строку (до 12 десятичных цифр), содержащую сумму дебета/кредита в формате ASCII. CurTrno – указатель на строку, содержащую:

• код валюты (3 десятичные цифры) в случае дебетовой транзакции;

• номер транзакции (4 символа) в формате ASCII вшестнадцатеричном коде кошелька SAM-карты в случае кредитовой транзакции

Crt – указатель на строку (12 символов), содержащую сертификат (подпись) операции дебетования/кредитования кошелька в формате ASCII в шестнадцатеричном коде (функции DebitTransacion, CreditTransaction). SerNo – указатель на строку (16 символов), содержащую серийный номер карты пользователя в формате ASCII в шестнадцатеричном коде.

Возвращаемое значение:1 – при положительном результате проверки сертификата,0 – при отрицательном результате проверки сертификата,иначе отрицательное значение кода ошибки (см. коды ошибок в п. 4.1)

Пример вызова функции из программы (BC++ v.5.01) см. п. 4.2

3.3. Функция ChkSCert

Название: ChkSCert Назначение: Функция осуществляет проверку сертитификата транзакции,

выполненной картой PAYFLEX 4K (Mask 5.0 S). Синтаксис: #include "ChkCert.h"

int ChkSCert (char Type, char *Rnd, char *Amn, char *CurTrno, char *Crt, char *SerNo)

Входные данные:Type – символ, определяющий тип транзакции:

• ‘P’, ‘F’, ‘A’ – дебетовая транзакция ;• ‘R’, ‘X’, ‘T’ – кредитовая транзакция.

Page 9: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 9 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

Rnd – указатель на строку (16 символов), содержащую случайную последовательность в формате ASCII в шестнадцатеричном коде (функции DebitTransacion, CreditTransaction). Amn - указатель на строку (до 12 десятичных цифр), содержащую сумму дебета/кредита в формате ASCII. CurTrno – указатель на строку, содержащую:

• код валюты (3 десятичные цифры) в случае дебетовой транзакции;

• номер транзакции (4 символа) в формате ASCII вшестнадцатеричном коде кошелька SAM-карты в случае кредитовой транзакции

Crt – указатель на строку (12 символов), содержащую сертификат (подпись) операции дебетования/кредитования кошелька в формате ASCII в шестнадцатеричном коде (функции DebitTransacion, CreditTransaction). SerNo – указатель на строку (16 символов), содержащую серийный номер карты пользователя в формате ASCII в шестнадцатеричном коде.

Возвращаемое значение:1 – при положительном результате проверки сертификата,0 – при отрицательном результате проверки сертификата,иначе отрицательное значение кода ошибки (см. коды ошибок в п. 4.1)

Пример вызова функции из программы (BC++ v.5.01) см. п. 4.2

3.4. Функция CloseChkSession

Название: CloseChkSession Назначение: Функция завершает процесс проверки сертификата транзакции и

освобождает считыватель smart-карт.Синтаксис: #include "ChkCert.h"

void CloseChkSession (void) Входные данные: Отсутствуют.Возвращаемое значение: Отсутствует.Пример вызова функции из программы (BC++ v.5.01) см. п. 4.2

4. Приложения

4.1. Сообщения об ошибках

Код ошибки Наименование ошибки Комментарий

Общие коды возврата 0 NOK Ненормальное завершение

программы. Возникла ошибка при работе с картой.

1 OK Нормальное завершение программы.

Page 10: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 10 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

Ошибки общего характера -1 ERR_PC_TIME_OUT

Ошибка вызвана сбоем в работе компьютера

-2...-7 Резерв

Ретранслируемые коды ошибки интерфейса CT-API

-8 ERR_CT_API_NOT_ACC CT-API недоступен -10 ERR_CT_API_TRANSMIS Ошибка передачи -11 ERR_CT_API_MEM_ASIGN Ошибка захвата памяти

Ошибки, возникающие при работе сфункциями модуля

-12 ERR_FILE_NOT_FOUND Ошибка вызвана отсутствием файла сключами системы

-13 ERR_READING_FILE Ошибка при чтении файла с ключами системы

-14 ERR_BAD_READER

Появление данной ошибки может говорить о следующем:• отсутствует считыватель, или • тип считывателя указан неправильно, или • ошибка при работе считывателя,или • указан неверный СОМ-порт.

-15 ERR_NO_CARD_ON_READER Ошибка вызвана отсутствием карты всчитывателе

-16 ERR_BAD_ACCESS_CARD Ошибка при работе с картой доступа,возможно, вставлена не карта доступа, а иная.

-17 ERR_INVALID_PIN_LEN Неправильная длина PIN-кода -18 ERR_INVALID_PIN_CHR При вводе PIN-кода были

использованы не только десятичные цифры

-19 ERR_BAD_PIN_VERIFY PIN-код не верифицирован -20 ERR_BAD_PASSWORD Неверный пароль доступа к

секретным ключам системы -21 ERR_BAD_SAM_CARD Ошибка при работе с SAM картой,

возможно, вставлена не SAM карта, аиная.

-22 ERR_BAD_USR_CARD Ошибка при работе с картой пользователя, возможно, вставлена не карта пользователя, а иная.

-23 ERR_INV_REC_LEN Неправильная длина записи -24 ERR_DNOT_FOUND_KEY Отсутствует ключ

Page 11: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 11 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

-25 ERR_APP_NOT_FOUND Отсутствует приложение -26 ERR_READ_CARD_FILE Ошибка чтения файла на карте -27 ERR_IDENT_NOT_FOUND На карте отсутствует файл 8000-28 ERR_BAD_ISS_CERT Неверный сертификат открытого

ключа эмитента -29 ERR_BAD_ISS_IDEND Неверный эмитент -30 ERR_AUTH_NOT_FOUND На карте отсутствует файл 8300-31 ERR_UNKNOWN_AUTH_ALG Неизвестный алгоритм

аутентификации -32 ERR_SN_NOT_FOUND На карте отсутствует файл 2F00 -33 ERR_SAM_NOT_FOUND Отсутствует SAM-карта -34 ERR_USR_NOT_FOUND Отсутствует карта пользователя -35 ERR_USR_PURS_NOTFOUND На карте пользователя отсутствует

файл с кошельком -36 ERR_SAM_PURS_NOTFOUND На SAM-карте отсутствует файл с

кошельком -37 ERR_USR_IS_BAD «Запорчена» карта пользователя –

подлежит изъятию -38 ERR_SAM_IS_BAD «Запорчена» SAM-карта – подлежит

изъятию -39 ERR_USR_CUR_NOT_MATCH При вызове функции указан

неверный тип валюты в кошельке карты пользователя

-40 ERR_SAM_CUR_NOT_MATCH При вызове функции указан неверный тип валюты в кошельке SAM-карты

-41 ERR_READ_USR_CARD Ошибка при чтении карты пользователя

-42 ERR_READ_SAM_CARD Ошибка при чтении SAM-карты -43 ERR_USR_DEBIT_PURSE Ошибка при дебетовании кошелька

карты пользователя -44 ERR_USR_CREDIT_PURSE Ошибка при кредитовании кошелька

карты пользователя -45 ERR_SAM_DEBIT_PURSE Ошибка при дебетовании кошелька

SAM-карты -46 ERR_INV_ID_LEN Неверная длина идентификатора

-47...-50 Резерв

Ошибки, возникающие при работе сбиблиотекой mirlib (работа сбольшими числами)

-51 ERR_BASE_TOO_BIG Основание числа очень большое для представления

-52 ERR_DIV_BY_ZERO Деление на ноль (в библиотеке больших чисел)

-53 ERR_OVERFLOW Переполнение – число очень

Page 12: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 12 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

большое -54 ERR_NEG_RESULT При вычислении получено

отрицательное значение -55 ERR_BAD_FORMAT Неверный входной формат числа -56 ERR_BAD_BASE Неверное основание числа -57 ERR_BAD_PARAMETERS Неверное использование параметра -58 ERR_OUT_OF_MEMORY Недостаточно оперативной памяти -59 ERR_NEG_ROOT Четный корень из отрицательного

числа -60 ERR_NEG_POWER Возведение числа в отрицательную

степень -61 ERR_BAD_ROOT Попытка получить неверный корень -62 ERR_INT_OP Неверная операция над Flash числом -63 ERR_FLASH_OVERFLOW Flash переполнение -64 ERR_TOO_BIG Числа очень большие -65 ERR_NEG_LOG Логарифм из отрицательного числа -66 ERR_DOUBLE_FAIL Ошибка преобразования double в

flash -67 ERR_IO_OVERFLOW Переполнение буфера ввода/вывода -68 ERR_NO_MIRSYS Библиотека больших чисел не

проинициализирована -69 ERR_BAD_MONT_MOD Неверный Монтгомери модуль

(должен быть нечетным)-70 ERR_NO_MONT_MOD Не определен Монтгомери модуль -71 ERR_EXP_TOO_BIG Слишком большая экспонента -72 ERR_NBASE_MBP_P2 Основание должно быть степенью 2

-73...–80 Резерв

-81 ERR_KEYFILE_NOT_FOUND Отсутствует файл с ключами ЦСК/ЦС

-82 ERR_READING_KEYFILE Ошибка чтения файла ключей -83 ERR_PARFILE_NOT_FOUND Отсутствует файл с параметрами

sPRPERS.PAR -84 ERR_BAD_NUM_OF_PARAM Ошибочное число параметров в

файле sPRPERS.PAR -85 ERR_BAD_PARAM_FMT Неверные значения параметров в

файле sPRPERS.PAR -86 ERR_BAD_CA_ID_FMT Неверное значение идентификатора

ЦСК -87 ERR_BAD_ISS_ID_FMT Неверное значение идентификатора

эмитента -88 ERR_CRTFILE_NOT_FOUND Отсутствует файл с сертификатом

открытого ключа эмитента -89 ERR_CRT_ISS_NOT_CMP Идентификатор эмитента не

совпадает с указанным в сертификате -90 ERR_CRT_DATE_EXPIRED Истек срок действия сертификата

Page 13: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 13 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

-91 ERR_CRT_CA_NOT_CMP Идентификатор эмитента не совпадает с указанным в сертификате

-92 ERR_CRT_LEN Неверная длина сертификата -93 ERR_BAD_PUBLIC_LEN Неверная длина открытого ключа

ЦСК -94 ERR_AUTH_ALG_UNKNOWN Неизвестный алгоритм

аутентификации -95 ERR_INV_LUHN_CODE Неправильное значение luhn-кода -96 ERR_NOT_FREE_MEM Недостаточно свободного места -97 ERR_TRANS_KEY_VERIFY Ошибка верификации транспортного

ключа -98 ERR_CREATE_CARDFILE Ошибка при создании файла на карте -99 ERR_WRITE_CARD_FILE Ошибка записи файла на карту -100 ERR_BAD_IDENT_CONTENT Неверное содержимое файла 8000 на

карте

-123 ERR_NOT_INITIALIZED Не была выполнена операция инициализации процесса

-125 ERR_FUNC_NOT_RELEASED -126 ERR_USR_ABORT Работа программы остановлена

пользователем

/* Rest of CT-API */ -127 ERR_CT_API_ABORT Работа программы остановлена

сервером -128 ERR_CT_API_HTSI Ошибка нижнего уровня

4.2. Пример вызова функций модуля из программы (Borland C++ v.5.01) //---------------------------------------------------------------------------- // Test BC++ built 32-bit DLL's (Example of ChkCert.DLL call). // // Copyright (c) Dekart Ltd. All Rights Reserved // // This application tests calling into a 32-bit DLL built with Borland C++. // Code was verified with Borland C++ 5.02 // //---------------------------------------------------------------------------- #include <windows.h> #include <stdio.h> // stdio.h #include <stdlib.h> #include <conio.h> #include <sys/stat.h> #include <io.h> #include <dir.h> #include <fstream.h> #include <string.h> #include "ChkCert.h" // functions from ChkCert.dll char Dll[] = "ChkCert.dll";

int (__stdcall *pOpenChkSession)(char *Port, short ReaderType, char *Iss_KeyFile, char *PIN, char *IccNo);

Page 14: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 14 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

void (__stdcall *pCloseChkSession)(void); int (__stdcall *pChkCert)(char Type, char *Rnd, char *Amn, char *CurTrno, char *Crt, char *SerNo); int (__stdcall *pChkSCert)(char Type, char *Rnd, char *Amn, char *CurTrno, char *Crt, char *SerNo); /////////////////////////////////////////////////////////////////////////////// int main(int argc, char *argv[]) {

int status, i; short reader; char rnd[17]=" ", crt[13]=" ", cur[5]=" "; char rnd1[17]=" ", crt1[13]=" ", rnd2[17]=" ", crt2[13]=" "; long int sum1=0; char sum[10]=" "; char port[20]=" "; char cardnum[33]=" "; FILE *filei;

// // Load the Dynamic Link LIbrary ChkCert.dll // HINSTANCE hLib = LoadLibrary(Dll); if ( (unsigned)hLib <= HINSTANCE_ERROR ) { printf("Failure loading library: %s\n", Dll); return 0; }

// // Get all the entry points for the functions we wish to test. Typedef's can // be used to simplify casting the retrun value from GetProcAddress. // pOpenChkSession = (int(__stdcall*)(char *Port, short ReaderType, char *Iss_KeyFile, char *PIN, char *IccNo)) GetProcAddress(hLib, "OpenChkSession"); pCloseChkSession = (void(__stdcall*)(void)) GetProcAddress(hLib, "CloseChkSession"); pChkCert = (int(__stdcall*)(char Type, char *Rnd, char *Amn, char *CurTrno, char *Crt, char *SerNo))GetProcAddress(hLib, "ChkCert"); pChkSCert = (int(__stdcall*)(char Type, char *Rnd, char *Amn, char *CurTrno, char *Crt, char *SerNo))GetProcAddress(hLib, "ChkSCert");

// // GetProcAddress returns null on failure // if( pChkSCert == NULL || pOpenChkSession == NULL || pCloseChkSession == NULL || pChkCert == NULL ) { printf("Failure locating procedures.\n"); return 0; }

// PORT - name of com-port connected to reader // READER - reader type // PIN - PIN-code to access card // CUR - currency type // SUM - sum // RND - random sequence // CARDNUM - card serial number // CRT - certificate value

// // Open Certificate Verification session // printf("\n Open Certificate Verification session for 94980001 issuer\n"); // Keys Reading printf("\n Input Acces Card in Reader"); getch(); status = pOpenChkSession("COM2",0,"94980001.se2", "1111",cardnum); if (status != OK) { printf("\n Error: %d\n", status); return 0; } else{ printf("\n Status: %d\n", status);

Page 15: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 15 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

printf(" CardNum: %s\n", cardnum); }

// =========================================== // Certificate Verification Tests // =========================================== // Card with mask S //--------------------------------------------

printf("\nCard with mask S\n"); // // Debit Certificate Verification Test // printf("\nCheck Debit Certificate...\n");

filei=fopen("debit","r"); for(i=0; i<6; i++) { fscanf(filei,"%s",&cardnum); fscanf(filei,"%s",&sum); fscanf(filei,"%s",&cur); fscanf(filei,"%s",&rnd); fscanf(filei,"%s",&crt); printf("\n %s %s %s %s %s", rnd, sum, cur, crt, cardnum);

status = pChkSCert('P', rnd, sum, cur, crt, cardnum); if (status == 1) { printf("\n\tCertificate is TRUE\n"); } else { if (status == 0) printf("\n\tCertificate is FALSE\n"); else printf("Error: %d\n", status); } }fclose(filei); // // Credit Certificate Verification Test //

printf("\nCheck Credit Certificate...\n");

filei=fopen("credit","r");

for(i=0; i<6; i++) { fscanf(filei,"%s",&cardnum); fscanf(filei,"%s",&sum); fscanf(filei,"%s",&cur); fscanf(filei,"%s",&rnd1); fscanf(filei,"%s",&crt1); fscanf(filei,"%s",&rnd2); fscanf(filei,"%s",&crt2); printf("\n %s %s %s %s %s ", rnd1, sum, cur, crt1, cardnum);

status = pChkSCert('R', rnd1, sum, cur, crt1, cardnum); if (status == 1) { printf("\n\tCertificate is TRUE\n"); } else { if (status == 0) printf("\n\tCertificate is FALSE\n"); else printf("Error: %d\n", status); } }fclose(filei); //---------------------------- // Card without mask S //----------------------------

printf("\nCard without mask S\n"); //

Page 16: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 16 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

// Debit Certificate Verification Test // printf("\nCheck Debit Certificate...\n");

filei=fopen("debit.dat","r"); for(i=0; i<6; i++) { fscanf(filei,"%s",&cardnum); fscanf(filei,"%s",&sum); fscanf(filei,"%s",&cur); fscanf(filei,"%s",&rnd); fscanf(filei,"%s",&crt); printf("\n %s %s %s %s %s", rnd, sum, cur, crt, cardnum);

status = pChkCert('P', rnd, sum, cur, crt, cardnum); if (status == 1) { printf("\n\tCertificate is TRUE\n"); } else { if (status == 0) printf("\n\tCertificate is FALSE\n"); else printf("Error: %d\n", status); } }fclose(filei); // // Credit Certificate Verification Test //

printf("\nCheck Credit Certificate...\n");

filei=fopen("credit.dat","r");

for(i=0; i<6; i++) { fscanf(filei,"%s",&cardnum); fscanf(filei,"%s",&sum); fscanf(filei,"%s",&cur); fscanf(filei,"%s",&rnd1); fscanf(filei,"%s",&crt1); fscanf(filei,"%s",&rnd2); fscanf(filei,"%s",&crt2); printf("\n %s %s %s %s %s ", rnd1, sum, cur, crt1, cardnum);

status = pChkCert('R', rnd1, sum, cur, crt1, cardnum); if (status == 1) { printf("\n\tCertificate is TRUE\n"); } else { if (status == 0) printf("\n\tCertificate is FALSE\n"); else printf("Error: %d\n", status); } }fclose(filei);

// // Close Certificate Verification session // printf("Close Certificate Verification session for 99800001 issuer\n"); pCloseChkSession();

printf("\n"); if((unsigned)hLib>HINSTANCE_ERROR) FreeLibrary(hLib); cout <<"done." <<endl; return 1; }

4.3. Результаты работы тестового примера для функций модуля

Page 17: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 17 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

Данные №1

Open Certificate Verification session for 94980001 issuer Input Acces Card in Reader

Status: 1 CardNum: 0000BBE701000200 Card with mask S Check Debit Certificate... DCDE889CE369945C 1 498 4150643A700F 0000003600FFFF02

Certificate is TRUE 9190076FFA74D2A0 5 498 CC8EA644CF2D 0000003600FFFF02

Certificate is TRUE 958A40A95B06A80D 1 500 71D71ED79633 0000003600FFFF02

Certificate is TRUE 62900EC0D0901317 5 500 F18B81BAA684 0000003600FFFF02

Certificate is TRUE 89A4C22985DB7F29 1 980 FFBB4AC78A1A 0000003600FFFF02

Certificate is TRUE A8B0D3782BE274C2 5 980 1F83431FA68F 0000003600FFFF02

Certificate is TRUE Check Credit Certificate... 720CA3B7384D2097 1 0001 33E890158197 0000003600FFFF02

Certificate is TRUE DFED447BFAE64E24 5 0002 B89154009E17 0000003600FFFF02

Certificate is TRUE 4023084D90EACF81 1 0002 155BB6FAC88C 0000003600FFFF02

Certificate is TRUE 1CA845BE5A42120B 5 0003 E3F7228567B1 0000003600FFFF02

Certificate is TRUE D0A747F0D330C587 1 0001 B1E3F2C3DA4F 0000003600FFFF02

Certificate is TRUE 5D4EFB86CBD1D0EE 5 0002 EAEB1B56B397 0000003600FFFF02

Certificate is TRUE Card without mask S Check Debit Certificate... F0AD2A0B245299FA 1 498 D8AA3068FFE2 000001C4E4000000

Certificate is TRUE 1B71B13830407EAF 5 498 8FEA6CFEE19F 000001C4E4000000

Certificate is TRUE

Page 18: Ccrt pg

DSSSCT File : ccrt_pg.doc Ref : CHKCERTPG0000 Revision:2.0 18 / 18 Copyright © Dekart S.R.L (www.dekart.com) - 2001

This document shall not be disclosed to a third party without prior written consent of Dekart S.R.L. Никакая часть данного документа не может быть воспроизведена в какой бы то ни было форме и какими бы, то ни было

средствами без письменного разрешения владельца авторских прав.Ссылка на оригинал обязательна.

0C2B3F2293AEE571 1 500 C1C5D7062584 000001C4E4000000 Certificate is TRUE DD44E62FE9EC41EE 5 500 F60227AAFC1D 000001C4E4000000

Certificate is TRUE 0005269C5CF53293 1 980 801686609B01 000001C4E4000000

Certificate is TRUE 98BF33D48D883E75 5 980 08DF74441488 000001C4E4000000

Certificate is TRUE Check Credit Certificate... 55B821AC2B612EFA 1 0020 CA548B5A0B00 000001C4E4000000

Certificate is TRUE 18D4861D27BB558A 5 0021 B8A5D2820437 000001C4E4000000

Certificate is TRUE 925BA7644D084B46 1 0019 BD0B3FBFD1B4 000001C4E4000000

Certificate is TRUE 718EC98A94817DAC 5 001A BBE3B2BA58F1 000001C4E4000000

Certificate is TRUE Данные №2

Open Certificate Verification session for 94980001 issuer Input Acces Card in Reader

Status: 1 CardNum: 0000BBE701000200 Card with mask S Check Credit Certificate... 720CA3B7384D2097 10 0001 33E890158197 0000003600FFFF02

Certificate is FALSE

Примечание. Выделенным шрифтом показаны исходная и искаженная транзакции.