При проверке подписи формата CAdES-C (CAdES-XL) в Java-приложении с использованием КриптоПро JCP 5.0 получаем ошибку, которую КриптоПро CSP и КриптоПро DSS не считают ошибкой.
Код проверки:
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true");
System.setProperty("ocsp.enable", "true");
// signatureBytes — байты CAdES-подписи (открепленная)
// contentBytes — байты подписанного документа
CAdESSignature signature = new CAdESSignature(signatureBytes, contentBytes, null);
signature.verify(null);
Текст ошибки:
Подпись не верна. Reference for the certificate: sn 3c464324000000000b51, subject CN="ООО \"Сервис\"", ... has been found in complete-certificate-references attribute but is absent in revocation-references attribute
Структура подписи (проверено через
https://lapo.it/asn1js/): - complete-certificate-references (OID 1.2.840.113549.1.9.16.2.21) - 3 записи: сертификат Минцифры России (дважды) и сертификат ООО "Сервис"
- complete-revocation-references (OID 1.2.840.113549.1.9.16.2.22) - 1 запись: только Минцифры России
Для сертификата ООО "Сервис" запись в complete-revocation-references отсутствует.
Результаты проверки той же подписи:
- КриптоПро CSP (Windows) - принимается
- КриптоПро DSS (dss.cryptopro.ru/Verify) - принимается
- КриптоПро JCP 5.0 - отклоняется с ошибкой выше
1. Является ли данное поведение JCP намеренным или это ошибка реализации?
2. Если намеренным - предусмотрена ли настройка (через Options или System.setProperty) для приведения поведения JCP в соответствие с CSP в данном случае? Если да - просим привести пример.
3. Планируется ли устранение несогласованности в следующих версиях JCP?