如何在JMRTD 0.6.0中获取stdDomainParam参数?在JMRTD的后续版本中,它是:
try {
CardAccessFile cardAccessFile = new CardAccessFile(service.getInputStream(PassportService.EF_CARD_ACCESS));
Collection<PACEInfo> paceInfos = cardAccessFile.getPACEInfos();
if (paceInfos != null && paceInfos.size() > 0) {
PACEInfo paceInfo = paceInfos.iterator().next();
service.doPACE(bacKey, paceInfo.getObjectIdentifier(), PACEInfo.toParameterSpec(paceInfo.getParameterId()));
paceSucceeded = true;
} else {
paceSucceeded = true;
}
} catch (Exception e) {
Log.w(TAG, e);
}
在最新版本的CardAccessFile中,仅返回SecurityInfo.getProtocolOIDString()和SecurityInfo.getObjectIdentifier()
CardAccessFile cardAccessFile = new CardAccessFile(passportService.getInputStream(PassportService.EF_CARD_ACCESS));
Collection<SecurityInfo> securityInfos = cardAccessFile.getSecurityInfos();
SecurityInfo securityInfo = securityInfos.iterator().next();
passportService.doPACE(bacKey, securityInfo.getObjectIdentifier(), PACEInfo.toParameterSpec(?????) );
答案 0 :(得分:1)
List<PACEInfo> paceInfos = new ArrayList<PACEInfo>();
if (securityInfos == null) {
return paceInfos;
}
for (SecurityInfo securityInfo: securityInfos) {
if (securityInfo instanceof PACEInfo) {
paceInfos.add((PACEInfo)securityInfo);
}
}
答案 1 :(得分:0)
测试&amp;工作......
CardAccessFile cardAccessFile = new
CardAccessFile(service.getInputStream(PassportService.EF_CARD_ACCESS));
Collection<SecurityInfo> securityInfos = cardAccessFile.getSecurityInfos();
SecurityInfo securityInfo = securityInfos.iterator().next();
List<PACEInfo> paceInfos = new ArrayList<>();
if (securityInfo instanceof PACEInfo) {
paceInfos.add((PACEInfo) securityInfo);
}