Статус: Новичок
Группы: Участники
Зарегистрирован: 21.12.2017(UTC) Сообщений: 8 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 3 раз
|
Доброго времени суток. Аналогичная проблема. Имеется отсоединенная подпись CADES-BES, алгоритм хэша документа 34.11-2012 (512), алгоритм подписи 34.10-2012 (512). Версия JCP 2.0.40035. Код:
//sig - набор байт из файла подписи
PKCS7 pkcs7 = new PKCS7(sig);
SignerInfo signerInfo = pkcs7.getSignerInfos()[0];
X509Certificate certificate = signerInfo.getCertificate(pkcs7);
PublicKey publicKey = certificate.getPublicKey();
//Получение хэша документа
byte[] messageDigest = (byte[]) signerInfo.getAuthenticatedAttributes().getAttribute("MessageDigest").getValue();
Signature signature = Signature.getInstance(JCP.RAW_GOST_SIGN_2012_512_NAME);
signature.initVerify(publicKey);
signature.update(messageDigest);
//Проверка подписи - результат false
System.out.println(signature.verify(signerInfo.getEncryptedDigest()));
SVS показывает, что подпись валидна. Не дает прикрепить файл, поэтому вот файл подписи в формате base64: Код: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
Отредактировано пользователем 26 декабря 2018 г. 10:14:37(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Есть подписи на данные (хеш данных), есть - на подписанные атрибуты (хеш подписанных атрибутов, в числе которых - хеш данных). Если это CADES-BES, то нужно проверять по хешу всех атрибутов, а не только хешу данных. См. примеры CAdES.jar в пакете CAdES в samples-sources.jar или CMSVerify в пакете CMS_samples того же архива. |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.12.2017(UTC) Сообщений: 8 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 3 раз
|
Все так и оказалось. Заменил Цитата:byte[] messageDigest = (byte[]) signerInfo.getAuthenticatedAttributes().getAttribute("MessageDigest").getValue(); на вызов метода Цитата:private static byte[] getSignData(byte[] sigBytes) throws Asn1Exception, IOException { Asn1BerDecodeBuffer buffer = new Asn1BerDecodeBuffer(sigBytes); ContentInfo contentInfo = new ContentInfo(); contentInfo.decode(buffer);
SignedData signedData = (SignedData) contentInfo.content; ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.SignerInfo signerInfo = signedData.signerInfos.elements[0]; Asn1BerEncodeBuffer sigBuffer = new Asn1BerEncodeBuffer(); signerInfo.signedAttrs.encode(sigBuffer); return sigBuffer.getMsgCopy(); } И соответственно поменял алгоритм с JCP.RAW_GOST_SIGN_2012_512_NAME на JCP.GOST_SIGN_2012_512_NAME. Подпись стала проходить проверку. Спасибо.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close