добавить детали отзыва в pdf при подписании - PullRequest
0 голосов
/ 05 июня 2019

Я подписал PDF-файл цифровой подписью, используя цифровой токен, прикрепленный к компьютеру, используя библиотеку itext sharp, чтобы добавить то же самое.Отзыв сертификата эмитента не проверяется с ошибкой: при декодировании BER произошла ошибка.

путь к моей простой подписанной pdf: https://www.sendspace.com/file/vqgl53

В качестве решения я подумал, могу ли я сам добавить информацию CRL вдокумент (мой простой подписанный PDF), то я не буду сталкиваться с этой проблемой.Поэтому я добавил код, упомянутый в этом ответе: Я хочу подписать документ PDF с помощью ITextSharp и вернуть файл с поддержкой ltv pdf

, но я получаю исключение в строке: addLtvForChain (null, ocspClient,crlClient, getCrlHashKey (crlBytes));

IN SUBMETHOD getCrlHashKey НА ПЕРВОЙ ЛИНИИ: X509Crl crl = new X509Crl (CertificateList.GetInstance (crlBytes));

в исключительном случае указывается:.BouncyCastle.Asn1.DerApplicationSpecific Имя параметра: obj

Просьба предложить далее.

1 Ответ

0 голосов
/ 05 июня 2019

Расширение AdobeLtvEnabling

Причиной исключения является то, что для одного сертификата связанный CRL закодирован в base64, чего не ожидает класс AdobeLtvEnabling (здесь ожидается получение двоичной версии, неттребуется декодирование).

Вы можете расширить AdobeLtvEnabling следующим образом, чтобы иметь возможность обрабатывать CRL, закодированные в base64: найдите метод AdobeLtvEnabling addLtvForChain и замените цикл обработки CRL

Console.WriteLine("  with {0} CRLs\n", crl.Count);
foreach (byte[] crlBytes in crl)
{
    validationData.crls.Add(crlBytes);
    addLtvForChain(null, ocspClient, crlClient, getCrlHashKey(crlBytes));
}

с этим:

Console.WriteLine("  with {0} CRLs\n", crl.Count);
foreach (byte[] crlBytes in crl)
{
    PdfName hashKey = null;
    byte[] bytes = null;
    try
    {
        hashKey = getCrlHashKey(crlBytes);
        bytes = crlBytes;
    }
    catch (Exception e)
    {
        Console.WriteLine("  CRL decoding exception, assuming Base64 encoding, trying to decode - {0}\n", e.Message);
        bytes = Convert.FromBase64String(new String(Encoding.Default.GetChars(crlBytes)));
        hashKey = getCrlHashKey(bytes);
    }
    validationData.crls.Add(bytes);
    addLtvForChain(null, ocspClient, crlClient, hashKey);
}

Ваша подпись, хотя

Хотя отзыв других рассматриваемых некорневых сертификатов теперь относится к встроенным CRL, для одного сертификата все еще существует проблемана вкладке отзыва «Суб-CA SafeScrypt для RCAI Class 2 2014 (SAFESCRYPTONLINE_15)» в Adobe Reader отображается

CRL processing error
Issuer: cn=SafeScrypt CA 2014, houseIdentifier=II Floor, Tidel Park, street=No.4, Rajiv Gandhi Salai, Taramani, Chennai, st=Tamil Nadu, postalCode=600 113, ou=Certifying Authority, o=Sify Technologies Limited, c=IN
This update: 20180303183000Z
Next update: 20190303182959Z
CRL has expired or is not yet valid

Действительно, CRL со следующим значением обновления 20190303182959Z истек и, следовательно, не можетиспользоваться сейчас для проверки без соответствующих POE.Таким образом, Adobe Reader не совсем прав, утверждая, что на основе этого CRL (в настоящее время обслуживается PKI) он не может определить отсутствие отзыва.

Но может ли это быть из другой информации?Что ж, в сертификате есть атрибут AIA для ответчика OCSP, который можно использовать в качестве альтернативы.Но попытка его использования не удалась, http://ocsp.safescrypt.com в настоящее время не принимает запросы.Так что это не реальная альтернатива.

В целом, качество обслуживания этого ЦС представляется сомнительным.Если это состояние продолжается, вы можете переключиться на другой ЦС.

...