Използване на ключа CryptoPro с доставчика на крипто Bouncy Castle за създаване на EDS
Задача: внедряване на базиран на SOAP протокол за обмен на данни с контрагент с GOST подпис и ключ CryptoPro. Java, Linux.
Изтеглете CryptoPro CSP. инсталирам. Рестартирайки до черен екран, разбирам, че CryptoPro е убил моя работещ Win7. Глупости, въпрос на живот. Докато системата се възстановява, гледам пробития Pac-Man, изобразен на тяхното лого, бълващ кървав фонтан. Инсталирах VirtualBox с XP, CryptoPro CSP работи с него. Но за мен перспективата да прехвърля разработката на виртуална машина, след което да инсталирам CryptoPro по някакъв начин на боен Linux и да се опитам да излетя с всичко това, не изглеждаше никак розова. За щастие има отлична библиотека BouncyCastle, която поддържа GOST. Остава само да вземете ключа от контейнера на CryptoPro.

трябва да се добави към конфигурационния файл openssl.cfg
Промяна на пътя до gost.dll на ваш собствен.
Експортиране на частния ключ
Опитвам се да го нахраня на BouncyCastle (BC), който щастливо съобщава, че отново му подхлъзвам някакви боклуци и дори изобщо не ключ за гости.
ДОБРЕ ДОБРЕ.

Създавам частен ключ с помощта на BC, за да разбера какво представляваиска.


От структурата test.key копирам ключовите параметри в template.key, както и самия ключ. Тук ме чакаше още една изненада. Още един байт е добавен в началото на ключа CryptoPro. Трябва да копирате само 32 байта, без първия.
Дешифриране на ключов параметър
1.2.643.2.2.35.1— szOID_GostR3410_2001_CryptoPro_A_ParamSet Параметри a, b, p, q, (x, y) на цифровия подпис и алгоритъма на Diffie-Hellman, базиран на алгоритъма GOST R 34.10-2001, крипто доставчик вариант1.2.643.2 2.35.2— szOID_GostR3410_2001_CryptoPro_B_ParamSet Параметри a, b, p, q, (x, y) на цифровия подпис и алгоритъм Diffie-Hellman, базиран на алгоритъма GOST R 34.10-2001, версия на CryptoRIC карта1.2.643.2.2.35.2— s zOID_GostR3410_2001_CryptoPro_C_ParamSet Параметри a, b, p,q, (x,y) на цифровия подпис и алгоритъма на Diffie-Hellman, базиран на алгоритъма GOST R 34.10-2001, версия 11.2.643.2.2.36.0— szOID_GostR3410_2001_ CryptoPro_XchA_ParamSet Параметри a, b, p, q, (x, y) на алгоритъма на Diffie-Hellman, базиран на алгоритъма GOST R 34.10-2001, версия на криптопровайдер . Използват се същите параметри, както при идентификатора szOID_GostR3410_2001_CryptoPro_A_ParamSet1.2.643.2.2.35.3— szOID_GostR3410_2001_CryptoPro_XchB_ParamSet Параметри a, b, p, q, (x, y) на цифров подпис и алгоритъм Diffie-Hellman въз основа на алгоритъма GOST R 34.10-2001, опция 1
Запазвам ключа template.key под друго име. Сега BC не ругае и създава EDS. Но EDS не издържа теста. Какво е?

Оказа се, че трябва да се разположи и EDS!
Интересно е какви са причините за всички тези разлики в структурата на ключовете и алгоритъма за генериране на EDS?