• Посилання скопійовано
Документ підготовлено в системі iplex

Про затвердження Уніфікованого формату транспортного повідомлення при інформаційній взаємодії платників податків, операторів і податкових органів в електронному вигляді телекомунікаційними каналами звязку з використанням електронного цифрового підпису

Державна податкова адміністрація України  | Наказ від 24.04.2009 № 213
Реквізити
  • Видавник: Державна податкова адміністрація України
  • Тип: Наказ
  • Дата: 24.04.2009
  • Номер: 213
  • Статус: Документ діє
  • Посилання скопійовано
Реквізити
  • Видавник: Державна податкова адміністрація України
  • Тип: Наказ
  • Дата: 24.04.2009
  • Номер: 213
  • Статус: Документ діє
Документ підготовлено в системі iplex
<R122GA xsi:nil="true"></R122GA>
<R122GB>0</R122GB>
<R123GA xsi:nil="true"></R123GA>
<R124GA xsi:nil="true"></R124GA>
<R124GB>0</R124GB>
<R125GA xsi:nil="true"></R125GA>
<R125GB>0</R125GB>
<R162GA xsi:nil="true"></R162GA>
<R162GB>0</R162GB>
<R163GB xsi:nil="true"></R163GB>
<R170GB>0</R170GB>
<R181GB>30</R181GB>
<R182GB>0</R182GB>
<R200GB>30</R200GB>
<R210GB>0</R210GB>
<R222GB>0</R222GB>
<R230GB>0</R230GB>
<R240GB>0</R240GB>
<R260GB>0</R260GB>
<R270GB>30</R270GB>
<R20G16S xsi:nil="true"></R20G16S>
<HFILL>03042008</HFILL>
<HBOS> Петров Петро Петрович</HBOS>
<HBUH>Ваніліна Олена Петрівна</HBUH>
<HFO xsi:nil="true"><HFO>
</DECLARBODY>
<!-- YOUR_ID="58762" -->
</DECLAR>
Додаток 3
до Уніфікованого формату
транспортного повідомлення
при інформаційній взаємодії
платників податків,
операторів і податкових
органів в електронному
вигляді телекомунікаційними
каналами зв'язку
з використанням електронного
цифрового підпису
СПЕЦИФІКАЦІЯ
криптографічних функцій
1. Вступ
В документі надається опис уніфікованої бібліотеки функцій, призначених для криптографічних перетворень інформації. Бібліотека призначена для застосування при розробці програмного забезпечення в будь-якому середовищі розробки (Microsoft Visual C++, Visual Basic, C#, CodeGear RAD Studio тощо).
2. Загальні вимоги
1. Робота в середовищі Microsoft Windows 98/2000/XP/Vista.
2. Багатопоточність.
3. Бібліотека повинна поставлятися для платформ х86 та х64.
4. Передача параметрів за угодою __ stdcall.
5. Пам'ять під блоки з результатом роботи функцій виділяється визиваючою стороною.
3. Поставка бібліотеки
Бібліотека поставляється у вигляді DLL. Ім'я DLL: Crypt_XXX.DLL, де XXX - ім'я постачальника бібліотеки.
Доступ до функцій DLL виконується функцією GetProcAddress.
4. Склад бібліотеки
1. Функція накладання підпису
int __stdcall MakeSign (const void* pkbuf, int pklen, const char* pwd, const void* hashbuf, void* signbuf, int* signlen);
ПараметрОпис
const void* pkbufБуфер з секретним ключем
int pklenРозмір буфера з секретним ключем
const char* pwdПароль секретного ключа, повинен
закінчуватись символом '\0'
const void* hashbufБуфер з хешем документу,
розмір 32 байта
void* signbufБуфер для підпису, якщо
NULL - в signlen повертається розмір
int* signlenРозмір підпису в буфері
Функція повертає 0, коли успішно виконано, або код помилки.
2. Функція перевірки підпису
int __stdcall VerifySign (const void* certbuf, int certlen, const void* hashbuf, const void* signbuf, int signlen);
ПараметрОпис
const void* certbufБуфер з сертифікатом
int certlenРозмір буфера з сертифікатом
const void* hashbufБуфер з хешем документу,
розмір 32 байта
const void* signbufБуфер з підписом
int signlenРозмір буфера з підписом
Функція повертає 0, якщо підпис вірний, або код помилки.
3. Функція перевірки сертифікату
int __stdcall VerifyCert (const void* certbuf, int certlen, const void* rootcbuf, int rootclen);
ПараметрОпис
const void* certbufБуфер з сертифікатом
int certlenРозмір буфера з сертифікатом
const void* rootcbufБуфер з кореневим сертифікатом
int rootclenРозмір буфера з кореневим
сертифікатом
Функція повертає 0, коли сертифікат відповідає кореневому, або код помилки.
4. Функція шифрування блоку даних
int __stdcall Encrypt (const void* certbuf, int certlen, const void* docbuf, int doclen, void* outbuf, int* outlen);
ПараметрОпис
const void* certbufБуфер з сертифікатом
int certlenРозмір буфера з сертифікатом
const void* pkbufБуфер з секретним ключем
int pklenДовжина буфера з секретним ключем
const char* pwdПароль секретного ключа, повинен
закінчуватись символом '\0'
const void* docbufБуфер з документом
int doclenРозмір буферу з документом
void* outbufВихідний буфер, якщо NULL - в outlen
повертається розмір
int* outlenРозмір вихідного буферу
Функція повертає 0, коли успішно зашифровано, або код помилки.
5. Функція розшифрування блоку даних
int __stdcall Decrypt (const void* pkbuf, int pklen, const char* pwd, const void* docbuf, int doclen, void* outbuf, int* outlen);
ПараметрОпис
const void* pkbufБуфер з секретним ключем
int pklenДовжина буфера з секретним ключем
const char* pwdПароль секретного ключа, повинен
закінчуватись символом '\0'
const void* certbufБуфер з сертифікатом
int certlenРозмір буфера з сертифікатом
const void* docbufБуфер з документом
int docsizeРозмір буферу з документом
void* outbufВихідний буфер, якщо NULL - в outlen
повертається розмір
Int* outlenРозмір вихідного буферу
Функція повертає 0, коли успішно виконано, або код помилки.
6. Функція звірки сертифікату з секретним ключем
int __stdcall VerifyCertPKMatch (const void* certbuf, int certlen, const void* pkbuf, int pklen);
ПараметрОпис
const void* certbufБуфер з сертифікатом
int certlenРозмір буфера з сертифікатом
const void* pkbufБуфер з секретним ключем
int pklenРозмір буфера з секретним ключем
const char* pwdПароль секретного ключа, повинен
закінчуватись символом '\0'
Функція повертає 0, коли сертифікат та секретний ключ являються відповідними, або код помилки.
7. Функція отримання інформації з сертифікату
int __stdcall GetCertlnfo (const void* certbuf, int certlen, UACertlnfo* info);
ПараметрОпис
const void* certbufБуфер з сертифікатом
int certlenДовжина буфера з сертифікатом
UACertlnfo* infoСтруктура з інформацією з сертифікату
(приведена нижче)
Функція повертає 0, коли успішно виконано, або код помилки.
Структура UACertlnfo
ПолеОпис
char Serial[64]Серійний номер сертифікату
char EDRPOU[11]ЄДРПОУ установи
char DRFO[11]ДРФО особи
char Name[64]ПІБ особи або найменування установи
char Email [64]E-mail
char Title[64]Посада
char PostalCode[7]Поштовий індекс
char Obl[64]Область
char Rayon[64]Район
char Adres[64]Адреса
char Tel[64]Телефон
time_t DtBegДата початку дії сертифікату
time_t DtEndДата закінчення дії сертифікату
Вирівнювання членів структури - 1 байт.
Розмір кожного строкового поля містить завершуючий 0-символ.
8. Коди помилок
#define CRYPT_OK0//Успішно
#define CRYPT_BUFFER EMPTY1//Буфер порожній
#define CRYPT_DLL_NOT_LOADED2//DLL не ініціалізовано
#define CRYPT_BAD_CERT3//Помилка отримання інформації
з сертифікату
#define
CRYPT_CERT_NOT_ALLOWED
4//Даний сертифікат не може
використовуватися для
виконання операції
#define CRYPT_SK_NOT_MATCH5//Не збігається пара
сертифікат - секретний ключ
#define CRYPT_SK_CORRUPT7//Некоректний формат
секретного ключа
#define CRYPT_BAD_PASSWORD8//Помилка підпису/шифрування,
можливо вказано невірний
пароль
#define CRYPT_BAD_SIGN11//Невірний підпис
#define CRYPT_INTERNAL_ERR12//Внутрішня помилка перевірки
підпису
#tdefine CRYPT_BAD_CRC13//Помилка перевірки
цілісності: буфер пошкоджено
#define CRYPT_NOT_SUPPORTED14//Функція не підтримується