Loading ePassport/ttcn/ePassport_Functions.ttcn +12 −1 Original line number Diff line number Diff line Loading @@ -223,6 +223,17 @@ return '01020304050607'O; } // end f_computeSharedSecret function f_build3DesKey(in octetstring p_keyPair) return octetstring { var octetstring v_ka, v_kb; var integer v_keyLen; v_keyLen := lengthof(p_keyPair); v_ka := substr(p_keyPair, 0, v_keyLen); v_kb := substr(p_keyPair, v_keyLen, v_keyLen); return p_keyPair & v_ka; // Ka || Kb || Ka } function f_basicAccessControl(in octetstring p_rndIcc, in octetstring p_challengeResponse) runs on MRTD return octetstring { Loading Loading @@ -258,7 +269,7 @@ v_r := p_rndIcc & v_rndIfd & v_keyIcc; // f) Compute the cryptogram E_ICC = E[K_ENC](R). v_encryptedIcc := f_encrypt(vc_simu.kEnc, v_r); v_encryptedIcc := f_encrypt(f_build3DesKey(vc_simu.kEnc), v_r); // g) Compute the checksum M_ICC = MAC[K_MAC](E_ICC). v_macIcc := f_cryptographicChecksum(vc_simu.kMac, v_encryptedIcc); Loading Loading
ePassport/ttcn/ePassport_Functions.ttcn +12 −1 Original line number Diff line number Diff line Loading @@ -223,6 +223,17 @@ return '01020304050607'O; } // end f_computeSharedSecret function f_build3DesKey(in octetstring p_keyPair) return octetstring { var octetstring v_ka, v_kb; var integer v_keyLen; v_keyLen := lengthof(p_keyPair); v_ka := substr(p_keyPair, 0, v_keyLen); v_kb := substr(p_keyPair, v_keyLen, v_keyLen); return p_keyPair & v_ka; // Ka || Kb || Ka } function f_basicAccessControl(in octetstring p_rndIcc, in octetstring p_challengeResponse) runs on MRTD return octetstring { Loading Loading @@ -258,7 +269,7 @@ v_r := p_rndIcc & v_rndIfd & v_keyIcc; // f) Compute the cryptogram E_ICC = E[K_ENC](R). v_encryptedIcc := f_encrypt(vc_simu.kEnc, v_r); v_encryptedIcc := f_encrypt(f_build3DesKey(vc_simu.kEnc), v_r); // g) Compute the checksum M_ICC = MAC[K_MAC](E_ICC). v_macIcc := f_cryptographicChecksum(vc_simu.kMac, v_encryptedIcc); Loading