2012-10-17 4 views
5

Come posso firmare un file pdf utilizzando la firma digitale in perl? Sono in grado di estrarre il contenuto dei PDF e di generare stringa firma tramiteAggiungi firma in PDF in perl

# $ content -> contenuto PDF da firmare

mio $ private_key Crypt :: :: OpenSSL RSA> new_private_key ($ key_string);
$ private_key-> use_md5_hash();
my $ signature = $ private_key-> sign ($ content);

Di conseguenza, la firma $ può essere convertita in formato esadecimale, ma non so come aggiungerla al file PDF. So che la firma in forma esadecimale deve essere inserita nel campo/Contenuto e l'intervallo di testo firmato è dato dall'array/ByteRange.

Esiste un modulo per questo scopo? Oppure puoi darmi qualche consiglio su come farlo? Grazie

risposta

0
use Crypt::OpenSSL::RSA; 
use File::Slurp; 

my $keystring = read_file('private_key.pem'); 
my $private_key = Crypt::OpenSSL::RSA->new_private_key($keystring); 
$private_key->use_md5_hash(); 
my $signature = $private_key->sign($plaintext); 
+1

Grazie. Questo è il principio della creazione della firma. Ma il formato PDF è unico in quanto include il supporto per le firme da incorporare nel documento stesso. Quindi, la domanda non è "come creare la firma?", Ma "come incorporare la firma in PDF?". Se non c'è un modulo Perl che lo abiliti (qualcosa come iText per Java), gradirei alcuni collegamenti alla descrizione e alla spiegazione di questo processo. In Java, questo può essere fatto tramite la libreria iText. Ma ho bisogno di farlo in perl. Quindi se non c'è – user1753233

1

si può trovare questo script interessante ... http://mschuette.name/files/pdfsign.pl utilizza PDF :: API2 e Cripta :: OpenSSL todo la sua magia ... potrebbe probabilmente servire come base per la creazione di qualcosa di tuo.