Java 从智能卡读取私钥以对XML文档进行数字签名

Java 从智能卡读取私钥以对XML文档进行数字签名,java,digital-signature,Java,Digital Signature,我正在开发一个应用程序,用户应该能够使用智能卡对XML文档进行数字签名,智能卡将保存他们的私钥 在测试期间,我能够根据两个密钥(公共密钥和私有密钥)的文件路径生成xml签名 我的问题是如何从智能卡读取私钥。 我可以使用以下代码从卡中获得响应: TerminalFactory factory = TerminalFactory.getDefault(); List<CardTerminal> terminals = factory.terminals()

我正在开发一个应用程序,用户应该能够使用智能卡对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);
TerminalFactory工厂=TerminalFactory.getDefault();
列表端子=工厂.terminals().List();
CardTerminal=terminals.get(0);
卡=终端。连接(“*”);
System.out.println(“卡:+卡”);
CardChannel=card.getBasicChannel();
ResponseADU r=信道传输(新命令APDU(0x00,0x84,0x00,0x00,0x08));
字符串hex=DatatypeConverter.printHexBinary(r.getBytes());
System.out.println(“响应:+hex”);
如果您有任何关于如何读取/查看卡内容以定位私钥的帮助,我们将不胜感激


谢谢

您无法从卡中获取密钥;这就是智能卡的全部意义。你不能从智能卡上取钥匙;这就是智能卡的全部意义所在。