2015-10-19 45 views
5

隨着WebCrypto API不斷髮展並受到Chrome和Firefox的支持,我希望將其用於數字簽名PDF文檔。沒有太多的文獻,但我找到了一些例子[1]和一個名爲PKI.js [2]的庫。在這些示例中,描述了簽名過程,但最終返回簽名。我期望我的Base64 PDF文件再次以有符號的Base64字符串返回,但不幸的是,這不會發生。據我所知,PKI.js也沒有提供簽名我的Base64 PDF的方法。使用純JavaScript代碼簽名PDF

有沒有辦法用JavaScript和WebCrypto API簽署PDF?私鑰可以輸入<textarea>,或者甚至更好地存儲在瀏覽器的證書設置中。

Base64的PDF(從REST API)→註冊與簽名的Base64 PDF JS &證書→(發送到REST)

回答

5

它在技​​術上是可行的,實際上它是我們製作PKIjs時想到的一種場景(這就是爲什麼有這個樣本) - https://pkijs.org/examples/PDFexample.html

這就是說要做簽名需要使用PDF結構本身,要麼需要定製解析器,要麼修改現有的解析器(例如pdfjs)。

長話短說,在瀏覽器中籤署PDF需要花費大量的工作,但我們正在努力。

+0

我想簽署純文本,所以這可能與此庫?我沒有找到可以讀取p12證書+私鑰並生成簽名的示例。 – Michael

+1

你可以用它來簽署任何東西。此示例對任意文件進行簽名 - https://pkijs.org/examples/CMSSigned_complex_example.html此示例顯示導入PKCS#12 - https://pkijs.org/examples/PKCS12SimpleExample.html請參閱http://unmitigatedrisk.com/?對於一些限制和實施說明,p = 543。 – rmhrisk

2

PDFSign.js,一個可以在瀏覽器中籤名PDF文件的庫。它使用forge雖然簽名。如果PKI.js支持分離的pkcs7簽名,那麼它應該很容易替換僞造。