"Сырая" подпись на Java
Добрый день. Пытаюсь подписать производльную строку с помощью приватного ключа на Рутокен ЭЦП 2.0
Успешно проходит подписание в примере CmsSignVerifyDetachedGOSTR3410_2012_256.java из SDK, однако там формируется CMS-подпись, тогда как мне нужна "сырая" (интегрирую Рутокены в существующую систему, где сервер принимает строку определенного формата и её сырую подпись).
Попытался напрямую вызвать Pkcs11Signer.sign вместо CmsOperations.signDetached, однако получаю ошибку "C_Sign failed, error code: 0x21" - предполагаю, что это CKR_DATA_LEN_RANGE
В то же время подпись проходит успешно, если передать в C_Sign массив длиной ровно 32 байта (такой же как у хэша в CmsOperations)
// byte[] detachedCmsSignature = CmsOperations.signDetached(DATA_TO_SIGN, session.longValue(),
// signerPrivateKey.longValue(), SignAlgorithm.GOSTR3410_2012_256, signerCertificateHolder);
byte[] detachedCmsSignature = new Pkcs11Signer(SignAlgorithm.GOSTR3410_2012_256, session.longValue(), signerPrivateKey.longValue()).sign(DATA_TO_SIGN);
Также нашел тему "Подпись данные Rutoken Plugin без сертификата", где автору тоже требуется сырая подпись, и упоминается метод rawSign плагина.
Подскажите пожалуйста, есть ли способ на Java сформировать "сырую" подпись произвольной строки данных (а не её хэша)?