Библиотека процедур криптографической защиты информации
версия 2.01
Описание применения.
Руководство программиста
редакция 2
Киев 2000
СОДЕРЖАНИЕ
1 ОписанИЕ ПРИМЕНЕНИЯ................................................................................................................. 4
1.1 НАЗНАЧЕНИЕ............................................................................................................................................ 4
1.2 СОСТАВ БИБЛИОТЕКИ........................................................................................................................... 4
1.3 КОМПЛЕКТ ПОСТАВКИ....................................................................................................................... 7
1.4 ТЕХНОЛОГИЯ ИСПОЛЬЗОВАНИЯ ПРОЦЕДУР КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ............ 7
1.4.1 Технология использования процедур криптографической защиты в системах электронной почты............................................................................................................................................................. 7
1.4.2 Технология использования процедур криптографической защиты в системе «Клиент-Банк».............................................................................................................................................................. 8
1.4.3 Технология использования процедур криптографической защиты в системах автоматизации электронного документооборота.............................................................................. 9
2 РУКОВОДСТВО ПРОГРАММИСТА.................................................................................................. 11
2.1 ОПИСАНИЕ ПРОЦЕДУР КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ.................................................... 11
2.1.1 Процедуры инициализации/деинициализации средств криптографической защиты.......... 11
2.1.2 Процедуры защиты данных при их обработке внутри прикладной системы и передаче между прикладными системами............................................................................................................ 11
2.1.3 Процедуры управления доступом к данным при их обработке внутри прикладной системы...................................................................................................................................................... 15
2.1.4 Процедуры управления криптографическими ключами............................................................ 17
2.1.5 Вспомогательные процедуры......................................................................................................... 19
ПРИЛОЖЕНИЕ 1........................................................................................................................................ 21
Прототипы Процедур криптографической защиты для языка C.................................................... 21
Приложение 2......................................................................................................................................... 24
Прототипы Процедур криптографической защиты для языка PASCAL....................................... 24
Приложение 3......................................................................................................................................... 27
Коды возврата Процедур криптографической защиты..................................................................... 27
Библиотека процедур криптографической защиты информации содержит процедуры, предназначенные для обеспечения защиты информации от угроз целостности, конфиденциальности, а также разграничения доступа к информации с использованием механизмов криптографической защиты (электронная цифровая подпись, шифрование, выработка кодов аутентификации сообщений, имитовставок) путем встраивания в конкретные прикладные системы, функционирующие на IBM- совместимых компьютерах в операционных системах (ОС) Windows95/98/NT/2000, UNIX- совместимые.
Входящие в состав библиотеки процедуры криптографической защиты информации реализуют:
· шифрование/расшифрование данных по алгоритму, установленному ГОСТ 28147-89;
· выработку/проверку имитовставки по алгоритму, установленному ГОСТ 28147-89;
· выработку/проверку электронной цифровой подписи (ЭЦП), по алгоритму, установленному ГОСТ 34.310-95, 34.311-95;
· управление списками доступа к обьектам данных в виде файлов или массивов в оперативной памяти;
· выработку ключей шифрования по схеме Диффи-Хеллмана (используется открытое распределение ключей в соответствии с требованиями ISO 11166-94).
Процедуры, функционально разделены на пять групп (рисунок 1):
· инициализации/деинициализации средств криптографической защиты:
- процедура инициализации средств криптографической защиты;
- процедура деинициализации средств криптографической защиты;
· защиты данных при их обработке внутри прикладной системы и передаче между прикладными системами:
- процедура выработки ЭЦП массива данных в оперативной памяти;
- процедура проверки ЭЦП массива данных в оперативной памяти;
- процедура выработки ЭЦП файла данных с помещением ЭЦП в файл;
- процедура проверки ЭЦП файла данных, помещенной при выработке в файл;
- процедура выработки ЭЦП файла данных с помещением ЭЦП в массив в оперативной памяти;
- процедура проверки ЭЦП файла данных, помещенной в массив в оперативной памяти;
- процедура зашифрования с выработкой имитовставки массива данных в оперативной памяти;
- процедура расшифрования с проверкой имитовставки массива данных в оперативной памяти;
- процедура зашифрования с выработкой имитовставки файла данных;
- процедура расшифрования с проверкой имитовставки файла данных;
· управления доступом к данным при их обработке внутри прикладной системы:
- процедура зашифрования обьекта данных в виде файла с инициализацией списка управления доступом к обьекту;
- процедура проверки полномочий доступа пользователя к обьекту данных в виде файла с расшифрованием обьекта данных пользователем, занесенным в список управления доступом к обьекту;
- процедура зашифрования обьекта данных в виде массива в оперативной памяти с инициализацией списка управления доступом к обьекту;
- процедура проверки полномочий доступа пользователя к обьекту данных в виде массива в оперативной памяти с расшифрованием обьекта данных пользователем, занесенным в список управления доступом к обьекту;
- процедура занесения пользователя в список управления доступом к обьекту данных;
- процедура удаления пользователя из списка управления доступом к обьекту данных;
· управления криптографическими ключами:
- процедура генерации секретного ключа (СК) и открытого ключа (ОК) ЭЦП пользователя;
- процедура занесения ОК из файла в базу данных (БД) ОК;
- процедура формирования файла ОК для ОК, хранящегося в БД ОК;
- процедура формирования дампа ОК для ОК, хранящегося в БД ОК;
- процедура формирования дампа ОК для ОК, хранящегося в файле;
- процедура формирования дампа файла ОК;
- процедура удаления ОК, хранящегося в БД ОК;
· вспомогательные процедуры:
- процедура получения списка организаций, ОК пользователей которых зарегистрированны в БД ОК;
- процедура получения списка ОК пользователей данной организаций, зарегистрированных в БД ОК;
- процедура получения информации об ОК пользователя, хранящемся в БД ОК;
- процедура проверки лицензии рабочего места.
Скоростные характеристики программных средств, реализующих алгоритмы криптографических преобразований (для ПЭВМ на базе PentiumMMX/200 МГц):
· выработка ЭЦП – 0.02 сек ;
· проверка ЭЦП – 0.047 сек ;
· шифрование – 1.4 Mбайт/сек;
· хэширование – 480 Кбайт/сек.
Скоростные характеристики выработки/проверки ЭЦП замерялись путем усреднения по времени результата многократного выполнения данных операций (длина ключа - 512бит), характеристики шифрования/расшифрования замерялись путем усреднения по времени результата многократного выполнения данных операций для шифруемого блока данных обьемом 1 Кбайт.
Исполняемые коды процедур (для ОС Windows’95, 98, 2000,NT ) находятся в файле PCRWAN32.DLL.
Исполняемые коды процедур для UNIX- совместимых ОС находятся в файле PCRWAN.SO.
Прототипы процедур для языка C описаны в Приложении 1, прототипы для языка Pascal описаны в Приложении 2, коды возврата описаны в Приложении 3.
В стандартный комплект поставки входит файл исполняемых кодов процедур криптографической защиты для соответствующей ОС, лицензионный файл PLICENCE.DAT, файл криптографических параметров PQA.CSP, а также файл PWAN_RP.DOC, содержащий описание применения и руководство программиста.
Технология использования процедур криптографической защиты зависит от технологии обработки информации, реализованной в конкретной прикладной системе. В данном документе приведены варианты использования процедур криптографической защиты для прикладных систем трех типов: систем электронной почты, систем электронных платежей «Клиент-Банк» и систем автоматизации электронного документооборота.
Технология использования процедур криптографической защиты для защиты сообщений, передаваемых по электронной почте, может быть следующей.
При формировании сообщения для передачи корреспонденту:
1) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
2) для передаваемого сообщения выполняется формирование ЭЦП отправителя с использованием процедур PUTSIGNS или PUTSIGNF (в зависимости от вида представления сообщения);
3) сформированное сообщение зашифровывается с использованием процедуры ENCRYPTS или ENCRYPTF и передается корреспонденту;
4) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
При приеме сообщения от корреспондента:
1) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
2) выполняется расшифрование принятого сообщения с использованием процедур DECRYPTS или DECRYPTF (в зависимости от вида представления сообщения);
3) выполняется проверка ЭЦП отправителя сообщения с использованием процедур CHKSIGNS или CHKSIGNF (в зависимости от вида представления сообщения), после чего выполняется дальнейшая обработка сообщения;
4) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
В состав системы «Клиент-Банк» входят автоматизированные рабочие места (АРМ) клиента, выполняющие операции формирования электронных платежных документов (ЭПД), их авторизации с использованием механизма ЭЦП и передачи в зашифрованном виде пакетов ЭПД в АРМ автоматизированной банковской системы (АБС), в котором выполняются операции приема и обработки пакетов ЭПД, а также формирования, авторизации и передачи клиенту пакетов ответных документов (выписок, квитанций), которые после приема обрабатываются в АРМ клиента. Технология использования процедур криптографической защиты при этом может быть следующей.
В АРМ клиента при формировании пакета ЭПД для передачи в банк:
1) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
2) для сформированных ЭПД вырабатывается ЭЦП должностных лиц клиента с использованием процедуры PUTSIGNS;
3) при необходимости выполняется проверка ЭЦП должностных лиц клиента на ЭПД с использованием процедуры CHKSIGNS;
4) формируется файл- пакет ЭПД, для которого выполняется формирование ЭЦП должностного лица клиента, ответственного за взаимодействие с банком, с использованием процедуры PUTSIGNF;
5) сформированный пакет (файл) зашифровывается с использованием процедуры ENCRYPTF и передается в АБС;
6) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
В АРМ клиента при приеме пакета ответных документов из банка:
5) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
6) выполняется расшифрование принятого пакета (файла) использованием процедуры DECRYPTF;
7) выполняется проверка ЭЦП должностного лица банка на пакете с использованием процедуры CHKSIGNF, после чего выполняется обработка ответных документов в АРМ клиента;
8) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
В АБС при приеме пакета документов от клиента:
1) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
2) выполняется расшифрование принятого пакета (файла) использованием процедуры DECRYPTF;
3) выполняется проверка ЭЦП должностного лица клиента на пакете с использованием процедуры CHKSIGNF;
4) выполняется проверка ЭЦП должностных лица клиента на входящих в соств пакета ЭПД с использованием процедуры CHKSIGNS, после чего выполняется обработка ЭПД в АБС;
5) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
В АБС при формировании пакета ответных документов для передачи клиенту:
9) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
10) формируется файл- пакет ответных документов, для которого выполняется формирование ЭЦП должностного лица банка, ответственного за взаимодействие с клиентом, с использованием процедуры PUTSIGNF;
11) сформированный пакет (файл) зашифровывается с использованием процедуры ENCRYPTF и передается клиенту;
12) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
В состав системы автоматизации электронного документооборота входят АРМ, выполняющие операции по формированию/модификации электронных документов (ЭД). Сформированные ЭД хранятся в документоориентированной БД, откуда извлекаются и поступают в соответствующий АРМ по запросу пользователя, имеющего полномочия по просмотру/модификации соответствующих документов. Технология использования процедур криптографической защиты в системах электронного документооборота может быть следующей.
При формировании ЭД и помещении его в БД:
1) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
2) для сознанного ЭД вырабатывается ЭЦП исполнителя с использованием процедур PUTSIGNS или PUTSIGNFM (в зависимости от вида представления ЭД при его хранении в БД);
3) исполнитель зашифровывает созданный ЭД и формирует для него список управления доступом с использованием процедур ENCRYPTSL или ENCRYPTFL (в зависимости от вида представления ЭД при его хранении в БД), после чего ЭД помещается в БД системы электронного документооборота;
4) исполнитель заносит в список управления доступом к ЭД пользователей, уполномоченных выполнять операции по просмотру/редактированию ЭД, с использованием процедуры ADDUSERL или удаляет пользователей из списка с использованием процедуры DELUSERL, после чего список управления доступом помещается в БД системы электронного документооборота;
5) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
При доступе пользователя к ЭД для просмотра:
1) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
2) выполняется проверка полномочий пользователя по доступу к ЭД с расшифрованием с использованием процедур DECRYPTSL или DECRYPTFL (в зависимости от вида представления ЭД при его хранении в БД);
3) выполняется проверка ЭЦП исполнителя ЭД с использованием процедур CHKSIGNS или CHKSIGNFM (в зависимости от вида представления ЭД при его хранении в БД), после чего выполняется просмотр ЭД;
4) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
При доступе пользователя к ЭД для модификации:
1) выполняется инициализация средств криптографической защиты с использованием процедуры INITPLIB;
2) выполняется проверка полномочий пользователя по доступу к ЭД с расшифрованием с использованием процедур DECRYPTSL или DECRYPTFL (в зависимости от вида представления ЭД при его хранении в БД);
3) выполняется проверка ЭЦП исполнителя ЭД с использованием процедур CHKSIGNS или CHKSIGNFM (в зависимости от вида представления ЭД при его хранении в БД), после чего выполняется модификация ЭД;
4) для модифицированного ЭД вырабатывается ЭЦП выполнившего модификацию пользователя с использованием процедур PUTSIGNS или PUTSIGNFM (в зависимости от вида представления ЭД при его хранении в БД);
5) выполнивший модификацию пользователь зашифровывает созданный ЭД и формирует для него список управления доступом с использованием процедур ENCRYPTSL или ENCRYPTFL (в зависимости от вида представления ЭД при его хранении в БД), после чего ЭД помещается в БД системы электронного документооборота;
6) выполнивший модификацию пользователь заносит в список управления доступом к ЭД пользователей, уполномоченных выполнять операции по просмотру/редактированию ЭД, с использованием процедуры ADDUSERL или удаляет пользователей из списка с использованием процедуры DELUSERL, после чего список управления доступом помещается в БД системы электронного документооборота;
7) выполняется деинициализация средств криптографической защиты с использованием процедуры DEINITPLIB.
Процедура инициализации средств криптографической защиты:
INITPLIB(dbkDir, skeyDir, pin, info );
Вход:
dbkDir - каталог файлов БД открытых ключей (PKBASE0.DBK,
PKBASE1.DBK, PKBASE2.DBK, PQA.CSP);
skeyDir - каталог файла секретного ключа (SKEY.SKF);
pin - Pin-код доступа к секретному ключу;
Выход:
info – структура с информацией о секретном ключе;
Возврат:
см. коды возврата.
Процедура деинициализации средств криптографической защиты:
DEINITPLIB;
Вход:
нет;
Выход:
нет;
Возврат:
см. коды возврата.
Процедура выработки ЭЦП массива данных в оперативной памяти:
PUTSIGNS(sign_data, data_len, signature, info);
Вход:
sign_data – массив подписываемых данных;
data_len – размер массива в байтах;
Выход:
signature – массив с данными подписи (82 байта);
info – структура с информацией о подписи;
Возврат:
см. коды возврата.
Процедура проверки ЭЦП массива данных в оперативной памяти:
CHKSIGNS(sign_data, data_len, signature, info);
Вход:
sign_data – массив подписываемых данных;
data_len – размер массива в байтах;
signature – массив с данными подписи (82 байта);
Выход:
info – структура с информацией о подписи;
Возврат:
см. коды возврата.
Процедура выработки ЭЦП файла данных с помещением ЭЦП в файл:
PUTSIGNF(f_handle, info);
Вход:
f_handle – дескриптор открытого файла;
Выход:
info – структура с информацией о подписи;
Возврат:
см. коды возврата.
Процедура проверки ЭЦП файла данных, помещенной при выработке в файл:
CHKSIGNF(f_handle, info);
Вход:
f_handle – дескриптор открытого файла;
Выход:
info – структура с информацией о подписи;
Возврат:
см. коды возврата.
Процедура выработки ЭЦП файла данных с помещением ЭЦП в массив в оперативной памяти:
PUTSIGNFM(f_handle,signature,info);
Вход:
f_handle – дескриптор открытого файла;
Выход:
signature – массив с данными подписи (82 байта);
info – структура с информацией о подписи;
Возврат:
см. коды возврата.
Процедура проверки ЭЦП файла данных, помещенной в массив в оперативной памяти:
CHKSIGNFM(f_handle,signature,info);
Вход:
f_handle – дескриптор открытого файла;
signature – массив с данными подписи (82 байта);
Выход:
info – структура с информацией о подписи;
Возврат:
см. коды возврата.
Процедура зашифрования с выработкой имитовставки массива данных в оперативной памяти:
ENCRYPTS(inp_data, inp_data_len, org_num, user_num, out_data, out_data_len, cipher_block);
Вход:
inp_data – массив шифруемых данных;
inp_data_len – размер массива в байтах;
org_num – номер организации абонента- получателя данных;
user_num – номер абонента- получателя данных в его организации (-1 – для всех абонентов данной организации);
Выход:
out_data – массив зашифрованных данных;
out_data_len – размер массива в байтах;
cipher_block – массив с данными блока шифрования (346 байт);
Возврат:
см. коды возврата.
Процедура расшифрования с проверкой имитовставки массива данных в оперативной памяти:
DECRYPTS(inp_data, inp_data_len, cipher_block, out_data, out_data_len);
Вход:
inp_data – массив зашифрованных данных;
inp_data_len – размер массива в байтах;
cipher_block – массив с данными блока шифрования (346 байт);
Выход:
out_data – массив расшифрованных данных;
out_data_len – размер массива в байтах;
Возврат:
см. коды возврата.
Процедура зашифрования с выработкой имитовставки файла данных:
ENCRYPTF(i_handle, o_handle, org_num, user_num);
Вход:
i_handle – дескриптор открытого незашифрованного файла;
o_handle – дескриптор открытого зашифрованного файла;
org_num – номер организации абонента- получателя данных;
user_num – номер абонента- получателя данных в его организации (-1 – для всех абонентов данной организации);
Выход:
нет;
Возврат:
см. коды возврата.
Процедура расшифрования с проверкой имитовставки файла данных:
DECRYPTF(i_handle, o_handle);
Вход:
i_handle – дескриптор открытого зашифрованного файла;
o_handle – дескриптор открытого расшифрованного файла;
Выход:
нет;
Возврат:
см. коды возврата.
Процедура зашифрования обьекта данных в виде файла с инициализацией списка управления доступом к обьекту:
ENCRYPTFL(i_handle, o_handle, acc_list_data);
Вход:
i_handle – дескриптор открытого незашифрованного файла;
o_handle – дескриптор открытого зашифрованного файла;
Выход:
acc_list_data – инициализированный список контроля доступа (3640 байт);
Возврат:
см. коды возврата.
Процедура проверки полномочий доступа пользователя к обьекту данных в виде файла с расшифрованием обьекта данных пользователем, занесенным в список управления доступом к обьекту:
DECRYPTFL(i_handle, o_handle, acc_list_data);
Вход:
i_handle – дескриптор открытого зашифрованного файла;
o_handle – дескриптор открытого расшифрованного файла;
acc_list_data – список управления доступом (3640 байт);
Выход:
нет;
Возврат:
см. коды возврата.
Процедура процедура зашифрования обьекта данных в виде массива в оперативной памяти с инициализацией списка управления доступом к обьекту:
ENCRYPTSL(inp_data, inp_data_len, acc_list_data, out_data, out_data_len);
Вход:
inp_data – массив шифруемых данных;
inp_data_len – размер массива в байтах;
Выход:
acc_list_data – инициализированный список управления доступом (3640 байт);
out_data – массив зашифрованных данных;
out_data_len – размер массива в байтах;
Возврат:
см. коды возврата.
Процедура проверки полномочий доступа пользователя к обьекту данных в виде массива в оперативной памяти с расшифрованием обьекта данных пользователем, занесенным в список управления доступом к обьекту:
DECRYPTSL(inp_data, inp_data_len, acc_list_data, out_data, out_data_len);
Вход:
inp_data – массив зашифрованных данных;
inp_data_len – размер массива в байтах;
acc_list_data –список управления доступом (3640 байт);
Выход:
out_data – массив расшифрованных данных;
out_data_len – размер массива в байтах;
Возврат:
см. коды возврата.
Процедура занесения пользователя в список управления доступом к обьекту данных:
ADDUSERL(acc_list_data, user_num, user_type)
Вход:
acc_list_data –список управления доступом (3640 байт);
user_num – номер пользователя;
user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор)
Выход:
нет;
Возврат:
см. коды возврата.
Процедура удаления пользователя из списка управления доступом к обьекту данных:
DELUSERL(acc_list_data, user_num, user_type)
Вход:
acc_list_data –список управления доступом (3640 байт);
user_num – номер пользователя;
user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор)
Выход:
нет;
Возврат:
см. коды возврата.
Процедура генерации СК и ОК ЭЦП пользователя:
GENKEYSB(dbkDir, skeyDir, pin, org_num, key_num,
key_type, end_date, user_name);
Вход:
dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);
skeyDir - каталог файла секретного ключа (SKEY.SKF);
pin - Pin-код доступа к секретному ключу;
org_num - номер организации;
key_num - номер пользователя;
key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);
end_date – дата окончания действия ключа в формате YYYYMMDD;
user_name- имя пользователя.
Выход:
нет;
Возврат:
см. коды возврата.
Процедура занесения ОК из файла в БД ОК:
PUTPKDBK(dbkDir, key_file_name);
Вход:
dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);
key_file_name - имя файла;
Выход:
нет;
Возврат:
см. коды возврата.
Процедура формирования файла ОК для ОК, хранящегося в БД ОК:
FRMPKEYF(org_num, key_num, key_type, dbkDir, pkeyDir );
Вход:
org_num - номер организации;
key_num - номер пользователя;
key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);
dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);
pkeyDir - каталог файла секретного ключа (SKEY.SKF);
Выход:
нет;
Возврат:
см. коды возврата.
Процедура формирования дампа ОК для ОК, хранящегося в БД ОК:
FRMPKEYS(org_num, key_num, key_type, dbkDir, key_dump );
Вход:
org_num - номер организации;
key_num - номер пользователя;
key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);
dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);
Выход:
key_dump – структура с дампом ОК;
Возврат:
см. коды возврата.
Процедура формирования дампа ОК для ОК, хранящегося в файле:
FRMPKEYSF(key_file_name , key_dump );
Вход:
key_file_name - имя файла ОК;
Выход:
key_dump – структура с дампом ОК;
Возврат:
см. коды возврата.
Процедура формирования дампа файла ОК:
FORMPKFN(org_num, key_num, key_type, file_name);
Вход:
org_num - номер организации;
key_num - номер пользователя;
key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);
Выход:
file_name - имя файла ОК;
Возврат:
см. коды возврата.
Процедура удаления ОК, хранящегося в БД ОК:
DELPKEYB(org_num, key_num, key_type, dbkDir);
Вход:
org_num - номер организации;
key_num - номер пользователя;
key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);
dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);
Выход:
нет;
Возврат:
см. коды возврата.
Процедура получения списка организаций, ОК пользователей которых зарегистрированны в БД ОК:
GETORGL(list, num)
Вход:
list – адрес массива для сохранения номеров организаций (NULL-не заполняется);
Выход:
num –количество зарегистрированных организаций;
Возврат:
см. коды возврата.
Процедура получения списка ОК пользователей данной организаций, зарегистрированных в БД ОК:
GETUSRL(org_num, user_type, list, num)
Вход:
list – адрес массива для сохранения номеров организаций (NULL-не заполняется);
org_num – номер организации;
user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор);
Выход:
num –количество зарегистрированных ключей;
Возврат:
см. коды возврата.
Процедура получения информации об ОК пользователя, хранящемся в БД ОК:
GETPKINF(org_num, user_num, user_type, info )
Вход:
org_num – номер организации;
user_num – номер пользователя;
user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор)
Выход:
info – структура с информацией о секретном ключе;
Возврат:
см. коды возврата.
Процедура проверки лицензии рабочего места:
CHKLIC(lic_info);
Вход:
нет;
Выход:
lic_info - структура с данными лицензии;
Возврат:
см. коды возврата.
typedef struct
{
unsigned short int key_type;
unsigned short int key_num;
unsigned short int org_num;
char user_name[64];
char user_id[128];
} KeyInfoType, *LPKeyInfoType;
typedef struct
{
unsigned short int org_num;
unsigned short int key_type;
unsigned short int key_num;
unsigned long sig_date;
unsigned long sig_time;
char user_name[64];
} SignatureInfoType, *LPSignatureInfoType;
typedef struct
{
char key_type[1];
char org_num[4];
char key_num[3];
char end_date[8];
char user_name[52];
char pub_key[129];
} PublicKeyDumpType, *LPPublicKeyDumpType;
typedef struct
{
unsigned long org_num;
unsigned char org_name[128];
unsigned long end_date;
} LicenInfo, *LPLicenInfo;
int WINAPI INITPLIB(LPSTR dbkDir, LPSTR skeyDir, LPSTR pin, LPKeyInfoType info );
int WINAPI DEINITPLIB( void );
int WINAPI PUTSIGNS(LPVOID sign_data, DWORD data_len, LPVOID signature,
LPSignatureInfoType info );
int WINAPI CHKSIGNS(LPVOID sign_data, DWORD data_len, LPVOID signature,
LPSignatureInfoType info );
int WINAPI PUTSIGNF(DWORD f_handle, LPSignatureInfoType info );
int WINAPI CHKSIGNF(DWORD f_handle, LPSignatureInfoType info );
int WINAPI ENCRYPTS(LPVOID inp_data, DWORD inp_data_len, DWORD org_num, DWORD user_num,
LPVOID out_data, LPDWORD out_data_len, LPVOID cipher_block);
int WINAPI DECRYPTS(LPVOID inp_data, DWORD inp_data_len, LPVOID cipher_block,
LPVOID out_data, LPDWORD out_data_len );
int WINAPI ENCRYPTF(DWORD i_handle, DWORD o_handle, DWORD org_num, DWORD user_num);
int WINAPI DECRYPTF(DWORD i_handle, DWORD o_handle);
int WINAPI PUTSIGNFM(DWORD f_handle, LPVOID signature_data, LPSignatureInfoType info );
int WINAPI CHKSIGNFM(DWORD f_handle, LPVOID signature_data, LPSignatureInfoType info );
int WINAPI ENCRYPTFL(DWORD i_handle, DWORD o_handle, LPVOID acc_list_data);
int WINAPI DECRYPTFL(DWORD i_handle, DWORD o_handle, LPVOID acc_list_data);
int WINAPI ENCRYPTSL(LPVOID inp_data, DWORD inp_data_len, LPVOID acc_list_data,
LPVOID out_data, LPDWORD out_data_len);
int WINAPI DECRYPTSL(LPVOID inp_data, DWORD inp_data_len, LPVOID acc_list_data,
LPVOID out_data, LPDWORD out_data_len);
int WINAPI ADDUSERL(LPVOID acc_list_data, DWORD user_num, DWORD user_type);
int WINAPI DELUSERL(LPVOID acc_list_data, DWORD user_num, DWORD user_type);
int WINAPI GETPKINF(WORD org_num, WORD key_num, WORD key_type, LPKeyInfoType info );
int WINAPI GETORGL(LPWORD list, LPDWORD num);
int WINAPI GETUSRL(WORD org_num, WORD key_type, LPWORD list, LPDWORD num);
int WINAPI GENKEYSB( LPSTR dbkDir, LPSTR skeyDir, LPSTR pin, WORD org_num,
WORD key_num,WORD key_type, DWORD end_date, LPSTR user_name);
int WINAPI PUTPKDBK( LPSTR dbkDir,LPSTR key_file_name);
int WINAPI FRMPKEYF( WORD org_num, WORD key_num, WORD key_type, LPSTR dbkDir,
LPSTR pkeyDir );
int WINAPI FRMPKEYS( WORD org_num, WORD key_num, WORD key_type, LPSTR dbkDir,
LPPublicKeyDumpType key_dump );
int WINAPI FRMPKEYSF( LPSTR key_file_name, LPPublicKeyDumpType key_dump );
int WINAPI FORMPKFN( WORD org_num, WORD key_num, WORD key_type, LPSTR file_name);
int WINAPI DELPKEYB( WORD org_num, WORD key_num, WORD key_type, LPSTR dbkDir);
int WINAPI CHKLIC(LPLicenInfo lic_info);
function INITPLIB(dbkDir:Pchar; skeyDir:Pchar; pin:Pchar; info:Pointer):integer; stdcall;
external 'PCRWAN32.DLL' name '_INITPLIB';
function DEINITPLIB:integer;stdcall;external 'PCRWAN32.DLL' name '_DEINITPLIB';
function PUTSIGNS(sign_data:Pointer;data_len:DWORD; signature:Pointer;info:Pointer ):integer;
stdcall;external 'PCRWAN32.DLL' name '_PUTSIGNS';
function CHKSIGNS(sign_data:Pointer;data_len:DWORD; signature:Pointer;info:Pointer) :integer;
stdcall;external 'PCRWAN32.DLL' name '_CHKSIGNS';
function PUTSIGNF(f_handle:DWORD;info:Pointer): integer; stdcall;
external 'PCRWAN32.DLL' name '_PUTSIGNF';
function CHKSIGNF(f_handle:DWORD;info:Pointer): integer;stdcall;
external 'PCRWAN32.DLL' name '_CHKSIGNF';
function ENCRYPTS(inp_data:Pointer;inp_data_len:DWORD; org_num:DWORD;user_num:DWORD;
out_data:Pointer; out_data_len:Pointer; cipher_block:Pointer):integer;
stdcall;external 'PCRWAN32.DLL' name '_ENCRYPTS';
function DECRYPTS(inp_data:Pointer;inp_data_len:DWORD; cipher_block:Pointer; out_data:Pointer;
out_data_len:Pointer):integer; stdcall;external 'PCRWAN32.DLL' name '_DECRYPTS';
function ENCRYPTF(i_handle:DWORD;o_handle:DWORD; org_num:DWORD;
user_num:DWORD) integer;stdcall; external 'PCRWAN32.DLL' name '_ENCRYPTF';
function DECRYPTF(i_handle:DWORD;o_handle:DWORD) integer;stdcall;
external 'PCRWAN32.DLL' name '_DECRYPTF';
function PUTSIGNFM(f_handle:DWORD; signature:Pointer; info:Pointer ) integer;stdcall;
external 'PCRWAN32.DLL' name '_PUTSIGNFM ';
function CHKSIGNFM(f_handle:DWORD; signature:Pointer; info:Pointer ) integer;stdcall;
external 'PCRWAN32.DLL' name '_CHKSIGNFM ';
function ENCRYPTFL(i_handle:DWORD; o_handle:DWORD; acc_list_data:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_ENCRYPTFL';
function DECRYPTFL(i_handle:DWORD; o_handle:DWORD; acc_list_data:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_DECRYPTFL';
function ENCRYPTSL(inp_data:Pointer; inp_data_len:DWORD; acc_list_data:Pointer; out_data:Pointer;
out_data_len:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_ENCRYPTSL ';
function DECRYPTSL(inp_data:Pointer; inp_data_len:DWORD; acc_list_data:Pointer; out_data:Pointer;
out_data_len:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_DECRYPTSL ';
function ADDUSERL(acc_list_data:Pointer; user_num:DWORD; user_type:DWORD) integer;stdcall;
external 'PCRWAN32.DLL' name '_ADDUSERL ';
function DELUSERL(acc_list_data:Pointer; user_num:DWORD; user_type:DWORD) integer;stdcall;
external 'PCRWAN32.DLL' name '_DELUSERL ';
function GETPKINF (org_num:WORD; key_num:WORD; key_type:WORD;info:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_GETPKINF ';
function GETORGL (list:Pointer; num:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_GETORGL ';
function GETUSRL (org_num:WORD; key_type:WORD; list:Pointer; num:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_GETUSRL ';
function GENKEYSB(dbkDir:Pchar; skeyDir:Pchar; pin:Pchar; org_num: WORD; key_num: WORD;
key_type: WORD; end_date: DWORD; user_name:Pchar) integer;stdcall;
external 'PCRWAN32.DLL' name '_GENKEYSB';
function PUTPKDBK( dbkDir:Pchar; key_file_name:Pchar) integer;stdcall;
external 'PCRWAN32.DLL' name '_PUTPKDBK ';
function FRMPKEYF( org_num: WORD; key_num: WORD; key_type: WORD; dbkDir:Pchar;
pkeyDir:Pchar ) integer;stdcall;
external 'PCRWAN32.DLL' name '_FRMPKEYF ';
function FRMPKEYS( org_num:WORD; key_num:WORD; key_type:WORD; dbkDir:Pchar;
key_dump:Pointer ) integer;stdcall;
external 'PCRWAN32.DLL' name '_FRMPKEYS ';
function FRMPKEYSF( key_file_name:Pchar; key_dump:Pointer ) integer;stdcall;
external 'PCRWAN32.DLL' name '_FRMPKEYSF ';
function FORMPKFN( org_num:WORD; key_num:WORD; key_type:WORD; file_name:Pchar) integer;stdcall;
external 'PCRWAN32.DLL' name '_FORMPKFN ';
function DELPKEYB( org_num:WORD; key_num:WORD; key_type:WORD; dbkDir:Pchar) integer;stdcall;
external 'PCRWAN32.DLL' name '_DELPKEYB ';
function CHKLIC( lic_info:Pointer) integer;stdcall;
external 'PCRWAN32.DLL' name '_CHKLIC ';
0 - нормальное завершение процедуры
-1 - не найден файл секретного ключа
-2 - ошибка чтения файла секретного ключа
-3 - нарушена целостность файла секретного ключа
-4 - задан неверный PIN-код
-9 - ошибка инициализации БД открытых ключей (PKBASE0.DBK,
PKBASE1.DBK, PKBASE2.DBK)
-10 - ошибка чтения открытого ключа
-11 - ошибка записи файла секретного ключа
-12 - ошибка записи открытого ключа
-13 - нарушена целостность открытого ключа
-14 - в БД открытых ключей отсутствует требуемый открытый ключ
-15 - сгенерировано слишком много ключей
-16 - используется недопустимый тип ключа
-17 - используется ключ чужой организации
-18 - отсутствует заданный каталог
-19 - не найден файл параметров PQA.CSP
-20 - нарушена целостность файла параметров PQA.CSP
-40 - ошибка открытия файла
-41 - ошибка чтения файла
-42 - ошибка записи в файл
-43 - ошибка при выработке ЭЦП
-44 - ошибка в формате файла
-45 - отсутствует ЭЦП (файл не был подписан)
-46 - открытый ключ не зарегистрирован в базе данных
-47 - неверная ЭЦП (не снята подпись)
-50 - истек срок действия ключа
-60 - нарушение лицензии
-100 - ошибка задания типа ключа
-101 - ошибка задания номера ключа
-102 - нарушена целостность файла
-103 - файл не зашифрован
-104 - ошибка задания номера организации
-200 - указанный пользователь отсутствует в списке доступа
-201 - пользователь не является владельцем обьекта
-202 - список доступа переполнен
-203 - пользователь уже занесен в список доступа
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.