org.openuat.apps.j2me
Class ManualAuthentication

java.lang.Object
  extended by javax.microedition.midlet.MIDlet
      extended by org.openuat.apps.j2me.ManualAuthentication
All Implemented Interfaces:
javax.microedition.lcdui.CommandListener, AuthenticationProgressHandler, BluetoothPeerManager.PeerEventsListener

public class ManualAuthentication
extends javax.microedition.midlet.MIDlet
implements javax.microedition.lcdui.CommandListener, BluetoothPeerManager.PeerEventsListener, AuthenticationProgressHandler

This MIDlet demonstrates all three possible options for out-of-band peer verification when using the UACAP protocol and "manual" authentication.

Version:
1.0
Author:
Rene Mayrhofer

Field Summary
static javax.bluetooth.UUID SERVICE_UUID
          Manual authentication service identifier.
 
Fields inherited from interface org.openuat.util.BluetoothPeerManager.PeerEventsListener
DEVICE_NOT_REACHABLE, SEARCH_ABORTED, SEARCH_COMPLETE, SEARCH_FAILED
 
Constructor Summary
ManualAuthentication()
           
 
Method Summary
 void AuthenticationFailure(java.lang.Object sender, java.lang.Object remote, java.lang.Exception e, java.lang.String msg)
          Upon authentication failure, an exception might have been thrown and a message might have been created.
 void AuthenticationProgress(java.lang.Object sender, java.lang.Object remote, int cur, int max, java.lang.String msg)
          This event is raised during the authentication protocol to indicate progress.
 boolean AuthenticationStarted(java.lang.Object sender, java.lang.Object remote)
          This event is raised when the authentication protocol is started, to indicate that further events might follow.
 void AuthenticationSuccess(java.lang.Object sender, java.lang.Object remote, java.lang.Object result)
          Upon successful authentication, the established shared key can be used with the remote host.
 void commandAction(javax.microedition.lcdui.Command com, javax.microedition.lcdui.Displayable dis)
           
 void destroyApp(boolean unconditional)
           
 void do_alert(java.lang.String msg, int time_out)
           
 void inquiryCompleted(java.util.Vector newDevices)
          This method is called when the inquiry has been completed (either started as a one-shot process or periodically by the background inquiry.
 void pauseApp()
           
 void serviceSearchCompleted(javax.bluetooth.RemoteDevice remoteDevice, java.util.Vector services, int errorReason)
          This method is called when the search for the services of a specific remote device has completed.
 void startApp()
           
 
Methods inherited from class javax.microedition.midlet.MIDlet
checkPermission, getAppProperty, notifyDestroyed, notifyPaused, platformRequest, resumeRequest
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SERVICE_UUID

public static final javax.bluetooth.UUID SERVICE_UUID
Manual authentication service identifier.

Constructor Detail

ManualAuthentication

public ManualAuthentication()
Method Detail

startApp

public void startApp()
Specified by:
startApp in class javax.microedition.midlet.MIDlet

commandAction

public void commandAction(javax.microedition.lcdui.Command com,
                          javax.microedition.lcdui.Displayable dis)
Specified by:
commandAction in interface javax.microedition.lcdui.CommandListener

do_alert

public void do_alert(java.lang.String msg,
                     int time_out)

pauseApp

public void pauseApp()
Specified by:
pauseApp in class javax.microedition.midlet.MIDlet

destroyApp

public void destroyApp(boolean unconditional)
Specified by:
destroyApp in class javax.microedition.midlet.MIDlet

inquiryCompleted

public void inquiryCompleted(java.util.Vector newDevices)
Description copied from interface: BluetoothPeerManager.PeerEventsListener
This method is called when the inquiry has been completed (either started as a one-shot process or periodically by the background inquiry. Implementations may then e.g. use

Specified by:
inquiryCompleted in interface BluetoothPeerManager.PeerEventsListener
Parameters:
newDevices - This vector contains the list of new devices that have been discovered since the last inquiry completed. If no new devices have been found during this inquiry, the vector is empty. Elements of the vector are of type RemoteDevice.
See Also:
to get a list of devices discovered so far.

serviceSearchCompleted

public void serviceSearchCompleted(javax.bluetooth.RemoteDevice remoteDevice,
                                   java.util.Vector services,
                                   int errorReason)
Description copied from interface: BluetoothPeerManager.PeerEventsListener
This method is called when the search for the services of a specific remote device has completed.

Specified by:
serviceSearchCompleted in interface BluetoothPeerManager.PeerEventsListener
Parameters:
remoteDevice - The remote device for which new services have been searched for.
services - The list of services of the remote device. Elements of the vector are of type ServiceRecord. If no services were found, then this vector is empty and the parameter errorReason is set. However, note that this vector may also be empty when no error occurred but when the other device simply offers no services that were searched for.
errorReason - 0 indicates successful completion of service search (either returning a list of matching services or an empty list if there are none), 1 indicates the remote device was not reachable, 2 that the service search ended with an error from the Bluetooth stack, and 3 that the search was canceled prematurely by another thread.

AuthenticationFailure

public void AuthenticationFailure(java.lang.Object sender,
                                  java.lang.Object remote,
                                  java.lang.Exception e,
                                  java.lang.String msg)
Description copied from interface: AuthenticationProgressHandler
Upon authentication failure, an exception might have been thrown and a message might have been created.

Specified by:
AuthenticationFailure in interface AuthenticationProgressHandler
Parameters:
sender - The object which sent this event.
e - Reason for the failue, can be null.
msg - Reaseon for the failue, can be null

AuthenticationProgress

public void AuthenticationProgress(java.lang.Object sender,
                                   java.lang.Object remote,
                                   int cur,
                                   int max,
                                   java.lang.String msg)
Description copied from interface: AuthenticationProgressHandler
This event is raised during the authentication protocol to indicate progress.

Specified by:
AuthenticationProgress in interface AuthenticationProgressHandler
Parameters:
sender - The object which sent this event.
remote - The remote end with which the authentication is performed.
cur - The current stage in the authentication.
max - The maximum number of stages.
msg - If not null, a message describing the last successful stage.

AuthenticationStarted

public boolean AuthenticationStarted(java.lang.Object sender,
                                     java.lang.Object remote)
Description copied from interface: AuthenticationProgressHandler
This event is raised when the authentication protocol is started, to indicate that further events might follow.

Specified by:
AuthenticationStarted in interface AuthenticationProgressHandler
Parameters:
sender - The object which sent this event.
remote - The remote end with which the authentication is performed. Depends on the sender of the event.
Returns:
true if the handler accepts this authentication to be started, false to "veto" it. If any of the registered handlers (which are called in the order in which they were registered) returns false, the (incoming or outgoing) authentication is aborted.

AuthenticationSuccess

public void AuthenticationSuccess(java.lang.Object sender,
                                  java.lang.Object remote,
                                  java.lang.Object result)
Description copied from interface: AuthenticationProgressHandler
Upon successful authentication, the established shared key can be used with the remote host. The type of the remoteHost object depends on the sender of the event, e.g. an InetAddress object for HostProtocolHandler generated events, but an Integer for DongleProtocolHandler generated events (encapsulating the remote relate id).

Specified by:
AuthenticationSuccess in interface AuthenticationProgressHandler
Parameters:
sender - The object which sent this event.
remote - The remote end with which the authentication is performed. Depends on the sender of the event.
result - The result, if any, of the successful authentication. This can e.g. be a shared key or a set of keys or can even be null if the authentication event is enough to signal successful authentication.


2005-2009, Rene Mayrhofer.