1 /*
  2  *  ---------
  3  * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
  4  * |#       #|  
  5  * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
  6  * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
  7  *  --------- 
  8  *
  9  *  This file is part of OpenSCDP.
 10  *
 11  *  OpenSCDP is free software; you can redistribute it and/or modify
 12  *  it under the terms of the GNU General Public License version 2 as
 13  *  published by the Free Software Foundation.
 14  *
 15  *  OpenSCDP is distributed in the hope that it will be useful,
 16  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 17  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 18  *  GNU General Public License for more details.
 19  *
 20  *  You should have received a copy of the GNU General Public License
 21  *  along with OpenSCDP; if not, write to the Free Software
 22  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 23  *
 24  *  Load Musclecard Applet into Cyberflex 64K card
 25  */
 26 
 27 load("const.js");
 28 load("gp/tools.js");
 29 
 30 
 31 var sdAid = new ByteString("A000000003000000", HEX);
 32 
 33 // Generate default keys
 34 var masterSENC = new Key("gp/kp_jcop_default_s-enc.xml");
 35 var masterSMAC = new Key("gp/kp_jcop_default_s-mac.xml");
 36 
 37 
 38 // Card object
 39 var card = new Card(_scsh3.reader);
 40 
 41 // Crypto object
 42 var crypto = new Crypto();
 43 
 44 
 45 // Define a security domain (profiles does not matter so far)
 46 var sd = new GPSecurityDomain("profiles/ap_sample.xml");
 47 sd.aid = sdAid;
 48 sd.card = card;
 49 
 50 //Reset the card 
 51 card.reset(Card.RESET_COLD);
 52 
 53 
 54 print("Selecting card manager application...");
 55 
 56 print(sd.select());
 57 
 58 GPAuthenticate(card, crypto, masterSENC, masterSMAC);
 59 
 60 print("Delete old applet instance...");
 61 sd.deleteAID(applAid, [0x9000, 0x6A88, 0x6A80] );
 62 
 63 print("Delete old load file...");
 64 sd.deleteAID(loadFileAid, [0x9000, 0x6A88, 0x6A80] );
 65 
 66 print("InstallForLoad...");
 67 
 68 // EF 04		- System parameter
 69 //    C6 02 40 00  	- Code Size (16K)
 70 //
 71 var loadParameter = new ByteString("EF04C6024000", HEX);
 72 sd.installForLoad(loadFileAid, sdAid, null, loadParameter, null);
 73 
 74 print("Loading applet...");
 75 sd.loadByName("musclecard/CardEdgeCF.cap");
 76 
 77 print("Instantiating applet...");
 78 
 79 var applPrivileges = new ByteString("00", HEX);
 80 
 81 //
 82 // C9 01 00		- Application specific install parameter
 83 // EF 04		- System parameter
 84 //    C8 02 2E E0	- Instance size
 85 var installParam = new ByteString("C90100EF04C8022EE0", HEX);
 86 
 87 sd.installForInstallAndSelectable(loadFileAid, moduleAid, applAid, applPrivileges, installParam, null);
 88