簡體   English   中英

從智能卡讀取私鑰以對XML文檔進行數字簽名

[英]Read private key from smart card to digitally sign XML document

我正在開發一個應用程序,用戶可以使用智能卡對XML文檔進行數字簽名,該智能卡將持有其私鑰。

在測試期間,我能夠在給定兩個密鑰(公共密鑰和私有密鑰)的文件路徑的情況下生成xml簽名。

我的問題是如何從智能卡讀取私鑰。 我可以使用以下代碼從卡中獲得回復:

        TerminalFactory factory = TerminalFactory.getDefault();
        List<CardTerminal> terminals = factory.terminals().list();

        CardTerminal terminal = terminals.get(0);

        Card card = terminal.connect("*");
        System.out.println("Card: " + card);

        CardChannel channel = card.getBasicChannel();
        ResponseAPDU r = channel.transmit(new CommandAPDU(0x00, 0x84, 0x00, 0x00, 0x08));

        String hex = DatatypeConverter.printHexBinary(r.getBytes());
        System.out.println("Response: " + hex);

任何有關如何讀取/查看卡內容以查找私鑰的幫助將不勝感激。

謝謝!

無法從智能卡讀取私鑰。 使用諸如SunPKCS11或其他PKCS11翹曲器之類的PKCS11庫,您可以獲取私鑰的句柄,然后使用PKCS11從硬件設備(例如智能卡)進行簽名。 您將需要提供智能卡驅動程序的路徑,以配置Java安全提供程序JCA / JCE。

有關更多詳細信息,請參考:《 JDK 8 PKCS#11參考指南》。

或者,您可以使用任何易於使用的庫來實現此目的。 我公司提供的Signer Digital是服務器端的那些商業庫之一。 雖然使用智能卡或USB令牌簽名的瀏覽器擴展是免費的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM