News   Magazin   Börse   Links   ArcArchie   Homepages
 Magazin  Programmierung mit GnuTLS Home 
Hardware   Software   Praxis   Sonstiges  
Programmierung mit GnuTLS  Alexander Ausserstorfer 6. 5. 2014

Bei GCC handelt es sich um die GNU Compiler Collection für RISC OS. Dies ist eine sehr mächtige Compiler-Sammlung für die Programmiersprachen C, C++, Assembler und andere. GCC wird inzwischen auf vielen verschiedenen Systemen eingesetzt. Die RISC OS Version von GCC findet man unter www.riscos.info/index.php/GCC_for_RISC_OS.

Bei GnuTLS handelt es sich um eine C-Bibliothek für die GNU Compiler Collection, welche Funktionen für den Aufbau verschiedenster verschlüsselter Verbindungen ("Tunneln") und die Überprüfung von digitalen Zertifikaten erlaubt.

Das Verschlüsseln und Entschlüsseln von Daten geschieht durch eine Schicht, welche GnuTLS zur Verfügung stellt. Die Daten laufen damit verschlüsselt durch das Netz, was ein Abhören der Datenströme zwischen zwei Rechnern durch einen Dritten erschweren bis gar unmöglich machen soll.

Leider ist es nicht ganz einfach, die Bibliothek GnuTLS zusammen mit der GNU Compiler Collection erfolgreich unter RISC OS zu verwenden. Als erstes benötigt man GCC ab Version 4.1.2. Dann benötigt man natürlich LibGnuTLS, den Port der GnuTLS-Bibliothek von RISC OS. Mein Dank gilt an dieser Stelle Chris Gransden, der den Port gemacht hat. Es ist zu beachten, dass es inzwischen bereits wieder neue Versionen dieser Bibliothek gibt, welche bisher aber nicht nach RISC OS portiert worden sind. Jetzt ist es so, dass GnuTLS auf andere Bibliotheken aufbaut bzw. diese benötigt, so dass man letztere natürlich ebenfalls runterladen und installieren muss:

www.riscos.info/packages/LibraryDetails.html#LibGMP-Dev
www.riscos.info/packages/LibraryDetails.html#LibGPG-Error-Dev
www.riscos.info/packages/LibraryDetails.html#LibNettle-Dev
www.riscos.info/packages/LibraryDetails.html#LibTASN1-Dev
www.riscos.info/packages/LibraryDetails.html#ZLib1g-Dev
www.riscos.info/packages/LibraryDetails.html#LibGetText-Dev

Es gibt ein Problem mit der Bibliothek libgmp-dev_5.0.5+dfsg-1, welche für StrongARM-CPUs illegale Instruktionen verwendet, so dass der compilierte Code auf diesem Prozessortyp nicht lauffähig ist. Damit das funktioniert, muss man die aktuelle Bibliothek an Stelle von libgmp 5.0.5 verwenden. [Anm. cms: Dies ist oben schon richtig verlinkt] Mein Dank an dieser Stelle gilt John Tytgat, welcher den Fehler fand und uns die neue Bibliothek zur Verfügung stellte.

Um den Quellcode in ausführbaren Code zu übersetzen (zu compilieren), muss unter RISC OS folgende Sequenz verwendet werden. [Anm. cms: Die Zeilennummern gehören nicht dazu und Zeile zwei ist recht lang]

  1. wimpslot 6000k
  2. gcc -O3 -static <dateiname>.c -o<dateiname> -ILibGNUTLS: -LLibGMP: -lgmp -LLibGNUTLS: -lgnutls -LibGPGError: -lgpg-error -LLibNettle: -lhogweed -lnettle -LLibTASN1: -ltasn1 -LZlib1g: -lz -LLibGetText: -lintl
  3. elf2aif <dateiname>

Wobei <dateiname>.c die Eingabedatei (C-Quelldatei) und <dateiname> die ausführbare Datei ist. Unter RISC OS muss sich die Quelldatei in einem Ordner c befinden. Die Dateiendung .c wird unter der RISC-OS-Version von GCC als ein Ordner c interpretiert.

Ich habe dazu zwei Beispielprogramme geschrieben. cert7/zip (622 KB) öffnet eine Verbindung zu einem POP3-Mail-Server unter Verwendung von STARTTLS auf Port 110 und liest als Beispiel Teile einer im Postfach liegenden E-Mail aus (Ausgabe auf Bildschirm). Es verwendet und überprüft digitale Zertifikate. Die notwendigen digitalen Zertifikate zur Überprüfung der vom Server geschickten Zertifikate müssen in der Datei E-Mail-Chain.crt im .pem-format (Base64-codiert) abgelegt sein. Der Pfad bezieht sich dabei auf das aktuelle Verzeichnis (abrufbar mit *Cat). Die Zertifikate muss man sich von den entsprechenden Webseiten herunterladen. web2/zip (640 KB) öffnet einen SSL-/TLS-Tunnel zu einem POP3-Mail-Server auf Port 995 und liest zur Demonstration ebenfalls Teile einer im Postfach liegenden E-Mail aus (Ausgabe auf Bildschirm). Die Überprüfung von digitalen Zertifikaten wird bei diesem Programm unterdrückt. Sprich: Die Einrichtung von solchen ist für dieses Programm nicht notwendig.

Weiters zum Thema findet man zum Beispiel in meiner Bachelorarbeit (2,6 MB) die auch gedruckt erhältlich ist und natürlich im Handbuch von GnuTLS.

Kommentar zum Artikel, Fehler gefunden, etwas unklar, Ergänzung oder ein Tipp? Einfach eine Nachricht schicken!

Name: *

EMail:

Text: *
Hardware   Software   Praxis   Sonstiges  
ArcSite   News   Magazin   Börse   Links   ArcArchie   Homepages