hy APIs. Bouncy Castle is an open-source Java API for encrypting and decrypting data. There is a lightweight package that is suitable for MIDP applications where only a fraction of the API will be used at any one time. 11.4.4.2 Obfuscation Process One problem inherent in most mobile devices is the limited amount of memory. As with most libraries you use, only a small portion of the code is typically needed by your application. One common way to eliminate an unused code, and at the same time make it more challenging to reverse engineer an application, is to use a Java obfuscator. Reverse engineering of Java programs is not too difficult. As a matter of Service Delivery Platforms fact, there are free decompilers that will do the work for you. To make it a little more challenging to reverse engineering applications, many Java developers use an obfus- cator to rename classes, methods, and fields. The intention of this renaming process is to make the source more unreadable. A side effect of the obfuscation process is the reduction of class file size. This is accomplished in two steps. First, a lot of bytes can be saved by replacing names of classes, methods, and field names that are one or two characters in length. In addition, obfuscators will remove unused classes, methods, and fields. The combination of these two steps can significantly reduce the size of the final application. We used an open-source obfuscator named ProGuard. 11.4.4.3 Security and Trust Services API Security and Trust Services API (SATSA) is a new API that provides additional security capabilities to the J2ME CLDC platform. It specifies a collection of APIs that provide security and trust services for J2ME CLDC by integrating a Security Element (SE) [9]. The SE is a hardware or software component in a J2ME device. It provides the following features: Secure storage to protect sensitive data Cryptographic operations With these features, J2ME applications would be able to have secure key stores as well as encryption and decryption capabilities. These