Рутокен ЭЦП 3.0 с pki-core (C++) и OpenSSL
Добрый день!
Есть задача:
На конечной машине (пользовательской) проверять подпись на файле с помощью импортированного самоподписанного сертификата. Важно что на конечной машине нужно пользоваться ТОЛЬКО pki-core. На моей машине (администраторской) можно пользоваться чем угодно. Обе машины на Astra Linux
Схема реализации:
1. На своей машине (администраторская) генерю ключевую пару:
openssl genpkey -out "keyfile.key" -algorithm gost2012_256 -pkeyopt paramset:A
2. Выпускаю самоподписанный сертификат (в формате DER, потому что pki-core дружит только с ним, поправьте если не прав)
openssl req -key "keyfile.key" -new -x509 -days 999 -subj '*SUBJ*' -outform DER -out "cert.der"
3. Конвертирую сертификат в PEM потому что для cms подписи OpenSSL нужен именно он (опять же поправьте если ошибаюсь)
openssl x509 -inform der -in cert.der -out cert.pem
4. Подписываю файл с помощью OpenSSL
openssl cms -sign -inkey "keyfile.key" -signer cert.pem -in message.txt -nosmimecap -nodetach -outform DER -out signed_message.txt -nocerts
5. Импортирую сертификат в формате DER в токен как доверенный
auto certData = readFile ("/path/to/cert.der");
device.importCert (rutoken::pkicore::ExternalCert (certData.data (), certData.size ()), true);
6. Пытаюсь верифицировать подпись на токене
auto signedData = rutoken::pkicore::cms::SignedData::parse (readFile ("/path/to/signed_message.txt"));
auto verifyParams = rutoken::pkicore::cms::VerifyParams (device);
auto result = signedData.verify (verifyParams);
При вызове метода verify выбрасывается исключение "Bad parameters"
Подскажите что я делаю не так и как с этим бороться