Simeon Simeonov (sgs @ USITINT)
Introduction
Components
Development
Q & A
eValg 3
Development started in 2017 and then again in 2018
The last trial election (https://valg-pilot.uio.no) ended 15.11.2019
Currently the eValg team consists of two developers (skh, sgs)
Backend
Dataporten
Frontend
General: Python >= 3.6, Flask, SQLAlchemy
DB: Alembic, SQLAlchemy-continuum, Flask-migrate
Signing & encryption: pynacl
Querying (GraphQL): graphene, graphene-sqlalchemy
Others: pytz, sentry_sdk, python-json-logger and many more
OpenID Connect: Moved from Authorization code flow to Implicit flow (id_token token) in 2018
General: React, react-oidc, GraphQL
Encryption: TweetNaCl - a crypto library in 100 tweets
Many, many more libraries and packages
Improvements
Goals & challenges
Testing (pytest) & CI (Jenkins) - the best in USITINT so far?!? :)
No more FNR* and cross domain access. #GDPR
No more external programs (GnuPG, evalg.jar) and envelopes ...
Insight in all possible election paths in case of drawing
* - work in progress
Anyone should be able to create an election
No private key shall ever live in the backend
Log & audit all changes
It is never too late to change a pollbook
It is never too late to master public-key cryptography ... :)
“Old questions are not answered—they only go out of fashion” - Donald Schön