The Security and Trust Services API for J2ME (SATSA) (JSR 177) is an optional package within Java ME that enables enhanced cryptographic and smart-card-based security for mobile applications. It includes APDU communication, Java Card RMI, general cryptography, and PKI features.[1][2]
SATSA adds the following capabilities to Java ME:
SATSA is divided into four main components:
APDUConnection conn = (APDUConnection) Connector.open("apdu:0");
byte[] response = conn.exchangeAPDU(command);
Used in smart card access systems for PIN verification and applet interaction.[6][10]
JavaCardRMIConnection jc = (JavaCardRMIConnection)
Connector.open("jcrmi:0;AID=a0...c.8.1");
MyApplet stub = (MyApplet) jc.getRemoteObject();
Provides a high-level interface to smart card functionality.[5][7]
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, key, ivSpec);
c.doFinal(data, 0, data.length, out, 0);
Commonly used to secure local data or perform session encryption.[9][6]
SATSA is supported on selected devices from major manufacturers including Motorola, Nokia (from Series 40), Samsung, and Sony Ericsson (JP-8+).[11][12]
The Java ME SDK and Sun Java Wireless Toolkit include full SATSA emulation, including APDU/JCRMI over TCP/IP ports 9025 and 9026.[3][6]