CoolKey Applet Information

CoolKey Applet Information#

The following is a collection of information about the CoolKey applet. This document includes general information that would assist in compiling a document to Gemalto that would describe to them how to create a card at the factory on behalf of the customer.

We are working on code that allows the applet to accept a “Phone Home URL” upon initialization at the factory. The following information takes that into account.

  • Applet Package AID: 627601FF0000

  • Application Instance AID: 627601FF000000

  • Applet Instance size: 18000 bytes

  • Example Recommended applet file: 1.3.44724DDE.ijc, note this will change with subsequent builds of the applet.

    • Here is a build of the latest applet: Latest Applet

    • This applet has support for the including a “Phone Home URL” which is discussed below.

The new builds numbers will be appended at the end of the file name as new builds are done.

  • Applet Install Parameters Data

``  The following is a pseudo code fragment that represents how the server instantiates the applet``
``  during a “Format” operation.``
``  Here we will add the data needed for the phone home url:``

A APDU is being constructed with a buffer of data.

``//Install Command APDU``
``   SetCLA(0x84);``
``   SetINS(0xE6);``
``   SetP1(0x0C);``
``   SetP2(0x00);``
``   Buffer data;``
``   data.reserve(32); // pre-allocate``
2-bytes   data += packageAID.size();
n-bytes   data += packageAID;
2-bytes   data += appletAID.size();
n-bytes   data += appletAID;
2-bytes   data += appletAID.size();
n-bytes   data += appletAID;
1-byte   data += 0x01; // length of application privileges byte
1-byte   data += appPrivileges;
``   \ **//Next block will be application specific initialization data`` ``   //This will include an example phone home url`` ``   // Phone home url will be different for each deployment``**
``   Buffer phone_home_url=”abcd”;``
``   Buffer installParams; ``
1-byte  installParams += 0xEF;
1-byte   installParams += 0x04;
1-byte   installParams += 0xC8;
1-byte   installParams += 0x02;
``   Short instanceSize = 18000; Example applet instance size``
``//Next 2 bytes represent the instance size``
1-byte   installParams += (instanceSize>>8) & 0xff;
1-byte   installParams += instanceSize & 0xff;
1-byte   installParams += 0xC9;  //Constant app specific data tag
``   Byte appDataSize=0x07; //Example size of application data``
1-byte   installParams += appDataSize;
``   Byte phoneHomeUrlSize = 0x4 //example phone home URL size from above``
1-byte   installParams += phoneHomeUrlSize;
n-bytes  installParams +=  phone_home_url;
1-byte   installParams += 0x0; //Optional memory size, default to 0
1-byte   installParams += 0x0; //Optional bit mask size, default to 0
``//Append app specific data to the install data``
2-bytes   data += installParams.size();
n-bytes   data += installParams;
1-byte    data += (BYTE) 0x00; // size of token return data

``   \ **//Example data string of install command`` ``   // Phone Home URL “abc”``**

`` \ **//Install APDU``**
``   //84 E6 0C 00 32 [INSTALL]``
`` \ **//Install Header Data``**
``   //06 62 76 01 FF 00 00 07 62 76 01 FF 00 00 00 ``
``   //07 62 76 01 FF 00 00 00 01 00 0F EF 04 C8 02 20 00 C9``
``//What follows is the entire app specific initialization data including the phone home url``
App specific data length  0x7
Phone Home URL length     0x4
Phone Home URL            4 bytes
Custom memory data size   0x0
Custom bitflags data size 0x0

``   // 07 04 61 62 63 64 00 00 00``