package.html revision 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<!--
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin This code is free software; you can redistribute it and/or modify it
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin under the terms of the GNU General Public License version 2 only, as
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin published by the Free Software Foundation. Sun designates this
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin particular file as subject to the "Classpath" exception as provided
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin by Sun in the LICENSE file that accompanied this code.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin This code is distributed in the hope that it will be useful, but WITHOUT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin version 2 for more details (a copy is included in the LICENSE file that
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin accompanied this code).
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin You should have received a copy of the GNU General Public License version
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin 2 along with this work; if not, write to the Free Software Foundation,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin CA 95054 USA or visit www.sun.com if you need additional information or
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin have any questions.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin-->
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<html>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<body>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<h2>Java&#x2122; Smart Card I/O API</h2>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThis specification describes the Java Smart Card I/O API defined by
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<a href="http://jcp.org/en/jsr/detail?id=268">JSR 268</a>.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinIt defines a Java API for communication with Smart Cards
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinusing ISO/IEC 7816-4 APDUs. It thereby allows Java applications to interact with
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinapplications running on the Smart Card, to store and retrieve data
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinon the card, etc.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<p>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinThe API is defined by classes in the package
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<code>javax.smartcardio</code>. They can be classified as follows:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<dl>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<dt>Classes describing the corresponding Smart Card structures
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<dd>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<a href="ATR.html">ATR</a>,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<a href="CommandAPDU.html">CommandAPDU</a>,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<a href="ResponseAPDU.html">ResponseAPDU</a>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<p>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<dt>Factory to obtain implementations
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<dd>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<a href="TerminalFactory.html">TerminalFactory</a>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<p>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<dt>Main classes for card and terminal functions
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<dd>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<a href="CardTerminals.html">CardTerminals</a>,
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin<a href="CardTerminal.html">CardTerminal</a>,
<a href="Card.html">Card</a>,
<a href="CardChannel.html">CardChannel</a>
<p>
<dt>Supporting permission and exception classes
<dd>
<a href="CardPermission.html">CardPermission</a>,
<a href="CardException.html">CardException</a>,
<a href="CardNotPresentException.html">CardNotPresentException</a>
<p>
<dt>Service provider interface, not accessed directly by applications
<dd>
<a href="TerminalFactorySpi.html">TerminalFactorySpi</a>
</dl>
<h3>API Example</h3>
A simple example of using the API is:
<pre>
// show the list of available terminals
TerminalFactory factory = TerminalFactory.getDefault();
List&lt;CardTerminal&gt; terminals = factory.terminals().list();
System.out.println("Terminals: " + terminals);
// get the first terminal
CardTerminal terminal = terminals.get(0);
// establish a connection with the card
Card card = terminal.connect("T=0");
System.out.println("card: " + card);
CardChannel channel = card.getBasicChannel();
ResponseAPDU r = channel.transmit(new CommandAPDU(c1));
System.out.println("response: " + toString(r.getBytes()));
// disconnect
card.disconnect(false);
</pre>
<P>
@since 1.6
@author Andreas Sterbenz
@author JSR 268 Expert Group
</body>
</html>