KGpg – Schlüsselimport mit Fehlern

Man müht sich ab, seinen Kunden beizubringen, wichtige Informationen im Internet verschlüsselt zu übertragen. Eine Voraussetzung dafür, dass der Kunde sich mit den entsprechenden Verfahren anfreundet, ist, dass das Erzeugen eines Schlüsselpaares und das Verteilen des öffentlichen Schlüssels ohne größere Schwierigkeiten durchgeführt werden kann – unter Linux wie unter Windows. Leider können hier auch unter Linux Schwierigkeiten auftreten, die den Anfänger überfordern.

Vor kurzem konnte ich die Probe aufs Exempel machen – ein Kunde, der Thunderbird unter Windows einsetzt, lud sich das Enigmail-Plugin und GnuPG für Windows herunter. Die Installation verlief problemlos. Ebenso nach einer kurzen Einweisung die Suche nach meinem “public key” und der Import des Schlüssels von einem PGP-Server in den Schlüsselring. Der Kunde konnte mir dann auch ohne Schwierigkeiten verschlüsselte Mails schicken. So weit so gut.

Die Überraschung kam nach dem Generieren des eigenen Schlüssels. Die Erzeugung des Schlüsselpaares verlief wie erwartet. Der Kunde sah den Schlüssel, dessen Kennung (die letzten 8 Ziffern des Fingerprints) und bei einer Detailansicht auch den gesamten Fingerprint. Der Kunde versuchte dann seinen öffentlichen Schlüssel auf einen PGP-Server hochzuladen. Auch dies war ohne Problem möglich. Dann suchte der Kunde zur Probe nach seinem Schlüssel – zunächst mittels eines Statements der folgenden Art:

http://pgpkeys.pca.dfn.de/pks/lookup?op=vindex&hash=on&fingerprint=on&search=0x{16 Hex-Ziffern}

wobei “{16 Hex Ziffern }” durch die letzten 16 Hexadezimal – Ziffern des Schlüssel-Fingerprints zu ersetzen ist. Der Schlüssel wurde einwandfrei identifiziert und angezeigt. Dann probierte der findige Kunde jedoch folgendes Statement, bei der er dem “search”-Parameter nur die letzten 8 Stellen der Schlüssel-Kennung übergab (nur diese werden nämlich typischerweise in den Key-Verwaltungsprogrammen angezeigt):

http://pgpkeys.pca.dfn.de/pks/lookup?search=0x{8 Hex Ziffern = Schlüsselkennung}&fingerprint=on&hash=on&op=vindex

Wie es der (unwahrscheinliche) Zufall so will, kamen als Antwort 2 Schlüssel mit derselben 8-stelligen Kennung hoch – der des Kunden und einer, der im Jahre 1998 angelegt wurde. Diese “Konkurrenz” bzgl. der 8 stelligen Schlüsselkennung fand der Kunde sehr beunruhigend. Ich demonstrierte ihm dann, dass sein Schlüssel dennoch von dem des “Konkurrenten” verschieden war und dass die Schlüsselkennung und der Fingerprint ja eigentlich mehr als 8 Hex-Stellen umfassen. So zeigt z.B. KGpg unter KDE in der Detailansicht eines Schlüssels nicht 8 sondern die hinteren 16 Hex-Stellen des Fingerabdrucks an.

Der wirkliche Ärger begann aber, als ich versuchte, den öffentlichen Schlüssel des Kunden unter Linux/KDE in meinen eigenen Schlüsselring zu importieren. Das misslang unter KDE KGpg bei Einsatz des Standardimports von einem PGP-Server auf wirklich schlimme Weise:

Obwohl ich die eindeutige 16 stellige Kennung im Such/Import-Dialog angab, importierte KGpg beide Schlüssel – den des Kunden und des Konkurrenten. Noch schlimmer: In der Detailansicht wurde bei beiden Namen ein und derselbe Fingerprint (der des Kunden), aber die falsche Kennung (die des Konkurrenten) angezeigt. KGpg hatte also die beiden Schlüssel beim Import intern nicht sauber getrennt.

So etwas ist katastrophal! KGpg ist offenbar nicht in der Lage den Standard-Import von Schlüsseln zu regeln, wenn die letzten 8 Hex-Stellen der Kennung mit denen eines anderen Schlüssels identisch sind. Das Gleich geschah übrigens auch, wenn man nach der dem Schlüssel zugeordneten Namen bzw. der Web-Adresse suchte.

Testweise versuchte ich dann den Import unter Windows mit Thunderbird und den dahinter liegenden OpenPG-Programmen. Auch hier werden zwar zwei Schlüssel importiert – offensichtlich reagieren die Programme nur auf die letzten 8 Hex-Stellen. Aber der Import verlief mit der richtigen Zuordnung der Schlüssel zu den Namen und Webadressen.

Eine Lösung des Problems unter KGpg besteht darin, den Import des Kundenschlüssels manuell über die Zwischenablage durchzuführen. Für Einsteiger wäre das aber nicht zumutbar.

Skalierbare Web-Seiten unter Firefox 2

Mehrere unserer Webkunden haben explizit den Wunsch geäußert, das man Ihre Webseiten auch unter Firefox 2.0 skalierbar gestalten möge. Diesen Wunsch haben wir erfüllt. Es gibt aber einige Fallstricke, die wir hier kurz diskutieren wollen. Die Ausführungen sind vielleicht aber auch von generellem Interesse für diejenigen, die mit “em” als Größeneinheit statt “px” arbeiten.

Grundlagen
Die einheitliche (!) Skalierbarkeit aller Objekte einer Webseite im Firefox (vor Vers. 3.0) kann man durch zwei Dinge gewährleisten:

  1. Definition einer Standardschriftgröße im BODY-Tag nach dem Muster <body style=”font-family:…..; font-size:10px;”>
  2. Bemaßung aller Objektgrößen in den zugehörigen Style- oder Klassendefinitionen statt mit “px” mit “em”. Bsp.:
    <div style=”width:10.0em; height:20.0em;”>

Der Vorteil der Standardisierung auf die Schriftgröße 10px im Body-Tag ist eine vereinfachte Umrechnung:
Die “em”-Werte x 10 entsprechen in der nichtskalierten Seitenversion gerade dem herkömmliche Wert der Ausdehnung in Pixel.

Fallstrick 1: Sukzessive Mehrfachskalierung vermeiden!
Gibt man in einem Tag nicht nur die Geometriegrößen, sondern auch eine abweichende Fontgröße vor, z.B.
<div style=”position:absolute; width:6.0em; height:8.0em; font-size:1.2em; “>,
so wird das DIV keineswegs mit der Größe 60×80 dargestellt, sondern um einen Faktor 1.2 vergrößert. Es zählt immer die aktuelle Fontgröße, die für ein Tag gesetzt ist!

Gegenmittel: Um diesem Problem zu entgehen, kann man die Texte in <span>-Tags einbauen, für die man per CSS vorgefertigte Schriftgrößen definiert. Bsp:

<div style=”position:absolute; width:6.0em; height:8.0em; font-size:1.2em; “><span style=”font-size:12px;”>das ist der text im DIV<span></div>

Schwieriger ist das bei Formularelementen – hier muss man wirklich vorab Berechnungen zur resultierenden Größe anstellen. Formularelemente unterliegen aber ohnehin browserspezifischen Einschränkungen bzgl. der Darstellung. Ein Test in jedem Zielbrowser ist daher angebracht.

Fallstrick 2: Die minimale Schriftgröße im Browser
Hat der Anwender eine minimale Schriftgröße für seinen Browser eingestellt und unterschreitet (!) die im BODY definierte Standardschriftgröße die minimale Schriftgröße, so wird bei einer Seite, die konsequent mit “em”-Größeneinheiten designed wurde, die Geometrie insgesamt mit dem Faktor
“Minimale Schriftgröße des Browsers” / “Standardschriftgröße im BODY”
heraufskaliert.

Beachte: Selbst wenn die Schriftgröße im BODY nicht unter die minimale Schriftgröße des Firefox fällt, so kann doch für einzelne Tags eine andere kleinere Fontgröße definiert sein (s. Fallstrick 1). Für diese Tags wirkt sich dann die minimale Schriftgröße separat aus. Hat man das Vorgehen zu Fallstrick 1 nicht beachtet, so führt dies evtl. zu Schwierigkeiten bei der spezifischen Tagdarstellung oder gar der Seitendarstellung.

Fallstrick 3: Integrierte Flash-Movies
Typischerweise integriert man Flash-Movies W3C-konform mit SWFObjects (Version 1.5 oder 2.0) und verwendet ein zu Container-DIV. In der Version 2.0 wird der Container ersetzt, dessen Bemaßung wird aber übernommen). Hier ist es wichtig, dass der SWF-Film mit der Höhen- und Breiten-Angabe “100%” integriert wird. Dann werden die Maße des Containers beachtet – und wenn diese in “em”-Einheiten vorgegeben sind, so skaliert das SWF-Movie mit.

Wir wünschen viel Spaß beim Ausprobieren!

Eine Seite, die nach diesen Prinzipien von uns entworfen wurde, ist z.B.
http://www.med-aktiv.de

Compiz-Fusion und ein “Kicker”-Problem

Gestern hat sich Deutschland beim “Kicken” gegen Kroatien blamiert. Ein Leiden – fast wie mit Windows – man sieht den Fehlern machtlos zu. Etwas anders bei “Kicker” und Compiz-Fusion unter KDE. Auch da gibt es Probleme im Zusammenspiel; man ist aber nicht zum tatenlosen Leiden verdammt.

Die nachfolgenden Ausführungen gelten für den Fall, dass man die Nvidia-Rendering-Funktionen zur Unterstützung des 3D-Desktops (genauer: des Composite-Managers) und nicht XGL/Compiz verwendet. Hat man den Desktop-Würfel z.B. mit 8 Seiten unter KDE konfiguriert, so gibt es zwei kleine Schwierigkeiten mit der Mini-Anzeige der 8 virtuellen Desktops des Würfels (8 sog. “Viewports”) in der Kicker-Leiste.

  • KDE und Kicker verstehen die neue Konfiguration nicht so, wie sie gemeint ist – nämlich so, dass die 8 Viewports des Würfels die vorherigen virtuellen KDE-Desktops (nehmen wir an, dass seien auch 8 Desktops gewesen) ersetzen sollen. Vielmehr erscheinen 8×8 =64 Minianzeigen von angeblich verfügbaren Desktops im Kicker-Bereich. (Dies ist bei Verwendung von XGL anstelle der Nvidia-Treiber-Funktionen nicht so! Es ist aber verständlich, dass KDE keine Integration für spezielle Funktionalitäten eines spezifischen Herstellers betreibt.)

    Man muss die Anzahl der anzuzeigenden virtuellen KDE-Desktops daher von Hand auf 1 reduzieren, damit nur die 8 Minianzeigen der “Viewports” des 3D-Desktops in der Kicker-Leiste übrigbleiben.

  • Viel ärgerlicher ist, dass alle auf irgendeinem der Viewports geöffneten Fenster in der Minianzeige der Desktops nur auf dem ersten Viewport-Minibildchen erscheinen. Denn Kicker kann das eigentlich besser; Kicker muss dazu aber die Information über die aktuelle Konfiguration neu verarbeite. Es hilft der kurze Wechsel zu einem Terminalfenster und die Eingabe von

    ….> killall kicker
    ….> kicker

    am Prompt. Bitte kein “kicker &” absetzen.

Danach verhält sich die Minianzeige der virtuellen Desktops in der KDE-Kicker-Leiste wie gewünscht und die Freude am 3D-Desktop – einer “Spielerei”, wie meine Frau nicht ganz zu Unrecht meint – ist noch größer.

kicker

Rosegarden – hast du Töne?

Rose_Haupt

Gestern habe ich darüber berichtet, wie man “JACK” zum Laufen bringt. Jack ist meist aber nur Mittel zum Zweck. In meinem Fall sollte eigentlich der Sequenzer “Rosegarden” ausprobiert werden. Ich war ja gestern ganz froh, als Rosegarden endlich lief, den Anschluss an Jack schaffte und keine Fehler mehr meldete. Dann habe ich aber (leider) auch noch den Versuch unternommen, Rosegarden und meiner Audigy-Soundkarte ein paar Midi-Töne zu entlocken. Das misslang im ersten Anlauf völlig – Rosegarden blieb stumm und gab trotz korrekt konfiguriertem Jack keine Midi-Töne von sich. Interessanterweise konnte der Datenstrom eines SW-Synthesizers, der mit JackEQ auf Rosegarden umgelenkt wurde, sehr wohl mit lautstarkem Resultat verarbeitet werden. Ursachen für mein Scheitern mit Midi waren einerseits meine Unerfahrenheit mit Audio-Devices, aber auch etwas missverständliche Einstellungsdialoge von Rosegarden.

Rosegarden bietet im Bereich der Midi-Konfiguration einen Dialog an, mit dem das Midi-Gerät gewählt werden kann und mit dem auch die zugehörigen Bänke verwaltet werden. Dieser Dialog wird durch einen weiteren zum “Laden” einer Soundfont-Bank ergänzt. Hier begann meine Kette der Mißverständnisse: Der Rosegarden-Dialog zur Verwaltung der Midi-Geräte lädt nämlich keineswegs Soundfonts auf die Karte (s.u.).

Im Internet entdeckte ich übrigens, dass eine Reihe von Leuten ein ähnlich stummes Rosegarden vorgefunden hatten wie ich selbst. Die erhielten dann von bekümmerten Zeitgenossen viele Ratschläge, von denen die meisten aber am Kern des Problems vorbeigingen. U.a. fand ich die Anmerkung, dass ein SW-Syntheziser zwingend erforderlich sei. Das ist schlicht falsch. Die “Audigy 2”-Karte, die ich einsetze, ist ein vollwertiger Soundprozessor, der unter dem emu10k1-Modul und Alsa sehr wohl mit Midi-Vorgaben umgehen kann. Nachfolgende Ausführungen sollen helfen, meine elementaren Fehler zu vermeiden. Der Reihe nach:

Midi
Midi ist nach meinem Verständnis ein Protokoll, das einem Klang-Generator (z.B. einem Synthesizer oder einer Sounkarte) vorgibt, mit welcher zeitlichen Charakteristik, Lautstärke und in welcher Tonhöhe er Töne erzeugen soll. Die Vorgabe kann über Software, aber auch über Midi-fähige “eingabe”-Instrumente udn Tastaturen erfolgen. Die klangliche Färbung liegt dagegen beim Sounderzeuger/Schallumwandler. Im Fall einer modernen Soundkarte werden zur Vorgabe instrumentaler Klangfarben sog. Soundfonts auf die Karte “geladen”. Diese steuern den Syntheziser der Karte so, dass er eine Reihe von klanglichen Varianten nach einem bestimmten Nummernschema (Soundbänke und Kanäle) anbieten kann. Das Midi-Protokoll erlaubt dann z.B. einer Sequenzer-SW, diese “instrumentalen” Klangfarben des Midi-Geräts gezielt einzusetzen.

Soundfontdateien für die Audiokarte
Damit die Midi-Devices auf einer Soundkarte (meist gibt es hier mehrere) überhaupt Töne produzieren, wenn sie von einer Software über das Midi-Protokoll und den Soundkartentreiber angesprochen werden, muss also zuvor zwingend eine Soundfont-Datei (wie z.B. CT4MGM.SF2) auf die Soundkarte (in meinem Fall eine Audigy 2) geladen werden. Soundfontdateien gehorchen normierten Formaten. Man findet Soundfont-Dateien im Internet oder auch auf Treiber-CDs für die jeweilige Soundkarte.

Laden von Soundfontdateien auf die Audiokarte
Zum Laden von sog. “sf2”-Soundfontdateien auf eine Audigy gibt es unter Linux das Programm “/usr/bin/asfxload”. Es arbeitet selbstverständlich mit dem emu10k1-Treiber (und Alsa) zusammen. (Für oss heisst das Programm sfxload – Rosegarden und Jack erfordern aber Alsa). Zu den Optionen siehe die Man-Seiten.

Anstatt manuell mit asfxload zu arbeiten, kann man das Laden auch von Rosegarden vornehmen lassen – Rosegarden setzt dazu asfxload ein. Der entscheidende Dialog hierfür
findet sich unter “Einstellungen -> Rosegarden einrichten -> Midi” und nicht (!) unter “Studio -> Midi-Geräte verwalten”.

Rosegarden_1

Laden von Soundfontdateien zur Rosegarden-Konfiguration
Damit Rosegarden sinnvoll zum “Komponieren” von Musiksequenzen verwendet werden kann, muss auch Rosegarden über das Midi-Device und sein Angebot Bescheid wissen. Hierzu können bestimmten Midi-Devices einerseits echte HW-Devices zugeordnet werden. Andererseits soll Rosegarden auch über die Soundbänke informiert werden. Letzteres entspricht dem “Laden” (Auswerten) der Soundfont-Dateien in Rosegarden und die Zuordnung zu den Midi-Devices für die diversen Dialoge und Oberflächen von Rosegarden. Die entsprechenden Konfigurationseinstellungen nimmt man nun unter “Studio -> Midi-Geräte verwalten” vor.

Rose_Midi_1

Rose_Midi_2

Hier lädt man dann das gleiche File, dass man zuvor an die Soundkarte übermittelt hat, erneut – nur diesmal für Rosegarden. Rosegarden bietet danach in seinen Dialogen die richtigen, d.h. die zum geladenen Soundfont passenden Kanäle und Instrumente an.

Endlich – Töne
Nun steht dem Komponieren mit den sehr eingänglichen Dialogen nichts mehr im Wege. man legt ein Segment an und bearbeitet dieses dann z.B. im Matrixeditor. Auf dem dortigen Keyboard kann man die ersten Töne hören (hoffentlich). Welchen Kanal (sprich Instrument) man der aktuellen Sequenz zuordnen will regelt man am besten mit einer Reihe von anderen Einstellungen hier. Danach heiß es nur noch Zeitintervalle mit Noten zu füllen …..

Rose_matrix

Im Hauptfenster kann man übrigens das hörbare Instrument im nachhinein noch abändern.

Stabilität?
Aus meiner Sicht ist Rosegarden im Zusammenspiel mit Jack und anderen Musik-Komponenten noch nicht 100%-ig stabil. Es kam beim Spielen manchmal zu Jack-Fehlern und nachfolgenden Problemen mit Rosegarden. Im schlimmsten Fall war sogar ein Neustarten des kompletten Audiosystems vonnöten. Ich bin im Moment nicht sicher, welche der vielen Komponenten (emu10k1, Jack und seine vielen Komponenten, andere Jack-fähige Audioprogramme oder eben Rosegarden) die Schuld an den Problemen trägen.
Aber im Allgemeinen kann man sich mit Rosegarden und schönen wie schrägen Eigenkompositionen sehr gut die Zeit vertreiben. Ein im Ansatz sehr nettes Programm – auch für Laien, wenn man es richtig einrichtet.

Links
http://rosegarden.sourceforge.net/tutorial/en/chapter-1.html
http://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface

Jack unter Opensuse 10.3

Ich bin kein Linux-Audiofreak und habe von Audioservern, Jack und Konsorten keine Ahnung. Normalerweise reicht es mir, wenn an meinem Arbeitsplatz “amarok” (ein tolles Programm!) im Zusammenspiel mit Alsa oder Oss meine Musikdateien in Töne verwandelt. Ich habe eine Audigy 2 Soundcard unter Linux; an der hängt ein 7.1 Lautsprechersystem (Upmix von 5.1 oder 6.1 Sound auf 7.1) und damit bin ich vollkommen zufrieden.

Heute allerdings musste ich Rosegarden für einen potentiellen Kunden für Tests unter Opensuse 10.3 installieren. Rosegarden benötigt den Jack – Echtzeit- Audioserver. Also habe ich Jack und einige zugehörige Tools wir JackEQ aus den SuSE-Repositories installiert. Dann wollte ich Jack einfach mal ausprobieren.

Erste Hürde: Wie startet man Jack?
Der naive Versuch, dies über die Auswahl “Jack Echtzeit-Audioserver” in der Soundsystem-Konfiguration im KDE-Kontrollzentrum zu machen, scheiterte. Der Soundserver wird zwar wieder gestartet, doch jede danach von einem normalen User gestartete Jack-Applikation meldet, dass Jack nicht läuft. Der Verdacht, dass Jack beim gewählten Vorgehen gar nicht gestartet, sondern eher vorausgesetzt wird, bestätigte sich nach einem Blick in die Prozesstabelle. Von “jack”-Prozessen keine Spur. Ein wenig Forschen im Internet führt einen dann zum manuellen Start mittels

jackd -v -d alsa -d hw:0

Das ging dann auch problemlos. Später – nach dem Überwinden einer weiteren Hürde – fand ich dann das schöne Tool “Qjackctl”, das das Starten und Überwachen des Audio-Servers QT-basiert über eine gelungene graphische Oberfläche ermöglicht.

qjackctl_2

Ein Test des Soundservers ist möglich, indem man z.B. “amarok” startet und unter den Einstellungen für die Audio-Ausgabe “Jack” wählt. Das funktionierte auch schön, bis ich nach einer Weile kurzzeitige Aussetzer bemerkte, wenn man andere ressourcenlastige Applikationen mit hoher Priorität startete. (Dies resultiert in etwas kryptischen xrun-Meldungen). Ich spielte danach an Pufferparametern, Periodenparametern und Prioritätsparametern im Jack-Aufruf herum ( z.B. : -P 0 -p 512 -n 2 ). Nur mit begrenztem Erfolg. Es gab dennoch immer mal wieder einen kleinen Aussetzer. Für die Analyse hatte ich bisher keine Zeit. Da ich aber was von Echtzeit gelesen hatte, wollte ich nun Jack mit Echtzeit-Priorität starten.

Zweite Hürde: Jack mit Echtzeitpriorität?
Der (gem. man-Doku) erforderliche Aufruf

jackd -v -R -d alsa -d hw:0

scheitert mit einer Meldung des Systems, dass man dazu keine Berechtigungen hat. Gut so! Warum sollte ein beliebiger User das auch dürfen; das wäre ein immenses Sicherheitsrisiko. Jack als root zu starten ist aus dem gleichen Grund unsinnig. Das bringt einen auf den Gedanken, dass man wohl in den PAM-Dateien einen Einstellung vornehmen muss. Tatsächlich sind Einträge in der Datei /etc/security/limits.conf gefragt. Will man etwa genau einem User namens “ralph” die notwendigen Rechte geben, so sind folgende Einträge angebracht :

ralf – rtprio 99
ralf – memlock unlimited
ralf – nice -19

(Für Gruppen greife man statt “ralph” zu “@gruppenname”. )

Der User Ralf darf dann tatsächlich nach einem neuen Login jackd -R ausführen. Und nun läuft der Sound auch völlig ruckelfrei und problemlos in fast jeder Belastungslage des Systems.

Dritte Hürde: JackEQ läuft nicht ohne vorgegebenen Suchpfad
Im nächsten Schritt möchte man gerne JackEQ und andere Programme aus dem Jack-Umfeld starten. Das misslingt zumindest im Fall von JackEQ jedoch. Startet man vom Terminal aus, so erhält man die Meldung, dass die Library dj_eq_1901.so nicht gefunden wird. Nach einer kurzen Recherche findet man, dass man das Paket xxxx installieren muss. Leider reicht das auch nicht, denn JackEQ vermutet die Bibliotheken zumindest auf einem 64Bit-
System im falschen Verzeichnis. Eine Suche im Internet ergibt dann, dass man unter Opensuse tunlichst

export LADSPA_PATH=”/usr/lib64/ladspa”

in eine der profile-Dateien für den Start der Shell einfügen sollte. Danach werden die Bibliotheken auch gefunden und JackEQ verrichtet seinen Dienst zusammen mit Jack.

Fazit
Jack in Ehren – aber an der Installationsfreundlichkeit lässt sich noch Einiges verbessern.

Tja, und was war eigentlich der Anlass für das Ganze? Ach ja, Rosegarden. Ein Test zeigt, dass auch dieses Programm läuft – zumindest im Prinzip. Auch hier meldet das Programm nämlich das Fehlen diverser benötigter Zusatzprogramme, die sich jedoch nachinstallieren lassen. Zu Rosegarden mehr an anderer Stelle.

Links
http://lau.linuxaudio.org/jack/
http://jackaudio.org/faq