Repo sisaldab saatja ja vastuvõtja vahelist protokolli (kokkulepet) edastatava andmefaili allkirjastamiseks, koos teostusnäitega (POC).
1 Saatja allkirjastab andmefaili elliptilise kõvera allkirjaalgoritmiga (Elliptic Curve Digital Signature Algorithm), vastavalt standardile FIPS 186-3.
2 Saatja salvestab allkirja ASN.1 DER-formaadis faili. Allkirjafaili nimi koosneb allkirjastatud andmefaili nimest, millest failitüüp (nime lõpus olev punktiga eraldatud osa) on asendatud failitüübiga .sign
.
3 Saatja edastab andmefailiga koos allkirjafaili.
4 Allkirjastamisel kasutatud privaatvõtmele vastava avaliku võtme edastab saatja vastuvõtjale taustakanali kaudu. Avalik võti edastatakse PEM-formaadis failina; faili nimi on publickey.pem
.
4a Täiendava kindluse (salgamatuse) tagamiseks võivad pooled kokku leppida, et saatja allkirjastab edastatava avaliku võtme identiteediga, mida mõlemad pooled usaldavad - nt saadab avaliku võtme Eesti digiallkirjaga allkirjastatult (s.t allkirjastab avalikku võtit sisaldava faili ID-kaardiga või mobiil-ID-ga. Seejuures on oluline allkirjastatavasse konteinerisse lisada kaaskiri, mis sõnastab võtme kasutamise eesmärgi.).
5 Allkirjastamisel kasutatav võtmepaar genereeritakse 2 aastaks.
6 Privaatvõtme kompromiteerumisel, kompromiteerumise kahtluse korral või 2-aastase perioodi lõppemisel genereerib saatja uue võtmepaari ja edastab uue avaliku võtme vastuvõtjale.
Protokolli kontseptsioonitõendusena (POC) on kaustas kolmest rakendusest koosnev komplekt.
Rakendus createkey
genereerib ECDSA võtmepaari ja salvestab selle X.509 PEM failidesse privatekey.pem
ja publickey.pem
.
Rakendus sign
loeb failist privatekey.pem
sisse ECDSA privaatvõtme, allkirjastab selle võtmega faili data.txt
ja salvestab allkirja faili data.sign
.
Rakendus verify
loeb failist publickey.pem
sisse ECDSA avaliku võtme, seejärel loeb sisse andmefaili data.txt
ja allkirjafaili data.sign
ning kontrollib allkirja. Kontrolli tulemuse väljastab konsoolile.
Rakenduste ehitamine (repo peakaustast):
go build ./createkey
go build ./sign
go build ./verify
Rakenduste käivitamine (Windows):
createkey
sign
verify.exe
Rakenduste käivitamine (Linux):
./createkey
./sign
./verify
Allkirjafaili formaati saab soovi kontrollida ka käsurealt OpenSSL abil:
openssl asn1parse -inform DER -in data.sign
.