Certificate 仅从国防部CAC卡获取名称/UID

Certificate 仅从国防部CAC卡获取名称/UID,certificate,x509certificate,smartcard,cac,Certificate,X509certificate,Smartcard,Cac,有人能告诉我一种存储国防部CAC卡用户名的方法吗?我不需要进行任何身份验证,只需将卡中的名称存储为变量即可。我认为读卡的机器不会有任何网络连接。在这一点上,我是语言/操作系统不可知论者 谢谢。所以我将回答Windows和Java的问题 枚举终端,然后如果有卡(假设只有当前CAC卡): cc.transmit(新命令apdu(CMD\u SELECT\u APPLET\u CAC\u CACV2\u PKI\u IDENTITY\u KEY)); 抄送(新命令apdu(CMD_SELECT_EF_

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


谢谢。

所以我将回答Windows和Java的问题

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

cc.transmit(新命令apdu(CMD\u SELECT\u APPLET\u CAC\u CACV2\u PKI\u IDENTITY\u KEY));
抄送(新命令apdu(CMD_SELECT_EF_CACV2_PKI_IDENTITY_KEY));
List[]res=TLVContainer.getTagAndValues(cc);
x509cert=X509CACHelper.fromBytes(res[0x71].get(0)[0],res[0x70].get(0));
您可以在nist 6887中查找select小程序和select EF命令,RID、AID、OID可以在cac.mil的文档中找到

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));