<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);
Параметр | Опис |
Функція повертає 0, коли успішно виконано, або код помилки.
2. Функція перевірки підпису
int __stdcall VerifySign (const void* certbuf, int certlen, const void* hashbuf, 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);
Функція повертає 0, коли успішно зашифровано, або код помилки.
5. Функція розшифрування блоку даних
int __stdcall Decrypt (const void* pkbuf, int pklen, const char* pwd, const void* docbuf, int doclen, void* outbuf, int* outlen);
Функція повертає 0, коли успішно виконано, або код помилки.
6. Функція звірки сертифікату з секретним ключем
int __stdcall VerifyCertPKMatch (const void* certbuf, int certlen, const void* pkbuf, int pklen);
Функція повертає 0, коли сертифікат та секретний ключ являються відповідними, або код помилки.
7. Функція отримання інформації з сертифікату
int __stdcall GetCertlnfo (const void* certbuf, int certlen, UACertlnfo* info);
Параметр | Опис |
const void* certbuf | Буфер з сертифікатом |
int certlen | Довжина буфера з сертифікатом |
UACertlnfo* info | Структура з інформацією з сертифікату (приведена нижче) |
Функція повертає 0, коли успішно виконано, або код помилки.
Структура UACertlnfo
Вирівнювання членів структури - 1 байт.
Розмір кожного строкового поля містить завершуючий 0-символ.
8. Коди помилок