Schlüsselkategorien erzeugen und editieren

## Schlüsselkategorien erzeugen und editieren

Sie können in Kleopatra das Aussehen von Schlüsseln auf der Basis eines Konzepts namens Schlüsselkategorien verändern. Schlüsselkategorien werden auch benutzt, um die Liste der Zertifikate zu filtern. In diesem Abschnitt beschreiben wir, wie Sie die verfügbaren Kategorien editieren und neue hinzufügen können.

Um herauszufinden, zu welcher Kategorie ein Schlüssel gehört, versucht Kleopatra, den Schlüssel mit einer Folge von Schlüsselfiltern abzugleichen, die in der Datei `libkleopatrarc` konfiguriert sind. Der erste passende Filter definiert die Kategorie, basierend auf dem später erläuterten Konzept der Genauigkeit.

Jeder Schlüsselfilter ist in einer Konfigurationsgruppe namens `Key Filter #`n`` definiert, wobei `n` eine Zahl ist, beginnend bei `0`.

Die einzigen obligatorischen Schlüssel in einer solchen `Key Filter #`n``-Gruppe sind der `Name`, der den Namen der Kategorie enthält, wie er im Einrichtungsdialog angezeigt wird und `id`, die als Verweis auf Filter in anderen Abschnitten der Einrichtungsdatei dient, wie zum Beispiel `View #`n``.

Tabelle 6.1, „Schlüsselfilter-Konfigurationsschlüssel, die Anzeigeeigenschaften definieren“ führt alle Schlüssel auf, die die Anzeigeeigenschaften von Schlüsseln dieser Kategorie definieren (d. h. die Schlüssel, die im Einrichtungsdialog editiert werden können), wohingegen Tabelle 6.2, „Schlüsselfilter-Konfigurationsschlüssel, die Filterkriterien definieren“ alle Schlüssel auflistet, die die Kriterien definieren, anhand denen Filter mit Schlüsseln verglichen werden.

Tabelle 6.1. Schlüsselfilter-Konfigurationsschlüssel, die Anzeigeeigenschaften definieren

Konfigurationsschlüssel | Typ | Beschreibung
--- | --- | ---
`background-color` | Farbe | Die zu verwendende Hintergrundfarbe. Wenn dieser Schlüssel nicht vorhanden ist, wird als Vorgabe die global definierte Hintergrundfarbe für Listenansichten verwendet.
`foreground-color` | Farbe | Die zu verwendende Vordergrundfarbe. Wenn dieser Schlüssel nicht vorhanden ist, wird als Vorgabe die global definierte Vordergrundfarbe für Listenansichten verwendet.
`font` | Zeichensatz | Der zu verwendende benutzerdefinierte Zeichensatz. Der Zeichensatz wird auf die für Listenansichten konfigurierte Größe skaliert, und mit Zeichensatzattributen (siehe unten) versehen.
`font-bold` | Boolescher Wert | Wenn dieser Schlüssel den Wert `true` hat und `font` nicht gesetzt ist, dann wird der Standard-Listen-Zeichensatz in Fettschrift (so verfügbar) verwendet. Wenn auch `font` vorhanden ist, wird dieser Schlüssel ignoriert.
`font-italic` | Boolescher Wert | Analog zu `font-bold`, aber für kursiven Schriftstil anstelle von fettem.
`font-strikeout` | Boolescher Wert | Wenn dieser Schlüssel den Wert `true` hat, dann wird eine zentrierte Linie durch den Zeichensatz gezogen. Wird auch dann verwendet, wenn `font` gesetzt ist.
`icon` | Text | Der Name eines Icons, das in der ersten Spalte angezeigt wird. Noch nicht implementiert.

Tabelle 6.2. Schlüsselfilter-Konfigurationsschlüssel, die Filterkriterien definieren

Konfigurationsschlüssel | Typ | Wenn dieser Schlüssel angegeben ist, passt der Filter, wenn ...
--- | --- | ---
`is-revoked` | Boolescher Wert | der Schlüssel widerrufen worden ist.
`match-context` | Kontext[a] | der Kontext der auf diesen Filter passt.
`is-expired` | Boolescher Wert | der Schlüssel abgelaufen ist.
`is-disabled` | Boolescher Wert | der Schlüssel vom Benutzer deaktiviert worden ist (nicht mehr benutzt werden soll). Wird bei S/MIME-Schlüsseln ignoriert.
`is-root-certificate` | Boolescher Wert | der Schlüssel ein Wurzelzertifikat ist. Wird bei OpenPGP-Schlüsseln ignoriert.
`can-encrypt` | Boolescher Wert | der Schlüssel zum Verschlüsseln verwendet werden kann.
`can-sign` | Boolescher Wert | der Schlüssel zum Signieren verwendet werden kann.
`can-certify` | Boolescher Wert | der Schlüssel zum Signieren (Zertifizieren) anderer Schlüssel verwendet werden kann.
`can-authenticate` | Boolescher Wert | der Schlüssel zur Authentifikation (etwa als TLS-Client-Zertifikat) verwendet werden kann.
`is-qualified` | Boolescher Wert | der Schlüssel kann benutzt werden, um qualifizierte Signaturen zu erzeugen, wie sie im deutschen Signaturgesetz ((Gesetz über Rahmenbedingungen für elektronische Signaturen) definiert sind.
`is-cardkey` | Boolescher Wert | der Schlüssel wird auf einer Chipkarte und nicht auf dem Rechner gespeichert.
`has-secret-key` | Boolescher Wert | der geheime Schlüssel zu diesem Schlüsselpaar zur Verfügung steht.
`is-openpgp-key` | Boolescher Wert | der Schlüssel ein OpenPGP-Schlüssel (`true`) oder ein S/MIME-Schlüssel (`false`) ist.
`was-validated` | Boolescher Wert | der Schlüssel überprüft worden ist.
``präfix`-ownertrust` | Gültigkeit[b] | der Schlüssel hat genau (`präfix` = `is`), hat alle außer (`präfix` = `is-not`), hat mindestens (`präfix` = `is-at-least`), oder hat höchstens (`präfix` = `is-at-most`) das Eigentümer-Vertrauen, das als Wert des Konfigurationsschlüssels angegeben ist. Wenn mehr als ein ``präfix`-ownertrust`-Schlüssel (mit unterschiedlichen `präfix`-Werten) in einer einzigen Gruppe steht, ist das Verhalten undefiniert.
``präfix`-validity` | Gültigkeit | Entsprechend ``präfix`-ownertrust`, aber für die Gültigkeit von Schlüsseln anstelle vom Eigentümer-Vertrauen.
[a] Kontext besteht aus einer Aufzählung der folgenden zulässigen Werte: `appearance`, `filtering` und `any`. [b] Die Gültigkeit ist eine (geordnete) Aufzählung mit den folgenden zulässigen Werten: `unknown`, `undefined`, `never`, `marginal`, `full` und `ultimate`. Eine vollständige Beschreibung finden Sie in den Handbüchern zu GPG und GpgSM.

### Anmerkung

Einige der interessanteren Kriterien wie `is-revoked` oder `is-expired` funktionieren nur bei validierten Schlüsseln, weswegen standardmäßig nur überprüfte Schlüssel auf Widerruf oder Ablauf geprüft werden, auch wenn es Ihnen frei steht, diese zusätzlichen Abfragen zu entfernen.

Zusätzlich zu den oben genannten Konfigurationsschlüsseln kann ein Schlüsselfilter auch noch die Attribute `id` und `match-contexts` haben.

Mit der `id` des Filters ist überall in der Konfiguration der Zugriff auf den Schlüsselfilter möglich, z. B. in Kleopatras Konfiguration des Erscheinungsbilds. Der Standardwert der `id` ist der Name der Gruppe in der Konfigurationsdatei, falls nicht anders angegeben. Der Wert darf auch nicht gesetzt sein. Die `id` wird durch Kleopatra nicht verarbeitet und kann daher einen beliebigen Text enthalten, der aber eindeutig sein muss.

Das Attribut `match-contexts` begrenzt die Anwendungsmöglichkeit des Filters. Es sind zurzeit zwei Kontexte definiert: `appearance` wird benutzt zur Definition von Farben und Schriften für die Anzeige. Mit `filtering` werden Zertifikate in der Ansicht ein- oder ausgeblendet. `any` kann zur Kennzeichnung aller aktuell definierten Kontexte verwendet werden. Dies ist die Voreinstellung, wenn `match-contexts` nicht definiert ist oder sich ansonsten kein Kontext ergibt. Damit wird sichergestellt, dass es keinen Filter ohne Kontext gibt.

Ein Eintrag besteht aus einer Liste von Zeichengruppen, getrennt durch Leerzeichen. Jeder Zeichengruppe kann ein Ausrufungszeichen (`!`) vorangestellt werden, damit wird der Ausdruck verneint. Die Zeichengruppen werden der Reihe nach auf eine interne Liste von Kontexten angewendet, die zu Beginn leer ist. Das lässt sich am Besten an einem Beispiel erklären: `any !appearance` entspricht `filtering`, und `appearance !appearance` ebenso wie `!any` ergeben eine leere Menge. Die letzten beiden Ergebnisse werden intern durch `any` ersetzt, da sie keinerlei Kontext ergeben.

Nicht angegebene Kriterien (Kriterien, deren Konfigurationsschlüssel nicht angegeben ist), werden nicht abgefragt. Wenn ein Kriterium angegeben ist, dann wird es abgefragt und muss zutreffen, damit der Filter als Ganzes zutrifft; die einzelnen Kriterien werden also UND-verknüpft.

Jeder Filter beinhaltet eine „Genauigkeit“, die alle passenden Filter bewertet. Der genauere Filter wird dem weniger genauen vorgezogen. Haben zwei Filter die gleiche Genauigkeit, wird der zuerst in der Konfigurationsdatei aufgeführte benutzt. Die Genauigkeit entspricht der Anzahl der Kriterien des Filters.

Beispiel 6.1. Beispiele für Schlüsselfilter

Um alle abgelaufenen, aber nicht widerrufenen Wurzel-Zertifikate abzufragen, würden Sie den folgenden Schlüsselfilter verwenden:

    [Key Filter #n]
    Name=abgelaufen, aber nicht widerrufen
    was-validated=true
    is-expired=true
    is-revoked=false
    is-root-certificate=true
    ; ( specificity 4 )

Um alle deaktivierten OpenPGP-Schlüssel (derzeit noch nicht von Kleopatra unterstützt) mit einem Eigentümer-Vertrauen von mindestens „marginal“ abzudecken, verwenden Sie:

    [Key Filter #n]
    Name=deaktivierte OpenPGP-Schlüssel mit einem Ownertrust von marginal oder besser
    is-openpgp=true
    is-disabled=true
    is-at-least-ownertrust=marginal
    ; ( specificity 3 )