Skip to content
Snippets Groups Projects
Commit 1a6a3158 authored by Maja Górecka-Wolniewicz's avatar Maja Górecka-Wolniewicz
Browse files

handling second registered signing certificate

parent a5fea74a
No related branches found
No related tags found
No related merge requests found
......@@ -65,7 +65,7 @@ class Validator {
$fed_id = strtoupper(isset($_REQUEST['edugain'])?$_REQUEST['edugain']:$_REQUEST['fed_id']);
$fed_id = $this->edugain->getCode($fed_id);
$this->edugain->load_federations(0,$fed_id);
$this->edugain->load_federation_basic_details('data');
$this->edugain->load_federation_basic_details('all');
if (empty($this->edugain->FEDS[$fed_id])) {
$this->params['federror'] = 'No such federation in the eduGAIN database: '.$fed_id;
} else {
......@@ -75,19 +75,27 @@ class Validator {
} else {
$this->params['fedname'] = $this->edugain->FEDS[$fed_id]['name'];
$this->params['regauth'] = $this->edugain->FEDS[$fed_id]['reg_auth'];
$certificate = $this->edugain->FEDS[$fed_id]['certificate'][0];
$certificate = trim($certificate, "\n");
$certfilename = $this->params['filename']."-fromdb.crt";
if (strlen($certificate)) {
$ff = fopen($certfilename, 'w');
fputs($ff, "-----BEGIN CERTIFICATE-----\n");
for ($i=0; ; $i=$i+64) {
for ($n=0; $n<count($this->edugain->FEDS[$fed_id]['certificate']); $n++) {
$certificate = $this->edugain->FEDS[$fed_id]['certificate'][$n]['data'];
$certificate = trim($certificate, "\n");
$fnamesuffix = '';
if ($n > 0) {
$fnamesuffix = "_$n";
}
$certfilename = $this->params['filename'].$fnamesuffix."-fromdb.crt";
if (strlen($certificate)) {
$ff = fopen($certfilename, 'w');
fputs($ff, "-----BEGIN CERTIFICATE-----\n");
for ($i=0; ; $i=$i+64) {
if (substr($certificate, $i, 64) == '') break;
fputs($ff, substr($certificate, $i, 64)."\n");
}
fputs($ff, "-----END CERTIFICATE-----\n");
fclose($ff);
}
fputs($ff, "-----END CERTIFICATE-----\n");
fclose($ff);
}
}
$ff = fopen($this->params['filename'].'-certinfo.json', 'w');
fputs($ff, json_encode($this->edugain->FEDS[$fed_id]['certificate']));
}
}
$this->params['auto'] = $this->params['validate'] = $this->params['edugain'] = 1;
......@@ -318,11 +326,30 @@ class Validator {
else $fromdb = 0;
system($this->validatordir."/aggregator.py ".$params['filename']." $schres $fromdb >".$params['filename']."-aggregator.log 2>&1",$aggres);
system($this->validatordir."/mda.sh --verbose ".$params['filename'].".xml main > ".$params['filename']."-mda.log 2>&1", $res);
$certidx = 0;
$searchfor = "Unable to validate signature";
$matches = array();
$handle = @fopen($params['filename']."-mda.log", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle);
if (strpos($buffer, $searchfor) !== FALSE) {
$matches[] = $buffer;
break;
}
}
fclose($handle);
}
if (count($matches)) {
system($this->validatordir."/aggregator.py ".$params['filename']." $schres $fromdb 1 >".$params['filename']."-aggregator2.log 2>&1",$aggres);
system($this->validatordir."/mda.sh --verbose ".$params['filename']."_1.xml main > ".$params['filename']."-mda.log 2>&1", $res);
$certidx = 1;
}
system($this->validatordir."/pyff.sh ".$params['filename'].'>'.$params['filename']."-pyff.log 2>&1", $pyffres);
} else $res = $schres;
}
$args = $params['filename']." \"".$params['langsetting']."\" ".$params['validate']." ".$params['onlyone']." ".$params['xmlout']." ".$params['gobetween']." ".$params['edugain'];
$printres = shell_exec($this->validatordir."/printresults.py $args $res $schres $aggres $pyffres");
$printres = shell_exec($this->validatordir."/printresults.py $args $res $schres $aggres $pyffres $certidx");
} else
$printres = "<span class='noticeerr'>URL fetching failed ".$ret[1]."</span>";
if (!$params['gobetween']) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment