How to get started with Javacard?

Gili picture Gili · Aug 25, 2011 · Viewed 22.9k times · Source

I'm new to smart-card development. Please help me understand how to get started.

  1. What's the relationship between Javacard and JCOP?
  2. How do I map a JCOP version to a GlobalPlatform Card Specification?
    • For example, what specification does JCOP 2.4.1 map to?
  3. When do I need to code against one API versus the other?
  4. Where can I find a good tutorial to get started?

Answer

pb2q picture pb2q · Aug 25, 2011
  1. JCOP is a software platform originally from IBM that implements Javacard API and GlobalPlatform (formerly Open Platform). Now owned and managed by NXP.
  2. JCOP 2.4.1? Probably GP 2.1.1. Do a web search for specific product specifications.
  3. javacard and GP:
    • Javacard is used to write applications - javacard applets - for smartcard platforms, using the Java Programming language and a limited version of the JVM and java libraries.
    • GlobalPlatform is a specification for managing applet-aware smartcards, defining operations for things like:
      • managing card lifecycle,
      • card/host authentication,
      • installing/deleting/instantiating/selecting applets, and
      • managing security policies on the card.
    • Using GlobalPlatform you'll exchange APDUs with the GP card for the aforementioned operations; using javacard you'll write applets that can accept and process APDUs that are specific to your application. GlobalPlatform isn't javacard specific, but javacard is the only relevant technology for smartcard applet development.
  4. For javacard tutorials, start with the javacard site. Look through the documentation section for Getting Started stuff. Download the dev kit and you'll find some html howtos. For GlobalPlatform, you'll need to begin with the latest GP spec; it's certainly not a tutorial, but I don't think you'll find anything more useful. The spec will require strong smartcard fundamentals. Also see Required Things to start Smartcard Programming Using Javacard