2013-07-22 3 views
0

Я только что подписал документ. и добавьте LTV тоже (с документами Secure Story и TSA); но adobe reader говорит мне, что LTV не включен.ocsps не показаны, но у меня есть в DSS

Я нашел проблему. Adobe Reader сообщает мне, что OCSP не встроен в документ.

После добавления штампа времени я просто создаю словарь DSS и добавляю сертификаты и ответы ocsp.

 PDDocumentCatalog catalog = template.getDocumentCatalog(); 
     COSDictionary catalogDictionary = catalog.getCOSDictionary(); 
     COSDictionary dssDictionary = new COSDictionary(); 

     COSArray cosOcsps = CertUtils.getOcspResponseCosArray(ocspResp); 
     COSArray cosCerts = CertUtils.getCertificateCosArray(certs); 

     dssDictionary.setItem(COSName.getPDFName("Certs"), cosCerts); 
     dssDictionary.setItem(COSName.getPDFName("OCSPs"), cosOcsps); 
     catalogDictionary.setItem(COSName.getPDFName("DSS"), dssDictionary); 

Не настолько ли, чтобы добавить OCSP?

enter image description here

я подписываю документ, как Падес-BES. ему нужен VRI? Я знаю, что идентификатор не нужен.

это Sample

PDF Document

+0

Я только что добавил CRL для DSS, и они показаны. но не ответы OCSP. (они не встроены) – grep

+0

Является ли это новой тенденцией? Добавление «iText» в качестве тега при задании вопросов о PDFBox? –

+0

Lowagie - прежде всего я уважаю ваши знания и вас тоже. нет его вопрос к разработчикам Itext тоже, потому что у них большие знания, и они уже создали все в цифровой подписи. Извините, если мой тег был неправильным. :-) – grep

ответ

1

Спецификация ETSI TS 102 778-4 (ака Падес часть 4) в приложении А.1 Document Security Магазин требует стоимость OCSPs запись в DSS словаря для be

Массив (косвенных ссылок) на потоки, каждый из которых содержит с ответом на протокол BER-кодированного сетевого сертификата (OCSP) (см. RFC 2560 [8]). Этот массив содержит OCSP, которые могут использоваться при проверке любых подписей в документе.

Вы, с другой стороны, используется только массив BasicOCSPResponse объектов, которые были содержали в оригинальных OCSPResponse объектов, которые вы получили.

OCSPResponse ::= SEQUENCE { 
    responseStatus OCSPResponseStatus, 
    responseBytes [0] EXPLICIT ResponseBytes OPTIONAL } 

ResponseBytes ::= SEQUENCE { 
    responseType OBJECT IDENTIFIER, 
    response  OCTET STRING } 

For a basic OCSP responder, responseType will be id-pkix-ocsp-basic. 

The value for response SHALL be the DER encoding of BasicOCSPResponse. 

BasicOCSPResponse ::= SEQUENCE { 
    tbsResponseData  ResponseData, 
    signatureAlgorithm AlgorithmIdentifier, 
    signature   BIT STRING, 
    certs    [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL } 

(из раздела 4.2.1 ASN.1 спецификации OCSP Отклик RFC 2560)

Вероятно, вы не были в курсе, что вы использовали этот внутренний объект, поскольку многие библиотеки безопасности после запроса ответа OCSP развернуть оригинал OCSPResponse, проверить содержащиеся в нем OCSPResponseStatus, и (если это указывает на успех), вернуть только содержащиеся в нем BasicOCSPResponse или (в противном случае) бросить какое-то исключение.

Если это так, то вы можете просто обернуть BasicOCSPResponse в OCSPResponse используя значение successful (0)OCSPResponseStatus, прежде чем положить его в документ.

Смежные вопросы