2015-10-19 8 views
5

Con l'API WebCrypto in evoluzione e supportata da Chrome e Firefox, mi piacerebbe utilizzarlo per firmare digitalmente un documento PDF. Non c'è molta letteratura in giro, ma ho trovato alcuni esempi [1] e una libreria chiamata PKI.js [2]. Negli esempi viene descritta la procedura di firma, ma alla fine viene restituita una firma. Mi aspetterei che il mio file PDF Base64 tornasse di nuovo in una stringa Base64 firmata, ma purtroppo questo non è ciò che accade. Anche PKI.js, per quanto ne so, non fornisce un modo per firmare il mio Base64 PDF.Firmi il PDF con un semplice JavaScript

C'è un modo per firmare un PDF con JavaScript e solo l'API WebCrypto? La chiave privata può essere inserita in un <textarea> o, meglio ancora, memorizzata nelle impostazioni del certificato del browser.

Base64 PDF (da REST API) → segno con JS & certificato → Firmato Base64 PDF (invia ad REST) ​​

risposta

5

E ' è tecnicamente possibile farlo, infatti è uno degli scenari che avevamo in mente quando abbiamo creato PKIjs (che è il motivo per cui c'è questo esempio) - https://pkijs.org/examples/PDFexample.html

Detto ciò, la firma richiede l'utilizzo della struttura PDF stessa, che richiede un parser personalizzato o modifiche a uno esistente (ad esempio pdfjs).

Per farla breve, firmare un PDF nel browser richiederà molto lavoro, è qualcosa su cui stiamo lavorando.

+0

Voglio firmare testo in chiaro, quindi è possibile con questa libreria? Non ho trovato un esempio in grado di leggere un p12 cert + chiave privata e produrre una firma. – Michael

+1

È possibile firmare qualsiasi cosa con esso. Questo esempio firma file arbitrari - https://pkijs.org/examples/CMSSigned_complex_example.html questo esempio mostra l'importazione di PKCS # 12s - https://pkijs.org/examples/PKCS12SimpleExample.html vedi http://unmitigatedrisk.com/? p = 543 per alcune limitazioni e note di implementazione. – rmhrisk

2

C'è PDFSign.js, una libreria che può firmare un file PDF nel browser. Utilizza forge per la firma. Se PKI.js supporta le firme pkcs7 separate, dovrebbe essere facile sostituire forge.

Problemi correlati