< prev index next >

test/sun/security/smartcardio/Utils.java

Print this page
rev 13550 : imported patch 8059212-Modify-smartcardio-manual-regression-tests-so-that-they-do-not-just-fail-if-no-cardreader-found

*** 1,7 **** /* ! * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 25,34 **** --- 25,35 ---- // common utility functions for the PC/SC tests import java.io.StringReader; import java.io.ByteArrayOutputStream; import java.io.IOException; + import java.security.NoSuchAlgorithmException; import java.util.Arrays; import java.util.List; import javax.smartcardio.CardTerminal; import javax.smartcardio.CardChannel; import javax.smartcardio.ResponseAPDU;
*** 41,70 **** if ((args.length > 0) && args[0].equalsIgnoreCase("MUSCLE")) { System.setProperty("sun.security.smartcardio.library", "/usr/local/$LIBISA/libpcsclite.so"); } } static CardTerminal getTerminal(String[] args) throws Exception { setLibrary(args); ! TerminalFactory factory = TerminalFactory.getInstance("PC/SC", null); System.out.println(factory); List<CardTerminal> terminals = factory.terminals().list(); System.out.println("Terminals: " + terminals); if (terminals.isEmpty()) { ! throw new Exception("No card terminals available"); } CardTerminal terminal = terminals.get(0); if (terminal.isCardPresent() == false) { System.out.println("*** Insert card"); if (terminal.waitForCardPresent(20 * 1000) == false) { throw new Exception("no card available"); } } return terminal; } static final byte[] C1 = parse("00 A4 04 00 07 A0 00 00 00 62 81 01 00"); static final byte[] R1a = parse("07 A0 00 00 00 62 81 01 04 01 00 00 24 05 00 0B 04 B0 25 90 00"); static final byte[] R1b = parse("07 A0 00 00 00 62 81 01 04 01 00 00 24 05 00 0B 04 B0 55 90 00"); --- 42,104 ---- if ((args.length > 0) && args[0].equalsIgnoreCase("MUSCLE")) { System.setProperty("sun.security.smartcardio.library", "/usr/local/$LIBISA/libpcsclite.so"); } } + static TerminalFactory getTerminalFactory(String provName) throws Exception { + try { + TerminalFactory factory = (provName == null) + ? TerminalFactory.getInstance("PC/SC", null) + : TerminalFactory.getInstance("PC/SC", null, provName); + System.out.println(factory); + return factory; + } catch (NoSuchAlgorithmException e) { + Throwable cause = e.getCause(); + if (cause != null && cause.getMessage().startsWith("PC/SC not available")) { + return null; + } + throw e; + } + } + static CardTerminal getTerminal(String[] args) throws Exception { + return getTerminal(args, null); + } + + static CardTerminal getTerminal(String[] args, String provider) throws Exception { setLibrary(args); ! try { ! TerminalFactory factory = (provider == null) ! ? TerminalFactory.getInstance("PC/SC", null) ! : TerminalFactory.getInstance("PC/SC", null, provider); System.out.println(factory); List<CardTerminal> terminals = factory.terminals().list(); System.out.println("Terminals: " + terminals); if (terminals.isEmpty()) { ! return null; } CardTerminal terminal = terminals.get(0); if (terminal.isCardPresent() == false) { System.out.println("*** Insert card"); if (terminal.waitForCardPresent(20 * 1000) == false) { throw new Exception("no card available"); } } + System.out.println("card present: " + terminal.isCardPresent()); + return terminal; + + } catch (NoSuchAlgorithmException e) { + Throwable cause = e.getCause(); + if (cause != null && cause.getMessage().startsWith("PC/SC not available")) { + return null; + } + throw e; + } } static final byte[] C1 = parse("00 A4 04 00 07 A0 00 00 00 62 81 01 00"); static final byte[] R1a = parse("07 A0 00 00 00 62 81 01 04 01 00 00 24 05 00 0B 04 B0 25 90 00"); static final byte[] R1b = parse("07 A0 00 00 00 62 81 01 04 01 00 00 24 05 00 0B 04 B0 55 90 00");
< prev index next >