Loading ePassport/ttcn/ePassport_Functions.ttcn +28 −4 Original line number Diff line number Diff line Loading @@ -134,6 +134,23 @@ */ external function fx_digest(in HashAlgorithm p_algorithm, in octetstring p_data) return octetstring; /** * @desc Compute a Diffie-Hellman shared secret * @param p_privateKeyPicc Private key of peer A * @param p_publicKeyPcd Public key of peer B * @return Diffie-Hellman shared secret */ external function fx_computeDhSharedSecret(in octetstring p_privateKeyPicc, in octetstring p_publicKeyPcd) return octetstring; /** * @desc Calculate the signature of a data block * @param p_algorithm Algorithm to use for computing signature (DSA, ECDSA) * @param p_key Key used for signature * @param p_data Data block to be signed * @return Signature of p_data */ external function fx_computeSignature(in SignatureAlgorithm p_algorithm, in octetstring p_key, in octetstring p_data) return octetstring; } // end securityExternalFunctions group fileExternalFunctions { Loading Loading @@ -251,8 +268,7 @@ in octetstring p_privateKeyPicc, in octetstring p_publicKeyPcd) return octetstring { // FIXME return '01020304050607'O; return fx_computeDhSharedSecret(p_privateKeyPicc, p_publicKeyPcd); } // end f_computeSharedSecret function f_build3DesKey(in octetstring p_keyPair) return octetstring { Loading Loading @@ -340,6 +356,10 @@ var octetstring v_trailer; var integer v_m1Length; // TODO: determine algorithm used by DG15 // if RSA get modulus.length // if (EC)DSA ??? // create trailer (SHA1) v_trailer := 'BC'O; // FIXME Loading Loading @@ -440,9 +460,13 @@ // Load filesystem f_loadPassportConfiguration(p_configurationId); // Prepare security elements // Prepare basic access keys f_readFileData(c_fileMRZ, 0, -1, v_mrz); f_deriveKeys(f_extractKseedFromMrz(v_mrz), vc_simu.kEnc, vc_simu.kMac); // Prepare Active Authentication private key f_readFileData(c_filePrAA, 0, -1, vc_simu.aaPrivateKey); } // end f_initializeMRTD Loading ePassport/ttcn/ePassport_Types.ttcn +7 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,13 @@ module ePassport_Types { e_ecdsa(2) } type enumerated SignatureAlgorithm { e_dsaAndSha1, e_ecdsaAndSha1, e_ecdsaAndSha224, e_ecdsaAndSha256 } }//end enumeratedTypes group simuParamsGroup { Loading ePassport/ttcn/ePassport_Values.ttcn +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ module ePassport_Values { const FileInfo c_noFileInfo := {filename := "", shortFileId := '00'O, longFileId := '0000'O}; const FileInfo c_fileMRZ := {filename := "MRZ", shortFileId := '00'O, longFileId := '0000'O}; const FileInfo c_filePrAA := {filename := "PrAA", shortFileId := '00'O, longFileId := '0000'O}; const FileInfo c_fileDG1 := {filename := "EF.DG1", shortFileId := '01'O, longFileId := '0101'O}; const FileInfo c_fileDG2 := {filename := "EF.DG2", shortFileId := '02'O, longFileId := '0102'O}; const FileInfo c_fileDG3 := {filename := "EF.DG3", shortFileId := '03'O, longFileId := '0103'O}; Loading Loading
ePassport/ttcn/ePassport_Functions.ttcn +28 −4 Original line number Diff line number Diff line Loading @@ -134,6 +134,23 @@ */ external function fx_digest(in HashAlgorithm p_algorithm, in octetstring p_data) return octetstring; /** * @desc Compute a Diffie-Hellman shared secret * @param p_privateKeyPicc Private key of peer A * @param p_publicKeyPcd Public key of peer B * @return Diffie-Hellman shared secret */ external function fx_computeDhSharedSecret(in octetstring p_privateKeyPicc, in octetstring p_publicKeyPcd) return octetstring; /** * @desc Calculate the signature of a data block * @param p_algorithm Algorithm to use for computing signature (DSA, ECDSA) * @param p_key Key used for signature * @param p_data Data block to be signed * @return Signature of p_data */ external function fx_computeSignature(in SignatureAlgorithm p_algorithm, in octetstring p_key, in octetstring p_data) return octetstring; } // end securityExternalFunctions group fileExternalFunctions { Loading Loading @@ -251,8 +268,7 @@ in octetstring p_privateKeyPicc, in octetstring p_publicKeyPcd) return octetstring { // FIXME return '01020304050607'O; return fx_computeDhSharedSecret(p_privateKeyPicc, p_publicKeyPcd); } // end f_computeSharedSecret function f_build3DesKey(in octetstring p_keyPair) return octetstring { Loading Loading @@ -340,6 +356,10 @@ var octetstring v_trailer; var integer v_m1Length; // TODO: determine algorithm used by DG15 // if RSA get modulus.length // if (EC)DSA ??? // create trailer (SHA1) v_trailer := 'BC'O; // FIXME Loading Loading @@ -440,9 +460,13 @@ // Load filesystem f_loadPassportConfiguration(p_configurationId); // Prepare security elements // Prepare basic access keys f_readFileData(c_fileMRZ, 0, -1, v_mrz); f_deriveKeys(f_extractKseedFromMrz(v_mrz), vc_simu.kEnc, vc_simu.kMac); // Prepare Active Authentication private key f_readFileData(c_filePrAA, 0, -1, vc_simu.aaPrivateKey); } // end f_initializeMRTD Loading
ePassport/ttcn/ePassport_Types.ttcn +7 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,13 @@ module ePassport_Types { e_ecdsa(2) } type enumerated SignatureAlgorithm { e_dsaAndSha1, e_ecdsaAndSha1, e_ecdsaAndSha224, e_ecdsaAndSha256 } }//end enumeratedTypes group simuParamsGroup { Loading
ePassport/ttcn/ePassport_Values.ttcn +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ module ePassport_Values { const FileInfo c_noFileInfo := {filename := "", shortFileId := '00'O, longFileId := '0000'O}; const FileInfo c_fileMRZ := {filename := "MRZ", shortFileId := '00'O, longFileId := '0000'O}; const FileInfo c_filePrAA := {filename := "PrAA", shortFileId := '00'O, longFileId := '0000'O}; const FileInfo c_fileDG1 := {filename := "EF.DG1", shortFileId := '01'O, longFileId := '0101'O}; const FileInfo c_fileDG2 := {filename := "EF.DG2", shortFileId := '02'O, longFileId := '0102'O}; const FileInfo c_fileDG3 := {filename := "EF.DG3", shortFileId := '03'O, longFileId := '0103'O}; Loading