我正在尝试为我正在编写的 Java 应用程序允许 DoD CAC 注册/身份验证。我正在使用javax.smartcario
包裹来读取卡片。我可以成功连接并读取 GUID。我要查找的信息是卡上的用户名 ( LAST.FIRST.M.123456789
)。我正在使用以下 AID,它使我可以访问 GUID 和证书:
byte[] aid = {(byte) 0xA0, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x10, 0x00};
存储用户名的卡上是否有不同的应用程序?用户名是否以某种方式嵌入在证书中?谢谢!
[编辑]
我正在尝试根据 APDU 命令响应生成证书,但引发了异常。
// X.509 Certificate for PIV auth command
byte[] apdu = {0x00, (byte)0xCB, 0x3F,
(byte)0xFF, 0x05, 0x5C, 0x03, 0x5F, (byte)0xC1, 0x05};
answer = channel.transmit(new CommandAPDU(apdu));
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(
new ByteArrayInputStream(answer.getBytes()));
引发以下异常:
java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Empty input
字节数组不为空。谢谢!