2015-10-19 17 views
5

Chrome ve Firefox tarafından geliştirilen ve desteklenen WebCrypto API ile, bir PDF belgesini dijital olarak imzalamak için kullanmak istiyorum. Etrafta çok fazla literatür yoktur, ancak bazı örnekler [1] ve PKI.js [2] adlı bir kütüphane buldum. Örneklerde imzalama süreci tanımlanmıştır, ancak sonunda bir imza iade edilir. Base64 PDF dosyamın imzalı bir Base64 dizesinde tekrar döndüğünü beklerdim, ama ne yazık ki, bu ne olmaz. PKI.js de benim bildiğim kadarıyla, Base64 PDF'imi imzalamanın bir yolunu sağlamaz.PDF'yi düz JavaScript ile imzalayın

PDF'yi yalnızca JavaScript ve WebCrypto API'si ile imzalamanın bir yolu var mı? Özel anahtar, <textarea> numaralı telefondan girilebilir veya daha da iyisi, tarayıcının sertifika ayarlarında saklanabilir.

(REST gönderme) (REST API itibaren) Base64 PDF Base64 PDF İmzalı JS & sertifikası → ile → İşaret

cevap

5

It Bunu yapmak teknik olarak mümkün, aslında biz PKIjs yaptığımızda aklımızdaki senaryolardan biri (bu yüzden bu örnek var) - https://pkijs.org/examples/PDFexample.html

İmzalama yapmak, PDF yapısının kendisi ile çalışmayı gerektirir. Bu, ya bir ayrıştırıcıyı ya da var olanı değiştirmeyi gerektirir (örneğin pdfjs).

Uzun lafın kısası, tarayıcıda bir PDF'yi imzalamak çok fazla iş alacaktır, bu bizim üzerinde çalıştığımız bir şeydir.

+0

Düz metin imzalamak istiyorum, bu kitaplık ile mümkün mü? P12 cert + özel anahtarını okuyabilecek ve imza üretebilecek bir örnek bulamadım. – Michael

+1

Bununla bir şey imzalayabilirsiniz. Bu örnek, keyfi dosyaları işaretler - https://pkijs.org/examples/CMSSigned_complex_example.html bu örnekte PKCS # 12s içe aktarılıyor - https://pkijs.org/examples/PKCS12SimpleExample.html http://unmitigatedrisk.com/ adresine bakın. Bazı sınırlamalar ve uygulama notları için p = 543. – rmhrisk

2

Tarayıcıda PDF dosyası imzalayabilen bir kütüphane olan PDFSign.js bulunmaktadır. İmza için olsa forge kullanır. PKI.js, ayrılmış pkcs7 imzalarını destekliyorsa, forge değiştirmenin kolay olması gerekir.