2014-06-30 45 views
-1

我試圖用比利時eId智能卡簽署pdf。我已經安裝了Eclipse,下載了Java SDK 1.6,將itext 5.4.5 jars smardcardsign-1.0 jar添加爲構建路徑的外部jar。使用javax.smartcardio的iText數字簽名

我想從Bruno的白皮書「數字簽名PDF文檔」中測試示例「4.6簽名驗證字符串」。

我從itext下載站點複製了C4_05_SignWithBEID.java文件。

我得到一個錯誤「AUTHN_CERT_FILE_ID無法解析或不是字段」 行X509Certificate cert = card.readCertificate(BeIDCertificates.AUTHN_CERT_FILE_ID);

當我檢查BeIdCertificates類的屬性時,「AUTHN_CERT_FILE_ID」不可用。

是否有人有完整的示例源代碼4.8使用EidSignature類簽署文檔?

回答

1

請不要從示例中複製/粘貼,我沒有閱讀隨書,在這種情況下免費電子書"Digital Signatures for PDF documents"

您提到的示例來自該書的第4.2.2節,標題爲「使用智能卡簽名從比利時eID中提取數據」。

請允許我引用自己(第105頁):

我們可以使用javax.smartcardio API來訪問任何智能卡,但遺憾的是 它通常不是那麼簡單。每張卡都有自己的 文件結構,自己的應用程序,自己的數據定義等等 。除ISO/IEC規範外,您始終需要您要使用的卡的 規格。我已經編寫了一個小型的 庫,將通用Java API類包裝在對象中,如 CardReaders,SmartCardSmartCardWithKey。我爲Belgian eID編寫了一個特殊的 類,名爲BeIDCard。你可以在SourceForge找到這個庫 。它的意思是作爲一個輕量級庫, 只支持基本功能。

您可以找到註腳的鏈接到該庫:http://sourceforge.net/projects/smartcardsign/

BeIDCertificates是該庫的一部分,它有一個名爲AUTHN_CERT_FILE_ID不變。