Screencast dazu auf dem Web oder auf Stream
cd pfadangabe
cd jokerchain
python jokerchain.py
pip install requests
pip install –upgrade pip
python jokerchain.py -n
public-key-joker.pem
an ivo.bloechliger@ksbg.ch senden.secret-private-key-joker.pem
sicher verwahren und mindestens ein Backup erstellen.cd
ins Verzeichnis, wo das Pythonprogramm jokerchain.py
gespeichert ist.git pull
(lädt die neueste Version herunter).python jokerchain.py -d 2022-08-29
wobei das Datum in diesem Format (JJJJ-MM-TT) und in der Zukunft liegen muss.python jokerchain.py -t c001f4c3
wobei nach -t ein existierender Hash eines anderen Nutzers stehen muss. Achtung, die Überweisung eines Jokers an den Admin zählt nicht als Einlösen!python jokerchain.py
python jokerchain.py -h
Hilfe anzeigenpython jokerchain.py -v …
Verbose: Anzeigen was, das Programm so alles tut.
Das Python-Script jokerchain.py
führt die im folgenden erklärten openssl-Kommandos aus. Es ist im Prinzip möglich, alle Manipulation auch «von Hand» auszuführen und so neue valide Einträge zu erstellen.
In Git-Bash:
openssl ecparam -name prime256v1 -genkey -noout -out secret-private-key-joker.pem openssl ec -in secret-private-key-joker.pem -pubout -out public-key-joker.pem
in Git-Bash:
openssl dgst -sha256 -sign secret-private-key-joker.pem -out signature.bin ZU_SIGNIERENDE_DATEI openssl enc -base64 -in signature.bin -out signature.base64
openssl enc -base64 -d -in signature.base64 -out signature.bin openssl dgst -sha256 -verify public-key-joker.pem -signature signature.bin SIGNIERTE_DATEI
Die «Blockchain» ist im «Markdown» Format gespeichert. Damit lässt sich die Datei ebensogut maschinell verarbeiten wie von Menschen gelesen werden.
Die Datei enthält nur ASCII-Zeichen und Zeilenumbrüche sind \n (keine \r\n)
# Titel (Art des Eintrags) ## Name der Daten ... (Daten) ## Evtl. weitere Einträge
# root ## publickey publickey data ## keyhash fe736c7d89a8b
Darauf muss eine rootsignature folgen:
# rootsignature ## timestamp Datum und Zeit der Unterschrift. ## signature Signatur der ganzen Datei bis und mit der Zeile davor (inkl. ## signature\n)
# user ## publickey publickey data ## keyhash fe736c7d89a8b ## tokens list of joker tokens
Darauf muss eine # rootsignature
folgen.
# transfer ## sender keyhash ## token token ## receiver keyhash ## timestamp timestamp ## signature Signatur der ganzen Datei bis und mit ## signature\n
Hinweis: Der Sender kann auch der Admin sein, der damit neue Joker erschaffen kann. Das ist nötig, wenn z.B. ein Joker eingelöst wurde, die Schülerin aber wegen Krankheit gar nicht anwesend war. Oder sich der Lehrer mal wieder zu spät bewusst wird, dass die Miniaufgabe «ungeeignet» war.
# usejoker ## sender hash ## token token ## usedate JJJJ-MM-TT ## timestamp timestatmp ## signature Signatur der ganzen Datei bis und mit ## signature\n