Commit 78d82ea3 authored by berge's avatar berge
Browse files

Fixed issue related to Trust points and EF.CVCA

parent 25037d86
Loading
Loading
Loading
Loading
+45 −17
Original line number Diff line number Diff line
@@ -586,6 +586,31 @@
            fx_createDg(p_fileInfo.filename, p_data);
        } // end f_createDg
		
		function f_decodeCvca(in octetstring p_cvca) return ChrList {
		    
		    var ChrList v_chrs := {};
		    var integer v_length;
		    var integer v_pos := 1;
            var integer i;
            var Chr v_chr;
            
            log(p_cvca);
            
            while(v_pos < lengthof(p_cvca) and p_cvca[v_pos] != '00'O) {
                v_chr := "";
    		    v_length := oct2int(p_cvca[v_pos]);
    		    log(v_length);
                for(i:=v_pos+1; i < (v_pos + v_length + 1); i:=i+1) {
                    v_chr := v_chr & oct2char(p_cvca[i]);
                }    		    
    		    v_chrs[sizeof(v_chrs)] := v_chr;
    		    v_pos := i;
            }
		    
		    log(v_chrs);
		    return v_chrs;		    
		}
		
	} // end fileFunctions
	
	
@@ -605,6 +630,7 @@
    	function f_initializeMRTD(in charstring p_configurationId) runs on MRTD {
    		
    		var octetstring v_cvcaData;
    		var octetstring v_cvca;
    		var octetstring v_csvCertRefIds;
    		var CvCertificate v_cvcaCvCertificate;
    		var integer v_decodeResult;
@@ -617,26 +643,28 @@
    		f_deriveKeys(f_extractKseedFromMrz(vc_simu.mrz), vc_simu.kEnc, vc_simu.kMac);
    		vc_simu.documentNumber := f_extractDocumentNumberFromMrz(vc_simu.mrz);

			// FIXME: Force initialization of vc_simu.securityStatus - Mandatory because it's used in altstep
			vc_simu.securityStatus := e_noApplication;
			// FIXME: Force initialization of vc_simu.securityStatus
			vc_simu.passportProtection := e_bac;
			
			vc_simu.activeAuthenticationPerformed := false;
			    		
			// Read trusted CHRs from EF.CVCA
			f_readFileData(c_fileCVCA, 0, -1, v_cvca);
			vc_simu.trustedCAs := f_decodeCvca(v_cvca); 

            // FIXME: only in case of terminal authentication
			// FIXME: read from CVCA
			f_readFileData(c_fileCvcaCert01, 0, -1, v_cvcaData);
            f_readFileData(c_fileCvcaCert, 0, -1, v_cvcaData);
            if(v_cvcaData != ''O) {
                v_decodeResult := decvalue(oct2bit(v_cvcaData), v_cvcaCvCertificate);
                // FIXME check v_decodeREsiult + ispresent 
                // TODO: check that trusted points correspond to trustedCAs => warning.
                f_addTrustedCertificate(
                    oct2char(v_cvcaCvCertificate.tlvValue.cvCertificateBody.tlvValue.cvCertificateHolderReference.tlvValue), 
                    v_cvcaCvCertificate.tlvValue.cvCertificateBody.tlvValue.cvPublicKey.tlvValue); 
                log("trusted certificate added: ", oct2char(v_cvcaCvCertificate.tlvValue.cvCertificateBody.tlvValue.cvCertificateHolderReference.tlvValue)) ;        
            }
            else {
                log("certificate not loaded");
            }
			
			// FIXME read from EF.CVCA
			vc_simu.trustedCAs := {"GO_CVCA_ECC192", "DETESTCVCA00001"};

			// FIXME read c_fileCertRefIds
			f_readFileData(c_fileCertRefIds, 0, -1, v_csvCertRefIds);
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,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_fileCvcaCert01 := {filename := "CVCA.cert.01", shortFileId := '00'O, longFileId := '0000'O};		
		const FileInfo c_fileCvcaCert := {filename := "CVCA.Cert", shortFileId := '00'O, longFileId := '0000'O};		
		const FileInfo c_filePrAA := {filename := "DG15.sk", shortFileId := '00'O, longFileId := '0000'O};
		const FileInfo c_filePrCA := {filename := "DG14.sk", shortFileId := '00'O, longFileId := '0000'O};
		const FileInfo c_fileCertRefIds := {filename := "CertificateReferenceIDs", shortFileId := '00'O, longFileId := '0000'O};