Exemplo n.º 1
0
function loadElectionModules($httpRawPostData, $electionIdPlace)
{
    // getpermission: $reqdecoded['electionId']
    global $dbInfos, $numVerifyBallots, $numSignBallots, $pServerKeys, $serverkey, $numAllBallots, $numPSigsRequiered;
    $dbElections = new DbElections($dbInfos);
    $reqdecoded = json_decode($httpRawPostData, true);
    if ($reqdecoded == null) {
        WrongRequestException::throwException(7040, 'Data in JSON format expected', 'got: ' . $HTTP_RAW_POST_DATA);
    }
    //	if (! isset($electionIdPlace($reqdecoded))) 	WrongRequestException::throwException(7010, 'Election id missing in client request'	, $httpRawPostData);
    if (!is_string($electionIdPlace($reqdecoded))) {
        WrongRequestException::throwException(7050, 'Election id must be a string', 'got: ' . print_r($reqdecoded['electionId'], true));
    }
    // load election config from database by election id
    $completeElectionId = $electionIdPlace($reqdecoded);
    $splittedElectionId = json_decode($completeElectionId);
    if ($splittedElectionId == null) {
        $mainElectionId = $completeElectionId;
    } else {
        $mainElectionId = $splittedElectionId->mainElectionId;
    }
    $elconfig = $dbElections->loadElectionConfigFromElectionId($mainElectionId);
    if (count($elconfig) < 1) {
        WrongRequestException::throwException(7000, 'Election id not found in server database', "ElectionId you sent: " . $reqdecoded['electionId']);
    }
    if (!isset($elconfig['auth'])) {
        WrongRequestException::throwException(7020, 'element auth not found in election config', "ElectionId you sent: " . $reqdecoded['electionId']);
    }
    $auth = LoadModules::laodAuthModule($elconfig['auth']);
    if (isset($elconfig['authConfig'])) {
        $auth->setup($elconfig["electionId"], $elconfig['authConfig']);
    }
    // TODO think about: should Election be any Election or just the blinding module?
    $blinder = LoadModules::loadBlinder($elconfig['blinding'], $elconfig, $auth);
    $blinder->tally = LoadModules::loadTally($elconfig['tally'], $blinder);
    // TODO use a different private key for tallying server
    $blinder->tally->setup($elconfig);
    return $blinder;
}
Exemplo n.º 2
0
        $token = '';
        if (isset($_GET['token'])) {
            $token = '&token=' . $_GET['token'];
        }
        $showResult = '';
        if (isset($_GET['showresult'])) {
            $showResult = '&showresult';
        }
        header('Location: ' . $webclientUrlbase . '/index.html?confighash=' . $hash . $token . $showResult, true, 301);
        die;
    }
}
if (isset($hash)) {
    // TODO verify sigs
    try {
        $db = new DbElections($dbInfos);
        $result = $db->loadElectionConfigFromHash($hash);
        if (count($result) == 0) {
            $result = WrongRequestException::throwException(4000, 'Election not found', $hash);
        }
        $result['cmd'] = 'loadElectionConfig';
    } catch (ElectionServerException $e) {
        $result = $e->makeServerAnswer();
    }
    /*
     $result = array(
     		'electionId' => $electionId,
     		'auth'       => 'userPassw',
     		'blinding'   => 'blindedVoter',
     		'ballot'     => array('opt1' => 'Europäische Zentralbank soll künftig direkt Kredit an Staaten geben', 'opt2' => 'Europäische Zentralbank soll weiterhin keine Kredite an Staaten geben dürfen'),
     		'tally'      => 'publishOnly'
Exemplo n.º 3
0
 * error starts at 2100
 */
if (isset($HTTP_RAW_POST_DATA)) {
    $electionconfigStr = $HTTP_RAW_POST_DATA;
}
if (isset($electionconfigStr)) {
    $newconfig = array();
    try {
        $electionconfig = json_decode($electionconfigStr, true);
        // TODO verify auth
        if (isset($electionconfig) && isset($electionconfig['electionId']) && is_string($electionconfig['electionId']) && isset($electionconfig['auth']) && is_string($electionconfig['auth']) && isset($electionconfig['authData'])) {
            $electionId = $electionconfig['electionId'];
        } else {
            WrongRequestException::throwException(2100, 'Missing election Id or authorisation module name or it is not a string or auth data ist missing', "complete request received:\n" . $electionconfigStr);
        }
        $db = new DbElections($dbInfos);
        $alreadyGiven = $db->loadElectionConfigFromElectionId($electionId);
        if (count($alreadyGiven) > 0) {
            WrongRequestException::throwException(2120, 'This election id is already used', $electionId);
        }
        // create public election config and secret election config
        $newconfig['electionId'] = $electionId;
        if (isset($electionconfig['electionTitle'])) {
            $newconfig["electionTitle"] = $electionconfig['electionTitle'];
        } else {
            $newconfig["electionTitle"] = $electionId;
        }
        //		$authm = LoadModules::laodAuthModule($electionconfig['auth']);
        global $dbInfos;
        $authm = new SharedAuth($dbInfos);
        $authTmp = $authm->handleNewElectionReq($electionId, $electionconfig);