You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by Fabricio Pombo Koch <fa...@yahoo.com.br.INVALID> on 2016/10/26 19:53:32 UTC
External signature in 2 steps
Hi,
I'm trying to sign a PDF with an external service. This service receives the PDF's content (hash) and returns the signature (hash).
I followed the "CreateSignature" and "CreateVisibleSignature" examples and I was able to make it works.
But, I need to sign the PDF in 2 steps: 1- Get PDF's content, calculate the hash and send the hash to the service that is responsible to sign the hash.
2- Get the signature hash returned from the service and insert it into my PDF.
Note that in the 2nd step I'm not in the same context from 1st step, so, I can't access the PDF that was loaded in step 1. I would need to load it again.
Can you guys help me?
Thanks,Fabricio P Koch
Re: External signature in 2 steps
Posted by Tilman Hausherr <TH...@t-online.de>.
Am 26.10.2016 um 21:53 schrieb Fabricio Pombo Koch:
> Hi,
> I'm trying to sign a PDF with an external service. This service receives the PDF's content (hash) and returns the signature (hash).
> I followed the "CreateSignature" and "CreateVisibleSignature" examples and I was able to make it works.
> But, I need to sign the PDF in 2 steps: 1- Get PDF's content, calculate the hash and send the hash to the service that is responsible to sign the hash.
> 2- Get the signature hash returned from the service and insert it into my PDF.
>
> Note that in the 2nd step I'm not in the same context from 1st step, so, I can't access the PDF that was loaded in step 1. I would need to load it again.
You would have to use the new "external" strategy that exists since
2.0.3, but without writing the signature. Before closing, get the
ByteRange from the signature object.
HOWEVER... that one isn't available, because after being calculated the
ByteRange isn't assigned back to the PDFBox structure.
(Open a signed PDF with NOTEPAD++ and search for ByteRange to understand
what II mean)
So you'd have to reload the PDF; get the field (you know its name), and
then the signature, then the ByteRange ( signature.getByteRange() ).
Close again.
Then write the signature that you got at the appropriate place in the
file. This can be done without PDFBox.
I could do a change that you can access the byte range, i.e. don't have
to reload the PDF just to get the byte range. However this will have to
wait until mid next week, because I wouldn't have the time to become
active if it doens't work. (Although I just tested it).
Tilman
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org