Secondo i tuoi commenti ad altre risposte, in realtà vuoi
sign a pdf file with [your] certificate, then have this signature saved and appended to the pdf [you]'ve just signed.
(A proposito, si firma con la chiave privata associata alla chiave pubblica nel certificato, non con il certificato stesso, ma questo è un dettaglio.)
Presumo che tu voglia "aggiungere" la firma al PDF in modo che un visualizzatore PDF conforme allo standard (ad es. Adobe Reader) riconosca, visualizzi e convalidi come firma PDF integrata.
In questo caso hai già iniziato a sbagliare firmando il PDF originale così com'è e aspettandoti di dover semplicemente aggiungere in qualche modo quella firma al file. Devi invece creare una nuova revisione del documento PDF che include un campo firma PDF AcroForm il cui valore è un dizionario delle firme la cui voce / Contents contiene la firma dell'intera nuova revisione con l'eccezione del < strong> / Contenuto contenuto della voce.
SepiùfirmedevonoessereintegrateinunPDF,ciòavvienetramiteaggiornamentiincrementaliPDF(esplicitamentenonaggiungendopiùstruttureSignerInfoaununicocontenitoredifirmaCMSintegrato!):
Questo è spiegato in modo abbastanza grafico e in maggiore dettaglio nel documento Adobe Firme digitali in un PDF . Inoltre è specificato nella specifica PDF ISO 32000-1: 2008 reso disponibile qui da Adobe nella sezione 12.8 Firme digitali.
Attenzione, però! La specifica dice:
A byte range digest shall be computed over a range of bytes in the file, that shall be indicated by the ByteRange entry in the signature dictionary. This range should be the entire file, including the signature dictionary but excluding the signature value itself (the Contents entry). Other ranges may be used but since they do not check for all changes to the document, their use is not recommended.
Questo sembra consentire di creare prima una firma per il PDF originale e quindi aggiungere una nuova revisione contenente quella firma che indica che l'intervallo di byte firmati contiene solo la revisione originale, non la revisione estesa senza solo la firma.
In realtà, tuttavia, i visualizzatori di PDF (in particolare Adobe Reader) accettano solo firme che seguono la raccomandazione che l'intervallo firmato dovrebbe essere l'intero file, incluso il dizionario delle firme ma escludendo il valore della firma stesso.
Le nuove specifiche, ad es. la specifica ETSI PAdES ETSI TS 102 778 (cfr. sezione 5.1 articolo b nella parte 2 e sezione 4.2 elemento c nella parte 3 ) anche rendere questa raccomandazione ufficialmente un requisito, e così sarà ISO 32000-2.
A seconda del contesto di programmazione, ci sono molte librerie PDF che supportano la creazione di firme PDF integrate e anche molti prodotti che utilizzano queste librerie. Alcuni di essi sono disponibili anche per soggetti gratuiti, ad es. alla AGPL.