Example #1
0
    def create_actions(self):
        max_votes_per_voter = None
        if Election().get_root_reg().check(['common', 'max_votes_per_voter']):
            max_votes_per_voter = \
                Election().get_root_reg().read_integer_value(\
                    ['common'], 'max_votes_per_voter').value

        for el in self.questions:
            _hts = hts.HTS(el[0])
            voter = _hts.talletaja(self.signercode)
            dsc = ''
            try:
                dsc = Election().get_sub_reg(\
                    el[0]).read_string_value(['common'], 'description').value
            except:
                dsc = el[0]
            if voter == None:
                self.user_msg = EvMessage().get_str("POLE_LUBATUD_HAALETADA", \
                    evstrings.POLE_LUBATUD_HAALETADA) % (self.signercode, dsc)
                self.log_msg = self.user_msg
                raise HTSStoreException, evcommon.EVOTE_ERROR
            if max_votes_per_voter:
                if self._count_votes(el[0]) >= max_votes_per_voter:
                    self.user_msg = EvMessage().get_str(\
            "TEHNILINE_VIGA_MAX_HAALTE_ARV_PER_HAALETAJA_ON_ULETATUD", \
            evstrings.TEHNILINE_VIGA_MAX_HAALTE_ARV_PER_HAALETAJA_ON_ULETATUD)

                    self.log_msg = self.user_msg
                    raise HTSStoreException, evcommon.EVOTE_ERROR

            self.actions.append([_hts, voter, el[1]])
Example #2
0
    def verify_vote(self, votedata):
        import regrights
        self.user_msg = \
            EvMessage().get_str("TEHNILINE_VIGA_HAALE_VERIFITSEERIMISEL", \
            evstrings.TEHNILINE_VIGA_HAALE_VERIFITSEERIMISEL)

        conf = bdocpythonutils.BDocConfig()
        conf.load(Election().get_bdoc_conf())

        self.bdoc = bdocpythonutils.BDocContainer()
        self.bdoc.load_bytes(votedata)
        self.bdoc.validateflex()
        res = self.__check_incoming_vote(conf)

        if not res.result:
            self.log_msg = res.error
            if self.user_msg == '':
                self.user_msg = EvMessage().\
                    get_str("TEHNILINE_VIGA_HAALE_VERIFITSEERIMISEL", \
                        evstrings.TEHNILINE_VIGA_HAALE_VERIFITSEERIMISEL)

            if not res.ocsp_is_good:
                self.user_msg = EvMessage().\
                    get_str("SERTIFIKAAT_ON_TYHISTATUD_VOI_PEATATUD", \
                        evstrings.SERTIFIKAAT_ON_TYHISTATUD_VOI_PEATATUD)
                raise HTSStoreException, evcommon.EVOTE_CERT_ERROR

            raise HTSStoreException, evcommon.EVOTE_ERROR

        self.signercode = regrights.get_personal_code(res.subject)

        self.ocsp_time = res.ocsp_time
        self.signed_vote = self.bdoc.get_bytes()
Example #3
0
    def verify(self, vote_id):
        verifier = HTSVerify()
        try:
            verifier.verify_id(vote_id)
        except HTSVerifyException as e:
            return e.ret, EvMessage().get_str(\
                    "INVALID_VOTE_ID", evstrings.INVALID_VOTE_ID)

        evlog.log("Verifying vote with ID %s" % vote_id)
        try:
            return evcommon.VERIFY_OK, verifier.get_response()
        except HTSVerifyException as e:
            return e.ret, EvMessage().get_str(\
                    "TECHNICAL_ERROR_VOTE_VERIFICATION", \
                    evstrings.TECHNICAL_ERROR_VOTE_VERIFICATION)
Example #4
0
def bad_cgi_input():
    ret = evcommon.EVOTE_ERROR
    msg = EvMessage().get_str("VIGASED_SISENDPARAMEETRID", \
        evstrings.VIGASED_SISENDPARAMEETRID)
    AppLog().set_app('HTS-ALL')
    AppLog().log_error(msg)
    return __return_message(ret, msg)
Example #5
0
def store_vote(sha_in, code_in, vote_in):

    _htsd = HTSAllDispatcher()
    ret = evcommon.EVOTE_ERROR
    msg = EvMessage().get_str("TEHNILINE_VIGA_HAALE_TALLETAMISEL", \
        evstrings.TEHNILINE_VIGA_HAALE_TALLETAMISEL)

    ret_cons = _htsd.kooskolaline(sha_in)
    if ret_cons == evcommon.EVOTE_CONSISTENCY_NO:
        ret = evcommon.EVOTE_ERROR
        msg = EvMessage().get_str("HOOLDUS", evstrings.HOOLDUS)
    elif ret_cons == evcommon.EVOTE_CONSISTENCY_YES:
        AppLog().set_person(code_in)
        ret, msg = _htsd.talleta_base64(vote_in)
    else:
        ret = evcommon.EVOTE_ERROR
        msg = EvMessage().get_str("TEHNILINE_VIGA_KOOSKOLASTUSE_KONTROLLIL", \
            evstrings.TEHNILINE_VIGA_KOOSKOLASTUSE_KONTROLLIL)
    return __return_message(ret, msg)
Example #6
0
    def talleta_base64(self, data):

        try:
            decoded_vote = base64.decodestring(data)
            return self.__talleta(decoded_vote)
        except:
            evlog.log_exception()
            return evcommon.EVOTE_ERROR, \
                    EvMessage().get_str(\
                    "TEHNILINE_VIGA_HAALE_TALLETAMISEL",\
                    evstrings.TEHNILINE_VIGA_HAALE_TALLETAMISEL)
Example #7
0
def check_repeat(sha_in, code_in):
    _htsd = HTSAllDispatcher()
    ret = evcommon.EVOTE_REPEAT_ERROR
    msg = EvMessage().get_str("TEHNILINE_VIGA_KOOSKOLASTUSE_KONTROLLIL", \
        evstrings.TEHNILINE_VIGA_KOOSKOLASTUSE_KONTROLLIL)

    AppLog().set_person(code_in)
    ret_cons = _htsd.kooskolaline(sha_in)

    if ret_cons == evcommon.EVOTE_CONSISTENCY_NO:
        ret = evcommon.EVOTE_REPEAT_NOT_CONSISTENT
        msg = EvMessage().get_str("HOOLDUS", evstrings.HOOLDUS)
    elif ret_cons == evcommon.EVOTE_CONSISTENCY_YES:
        ok, ret_rep, msg_rep = _htsd.haaletanud(code_in)
        if ok:
            if ret_rep:
                ret = evcommon.EVOTE_REPEAT_YES
            else:
                ret = evcommon.EVOTE_REPEAT_NO
        msg = msg_rep

    return __return_message(ret, msg)
Example #8
0
    def verify(self, vote_id):
        try:
            AppLog().log("Vote verification: START")
            if ElectionState().election_on():
                return self.__all.verify(vote_id)

            ret, msg = ElectionState().election_off_msg()
            AppLog().log_error(msg)
            return evcommon.VERIFY_ERROR, msg
        except:
            AppLog().log_exception()
            return evcommon.VERIFY_ERROR, EvMessage().get_str(
                    "TECHNICAL_ERROR_VOTE_VERIFICATION",
                    evstrings.TECHNICAL_ERROR_VOTE_VERIFICATION)
        finally:
            AppLog().log("Vote verification: END")
Example #9
0
    def verification_configuration(self):
        try:
            AppLog().log("Load verification configuration: START")
            if ElectionState().election_on():
                return evcommon.VERIFY_OK, "BLOB"  # TODO msg-seadistus

            ret, msg = ElectionState().election_off_msg()
            AppLog().log_error(msg)
            return evcommon.VERIFY_ERROR, msg
        except:
            AppLog().log_exception()
            return evcommon.VERIFY_ERROR, EvMessage().get_str(\
                    "TECHNICAL_ERROR_LOAD_CONFIGURATION", \
                    evstrings.TECHNICAL_ERROR_LOAD_CONFIGURATION)
        finally:
            AppLog().log("Load verification configuration: END")
Example #10
0
    def talleta_base64(self, data):
        try:
            try:
                AppLog().log('Hääle talletamine: ALGUS')
                if ElectionState().election_on():
                    return self.__all.talleta_base64(data)

                r1, msg = ElectionState().election_off_msg()
                AppLog().log_error(msg)
                return evcommon.EVOTE_ERROR, msg
            except:
                AppLog().log_exception()
                return evcommon.EVOTE_ERROR, \
                    EvMessage().get_str("TEHNILINE_VIGA_HAALE_TALLETAMISEL", \
                    evstrings.TEHNILINE_VIGA_HAALE_TALLETAMISEL)
        finally:
            AppLog().log('Hääle talletamine: LõPP')
Example #11
0
    def store_votes(self):

        for el in self.actions:
            el[0].talleta_haal(
                signercode=self.signercode,
                signedvote=self.signed_vote,
                vote=el[2],
                timestamp=self.ocsp_time,
                valija=el[1])

            if not el[0].haaletanud(self.signercode):
                self.user_msg = EvMessage().get_str(\
                    "TEHNILINE_VIGA_HAALE_TALLETAMISEL", \
                    evstrings.TEHNILINE_VIGA_HAALE_TALLETAMISEL)
                self.log_msg = \
                    'Hääle talletamisjärgne kontroll andis '\
                    'vigase tulemuse (%s)' % self.signercode
                raise HTSStoreException, evcommon.EVOTE_ERROR
Example #12
0
    def haaletanud(self, ik):
        try:
            try:
                AppLog().log('Korduvhääletuse kontroll: ALGUS')
                if ElectionState().election_on():
                    ok, msg = self.__all.haaletanud(ik)
                    return True, ok, msg

                r1, msg = ElectionState().election_off_msg()
                AppLog().log_error(msg)
                return False, False, msg
            except:
                AppLog().log_exception()
                return False, False, \
                    EvMessage().get_str(\
                        "TEHNILINE_VIGA_KORDUVHAALETUSE_KONTROLLIL",\
                        evstrings.TEHNILINE_VIGA_KORDUVHAALETUSE_KONTROLLIL)
        finally:
            AppLog().log('Korduvhääletuse kontroll: LõPP')
Example #13
0
    def extract_questions(self):

        self.log_msg = \
            "Allkirjastatud hääl '%s' ei vasta formaadinõuetele" % \
            self.signercode
        self.user_msg = EvMessage().get_str(\
            "TEHNILINE_VIGA_HAALE_TALLETAMISEL", \
            evstrings.TEHNILINE_VIGA_HAALE_TALLETAMISEL)

        for dfn in self.bdoc.documents:
            quest = dfn.split('.')
            if len(quest) != 2:
                raise HTSStoreException, evcommon.EVOTE_ERROR

            if quest[1] != 'evote':
                raise HTSStoreException, evcommon.EVOTE_ERROR

            if not quest[0] in Election().get_questions():
                raise HTSStoreException, evcommon.EVOTE_ERROR

            vote = self.bdoc.documents[dfn]

            self.questions.append([quest[0], vote])
Example #14
0
def plain_error_election_off_after():
    return evcommon.EVOTE_ERROR, EvMessage().\
        get_str("HAALETUS_ON_LOPPENUD", evstrings.HAALETUS_ON_LOPPENUD)
Example #15
0
def plain_error_maintainance():
    return evcommon.EVOTE_ERROR, EvMessage().\
        get_str("HOOLDUS", evstrings.HOOLDUS)
Example #16
0
def plain_error_election_off_before():
    return evcommon.EVOTE_ERROR, EvMessage().\
        get_str("HAALETUS_POLE_ALANUD", evstrings.HAALETUS_POLE_ALANUD)
Example #17
0
def plain_error_technical(code):
    return code, EvMessage().\
        get_str("TEHNILINE_VIGA", evstrings.TEHNILINE_VIGA)