Експорт ключа SignalCom в OpenSSL

У вас стоїть завдання інтегруватися з дистанційним сервісом, який працює за Гостом і "тільки через КРИПТО-КОМ", а ви хочете використовувати OpenSSL з gost? На форумі "Сигнал-КОМ" ви бачите купи повідомлень, що "ключі з формату КРИПТО-КОМ не можна конвертувати у формат OpenSSL-гост-сумісних"? Насправді конвертація можлива.
tl;dr: http://gostcrypto.com/demo-sc-keys.html
Як сконвертувати вже наявні ключі з пропрієтарного в ортодоксальний формат?
Я не параноїк
Йдете на http://gostcrypto.com/demo-sc-keys.html, вказавши файли контейнера типу "mk.db3", "masks.db3", "kek.opq", "rand.opq" і файл приватного ключа по типу "Keys\00000001.key", натисніть кнопку "Export PrivateKey".
У поточній версії gostcrypto.com ключ буде не зовсім PEM-сумісний, т. к. використовується довжина більше 64 символів:
----- BEGIN PRIVATE KEY-----
MEYCAQAwHQYGKoUDAgITMBMGByqFAwICiwegccqfawcbaqicbcieig0geme3dhrhzm1kffdpkbwemmydwcmp0hnkvxxbeblo
-----END PRIVATE KEY-----

Щоб зробити його PEM-сумісним просто додайте новий рядок після 64 символи:
----- BEGIN PRIVATE KEY-----
MEYCAQAwHQYGKoUDAgITMBMGByqFAwICiwegccqfawcbaqicbcieig0geme3dhrh
zm1KfFDpKBWEmMydwcmP0hNKvXXbEbLO
-----END PRIVATE KEY-----

Я параноїк чи хочу cli-версію
На момент публікації цієї статті gostcrypto не node-фицирована і є спроба її node-кації в пул-реквесте. Там же cli-утиліта для експорту в PEM-compatible формат.
Ставимо її і пробуємо експортувати ключ:
sudo npm install -g https://github.com/garex/nodejs-gost-crypto/archive/nodefy.tar.gz
cd /tmp
wget https://www.contact-sys.com/files/redactor/files/TestContactKey.zip
unzip TestContactKey.zip -d TestContactKey
gost-export-signalcom-key --pse TestContactKey --key Keys/00000001.key

В результаті ми отримуємо в STDOUT:
----- BEGIN PRIVATE KEY-----
MEYCAQAwHQYGKoUDAgITMBMGByqFAwICiwegccqfawcbaqicbcieig0geme3dhrh
zm1KfFDpKBWEmMydwcmP0hNKvXXbEbLO
-----END PRIVATE KEY-----

І в STDERR:
OK: Private SignalCom key successfully exported in STDOUT in "PEM" format.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.