#pdf #timestamp #digital-signature #signature
Вопрос:
Я хочу отобразить атрибут метки времени в сертификате, как показано на рисунке
Что я должен указать в Подписи?
Это мой код для добавления информации о знаке:
private SignerInformation signTimeStamp(SignerInformation signer) throws IOException, TSPException {
AttributeTable unsignedAttributes = signer.getUnsignedAttributes();
ASN1EncodableVector vector = new ASN1EncodableVector();
if (unsignedAttributes != null) {
vector = unsignedAttributes.toASN1EncodableVector();
}
byte[] token = this.tsaClient.getTimeStampToken(signer.getSignature());
ASN1ObjectIdentifier oid = PKCSObjectIdentifiers.id_aa_signatureTimeStampToken;
ASN1Encodable signatureTimeStamp = new Attribute(oid, new DERSet(ASN1Primitive.fromByteArray(token)));
vector.add(signatureTimeStamp);
Attributes signedAttributes = new Attributes(vector);
// replace unsignedAttributes with the signed once
return SignerInformation.replaceUnsignedAttributes(signer, new AttributeTable(signedAttributes));
}
Комментарии:
1. Пожалуйста, поделитесь pdf-файлом, подписанным вашим кодом.
2. @mkl mkl. ДА. Пожалуйста, проверьте это для меня. Спасибо. drive.google.com/file/d/12LZFn-sveKrcVvagk7QbhKf7a4Lxo-7Q/…
3. @mkl, пожалуйста, проверьте, помогите мне. Огромное спасибо.
4. @KJ «Интересные старые отчеты Acrobat о недопустимом типе действия: URI …» — Ну, есть одна ссылка, указывающая на внешнее местоположение. Запретить это очень сомнительно. Вероятно, именно поэтому это больше не запрещено.
5. @mkl да. Я вижу это.
Ответ №1:
Чтобы подвести итог комментариям…
Изучив ваш пример документа, стало ясно, что метка времени, которую вы применили, в порядке. В частности, вы должны получить нижнее сообщение, которое вы отметили на снимке экрана диалогового окна просмотра сертификатов:
С другой стороны, ваш код не влияет на то, получите ли вы другую запись, которую вы отметили на этом снимке экрана:
Эта запись является расширением сертификата подписавшего X. 509, в котором эмитент этого сертификата предоставляет адрес службы отметок времени, которая может использоваться для подписей с отметками времени, созданных закрытым ключом, связанным с этим сертификатом.
Таким образом, эта запись не обязательно содержит сервер, используемый для создания фактической метки времени, это просто предложение или рекомендация.
Поэтому, если поле на снимке экрана, которое соединяется с двумя маркерами, указывает на некоторую необходимую связь между отмеченным URL-адресом TSA и ссылкой на безопасную отметку времени, это неправильно.