【问题标题】:Java to HSM connection and sending "GC" / FK" commandsJava 到 HSM 连接并发送“GC”/FK”命令
【发布时间】:2014-07-21 23:11:04
【问题描述】:

这是从 HSM 发送和接收数据的代码

public class TestHSMJava {
public static void main(String args[]) {
    System.out.println("<<< Main Method Entry >>>");
    String command = null;
    Socket socket = null;
    DataOutputStream out = null;
    DataInputStream in = null;
    byte[] b= new byte[100];
    try {
        socket = new Socket("10.10.10.10", 7500);
        System.out.println("<<< Socket >>> :" + socket);
        if (socket != null) {
            System.out.println("<<< Connected to HSM  >>>:"
                    + socket.isConnected());
            in = new DataInputStream (new BufferedInputStream(socket.getInputStream()));
            out = new DataOutputStream (new BufferedOutputStream(socket.getOutputStream()));
            command = "0006303030304e43";
            out.writeUTF(command);
            System.out.println("Input to HSM : " +command);
            out.flush();
            String response = in.readUTF();
            System.out.println("Output from HSM : " +response);
            System.out.println("");
        }
    }
}

问题是我需要发送哪个命令来执行“GC”命令(将 ZPK 从 LMK 转换为 ZMK 加密)我需要为 TPK 密钥生成一个清晰的组件。通常我会这样做

gc
Enter key length [1,2,3]: 2
Enter key type: 002
Enter key scheme: u

然后

fk
Enter key length [1,2,3]: 2
Enter key type: 002
Enter key scheme: u
Enter component type [X,H,T,E,S]: x
Enter number of components [1-9]: 2

我需要使用 Java 程序来执行这些操作。

【问题讨论】:

    标签: java connection command hsm


    【解决方案1】:

    组件的生成和键的形成通常是控制台操作。生成并形成密钥后,结果将在 GC 翻译命令中使用

    如果您需要通过主机命令生成密钥,您可以使用 A0 命令并使用 GC 命令中的输出

    我可能可以通过官方渠道为您提供更多帮助。如果您有支持合同,请给服务台发电子邮件,并提及您已在 stackoverflow 上提交了一个问题,并且该电子邮件应该会发送给我


    如果您正在寻求有关上述 java 代码的帮助:

    您基本上只需要将“command”中的值替换为您要发送的命令

    你现在有

    command = "0006303030304e43";
    

    这转换为0000NC,第一个两个字节包含以字节为单位的长度 - 0006

    如果你想发送A00002U (0=generate; 002=tpk;u=key scheme) 你应该在前面加上一个标题,例如 0000 并在整个字符串前面加上长度

    然后发送的命令是0000A00002U,即 11 个字节

    所以发送到 hsm 的命令(以字节为单位)是

    command = "000b3030303041303030303255";
    

    【讨论】:

    • 我尝试向我的 HSM 发送相同的命令,但我得到的回复是 000b3030303041303030303135,转换为 ASCII 后是 0000A000015。这可能是什么问题?
    • printf '000b3030303041303030303255' | xxd -r -p | nc localhost 9998 /0000A100UD380C66E7D96F2B36592FA8EFFE9A5AFFD9184 与vmantek/thales-sim
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多