Loading ePassport/ttcn/ePassport_Altsteps.ttcn +48 −23 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ t_wait.start; alt { [] a_isReports(); [] a_aisReports(); [] t_wait.timeout { // do nothing Loading @@ -60,43 +60,53 @@ in template IsVerdictList p_expectedPassResults ) runs on MRTD { var boolean v_checkFailVerdicts, v_checkPassVerdicts; if(not(PXT_AUTOMATIC_TEST_INTERFACE)) { f_waitForManualVerdict(); } // Basic Access Control if(vc_simu.securityStatus >= e_basicAccessControl and not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisBacAuthentication))))) { f_pushPassResult(enum2int(e_aisBacAuthentication)); and not(match(vc_simu.isFailVerdicts, superset(e_aisBacAuthentication)))) { f_pushPassResult(e_aisBacAuthentication); } // Passive Authentication if(not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisPassiveAuthentication))))) { f_pushPassResult(enum2int(e_aisPassiveAuthentication)); if(not(match(vc_simu.isFailVerdicts, superset(e_aisPassiveAuthentication)))) { f_pushPassResult(e_aisPassiveAuthentication); } // Active Authentication if(vc_simu.activeAuthenticationPerformed and not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisActiveAuthentication))))) { f_pushPassResult(enum2int(e_aisActiveAuthentication)); and not(match(vc_simu.isFailVerdicts, superset(e_aisActiveAuthentication)))) { f_pushPassResult(e_aisActiveAuthentication); } // Terminal Authentication if(vc_simu.securityStatus >= e_chipAuthenticated and not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisChipAuthentication))))) { f_pushPassResult(enum2int(e_aisChipAuthentication)); and not(match(vc_simu.isFailVerdicts, superset(e_aisChipAuthentication)))) { f_pushPassResult(e_aisChipAuthentication); } // Terminal Authentication // Pass result pushed in a_terminalAuthentication // Communication if(not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisCommunication))))) { f_pushPassResult(enum2int(e_aisCommunication)); if(not(match(vc_simu.isFailVerdicts, superset(e_aisCommunication)))) { f_pushPassResult(e_aisCommunication); } if(match(vc_simu.isFailVerdicts, p_expectedFailResults) and match(vc_simu.isPassVerdicts, p_expectedPassResults)) { // Fail verdicts log("**** Checking Failure verdicts... ****"); v_checkFailVerdicts := match(vc_simu.isFailVerdicts, p_expectedFailResults); // Pass verdicts log("**** Checking Pass verdicts... ****"); v_checkPassVerdicts := match(vc_simu.isPassVerdicts, p_expectedPassResults); // Take decision and assign testcase verdict if(v_checkFailVerdicts and v_checkPassVerdicts) { log("**** ", p_testcaseId, ": Pass: Inspection System produced expected result ****"); setverdict(pass); } Loading Loading @@ -152,27 +162,42 @@ } // end defaults group isReports { group automaticInterfaceSpecificationAltsteps { altstep a_isReports() runs on MRTD { altstep a_aisReports() runs on MRTD { var CommandGeneric v_report; [] mgmtport.receive(mw_report(int2oct(enum2int(e_aisNoFailure), 2))) { log("**** Success reported ****"); f_pushPassResult(enum2int(e_aisNoFailure)); f_pushPassResult(e_aisNoFailure); mgmtport.send(m_responseOK); } [] mgmtport.receive(mw_report(?)) -> value v_report { log("**** Failure reported: ", v_report.payload.genericData.data[0], " ****"); f_pushFailResult(oct2int(v_report.payload.genericData.data[0])); log("**** Failure reported: ", f_aisOctResultToEnum(v_report.payload.genericData.data[0]), " ****"); f_pushFailResult(f_aisOctResultToEnum(v_report.payload.genericData.data[0])); mgmtport.send(m_responseOK); if((v_report.params.p2 == c_aisFirstOrNextCommand) or PXT_AUTOMATIC_TEST_INTERFACE) { repeat; } } } // end a_isReports } // end isReports altstep a_aisConfiguration() runs on MRTD { [] mgmtport.receive(mw_getData_mrz) { mgmtport.send(m_responseRead(m_opticalMrz( substr(vc_simu.mrz, 0, lengthof(vc_simu.mrz)/2 ), substr(vc_simu.mrz, lengthof(vc_simu.mrz)/2, lengthof(vc_simu.mrz)/2)))); } [] mgmtport.receive(mw_getData_cert) { } } // end a_aisConfiguration } // end automaticInterfaceSpecificationAltsteps group inspectionProcedures { Loading Loading @@ -338,7 +363,7 @@ log("v_cleartextChallenge", v_cleartextChallenge); if(f_verifySignature(v_cleartextChallenge, v_signature, f_getAtPublickey())) { f_pushPassResult(enum2int(e_aisTerminalAuthentication)); f_pushPassResult(e_aisTerminalAuthentication); vc_simu.securityStatus := e_terminalAuthenticated; mrtdport.send(m_responseOK); } Loading ePassport/ttcn/ePassport_Functions.ttcn +137 −44 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ group externalFunctions { group mgmtExternalFunctions { group managementExternalFunctions { /** * @desc Activate the probe of the ePassport reader simulator Loading @@ -34,7 +34,7 @@ * @see Automatic Interfaces Specification (Version 1.0) - Clause 2. Automatic Interface Proposal */ external function fx_deactivateProbe(); } } // end managementExternalFunctions group securityExternalFunctions { Loading Loading @@ -567,11 +567,22 @@ } // end fileFunctions group managementFunctions { function f_activateProbe() { fx_activateProbe(); } function f_deactivateProbe() { fx_deactivateProbe(); } } // end managementFunctions group initializationFunctions { function f_initializeMRTD(in charstring p_configurationId) runs on MRTD { var octetstring v_mrz; var octetstring v_cvcaData; var CvCertificate v_cvcaCvCertificate; var integer v_decodeResult; Loading @@ -580,9 +591,9 @@ f_loadPassportConfiguration(p_configurationId); // Prepare basic access keys f_readFileData(c_fileMRZ, 0, -1, v_mrz); f_deriveKeys(f_extractKseedFromMrz(v_mrz), vc_simu.kEnc, vc_simu.kMac); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(v_mrz); f_readFileData(c_fileMRZ, 0, -1, vc_simu.mrz); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(vc_simu.mrz); // FIXME: Force initialization of vc_simu.securityStatus - Mandatory because it's used in altstep vc_simu.securityStatus := e_noApplication; Loading Loading @@ -616,49 +627,34 @@ //function for initializing the system and start the ePassport procedure function f_initializeIS() runs on MRTD { // import certicate configuration from TA ext function // get certificate to IS // Activate antenna f_activateProbe(); mgmtport.send(m_start); /*alt{ [] mgmtport.receive(mw_getdata_mrz) { mgmtport.send(m_setdata_mrz); } [] mgmtport.receive(mw_getdata_cert) { mgmtport.send(m_setdata_cert); } [] mgmtport.receive { mgmtport.send(m_setdata_cert); // to change to ERROR } if(not(PXT_AUTOMATIC_TEST_INTERFACE)) { action("Please ensure that IS starts inspection procedure."); } else { alt{ [] mgmtport.receive(mw_getdata_mrz) { mgmtport.send(m_setdata_mrz); } [] mgmtport.receive(mw_getdata_cert) { mgmtport.send(m_setdata_cert); } [] mgmtport.receive { mgmtport.send(m_setdata_cert); // to change to ERROR } }*/ if(not(PXT_AUTOMATIC_TEST_INTERFACE)) { action("Please ensure that IS starts inspection procedure."); } } // end f_initializeIS } // end initializationFunctions group postambleFunctions { function f_cleanUp() { // Dectivate antenna f_deactivateProbe(); } // end f_cleanUp } // end postambleFunctions function f_getCertificate(in octetstring p_data) return octetstring { // TODO: refine... return ''O; Loading @@ -671,11 +667,11 @@ group simuParamsFunctions { function f_pushFailResult(in integer p_resultId) runs on MRTD { function f_pushFailResult(in AisFailureClass p_resultId) runs on MRTD { vc_simu.isFailVerdicts[sizeof(vc_simu.isFailVerdicts)] := p_resultId; } // end f_pushFailResult function f_pushPassResult(in integer p_resultId) runs on MRTD { function f_pushPassResult(in AisFailureClass p_resultId) runs on MRTD { vc_simu.isPassVerdicts[sizeof(vc_simu.isPassVerdicts)] := p_resultId; } // end f_pushPassResult Loading Loading @@ -796,6 +792,103 @@ } // end f_addTrustedCertificate function f_aisOctResultToEnum(in Oct1 p_octCode) return AisFailureClass { if(p_octCode == '00'O) { return e_aisNoFailure; } if(p_octCode == '01'O) { return e_aisOpticalReading; } if(p_octCode == '02'O) { return e_aisCommunication; } if(p_octCode == '03'O) { return e_aisApplication; } if(p_octCode == '04'O) { return e_aisBacAuthentication; } if(p_octCode == '05'O) { return e_aisSecureMessaging; } if(p_octCode == '06'O) { return e_aisDgRead; } if(p_octCode == '07'O) { return e_aisChipAuthentication; } if(p_octCode == '08'O) { return e_aisTerminalAuthentication; } if(p_octCode == '09'O) { return e_aisActiveAuthentication; } if(p_octCode == '0A'O) { return e_aisPassiveAuthentication; } if(p_octCode == '10'O) { return e_aisEfCom; } if(p_octCode == '11'O) { return e_aisEfSod; } if(p_octCode == '12'O) { return e_aisDg1; } if(p_octCode == '13'O) { return e_aisDg2; } if(p_octCode == '14'O) { return e_aisDg3; } if(p_octCode == '15'O) { return e_aisDg4; } if(p_octCode == '16'O) { return e_aisDg5; } if(p_octCode == '17'O) { return e_aisDg6; } if(p_octCode == '18'O) { return e_aisDg7; } if(p_octCode == '19'O) { return e_aisDg8; } if(p_octCode == '1A'O) { return e_aisDg9; } if(p_octCode == '1B'O) { return e_aisDg10; } if(p_octCode == '1C'O) { return e_aisDg11; } if(p_octCode == '1D'O) { return e_aisDg12; } if(p_octCode == '1E'O) { return e_aisDg13; } if(p_octCode == '1F'O) { return e_aisDg14; } if(p_octCode == '20'O) { return e_aisDg15; } if(p_octCode == '21'O) { return e_aisDg16; } if(p_octCode == '22'O) { return e_aisEfCvca; } return e_aisNoFailure; } // end f_aisOctResultToEnum } // end simuParamsFunctions } // end ePassport_Functions Loading ePassport/ttcn/ePassport_Templates.ttcn +33 −66 Original line number Diff line number Diff line Loading @@ -18,61 +18,49 @@ module ePassport_Templates { group automaticTestInterface { // fake variable need to be declared later with the test mode // The type is WRONG, copied from the EFfile type // It may contain the certificate for the IS // TEMPLATES m_start template (value) Response m_start := { responseData := omit, w1w2 := '9999'O // ??? } // TEMPLATES m_get_data_certificate see Automatic Interface Proposal template CommandGeneric mw_getdata_cert := { template CommandPutDataWith mw_report(template Oct2 v_failCode) := { class := mw_class_01, ins := e_getData, ins := e_putDataWithDataBytes, //'da'O, params := { p1 := '00000001'B, // values for Certificate reference ID p2 := '11110001'B p1 := '00001111'B, p2 := ? }, lengthC := ?, lengthC := *, payload := { genericData := { data := omit data := v_failCode } }, lengthE := 0 lengthE := omit } // TEMPLATES m_get_data_MRZ template CommandGeneric mw_getdata_mrz := { template CommandGetData mw_getData_cert := { class := mw_class_01, ins := e_getData, params := { p1 := '00000001'B, p2 := '11110010'B p1 := c_aisGetDataP1, p2 := c_aisGetDataP2CertificateRef }, lengthC := *, payload := *, lengthE := 0 } // TEMPLATES m_setdata_cert template (value) Response m_setdata_cert := { // to be change later by defining a real function to provide certificate to the IS !!! responseData := omit, w1w2 := '9999'O // ??? lengthC := omit, payload := omit, lengthE := 256 } // TEMPLATES m_start template (value) Response m_setdata_mrz := { responseData := m_responseData(char2oct("bleu")), // to be change later by providing real data !!! w1w2 := c_w1w2NormalProcessing template CommandGetData mw_getData_mrz := { class := mw_class_01, ins := e_getData, params := { p1 := c_aisGetDataP1, p2 := c_aisGetDataP2OpticalMrz }, lengthC := omit, payload := omit, lengthE := 256 } template (value) ResponseData m_responseData( template (value) PlainTextResponseData p_responseData) := { plainText := p_responseData } template (value) PlainTextResponseData m_opticalMrz(in octetstring p_mrzLine1, in octetstring p_mrzLine2) := c_aisMrzLine1Tag & int2oct(lengthof(p_mrzLine1), 1) & p_mrzLine1 & c_aisMrzLine2Tag & int2oct(lengthof(p_mrzLine2), 1) & p_mrzLine2; } // end automaticTestInterface Loading Loading @@ -104,27 +92,6 @@ module ePassport_Templates { } } group managementTemplates { // TEMPLATES mw_report template CommandGeneric mw_report(template Oct2 v_failCode) := { class := mw_class_01, ins := e_putDataWithDataBytes, //'da'O, params := { p1 := '00001111'B, p2 := ? }, lengthC := *, payload := { genericData := { data := v_failCode } }, lengthE := omit } } // end managementTemplates group commandTemplates { //SELECT TEMPLATES : Send APDU to the passport 00 a4 04 0c 07 a0 00 00 02 47 10 01 Loading ePassport/ttcn/ePassport_TestSystem.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ module ePassport_TestSystem { Chr dst optional, Chr at optional, octetstring challenge optional, octetstring mrz optional, octetstring documentNumber optional, octetstring isDhPublicKeyHash optional, Loading Loading @@ -127,7 +128,7 @@ group portDefs { }; type port MgmtPort message { in CommandGeneric; in CommandGetData, CommandPutDataWith; out Response; }; Loading ePassport/ttcn/ePassport_Testcases.ttcn +108 −72 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
ePassport/ttcn/ePassport_Altsteps.ttcn +48 −23 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ t_wait.start; alt { [] a_isReports(); [] a_aisReports(); [] t_wait.timeout { // do nothing Loading @@ -60,43 +60,53 @@ in template IsVerdictList p_expectedPassResults ) runs on MRTD { var boolean v_checkFailVerdicts, v_checkPassVerdicts; if(not(PXT_AUTOMATIC_TEST_INTERFACE)) { f_waitForManualVerdict(); } // Basic Access Control if(vc_simu.securityStatus >= e_basicAccessControl and not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisBacAuthentication))))) { f_pushPassResult(enum2int(e_aisBacAuthentication)); and not(match(vc_simu.isFailVerdicts, superset(e_aisBacAuthentication)))) { f_pushPassResult(e_aisBacAuthentication); } // Passive Authentication if(not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisPassiveAuthentication))))) { f_pushPassResult(enum2int(e_aisPassiveAuthentication)); if(not(match(vc_simu.isFailVerdicts, superset(e_aisPassiveAuthentication)))) { f_pushPassResult(e_aisPassiveAuthentication); } // Active Authentication if(vc_simu.activeAuthenticationPerformed and not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisActiveAuthentication))))) { f_pushPassResult(enum2int(e_aisActiveAuthentication)); and not(match(vc_simu.isFailVerdicts, superset(e_aisActiveAuthentication)))) { f_pushPassResult(e_aisActiveAuthentication); } // Terminal Authentication if(vc_simu.securityStatus >= e_chipAuthenticated and not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisChipAuthentication))))) { f_pushPassResult(enum2int(e_aisChipAuthentication)); and not(match(vc_simu.isFailVerdicts, superset(e_aisChipAuthentication)))) { f_pushPassResult(e_aisChipAuthentication); } // Terminal Authentication // Pass result pushed in a_terminalAuthentication // Communication if(not(match(vc_simu.isFailVerdicts, superset(enum2int(e_aisCommunication))))) { f_pushPassResult(enum2int(e_aisCommunication)); if(not(match(vc_simu.isFailVerdicts, superset(e_aisCommunication)))) { f_pushPassResult(e_aisCommunication); } if(match(vc_simu.isFailVerdicts, p_expectedFailResults) and match(vc_simu.isPassVerdicts, p_expectedPassResults)) { // Fail verdicts log("**** Checking Failure verdicts... ****"); v_checkFailVerdicts := match(vc_simu.isFailVerdicts, p_expectedFailResults); // Pass verdicts log("**** Checking Pass verdicts... ****"); v_checkPassVerdicts := match(vc_simu.isPassVerdicts, p_expectedPassResults); // Take decision and assign testcase verdict if(v_checkFailVerdicts and v_checkPassVerdicts) { log("**** ", p_testcaseId, ": Pass: Inspection System produced expected result ****"); setverdict(pass); } Loading Loading @@ -152,27 +162,42 @@ } // end defaults group isReports { group automaticInterfaceSpecificationAltsteps { altstep a_isReports() runs on MRTD { altstep a_aisReports() runs on MRTD { var CommandGeneric v_report; [] mgmtport.receive(mw_report(int2oct(enum2int(e_aisNoFailure), 2))) { log("**** Success reported ****"); f_pushPassResult(enum2int(e_aisNoFailure)); f_pushPassResult(e_aisNoFailure); mgmtport.send(m_responseOK); } [] mgmtport.receive(mw_report(?)) -> value v_report { log("**** Failure reported: ", v_report.payload.genericData.data[0], " ****"); f_pushFailResult(oct2int(v_report.payload.genericData.data[0])); log("**** Failure reported: ", f_aisOctResultToEnum(v_report.payload.genericData.data[0]), " ****"); f_pushFailResult(f_aisOctResultToEnum(v_report.payload.genericData.data[0])); mgmtport.send(m_responseOK); if((v_report.params.p2 == c_aisFirstOrNextCommand) or PXT_AUTOMATIC_TEST_INTERFACE) { repeat; } } } // end a_isReports } // end isReports altstep a_aisConfiguration() runs on MRTD { [] mgmtport.receive(mw_getData_mrz) { mgmtport.send(m_responseRead(m_opticalMrz( substr(vc_simu.mrz, 0, lengthof(vc_simu.mrz)/2 ), substr(vc_simu.mrz, lengthof(vc_simu.mrz)/2, lengthof(vc_simu.mrz)/2)))); } [] mgmtport.receive(mw_getData_cert) { } } // end a_aisConfiguration } // end automaticInterfaceSpecificationAltsteps group inspectionProcedures { Loading Loading @@ -338,7 +363,7 @@ log("v_cleartextChallenge", v_cleartextChallenge); if(f_verifySignature(v_cleartextChallenge, v_signature, f_getAtPublickey())) { f_pushPassResult(enum2int(e_aisTerminalAuthentication)); f_pushPassResult(e_aisTerminalAuthentication); vc_simu.securityStatus := e_terminalAuthenticated; mrtdport.send(m_responseOK); } Loading
ePassport/ttcn/ePassport_Functions.ttcn +137 −44 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ group externalFunctions { group mgmtExternalFunctions { group managementExternalFunctions { /** * @desc Activate the probe of the ePassport reader simulator Loading @@ -34,7 +34,7 @@ * @see Automatic Interfaces Specification (Version 1.0) - Clause 2. Automatic Interface Proposal */ external function fx_deactivateProbe(); } } // end managementExternalFunctions group securityExternalFunctions { Loading Loading @@ -567,11 +567,22 @@ } // end fileFunctions group managementFunctions { function f_activateProbe() { fx_activateProbe(); } function f_deactivateProbe() { fx_deactivateProbe(); } } // end managementFunctions group initializationFunctions { function f_initializeMRTD(in charstring p_configurationId) runs on MRTD { var octetstring v_mrz; var octetstring v_cvcaData; var CvCertificate v_cvcaCvCertificate; var integer v_decodeResult; Loading @@ -580,9 +591,9 @@ f_loadPassportConfiguration(p_configurationId); // Prepare basic access keys f_readFileData(c_fileMRZ, 0, -1, v_mrz); f_deriveKeys(f_extractKseedFromMrz(v_mrz), vc_simu.kEnc, vc_simu.kMac); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(v_mrz); f_readFileData(c_fileMRZ, 0, -1, vc_simu.mrz); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(vc_simu.mrz); // FIXME: Force initialization of vc_simu.securityStatus - Mandatory because it's used in altstep vc_simu.securityStatus := e_noApplication; Loading Loading @@ -616,49 +627,34 @@ //function for initializing the system and start the ePassport procedure function f_initializeIS() runs on MRTD { // import certicate configuration from TA ext function // get certificate to IS // Activate antenna f_activateProbe(); mgmtport.send(m_start); /*alt{ [] mgmtport.receive(mw_getdata_mrz) { mgmtport.send(m_setdata_mrz); } [] mgmtport.receive(mw_getdata_cert) { mgmtport.send(m_setdata_cert); } [] mgmtport.receive { mgmtport.send(m_setdata_cert); // to change to ERROR } if(not(PXT_AUTOMATIC_TEST_INTERFACE)) { action("Please ensure that IS starts inspection procedure."); } else { alt{ [] mgmtport.receive(mw_getdata_mrz) { mgmtport.send(m_setdata_mrz); } [] mgmtport.receive(mw_getdata_cert) { mgmtport.send(m_setdata_cert); } [] mgmtport.receive { mgmtport.send(m_setdata_cert); // to change to ERROR } }*/ if(not(PXT_AUTOMATIC_TEST_INTERFACE)) { action("Please ensure that IS starts inspection procedure."); } } // end f_initializeIS } // end initializationFunctions group postambleFunctions { function f_cleanUp() { // Dectivate antenna f_deactivateProbe(); } // end f_cleanUp } // end postambleFunctions function f_getCertificate(in octetstring p_data) return octetstring { // TODO: refine... return ''O; Loading @@ -671,11 +667,11 @@ group simuParamsFunctions { function f_pushFailResult(in integer p_resultId) runs on MRTD { function f_pushFailResult(in AisFailureClass p_resultId) runs on MRTD { vc_simu.isFailVerdicts[sizeof(vc_simu.isFailVerdicts)] := p_resultId; } // end f_pushFailResult function f_pushPassResult(in integer p_resultId) runs on MRTD { function f_pushPassResult(in AisFailureClass p_resultId) runs on MRTD { vc_simu.isPassVerdicts[sizeof(vc_simu.isPassVerdicts)] := p_resultId; } // end f_pushPassResult Loading Loading @@ -796,6 +792,103 @@ } // end f_addTrustedCertificate function f_aisOctResultToEnum(in Oct1 p_octCode) return AisFailureClass { if(p_octCode == '00'O) { return e_aisNoFailure; } if(p_octCode == '01'O) { return e_aisOpticalReading; } if(p_octCode == '02'O) { return e_aisCommunication; } if(p_octCode == '03'O) { return e_aisApplication; } if(p_octCode == '04'O) { return e_aisBacAuthentication; } if(p_octCode == '05'O) { return e_aisSecureMessaging; } if(p_octCode == '06'O) { return e_aisDgRead; } if(p_octCode == '07'O) { return e_aisChipAuthentication; } if(p_octCode == '08'O) { return e_aisTerminalAuthentication; } if(p_octCode == '09'O) { return e_aisActiveAuthentication; } if(p_octCode == '0A'O) { return e_aisPassiveAuthentication; } if(p_octCode == '10'O) { return e_aisEfCom; } if(p_octCode == '11'O) { return e_aisEfSod; } if(p_octCode == '12'O) { return e_aisDg1; } if(p_octCode == '13'O) { return e_aisDg2; } if(p_octCode == '14'O) { return e_aisDg3; } if(p_octCode == '15'O) { return e_aisDg4; } if(p_octCode == '16'O) { return e_aisDg5; } if(p_octCode == '17'O) { return e_aisDg6; } if(p_octCode == '18'O) { return e_aisDg7; } if(p_octCode == '19'O) { return e_aisDg8; } if(p_octCode == '1A'O) { return e_aisDg9; } if(p_octCode == '1B'O) { return e_aisDg10; } if(p_octCode == '1C'O) { return e_aisDg11; } if(p_octCode == '1D'O) { return e_aisDg12; } if(p_octCode == '1E'O) { return e_aisDg13; } if(p_octCode == '1F'O) { return e_aisDg14; } if(p_octCode == '20'O) { return e_aisDg15; } if(p_octCode == '21'O) { return e_aisDg16; } if(p_octCode == '22'O) { return e_aisEfCvca; } return e_aisNoFailure; } // end f_aisOctResultToEnum } // end simuParamsFunctions } // end ePassport_Functions Loading
ePassport/ttcn/ePassport_Templates.ttcn +33 −66 Original line number Diff line number Diff line Loading @@ -18,61 +18,49 @@ module ePassport_Templates { group automaticTestInterface { // fake variable need to be declared later with the test mode // The type is WRONG, copied from the EFfile type // It may contain the certificate for the IS // TEMPLATES m_start template (value) Response m_start := { responseData := omit, w1w2 := '9999'O // ??? } // TEMPLATES m_get_data_certificate see Automatic Interface Proposal template CommandGeneric mw_getdata_cert := { template CommandPutDataWith mw_report(template Oct2 v_failCode) := { class := mw_class_01, ins := e_getData, ins := e_putDataWithDataBytes, //'da'O, params := { p1 := '00000001'B, // values for Certificate reference ID p2 := '11110001'B p1 := '00001111'B, p2 := ? }, lengthC := ?, lengthC := *, payload := { genericData := { data := omit data := v_failCode } }, lengthE := 0 lengthE := omit } // TEMPLATES m_get_data_MRZ template CommandGeneric mw_getdata_mrz := { template CommandGetData mw_getData_cert := { class := mw_class_01, ins := e_getData, params := { p1 := '00000001'B, p2 := '11110010'B p1 := c_aisGetDataP1, p2 := c_aisGetDataP2CertificateRef }, lengthC := *, payload := *, lengthE := 0 } // TEMPLATES m_setdata_cert template (value) Response m_setdata_cert := { // to be change later by defining a real function to provide certificate to the IS !!! responseData := omit, w1w2 := '9999'O // ??? lengthC := omit, payload := omit, lengthE := 256 } // TEMPLATES m_start template (value) Response m_setdata_mrz := { responseData := m_responseData(char2oct("bleu")), // to be change later by providing real data !!! w1w2 := c_w1w2NormalProcessing template CommandGetData mw_getData_mrz := { class := mw_class_01, ins := e_getData, params := { p1 := c_aisGetDataP1, p2 := c_aisGetDataP2OpticalMrz }, lengthC := omit, payload := omit, lengthE := 256 } template (value) ResponseData m_responseData( template (value) PlainTextResponseData p_responseData) := { plainText := p_responseData } template (value) PlainTextResponseData m_opticalMrz(in octetstring p_mrzLine1, in octetstring p_mrzLine2) := c_aisMrzLine1Tag & int2oct(lengthof(p_mrzLine1), 1) & p_mrzLine1 & c_aisMrzLine2Tag & int2oct(lengthof(p_mrzLine2), 1) & p_mrzLine2; } // end automaticTestInterface Loading Loading @@ -104,27 +92,6 @@ module ePassport_Templates { } } group managementTemplates { // TEMPLATES mw_report template CommandGeneric mw_report(template Oct2 v_failCode) := { class := mw_class_01, ins := e_putDataWithDataBytes, //'da'O, params := { p1 := '00001111'B, p2 := ? }, lengthC := *, payload := { genericData := { data := v_failCode } }, lengthE := omit } } // end managementTemplates group commandTemplates { //SELECT TEMPLATES : Send APDU to the passport 00 a4 04 0c 07 a0 00 00 02 47 10 01 Loading
ePassport/ttcn/ePassport_TestSystem.ttcn +2 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ module ePassport_TestSystem { Chr dst optional, Chr at optional, octetstring challenge optional, octetstring mrz optional, octetstring documentNumber optional, octetstring isDhPublicKeyHash optional, Loading Loading @@ -127,7 +128,7 @@ group portDefs { }; type port MgmtPort message { in CommandGeneric; in CommandGetData, CommandPutDataWith; out Response; }; Loading
ePassport/ttcn/ePassport_Testcases.ttcn +108 −72 File changed.Preview size limit exceeded, changes collapsed. Show changes