1 /**
  2  *  ---------
  3  * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
  4  * |#       #|  
  5  * |#       #|  Copyright (c) 1999-2009 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  * @fileoverview EMV Data Model
 25  */
 26 
 27  
 28 
 29 /**
 30  * Create an EMV data model
 31  * @class Class implementing an EMV data model
 32  * @constructor
 33  */ 
 34 function EMVDataModel() {
 35 
 36 }
 37 
 38 
 39 
 40 /**
 41  * Return the application file locator
 42  */
 43 EMVDataModel.prototype.getApplicationFileLocator = function() {
 44 	return new ByteString("08010100 10010101 18010200 20010200", HEX);
 45 }
 46 
 47 
 48 
 49 /**
 50  * Return the application interchange profile
 51  */
 52 EMVDataModel.prototype.getApplicationInterchangeProfile = function() {
 53 	return new ByteString("1980", HEX);
 54 }
 55 
 56 
 57 
 58 /**
 59  * Return the list of EFs and their records
 60  */
 61 EMVDataModel.prototype.getFiles = function() {
 62 	return [
 63 		{ sfi: 1, records: [
 64 			new ByteString("70 81 8D 9F 6C 02 00 01 9F 62 06 00 00 00 00 01 C0 9F 63 06 00 00 00 07 80 00 56 4C 42 35 32 33 34 30 30 30 30 35 30 33 34 31 31 34 35 5E 20 2F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5E 31 36 30 32 32 30 32 34 39 39 32 30 30 33 39 38 39 31 34 39 38 31 30 30 30 37 34 31 39 36 36 9F 64 01 02 9F 65 02 00 E0 9F 66 02 00 1E 9F 6B 13 52 34 00 00 50 34 11 45 D1 60 22 02 14 98 10 00 04 00 0F 9F 67 01 02", HEX)
 65 			]
 66 		},
 67 		{ sfi: 2, records: [
 68 			new ByteString("70 81 A3 57 13 52 34 00 00 50 34 11 45 D1 60 22 01 14 98 19 09 04 00 0F 5A 08 52 34 00 00 50 34 11 45 5F 24 03 16 02 28 5F 30 02 02 02 9F 44 01 02 5F 28 02 02 80 5F 34 01 04 8C 21 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 35 01 9F 45 02 9F 4C 08 9F 34 03 8D 0C 91 0A 8A 02 95 05 9F 37 04 9F 4C 08 8E 0E 00 00 00 00 00 00 00 00 5E 03 42 03 1F 03 9F 07 02 FF 00 9F 08 02 00 02 9F 0D 05 B4 50 04 00 00 9F 0E 05 00 00 88 00 00 9F 0F 05 B4 70 04 98 00 9F 42 02 09 78 9F 4A 01 82", HEX)
 69 			]
 70 		},
 71 		{ sfi: 3, records: [
 72 			new ByteString("70 81 C0 8F 01 04 9F 32 01 03 92 24 94 EE D1 88 44 B8 C9 0A 55 5C AE 8B 39 16 86 C1 2A 30 ED 71 C2 81 D3 FA 90 EE B0 5E AF 29 8A E2 C9 D1 40 0F 90 81 90 27 18 3B 7E 0B 7D E4 47 D9 C5 2B 5A D9 58 CF 41 60 FD C0 A7 0D 84 C8 8A C9 B0 1B B4 B7 58 61 D8 36 B1 8D 15 4E 28 89 EF 50 CC A8 3E 76 43 B5 27 91 FF 1C C6 1B 1F 0A D6 16 1A F9 E6 8E 14 36 F5 73 07 EC 07 DB B3 04 B6 F1 78 C1 AF 68 3E 3D B7 17 41 32 19 69 95 DB F6 72 1B 13 89 2A CF 46 8A 14 06 60 8E 95 FD 97 7A 3F 34 3D 18 B6 1F 5D 77 E4 E7 9F A0 ED 5A 4B 5D 4B 57 C4 1A 29 E7 B7 FD 1E 9F 42 36 B0 BE ED FF 58 32 C3 6C E0 CF 14 AA", HEX),
 73 			new ByteString("70 81 A3 9F 6E 0D 02 80 F0 01 22 09 92 00 39 89 74 19 66 93 81 90 06 8C 34 A1 42 BF A9 2B 88 FC 5D 86 AB 32 9C A8 19 DA E2 DF 38 85 F6 E1 4C 1B 8C CD 16 9F 58 F0 14 B9 3F 92 50 69 0C AC 6D 20 1F 9D 42 F3 00 B9 14 9C E4 C1 D1 6F FF 3B FB F5 F5 10 DC 6F A1 4F 9B F7 A3 8F BB 82 7F B5 18 FB 2C 00 6A 85 29 8B 84 1F 77 0F 3F 93 B8 33 9F 9F 83 63 6A 0C 49 88 4D 22 56 8F 32 70 E5 E0 7B F3 7F 77 58 5C C4 D4 B0 88 4C B0 24 3A 8C 3B 25 E8 85 AF EF 2E C3 2E CD 41 C7 44 DF AA 19 C7 30 2F 6F E0 4F 87 7F E5", HEX)
 74 			]
 75 		},
 76 		{ sfi: 4, records: [
 77 			new ByteString("70 27 9F 47 01 03 9F 48 1A F2 17 AC 6F 17 6D FD 58 00 92 6C 10 A9 85 DD BF 7B 1C FF D8 27 D7 C4 82 14 13 9F 49 03 9F 37 04", HEX),
 78 			new ByteString("70 81 94 9F 46 81 90 83 88 29 E4 97 9D 3A B9 7D 69 48 14 CE D3 C7 DC B3 51 83 08 D5 EA 4F 72 A7 CF 48 29 EF 14 94 FD 4D A6 40 31 3E D6 75 93 8A 40 E2 94 17 53 32 AD 6C 18 FA 04 A9 65 DC 36 FF 7E 7C 6E 26 68 F0 E0 D3 72 0F 19 EA 80 11 34 DF 7B 7F 32 98 BE DF 9C 54 5A 9D F8 E5 AB E9 71 2D F6 1E 52 90 28 18 64 5A C3 F8 37 AA CB 3B E7 C6 DD 45 FF F5 92 71 E8 66 B5 BB 27 32 01 0A 8D 90 D1 83 97 AB BF FC E3 A6 5D DD 83 07 FC 23 09 26 53 A7 7D 5B 28 64 12", HEX)
 79 			]
 80 		}
 81 	];
 82 }
 83 
 84