2

有人可以告诉我一种仅从 DoD CAC 卡中存储用户名的方法吗?我不需要进行任何身份验证,只需将卡中的名称存储为变量即可。我认为读卡的机器不会有任何网络连接。在这一点上,我与语言/操作系统无关。

谢谢你。

4

1 回答 1

2

所以我会回答 Windows 和 Java。

枚举终端,然后如果存在卡,(假设只有当前的 CAC 卡):

cc.transmit(new CommandAPDU(CMD_SELECT_APPLET_CAC_CACV2_PKI_IDENTITY_KEY));
cc.transmit(new CommandAPDU(CMD_SELECT_EF_CACV2_PKI_IDENTITY_KEY));
List<byte[]>[] res = TLVContainer.getTagAndValues(cc);
x509cert = X509CACHelper.fromBytes(res[0x71].get(0)[0],res[0x70].get(0));

您可以在 nist 6887 中查找选择小程序和选择 EF 命令,RID、AID、OID 可以在 cac.mil 的文档中找到。

于 2014-06-13T04:26:13.953 回答