/// <summary> /// Parses a PinPad Table /// </summary> /// <param name="reader">string reader</param> /// <returns>PinPadBaseTableController</returns> private static BaseTable TableStringParser(StringReader reader) { // Retrieve the table length int length = reader.PeekInt(TAB_LEN_Length); // Retrieve full table command string string commandString = reader.ReadString(length); // Parse the table command string BaseTable tableData = new BaseTable(); tableData.CommandString = commandString; // Read the Table we just received BaseTable value; switch (tableData.TAB_ID) { // It's an AID table, check for the application standard case EmvTableType.Aid: BaseAidTable aidTableData = new BaseAidTable(); aidTableData.CommandString = commandString; switch (aidTableData.T1_ICCSTD) { case ApplicationType.IccEmv: value = new AidTable(); break; //We don't have the pattern, just keep the data received: default: value = new UnknownAidTable(); break; } break; case EmvTableType.Capk: value = new CapkTable(); break; case EmvTableType.RevokedCertificate: value = new RevCerTable(); break; default: throw new InvalidOperationException("Attempt to parse unknown table: " + tableData.TAB_ID); } value.CommandString = commandString; return(value); }
public CapkTable GetCapk(int i) { CapkTable capk = new CapkTable(); switch (i) { case 4: capk.T2_RID.Value = new HexadecimalData("A000000004"); capk.T2_CAPKIDX.Value = new HexadecimalData("04"); capk.T2_EXP.Value = new HexadecimalData("030000"); capk.T2_MOD.Value = new HexadecimalData("A6DA428387A502D7DDFB7A74D3F412BE762627197B25435B7A81716A700157DDD06F7CC99D6CA28C2470527E2C03616B9C59217357C2674F583B3BA5C7DCF2838692D023E3562420B4615C439CA97C44DC9A249CFCE7B3BFB22F68228C3AF13329AA4A613CF8DD853502373D62E49AB256D2BC17120E54AEDCED6D96A4287ACC5C04677D4A5A320DB8BEE2F775E5FEC50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); return(capk); case 5: capk.T2_RID.Value = new HexadecimalData("A000000004"); capk.T2_CAPKIDX.Value = new HexadecimalData("05"); capk.T2_EXP.Value = new HexadecimalData("030000"); capk.T2_MOD.Value = new HexadecimalData("B8048ABC30C90D976336543E3FD7091C8FE4800DF820ED55E7E94813ED00555B573FECA3D84AF6131A651D66CFF4284FB13B635EDD0EE40176D8BF04B7FD1C7BACF9AC7327DFAA8AA72D10DB3B8E70B2DDD811CB4196525EA386ACC33C0D9D4575916469C4E4F53E8E1C912CC618CB22DDE7C3568E90022E6BBA770202E4522A2DD623D180E215BD1D1507FE3DC90CA310D27B3EFCCD8F83DE3052CAD1E48938C68D095AAC91B5F37E28BB49EC7ED597000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); return(capk); case 6: capk.T2_RID.Value = new HexadecimalData("A000000004"); capk.T2_CAPKIDX.Value = new HexadecimalData("06"); capk.T2_EXP.Value = new HexadecimalData("030000"); capk.T2_MOD.Value = new HexadecimalData("CB26FC830B43785B2BCE37C81ED334622F9622F4C89AAE641046B2353433883F307FB7C974162DA72F7A4EC75D9D657336865B8D3023D3D645667625C9A07A6B7A137CF0C64198AE38FC238006FB2603F41F4F3BB9DA1347270F2F5D8C606E420958C5F7D50A71DE30142F70DE468889B5E3A08695B938A50FC980393A9CBCE44AD2D64F630BB33AD3F5F5FD495D31F37818C1D94071342E07F1BEC2194F6035BA5DED3936500EB82DFDA6E8AFB655B1EF3D0D7EBF86B66DD9F29F6B1D324FE8B26CE38AB2013DD13F611E7A594D675C4432350EA244CC34F3873CBA06592987A1D7E852ADC22EF5A2EE28132031E48F74037E3B34AB747F"); return(capk); case 7: capk.T2_RID.Value = new HexadecimalData("A000000003"); capk.T2_CAPKIDX.Value = new HexadecimalData("07"); capk.T2_EXP.Value = new HexadecimalData("030000"); capk.T2_MOD.Value = new HexadecimalData("A89F25A56FA6DA258C8CA8B40427D927B4A1EB4D7EA326BBB12F97DED70AE5E4480FC9C5E8A972177110A1CC318D06D2F8F5C4844AC5FA79A4DC470BB11ED635699C17081B90F1B984F12E92C1C529276D8AF8EC7F28492097D8CD5BECEA16FE4088F6CFAB4A1B42328A1B996F9278B0B7E3311CA5EF856C2F888474B83612A82E4E00D0CD4069A6783140433D50725F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); return(capk); case 8: capk.T2_RID.Value = new HexadecimalData("A000000003"); capk.T2_CAPKIDX.Value = new HexadecimalData("08"); capk.T2_EXP.Value = new HexadecimalData("030000"); capk.T2_MOD.Value = new HexadecimalData("D9FD6ED75D51D0E30664BD157023EAA1FFA871E4DA65672B863D255E81E137A51DE4F72BCC9E44ACE12127F87E263D3AF9DD9CF35CA4A7B01E907000BA85D24954C2FCA3074825DDD4C0C8F186CB020F683E02F2DEAD3969133F06F7845166ACEB57CA0FC2603445469811D293BFEFBAFAB57631B3DD91E796BF850A25012F1AE38F05AA5C4D6D03B1DC2E568612785938BBC9B3CD3A910C1DA55A5A9218ACE0F7A21287752682F15832A678D6E1ED0B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); return(capk); case 9: capk.T2_RID.Value = new HexadecimalData("A000000003"); capk.T2_CAPKIDX.Value = new HexadecimalData("09"); capk.T2_EXP.Value = new HexadecimalData("030000"); capk.T2_MOD.Value = new HexadecimalData("9D912248DE0A4E39C1A7DDE3F6D2588992C1A4095AFBD1824D1BA74847F2BC4926D2EFD904B4B54954CD189A54C5D1179654F8F9B0D2AB5F0357EB642FEDA95D3912C6576945FAB897E7062CAA44A4AA06B8FE6E3DBA18AF6AE3738E30429EE9BE03427C9D64F695FA8CAB4BFE376853EA34AD1D76BFCAD15908C077FFE6DC5521ECEF5D278A96E26F57359FFAEDA19434B937F1AD999DC5C41EB11935B44C18100E857F431A4A5A6BB65114F174C2D7B59FDF237D6BB1DD0916E644D709DED56481477C75D95CDD68254615F7740EC07F330AC5D67BCD75BF23D28A140826C026DBDE971A37CD3EF9B8DF644AC385010501EFC6509D7A41"); return(capk); } return(null); }