Я вообще скажем так полный нуб в криптографии. И тем более в нюансах CPro, но вот пориходится использовать подпись в одном проекте.
Значит API НСИС
Там требуется - взять URL, сконкатенировать с солью и меткой времени, подписать полученную строку в формате RAW + их внутренний ID серта.
Одно приложение на Windows использует COM объект Cades-что-то там (потом смогу посмотреть если надо и укажу что конкретно) и им подписывает, получает 64-байтовую RAW подпись, она проходит потом проверку.
Надо сделать с нуля другое приложение, на Linux и только с базовой установкой СSP.
Сверили, что сертификат точно используется какой надо (по тумбпринту и серийному номеру)
Мы попробовали 2мя путями в лоб и оба не прошли
Первый был очевидный
1. положить нужную строку в файл, скажем src.txt
2. вызвать `csptest -keys -sign GOST12_256 -cont <MYCONTAINER> -keytype exchange -in src.txt -out src.sig; cat src.sig | base64`
Вроде это и есть RAW, требуемое по документации. Но это НЕ прокатило. Ругается сайт.
Тех поддержка говорит, что подписываемый контент мы формируем верно, серт что надо. Но вот подпись у них проверку ну не проходит.
Дальше уже пошли метания, биения в бубен которые ни к чему не привели.
Появилась мысль, что нужна CADES и что `csptest` его не использует. Техподдержка не может толком ответить нужен CADES или нет вижу только, что COM объект
в Windows решении используется со словом CADES в названии...
Стали делать cryptcp -sign -der -cadesbes ... но потом не понятно как извлечь RAW из полученного PKCS7, ну попробовали, так наудачку
закинуть EncryptedDigest который через openssl смогли там идентифицировать и дернуть - но это я так понял не RAW в общем он тоже не подошел.
В общем очень надеюсь, что кто-то знает что с этим делать. Прямо замучились....
P.S. мне еще пишет ТП "правильно ли вы хэшируете?", я считал, что csptest сам в процессе подписания хэширует сырой контент, может я ошибся и надо еще было отдельно хэшировать?
Отредактировано пользователем 23 июля 2025 г. 16:37:44(UTC)
| Причина: Не указана