[
https://issues.apache.org/jira/browse/PDFBOX-4609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16912318#comment-16912318
]
Tilman Hausherr edited comment on PDFBOX-4609 at 8/21/19 5:27 PM:
------------------------------------------------------------------
i tried with the below code but getting the message digest attribute mismatch
value error at the if
(signerInformation.verify(signerCertificate.getPublicKey(), "BC")) line .Let me
know where i am doing wrong.
{code}
string pdf = signedpdfpath
PDDocument document = PDDocument.load(pdf);
Provider provider = new BouncyCastleProvider();
Security.addProvider(provider);
List arrList = new java.util.ArrayList();
arrList.addAll(document.getSignatureDictionaries());
for (int i = 0; i <= arrList.size(); i++)
{
org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature
signatureDictionary =
(org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature)arrList.get(i);
byte[] signatureContent = signatureDictionary.getContents(new
FileInputStream(pdf));
byte[] signedContent = signatureDictionary.getSignedContent(new
FileInputStream(pdf));
CMSProcessable cmsProcessableInputStream = new
CMSProcessableByteArray(signedContent);
CMSSignedData cmsSignedData = new CMSSignedData(cmsProcessableInputStream,
signatureContent);
SignerInformationStore signerInformationStore = cmsSignedData.getSignerInfos();
Collection signers = signerInformationStore.getSigners();
CertStore certs = cmsSignedData.getCertificatesAndCRLs("Collection",
(string)null);
Iterator signersIterator = signers.iterator();
while (signersIterator.hasNext())
{
SignerInformation signerInformation =
(SignerInformation)signersIterator.next();
Collection certificates = certs.getCertificates(signerInformation.getSID());
Iterator certIt = certificates.iterator();
java.security.cert.X509Certificate signerCertificate =
(java.security.cert.X509Certificate)certIt.next();
if (signerInformation.verify(signerCertificate.getPublicKey(), "BC"))
{code}
was (Author: bal@123):
i tried with the below code but getting the message digest attribute mismatch
value error at the if
(signerInformation.verify(signerCertificate.getPublicKey(), "BC")) line .Let me
know where i am doing wrong.
string pdf = signedpdfpath
PDDocument document = PDDocument.load(pdf);
Provider provider = new BouncyCastleProvider();
Security.addProvider(provider);
List arrList = new java.util.ArrayList();
arrList.addAll(document.getSignatureDictionaries());
for (int i = 0; i <= arrList.size(); i++)
{
org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature
signatureDictionary =
(org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature)arrList.get(i);
byte[] signatureContent = signatureDictionary.getContents(new
FileInputStream(pdf));
byte[] signedContent = signatureDictionary.getSignedContent(new
FileInputStream(pdf));
CMSProcessable cmsProcessableInputStream = new
CMSProcessableByteArray(signedContent);
CMSSignedData cmsSignedData = new CMSSignedData(cmsProcessableInputStream,
signatureContent);
SignerInformationStore signerInformationStore = cmsSignedData.getSignerInfos();
Collection signers = signerInformationStore.getSigners();
CertStore certs = cmsSignedData.getCertificatesAndCRLs("Collection",
(string)null);
Iterator signersIterator = signers.iterator();
while (signersIterator.hasNext())
{
SignerInformation signerInformation =
(SignerInformation)signersIterator.next();
Collection certificates = certs.getCertificates(signerInformation.getSID());
Iterator certIt = certificates.iterator();
java.security.cert.X509Certificate signerCertificate =
(java.security.cert.X509Certificate)certIt.next();
if (signerInformation.verify(signerCertificate.getPublicKey(), "BC"))
> At least one signature is invalid
> ----------------------------------
>
> Key: PDFBOX-4609
> URL: https://issues.apache.org/jira/browse/PDFBOX-4609
> Project: PDFBox
> Issue Type: Wish
> Components: .NET
> Affects Versions: 1.8.15
> Reporter: bal
> Priority: Major
> Attachments: Debug.txt, keystore.p12
>
>
> I am getting signature is invalid error in the signature panel of pdf after
> pkcs 7 signature insertion. I can see the name of the signer with the signed
> by in signature panel. I am not able to find out disallowed changes pdfbox
> does resulting into invalid pdf by acrobat reader. Is it possible to
> validate the pdf with pdfbox? Thanks in advance.
--
This message was sent by Atlassian Jira
(v8.3.2#803003)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]