You are previewing Java Card™ Technology for Smart Cards.
O'Reilly logo
Java Card™ Technology for Smart Cards

Book Description

Java Card™ technology provides a secure, vendor-independent, ubiquitous Java™ platform for smart cards and other memory constrained devices. It opens the smart card marketplace to third-party application development and enables programmers to develop smart card applications for a wide variety of vendors' products.

This book is the comprehensive guide to developing applications with Java Card technology. It introduces you to the Java Card platform and features detailed discussions of programming concepts. It also provides a step-by-step Java Card applet development guide to get you up and running.

  • Specific topics covered include:

  • Smart card basics

  • Java Card virtual machine

  • Persistent and transient objects

  • Atomicity and transactions

  • Handling APDUs

  • Applet firewall and object sharing

  • Java Card platform security

  • A step-by-step applet development guide

  • Applet optimization guidelines

  • A comprehensive reference to Java Card APIs

With Java Card technology, smart card programming will finally enter the mainstream of application development. This book provides the authoritative and practical information you need to enter this rapidly growing arena.



0201703297B04062001

Table of Contents

  1. Copyright
    1. Dedication
  2. Foreword
  3. Preface
    1. Audience for This Book
    2. Organization of This Book
      1. Part 1: Introduction
      2. Part 2: Java Card Technology
      3. Part 3: Programming Guide and Tips
      4. Part 4: Appendices
    3. The Version Covered in This Book
    4. Retrieving Additional Information On-line
    5. Acknowledgments
  4. 1. Introduction
    1. 1. From the Beginning
      1. 1.1. Smart Cards
        1. 1.1.1. Brief History
        2. 1.1.2. Benefits
        3. 1.1.3. Applications
      2. 1.2. Challenges in the Development of Smart Card Applications
      3. 1.3. Applying Java to Smart Cards
        1. 1.3.1. Benefits of Java Card Technology
        2. 1.3.2. Brief History of Java Card Technology
    2. 2. Smart Card Basics
      1. 2.1. Overview of Smart Cards
      2. 2.2. Basic Card Types
        1. 2.2.1. Memory Cards versus Microprocessor Cards
        2. 2.2.2. Contact Cards versus Contactless Cards
      3. 2.3. Smart Card Hardware
        1. 2.3.1. Smart Card Contact Points
        2. 2.3.2. Smart Card Central Processing Unit
        3. 2.3.3. Smart Card Coprocessors
        4. 2.3.4. Smart Card Memory System
      4. 2.4. Smart Card Communication
        1. 2.4.1. Card Acceptance Device and Host Applications
        2. 2.4.2. Smart Card Communication Model
        3. 2.4.3. APDU Protocol
        4. 2.4.4. TPDU Protocol
        5. 2.4.5. ATR
      5. 2.5. Smart Card Operating Systems
        1. 2.5.1. Smart Card File Systems
        2. 2.5.2. Master File
        3. 2.5.3. Dedicated File
        4. 2.5.4. Elementary File
      6. 2.6. Smart Card Systems
      7. 2.7. Smart Card Standards and Specifications
        1. 2.7.1. ISO 7816 Standards
        2. 2.7.2. GSM
        3. 2.7.3. EMV
        4. 2.7.4. Open Platform
        5. 2.7.5. OpenCard Framework
        6. 2.7.6. PC/SC
  5. 2. Java Card Technology
    1. 3. Java Card Technology Overview
      1. 3.1. Architecture Overview
      2. 3.2. Java Card Language Subset
      3. 3.3. Java Card Virtual Machine
        1. 3.3.1. CAP File and Export File
        2. 3.3.2. Java Card Converter
        3. 3.3.3. Java Card Interpreter
      4. 3.4. Java Card Installer and Off-Card Installation Program
      5. 3.5. Java Card Runtime Environment
        1. 3.5.1. JCRE Lifetime
        2. 3.5.2. How Does the JCRE Operate during a CAD Session?
        3. 3.5.3. Java Card Runtime Features
      6. 3.6. Java Card APIs
        1. 3.6.1. java.lang Package
        2. 3.6.2. javacard.framework Package
        3. 3.6.3. javacard.security Package
        4. 3.6.4. javacardx.crypto Package
      7. 3.7. Java Card Applets
      8. 3.8. Package and Applet Naming Convention
      9. 3.9. Applet Development Process
      10. 3.10. Applet Installation
        1. 3.10.1. ROM Applets
        2. 3.10.2. Preissuance or Postissuance Applets
        3. 3.10.3. Postissuance Applet Installation
        4. 3.10.4. Error Recovery during Applet Installation
        5. 3.10.5. Installation Constraints
    2. 4. Java Card Objects
      1. 4.1. Java Card Memory Model
      2. 4.2. Persistent Objects
      3. 4.3. Transient Objects
        1. 4.3.1. Properties of Transient Objects
        2. 4.3.2. Transient Object Types
        3. 4.3.3. Creating Transient Objects
        4. 4.3.4. Querying Transient Objects
      4. 4.4. A Few Words about Object Creation and Deletion
    3. 5. Atomicity and Transactions
      1. 5.1. Atomicity
      2. 5.2. Block Data Updates in an Array
      3. 5.3. Transactions
        1. 5.3.1. Commit Transaction
        2. 5.3.2. Abort Transaction
        3. 5.3.3. Nested Transaction
        4. 5.3.4. Commit Capacity
        5. 5.3.5. TransactionException
        6. 5.3.6. Local Variables and Transient Objects during a Transaction
    4. 6. Java Card Exceptions and Exception Handling
      1. 6.1. Exceptions in the java.lang Package
      2. 6.2. Java Card Exceptions
        1. 6.2.1. Java Card Exception Reason Code
        2. 6.2.2. Throwing an Exception in the Java Card Platform
        3. 6.2.3. ISOException
        4. 6.2.4. UserException
    5. 7. Java Card Applets
      1. 7.1. Applet Overview
        1. 7.1.1. Applet Installation and Execution
        2. 7.1.2. Applet Communication
      2. 7.2. Class javacard.framework.Applet
      3. 7.3. install Method
        1. 7.3.1. Creating Objects in the Applet's Constructor
        2. 7.3.2. Registering the Applet Instance with the JCRE
        3. 7.3.3. Processing the Installation Parameters
        4. 7.3.4. Further Applet Initialization
      4. 7.4. select Method
        1. 7.4.1. SELECT APDU Format and Processing
        2. 7.4.2. Default Applet
      5. 7.5. deselect Method
      6. 7.6. process Method
      7. 7.7. Other Methods in the Class javacard.framework.Applet
    6. 8. Working with APDUs
      1. 8.1. APDU Class
        1. 8.1.1. APDU Object
        2. 8.1.2. APDU Buffer Size
      2. 8.2. Interface ISO7816
      3. 8.3. Working with APDUs in Applets
        1. 8.3.1. Retrieve the APDU Buffer
        2. 8.3.2. Examine the Command APDU Header
        3. 8.3.3. Receive APDU Command Data
          1. 8.3.3.1. Receiving Long Command Data
        4. 8.3.4. Process the APDU Command and Generate the Response Data
        5. 8.3.5. Return APDU Response Data
          1. 8.3.5.1. Sending Data from Other Locations
          2. 8.3.5.2. Sending a Long Response
        6. 8.3.6. Return the Status Word
      4. 8.4. Protocol-Specific APDU Processing
        1. 8.4.1. Method getProtocol
        2. 8.4.2. Method getInBlockSize
        3. 8.4.3. Method getOutBlockSize
        4. 8.4.4. Method setOutgoingNoChaining
        5. 8.4.5. Method getNAD
        6. 8.4.6. Method waitExtension
      5. 8.5. Summary
    7. 9. Applet Firewall and Object Sharing
      1. 9.1. Applet Firewall
        1. 9.1.1. Contexts
        2. 9.1.2. Object Ownership
        3. 9.1.3. Object Access
          1. 9.1.4. Transient Array and Context
          2. 9.1.5. Static Fields and Methods
        4. 9.2. Object Sharing across Contexts
          1. 9.2.1. Context Switch
          2. 9.2.2. JCRE Privileges
          3. 9.2.3. JCRE Entry Point Objects
          4. 9.2.4. Global Arrays
          5. 9.2.5. Object Shareable Interface Mechanism
            1. 9.2.5.1. Shareable Interface
            2. 9.2.5.2. Shareable Interface Object
            3. 9.2.5.3. Thoughts behind the Shareable Interface Mechanism
            4. 9.2.5.4. An Example of Object Sharing between Applets
            5. 9.2.5.5. Create a Shareable Interface Object
            6. 9.2.5.6. Request a Shareable Interface Object
            7. 9.2.5.7. Use a Shareable Interface Object
            8. 9.2.5.8. Context Switches during Object Sharing
            9. 9.2.5.9. Parameter Types and Return Types in Shareable Interface Methods
            10. 9.2.5.10. Authenticate a Client Applet
            11. 9.2.5.11. getPreviousContextAID Method
            12. 9.2.5.12. Summary
    8. 10. Programming Cryptography
      1. 10.1. Quick Tour of Cryptography
        1. 10.1.1. Encryption and Decryption
        2. 10.1.2. Message Digest
        3. 10.1.3. Digital Signature
        4. 10.1.4. Random Data
      2. 10.2. Cryptographic Practice in Smart Card Applications
        1. 10.2.1. Ensuring Application Security
        2. 10.2.2. Functioning as a Secure Token
        3. 10.2.3. Summary
      3. 10.3. Java Card Cryptography APIs
        1. 10.3.1. Design Principles
        2. 10.3.2. Architecture
        3. 10.3.3. Package Structure
      4. 10.4. Code Examples
        1. 10.4.1. Compute a Message Digest
        2. 10.4.2. Build a Cryptographic Key
        3. 10.4.3. Sign and Verify a Signature
        4. 10.4.4. Encrypt and Decrypt Data
        5. 10.4.5. Generate Random Data
    9. 11. Java Card Platform Security
      1. 11.1. Java Card Platform Security Features
        1. 11.1.1. Java Language Security
        2. 11.1.2. Additional Security Features of the Java Card Platform
      2. 11.2. Java Card Platform Security Mechanisms
        1. 11.2.1. Compile-Time Checking
        2. 11.2.2. Class File Verification and Subset Checking
        3. 11.2.3. CAP File and Export File Verification
        4. 11.2.4. Installation Checking
        5. 11.2.5. Cryptographically Enforced Chain Trust
        6. 11.2.6. Runtime Security Enforcement
        7. 11.2.7. Java Card Cryptographic Support
      3. 11.3. Applet Security
  6. 3. Programming Guide and Tips
    1. 12. Step-by-Step Applet Development Guide
      1. 12.1. Design the Applet
        1. 12.1.1. Specify the Functions of the Applet
        2. 12.1.2. Specify AIDs for the Applet
        3. 12.1.3. Define the Class Structure and Method Functions of the Applet
        4. 12.1.4. Define the Interface between the Applet and Its Host Application
          1. 12.1.4.1. SELECT APDU
          2. 12.1.4.2. VERIFY APDU
          3. 12.1.4.3. CREDIT APDU
          4. 12.1.4.4. DEBIT APDU
          5. 12.1.4.5. GET BALANCE APDU
      2. 12.2. Construct the Applet Code
        1. 12.2.1. Wallet Applet Code
        2. 12.2.2. Implement Error Checking
      3. 12.3. What's the Next Step?
    2. 13. Applet Optimization
      1. 13.1. Optimizing an Applet's Overall Design
      2. 13.2. On-Card Execution Time
      3. 13.3. Method Invocations
      4. 13.4. Creating Objects in Applets
      5. 13.5. Reusing Objects
      6. 13.6. Eliminating Redundant Code
      7. 13.7. Accessing Arrays
      8. 13.8. The switch Statement versus the if-else Statement
      9. 13.9. Arithmetic Statements
      10. 13.10. Optimizing Variables in Applets
    3. 14. Working with int Data Type
      1. 14.1. 32-Bit Arithmetic Operations
      2. 14.2. Array Size and Array Index
      3. 14.3. Storing and Computing int Values
      4. 14.4. Summary
  7. 4. Appendices
    1. A. Java Card Language Subset
      1. A.1. Unsupported Items
        1. A.1.1. Unsupported Features
          1. Dynamic Class Loading
          2. Security Manager
          3. Garbage Collection & Finalization
          4. Threads
          5. Cloning
          6. Access Control in Java Packages
        2. A.1.2. Keywords
        3. A.1.3. Unsupported Types
        4. A.1.4. Classes
        5. A.1.5. System
      2. A.2. Supported Items
        1. A.2.1. Features
          1. Packages
          2. Dynamic Object Creation
          3. Virtual Methods
          4. Interfaces
          5. Exceptions
        2. A.2.2. Keywords
        3. A.2.3. Types
        4. A.2.4. Classes
          1. Object
          2. Throwable
      3. A.3. Optionally Supported Items
        1. A.3.1. int
      4. A.4. Limitations of the Java Card Virtual Machine
        1. A.4.1. Classes
          1. Classes in a Package
          2. Interfaces
          3. Static Fields
          4. Static Methods
        2. A.4.2. Objects
          1. Methods
          2. Class Instances
          3. Arrays
        3. A.4.3. Methods
        4. A.4.4. Switch Statements
        5. A.4.5. Class Initialization
    2. B. Java Card 2.1 Application Programming Interface
      1. package java.lang
        1. Description
      2. java.lang ArithmeticException
        1. Syntax
        2. Description
        3. Constructors
          1. ArithmeticException()
      3. java.lang ArrayIndexOutOfBoundsException
        1. Syntax
        2. Description
        3. Constructors
          1. ArrayIndexOutOfBoundsException()
      4. java.lang ArrayStoreException
        1. Syntax
        2. Description
        3. Constructors
          1. ArrayStoreException()
      5. java.lang ClassCastException
        1. Syntax
        2. Description
        3. Constructors
          1. ClassCastException()
      6. java.lang Exception
        1. Syntax
        2. Description
        3. Constructors
          1. Exception()
      7. java.lang IndexOutOfBoundsException
        1. Syntax
        2. Description
        3. Constructors
          1. IndexOutOfBoundsException()
      8. java.lang NegativeArraySizeException
        1. Syntax
        2. Description
        3. Constructors
          1. NegativeArraySizeException()
      9. java.lang NullPointerException
        1. Syntax
        2. Description
        3. Constructors
          1. NullPointerException()
      10. java.lang Object
        1. Syntax
        2. Description
        3. Constructors
          1. Object()
        4. Methods
          1. equals(Object)
      11. java.lang RuntimeException
        1. Syntax
        2. Description
        3. Constructors
          1. RuntimeException()
      12. java.lang SecurityException
        1. Syntax
        2. Description
        3. Constructors
          1. SecurityException()
      13. java.lang Throwable
        1. Syntax
        2. Description
        3. Constructors
          1. Throwable()
      14. package javacard.framework
        1. Description
      15. javacard.framework AID
        1. Syntax
        2. Description
        3. Constructors
          1. AID(byte[], short, byte)
        4. Methods
          1. equals(byte[], short, byte)
          2. equals(Object)
          3. getBytes(byte[], short)
        5. partialEquals(byte[], short, byte)
          1. RIDEquals(AID)
      16. javacard.framework APDU
        1. Syntax
        2. Description
        3. Fields
          1. PROTOCOL_T0
          2. PROTOCOL_T1
        4. Methods
          1. getBuffer()
          2. getInBlockSize()
          3. getNAD()
          4. getOutBlockSize()
          5. getProtocol()
          6. receiveBytes(short)
          7. sendBytes(short, short)
          8. sendBytesLong(byte[], short, short)
          9. setIncomingAndReceive()
          10. setOutgoing()
          11. setOutgoingAndSend(short, short)
          12. setOutgoingLength(short)
          13. setOutgoingNoChaining()
          14. waitExtension()
      17. javacard.framework APDUException
        1. Syntax
        2. Description
        3. Fields
          1. BAD_LENGTH
          2. BUFFER_BOUNDS
          3. ILLEGAL_USE
          4. IO_ERROR
          5. NO_T0_GETRESPONSE
          6. T1_IFD_ABORT
        4. Constructors
          1. APDUException(short)
        5. Methods
          1. getReason()
          2. setReason(short)
          3. throwIt(short)
      18. javacard.framework Applet
        1. Syntax
        2. Description
        3. Constructors
          1. Applet()
        4. Methods
          1. deselect()
          2. getShareableInterfaceObject(AID, byte)
          3. install(byte[], short, byte)
          4. process(APDU)
          5. register()
          6. register(byte[], short, byte)
          7. select()
          8. selectingApplet()
      19. javacard.framework CardException
        1. Syntax
        2. Description
        3. Constructors
          1. CardException(short)
        4. Methods
          1. getReason()
          2. setReason(short)
          3. throwIt(short)
      20. javacard.framework CardRuntimeException
        1. Syntax
        2. Description
        3. Constructors
          1. CardRuntimeException(short)
        4. Methods
          1. getReason()
          2. setReason(short)
          3. throwIt(short)
      21. javacard.framework ISO7816
        1. Syntax
        2. Description
        3. Fields
          1. CLA_ISO7816
          2. INS_EXTERNAL_AUTHENTICATE
          3. INS_SELECT
          4. OFFSET_CDATA
          5. OFFSET_CLA
          6. OFFSET_INS
          7. OFFSET_LC
          8. OFFSET_P1
          9. OFFSET_P2
          10. SW_APPLET_SELECT_FAILED
          11. SW_BYTES_REMAINING_00
          12. SW_CLA_NOT_SUPPORTED
          13. SW_COMMAND_NOT_ALLOWED
          14. SW_CONDITIONS_NOT_SATISFIED
          15. SW_CORRECT_LENGTH_00
          16. SW_DATA_INVALID
          17. SW_FILE_FULL
          18. SW_FILE_INVALID
          19. SW_FILE_NOT_FOUND
          20. SW_FUNC_NOT_SUPPORTED
          21. SW_INCORRECT_P1P2
          22. SW_INS_NOT_SUPPORTED
          23. SW_NO_ERROR
          24. SW_RECORD_NOT_FOUND
          25. SW_SECURITY_STATUS_NOT_SATISFIED
          26. SW_UNKNOWN
          27. SW_WRONG_DATA
          28. SW_WRONG_LENGTH
          29. SW_WRONG_P1P2
      22. javacard.framework ISOException
        1. Syntax
        2. Description
        3. Constructors
          1. ISOException(short)
        4. Methods
          1. getReason()
          2. setReason(short)
          3. throwIt(short)
      23. javacard.framework JCSystem
        1. Syntax
        2. Description
        3. Fields
          1. CLEAR_ON_DESELECT
          2. CLEAR_ON_RESET
          3. NOT_A_TRANSIENT_OBJECT
        4. Methods
          1. abortTransaction()
          2. beginTransaction()
          3. commitTransaction()
          4. getAID()
          5. getAppletShareableInterfaceObject(AID, byte)
          6. getMaxCommitCapacity()
          7. getPreviousContextAID()
          8. getTransactionDepth()
          9. getUnusedCommitCapacity()
          10. getVersion()
        5. isTransient(Object)
          1. lookupAID(byte[], short, byte)
          2. makeTransientBooleanArray(short, byte)
          3. makeTransientByteArray(short, byte)
          4. makeTransientObjectArray(short, byte)
          5. makeTransientShortArray(short, byte)
      24. javacard.framework OwnerPIN
        1. Syntax
        2. Description
        3. Constructors
          1. OwnerPIN(byte, byte)
        4. Methods
          1. check(byte[], short, byte)
          2. getTriesRemaining()
          3. getValidatedFlag()
          4. isValidated()
          5. reset()
          6. resetAndUnblock()
          7. setValidatedFlag(boolean)
          8. update(byte[], short, byte)
      25. javacard.framework PIN
        1. Syntax
        2. Description
        3. Methods
          1. check(byte[], short, byte)
          2. getTriesRemaining()
          3. isValidated()
          4. reset()
      26. javacard.framework PINException
        1. Syntax
        2. Description
        3. Fields
          1. ILLEGAL_VALUE
        4. Constructors
          1. PINException(short)
        5. Methods
          1. throwIt(short)
      27. javacard.framework Shareable
        1. Syntax
        2. Description
      28. javacard.framework SystemException
        1. Syntax
        2. Description
        3. Fields
          1. ILLEGAL_AID
          2. ILLEGAL_TRANSIENT
          3. ILLEGAL_VALUE
          4. NO_RESOURCE
          5. NO_TRANSIENT_SPACE
        4. Constructors
          1. SystemException(short)
        5. Methods
          1. throwIt(short)
      29. javacard.framework TransactionException
        1. Syntax
        2. Description
        3. Fields
          1. BUFFER_FULL
          2. IN_PROGRESS
          3. INTERNAL_FAILURE
          4. NOT_IN_PROGRESS
        4. Constructors
          1. TransactionException(short)
        5. Methods
          1. throwIt(short)
      30. javacard.framework UserException
        1. Syntax
        2. Description
        3. Constructors
          1. UserException()
          2. UserException(short)
        4. Methods
          1. throwIt(short)
      31. javacard.framework Util
        1. Syntax
        2. Description
        3. Methods
          1. arrayCompare(byte[], short, byte[], short, short)
          2. arrayCopy(byte[], short, byte[], short, short)
          3. arrayCopyNonAtomic(byte[], short, byte[], short, short)
          4. arrayFillNonAtomic(byte[], short, short, byte)
          5. getShort(byte[], short)
        4. makeShort(byte, byte)
          1. setShort(byte[], short, short)
      32. package javacard.security
        1. Description
      33. javacard.security CryptoException
        1. Syntax
        2. Description
        3. Fields
          1. ILLEGAL_USE
          2. ILLEGAL_VALUE
          3. INVALID_INIT
          4. NO_SUCH_ALGORITHM
          5. UNINITIALIZED_KEY
        4. Constructors
          1. CryptoException(short)
        5. Methods
          1. throwIt(short)
      34. javacard.security DESKey
        1. Syntax
        2. Description
        3. Methods
          1. getKey(byte[], short)
          2. setKey(byte[], short)
      35. javacard.security DSAKey
        1. Syntax
        2. Description
        3. Methods
          1. getG(byte[], short)
          2. getP(byte[], short)
          3. getQ(byte[], short)
          4. setG(byte[], short, short)
          5. setP(byte[], short, short)
          6. setQ(byte[], short, short)
      36. javacard.security DSAPrivateKey
        1. Syntax
        2. Description
        3. Methods
          1. getX(byte[], short)
          2. setX(byte[], short, short)
      37. javacard.security DSAPublicKey
        1. Syntax
        2. Description
        3. Methods
          1. getY(byte[], short)
          2. setY(byte[], short, short)
      38. javacard.security Key
        1. Syntax
        2. Description
        3. Methods
          1. clearKey()
          2. getSize()
          3. getType()
          4. isInitialized()
      39. javacard.security KeyBuilder
        1. Syntax
        2. Description
        3. Fields
          1. LENGTH_DES
          2. LENGTH_DES3_2KEY
          3. LENGTH_DES3_3KEY
          4. LENGTH_DSA_1024
          5. LENGTH_DSA_512
          6. LENGTH_DSA_768
          7. LENGTH_RSA_1024
          8. LENGTH_RSA_2048
          9. LENGTH_RSA_512
          10. LENGTH_RSA_768
          11. TYPE_DES
          12. TYPE_DES_TRANSIENT_DESELECT
          13. TYPE_DES_TRANSIENT_RESET
          14. TYPE_DSA_PRIVATE
          15. TYPE_DSA_PUBLIC
          16. TYPE_RSA_CRT_PRIVATE
          17. TYPE_RSA_PRIVATE
          18. TYPE_RSA_PUBLIC
        4. Methods
          1. buildKey(byte, short, boolean)
      40. javacard.security MessageDigest
        1. Syntax
        2. Description
        3. Fields
          1. ALG_MD5
          2. ALG_RIPEMD160
          3. ALG_SHA
        4. Constructors
          1. MessageDigest()
        5. Methods
          1. doFinal(byte[], short, short, byte[], short)
          2. getAlgorithm()
          3. getInstance(byte, boolean)
          4. getLength()
          5. reset()
          6. update(byte[], short, short)
      41. javacard.security PrivateKey
        1. Syntax
        2. Description
      42. javacard.security PublicKey
        1. Syntax
        2. Description
      43. javacard.security RandomData
        1. Syntax
        2. Description
        3. Fields
          1. ALG_PSEUDO_RANDOM
          2. ALG_SECURE_RANDOM
        4. Constructors
          1. RandomData()
        5. Methods
          1. generateData(byte[], short, short)
          2. getInstance(byte)
          3. setSeed(byte[], short, short)
      44. javacard.security RSAPrivateCrtKey
        1. Syntax
        2. Description
        3. Methods
          1. getDP1(byte[], short)
          2. getDQ1(byte[], short)
          3. getP(byte[], short)
          4. getPQ(byte[], short)
          5. getQ(byte[], short)
          6. setDP1(byte[], short, short)
          7. setDQ1(byte[], short, short)
          8. setP(byte[], short, short)
          9. setPQ(byte[], short, short)
          10. setQ(byte[], short, short)
      45. javacard.security RSAPrivateKey
        1. Syntax
        2. Description
        3. Methods
          1. getExponent(byte[], short)
          2. getModulus(byte[], short)
          3. setExponent(byte[], short, short)
          4. setModulus(byte[], short, short)
      46. javacard.security RSAPublicKey
        1. Syntax
        2. Description
        3. Methods
          1. getExponent(byte[], short)
          2. getModulus(byte[], short)
          3. setExponent(byte[], short, short)
          4. setModulus(byte[], short, short)
      47. javacard.security SecretKey
        1. Syntax
        2. Description
      48. javacard.security Signature
        1. Syntax
        2. Description
        3. Fields
          1. ALG_DES_MAC4_ISO9797_M1
          2. ALG_DES_MAC4_ISO9797_M2
          3. ALG_DES_MAC4_NOPAD
          4. ALG_DES_MAC4_PKCS5
          5. ALG_DES_MAC8_ISO9797_M1
          6. ALG_DES_MAC8_ISO9797_M2
          7. ALG_DES_MAC8_NOPAD
          8. ALG_DES_MAC8_PKCS5
          9. ALG_DSA_SHA
          10. ALG_RSA_MD5_PKCS1
          11. ALG_RSA_MD5_RFC2409
          12. ALG_RSA_RIPEMD160_ISO9796
          13. ALG_RSA_RIPEMD160_PKCS1
          14. ALG_RSA_SHA_ISO9796
          15. ALG_RSA_SHA_PKCS1
          16. ALG_RSA_SHA_RFC2409
          17. MODE_SIGN
          18. MODE_VERIFY
        4. Constructors
          1. Signature()
        5. Methods
          1. getAlgorithm()
          2. getInstance(byte, boolean)
          3. getLength()
          4. init(Key, byte)
          5. init(Key, byte, byte[], short, short)
          6. sign(byte[], short, short, byte[], short)
          7. update(byte[], short, short)
          8. verify(byte[], short, short, byte[], short, short)
      49. package javacardx.crypto
        1. Description
      50. javacardx.crypto Cipher
        1. Syntax
        2. Description
        3. Fields
          1. ALG_DES_CBC_ISO9797_M1
          2. ALG_DES_CBC_ISO9797_M2
          3. ALG_DES_CBC_NOPAD
          4. ALG_DES_CBC_PKCS5
          5. ALG_DES_ECB_ISO9797_M1
          6. ALG_DES_ECB_ISO9797_M2
          7. ALG_DES_ECB_NOPAD
          8. ALG_DES_ECB_PKCS5
          9. ALG_RSA_ISO14888
          10. ALG_RSA_ISO9796
          11. ALG_RSA_PKCS1
          12. MODE_DECRYPT
          13. MODE_ENCRYPT
        4. Constructors
          1. Cipher()
        5. Methods
          1. doFinal(byte[], short, short, byte[], short)
          2. getAlgorithm()
          3. getInstance(byte, boolean)
          4. init(Key, byte)
          5. init(Key, byte, byte[], short, short)
          6. update(byte[], short, short, byte[], short)
      51. javacardx.crypto KeyEncryption
        1. Syntax
        2. Description
        3. Methods
          1. getKeyCipher()
          2. setKeyCipher(Cipher)
    3. Glossary
    4. Bibliography