M1-PCA-Project/tests/exemple1.py

82 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from source.Card import Card
from source.models.Elector import Elector
from source.Machine import Machine
# Vote électronique
# 3 personnes
alice = {
"name": "Alice",
"password": "6060",
"empreinte": "empreinteA",
"vote": "Riri",
}
bob = {
"name": "Bob",
"password": "0100",
"empreinte": "empreinteB",
"vote": "Toto",
}
eve = {
"name": "Eve",
"password": "008",
"empreinte": "empreinteE",
"vote": "Jack",
}
personnes = [alice, bob, eve]
# Création des cartes
alice["card"] = Card(alice["password"])
bob["card"] = Card(bob["password"])
eve["card"] = Card(eve["password"])
print(f"Liste de cartes : {[personne['card'] for personne in personnes]}")
print("Cartes délections créées.")
print()
# Création de la liste électorale
# Eve peut voter pour Alice
alice_elector = Elector(name=alice["name"],
public_key_elector=alice["card"].public_key, fingerprint_elector=alice["empreinte"],
public_key_mandataire=eve["card"].public_key, fingerprint_mandataire=eve["empreinte"])
bob_elector = Elector(name=bob["name"],
public_key_elector=bob["card"].public_key, fingerprint_elector=bob["empreinte"])
emerging_list = [alice_elector, bob_elector]
print(f"Liste démargement: {emerging_list}")
print("Liste électorale créée.")
print()
# Création de la machine
machine = Machine(emerging_list)
print(f"Machine pubkey : {machine.public_key}")
print("Machine pour voter créée")
print()
# Votes des personnes
alice["password"] = "fleur"
for personne in personnes:
# Authentification
print()
print(f"La personne {personne["name"]} sauthentifie avec le mdp {personne["password"]} et lempreinte {personne["empreinte"]}.")
if not machine.authenticate(personne["card"], personne["password"], personne["empreinte"]):
continue
# Vote
print()
print(f"La personne {personne["name"]} va voter pour {personne["vote"]}")
if not machine.vote(personne["card"], personne["vote"]):
continue
# Publication des résultats
votes, sig_votes = machine.cloture_du_vote()
print()
print(votes)