Loading ePassport/ttcn/ePassport_Altsteps.ttcn +23 −8 Original line number Diff line number Diff line Loading @@ -169,6 +169,7 @@ [] mrtdport.receive { log("**** a_default: Error: Unexpected message received. ****"); mrtdport.send(m_responseNOK(c_w1w2InstructionCodeNotSupportedOrInvalid)); f_cleanUp(); setverdict(inconc); stop; } Loading Loading @@ -219,7 +220,13 @@ v_dataLength := v_readCommand.lengthE; v_result := f_readFileData(vc_simu.currentFiles[v_logicalChannel], v_offset, v_dataLength, v_data); if(v_data == ''O) { mrtdport.send(m_responseNOK(c_w1w2WrongParametersP1P2)); } else { mrtdport.send(m_responseReadWithStatus(v_data, v_result)); } t_ac.start; repeat; } Loading Loading @@ -290,7 +297,7 @@ // Start the MRTD Test sequence : Standard Inspection Procedure (SIP) altstep a_standardInspectionProcedure() runs on MRTD { [vc_simu.securityStatus == e_noApplication] a_waitApplication(); [/*vc_simu.securityStatus == e_noApplication*/] a_waitApplication(); [vc_simu.securityStatus > e_noApplication and vc_simu.securityStatus < e_basicAccessControl] a_bac(); Loading @@ -303,7 +310,7 @@ // Start the MRTD Test sequence : Advanced Inspection Procedure (AIP) including EAC altstep a_advancedInspectionProcedure() runs on MRTD { [vc_simu.securityStatus == e_noApplication] a_waitApplication(); [/*vc_simu.securityStatus == e_noApplication*/] a_waitApplication(); [vc_simu.securityStatus > e_noApplication and vc_simu.securityStatus < e_basicAccessControl] a_bac(); Loading Loading @@ -471,8 +478,14 @@ altstep a_waitApplication () runs on MRTD { [] mrtdport.receive(mw_selectApplication) { mrtdport.send(m_responseOK); vc_simu.securityStatus := e_noSecurity; // Restore basic access keys f_readFileData(c_fileMRZ, 0, -1, vc_simu.mrz); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); mrtdport.send(m_responseOK); t_ac.start; repeat; } Loading Loading @@ -501,8 +514,10 @@ // TODO check vc_simu.rndIcc != omit v_response := f_basicAccessControl(vc_simu.challenge, v_challengeResponse); if(v_response != ''O) { mrtdport.send(m_responseRead(v_response)); vc_simu.securityStatus := e_basicAccessControl; } t_ac.start; repeat; } Loading ePassport/ttcn/ePassport_Functions.ttcn +8 −3 Original line number Diff line number Diff line Loading @@ -418,7 +418,7 @@ v_computedMacIfd := f_cryptographicChecksum(vc_simu.kMac, v_encryptedIfd); if(not match(v_computedMacIfd, v_macIfd)) { log("CHECKSUM ERROR"); //TODO mrtdport.send(m_responseNOK(c_w1w2NoPreciseDiagnosis)); return ''O; } Loading @@ -430,7 +430,7 @@ v_receivedRndIcc := substr(v_s, c_bacNonceSize, c_bacNonceSize); v_keyIfd := substr(v_s, 2*c_bacNonceSize, c_bacKeySize); if(not match(v_receivedRndIcc, p_rndIcc)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoPreciseDiagnosis)); return ''O; } Loading Loading @@ -519,6 +519,7 @@ } log(v_dg14PrFileInfo); f_readFileData(v_dg14PrFileInfo, 0, -1, v_dg14PrivateKey); // FIXME: check read file result and send 6A80 if file not found (means bad reference) v_algo := f_computeSharedSecret(v_dg14PrivateKey, p_publicKeyPcd, v_k); // b) The session keys KMAC and KEnc derived from K for Secure Messaging. Loading Loading @@ -712,11 +713,15 @@ function f_cleanUp() runs on MRTD { // Dectivate antenna log("*** f_cleanUp: INFO: Before f_deactivateProbe() ***"); f_deactivateProbe(); log("*** f_cleanUp: INFO: After f_deactivateProbe() ***"); // unmap ports unmap(self:mgmtport, system:system_mgmtPort); log("*** f_cleanUp: INFO: mgmtport unmapped ***"); unmap(self:mrtdport, system:system_mrtdPort); log("*** f_cleanUp: INFO: mrtdport unmapped ***"); stop; Loading ePassport/ttcn/ePassport_Values.ttcn +2 −0 Original line number Diff line number Diff line Loading @@ -28,7 +28,9 @@ module ePassport_Values { const W1W2Status c_w1w2ConditionsOfUseNotSatisfied := '6985'O; const W1W2Status c_w1w2NoCurrentEF := '6986'O; const W1W2Status c_w1w2ReferencedDataOrReferenceDataNotFound := '6A88'O; const W1W2Status c_w1w2WrongParametersP1P2 := '6B00'O; const W1W2Status c_w1w2InstructionCodeNotSupportedOrInvalid := '6D00'O; const W1W2Status c_w1w2NoPreciseDiagnosis := '6F00'O; } // end w1w2Constants Loading Loading
ePassport/ttcn/ePassport_Altsteps.ttcn +23 −8 Original line number Diff line number Diff line Loading @@ -169,6 +169,7 @@ [] mrtdport.receive { log("**** a_default: Error: Unexpected message received. ****"); mrtdport.send(m_responseNOK(c_w1w2InstructionCodeNotSupportedOrInvalid)); f_cleanUp(); setverdict(inconc); stop; } Loading Loading @@ -219,7 +220,13 @@ v_dataLength := v_readCommand.lengthE; v_result := f_readFileData(vc_simu.currentFiles[v_logicalChannel], v_offset, v_dataLength, v_data); if(v_data == ''O) { mrtdport.send(m_responseNOK(c_w1w2WrongParametersP1P2)); } else { mrtdport.send(m_responseReadWithStatus(v_data, v_result)); } t_ac.start; repeat; } Loading Loading @@ -290,7 +297,7 @@ // Start the MRTD Test sequence : Standard Inspection Procedure (SIP) altstep a_standardInspectionProcedure() runs on MRTD { [vc_simu.securityStatus == e_noApplication] a_waitApplication(); [/*vc_simu.securityStatus == e_noApplication*/] a_waitApplication(); [vc_simu.securityStatus > e_noApplication and vc_simu.securityStatus < e_basicAccessControl] a_bac(); Loading @@ -303,7 +310,7 @@ // Start the MRTD Test sequence : Advanced Inspection Procedure (AIP) including EAC altstep a_advancedInspectionProcedure() runs on MRTD { [vc_simu.securityStatus == e_noApplication] a_waitApplication(); [/*vc_simu.securityStatus == e_noApplication*/] a_waitApplication(); [vc_simu.securityStatus > e_noApplication and vc_simu.securityStatus < e_basicAccessControl] a_bac(); Loading Loading @@ -471,8 +478,14 @@ altstep a_waitApplication () runs on MRTD { [] mrtdport.receive(mw_selectApplication) { mrtdport.send(m_responseOK); vc_simu.securityStatus := e_noSecurity; // Restore basic access keys f_readFileData(c_fileMRZ, 0, -1, vc_simu.mrz); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); mrtdport.send(m_responseOK); t_ac.start; repeat; } Loading Loading @@ -501,8 +514,10 @@ // TODO check vc_simu.rndIcc != omit v_response := f_basicAccessControl(vc_simu.challenge, v_challengeResponse); if(v_response != ''O) { mrtdport.send(m_responseRead(v_response)); vc_simu.securityStatus := e_basicAccessControl; } t_ac.start; repeat; } Loading
ePassport/ttcn/ePassport_Functions.ttcn +8 −3 Original line number Diff line number Diff line Loading @@ -418,7 +418,7 @@ v_computedMacIfd := f_cryptographicChecksum(vc_simu.kMac, v_encryptedIfd); if(not match(v_computedMacIfd, v_macIfd)) { log("CHECKSUM ERROR"); //TODO mrtdport.send(m_responseNOK(c_w1w2NoPreciseDiagnosis)); return ''O; } Loading @@ -430,7 +430,7 @@ v_receivedRndIcc := substr(v_s, c_bacNonceSize, c_bacNonceSize); v_keyIfd := substr(v_s, 2*c_bacNonceSize, c_bacKeySize); if(not match(v_receivedRndIcc, p_rndIcc)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoPreciseDiagnosis)); return ''O; } Loading Loading @@ -519,6 +519,7 @@ } log(v_dg14PrFileInfo); f_readFileData(v_dg14PrFileInfo, 0, -1, v_dg14PrivateKey); // FIXME: check read file result and send 6A80 if file not found (means bad reference) v_algo := f_computeSharedSecret(v_dg14PrivateKey, p_publicKeyPcd, v_k); // b) The session keys KMAC and KEnc derived from K for Secure Messaging. Loading Loading @@ -712,11 +713,15 @@ function f_cleanUp() runs on MRTD { // Dectivate antenna log("*** f_cleanUp: INFO: Before f_deactivateProbe() ***"); f_deactivateProbe(); log("*** f_cleanUp: INFO: After f_deactivateProbe() ***"); // unmap ports unmap(self:mgmtport, system:system_mgmtPort); log("*** f_cleanUp: INFO: mgmtport unmapped ***"); unmap(self:mrtdport, system:system_mrtdPort); log("*** f_cleanUp: INFO: mrtdport unmapped ***"); stop; Loading
ePassport/ttcn/ePassport_Values.ttcn +2 −0 Original line number Diff line number Diff line Loading @@ -28,7 +28,9 @@ module ePassport_Values { const W1W2Status c_w1w2ConditionsOfUseNotSatisfied := '6985'O; const W1W2Status c_w1w2NoCurrentEF := '6986'O; const W1W2Status c_w1w2ReferencedDataOrReferenceDataNotFound := '6A88'O; const W1W2Status c_w1w2WrongParametersP1P2 := '6B00'O; const W1W2Status c_w1w2InstructionCodeNotSupportedOrInvalid := '6D00'O; const W1W2Status c_w1w2NoPreciseDiagnosis := '6F00'O; } // end w1w2Constants Loading