Commit f269061e authored by berge's avatar berge
Browse files

Added external functions

parent 74dc7e50
Loading
Loading
Loading
Loading
+28 −4
Original line number Diff line number Diff line
@@ -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 {
@@ -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 {
@@ -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 
@@ -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
    
    
+7 −0
Original line number Diff line number Diff line
@@ -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 {
+1 −0
Original line number Diff line number Diff line
@@ -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};