This is an old revision of the document!
JokerChain
Setup
Nötige Software
- git, Python und VisualStudio Code, siehe Anleitungen hier
Initialisierung der JokerChain
- git bash starten
- in geeigntes Verzeichnis gehen:
cd pfadangabe
cd jokerchain
- Erster Test:
python jokerchain.py
- Schlägt fehl, weil ein package fehlt. Also dieses installieren mit
pip install requests
- Und dann gleich noch pip updaten mit
pip install –upgrade pip
- Schlüssel anlegen:
winpty python jokerchain.py -n
- Die Datei
public-key-joker.pem
an ivo.bloechliger@ksbg.ch senden. - Die Datei
secret-private-key-joker.pem
sicher verwahren und mindestens ein Backup erstellen.
Technische Umsetzung
Schlüsselerzeugung
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
Unterschrift
Unterschreiben
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
Verifizieren
openssl enc -base64 -d -in signature.base64 -out signature.bin openssl dgst -sha256 -verify public-key-joker.pem -signature signature.bin SIGNIERTE_DATEI
Dateiformat
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)
Generelle Einträge
# Titel (Art des Eintrags) ## Name der Daten ... (Daten) ## Evtl. weitere Einträge
Root-Eintrag (Admin, Verwalter)
- Public-Key vom Verwalter, muss der erste Eintrag in der Datei sein.
# root ## publickey publickey data ## keyhash fe736c7d89a8b
Darauf muss eine rootsignature folgen:
Einträge validieren
# rootsignature ## timestamp Datum und Zeit der Unterschrift. ## signature Signatur der ganzen Datei bis und mit der Zeile davor (inkl. ## signature\n)
User-Konto mit Jokern anlegen
# user ## publickey publickey data ## keyhash fe736c7d89a8b ## tokens list of joker tokens
Überweisung
# 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.
Joker Einlösen
# usejoker ## sender hash ## token token ## usedate JJJJ-MM-TT ## timestamp timestatmp ## signature Signatur der ganzen Datei bis und mit ## signature\n