1

我正在编写一个程序(Java 应用程序)来阅读 ePassport。对于访问,我使用库 org.jmrtd。我应该在 CardService.getInstance() 中传输什么样的对象?

import net.sf.scuba.smartcards.CardService;
import net.sf.scuba.smartcards.CardServiceException;
import org.jmrtd.BACKeySpec;
import org.jmrtd.PassportService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestComponent {
    private static final Logger log = LoggerFactory.getLogger(MainApp.class);

    public static void main(String args[])  {

        try {
            CardService cs = CardService.getInstance(???????);
            PassportService ps = new PassportService(cs);
            ps.open();
            ps.sendSelectApplet(false);

            ps.sendSelectApplet(false);
            BACKeySpec bacKey = new BACKeySpec() {
                public String getDocumentNumber() {
                    return "xxxxxxxx";
                }
                public String getDateOfBirth() {
                    return "yyMMdd";
                }
                public String getDateOfExpiry() {
                    return "yyMMdd";
                }
            };
            ps.doBAC(bacKey);
            ps.close();

        } catch (CardServiceException e) {
            e.printStackTrace();
        }
    }
}
4

1 回答 1

1

找到答案:

  1. 加入pom

    net.sf.scuba 水肺-sc-j2se 0.0.13

  2. 导入 net.sf.scuba.smartcards.TerminalCardService;

  3. CardTerminal terminal =TerminalFactory.getDefault().terminals().list().get(0); CardService cs = CardService.getInstance(terminal); PassportService ps = new PassportService(cs); ps.open();

于 2017-10-10T10:02:42.080 回答