[ 
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]

Reply via email to