[英]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.