Split message resources into separate per-command resource files.

Since picocli 4.7.0, subcommands inherit resources from their
parent commands, so we can store shared stuff like error msgs
etc. in the parent (sop) resources file.

This enables us to rename the parent command downstream (e.g. in
pgpainless-cli).

Only the help command breaks when renaming the parent command.
TODO: Fix
This commit is contained in:
Paul Schaub 2022-07-25 19:15:47 +02:00
parent 3801a644ef
commit fa52df385e
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
39 changed files with 307 additions and 230 deletions

View file

@ -14,12 +14,12 @@ import sop.operation.Armor;
import java.io.IOException; import java.io.IOException;
@CommandLine.Command(name = "armor", @CommandLine.Command(name = "armor",
resourceBundle = "sop", resourceBundle = "armor",
exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE) exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE)
public class ArmorCmd extends AbstractSopCmd { public class ArmorCmd extends AbstractSopCmd {
@CommandLine.Option(names = {"--label"}, @CommandLine.Option(names = {"--label"},
descriptionKey = "sop.armor.usage.option.label", descriptionKey = "usage.option.label",
paramLabel = "{auto|sig|key|cert|message}") paramLabel = "{auto|sig|key|cert|message}")
ArmorLabel label; ArmorLabel label;

View file

@ -12,7 +12,7 @@ import sop.operation.Dearmor;
import java.io.IOException; import java.io.IOException;
@CommandLine.Command(name = "dearmor", @CommandLine.Command(name = "dearmor",
resourceBundle = "sop", resourceBundle = "dearmor",
exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE) exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE)
public class DearmorCmd extends AbstractSopCmd { public class DearmorCmd extends AbstractSopCmd {

View file

@ -24,7 +24,7 @@ import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@CommandLine.Command(name = "decrypt", @CommandLine.Command(name = "decrypt",
resourceBundle = "sop", resourceBundle = "decrypt",
exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE) exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE)
public class DecryptCmd extends AbstractSopCmd { public class DecryptCmd extends AbstractSopCmd {
@ -40,49 +40,49 @@ public class DecryptCmd extends AbstractSopCmd {
@CommandLine.Option( @CommandLine.Option(
names = {OPT_SESSION_KEY_OUT}, names = {OPT_SESSION_KEY_OUT},
descriptionKey = "sop.decrypt.usage.option.session_key_out", descriptionKey = "usage.option.session_key_out",
paramLabel = "SESSIONKEY") paramLabel = "SESSIONKEY")
String sessionKeyOut; String sessionKeyOut;
@CommandLine.Option( @CommandLine.Option(
names = {OPT_WITH_SESSION_KEY}, names = {OPT_WITH_SESSION_KEY},
descriptionKey = "sop.decrypt.usage.option.with_session_key", descriptionKey = "usage.option.with_session_key",
paramLabel = "SESSIONKEY") paramLabel = "SESSIONKEY")
List<String> withSessionKey = new ArrayList<>(); List<String> withSessionKey = new ArrayList<>();
@CommandLine.Option( @CommandLine.Option(
names = {OPT_WITH_PASSWORD}, names = {OPT_WITH_PASSWORD},
descriptionKey = "sop.decrypt.usage.option.with_password", descriptionKey = "usage.option.with_password",
paramLabel = "PASSWORD") paramLabel = "PASSWORD")
List<String> withPassword = new ArrayList<>(); List<String> withPassword = new ArrayList<>();
@CommandLine.Option(names = {OPT_VERIFY_OUT}, @CommandLine.Option(names = {OPT_VERIFY_OUT},
descriptionKey = "sop.decrypt.usage.option.verify_out", descriptionKey = "usage.option.verify_out",
paramLabel = "VERIFICATIONS") paramLabel = "VERIFICATIONS")
String verifyOut; String verifyOut;
@CommandLine.Option(names = {OPT_VERIFY_WITH}, @CommandLine.Option(names = {OPT_VERIFY_WITH},
descriptionKey = "sop.decrypt.usage.option.certs", descriptionKey = "usage.option.certs",
paramLabel = "CERT") paramLabel = "CERT")
List<String> certs = new ArrayList<>(); List<String> certs = new ArrayList<>();
@CommandLine.Option(names = {OPT_NOT_BEFORE}, @CommandLine.Option(names = {OPT_NOT_BEFORE},
descriptionKey = "sop.decrypt.usage.option.not_before", descriptionKey = "usage.option.not_before",
paramLabel = "DATE") paramLabel = "DATE")
String notBefore = "-"; String notBefore = "-";
@CommandLine.Option(names = {OPT_NOT_AFTER}, @CommandLine.Option(names = {OPT_NOT_AFTER},
descriptionKey = "sop.decrypt.usage.option.not_after", descriptionKey = "usage.option.not_after",
paramLabel = "DATE") paramLabel = "DATE")
String notAfter = "now"; String notAfter = "now";
@CommandLine.Parameters(index = "0..*", @CommandLine.Parameters(index = "0..*",
descriptionKey = "sop.decrypt.usage.param.keys", descriptionKey = "usage.param.keys",
paramLabel = "KEY") paramLabel = "KEY")
List<String> keys = new ArrayList<>(); List<String> keys = new ArrayList<>();
@CommandLine.Option(names = {OPT_WITH_KEY_PASSWORD}, @CommandLine.Option(names = {OPT_WITH_KEY_PASSWORD},
descriptionKey = "sop.decrypt.usage.option.with_key_password", descriptionKey = "usage.option.with_key_password",
paramLabel = "PASSWORD") paramLabel = "PASSWORD")
List<String> withKeyPassword = new ArrayList<>(); List<String> withKeyPassword = new ArrayList<>();

View file

@ -17,36 +17,36 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@CommandLine.Command(name = "encrypt", @CommandLine.Command(name = "encrypt",
resourceBundle = "sop", resourceBundle = "encrypt",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class EncryptCmd extends AbstractSopCmd { public class EncryptCmd extends AbstractSopCmd {
@CommandLine.Option(names = "--no-armor", @CommandLine.Option(names = "--no-armor",
descriptionKey = "sop.encrypt.usage.option.armor", descriptionKey = "usage.option.armor",
negatable = true) negatable = true)
boolean armor = true; boolean armor = true;
@CommandLine.Option(names = {"--as"}, @CommandLine.Option(names = {"--as"},
descriptionKey = "sop.encrypt.usage.option.type", descriptionKey = "usage.option.type",
paramLabel = "{binary|text}") paramLabel = "{binary|text}")
EncryptAs type; EncryptAs type;
@CommandLine.Option(names = "--with-password", @CommandLine.Option(names = "--with-password",
descriptionKey = "sop.encrypt.usage.option.with_password", descriptionKey = "usage.option.with_password",
paramLabel = "PASSWORD") paramLabel = "PASSWORD")
List<String> withPassword = new ArrayList<>(); List<String> withPassword = new ArrayList<>();
@CommandLine.Option(names = "--sign-with", @CommandLine.Option(names = "--sign-with",
descriptionKey = "sop.encrypt.usage.option.sign_with", descriptionKey = "usage.option.sign_with",
paramLabel = "KEY") paramLabel = "KEY")
List<String> signWith = new ArrayList<>(); List<String> signWith = new ArrayList<>();
@CommandLine.Option(names = "--with-key-password", @CommandLine.Option(names = "--with-key-password",
descriptionKey = "sop.encrypt.usage.option.with_key_password", descriptionKey = "usage.option.with_key_password",
paramLabel = "PASSWORD") paramLabel = "PASSWORD")
List<String> withKeyPassword = new ArrayList<>(); List<String> withKeyPassword = new ArrayList<>();
@CommandLine.Parameters(descriptionKey = "sop.encrypt.usage.param.certs", @CommandLine.Parameters(descriptionKey = "usage.param.certs",
index = "0..*", index = "0..*",
paramLabel = "CERTS") paramLabel = "CERTS")
List<String> certs = new ArrayList<>(); List<String> certs = new ArrayList<>();

View file

@ -13,12 +13,12 @@ import sop.exception.SOPGPException;
import sop.operation.ExtractCert; import sop.operation.ExtractCert;
@CommandLine.Command(name = "extract-cert", @CommandLine.Command(name = "extract-cert",
resourceBundle = "sop", resourceBundle = "extract-cert",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class ExtractCertCmd extends AbstractSopCmd { public class ExtractCertCmd extends AbstractSopCmd {
@CommandLine.Option(names = "--no-armor", @CommandLine.Option(names = "--no-armor",
descriptionKey = "sop.extract-cert.usage.option.armor", descriptionKey = "usage.option.armor",
negatable = true) negatable = true)
boolean armor = true; boolean armor = true;

View file

@ -15,20 +15,20 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@CommandLine.Command(name = "generate-key", @CommandLine.Command(name = "generate-key",
resourceBundle = "sop", resourceBundle = "generate-key",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class GenerateKeyCmd extends AbstractSopCmd { public class GenerateKeyCmd extends AbstractSopCmd {
@CommandLine.Option(names = "--no-armor", @CommandLine.Option(names = "--no-armor",
descriptionKey = "sop.generate-key.usage.option.armor", descriptionKey = "usage.option.armor",
negatable = true) negatable = true)
boolean armor = true; boolean armor = true;
@CommandLine.Parameters(descriptionKey = "sop.generate-key.usage.option.user_id") @CommandLine.Parameters(descriptionKey = "usage.option.user_id")
List<String> userId = new ArrayList<>(); List<String> userId = new ArrayList<>();
@CommandLine.Option(names = "--with-key-password", @CommandLine.Option(names = "--with-key-password",
descriptionKey = "sop.generate-key.usage.option.with_key_password", descriptionKey = "usage.option.with_key_password",
paramLabel = "PASSWORD") paramLabel = "PASSWORD")
String withKeyPassword; String withKeyPassword;

View file

@ -14,18 +14,18 @@ import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@CommandLine.Command(name = "inline-detach", @CommandLine.Command(name = "inline-detach",
resourceBundle = "sop", resourceBundle = "inline-detach",
exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE) exitCodeOnInvalidInput = SOPGPException.UnsupportedOption.EXIT_CODE)
public class InlineDetachCmd extends AbstractSopCmd { public class InlineDetachCmd extends AbstractSopCmd {
@CommandLine.Option( @CommandLine.Option(
names = {"--signatures-out"}, names = {"--signatures-out"},
descriptionKey = "sop.inline-detach.usage.option.signatures_out", descriptionKey = "usage.option.signatures_out",
paramLabel = "SIGNATURES") paramLabel = "SIGNATURES")
String signaturesOut; String signaturesOut;
@CommandLine.Option(names = "--no-armor", @CommandLine.Option(names = "--no-armor",
descriptionKey = "sop.inline-detach.usage.option.armor", descriptionKey = "usage.option.armor",
negatable = true) negatable = true)
boolean armor = true; boolean armor = true;

View file

@ -17,26 +17,26 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@CommandLine.Command(name = "inline-sign", @CommandLine.Command(name = "inline-sign",
resourceBundle = "sop", resourceBundle = "inline-sign",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class InlineSignCmd extends AbstractSopCmd { public class InlineSignCmd extends AbstractSopCmd {
@CommandLine.Option(names = "--no-armor", @CommandLine.Option(names = "--no-armor",
descriptionKey = "sop.inline-sign.usage.option.armor", descriptionKey = "usage.option.armor",
negatable = true) negatable = true)
boolean armor = true; boolean armor = true;
@CommandLine.Option(names = "--as", @CommandLine.Option(names = "--as",
descriptionKey = "sop.inline-sign.usage.option.as", descriptionKey = "usage.option.as",
paramLabel = "{binary|text|cleartextsigned}") paramLabel = "{binary|text|cleartextsigned}")
InlineSignAs type; InlineSignAs type;
@CommandLine.Parameters(descriptionKey = "sop.inline-sign.usage.parameter.keys", @CommandLine.Parameters(descriptionKey = "usage.parameter.keys",
paramLabel = "KEYS") paramLabel = "KEYS")
List<String> secretKeyFile = new ArrayList<>(); List<String> secretKeyFile = new ArrayList<>();
@CommandLine.Option(names = "--with-key-password", @CommandLine.Option(names = "--with-key-password",
descriptionKey = "sop.inline-sign.usage.option.with_key_password", descriptionKey = "usage.option.with_key_password",
paramLabel = "PASSWORD") paramLabel = "PASSWORD")
List<String> withKeyPassword = new ArrayList<>(); List<String> withKeyPassword = new ArrayList<>();

View file

@ -19,27 +19,27 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@CommandLine.Command(name = "inline-verify", @CommandLine.Command(name = "inline-verify",
resourceBundle = "sop", resourceBundle = "inline-verify",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class InlineVerifyCmd extends AbstractSopCmd { public class InlineVerifyCmd extends AbstractSopCmd {
@CommandLine.Parameters(arity = "1..*", @CommandLine.Parameters(arity = "1..*",
descriptionKey = "sop.inline-verify.usage.parameter.certs", descriptionKey = "usage.parameter.certs",
paramLabel = "CERT") paramLabel = "CERT")
List<String> certificates = new ArrayList<>(); List<String> certificates = new ArrayList<>();
@CommandLine.Option(names = {"--not-before"}, @CommandLine.Option(names = {"--not-before"},
descriptionKey = "sop.inline-verify.usage.option.not_before", descriptionKey = "usage.option.not_before",
paramLabel = "DATE") paramLabel = "DATE")
String notBefore = "-"; String notBefore = "-";
@CommandLine.Option(names = {"--not-after"}, @CommandLine.Option(names = {"--not-after"},
descriptionKey = "sop.inline-verify.usage.option.not_after", descriptionKey = "usage.option.not_after",
paramLabel = "DATE") paramLabel = "DATE")
String notAfter = "now"; String notAfter = "now";
@CommandLine.Option(names = "--verifications-out", @CommandLine.Option(names = "--verifications-out",
descriptionKey = "sop.inline-verify.usage.option.verifications_out") descriptionKey = "usage.option.verifications_out")
String verificationsOut; String verificationsOut;
@Override @Override

View file

@ -20,31 +20,31 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@CommandLine.Command(name = "sign", @CommandLine.Command(name = "sign",
resourceBundle = "sop", resourceBundle = "detached-sign",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class SignCmd extends AbstractSopCmd { public class SignCmd extends AbstractSopCmd {
@CommandLine.Option(names = "--no-armor", @CommandLine.Option(names = "--no-armor",
descriptionKey = "sop.sign.usage.option.armor", descriptionKey = "usage.option.armor",
negatable = true) negatable = true)
boolean armor = true; boolean armor = true;
@CommandLine.Option(names = "--as", @CommandLine.Option(names = "--as",
descriptionKey = "sop.sign.usage.option.as", descriptionKey = "usage.option.as",
paramLabel = "{binary|text}") paramLabel = "{binary|text}")
SignAs type; SignAs type;
@CommandLine.Parameters(descriptionKey = "sop.sign.usage.parameter.keys", @CommandLine.Parameters(descriptionKey = "usage.parameter.keys",
paramLabel = "KEYS") paramLabel = "KEYS")
List<String> secretKeyFile = new ArrayList<>(); List<String> secretKeyFile = new ArrayList<>();
@CommandLine.Option(names = "--with-key-password", @CommandLine.Option(names = "--with-key-password",
descriptionKey = "sop.sign.usage.option.with_key_password", descriptionKey = "usage.option.with_key_password",
paramLabel = "PASSWORD") paramLabel = "PASSWORD")
List<String> withKeyPassword = new ArrayList<>(); List<String> withKeyPassword = new ArrayList<>();
@CommandLine.Option(names = "--micalg-out", @CommandLine.Option(names = "--micalg-out",
descriptionKey = "sop.sign.usage.option.micalg_out", descriptionKey = "usage.option.micalg_out",
paramLabel = "MICALG") paramLabel = "MICALG")
String micAlgOut; String micAlgOut;

View file

@ -17,28 +17,28 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
@CommandLine.Command(name = "verify", @CommandLine.Command(name = "verify",
resourceBundle = "sop", resourceBundle = "detached-verify",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class VerifyCmd extends AbstractSopCmd { public class VerifyCmd extends AbstractSopCmd {
@CommandLine.Parameters(index = "0", @CommandLine.Parameters(index = "0",
descriptionKey = "sop.verify.usage.parameter.signature", descriptionKey = "usage.parameter.signature",
paramLabel = "SIGNATURE") paramLabel = "SIGNATURE")
String signature; String signature;
@CommandLine.Parameters(index = "0..*", @CommandLine.Parameters(index = "0..*",
arity = "1..*", arity = "1..*",
descriptionKey = "sop.verify.usage.parameter.certs", descriptionKey = "usage.parameter.certs",
paramLabel = "CERT") paramLabel = "CERT")
List<String> certificates = new ArrayList<>(); List<String> certificates = new ArrayList<>();
@CommandLine.Option(names = {"--not-before"}, @CommandLine.Option(names = {"--not-before"},
descriptionKey = "sop.verify.usage.option.not_before", descriptionKey = "usage.option.not_before",
paramLabel = "DATE") paramLabel = "DATE")
String notBefore = "-"; String notBefore = "-";
@CommandLine.Option(names = {"--not-after"}, @CommandLine.Option(names = {"--not-after"},
descriptionKey = "sop.verify.usage.option.not_after", descriptionKey = "usage.option.not_after",
paramLabel = "DATE") paramLabel = "DATE")
String notAfter = "now"; String notAfter = "now";

View file

@ -9,7 +9,7 @@ import sop.cli.picocli.Print;
import sop.cli.picocli.SopCLI; import sop.cli.picocli.SopCLI;
import sop.operation.Version; import sop.operation.Version;
@CommandLine.Command(name = "version", resourceBundle = "sop", @CommandLine.Command(name = "version", resourceBundle = "version",
exitCodeOnInvalidInput = 37) exitCodeOnInvalidInput = 37)
public class VersionCmd extends AbstractSopCmd { public class VersionCmd extends AbstractSopCmd {
@ -18,11 +18,11 @@ public class VersionCmd extends AbstractSopCmd {
static class Exclusive { static class Exclusive {
@CommandLine.Option(names = "--extended", @CommandLine.Option(names = "--extended",
descriptionKey = "sop.version.usage.option.extended") descriptionKey = "usage.option.extended")
boolean extended; boolean extended;
@CommandLine.Option(names = "--backend", @CommandLine.Option(names = "--backend",
descriptionKey = "sop.version.usage.option.backend") descriptionKey = "usage.option.backend")
boolean backend; boolean backend;
} }

View file

@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Add ASCII Armor to standard input
usage.option.label=Label to be used in the header and tail of the armoring

View file

@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Schütze Standard-Eingabe mit ASCII Armor
usage.option.label=Label für Kopf- und Fußzeile der ASCII Armor

View file

@ -0,0 +1,4 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Remove ASCII Armor from standard input

View file

@ -0,0 +1,4 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Entferne ASCII Armor von Standard-Eingabe

View file

@ -0,0 +1,23 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Decrypt a message from standard input
usage.option.session_key_out=Can be used to learn the session key on successful decryption
usage.option.with_session_key.0=Symmetric message key (session key).
usage.option.with_session_key.1=Enables decryption of the "CIPHERTEXT" using the session key directly against the "SEIPD" packet.
usage.option.with_session_key.2=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...)
usage.option.with_password.0=Symmetric passphrase to decrypt the message with.
usage.option.with_password.1=Enables decryption based on any "SKESK" packets in the "CIPHERTEXT".
usage.option.with_password_2=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...)
usage.option.verify_out=Emits signature verification status to the designated output
usage.option.certs=Certificates for signature verification
usage.option.not_before.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
usage.option.not_before.1=Reject signatures with a creation date not in range.
usage.option.not_before.2=Defaults to beginning of time ('-').
usage.option.not_after.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
usage.option.not_after.1=Reject signatures with a creation date not in range.
usage.option.not_after.2=Defaults to current system time ('now').
usage.option.not_after.3=Accepts special value '-' for end of time.
usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
usage.param.keys=Secret keys to attempt decryption with

View file

@ -0,0 +1,23 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Entschlüssle eine Nachricht von Standard-Eingabe
usage.option.session_key_out=Extrahiere den Nachrichtenschlüssel nach erfolgreicher Entschlüsselung
usage.option.with_session_key.0=Symmetrischer Nachrichtenschlüssel (Sitzungsschlüssel).
usage.option.with_session_key.1=Ermöglicht direkte Entschlüsselung des im "CIPHERTEXT" enhaltenen "SEIPD" Paketes mithilfe des Nachrichtenschlüssels.
usage.option.with_session_key.2=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
usage.option.with_password.0=Symmetrisches Passwort zur Entschlüsselung der Nachricht.
usage.option.with_password.1=Ermöglicht Entschlüsselung basierend auf im "CIPHERTEXT" enthaltenen "SKESK" Paketen.
usage.option.with_password.2=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
usage.option.verify_out=Schreibe Status der Signaturprüfung in angegebene Ausgabe
usage.option.certs=Zertifikate zur Signaturprüfung
usage.option.not_before.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
usage.option.not_before.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
usage.option.not_before.2=Standardmäßig: Anbeginn der Zeit ('-').
usage.option.not_after.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
usage.option.not_after.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
usage.option.not_after.2=Standardmäßig: Aktueller Zeitunkt ('now').
usage.option.not_after.3=Akzeptiert speziellen Wert '-' für das Ende aller Zeiten.
usage.option.with_key_password.0=Passwort zum Entsperren der privaten Schlüssel
usage.option.with_key_password.1=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
usage.param.keys=Private Schlüssel zum Entschlüsseln der Nachricht

View file

@ -0,0 +1,12 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Create a detached signature on the data from standard input
usage.option.armor=ASCII armor the output
usage.option.as.0=Specify the output format of the signed message
usage.option.as.1=Defaults to 'binary'.
usage-option.as.2=If '--as=text' and the input data is not valid UTF-8, sign fails with return code 53.
usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
usage.option.micalg_out=Emits the digest algorithm used to the specified file in a way that can be used to populate the micalg parameter for the PGP/MIME Content-Type (RFC3156)
usage.parameter.keys=Secret keys used for signing

View file

@ -0,0 +1,12 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Erstelle abgetrennte Signatur über Nachricht von Standard-Eingabe
usage.option.armor=Schütze Ausgabe mit ASCII Armor
usage.option.as.0=Bestimme Signaturformat der Nachricht.
usage.option.as.1=Standardmäßig: 'binary'.
usage-option.as.2=Ist die Standard-Eingabe nicht UTF-8 kodiert und '--as=text' gesetzt, so wird inline-sign Fehlercode 53 zurückgeben.
usage.option.with_key_password.0=Passwort zum Entsperren des privaten Schlüssels
usage.option.with_key_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
usage.option.micalg_out=Gibt den verwendeten Digest-Algorithmus an die angegebene Ausgabe in einer Form aus, die zum Auffüllen des micalg-Parameters für den PGP/MIME Content-Type (RFC3156) verwendet werden kann.
usage.parameter.keys=Private Signaturschlüssel

View file

@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Verify a detached signature over the data from standard input
usage.option.not_before.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
usage.option.not_before.1=Reject signatures with a creation date not in range.
usage.option.not_before.2=Defaults to beginning of time ("-").
usage.option.not_after.1=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
usage.option.not_after.2=Reject signatures with a creation date not in range.
usage.option.not_after.3=Defaults to current system time ("now").\
usage.option.not_after.4 = Accepts special value "-" for end of time.
usage.parameter.signature=Detached signature
usage.parameter.certs=Public key certificates for signature verification

View file

@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Prüfe eine abgetrennte Signatur über eine Nachricht von Standard-Eingabe
usage.option.not_before.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
usage.option.not_before.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
usage.option.not_before.2=Standardmäßig: Anbeginn der Zeit ('-').
usage.option.not_after.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
usage.option.not_after.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
usage.option.not_after.2=Standardmäßig: Aktueller Zeitunkt ('now').
usage.option.not_after.3=Akzeptiert speziellen Wert '-' für das Ende aller Zeiten.
usage.parameter.signature=Abgetrennte Signatur
usage.parameter.certs=Zertifikate (öffentliche Schlüssel) zur Signaturprüfung

View file

@ -0,0 +1,12 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Encrypt a message from standard input
usage.option.armor=ASCII armor the output
usage.option.type=Type of the input data. Defaults to 'binary'
usage.option.with_password.0=Encrypt the message with a password.
usage.option.with_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...)
usage.option.sign_with=Sign the output with a private key
usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
usage.param.certs=Certificates the message gets encrypted to

View file

@ -0,0 +1,12 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Verschlüssle eine Nachricht von Standard-Eingabe
usage.option.armor=Schütze Ausgabe mit ASCII Armor
usage.option.type=Format der Nachricht. Standardmäßig 'binary'
usage.option.with_password.0=Verschlüssle die Nachricht mit einem Passwort
usage.option.with_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
usage.option.sign_with=Signiere die Nachricht mit einem privaten Schlüssel
usage.option.with_key_password.0=Passwort zum Entsperren der privaten Schlüssel
usage.option.with_key_password.1=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
usage.param.certs=Zertifikate für die die Nachricht verschlüsselt werden soll

View file

@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Extract a public key certificate from a secret key from standard input
usage.option.armor=ASCII armor the output

View file

@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Extrahiere Zertifikat (öffentlichen Schlüssel) aus privatem Schlüssel von Standard-Eingabe
usage.option.armor=Schütze Ausgabe mit ASCII Armor

View file

@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Generate a secret key
usage.option.armor=ASCII armor the output
usage.option.user_id=User-ID, e.g. "Alice <alice@example.com>"
usage.option.with_key_password.0=Password to protect the private key with
usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).

View file

@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Generiere einen privaten Schlüssel
usage.option.armor=Schütze Ausgabe mit ASCII Armor
usage.option.user_id=Nutzer-ID, z.B.. "Alice <alice@example.com>"
usage.option.with_key_password.0=Passwort zum Schutz des privaten Schlüssels
usage.option.with_key_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).

View file

@ -0,0 +1,6 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Split signatures from a clearsigned message
usage.option.armor=ASCII armor the output
usage.option.signatures_out=Destination to which a detached signatures block will be written

View file

@ -0,0 +1,6 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Trenne Signaturen von Klartext-signierter Nachricht
usage.option.armor=Schütze Ausgabe mit ASCII Armor
usage.option.signatures_out=Schreibe abgetrennte Signaturen in Ausgabe

View file

@ -0,0 +1,14 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Create an inline-signed message from data on standard input
usage.option.armor=ASCII armor the output
usage.option.as.0=Specify the signature format of the signed message
usage.option.as.1='text' and 'binary' will produce inline-signed messages.
usage.option.as.2='cleartextsigned' will make use of the cleartext signature framework.
usage.option.as.3=Defaults to 'binary'.
usage.option.as.4=If '--as=text' and the input data is not valid UTF-8, inline-sign fails with return code 53.
usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
usage.option.micalg=Emits the digest algorithm used to the specified file in a way that can be used to populate the micalg parameter for the PGP/MIME Content-Type (RFC3156)
usage.parameter.keys=Secret keys used for signing

View file

@ -0,0 +1,14 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Signiere eine Nachricht von Standard-Eingabe mit eingebetteten Signaturen
usage.option.armor=Schütze Ausgabe mit ASCII Armor
usage.option.as.0=Bestimme Signaturformat der Nachricht.
usage.option.as.1='text' und 'binary' resultieren in eingebettete Signaturen.
usage.option.as.2='cleartextsigned' wird die Nachricht Klartext-signieren.
usage.option.as.3=Standardmäßig: 'binary'.
usage.option.as.4=Ist die Standard-Eingabe nicht UTF-8 kodiert und '--as=text' gesetzt, so wird inline-sign Fehlercode 53 zurückgeben.
usage.option.with_key_password.0=Passwort zum Entsperren des privaten Schlüssels
usage.option.with_key_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
usage.option.micalg=Gibt den verwendeten Digest-Algorithmus an die angegebene Ausgabe in einer Form aus, die zum Auffüllen des micalg-Parameters für den PGP/MIME Content-Type (RFC3156) verwendet werden kann.
usage.parameter.keys=Private Signaturschlüssel

View file

@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Verify inline-signed data from standard input
usage.option.not_before.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
usage.option.not_before.1=Reject signatures with a creation date not in range.
usage.option.not_before.2=Defaults to beginning of time ("-").
usage.option.not_after.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
usage.option.not_after.1=Reject signatures with a creation date not in range.
usage.option.not_after.2=Defaults to current system time ("now").
usage.option.not_after.3=Accepts special value "-" for end of time.
usage.option.verifications_out=File to write details over successful verifications to
usage.parameter.certs=Public key certificates for signature verification

View file

@ -0,0 +1,13 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Prüfe eingebettete Signaturen einer Nachricht von Standard-Eingabe
usage.option.not_before.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
usage.option.not_before.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
usage.option.not_before.2=Standardmäßig: Anbeginn der Zeit ('-').
usage.option.not_after.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
usage.option.not_after.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
usage.option.not_after.2=Standardmäßig: Aktueller Zeitunkt ('now').
usage.option.not_after.3=Akzeptiert speziellen Wert '-' für das Ende aller Zeiten.
usage.option.verifications_out=Schreibe Status der Signaturprüfung in angegebene Ausgabe
usage.parameter.certs=Zertifikate (öffentlich Schlüssel) zur Signaturprüfung

View file

@ -2,9 +2,9 @@
# #
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
sop.name=sop sop.name=sop
sop.usage.header=Stateless OpenPGP Protocol usage.header=Stateless OpenPGP Protocol
usage.footerHeading=Powered by picocli%n usage.footerHeading=Powered by picocli%n
sop.locale=Locale for description texts sop.locale=Locale for description texts
# Generic # Generic
usage.synopsisHeading=Usage:\u0020 usage.synopsisHeading=Usage:\u0020
@ -30,93 +30,10 @@ usage.exitCodeList.15=69:Unsupported subcommand
usage.exitCodeList.16=71:Unsupported special prefix (e.g. \"@env/@fd\") of indirect parameter usage.exitCodeList.16=71:Unsupported special prefix (e.g. \"@env/@fd\") of indirect parameter
usage.exitCodeList.17=73:Ambiguous input (a filename matching the designator already exists) usage.exitCodeList.17=73:Ambiguous input (a filename matching the designator already exists)
usage.exitCodeList.18=79:Key is not signing capable usage.exitCodeList.18=79:Key is not signing capable
# Subcommands
sop.armor.usage.header=Add ASCII Armor to standard input help.usage.header=Display usage information for the specified subcommand
sop.armor.usage.option.label=Label to be used in the header and tail of the armoring
sop.dearmor.usage.header=Remove ASCII Armor from standard input ## SHARED RESOURCES
sop.decrypt.usage.header=Decrypt a message from standard input
sop.decrypt.usage.option.session_key_out=Can be used to learn the session key on successful decryption
sop.decrypt.usage.option.with_session_key.0=Symmetric message key (session key).
sop.decrypt.usage.option.with_session_key.1=Enables decryption of the "CIPHERTEXT" using the session key directly against the "SEIPD" packet.
sop.decrypt.usage.option.with_session_key.2=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...)
sop.decrypt.usage.option.with_password.0=Symmetric passphrase to decrypt the message with.
sop.decrypt.usage.option.with_password.1=Enables decryption based on any "SKESK" packets in the "CIPHERTEXT".
sop.decrypt.usage.option.with_password_2=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...)
sop.decrypt.usage.option.verify_out=Emits signature verification status to the designated output
sop.decrypt.usage.option.certs=Certificates for signature verification
sop.decrypt.usage.option.not_before.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
sop.decrypt.usage.option.not_before.1=Reject signatures with a creation date not in range.
sop.decrypt.usage.option.not_before.2=Defaults to beginning of time ('-').
sop.decrypt.usage.option.not_after.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
sop.decrypt.usage.option.not_after.1=Reject signatures with a creation date not in range.
sop.decrypt.usage.option.not_after.2=Defaults to current system time ('now').
sop.decrypt.usage.option.not_after.3=Accepts special value '-' for end of time.
sop.decrypt.usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
sop.decrypt.usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
sop.decrypt.usage.param.keys=Secret keys to attempt decryption with
sop.encrypt.usage.header=Encrypt a message from standard input
sop.encrypt.usage.option.armor=ASCII armor the output
sop.encrypt.usage.option.type=Type of the input data. Defaults to 'binary'
sop.encrypt.usage.option.with_password.0=Encrypt the message with a password.
sop.encrypt.usage.option.with_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...)
sop.encrypt.usage.option.sign_with=Sign the output with a private key
sop.encrypt.usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
sop.encrypt.usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
sop.encrypt.usage.param.certs=Certificates the message gets encrypted to
sop.extract-cert.usage.header=Extract a public key certificate from a secret key from standard input
sop.extract-cert.usage.option.armor=ASCII armor the output
sop.generate-key.usage.header=Generate a secret key
sop.generate-key.usage.option.armor=ASCII armor the output
sop.generate-key.usage.option.user_id=User-ID, e.g. "Alice <alice@example.com>"
sop.generate-key.usage.option.with_key_password.0=Password to protect the private key with
sop.generate-key.usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
sop.inline-detach.usage.header=Split signatures from a clearsigned message
sop.inline-detach.usage.option.armor=ASCII armor the output
sop.inline-detach.usage.option.signatures_out=Destination to which a detached signatures block will be written
sop.inline-sign.usage.header=Create an inline-signed message from data on standard input
sop.inline-sign.usage.option.armor=ASCII armor the output
sop.inline-sign.usage.option.as.0=Specify the signature format of the signed message
sop.inline-sign.usage.option.as.1='text' and 'binary' will produce inline-signed messages.
sop.inline-sign.usage.option.as.2='cleartextsigned' will make use of the cleartext signature framework.
sop.inline-sign.usage.option.as.3=Defaults to 'binary'.
sop.inline-sign.usage.option.as.4=If '--as=text' and the input data is not valid UTF-8, inline-sign fails with return code 53.
sop.inline-sign.usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
sop.inline-sign.usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
sop.inline-sign.usage.option.micalg=Emits the digest algorithm used to the specified file in a way that can be used to populate the micalg parameter for the PGP/MIME Content-Type (RFC3156)
sop.inline-sign.usage.parameter.keys=Secret keys used for signing
sop.inline-verify.usage.header=Verify inline-signed data from standard input
sop.inline-verify.usage.option.not_before.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
sop.inline-verify.usage.option.not_before.1=Reject signatures with a creation date not in range.
sop.inline-verify.usage.option.not_before.2=Defaults to beginning of time ("-").
sop.inline-verify.usage.option.not_after.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
sop.inline-verify.usage.option.not_after.1=Reject signatures with a creation date not in range.
sop.inline-verify.usage.option.not_after.2=Defaults to current system time ("now").
sop.inline-verify.usage.option.not_after.3=Accepts special value "-" for end of time.
sop.inline-verify.usage.option.verifications_out=File to write details over successful verifications to
sop.inline-verify.usage.parameter.certs=Public key certificates for signature verification
sop.sign.usage.header=Create a detached signature on the data from standard input
sop.sign.usage.option.armor=ASCII armor the output
sop.sign.usage.option.as.0=Specify the output format of the signed message
sop.sign.usage.option.as.1=Defaults to 'binary'.
sop.sign.usage-option.as.2=If '--as=text' and the input data is not valid UTF-8, sign fails with return code 53.
sop.sign.usage.option.with_key_password.0=Passphrase to unlock the secret key(s).
sop.sign.usage.option.with_key_password.1=Is an INDIRECT data type (e.g. file, environment variable, file descriptor...).
sop.sign.usage.option.micalg_out=Emits the digest algorithm used to the specified file in a way that can be used to populate the micalg parameter for the PGP/MIME Content-Type (RFC3156)
sop.sign.usage.parameter.keys=Secret keys used for signing
sop.verify.usage.header=Verify a detached signature over the data from standard input
sop.verify.usage.option.not_before.0=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
sop.verify.usage.option.not_before.1=Reject signatures with a creation date not in range.
sop.verify.usage.option.not_before.2=Defaults to beginning of time ("-").
sop.verify.usage.option.not_after.1=ISO-8601 formatted UTC date (e.g. '2020-11-23T16:35Z)
sop.verify.usage.option.not_after.2=Reject signatures with a creation date not in range.
sop.verify.usage.option.not_after.3=Defaults to current system time ("now").\
sop.verify.usage.option.not_after.4 = Accepts special value "-" for end of time.
sop.verify.usage.parameter.signature=Detached signature
sop.verify.usage.parameter.certs=Public key certificates for signature verification
sop.version.usage.header=Display version information about the tool
sop.version.usage.option.extended=Print an extended version string
sop.version.usage.option.backend=Print information about the cryptographic backend
sop.help.usage.header=Display usage information for the specified subcommand
## Malformed Input ## Malformed Input
sop.error.input.malformed_session_key=Session keys are expected in the format 'ALGONUM:HEXKEY'. sop.error.input.malformed_session_key=Session keys are expected in the format 'ALGONUM:HEXKEY'.
sop.error.input.not_a_private_key=Input '%s' does not contain an OpenPGP private key. sop.error.input.not_a_private_key=Input '%s' does not contain an OpenPGP private key.

View file

@ -2,8 +2,9 @@
# #
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
sop.name=sop sop.name=sop
sop.usage.header=Stateless OpenPGP Protocol usage.header=Stateless OpenPGP Protocol
usage.footerHeading=Powered by Picocli%n usage.footerHeading=Powered by Picocli%n
sop.locale=Gebietsschema für Beschreibungstexte sop.locale=Gebietsschema für Beschreibungstexte
# Generic # Generic
usage.synopsisHeading=Aufruf:\u0020 usage.synopsisHeading=Aufruf:\u0020
@ -29,93 +30,10 @@ usage.exitCodeList.15=69:Nicht unterst
usage.exitCodeList.16=71:Nicht unterstützter Spezialprefix (z.B.. "@env/@fd") von indirektem Parameter usage.exitCodeList.16=71:Nicht unterstützter Spezialprefix (z.B.. "@env/@fd") von indirektem Parameter
usage.exitCodeList.17=73:Mehrdeutige Eingabe (ein Dateiname, der dem Bezeichner entspricht, existiert bereits) usage.exitCodeList.17=73:Mehrdeutige Eingabe (ein Dateiname, der dem Bezeichner entspricht, existiert bereits)
usage.exitCodeList.18=79:Schlüssel ist nicht fähig zu signieren usage.exitCodeList.18=79:Schlüssel ist nicht fähig zu signieren
# Subcommands
sop.armor.usage.header=Schütze Standard-Eingabe mit ASCII Armor
sop.armor.usage.option.label=Label für Kopf- und Fußzeile der ASCII Armor
sop.dearmor.usage.header=Entferne ASCII Armor von Standard-Eingabe
sop.decrypt.usage.header=Entschlüssle eine Nachricht von Standard-Eingabe
sop.decrypt.usage.option.session_key_out=Extrahiere den Nachrichtenschlüssel nach erfolgreicher Entschlüsselung
sop.decrypt.usage.option.with_session_key.0=Symmetrischer Nachrichtenschlüssel (Sitzungsschlüssel).
sop.decrypt.usage.option.with_session_key.1=Ermöglicht direkte Entschlüsselung des im "CIPHERTEXT" enhaltenen "SEIPD" Paketes mithilfe des Nachrichtenschlüssels.
sop.decrypt.usage.option.with_session_key.2=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.decrypt.usage.option.with_password.0=Symmetrisches Passwort zur Entschlüsselung der Nachricht.
sop.decrypt.usage.option.with_password.1=Ermöglicht Entschlüsselung basierend auf im "CIPHERTEXT" enthaltenen "SKESK" Paketen.
sop.decrypt.usage.option.with_password.2=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.decrypt.usage.option.verify_out=Schreibe Status der Signaturprüfung in angegebene Ausgabe
sop.decrypt.usage.option.certs=Zertifikate zur Signaturprüfung
sop.decrypt.usage.option.not_before.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
sop.decrypt.usage.option.not_before.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
sop.decrypt.usage.option.not_before.2=Standardmäßig: Anbeginn der Zeit ('-').
sop.decrypt.usage.option.not_after.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
sop.decrypt.usage.option.not_after.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
sop.decrypt.usage.option.not_after.2=Standardmäßig: Aktueller Zeitunkt ('now').
sop.decrypt.usage.option.not_after.3=Akzeptiert speziellen Wert '-' für das Ende aller Zeiten.
sop.decrypt.usage.option.with_key_password.0=Passwort zum Entsperren der privaten Schlüssel
sop.decrypt.usage.option.with_key_password.1=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.decrypt.usage.param.keys=Private Schlüssel zum Entschlüsseln der Nachricht
sop.encrypt.usage.header=Verschlüssle eine Nachricht von Standard-Eingabe
sop.encrypt.usage.option.armor=Schütze Ausgabe mit ASCII Armor
sop.encrypt.usage.option.type=Format der Nachricht. Standardmäßig 'binary'
sop.encrypt.usage.option.with_password.0=Verschlüssle die Nachricht mit einem Passwort
sop.encrypt.usage.option.with_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.encrypt.usage.option.sign_with=Signiere die Nachricht mit einem privaten Schlüssel
sop.encrypt.usage.option.with_key_password.0=Passwort zum Entsperren der privaten Schlüssel
sop.encrypt.usage.option.with_key_password.1=Ist INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.encrypt.usage.param.certs=Zertifikate für die die Nachricht verschlüsselt werden soll
sop.extract-cert.usage.header=Extrahiere Zertifikat (öffentlichen Schlüssel) aus privatem Schlüssel von Standard-Eingabe
sop.extract-cert.usage.option.armor=Schütze Ausgabe mit ASCII Armor
sop.generate-key.usage.header=Generiere einen privaten Schlüssel
sop.generate-key.usage.option.armor=Schütze Ausgabe mit ASCII Armor
sop.generate-key.usage.option.user_id=Nutzer-ID, z.B.. "Alice <alice@example.com>"
sop.generate-key.usage.option.with_key_password.0=Passwort zum Schutz des privaten Schlüssels
sop.generate-key.usage.option.with_key_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.inline-detach.usage.header=Trenne Signaturen von Klartext-signierter Nachricht
sop.inline-detach.usage.option.armor=Schütze Ausgabe mit ASCII Armor
sop.inline-detach.usage.option.signatures_out=Schreibe abgetrennte Signaturen in Ausgabe
sop.inline-sign.usage.header=Signiere eine Nachricht von Standard-Eingabe mit eingebetteten Signaturen
sop.inline-sign.usage.option.armor=Schütze Ausgabe mit ASCII Armor
sop.inline-sign.usage.option.as.0=Bestimme Signaturformat der Nachricht.
sop.inline-sign.usage.option.as.1='text' und 'binary' resultieren in eingebettete Signaturen.
sop.inline-sign.usage.option.as.2='cleartextsigned' wird die Nachricht Klartext-signieren.
sop.inline-sign.usage.option.as.3=Standardmäßig: 'binary'.
sop.inline-sign.usage.option.as.4=Ist die Standard-Eingabe nicht UTF-8 kodiert und '--as=text' gesetzt, so wird inline-sign Fehlercode 53 zurückgeben.
sop.inline-sign.usage.option.with_key_password.0=Passwort zum Entsperren des privaten Schlüssels
sop.inline-sign.usage.option.with_key_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.inline-sign.usage.option.micalg=Gibt den verwendeten Digest-Algorithmus an die angegebene Ausgabe in einer Form aus, die zum Auffüllen des micalg-Parameters für den PGP/MIME Content-Type (RFC3156) verwendet werden kann.
sop.inline-sign.usage.parameter.keys=Private Signaturschlüssel
sop.inline-verify.usage.header=Prüfe eingebettete Signaturen einer Nachricht von Standard-Eingabe
sop.inline-verify.usage.option.not_before.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
sop.inline-verify.usage.option.not_before.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
sop.inline-verify.usage.option.not_before.2=Standardmäßig: Anbeginn der Zeit ('-').
sop.inline-verify.usage.option.not_after.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
sop.inline-verify.usage.option.not_after.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
sop.inline-verify.usage.option.not_after.2=Standardmäßig: Aktueller Zeitunkt ('now').
sop.inline-verify.usage.option.not_after.3=Akzeptiert speziellen Wert '-' für das Ende aller Zeiten.
sop.inline-verify.usage.option.verifications_out=Schreibe Status der Signaturprüfung in angegebene Ausgabe
sop.inline-verify.usage.parameter.certs=Zertifikate (öffentlich Schlüssel) zur Signaturprüfung
sop.sign.usage.header=Erstelle abgetrennte Signatur über Nachricht von Standard-Eingabe
sop.sign.usage.option.armor=Schütze Ausgabe mit ASCII Armor
sop.sign.usage.option.as.0=Bestimme Signaturformat der Nachricht.
sop.sign.usage.option.as.1=Standardmäßig: 'binary'.
sop.sign.usage-option.as.2=Ist die Standard-Eingabe nicht UTF-8 kodiert und '--as=text' gesetzt, so wird inline-sign Fehlercode 53 zurückgeben.
sop.sign.usage.option.with_key_password.0=Passwort zum Entsperren des privaten Schlüssels
sop.sign.usage.option.with_key_password.1=Ist ein INDIREKTER Datentyp (z.B.. Datei, Umgebungsvariable, Dateideskriptor...).
sop.sign.usage.option.micalg_out=Gibt den verwendeten Digest-Algorithmus an die angegebene Ausgabe in einer Form aus, die zum Auffüllen des micalg-Parameters für den PGP/MIME Content-Type (RFC3156) verwendet werden kann.
sop.sign.usage.parameter.keys=Private Signaturschlüssel
sop.verify.usage.header=Prüfe eine abgetrennte Signatur über eine Nachricht von Standard-Eingabe
sop.verify.usage.option.not_before.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
sop.verify.usage.option.not_before.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
sop.verify.usage.option.not_before.2=Standardmäßig: Anbeginn der Zeit ('-').
sop.verify.usage.option.not_after.0=Nach ISO-8601 formatierter UTC Zeitstempel (z.B.. '2020-11-23T16:35Z)
sop.verify.usage.option.not_after.1=Lehne Signaturen mit Erstellungsdatum außerhalb des Gültigkeitsbereichs ab.
sop.verify.usage.option.not_after.2=Standardmäßig: Aktueller Zeitunkt ('now').
sop.verify.usage.option.not_after.3=Akzeptiert speziellen Wert '-' für das Ende aller Zeiten.
sop.verify.usage.parameter.signature=Abgetrennte Signatur
sop.verify.usage.parameter.certs=Zertifikate (öffentliche Schlüssel) zur Signaturprüfung
sop.version.usage.header=Zeige Versionsinformationen über das Programm
sop.version.usage.option.extended=Gebe erweiterte Versionsinformationen aus
sop.version.usage.option.backend=Gebe Informationen über das kryptografische Backend aus
sop.help.usage.header=Zeige Nutzungshilfen für den angegebenen Unterbefehl an sop.help.usage.header=Zeige Nutzungshilfen für den angegebenen Unterbefehl an
## SHARED RESOURCES
## Malformed Input ## Malformed Input
sop.error.input.malformed_session_key=Nachrichtenschlüssel werden im folgenden Format erwartet: 'ALGONUM:HEXKEY' sop.error.input.malformed_session_key=Nachrichtenschlüssel werden im folgenden Format erwartet: 'ALGONUM:HEXKEY'
sop.error.input.not_a_private_key=Eingabe '%s' enthält keinen privaten OpenPGP Schlüssel. sop.error.input.not_a_private_key=Eingabe '%s' enthält keinen privaten OpenPGP Schlüssel.

View file

@ -0,0 +1,6 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Display version information about the tool
usage.option.extended=Print an extended version string
usage.option.backend=Print information about the cryptographic backend

View file

@ -0,0 +1,6 @@
# SPDX-FileCopyrightText: 2022 Paul Schaub <vanitasvitae@fsfe.org>
#
# SPDX-License-Identifier: Apache-2.0
usage.header=Zeige Versionsinformationen über das Programm
usage.option.extended=Gebe erweiterte Versionsinformationen aus
usage.option.backend=Gebe Informationen über das kryptografische Backend aus

View file

@ -10,7 +10,7 @@ allprojects {
javaSourceCompatibility = 1.8 javaSourceCompatibility = 1.8
junitVersion = '5.8.2' junitVersion = '5.8.2'
junitSysExitVersion = '1.1.2' junitSysExitVersion = '1.1.2'
picocliVersion = '4.6.3' picocliVersion = '4.7.0'
mockitoVersion = '4.5.1' mockitoVersion = '4.5.1'
jsrVersion = '3.0.2' jsrVersion = '3.0.2'
} }