# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2017-06-17 07:57+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: include #: en/pinentry.texi:5 #, no-wrap msgid "version.texi" msgstr "" #. type: macro #: en/pinentry.texi:9 msgid "Copyright @copyright{} 2002, 2005, 2015 g10 Code GmbH" msgstr "" #. type: macro #: en/pinentry.texi:16 msgid "" "Permission is granted to copy, distribute and/or modify this document under " "the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version. The text of the license can be found in the section " "entitled ``Copying''." msgstr "" #. type: sc{#1} #: en/pinentry.texi:20 msgid "pinentry" msgstr "" #. type: title #: en/pinentry.texi:22 en/pinentry.texi:78 #, no-wrap msgid "Using the PIN-Entry" msgstr "" #. type: code{#1} #: en/pinentry.texi:36 msgid "\\body\\" msgstr "" #. type: smallexample #: en/pinentry.texi:40 #, no-wrap msgid "\\body\\\n" msgstr "" #. type: iftex #: en/pinentry.texi:47 msgid "@alias gol = *" msgstr "" #. type: dircategory #: en/pinentry.texi:57 #, no-wrap msgid "GNU Utilities" msgstr "" #. type: menuentry #: en/pinentry.texi:60 msgid "pinentry: (pinentry)" msgstr "" #. type: menuentry #: en/pinentry.texi:60 msgid "Securely ask for a passphrase or PIN." msgstr "" #. type: ifnottex #: en/pinentry.texi:62 msgid "This file documents the use and the internals of the @pinentry{}." msgstr "" #. type: ifnottex #: en/pinentry.texi:65 msgid "" "This is edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The " "`PINEntry' Manual}, for version @value{VERSION}." msgstr "" #. type: ifnottex #: en/pinentry.texi:69 msgid "Published by g10 Code GmbH@* Hüttenstr. 61@* 40699 Erkrath, Germany" msgstr "" #. type: titlepage #: en/pinentry.texi:71 en/pinentry.texi:86 msgid "@copyrightnotice{}" msgstr "" #. type: titlepage #: en/pinentry.texi:73 en/pinentry.texi:88 msgid "@permissionnotice{}" msgstr "" #. type: subtitle #: en/pinentry.texi:79 #, no-wrap msgid "Version @value{VERSION}" msgstr "" #. type: subtitle #: en/pinentry.texi:80 #, no-wrap msgid "@value{UPDATED}" msgstr "" #. type: author #: en/pinentry.texi:81 #, no-wrap msgid "Werner Koch @code{(wk@@gnupg.org)}" msgstr "" #. type: node #: en/pinentry.texi:94 #, no-wrap msgid "Top" msgstr "" #. type: top #: en/pinentry.texi:95 #, no-wrap msgid "Introduction" msgstr "" #. type: cindex #: en/pinentry.texi:96 #, no-wrap msgid "introduction" msgstr "" #. type: Plain text #: en/pinentry.texi:99 msgid "This manual documents how to use the @pinentry{} and its protocol." msgstr "" #. type: Plain text #: en/pinentry.texi:104 msgid "" "The @pinentry{} is a small GUI application used to enter PINs or " "passphrases. It is usually invoked by @sc{gpg-agent} (@pxref{Invoking " "GPG-AGENT, ,Invoking the gpg-agent, gnupg, The `GNU Privacy Guard' Manual}, " "for details)." msgstr "" #. type: Plain text #: en/pinentry.texi:114 msgid "" "@pinentry{} comes in several flavors to fit the look and feel of the used " "GUI toolkit: A @sc{GTK+} based one named @code{pinentry-gtk}; a @sc{Qt} " "based one named @code{pinentry-qt}; and, two non-graphical ones " "@code{pinentry-curses}, which uses curses, and @code{pinentry-tty}, which " "doesn't require anything more than a simple terminal. Not all of them are " "necessarily available on your installation. If curses is supported on your " "system, the GUI-based flavors fall back to curses when the @code{DISPLAY} " "variable is not set." msgstr "" #. type: node #: en/pinentry.texi:119 en/pinentry.texi:137 #, no-wrap msgid "Using pinentry" msgstr "" #. type: menuentry #: en/pinentry.texi:119 msgid "How to use the beast." msgstr "" #. type: node #: en/pinentry.texi:119 en/pinentry.texi:213 #, no-wrap msgid "Front ends" msgstr "" #. type: menuentry #: en/pinentry.texi:119 msgid "Description and comparison of the front ends" msgstr "" #. type: menuentry #: en/pinentry.texi:121 msgid "Developer information" msgstr "" #. type: node #: en/pinentry.texi:124 en/pinentry.texi:282 #, no-wrap msgid "Protocol" msgstr "" #. type: menuentry #: en/pinentry.texi:124 msgid "The Assuan protocol description." msgstr "" #. type: chapter #: en/pinentry.texi:124 en/pinentry.texi:536 en/pinentry.texi:537 #, no-wrap msgid "Implementation Details" msgstr "" #. type: menuentry #: en/pinentry.texi:124 msgid "For those extending or writing a new pinentry." msgstr "" #. type: menuentry #: en/pinentry.texi:126 msgid "Miscellaneous" msgstr "" #. type: menuentry #: en/pinentry.texi:130 msgid "Copying" msgstr "" #. type: menuentry #: en/pinentry.texi:130 msgid "" "GNU General Public License says how you can copy and share PIN-Entry as well " "as this manual." msgstr "" #. type: menuentry #: en/pinentry.texi:132 msgid "Indices" msgstr "" #. type: unnumbered #: en/pinentry.texi:135 en/pinentry.texi:741 en/pinentry.texi:742 #, no-wrap msgid "Option Index" msgstr "" #. type: menuentry #: en/pinentry.texi:135 msgid "Index to command line options." msgstr "" #. type: unnumbered #: en/pinentry.texi:135 en/pinentry.texi:746 en/pinentry.texi:747 #, no-wrap msgid "Index" msgstr "" #. type: menuentry #: en/pinentry.texi:135 msgid "Index of concepts and symbol names." msgstr "" #. type: chapter #: en/pinentry.texi:138 #, no-wrap msgid "How to use the @pinentry{}" msgstr "" #. type: Plain text #: en/pinentry.texi:144 msgid "" "You may run @pinentry{} directly from the command line and pass the commands " "according to the Assuan protocol via stdin/stdout." msgstr "" #. type: Plain text #: en/pinentry.texi:151 msgid "Here is a list of options supported by all flavors of pinentry:" msgstr "" #. type: item #: en/pinentry.texi:153 #, no-wrap msgid "--version" msgstr "" #. type: opindex #: en/pinentry.texi:154 #, no-wrap msgid "version" msgstr "" #. type: table #: en/pinentry.texi:156 msgid "Print the program version and licensing information." msgstr "" #. type: item #: en/pinentry.texi:157 #, no-wrap msgid "--help" msgstr "" #. type: opindex #: en/pinentry.texi:158 #, no-wrap msgid "help" msgstr "" #. type: table #: en/pinentry.texi:160 msgid "Print a usage message summarizing the most useful command line options." msgstr "" #. type: item #: en/pinentry.texi:161 #, no-wrap msgid "--debug" msgstr "" #. type: itemx #: en/pinentry.texi:162 #, no-wrap msgid "-d" msgstr "" #. type: opindex #: en/pinentry.texi:163 #, no-wrap msgid "debug" msgstr "" #. type: opindex #: en/pinentry.texi:164 #, no-wrap msgid "d" msgstr "" #. type: table #: en/pinentry.texi:167 msgid "" "Turn on some debugging. Mostly useful for the maintainers. Note that this " "may reveal sensitive information like the entered passphrase." msgstr "" #. type: item #: en/pinentry.texi:175 #, no-wrap msgid "--no-global-grab" msgstr "" #. type: itemx #: en/pinentry.texi:176 #, no-wrap msgid "-g" msgstr "" #. type: opindex #: en/pinentry.texi:177 #, no-wrap msgid "no-global-grab" msgstr "" #. type: opindex #: en/pinentry.texi:178 #, no-wrap msgid "g" msgstr "" #. type: table #: en/pinentry.texi:183 msgid "" "Grab the keyboard only when the window is focused. Use this option if you " "are debugging software using the @pinentry{}; otherwise you may not be able " "to to access your X session anymore (unless you have other means to connect " "to the machine to kill the @pinentry{})." msgstr "" #. type: item #: en/pinentry.texi:184 #, no-wrap msgid "--parent-wid @var{n}" msgstr "" #. type: opindex #: en/pinentry.texi:185 #, no-wrap msgid "parent-wid" msgstr "" #. type: table #: en/pinentry.texi:188 msgid "" "Use window ID @var{n} as the parent window for positioning the window. " "Note, that this is not fully supported by all flavors of @pinentry{}." msgstr "" #. type: item #: en/pinentry.texi:189 #, no-wrap msgid "--timeout @var{seconds}" msgstr "" #. type: opindex #: en/pinentry.texi:190 #, no-wrap msgid "timeout" msgstr "" #. type: table #: en/pinentry.texi:195 msgid "" "Give up waiting for input from the user after the specified number of " "seconds and return an error. The error returned is the same as if the Cancel " "button was selected. To disable the timeout and wait indefinitely, set this " "to 0, which is the default." msgstr "" #. type: item #: en/pinentry.texi:196 #, no-wrap msgid "--display @var{string}" msgstr "" #. type: itemx #: en/pinentry.texi:197 #, no-wrap msgid "--ttyname @var{string}" msgstr "" #. type: itemx #: en/pinentry.texi:198 #, no-wrap msgid "--ttytype @var{string}" msgstr "" #. type: itemx #: en/pinentry.texi:199 #, no-wrap msgid "--lc-ctype @var{string}" msgstr "" #. type: itemx #: en/pinentry.texi:200 #, no-wrap msgid "--lc-messages @var{string}" msgstr "" #. type: opindex #: en/pinentry.texi:201 #, no-wrap msgid "display" msgstr "" #. type: opindex #: en/pinentry.texi:202 #, no-wrap msgid "ttyname" msgstr "" #. type: opindex #: en/pinentry.texi:203 #, no-wrap msgid "ttytype" msgstr "" #. type: opindex #: en/pinentry.texi:204 #, no-wrap msgid "lc-ctype" msgstr "" #. type: opindex #: en/pinentry.texi:205 #, no-wrap msgid "lc-messa" msgstr "" #. type: table #: en/pinentry.texi:211 msgid "" "These options are used to pass localization information to @pinentry{}. " "They are required because @pinentry{} is usually called by some background " "process which does not have any information about the locale and terminal to " "use. It is also possible to pass these options using Assuan protocol " "options." msgstr "" #. type: chapter #: en/pinentry.texi:214 #, no-wrap msgid "Front Ends" msgstr "" #. type: Plain text #: en/pinentry.texi:227 msgid "" "There are several different flavors of @pinentry{}. Concretely, there are " "Gtk+2, Qt@tie{}4, Gnome@tie{}3, Emacs, curses and tty variants. These " "different implementations provide higher levels of integration with a " "specific environment. For instance, the Gnome@tie{}3 @pinentry{} uses " "Gnome@tie{}3 widgets to display the prompts. For Gnome@tie{}3 users, this " "higher level of integration provides a more consistent aesthetic. However, " "this comes at a cost. Because this @pinentry{} uses so many components, " "there is a larger chance of a failure. In particular, there is a larger " "chance that the passphrase is saved in memory and that memory is exposed to " "an attacker (consider the OpenSSL Heartbeat vulnerability)." msgstr "" #. type: Plain text #: en/pinentry.texi:241 msgid "" "To understand how many components touch the passphrase, consider again the " "Gnome@tie{}3 implementation. When a user presses a button on the keyboard, " "the key is passed from the kernel to the X@tie{}server to the toolkit (Gtk+) " "and to the actual text entry widget. Along the way, the key is saved in " "memory and processed. In fact, the key presses are probably read using " "standard C library functions, which buffer the input. None of this code is " "careful to make sure the contents of the memory are not leaked by keeping " "the data in unpagable memory and wiping it when the buffer is freed. " "However, even if they did, there is still the problem that when a computer " "hibernates, the system writes unpagable memory to disk anyway. Further, " "many installations are virtualized (e.g., running on Xen) and have little " "control over their actual environment." msgstr "" #. type: Plain text #: en/pinentry.texi:250 msgid "" "The curses variant uses a significant smaller software stack and the tty " "variant uses an even smaller one. However, if they are run in an " "X@tie{}terminal, then a similar number of components are handling the " "passphrase as in the Gnome@tie{}3 case! Thus, to be most secure, you need to " "direct GPG@tie{}Agent to use a fixed virtual console. Since you need to " "remain logged in for GPG@tie{}Agent to use that console, you should run " "there and have @code{screen} or @code{tmux} lock the tty." msgstr "" #. type: Plain text #: en/pinentry.texi:262 msgid "" "The Emacs pinentry implementation interacts with a running Emacs session and " "directs the Emacs instance to display the passphrase prompt. Since this " "doesn't work very well if there is no Emacs running, the generic @pinentry{} " "backend checks if a @pinentry{}-enabled Emacs should be used. Specifically, " "it looks to see if the @code{INSIDE_EMACS} variable is set and then attempts " "to establish a connection to the specified address. If this is the case, " "then instead of, e.g., @code{pinentry-gtk2} displaying a Gtk+2 pinentry, it " "interacts with the Emacs session. This functionality can be explicitly " "disabled by passing @code{--disable-inside-emacs} to @code{configure} when " "building @pinentry{}." msgstr "" #. type: Plain text #: en/pinentry.texi:272 msgid "" "Having Emacs get the passphrase is convenient, however, it is a significant " "security risk. Emacs keeps all key presses buffered. (You can see the " "recent key presses by typing @code{C-h l} (@code{view-lossage}) in emacs.) " "Further, Emacs is a huge program, which doesn't provide any process " "isolation to speak of. As such, having it handle the passphrase adds a huge " "chunk of code to the user's trusted computing base. Because of this " "concern, Emacs doesn't enable this by default (the user has to run " "@code{(pinentry-start)}, e.g., from his or her @code{.emacs} file, " "explicitly)." msgstr "" #. type: Plain text #: en/pinentry.texi:278 msgid "" "Similar to the inside-emacs check, the @pinentry{} frontends check whether " "the @code{DISPLAY} variable is set and a working X server is available. If " "this is not the case, then they fallback to the curses front end. This can " "also be disabled by passing @code{--disable-fallback-curses} to " "@code{configure} at build time." msgstr "" #. type: chapter #: en/pinentry.texi:283 #, no-wrap msgid "@pinentry{}'s Assuan Protocol" msgstr "" #. type: Plain text #: en/pinentry.texi:287 msgid "" "The @pinentry{} should never service more than one connection at once. It " "is reasonable to exec the @pinentry{} prior to a request." msgstr "" #. type: Plain text #: en/pinentry.texi:294 msgid "" "The @pinentry{} does not need to stay in memory because the @sc{gpg-agent} " "has the ability to cache passphrases. The usual way to run the @pinentry{} " "is by setting up a pipe (not a socket) and then fork/exec the @pinentry{}. " "The communication is then done by means of the protocol described here until " "the client is satisfied with the result." msgstr "" #. type: Plain text #: en/pinentry.texi:299 msgid "" "Although it is called a @pinentry{}, it allows entering reasonably long " "strings (strings that are up to 2048 characters long are supported by every " "pinentry). The client using the @pinentry{} has to check for correctness." msgstr "" #. type: Plain text #: en/pinentry.texi:305 msgid "" "Note that all strings are expected to be encoded as UTF-8; @pinentry{} takes " "care of converting it to the locally used codeset. To include linefeeds or " "other special characters, you may percent-escape them (e.g., a line feed is " "encoded as @code{%0A}, the percent sign itself is encoded as @code{%25}, " "etc.)." msgstr "" #. type: Plain text #: en/pinentry.texi:307 msgid "The following is a list of supported commands:" msgstr "" #. type: item #: en/pinentry.texi:310 #, no-wrap msgid "Set the timeout before returning an error" msgstr "" #. type: example #: en/pinentry.texi:314 #, no-wrap msgid "" " C: SETTIMEOUT 30\n" " S: OK\n" msgstr "" #. type: item #: en/pinentry.texi:316 #, no-wrap msgid "Set the descriptive text to display" msgstr "" #. type: example #: en/pinentry.texi:320 #, no-wrap msgid "" " C: SETDESC Enter PIN for Richard Nixon \n" " S: OK\n" msgstr "" #. type: item #: en/pinentry.texi:322 #, no-wrap msgid "Set the prompt to show" msgstr "" #. type: table #: en/pinentry.texi:325 msgid "" "When asking for a PIN, set the text just before the widget for passphrase " "entry." msgstr "" #. type: example #: en/pinentry.texi:328 #, no-wrap msgid "" " C: SETPROMPT PIN:\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:335 msgid "" "You should use an underscore in the text only if you know that a modern " "version of pinentry is used. Modern versions underline the next character " "after the underscore and use the first such underlined character as a " "keyboard accelerator. Use a double underscore to escape an underscore." msgstr "" #. type: item #: en/pinentry.texi:336 #, no-wrap msgid "Set the window title" msgstr "" #. type: table #: en/pinentry.texi:340 msgid "" "This command may be used to change the default window title. When using " "this feature you should take care that the window is still identifiable as " "the pinentry." msgstr "" #. type: example #: en/pinentry.texi:343 #, no-wrap msgid "" " C: SETTITLE Tape Recorder Room\n" " S: OK\n" msgstr "" #. type: item #: en/pinentry.texi:345 #, no-wrap msgid "Set the button texts" msgstr "" #. type: table #: en/pinentry.texi:348 msgid "There are three texts which should be used to override the English defaults:" msgstr "" #. type: table #: en/pinentry.texi:351 msgid "" "To set the text for the button signaling confirmation (in UTF-8). See " "SETPROMPT on how to use an keyboard accelerator." msgstr "" #. type: example #: en/pinentry.texi:354 #, no-wrap msgid "" " C: SETOK Yes\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:359 msgid "" "To set the text for the button signaling cancellation or disagreement (in " "UTF-8). See SETPROMPT on how to use an keyboard accelerator." msgstr "" #. type: example #: en/pinentry.texi:362 #, no-wrap msgid "" " C: SETCANCEL No\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:370 msgid "" "In case three buttons are required, use the following command to set the " "text (UTF-8) for the non-affirmative response button. The affirmative " "button text is still set using SETOK and the CANCEL button text with " "SETCANCEL. See SETPROMPT on how to use an keyboard accelerator." msgstr "" #. type: example #: en/pinentry.texi:373 #, no-wrap msgid "" " C: SETNOTOK Do not do this\n" " S: OK\n" msgstr "" #. type: item #: en/pinentry.texi:377 #, no-wrap msgid "Set the Error text" msgstr "" #. type: table #: en/pinentry.texi:381 msgid "" "This is used by the client to display an error message. In contrast to the " "other commands, the error message is automatically reset with a GETPIN or " "CONFIRM, and is only displayed when asking for a PIN." msgstr "" #. type: example #: en/pinentry.texi:384 #, no-wrap msgid "" " C: SETERROR Invalid PIN entered - please try again\n" " S: OK\n" msgstr "" #. type: item #: en/pinentry.texi:386 #, no-wrap msgid "Enable a passphrase quality indicator" msgstr "" #. type: table #: en/pinentry.texi:393 msgid "" "Adds a quality indicator to the GETPIN window. This indicator is updated as " "the passphrase is typed. The clients needs to implement an inquiry named " "\"QUALITY\" which gets passed the current passphrase (percent-plus escaped) " "and should send back a string with a single numerical value between -100 and " "100. Negative values will be displayed in red." msgstr "" #. type: example #: en/pinentry.texi:396 #, no-wrap msgid "" " C: SETQUALITYBAR\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:402 msgid "" "If a custom label for the quality bar is required, just add that label as an " "argument as a percent-escaped string. You will need this feature to " "translate the label because @pinentry{} has no internal gettext except for " "stock strings from the toolkit library." msgstr "" #. type: table #: en/pinentry.texi:404 msgid "If you want to show a tooltip for the quality bar, you may use" msgstr "" #. type: example #: en/pinentry.texi:407 #, no-wrap msgid "" " C: SETQUALITYBAR_TT string\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:411 msgid "With STRING being a percent escaped string shown as the tooltip." msgstr "" #. type: item #: en/pinentry.texi:413 #, no-wrap msgid "Ask for a PIN" msgstr "" #. type: table #: en/pinentry.texi:416 msgid "" "The meat of this tool is to ask for a passphrase of PIN, it is done with " "this command:" msgstr "" #. type: example #: en/pinentry.texi:420 #, no-wrap msgid "" " C: GETPIN\n" " S: D no more tapes\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:423 msgid "" "Note that the passphrase is transmitted in clear using standard data " "responses. Expect it to be in UTF-8." msgstr "" #. type: item #: en/pinentry.texi:424 #, no-wrap msgid "Ask for confirmation" msgstr "" #. type: table #: en/pinentry.texi:426 msgid "To ask for a confirmation (yes or no), you can use this command:" msgstr "" #. type: example #: en/pinentry.texi:429 #, no-wrap msgid "" " C: CONFIRM\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:434 msgid "" "The client should use SETDESC to set an appropriate text before issuing this " "command, and may use SETPROMPT to set the button texts. The value returned " "is either OK for YES or the error code @code{ASSUAN_Not_Confirmed}." msgstr "" #. type: item #: en/pinentry.texi:435 #, no-wrap msgid "Show a message" msgstr "" #. type: table #: en/pinentry.texi:437 msgid "To show a message, you can use this command:" msgstr "" #. type: example #: en/pinentry.texi:440 #, no-wrap msgid "" " C: MESSAGE\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:442 msgid "alternatively you may add an option to confirm:" msgstr "" #. type: example #: en/pinentry.texi:445 #, no-wrap msgid "" " C: CONFIRM --one-button\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:449 msgid "" "The client should use SETDESC to set an appropriate text before issuing this " "command, and may use SETOK to set the text for the dismiss button. The " "value returned is OK or an error message." msgstr "" #. type: item #: en/pinentry.texi:450 #, no-wrap msgid "Set the output device" msgstr "" #. type: table #: en/pinentry.texi:454 msgid "" "When using X, the @pinentry{} program must be invoked with an appropriate " "@code{DISPLAY} environment variable or the @code{--display} option." msgstr "" #. type: table #: en/pinentry.texi:456 msgid "When using a text terminal:" msgstr "" #. type: example #: en/pinentry.texi:463 #, no-wrap msgid "" " C: OPTION ttyname=/dev/tty3\n" " S: OK\n" " C: OPTION ttytype=vt100\n" " S: OK\n" " C: OPTION lc-ctype=de_DE.UTF-8\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:468 msgid "" "The client should use the @code{ttyname} option to set the output TTY file " "name, the @code{ttytype} option to set the @code{TERM} variable appropriate " "for this tty and @code{lc-ctype} to set the locale which defines the " "character set to use for this terminal." msgstr "" #. type: item #: en/pinentry.texi:469 #, no-wrap msgid "Set the default strings" msgstr "" #. type: table #: en/pinentry.texi:473 msgid "" "To avoid having translations in Pinentry proper, the caller may set certain " "translated strings which are used by @pinentry{} as default strings." msgstr "" #. type: example #: en/pinentry.texi:481 #, no-wrap msgid "" " C: OPTION default-ok=_Korrekt\n" " S: OK\n" " C: OPTION default-cancel=Abbruch\n" " S: OK\n" " C: OPTION default-prompt=PIN eingeben:\n" " S: OK\n" msgstr "" #. type: table #: en/pinentry.texi:484 msgid "The strings are subject to accelerator marking, see SETPROMPT for details." msgstr "" #. type: item #: en/pinentry.texi:485 #, no-wrap msgid "Passphrase caching" msgstr "" #. type: table #: en/pinentry.texi:495 msgid "" "Some environments, such as GNOME, cache passwords and passphrases. The " "@pinentry{} should only use an external cache if the " "@code{allow-external-password-cache} option was set and a stable key " "identifier (using SETKEYINFO) was provided. In this case, if the passphrase " "was read from the cache, the @pinentry{} should send the " "@code{PASSWORD_FROM_CACHE} status message before returning the passphrase. " "This indicates to GPG Agent that it should not increment the passphrase " "retry counter." msgstr "" #. type: example #: en/pinentry.texi:505 #, no-wrap msgid "" " C: OPTION allow-external-password-cache\n" " S: OK\n" " C: SETKEYINFO key-grip\n" " S: OK\n" " C: getpin\n" " S: S PASSWORD_FROM_CACHE\n" " S: D 1234\n" " C: OK\n" msgstr "" #. type: table #: en/pinentry.texi:514 msgid "" "Note: if @code{allow-external-password-cache} is not specified, an external " "password cache must not be used: this can lead to subtle bugs. In " "particular, if this option is not specified, then GPG Agent does not " "recognize the @code{PASSWORD_FROM_CACHE} status message and will count " "trying a cached password against the password retry count. If the password " "retry count is 1, then the user will never have the opportunity to correct " "the cached password." msgstr "" #. type: table #: en/pinentry.texi:518 msgid "" "Note: it is strongly recommended that a pinentry supporting this feature " "provide the user an option to enable it manually. That is, saving a " "passphrase in an external password manager should be opt-in." msgstr "" #. type: table #: en/pinentry.texi:525 msgid "" "The key identifier provided by SETKEYINFO must be considered opaque and may " "change in the future. It currently has the form @code{X/HEXSTRING} where " "@code{X} is either @code{n}, @code{s}, or @code{u}. In the former two " "cases, the HEXSTRING corresponds to the key grip. The key grip is not the " "OpenPGP Key ID, but it can be mapped to the key using the following:" msgstr "" #. type: example #: en/pinentry.texi:528 #, no-wrap msgid " # gpg2 --with-keygrip --list-secret-keys\n" msgstr "" #. type: table #: en/pinentry.texi:533 msgid "" "and searching the output for the key grip. The same command-line options " "can also be used with gpgsm." msgstr "" #. type: Plain text #: en/pinentry.texi:543 msgid "" "The pinentry source code can be divided into three categories. There is a " "backend module, which lives in @code{pinentry/}, there are utility " "functions, e.g., in @code{secmem/}, and there are various frontends." msgstr "" #. type: Plain text #: en/pinentry.texi:551 msgid "" "All of the low-level logic lives in the backend. This frees the frontends " "from having to implement, e.g., the Assuan protocol. When the backend " "receives an option, it updates the state in a @code{pinentry_t} struct. The " "frontend is called when the client either calls @code{GETPIN}, " "@code{CONFIRM} or @code{MESSAGE}. In these cases, the backend invokes the " "@code{pinentry_cmd_handler}, which is passed the @code{pinentry_t} struct." msgstr "" #. type: Plain text #: en/pinentry.texi:559 msgid "" "When the callback is invoked, the frontend should create a window based on " "the state in the @code{pinentry_t} struct. For instance, the title to use " "for the dialog's window (if any) is stored in the @code{title} field. If " "the field is @code{NULL}, the frontend should choose a reasonable default " "value. (Default is not always provided, because different tool kits and " "environments have different reasonable defaults.)" msgstr "" #. type: Plain text #: en/pinentry.texi:562 msgid "" "The widget needs to support a number of different interactions with the " "user. Each of them is described below." msgstr "" #. type: item #: en/pinentry.texi:564 #, no-wrap msgid "Passphrase Confirmation" msgstr "" #. type: table #: en/pinentry.texi:571 msgid "" "When creating a new key, the passphrase should be entered twice. The client " "(typically GPG Agent) indicates this to the @pinentry{} by invoking " "@code{SETREPEAT}. In this case, the backend sets the " "@code{repeat_passphrase} field to a copy of the passed string. The value of " "this field should be used to label a second text input." msgstr "" #. type: table #: en/pinentry.texi:575 msgid "" "It is the frontend's responsibility to check that the passwords match. If " "they don't match, the frontend should display an error message and continue " "to prompt the user." msgstr "" #. type: table #: en/pinentry.texi:579 msgid "" "If the passwords do match, then, when the user presses the okay button, the " "@code{repeat_okay} field should be set to @code{1} (this causes the backend " "to emit the @code{S PIN_REPEATED} status message)." msgstr "" #. type: item #: en/pinentry.texi:580 #, no-wrap msgid "Message Box" msgstr "" #. type: table #: en/pinentry.texi:584 msgid "" "Sometimes GPG Agent needs to display a message. In this case, the " "@code{pin} variable is @code{NULL}." msgstr "" #. type: table #: en/pinentry.texi:594 msgid "" "At the Assuan level, this mode is selected by using either the " "@code{MESSAGE} or the @code{CONFIRM} command instead of the @code{GETPIN} " "command. The @code{MESSAGE} command never shows the cancel or an other " "button. The same holds for @code{CONFIRM} if it was passed the " "``--one-button'' argument. If @code{CONFIRM} was not passed this argument, " "the dialog for @code{CONFIRM} should show both the @code{ok} and the " "@code{cancel} buttons and optionally the @code{notok} button. The frontend " "can determine whether the dialog is a one-button dialog by inspecting the " "@code{one_button} variable." msgstr "" #. type: item #: en/pinentry.texi:595 #, no-wrap msgid "Passphrase Entry" msgstr "" #. type: table #: en/pinentry.texi:600 msgid "" "If neither of the above cases holds, then GPG Agent is simply requesting the " "passphrase. In this case, the @code{ok} and @code{cancel} buttons should be " "displayed." msgstr "" #. type: Plain text #: en/pinentry.texi:605 msgid "" "The layout of the three variants is quite similar. Here are the relevant " "elements that describe the layout:" msgstr "" #. type: code{#1} #: en/pinentry.texi:607 #, no-wrap msgid "title" msgstr "" #. type: table #: en/pinentry.texi:609 msgid "The window's title." msgstr "" #. type: code{#1} #: en/pinentry.texi:610 #, no-wrap msgid "description" msgstr "" #. type: table #: en/pinentry.texi:614 msgid "" "The reason for the dialog. When requesting a passphrase, this describes the " "key. When showing a message box, this is the message to show." msgstr "" #. type: code{#1} #: en/pinentry.texi:615 #, no-wrap msgid "error" msgstr "" #. type: table #: en/pinentry.texi:621 msgid "" "If GPG Agent determines that the passphrase was incorrect, it will call " "@code{GETPIN} again (up to a configurable number of times) to again prompt " "the user. In this case, this variable contains a description of the error " "message. This text should typically be highlighted in someway." msgstr "" #. type: item #: en/pinentry.texi:622 #, no-wrap msgid "@code{prompt}, @code{default-prompt}" msgstr "" #. type: table #: en/pinentry.texi:624 msgid "The string to associate with the passphrase entry box." msgstr "" #. type: table #: en/pinentry.texi:630 msgid "" "There is a subtle difference between @code{prompt} and " "@code{default-prompt}. @code{default-prompt} means that a stylized prompt " "(e.g., an icon suggesting a prompt) may be used. @code{prompt} means that " "the entry's meaning is not consistent with such a style and, as such, no " "icon should be used." msgstr "" #. type: table #: en/pinentry.texi:632 msgid "If both variables are set, the @code{prompt} variant takes precedence." msgstr "" #. type: code{#1} #: en/pinentry.texi:633 #, no-wrap msgid "repeat_passphrase" msgstr "" #. type: table #: en/pinentry.texi:637 msgid "" "The string to associate with the second passphrase entry box. The second " "passphrase entry box should only be shown if this is not @code{NULL}." msgstr "" #. type: item #: en/pinentry.texi:638 #, no-wrap msgid "@code{ok}, @code{default-ok}" msgstr "" #. type: table #: en/pinentry.texi:640 msgid "The string to show in the @code{ok} button." msgstr "" #. type: table #: en/pinentry.texi:645 msgid "" "If there are any @code{_} characters, the following character should be used " "as an accelerator. (A double underscore means a plain underscore should be " "shown.) If the frontend does not support accelerators, then the underscores " "should be removed manually." msgstr "" #. type: table #: en/pinentry.texi:653 msgid "" "There is a subtle difference between @code{ok} and @code{default-ok}. " "@code{default-ok} means that a stylized OK button should be used. For " "instance, it could include a check mark. @code{ok} means that the button's " "meaning is not consistent with such an icon and, as such, no icon should be " "used. Thus, if the @code{ok} button should have the text ``No password " "required'' then @code{ok} should be used because a check mark icon doesn't " "make sense." msgstr "" #. type: table #: en/pinentry.texi:656 msgid "" "If this variable is @code{NULL}, the frontend should choose a reasonable " "default." msgstr "" #. type: table #: en/pinentry.texi:658 msgid "If both variables are set, the @code{ok} variant takes precedence." msgstr "" #. type: item #: en/pinentry.texi:659 #, no-wrap msgid "@code{cancel}, @code{default-cancel}" msgstr "" #. type: table #: en/pinentry.texi:662 msgid "" "Like the @code{ok} and @code{default-ok} buttons except these strings are " "used for the cancel button." msgstr "" #. type: table #: en/pinentry.texi:664 msgid "This button should not be shown if @code{one_button} is set." msgstr "" #. type: code{#1} #: en/pinentry.texi:665 #, no-wrap msgid "default-notok" msgstr "" #. type: table #: en/pinentry.texi:668 msgid "" "Like the @code{default-ok} button except this string is used for the other " "button." msgstr "" #. type: table #: en/pinentry.texi:672 msgid "" "This button should only be displayed when showing a message box. If these " "variables are @code{NULL} or @code{one_button} is set, this button should " "not be displayed." msgstr "" #. type: code{#1} #: en/pinentry.texi:673 #, no-wrap msgid "quality_bar" msgstr "" #. type: table #: en/pinentry.texi:676 msgid "" "If this is set, a widget should be used to show the password's quality. The " "value of this field is a label for the widget." msgstr "" #. type: table #: en/pinentry.texi:680 msgid "" "Note: to update the password quality, whenever the password changes, call " "the @code{pinentry_inq_quality} function and then update the password " "quality widget correspondingly." msgstr "" #. type: code{#1} #: en/pinentry.texi:681 #, no-wrap msgid "quality_bar_tt" msgstr "" #. type: table #: en/pinentry.texi:683 msgid "A tooltip for the quality bar." msgstr "" #. type: code{#1} #: en/pinentry.texi:684 #, no-wrap msgid "default_pwmngr" msgstr "" #. type: table #: en/pinentry.texi:692 msgid "" "If @code{may_cache_password} and @code{keyinfo} are set and the user " "consents, then the @pinentry{} may cache the password with an external " "manager. Note: getting the user's consent is essential, because password " "managers often provide a different level of security. If the above " "condition is true and @code{tried_password_cache} is false, then a check box " "with the specified string should be displayed. The check box must default " "to off." msgstr "" #. type: code{#1} #: en/pinentry.texi:693 #, no-wrap msgid "default-cf-visi" msgstr "" #. type: table #: en/pinentry.texi:696 msgid "" "The string to show with a question if you want to confirm that the user " "wants to change the visibility of the password." msgstr "" #. type: code{#1} #: en/pinentry.texi:697 #, no-wrap msgid "default-tt-visi" msgstr "" #. type: table #: en/pinentry.texi:699 msgid "Tooltip for an action that would reveal the entered password." msgstr "" #. type: code{#1} #: en/pinentry.texi:700 #, no-wrap msgid "default-tt-hide" msgstr "" #. type: table #: en/pinentry.texi:703 msgid "" "Tooltip for an action that would hide the password revealed by the action " "labelled with @code{default-tt-visi}." msgstr "" #. type: Plain text #: en/pinentry.texi:709 msgid "" "When the handler is done, it should store the passphrase in @code{pin}, if " "appropriate. This variable is allocated in secure memory. Use " "@code{pinentry_setbufferlen} to size the buffer." msgstr "" #. type: Plain text #: en/pinentry.texi:712 msgid "" "The actual return code is dependent on whether the dialog is in message mode " "or in passphrase mode." msgstr "" #. type: Plain text #: en/pinentry.texi:719 msgid "" "If the dialog is in message mode and the user pressed ok, return 1. " "Otherwise, return 0. If an error occurred, indicate this by setting it in " "@code{specific_err} or setting @code{locale_err} to @code{1} (for locale " "specific errors). If the dialog was canceled, then the handler should set " "the @code{canceled} variable to @code{1}. If the not ok button was pressed, " "don't do anything else." msgstr "" #. type: Plain text #: en/pinentry.texi:724 msgid "" "If the dialog is in passphrase mode return @code{1} if the user entered a " "password and pressed ok. If an error occurred, return @code{-1} and set " "@code{specific_err} or @code{locale_err}, as above. If the user canceled " "the dialog box, return @code{-1}." msgstr "" #. type: Plain text #: en/pinentry.texi:728 msgid "" "If the window was closed, then the handler should set the " "@code{close_button} variable and otherwise act as if the cancel button was " "pressed." msgstr "" #. type: include #: en/pinentry.texi:735 #, no-wrap msgid "gpl.texi" msgstr ""