Loading ePassport/ttcn/ePassport_Altsteps.ttcn +5 −8 Original line number Original line Diff line number Diff line Loading @@ -219,7 +219,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readCommand.class); v_logicalChannel := f_getLogicalChannel(v_readCommand.class); if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -362,6 +361,7 @@ var CommandManageSecurityEnvironment v_command; var CommandManageSecurityEnvironment v_command; var octetstring v_publicKeyPcd; var octetstring v_publicKeyPcd; var octetstring v_keyReference := ''O; var octetstring v_keyReference := ''O; var W1W2Status v_chipAuthenticationResult; [] mrtdport.receive(mw_mseSetKAT_chipAuthentication) -> value v_command { [] mrtdport.receive(mw_mseSetKAT_chipAuthentication) -> value v_command { v_publicKeyPcd := v_command.payload v_publicKeyPcd := v_command.payload Loading @@ -371,14 +371,15 @@ if(ispresent(v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey)) { if(ispresent(v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey)) { v_keyReference := v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey.tlvValue; v_keyReference := v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey.tlvValue; } } if(f_chipAuthentication(v_publicKeyPcd, v_keyReference)) { v_chipAuthenticationResult := f_chipAuthentication(v_publicKeyPcd, v_keyReference); if(v_chipAuthenticationResult == c_w1w2NormalProcessing) { mrtdport.send(m_responseOK); mrtdport.send(m_responseOK); vc_simu.securityStatus := e_chipAuthenticated; vc_simu.securityStatus := e_chipAuthenticated; f_setKeysForSecureMessaging(vc_simu.kEnc & vc_simu.kMac); f_setKeysForSecureMessaging(vc_simu.kEnc & vc_simu.kMac); f_setInitialSscForMessageAuthentication(c_8ZeroBytes); f_setInitialSscForMessageAuthentication(c_8ZeroBytes); } } else { else { mrtdport.send(m_responseNOK(c_w1w2SecurityRelatedIssues)); mrtdport.send(m_responseNOK(v_chipAuthenticationResult)); } } t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -561,7 +562,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readCommand.class); v_logicalChannel := f_getLogicalChannel(v_readCommand.class); if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -617,7 +617,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -680,7 +679,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readCommand.class); v_logicalChannel := f_getLogicalChannel(v_readCommand.class); if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -745,7 +743,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading ePassport/ttcn/ePassport_Functions.ttcn +26 −19 Original line number Original line Diff line number Diff line Loading @@ -504,7 +504,7 @@ function f_chipAuthentication(in octetstring p_publicKeyPcd, in octetstring p_keyReference) function f_chipAuthentication(in octetstring p_publicKeyPcd, in octetstring p_keyReference) runs on MRTD runs on MRTD return boolean { return W1W2Status { var octetstring v_k := ''O; var octetstring v_k := ''O; var octetstring v_h; var octetstring v_h; Loading @@ -520,13 +520,14 @@ v_dg14PrFileInfo.filename := v_dg14PrFileInfo.filename & "." & oct2str(p_keyReference); v_dg14PrFileInfo.filename := v_dg14PrFileInfo.filename & "." & oct2str(p_keyReference); } } log(v_dg14PrFileInfo); log(v_dg14PrFileInfo); f_readFileData(v_dg14PrFileInfo, 0, -1, v_dg14PrivateKey); if(f_readFileData(v_dg14PrFileInfo, 0, -1, v_dg14PrivateKey) == c_w1w2FileOrApplicationNotFound) { // FIXME: check read file result and send 6A80 if file not found (means bad reference) return c_w1w2ReferencedDataOrReferenceDataNotFound; } v_algo := f_computeSharedSecret(v_dg14PrivateKey, p_publicKeyPcd, v_k); v_algo := f_computeSharedSecret(v_dg14PrivateKey, p_publicKeyPcd, v_k); if(v_algo == e_invalid) { if(v_algo == e_invalid) { log("**** f_chipAuthentication: ERROR: Invalid key agreement algorithm ****"); log("**** f_chipAuthentication: ERROR: Invalid key agreement algorithm ****"); return false; return c_w1w2SecurityRelatedIssues; } } // b) The session keys KMAC and KEnc derived from K for Secure Messaging. // b) The session keys KMAC and KEnc derived from K for Secure Messaging. Loading @@ -545,7 +546,7 @@ vc_simu.isDhPublicKeyHash := f_extractXcoordinateFromEcPublicKey(p_publicKeyPcd); vc_simu.isDhPublicKeyHash := f_extractXcoordinateFromEcPublicKey(p_publicKeyPcd); } } return true; return c_w1w2NormalProcessing; } // end f_chipAuthentication } // end f_chipAuthentication Loading Loading @@ -624,6 +625,17 @@ return v_chrs; return v_chrs; } } function f_extractMrzFromDg1(in octetstring p_dg1) return octetstring { var integer i; var integer v_start := lengthof(p_dg1) - 88; var octetstring v_mrz := ''O; for(i:=v_start; i < 88 + v_start; i:=i+1) { v_mrz := v_mrz & p_dg1[i]; } return v_mrz; } } // end fileFunctions } // end fileFunctions Loading @@ -647,16 +659,19 @@ var octetstring v_csvCertRefIds; var octetstring v_csvCertRefIds; var CvCertificate v_cvcaCvCertificate; var CvCertificate v_cvcaCvCertificate; var integer v_decodeResult; var integer v_decodeResult; var octetstring v_dg1 := ''O; // Load filesystem // Load filesystem f_loadPassportConfiguration(p_configurationId); f_loadPassportConfiguration(p_configurationId); // Prepare basic access keys // Prepare basic access keys // FIXME: Read DG1 instead of optical MRZ // FIXME: Read DG1 instead of optical MRZ f_readFileData(c_fileMRZ, 0, -1, vc_simu.mrz); f_readFileData(c_fileDG1, 0, -1, v_dg1); vc_simu.mrz := f_extractMrzFromDg1(v_dg1); log("DG1 MRZ: ", oct2char(vc_simu.mrz)); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(vc_simu.mrz); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(vc_simu.mrz); log("documentNumber: ", oct2char(vc_simu.documentNumber)); vc_simu.securityStatus := e_noApplication; vc_simu.securityStatus := e_noApplication; vc_simu.passportProtection := e_bac; vc_simu.passportProtection := e_bac; vc_simu.activeAuthenticationPerformed := false; vc_simu.activeAuthenticationPerformed := false; Loading Loading @@ -685,6 +700,8 @@ log("**** f_initializeMRTD: WARNING: " & c_fileCVCA.filename & " is empty ****"); log("**** f_initializeMRTD: WARNING: " & c_fileCVCA.filename & " is empty ****"); } } f_readFileData(c_fileMRZ, 0, -1, vc_simu.opticalMrz); // FIXME read c_fileCertRefIds // FIXME read c_fileCertRefIds f_readFileData(c_fileCertRefIds, 0, -1, v_csvCertRefIds); f_readFileData(c_fileCertRefIds, 0, -1, v_csvCertRefIds); vc_simu.aisCertRefIds := f_parseCertRefIds(v_csvCertRefIds); vc_simu.aisCertRefIds := f_parseCertRefIds(v_csvCertRefIds); Loading @@ -699,8 +716,8 @@ //function for initializing the system and start the ePassport procedure //function for initializing the system and start the ePassport procedure function f_initializeIS(in charstring p_specialOperatorMessage) runs on MRTD { function f_initializeIS(in charstring p_specialOperatorMessage) runs on MRTD { var charstring v_opticalMrzLine1 := oct2char(substr(vc_simu.mrz, 0, lengthof(vc_simu.mrz)/2)); var charstring v_opticalMrzLine1 := oct2char(substr(vc_simu.opticalMrz, 0, lengthof(vc_simu.opticalMrz)/2)); var charstring v_opticalMrzLine2 := oct2char(substr(vc_simu.mrz, lengthof(vc_simu.mrz)/2, lengthof(vc_simu.mrz)/2)); var charstring v_opticalMrzLine2 := oct2char(substr(vc_simu.opticalMrz, lengthof(vc_simu.opticalMrz)/2, lengthof(vc_simu.opticalMrz)/2)); // Activate antenna // Activate antenna f_activateProbe(); f_activateProbe(); Loading Loading @@ -748,16 +765,6 @@ } // end postambleFunctions } // end postambleFunctions function f_getCertificate(in octetstring p_data) return octetstring { // TODO: refine... return ''O; } // end f_getCertificate function f_getSignature(in octetstring p_data) return octetstring { // TODO: refine... return ''O; } // end f_getCertificate group simuParamsFunctions { group simuParamsFunctions { function f_pushFailResult(in AisFailureClass p_resultId) runs on MRTD { function f_pushFailResult(in AisFailureClass p_resultId) runs on MRTD { Loading ePassport/ttcn/ePassport_TestSystem.ttcn +1 −0 Original line number Original line Diff line number Diff line Loading @@ -63,6 +63,7 @@ module ePassport_TestSystem { Chr at optional, Chr at optional, octetstring challenge optional, octetstring challenge optional, octetstring mrz optional, octetstring mrz optional, octetstring opticalMrz optional, octetstring documentNumber optional, octetstring documentNumber optional, octetstring isDhPublicKeyHash optional, octetstring isDhPublicKeyHash optional, Loading ePassport/ttcn/ePassport_Values.ttcn +1 −0 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,7 @@ module ePassport_Values { const W1W2Status c_w1w2SecurityStatusNotSatisfied := '6982'O; const W1W2Status c_w1w2SecurityStatusNotSatisfied := '6982'O; const W1W2Status c_w1w2ConditionsOfUseNotSatisfied := '6985'O; const W1W2Status c_w1w2ConditionsOfUseNotSatisfied := '6985'O; const W1W2Status c_w1w2NoCurrentEF := '6986'O; const W1W2Status c_w1w2NoCurrentEF := '6986'O; const W1W2Status c_w1w2FileOrApplicationNotFound := '6A82'O; const W1W2Status c_w1w2ReferencedDataOrReferenceDataNotFound := '6A88'O; const W1W2Status c_w1w2ReferencedDataOrReferenceDataNotFound := '6A88'O; const W1W2Status c_w1w2WrongParametersP1P2 := '6B00'O; const W1W2Status c_w1w2WrongParametersP1P2 := '6B00'O; const W1W2Status c_w1w2InstructionCodeNotSupportedOrInvalid := '6D00'O; const W1W2Status c_w1w2InstructionCodeNotSupportedOrInvalid := '6D00'O; Loading Loading
ePassport/ttcn/ePassport_Altsteps.ttcn +5 −8 Original line number Original line Diff line number Diff line Loading @@ -219,7 +219,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readCommand.class); v_logicalChannel := f_getLogicalChannel(v_readCommand.class); if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -362,6 +361,7 @@ var CommandManageSecurityEnvironment v_command; var CommandManageSecurityEnvironment v_command; var octetstring v_publicKeyPcd; var octetstring v_publicKeyPcd; var octetstring v_keyReference := ''O; var octetstring v_keyReference := ''O; var W1W2Status v_chipAuthenticationResult; [] mrtdport.receive(mw_mseSetKAT_chipAuthentication) -> value v_command { [] mrtdport.receive(mw_mseSetKAT_chipAuthentication) -> value v_command { v_publicKeyPcd := v_command.payload v_publicKeyPcd := v_command.payload Loading @@ -371,14 +371,15 @@ if(ispresent(v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey)) { if(ispresent(v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey)) { v_keyReference := v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey.tlvValue; v_keyReference := v_command.payload.manageSecurityEnvironmentData.crtKAT.crtReferenceOfSessionOrPrivateKey.tlvValue; } } if(f_chipAuthentication(v_publicKeyPcd, v_keyReference)) { v_chipAuthenticationResult := f_chipAuthentication(v_publicKeyPcd, v_keyReference); if(v_chipAuthenticationResult == c_w1w2NormalProcessing) { mrtdport.send(m_responseOK); mrtdport.send(m_responseOK); vc_simu.securityStatus := e_chipAuthenticated; vc_simu.securityStatus := e_chipAuthenticated; f_setKeysForSecureMessaging(vc_simu.kEnc & vc_simu.kMac); f_setKeysForSecureMessaging(vc_simu.kEnc & vc_simu.kMac); f_setInitialSscForMessageAuthentication(c_8ZeroBytes); f_setInitialSscForMessageAuthentication(c_8ZeroBytes); } } else { else { mrtdport.send(m_responseNOK(c_w1w2SecurityRelatedIssues)); mrtdport.send(m_responseNOK(v_chipAuthenticationResult)); } } t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -561,7 +562,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readCommand.class); v_logicalChannel := f_getLogicalChannel(v_readCommand.class); if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { if(vc_simu.currentFiles[v_logicalChannel] == c_noFileInfo) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -617,7 +617,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -680,7 +679,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readCommand.class); v_logicalChannel := f_getLogicalChannel(v_readCommand.class); if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading Loading @@ -745,7 +743,6 @@ // Check current file // Check current file v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); v_logicalChannel := f_getLogicalChannel(v_readB1Command.class); if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { if(match(vc_simu.currentFiles[v_logicalChannel], c_noFileInfo)) { //TODO mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); mrtdport.send(m_responseNOK(c_w1w2NoCurrentEF)); t_ac.start; t_ac.start; repeat; repeat; Loading
ePassport/ttcn/ePassport_Functions.ttcn +26 −19 Original line number Original line Diff line number Diff line Loading @@ -504,7 +504,7 @@ function f_chipAuthentication(in octetstring p_publicKeyPcd, in octetstring p_keyReference) function f_chipAuthentication(in octetstring p_publicKeyPcd, in octetstring p_keyReference) runs on MRTD runs on MRTD return boolean { return W1W2Status { var octetstring v_k := ''O; var octetstring v_k := ''O; var octetstring v_h; var octetstring v_h; Loading @@ -520,13 +520,14 @@ v_dg14PrFileInfo.filename := v_dg14PrFileInfo.filename & "." & oct2str(p_keyReference); v_dg14PrFileInfo.filename := v_dg14PrFileInfo.filename & "." & oct2str(p_keyReference); } } log(v_dg14PrFileInfo); log(v_dg14PrFileInfo); f_readFileData(v_dg14PrFileInfo, 0, -1, v_dg14PrivateKey); if(f_readFileData(v_dg14PrFileInfo, 0, -1, v_dg14PrivateKey) == c_w1w2FileOrApplicationNotFound) { // FIXME: check read file result and send 6A80 if file not found (means bad reference) return c_w1w2ReferencedDataOrReferenceDataNotFound; } v_algo := f_computeSharedSecret(v_dg14PrivateKey, p_publicKeyPcd, v_k); v_algo := f_computeSharedSecret(v_dg14PrivateKey, p_publicKeyPcd, v_k); if(v_algo == e_invalid) { if(v_algo == e_invalid) { log("**** f_chipAuthentication: ERROR: Invalid key agreement algorithm ****"); log("**** f_chipAuthentication: ERROR: Invalid key agreement algorithm ****"); return false; return c_w1w2SecurityRelatedIssues; } } // b) The session keys KMAC and KEnc derived from K for Secure Messaging. // b) The session keys KMAC and KEnc derived from K for Secure Messaging. Loading @@ -545,7 +546,7 @@ vc_simu.isDhPublicKeyHash := f_extractXcoordinateFromEcPublicKey(p_publicKeyPcd); vc_simu.isDhPublicKeyHash := f_extractXcoordinateFromEcPublicKey(p_publicKeyPcd); } } return true; return c_w1w2NormalProcessing; } // end f_chipAuthentication } // end f_chipAuthentication Loading Loading @@ -624,6 +625,17 @@ return v_chrs; return v_chrs; } } function f_extractMrzFromDg1(in octetstring p_dg1) return octetstring { var integer i; var integer v_start := lengthof(p_dg1) - 88; var octetstring v_mrz := ''O; for(i:=v_start; i < 88 + v_start; i:=i+1) { v_mrz := v_mrz & p_dg1[i]; } return v_mrz; } } // end fileFunctions } // end fileFunctions Loading @@ -647,16 +659,19 @@ var octetstring v_csvCertRefIds; var octetstring v_csvCertRefIds; var CvCertificate v_cvcaCvCertificate; var CvCertificate v_cvcaCvCertificate; var integer v_decodeResult; var integer v_decodeResult; var octetstring v_dg1 := ''O; // Load filesystem // Load filesystem f_loadPassportConfiguration(p_configurationId); f_loadPassportConfiguration(p_configurationId); // Prepare basic access keys // Prepare basic access keys // FIXME: Read DG1 instead of optical MRZ // FIXME: Read DG1 instead of optical MRZ f_readFileData(c_fileMRZ, 0, -1, vc_simu.mrz); f_readFileData(c_fileDG1, 0, -1, v_dg1); vc_simu.mrz := f_extractMrzFromDg1(v_dg1); log("DG1 MRZ: ", oct2char(vc_simu.mrz)); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(vc_simu.mrz); vc_simu.documentNumber := f_extractDocumentNumberFromMrz(vc_simu.mrz); log("documentNumber: ", oct2char(vc_simu.documentNumber)); vc_simu.securityStatus := e_noApplication; vc_simu.securityStatus := e_noApplication; vc_simu.passportProtection := e_bac; vc_simu.passportProtection := e_bac; vc_simu.activeAuthenticationPerformed := false; vc_simu.activeAuthenticationPerformed := false; Loading Loading @@ -685,6 +700,8 @@ log("**** f_initializeMRTD: WARNING: " & c_fileCVCA.filename & " is empty ****"); log("**** f_initializeMRTD: WARNING: " & c_fileCVCA.filename & " is empty ****"); } } f_readFileData(c_fileMRZ, 0, -1, vc_simu.opticalMrz); // FIXME read c_fileCertRefIds // FIXME read c_fileCertRefIds f_readFileData(c_fileCertRefIds, 0, -1, v_csvCertRefIds); f_readFileData(c_fileCertRefIds, 0, -1, v_csvCertRefIds); vc_simu.aisCertRefIds := f_parseCertRefIds(v_csvCertRefIds); vc_simu.aisCertRefIds := f_parseCertRefIds(v_csvCertRefIds); Loading @@ -699,8 +716,8 @@ //function for initializing the system and start the ePassport procedure //function for initializing the system and start the ePassport procedure function f_initializeIS(in charstring p_specialOperatorMessage) runs on MRTD { function f_initializeIS(in charstring p_specialOperatorMessage) runs on MRTD { var charstring v_opticalMrzLine1 := oct2char(substr(vc_simu.mrz, 0, lengthof(vc_simu.mrz)/2)); var charstring v_opticalMrzLine1 := oct2char(substr(vc_simu.opticalMrz, 0, lengthof(vc_simu.opticalMrz)/2)); var charstring v_opticalMrzLine2 := oct2char(substr(vc_simu.mrz, lengthof(vc_simu.mrz)/2, lengthof(vc_simu.mrz)/2)); var charstring v_opticalMrzLine2 := oct2char(substr(vc_simu.opticalMrz, lengthof(vc_simu.opticalMrz)/2, lengthof(vc_simu.opticalMrz)/2)); // Activate antenna // Activate antenna f_activateProbe(); f_activateProbe(); Loading Loading @@ -748,16 +765,6 @@ } // end postambleFunctions } // end postambleFunctions function f_getCertificate(in octetstring p_data) return octetstring { // TODO: refine... return ''O; } // end f_getCertificate function f_getSignature(in octetstring p_data) return octetstring { // TODO: refine... return ''O; } // end f_getCertificate group simuParamsFunctions { group simuParamsFunctions { function f_pushFailResult(in AisFailureClass p_resultId) runs on MRTD { function f_pushFailResult(in AisFailureClass p_resultId) runs on MRTD { Loading
ePassport/ttcn/ePassport_TestSystem.ttcn +1 −0 Original line number Original line Diff line number Diff line Loading @@ -63,6 +63,7 @@ module ePassport_TestSystem { Chr at optional, Chr at optional, octetstring challenge optional, octetstring challenge optional, octetstring mrz optional, octetstring mrz optional, octetstring opticalMrz optional, octetstring documentNumber optional, octetstring documentNumber optional, octetstring isDhPublicKeyHash optional, octetstring isDhPublicKeyHash optional, Loading
ePassport/ttcn/ePassport_Values.ttcn +1 −0 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,7 @@ module ePassport_Values { const W1W2Status c_w1w2SecurityStatusNotSatisfied := '6982'O; const W1W2Status c_w1w2SecurityStatusNotSatisfied := '6982'O; const W1W2Status c_w1w2ConditionsOfUseNotSatisfied := '6985'O; const W1W2Status c_w1w2ConditionsOfUseNotSatisfied := '6985'O; const W1W2Status c_w1w2NoCurrentEF := '6986'O; const W1W2Status c_w1w2NoCurrentEF := '6986'O; const W1W2Status c_w1w2FileOrApplicationNotFound := '6A82'O; const W1W2Status c_w1w2ReferencedDataOrReferenceDataNotFound := '6A88'O; const W1W2Status c_w1w2ReferencedDataOrReferenceDataNotFound := '6A88'O; const W1W2Status c_w1w2WrongParametersP1P2 := '6B00'O; const W1W2Status c_w1w2WrongParametersP1P2 := '6B00'O; const W1W2Status c_w1w2InstructionCodeNotSupportedOrInvalid := '6D00'O; const W1W2Status c_w1w2InstructionCodeNotSupportedOrInvalid := '6D00'O; Loading