You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by Frank Cornelis <fr...@fedict.be> on 2011/12/09 17:09:16 UTC
PDF Signatures: ByteRange verification
Hi,
Participating the ETSI PAdES plugtests using PDFBox I'm now trying to
verify the correctness of the ByteRange of a PDF signature.
I already managed to get the offset of the signature dictionary via
COSDocument.getXrefTable(). But now I would need to be able to find the
exact location of the Contents direct dictionary entry to be able to
compare its location against the values given in the ByteRange.
Could someone point me in the right direction here?
Kind Regards,
Frank.
Re: [bulk] Re: PDF Signatures: ByteRange verification
Posted by Frank Cornelis <fr...@fedict.be>.
Hi Thomas,
Finally managed to verify the ByteRange. I should read the specs first.
:) Contents is a hexadecimal string, enclosed with angle brackets. So
for ByteRange verification formula I have:
offset1 == 0
offset2 == offset1 + length1 + signatureValue.length * 2 + 2
* 2 because of hexadecimal encoding
+ 2 because of the angle brackets.
Kind Regards,
Frank.
On 12/11/2011 01:25 AM, Thomas Chojecki wrote:
> Am 09.12.2011 17:09, schrieb Frank Cornelis:
>> Hi,
> Hi Frank,
>
>> Participating the ETSI PAdES plugtests using PDFBox I'm now trying to
>> verify the correctness of the ByteRange of a PDF signature.
>> I already managed to get the offset of the signature dictionary via
>> COSDocument.getXrefTable(). But now I would need to be able to find the
>> exact location of the Contents direct dictionary entry to be able to
>> compare its location against the values given in the ByteRange.
> Why do you need the exact position for checking the signature?
>
> If you want to compare the signature size against the byte range, you
> can grab the signature via the
> COSDictionary.getString(COSName.CONTENTS).length() and check it against
> the byte range or the lenght of the byte[] from getSignature()
>
> Or you can go your way and use a FilterInputStream and seek through the
> file till you get what you are searching (Signature Dictionary) and then
> read each byte till you find the CONTENTS.
>
> Maybe you find another way to check it, then let me know ;-)
>
>> Kind Regards,
>> Frank.
> Best Regards
> Thomas
Re: PDF Signatures: ByteRange verification
Posted by Thomas Chojecki <in...@rayman2200.de>.
Am 09.12.2011 17:09, schrieb Frank Cornelis:
> Hi,
Hi Frank,
> Participating the ETSI PAdES plugtests using PDFBox I'm now trying to
> verify the correctness of the ByteRange of a PDF signature.
> I already managed to get the offset of the signature dictionary via
> COSDocument.getXrefTable(). But now I would need to be able to find the
> exact location of the Contents direct dictionary entry to be able to
> compare its location against the values given in the ByteRange.
Why do you need the exact position for checking the signature?
If you want to compare the signature size against the byte range, you
can grab the signature via the
COSDictionary.getString(COSName.CONTENTS).length() and check it against
the byte range or the lenght of the byte[] from getSignature()
Or you can go your way and use a FilterInputStream and seek through the
file till you get what you are searching (Signature Dictionary) and then
read each byte till you find the CONTENTS.
Maybe you find another way to check it, then let me know ;-)
> Kind Regards,
> Frank.
Best Regards
Thomas