Freifunk Hennef – Firmware signieren

Was braucht man?

Freifunk-Hennef LogoZum Signieren muss ein öffentlicher Schlüssel in der site.conf eingetragen werden, und man benötigt sowohl die libuecc als auch die ecdsautils.
Ich gehe hier davon aus, dass wir uns im Verzeichnis ~/Gluon-Stuff bewegen…

libuecc

Das Repository findet sich unter http://git.universe-factory.net/libuecc. Also…:

git clone http://git.universe-factory.net/libuecc libuecc
cd libuecc
cmake ./
make
sudo make install
sudo ldconfig

Damit steht die Lib dem System zur Verfügung.

ecdsautils

Das Repository findet sich unter https://github.com/tcatm/ecdsautils. Weiter geht’s:

cd ~/Gluon-Stuff
git clone https://github.com/tcatm/ecdsautils.git ecdsautils
mkdir ecdsautils/build
cd ecdsautils/build
cmake ../
make
sudo make install

Nun steht einem das Tool zur Verfügung (unter /usr/local/bin/ecdsautil). Die (wichtigsten) Optionen:

  • ecdsautil generate-key > private_key
    Erzeugt den privaten Schlüssel „private_key“; dieser sollte nur für den Benutzer les- bzw. schreibbar sein (chmod 600) und sicher verwahrt werden.
  • ecdsautil show-key < private_key
    Generiert in der Shell den passenden Publickey zum gegebenen private key. Dieser String muss nachher (vor dem Build) in die site.conf eingefügt werden.
  • ecdsautil –help
    Zeigt eine Übersicht der Verfügbaren Optionen.

Nun ist es so, dass das (die) Script(e) (gluon/contrib/sign.sh, gluon/contrib/sigtest.sh) voraussetzen, dass ecdsautil in mehreren Teilen daherkommt… was es aber zumindest bei mir nicht tut. Es wird ein „unified“ ecdsautil erstellt.
Schaut man sich z.B. das Script sign.sh an gibt es nun zwei Möglichkeiten: Einrichten entsprechender Aliase, oder das Anpassen der Scripte (solange noch nicht per se geschehen).
In der Datei contrib/sign.sh:

Ersetze die Zeile:
ecdsasign „$upper“ < „$SECRET“ >> „$lower“
durch die Zeile:
ecdsautil sign „$upper“ < „$SECRET“ >> „$lower“

In der Datei contrib/sigtest.sh korrigiere man ggf. die entsprechende Zeile auf:

if ecdsautil verify -s „$line“ -p „$public“ „$upper“; then

Das Signieren

Manifest erstellen

Als Erstes muss die Manifest-Datei erstellt werden:

cd ~/Gluon-Stuff/gluon
make manifest GLUON_PRIORITY=0 GLUON_BRANCH=experimental (oder stable; eine Priority muss ggf. nicht angegeben werden, wenn sie bereits in der site.mk festgelegt ist)

Dann kann man das Signieren mit folgender Zeile durchführen:

contrib/sign.sh /pfad/zum/private_key images/sysupgrade/experimental.manifest (oder stable)

Das war’s, damit sollte alles komplett sein… zumindest zeigt

contrib/sigtest.sh [Publickey] output/images/sysupgrade/experimental.manifest
echo $?

eine schöne „0“ 😉

Über Alariel

Seit diversen Jahren Systemadministrator im Bereich Linux, noch länger passionierter Rollenspieler, Reenactor und überzeugter "Heide". Nebenbei noch Tätig im Bereich der Webseitengestaltung, ob nun einzelne Seiten oder auch mehr.
Dieser Beitrag wurde unter Admin-Stuff, Freifunk abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

This site uses Akismet to reduce spam. Learn how your comment data is processed.