mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-21 10:09:57 +01:00
Merge branch 'master' into gniibe/t6275
This commit is contained in:
commit
7cadbf4e18
@ -55,6 +55,7 @@ EXTRA_DIST = build-aux/config.rpath build-aux/potomo autogen.sh autogen.rc \
|
||||
build-aux/speedo/w32/pango.modules \
|
||||
build-aux/speedo/w32/gdk-pixbuf-loaders.cache \
|
||||
build-aux/speedo/w32/exdll.h \
|
||||
build-aux/speedo/w32/exdll.c \
|
||||
build-aux/speedo/w32/README.txt \
|
||||
build-aux/speedo/w32/gnupg-logo-150x57.bmp \
|
||||
build-aux/speedo/w32/gnupg-logo-164x314.bmp \
|
||||
|
35
NEWS
35
NEWS
@ -1,12 +1,19 @@
|
||||
Noteworthy changes in version 2.4.1 (unreleased)
|
||||
Noteworthy changes in version 2.4.2 (unreleased)
|
||||
------------------------------------------------
|
||||
|
||||
|
||||
Noteworthy changes in version 2.4.1 (2023-04-28)
|
||||
------------------------------------------------
|
||||
|
||||
* If the ~/.gnupg directory does not exist, the keyboxd is now
|
||||
automagically enabled.
|
||||
automagically enabled. [rGd9e7488b17]
|
||||
|
||||
* gpg: New option --add-desig-revoker. [rG3d094e2bcf]
|
||||
|
||||
* gpg: New option --assert-signer.
|
||||
* gpg: New option --assert-signer. [rGc9e95b8dee]
|
||||
|
||||
* gpg: New command --quick-add-adsk and other ADSK features.
|
||||
[T6395, https://gnupg.org/blog/20230321-adsk.html]
|
||||
|
||||
* gpg: New list-option "show-unusable-sigs". Also show
|
||||
"[self-signature]" instead of the user-id in key signature
|
||||
@ -15,6 +22,11 @@ Noteworthy changes in version 2.4.1 (unreleased)
|
||||
* gpg: For symmetric encryption the default S2K hash is now SHA256.
|
||||
[T6367]
|
||||
|
||||
* gpg: Detect already compressed data also when using a pipe. Also
|
||||
detect JPEG and PNG file formats. [T6332]
|
||||
|
||||
* gpg: New subcommand "openpgp" for --card-edit. [T6462]
|
||||
|
||||
* gpgsm: Verification of detached signatures does now strip trailing
|
||||
zeroes from the input if --assume-binary is used. [rG2a13f7f9dc]
|
||||
|
||||
@ -22,12 +34,29 @@ Noteworthy changes in version 2.4.1 (unreleased)
|
||||
using indefinite form length octets. This improves compatibility
|
||||
with some PDF signature verification software. [rG8996b0b655]
|
||||
|
||||
* gpgtar: Emit progress status lines in create mode. [T6363]
|
||||
|
||||
* dirmngr: The LDAP modifyTimestamp is now returned by some
|
||||
keyserver commands. [rG56d309133f]
|
||||
|
||||
* ssh: Allow specification of the order keys are presented to ssh.
|
||||
See the man page entry for --enable-ssh-support. [T5996, T6212]
|
||||
|
||||
* gpg: Make list-options "show-sig-subpackets" work again.
|
||||
Fixes regression in 2.4.0. [rG5a223303d7]
|
||||
|
||||
* gpg: Fix the keytocard command for Yubikeys. [T6378]
|
||||
|
||||
* gpg: Do not continue an export after a cancel for the primary key.
|
||||
[T6093]
|
||||
|
||||
* gpg: Replace the --override-compliance-check hack by a real fix.
|
||||
[T5655]
|
||||
|
||||
* gpgtar: Fix decryption with input taken from stdin. [T6355]
|
||||
|
||||
See-also: gnupg-announce/2023q2/000478.html
|
||||
Release-info: https://dev.gnupg.org/T6454
|
||||
|
||||
|
||||
Noteworthy changes in version 2.4.0 (2022-12-16)
|
||||
|
@ -2648,7 +2648,8 @@ ssh_send_available_keys (ctrl_t ctrl, estream_t key_blobs, u32 *r_key_counter)
|
||||
|
||||
/* Clamp LNR value and set the ordinal.
|
||||
* Current use of ordinals:
|
||||
* 1..99999 - inserted cards (right now only 1)
|
||||
* 1..999 - low value Use-for-ssh.
|
||||
* 1000..99999 - inserted cards (right now only 1000)
|
||||
* 100000..199999 - listed in sshcontrol
|
||||
* 200000..299999 - order taken from Use-for-ssh
|
||||
*/
|
||||
@ -2678,18 +2679,25 @@ ssh_send_available_keys (ctrl_t ctrl, estream_t key_blobs, u32 *r_key_counter)
|
||||
* order of card keys (which are sorted by their s/n), we
|
||||
* would need to get the use-for-ssh: value from the stub
|
||||
* file and set an appropriate ordinal. */
|
||||
order = 1;
|
||||
order = 1000;
|
||||
}
|
||||
else if (is_ssh)
|
||||
err = agent_public_key_from_file (ctrl, grip, &key_public);
|
||||
else /* Examine the file if it's suitable for SSH. */
|
||||
{
|
||||
err = agent_ssh_key_from_file (ctrl, grip, &key_public, &order);
|
||||
if (order < 0 || err)
|
||||
if (err)
|
||||
order = 0;
|
||||
else if (order < 0)
|
||||
{
|
||||
order = -order;
|
||||
if (order > 999)
|
||||
order = 999;
|
||||
}
|
||||
else if (order > 99999)
|
||||
order = 99999;
|
||||
order += 200000;
|
||||
order = 299999;
|
||||
else
|
||||
order += 200000;
|
||||
}
|
||||
if (err)
|
||||
{
|
||||
|
@ -3175,9 +3175,10 @@ cmd_delete_key (assuan_context_t ctx, char *line)
|
||||
#endif
|
||||
|
||||
static const char hlp_keytocard[] =
|
||||
"KEYTOCARD [--force] <hexgrip> <serialno> <keyref> [<timestamp>]\n"
|
||||
"KEYTOCARD [--force] <hexgrip> <serialno> <keyref> [<timestamp> [<ecdh>]]\n"
|
||||
"\n"
|
||||
"TIMESTAMP is required for OpenPGP and defaults to the Epoch. The\n"
|
||||
"TIMESTAMP is required for OpenPGP and defaults to the Epoch.\n"
|
||||
"ECDH are the hexified ECDH parameters for OpenPGP.\n"
|
||||
"SERIALNO is used for checking; use \"-\" to disable the check.";
|
||||
static gpg_error_t
|
||||
cmd_keytocard (assuan_context_t ctx, char *line)
|
||||
@ -3194,6 +3195,9 @@ cmd_keytocard (assuan_context_t ctx, char *line)
|
||||
size_t keydatalen;
|
||||
unsigned char *shadow_info = NULL;
|
||||
time_t timestamp;
|
||||
char *ecdh_params = NULL;
|
||||
unsigned int ecdh_params_len;
|
||||
unsigned int extralen1, extralen2;
|
||||
|
||||
if (ctrl->restricted)
|
||||
return leave_cmd (ctx, gpg_error (GPG_ERR_FORBIDDEN));
|
||||
@ -3240,10 +3244,38 @@ cmd_keytocard (assuan_context_t ctx, char *line)
|
||||
|
||||
/* Default to the creation time as stored in the private key. The
|
||||
* parameter is here so that gpg can make sure that the timestamp as
|
||||
* used for key creation (and thus the openPGP fingerprint) is
|
||||
* used. */
|
||||
* used. It is also important for OpenPGP cards to allow computing
|
||||
* of the fingerprint. Same goes for the ECDH params. */
|
||||
if (argc > 3)
|
||||
timestamp = isotime2epoch (argv[3]);
|
||||
{
|
||||
timestamp = isotime2epoch (argv[3]);
|
||||
if (argc > 4)
|
||||
{
|
||||
size_t n;
|
||||
|
||||
err = parse_hexstring (ctx, argv[4], &n);
|
||||
if (err)
|
||||
goto leave; /* Badly formatted ecdh params. */
|
||||
n /= 2;
|
||||
if (n < 4)
|
||||
{
|
||||
err = set_error (GPG_ERR_ASS_PARAMETER, "ecdh param too short");
|
||||
goto leave;
|
||||
}
|
||||
ecdh_params_len = n;
|
||||
ecdh_params = xtrymalloc (ecdh_params_len);
|
||||
if (!ecdh_params)
|
||||
{
|
||||
err = gpg_error_from_syserror ();
|
||||
goto leave;
|
||||
}
|
||||
if (hex2bin (argv[4], ecdh_params, ecdh_params_len) < 0)
|
||||
{
|
||||
err = set_error (GPG_ERR_BUG, "hex2bin");
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (timestamp == (time_t)(-1))
|
||||
timestamp = isotime2epoch ("19700101T000000");
|
||||
|
||||
@ -3254,9 +3286,12 @@ cmd_keytocard (assuan_context_t ctx, char *line)
|
||||
}
|
||||
|
||||
/* Note: We can't use make_canon_sexp because we need to allocate a
|
||||
* few extra bytes for our hack below. */
|
||||
* few extra bytes for our hack below. The 20 for extralen2
|
||||
* accounts for the sexp length of ecdh_params. */
|
||||
keydatalen = gcry_sexp_sprint (s_skey, GCRYSEXP_FMT_CANON, NULL, 0);
|
||||
keydata = xtrymalloc_secure (keydatalen + 30);
|
||||
extralen1 = 30;
|
||||
extralen2 = ecdh_params? (20+20+ecdh_params_len) : 0;
|
||||
keydata = xtrymalloc_secure (keydatalen + extralen1 + extralen2);
|
||||
if (keydata == NULL)
|
||||
{
|
||||
err = gpg_error_from_syserror ();
|
||||
@ -3265,15 +3300,31 @@ cmd_keytocard (assuan_context_t ctx, char *line)
|
||||
gcry_sexp_sprint (s_skey, GCRYSEXP_FMT_CANON, keydata, keydatalen);
|
||||
gcry_sexp_release (s_skey);
|
||||
s_skey = NULL;
|
||||
|
||||
keydatalen--; /* Decrement for last '\0'. */
|
||||
|
||||
/* Hack to insert the timestamp "created-at" into the private key. */
|
||||
snprintf (keydata+keydatalen-1, 30, KEYTOCARD_TIMESTAMP_FORMAT, timestamp);
|
||||
snprintf (keydata+keydatalen-1, extralen1, KEYTOCARD_TIMESTAMP_FORMAT,
|
||||
timestamp);
|
||||
keydatalen += 10 + 19 - 1;
|
||||
|
||||
/* Hack to insert the timestamp "ecdh-params" into the private key. */
|
||||
if (ecdh_params)
|
||||
{
|
||||
snprintf (keydata+keydatalen-1, extralen2, "(11:ecdh-params%u:",
|
||||
ecdh_params_len);
|
||||
keydatalen += strlen (keydata+keydatalen-1) -1;
|
||||
memcpy (keydata+keydatalen, ecdh_params, ecdh_params_len);
|
||||
keydatalen += ecdh_params_len;
|
||||
memcpy (keydata+keydatalen, "))", 3);
|
||||
keydatalen += 2;
|
||||
}
|
||||
|
||||
err = divert_writekey (ctrl, force, serialno, keyref, keydata, keydatalen);
|
||||
xfree (keydata);
|
||||
|
||||
leave:
|
||||
xfree (ecdh_params);
|
||||
gcry_sexp_release (s_skey);
|
||||
xfree (shadow_info);
|
||||
return leave_cmd (ctx, err);
|
||||
|
@ -124,7 +124,13 @@ gpg-agent's ssh-agent implementation. This is thus the same as
|
||||
putting the keygrip into the 'sshcontrol' file. Only one such item
|
||||
should exist. If another non-zero value between 1 and 99999 is used,
|
||||
this is taken to establish the order in which the keys are returned to
|
||||
ssh; lower numbers are returned first.
|
||||
ssh; lower numbers are returned first. If a negative value is used
|
||||
this overrides currently active (inserted) cards and thus allows to
|
||||
prefer on-disk keys over inserted cards. A value of -1 has the
|
||||
highest priority; values are capped at -999 and have a lower priority
|
||||
but still above the positive values, inserted cards or the order in
|
||||
sshcontrol.
|
||||
|
||||
|
||||
*** Use-for-p11
|
||||
If given and the value is "yes" or "1" the key is allowed for use by
|
||||
|
@ -1340,10 +1340,14 @@ $(bdir)/README.txt: $(bdir)/NEWS.tmp $(topsrc)/README $(w32src)/README.txt \
|
||||
| sed -e '/^#/d' \
|
||||
| awk '{printf "%s\r\n", $$0}' >$(bdir)/README.txt
|
||||
|
||||
$(bdir)/g4wihelp.dll: $(w32src)/g4wihelp.c $(w32src)/exdll.h
|
||||
$(bdir)/g4wihelp.dll: $(w32src)/g4wihelp.c $(w32src)/exdll.h $(w32src)/exdll.c
|
||||
(set -e; cd $(bdir); \
|
||||
$(W32CC) -I. -shared -O2 -o g4wihelp.dll $(w32src)/g4wihelp.c \
|
||||
-lwinmm -lgdi32; \
|
||||
$(W32CC) -DUNICODE -static-libgcc -I . -O2 -c \
|
||||
-o exdll.o $(w32src)/exdll.c; \
|
||||
$(W32CC) -DUNICODE -static-libgcc -I. -shared -O2 \
|
||||
-o g4wihelp.dll $(w32src)/g4wihelp.c exdll.o \
|
||||
-lwinmm -lgdi32 -luserenv \
|
||||
-lshell32 -loleaut32 -lshlwapi -lmsimg32; \
|
||||
$(STRIP) g4wihelp.dll)
|
||||
|
||||
w32_insthelpers: $(bdir)/g4wihelp.dll
|
||||
@ -1372,8 +1376,7 @@ installer: all w32_insthelpers $(w32src)/inst-options.ini $(bdir)/README.txt
|
||||
done; \
|
||||
fi \
|
||||
)
|
||||
$(MAKENSIS) -V2 $$($(MAKENSIS) -version \
|
||||
| grep -q ^v3 && echo "-INPUTCHARSET CP1252 ") \
|
||||
$(MAKENSIS) -V2 \
|
||||
-DINST_DIR=$(idir) \
|
||||
-DINST6_DIR=$(idir6) \
|
||||
-DBUILD_DIR=$(bdir) \
|
||||
|
286
build-aux/speedo/w32/exdll.c
Normal file
286
build-aux/speedo/w32/exdll.c
Normal file
@ -0,0 +1,286 @@
|
||||
#include "exdll.h"
|
||||
|
||||
unsigned int g_stringsize;
|
||||
stack_t **g_stacktop;
|
||||
LPTSTR g_variables;
|
||||
|
||||
// utility functions (not required but often useful)
|
||||
|
||||
int NSISCALL popstring(LPTSTR str)
|
||||
{
|
||||
stack_t *th;
|
||||
if (!g_stacktop || !*g_stacktop) return 1;
|
||||
th=(*g_stacktop);
|
||||
if (str) lstrcpy(str,th->text);
|
||||
*g_stacktop = th->next;
|
||||
GlobalFree((HGLOBAL)th);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int NSISCALL popstringn(LPTSTR str, int maxlen)
|
||||
{
|
||||
stack_t *th;
|
||||
if (!g_stacktop || !*g_stacktop) return 1;
|
||||
th=(*g_stacktop);
|
||||
if (str) lstrcpyn(str,th->text,maxlen?maxlen:g_stringsize);
|
||||
*g_stacktop = th->next;
|
||||
GlobalFree((HGLOBAL)th);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void NSISCALL pushstring(LPCTSTR str)
|
||||
{
|
||||
stack_t *th;
|
||||
if (!g_stacktop) return;
|
||||
th=(stack_t*)GlobalAlloc(GPTR,(sizeof(stack_t)+(g_stringsize)*sizeof(*str)));
|
||||
lstrcpyn(th->text,str,g_stringsize);
|
||||
th->next=*g_stacktop;
|
||||
*g_stacktop=th;
|
||||
}
|
||||
|
||||
LPTSTR NSISCALL getuservariable(const int varnum)
|
||||
{
|
||||
if (!isvalidnsisvarindex(varnum)) return NULL;
|
||||
return (LPWSTR)((wchar_t*)g_variables+varnum*g_stringsize);
|
||||
}
|
||||
|
||||
void NSISCALL setuservariable(const int varnum, LPCTSTR var)
|
||||
{
|
||||
if (var && isvalidnsisvarindex(varnum))
|
||||
lstrcpy((LPWSTR)((wchar_t*)g_variables + varnum*g_stringsize), var);
|
||||
}
|
||||
|
||||
#ifdef UNICODE
|
||||
int NSISCALL PopStringA(LPSTR ansiStr)
|
||||
{
|
||||
LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, g_stringsize*sizeof(WCHAR));
|
||||
int rval = popstring(wideStr);
|
||||
WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
|
||||
GlobalFree((HGLOBAL)wideStr);
|
||||
return rval;
|
||||
}
|
||||
|
||||
int NSISCALL PopStringNA(LPSTR ansiStr, int maxlen)
|
||||
{
|
||||
int realLen = maxlen ? maxlen : g_stringsize;
|
||||
LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, realLen*sizeof(WCHAR));
|
||||
int rval = popstringn(wideStr, realLen);
|
||||
WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, realLen, NULL, NULL);
|
||||
GlobalFree((HGLOBAL)wideStr);
|
||||
return rval;
|
||||
}
|
||||
|
||||
void NSISCALL PushStringA(LPCSTR ansiStr)
|
||||
{
|
||||
LPWSTR wideStr = (LPWSTR) GlobalAlloc(GPTR, g_stringsize*sizeof(WCHAR));
|
||||
MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
|
||||
pushstring(wideStr);
|
||||
GlobalFree((HGLOBAL)wideStr);
|
||||
return;
|
||||
}
|
||||
|
||||
void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr)
|
||||
{
|
||||
lstrcpyW(wideStr, getuservariable(varnum));
|
||||
}
|
||||
|
||||
void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr)
|
||||
{
|
||||
LPWSTR wideStr = getuservariable(varnum);
|
||||
WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
|
||||
}
|
||||
|
||||
void NSISCALL SetUserVariableA(const int varnum, LPCSTR ansiStr)
|
||||
{
|
||||
if (ansiStr && isvalidnsisvarindex(varnum))
|
||||
{
|
||||
LPWSTR wideStr = (LPWSTR)((char*)g_variables + varnum * g_stringsize);
|
||||
MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
// ANSI defs
|
||||
int NSISCALL PopStringW(LPWSTR wideStr)
|
||||
{
|
||||
LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, g_stringsize);
|
||||
int rval = popstring(ansiStr);
|
||||
MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
|
||||
GlobalFree((HGLOBAL)ansiStr);
|
||||
return rval;
|
||||
}
|
||||
|
||||
int NSISCALL PopStringNW(LPWSTR wideStr, int maxlen)
|
||||
{
|
||||
int realLen = maxlen ? maxlen : g_stringsize;
|
||||
LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, realLen);
|
||||
int rval = popstringn(ansiStr, realLen);
|
||||
MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, realLen);
|
||||
GlobalFree((HGLOBAL)ansiStr);
|
||||
return rval;
|
||||
}
|
||||
|
||||
void NSISCALL PushStringW(LPWSTR wideStr)
|
||||
{
|
||||
LPSTR ansiStr = (LPSTR) GlobalAlloc(GPTR, g_stringsize);
|
||||
WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
|
||||
pushstring(ansiStr);
|
||||
GlobalFree((HGLOBAL)ansiStr);
|
||||
}
|
||||
|
||||
void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr)
|
||||
{
|
||||
LPSTR ansiStr = getuservariable(varnum);
|
||||
MultiByteToWideChar(CP_ACP, 0, ansiStr, -1, wideStr, g_stringsize);
|
||||
}
|
||||
|
||||
void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr)
|
||||
{
|
||||
lstrcpyA(ansiStr, getuservariable(varnum));
|
||||
}
|
||||
|
||||
void NSISCALL SetUserVariableW(const int varnum, LPCWSTR wideStr)
|
||||
{
|
||||
if (wideStr && isvalidnsisvarindex(varnum))
|
||||
{
|
||||
LPSTR ansiStr = (char*)g_variables + varnum * g_stringsize;
|
||||
WideCharToMultiByte(CP_ACP, 0, wideStr, -1, ansiStr, g_stringsize, NULL, NULL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// playing with integers
|
||||
|
||||
INT_PTR NSISCALL nsishelper_str_to_ptr(LPCTSTR s)
|
||||
{
|
||||
INT_PTR v=0;
|
||||
if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X')))
|
||||
{
|
||||
s++;
|
||||
for (;;)
|
||||
{
|
||||
int c=*(++s);
|
||||
if (c >= _T('0') && c <= _T('9')) c-=_T('0');
|
||||
else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10;
|
||||
else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10;
|
||||
else break;
|
||||
v<<=4;
|
||||
v+=c;
|
||||
}
|
||||
}
|
||||
else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0'))
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
int c=*(++s);
|
||||
if (c >= _T('0') && c <= _T('7')) c-=_T('0');
|
||||
else break;
|
||||
v<<=3;
|
||||
v+=c;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int sign=0;
|
||||
if (*s == _T('-')) sign++; else s--;
|
||||
for (;;)
|
||||
{
|
||||
int c=*(++s) - _T('0');
|
||||
if (c < 0 || c > 9) break;
|
||||
v*=10;
|
||||
v+=c;
|
||||
}
|
||||
if (sign) v = -v;
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
unsigned int NSISCALL myatou(LPCTSTR s)
|
||||
{
|
||||
unsigned int v=0;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
unsigned int c=*s++;
|
||||
if (c >= _T('0') && c <= _T('9')) c-=_T('0');
|
||||
else break;
|
||||
v*=10;
|
||||
v+=c;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
int NSISCALL myatoi_or(LPCTSTR s)
|
||||
{
|
||||
int v=0;
|
||||
if (*s == _T('0') && (s[1] == _T('x') || s[1] == _T('X')))
|
||||
{
|
||||
s++;
|
||||
for (;;)
|
||||
{
|
||||
int c=*(++s);
|
||||
if (c >= _T('0') && c <= _T('9')) c-=_T('0');
|
||||
else if (c >= _T('a') && c <= _T('f')) c-=_T('a')-10;
|
||||
else if (c >= _T('A') && c <= _T('F')) c-=_T('A')-10;
|
||||
else break;
|
||||
v<<=4;
|
||||
v+=c;
|
||||
}
|
||||
}
|
||||
else if (*s == _T('0') && s[1] <= _T('7') && s[1] >= _T('0'))
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
int c=*(++s);
|
||||
if (c >= _T('0') && c <= _T('7')) c-=_T('0');
|
||||
else break;
|
||||
v<<=3;
|
||||
v+=c;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int sign=0;
|
||||
if (*s == _T('-')) sign++; else s--;
|
||||
for (;;)
|
||||
{
|
||||
int c=*(++s) - _T('0');
|
||||
if (c < 0 || c > 9) break;
|
||||
v*=10;
|
||||
v+=c;
|
||||
}
|
||||
if (sign) v = -v;
|
||||
}
|
||||
|
||||
// Support for simple ORed expressions
|
||||
if (*s == _T('|'))
|
||||
{
|
||||
v |= myatoi_or(s+1);
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
INT_PTR NSISCALL popintptr()
|
||||
{
|
||||
TCHAR buf[128];
|
||||
if (popstringn(buf,COUNTOF(buf)))
|
||||
return 0;
|
||||
return nsishelper_str_to_ptr(buf);
|
||||
}
|
||||
|
||||
int NSISCALL popint_or()
|
||||
{
|
||||
TCHAR buf[128];
|
||||
if (popstringn(buf,COUNTOF(buf)))
|
||||
return 0;
|
||||
return myatoi_or(buf);
|
||||
}
|
||||
|
||||
void NSISCALL pushintptr(INT_PTR value)
|
||||
{
|
||||
TCHAR buffer[30];
|
||||
wsprintf(buffer, sizeof(void*) > 4 ? _T("%Id") : _T("%d"), value);
|
||||
pushstring(buffer);
|
||||
}
|
@ -1,91 +1,47 @@
|
||||
/* exdll.h for use with gpg4win
|
||||
* Copyright (C) 1999-2005 Nullsoft, Inc.
|
||||
*
|
||||
* This license applies to everything in the NSIS package, except
|
||||
* where otherwise noted.
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any
|
||||
* damages arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any
|
||||
* purpose, including commercial applications, and to alter it and
|
||||
* redistribute it freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must
|
||||
* not claim that you wrote the original software. If you use this
|
||||
* software in a product, an acknowledgment in the product
|
||||
* documentation would be appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must
|
||||
* not be misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
************************************************************
|
||||
* 2005-11-14 wk Applied license text to original exdll.h file from
|
||||
* NSIS 2.0.4 and did some formatting changes.
|
||||
*/
|
||||
#include <windows.h>
|
||||
#ifndef ___NSIS_PLUGIN__H___
|
||||
#define ___NSIS_PLUGIN__H___
|
||||
|
||||
#ifndef _EXDLL_H_
|
||||
#define _EXDLL_H_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* only include this file from one place in your DLL. (it is all
|
||||
static, if you use it in two places it will fail) */
|
||||
#ifndef NSISCALL
|
||||
# define NSISCALL __stdcall
|
||||
#endif
|
||||
#if !defined(_WIN32) && !defined(LPTSTR)
|
||||
# define LPTSTR TCHAR*
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifndef NSISCALL
|
||||
# define NSISCALL WINAPI
|
||||
#endif
|
||||
|
||||
#define EXDLL_INIT() { \
|
||||
g_stringsize=string_size; \
|
||||
g_stacktop=stacktop; \
|
||||
g_variables=variables; }
|
||||
|
||||
/* For page showing plug-ins */
|
||||
#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8)
|
||||
#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd)
|
||||
#define NOTIFY_BYE_BYE 'x'
|
||||
|
||||
enum NSPIM
|
||||
{
|
||||
NSPIM_UNLOAD,
|
||||
NSPIM_GUIUNLOAD
|
||||
};
|
||||
|
||||
typedef UINT_PTR (*NSISPLUGINCALLBACK)(enum NSPIM);
|
||||
|
||||
typedef struct _stack_t {
|
||||
struct _stack_t *next;
|
||||
char text[1]; /* This should be the length of string_size. */
|
||||
#ifdef UNICODE
|
||||
WCHAR text[1]; // this should be the length of g_stringsize when allocating
|
||||
#else
|
||||
char text[1];
|
||||
#endif
|
||||
} stack_t;
|
||||
|
||||
|
||||
static unsigned int g_stringsize;
|
||||
static stack_t **g_stacktop;
|
||||
static char *g_variables;
|
||||
|
||||
static int __stdcall popstring(char *str, size_t maxlen); /* 0 on success, 1 on empty stack */
|
||||
static void __stdcall pushstring(const char *str);
|
||||
|
||||
enum
|
||||
{
|
||||
INST_0, // $0
|
||||
INST_1, // $1
|
||||
INST_2, // $2
|
||||
INST_3, // $3
|
||||
INST_4, // $4
|
||||
INST_5, // $5
|
||||
INST_6, // $6
|
||||
INST_7, // $7
|
||||
INST_8, // $8
|
||||
INST_9, // $9
|
||||
INST_R0, // $R0
|
||||
INST_R1, // $R1
|
||||
INST_R2, // $R2
|
||||
INST_R3, // $R3
|
||||
INST_R4, // $R4
|
||||
INST_R5, // $R5
|
||||
INST_R6, // $R6
|
||||
INST_R7, // $R7
|
||||
INST_R8, // $R8
|
||||
INST_R9, // $R9
|
||||
INST_CMDLINE, // $CMDLINE
|
||||
INST_INSTDIR, // $INSTDIR
|
||||
INST_OUTDIR, // $OUTDIR
|
||||
INST_EXEDIR, // $EXEDIR
|
||||
INST_LANG, // $LANGUAGE
|
||||
__INST_LAST
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
int autoclose;
|
||||
int all_user_var;
|
||||
@ -94,58 +50,127 @@ typedef struct {
|
||||
int exec_reboot;
|
||||
int reboot_called;
|
||||
int XXX_cur_insttype; /* deprecated */
|
||||
int XXX_insttype_changed; /* deprecated */
|
||||
int plugin_api_version; /* Used to be insttype_changed */
|
||||
int silent;
|
||||
int instdir_error;
|
||||
int rtl;
|
||||
int errlvl;
|
||||
int alter_reg_view;
|
||||
int status_update;
|
||||
} exec_flags_t;
|
||||
|
||||
typedef struct {
|
||||
exec_flags_t *exec_flags;
|
||||
int (__stdcall *ExecuteCodeSegment)(int, HWND);
|
||||
void (__stdcall *validate_filename)(LPTSTR);
|
||||
int (__stdcall *RegisterPluginCallback)(HMODULE, NSISPLUGINCALLBACK);
|
||||
} extra_parameters_t;
|
||||
|
||||
|
||||
/* Utility functions (not required but often useful). */
|
||||
static int __stdcall
|
||||
popstring(char *str, size_t maxlen)
|
||||
enum
|
||||
{
|
||||
stack_t *th;
|
||||
if (!g_stacktop || !*g_stacktop)
|
||||
return 1;
|
||||
th=(*g_stacktop);
|
||||
lstrcpyn (str, th->text, maxlen);
|
||||
*g_stacktop = th->next;
|
||||
GlobalFree((HGLOBAL)th);
|
||||
return 0;
|
||||
INST_0, // $0
|
||||
INST_1, // $1
|
||||
INST_2, // $2
|
||||
INST_3, // $3
|
||||
INST_4, // $4
|
||||
INST_5, // $5
|
||||
INST_6, // $6
|
||||
INST_7, // $7
|
||||
INST_8, // $8
|
||||
INST_9, // $9
|
||||
INST_R0, // $R0
|
||||
INST_R1, // $R1
|
||||
INST_R2, // $R2
|
||||
INST_R3, // $R3
|
||||
INST_R4, // $R4
|
||||
INST_R5, // $R5
|
||||
INST_R6, // $R6
|
||||
INST_R7, // $R7
|
||||
INST_R8, // $R8
|
||||
INST_R9, // $R9
|
||||
INST_CMDLINE, // $CMDLINE
|
||||
INST_INSTDIR, // $INSTDIR
|
||||
INST_OUTDIR, // $OUTDIR
|
||||
INST_EXEDIR, // $EXEDIR
|
||||
INST_LANG, // $LANGUAGE
|
||||
__INST_LAST
|
||||
};
|
||||
|
||||
extern unsigned int g_stringsize;
|
||||
extern stack_t **g_stacktop;
|
||||
extern LPTSTR g_variables;
|
||||
|
||||
void NSISCALL pushstring(LPCTSTR str);
|
||||
void NSISCALL pushintptr(INT_PTR value);
|
||||
#define pushint(v) pushintptr((INT_PTR)(v))
|
||||
int NSISCALL popstring(LPTSTR str); // 0 on success, 1 on empty stack
|
||||
int NSISCALL popstringn(LPTSTR str, int maxlen); // with length limit, pass 0 for g_stringsize
|
||||
INT_PTR NSISCALL popintptr();
|
||||
#define popint() ( (int) popintptr() )
|
||||
int NSISCALL popint_or(); // with support for or'ing (2|4|8)
|
||||
INT_PTR NSISCALL nsishelper_str_to_ptr(LPCTSTR s);
|
||||
#define myatoi(s) ( (int) nsishelper_str_to_ptr(s) ) // converts a string to an integer
|
||||
unsigned int NSISCALL myatou(LPCTSTR s); // converts a string to an unsigned integer, decimal only
|
||||
int NSISCALL myatoi_or(LPCTSTR s); // with support for or'ing (2|4|8)
|
||||
LPTSTR NSISCALL getuservariable(const int varnum);
|
||||
void NSISCALL setuservariable(const int varnum, LPCTSTR var);
|
||||
|
||||
#ifdef UNICODE
|
||||
#define PopStringW(x) popstring(x)
|
||||
#define PushStringW(x) pushstring(x)
|
||||
#define SetUserVariableW(x,y) setuservariable(x,y)
|
||||
|
||||
int NSISCALL PopStringA(LPSTR ansiStr);
|
||||
int NSISCALL PopStringNA(LPSTR ansiStr, int maxlen);
|
||||
void NSISCALL PushStringA(LPCSTR ansiStr);
|
||||
void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr);
|
||||
void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr);
|
||||
void NSISCALL SetUserVariableA(const int varnum, LPCSTR ansiStr);
|
||||
|
||||
#else
|
||||
// ANSI defs
|
||||
|
||||
#define PopStringA(x) popstring(x)
|
||||
#define PushStringA(x) pushstring(x)
|
||||
#define SetUserVariableA(x,y) setuservariable(x,y)
|
||||
|
||||
int NSISCALL PopStringW(LPWSTR wideStr);
|
||||
void NSISCALL PushStringW(LPWSTR wideStr);
|
||||
void NSISCALL GetUserVariableW(const int varnum, LPWSTR wideStr);
|
||||
void NSISCALL GetUserVariableA(const int varnum, LPSTR ansiStr);
|
||||
void NSISCALL SetUserVariableW(const int varnum, LPCWSTR wideStr);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
static void __stdcall
|
||||
pushstring(const char *str)
|
||||
{
|
||||
stack_t *th;
|
||||
if (!g_stacktop) return;
|
||||
th=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)+g_stringsize);
|
||||
lstrcpyn(th->text,str,g_stringsize);
|
||||
th->next=*g_stacktop;
|
||||
*g_stacktop=th;
|
||||
}
|
||||
#endif//!___NSIS_PLUGIN__H___
|
||||
|
||||
static char * __stdcall
|
||||
getuservariable(const int varnum)
|
||||
{
|
||||
if (varnum < 0 || varnum >= __INST_LAST) return NULL;
|
||||
return g_variables+varnum*g_stringsize;
|
||||
}
|
||||
#ifndef COUNTOF
|
||||
#define COUNTOF(a) (sizeof(a)/sizeof(a[0]))
|
||||
#endif
|
||||
|
||||
static void __stdcall
|
||||
setuservariable(const int varnum, const char *var)
|
||||
{
|
||||
if (var != NULL && varnum >= 0 && varnum < __INST_LAST)
|
||||
lstrcpy(g_variables + varnum*g_stringsize, var);
|
||||
}
|
||||
// minimal tchar.h emulation
|
||||
#ifndef _T
|
||||
# define _T TEXT
|
||||
#endif
|
||||
#if !defined(TCHAR) && !defined(_TCHAR_DEFINED)
|
||||
# ifdef UNICODE
|
||||
# define TCHAR WCHAR
|
||||
# else
|
||||
# define TCHAR char
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define isvalidnsisvarindex(varnum) ( ((unsigned int)(varnum)) < (__INST_LAST) )
|
||||
|
||||
|
||||
#endif/*_EXDLL_H_*/
|
||||
#define ERRORPRINTF(fmt, ...) \
|
||||
{ \
|
||||
char buf[512]; \
|
||||
snprintf(buf, 511, "ERROR: " fmt, ##__VA_ARGS__); \
|
||||
buf[511] = '\0'; \
|
||||
OutputDebugStringA(buf); \
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* g4wihelp.c - NSIS Helper DLL used with gpg4win. -*- coding: latin-1; -*-
|
||||
* Copyright (C) 2005 g10 Code GmbH
|
||||
/* g4wihelp.c - NSIS Helper DLL used with gpg4win.
|
||||
* Copyright (C) 2005, 2023 g10 Code GmbH
|
||||
* Copyright (C) 2001 Justin Frankel
|
||||
* Copyright (C) 2016, 2017 Intevation GmbH
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any
|
||||
@ -23,22 +24,41 @@
|
||||
************************************************************
|
||||
* The code for the splash screen has been taken from the Splash
|
||||
* plugin of the NSIS 2.04 distribution. That code comes without
|
||||
* explicit copyright notices in the source files or author names, it
|
||||
* explicit copyright notices in tyhe source files or author names, it
|
||||
* seems that it has been written by Justin Frankel; not sure about
|
||||
* the year, though. [wk 2005-11-28]
|
||||
*
|
||||
* Fixed some compiler warnings. [wk 2014-02-24].
|
||||
* Merged code from GnuPG version. [wk 2023-04-24].
|
||||
*
|
||||
* Compile time macros:
|
||||
* ENABLE_SLIDE_SHOW :: Define for Gpg4win.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <tlhelp32.h>
|
||||
#include <psapi.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "exdll.h"
|
||||
|
||||
/* We keep some code here for documentation reasons. That code has not
|
||||
* yet been converted to the Unicode NSIS plugin API. */
|
||||
/* #define ENABLE_SOUND_GADGET 1 */
|
||||
/* #define ENABLE_SPLASH_GADGET 1 */
|
||||
/* #define ENABLE_SERVICE_MANAGEMENT 1 */
|
||||
|
||||
|
||||
static HINSTANCE g_hInstance; /* Our Instance. */
|
||||
static HWND g_hwndParent; /* Handle of parent window or NULL. */
|
||||
static HBITMAP g_hbm; /* Handle of the splash image. */
|
||||
static int sleepint; /* Milliseconds to show the spals image. */
|
||||
|
||||
#ifdef ENABLE_SLIDE_SHOW
|
||||
void
|
||||
slide_stop(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop);
|
||||
#endif
|
||||
|
||||
/* Standard entry point for DLLs. */
|
||||
int WINAPI
|
||||
@ -46,6 +66,12 @@ DllMain (HANDLE hinst, DWORD reason, LPVOID reserved)
|
||||
{
|
||||
if (reason == DLL_PROCESS_ATTACH)
|
||||
g_hInstance = hinst;
|
||||
else if (reason == DLL_PROCESS_DETACH)
|
||||
{
|
||||
#ifdef ENABLE_SLIDE_SHOW
|
||||
slide_stop (NULL, 0, NULL, NULL);
|
||||
#endif
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -53,7 +79,7 @@ DllMain (HANDLE hinst, DWORD reason, LPVOID reserved)
|
||||
|
||||
/* Dummy function for testing. */
|
||||
void __declspec(dllexport)
|
||||
dummy (HWND hwndParent, int string_size, char *variables,
|
||||
dummy (HWND hwndParent, int string_size, LPTSTR variables,
|
||||
stack_t **stacktop, extra_parameters_t *extra)
|
||||
{
|
||||
g_hwndParent = hwndParent;
|
||||
@ -67,21 +93,66 @@ dummy (HWND hwndParent, int string_size, char *variables,
|
||||
// you should empty the stack of your parameters, and ONLY your
|
||||
// parameters.
|
||||
|
||||
// do your stuff here
|
||||
/* Let's dump the variables. */
|
||||
{
|
||||
char buf[1024];
|
||||
snprintf (buf, sizeof buf, "$R0=%s\r\n$R1=%s\r\n",
|
||||
getuservariable(INST_R0),
|
||||
getuservariable(INST_R1));
|
||||
MessageBox (g_hwndParent,buf,0,MB_OK);
|
||||
char line[512];
|
||||
char *p;
|
||||
const unsigned char *s = (void*)g_variables;
|
||||
int i,j;
|
||||
|
||||
snprintf (buf, sizeof buf,
|
||||
"autoclose =%d\r\n"
|
||||
for (i=0; i < string_size* __INST_LAST; i+=32, s += 32)
|
||||
{
|
||||
for (j=0; j < 32; j++)
|
||||
if (s[j])
|
||||
break;
|
||||
if (j != 32)
|
||||
{
|
||||
p = line;
|
||||
*p = 0;
|
||||
snprintf (p, 10, "%05x: ", i);
|
||||
p += strlen (p);
|
||||
for (j=0; j < 32; j++)
|
||||
{
|
||||
snprintf (p, 10, "%02x", s[j]);
|
||||
p += strlen (p);
|
||||
}
|
||||
strcat (p, " |");
|
||||
p += strlen (p);
|
||||
for (j=0; j < 32; j++)
|
||||
{
|
||||
if (s[j] >= 32 && s[j] < 127)
|
||||
*p = s[j];
|
||||
else
|
||||
*p = '.';
|
||||
p++;
|
||||
}
|
||||
strcat (p, "|");
|
||||
OutputDebugStringA (line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
wchar_t buf[1024];
|
||||
|
||||
swprintf(buf, 1024,
|
||||
L"stringsize=%d\r\n$0=%s\r\n$1=%s\r\n$R0=%s\r\n$R1=%s\r\n",
|
||||
string_size,
|
||||
getuservariable(INST_0),
|
||||
getuservariable(INST_1),
|
||||
getuservariable(INST_R0),
|
||||
getuservariable(INST_R1));
|
||||
MessageBoxW(g_hwndParent,buf,0,MB_OK);
|
||||
|
||||
swprintf (buf, 1024,
|
||||
L"autoclose =%d\r\n"
|
||||
"all_user_var =%d\r\n"
|
||||
"exec_error =%d\r\n"
|
||||
"abort =%d\r\n"
|
||||
"exec_reboot =%d\r\n"
|
||||
"reboot_called=%d\r\n"
|
||||
"api_version =%d\r\n"
|
||||
"silent =%d\r\n"
|
||||
"instdir_error=%d\r\n"
|
||||
"rtl =%d\r\n"
|
||||
@ -92,30 +163,34 @@ dummy (HWND hwndParent, int string_size, char *variables,
|
||||
extra->exec_flags->abort,
|
||||
extra->exec_flags->exec_reboot,
|
||||
extra->exec_flags->reboot_called,
|
||||
extra->exec_flags->plugin_api_version,
|
||||
extra->exec_flags->silent,
|
||||
extra->exec_flags->instdir_error,
|
||||
extra->exec_flags->rtl,
|
||||
extra->exec_flags->errlvl);
|
||||
MessageBox(g_hwndParent,buf,0,MB_OK);
|
||||
MessageBoxW(g_hwndParent,buf,0,MB_OK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void __declspec(dllexport)
|
||||
runonce (HWND hwndParent, int string_size, char *variables,
|
||||
runonce (HWND hwndParent, int string_size, LPTSTR variables,
|
||||
stack_t **stacktop, extra_parameters_t *extra)
|
||||
{
|
||||
const char *result;
|
||||
LPCWSTR result;
|
||||
|
||||
g_hwndParent = hwndParent;
|
||||
EXDLL_INIT();
|
||||
|
||||
CreateMutexA (NULL, 0, getuservariable(INST_R0));
|
||||
result = GetLastError ()? "1":"0";
|
||||
CreateMutexW (NULL, 0, getuservariable(INST_R0));
|
||||
result = GetLastError ()? L"1" : L"0";
|
||||
setuservariable (INST_R0, result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef ENABLE_SOUND_GADGET
|
||||
void __declspec(dllexport)
|
||||
playsound (HWND hwndParent, int string_size, char *variables,
|
||||
stack_t **stacktop, extra_parameters_t *extra)
|
||||
@ -139,8 +214,10 @@ stopsound (HWND hwndParent, int string_size, char *variables,
|
||||
EXDLL_INIT();
|
||||
PlaySound (NULL, NULL, 0);
|
||||
}
|
||||
#endif /*ENABLE_SOUND_GADGET*/
|
||||
|
||||
|
||||
#ifdef ENABLE_SPLASH_GADGET
|
||||
/* Windows procedure to control the splashimage. This one pauses the
|
||||
execution until the sleep time is over or the user closes this
|
||||
windows. */
|
||||
@ -268,10 +345,10 @@ showsplash (HWND hwndParent, int string_size, char *variables,
|
||||
}
|
||||
UnregisterClass (classname, g_hInstance);
|
||||
}
|
||||
#endif /*ENABLE_SPLASH_GADGET*/
|
||||
|
||||
|
||||
/* Service Management. */
|
||||
|
||||
#ifdef ENABLE_SERVICE_MANAGEMENT
|
||||
/* Use this to report unexpected errors. FIXME: This is really not
|
||||
very descriptive. */
|
||||
void
|
||||
@ -626,9 +703,8 @@ service_delete (HWND hwndParent, int string_size, char *variables,
|
||||
setuservariable (INST_R0, "0");
|
||||
return;
|
||||
}
|
||||
#endif /*ENABLE_SERVICE_MANAGEMENT*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* Extract config file parameters. FIXME: Not particularly robust.
|
||||
We expect some reasonable formatting. The parser below is very
|
||||
@ -644,6 +720,7 @@ void
|
||||
config_init (char **keys, char **values, int max)
|
||||
{
|
||||
/* First, parse the command line. */
|
||||
LPCWSTR wcmdline;
|
||||
char *cmdline;
|
||||
char *begin = NULL;
|
||||
char *end = NULL;
|
||||
@ -655,7 +732,15 @@ config_init (char **keys, char **values, int max)
|
||||
*keys = NULL;
|
||||
*values = NULL;
|
||||
|
||||
cmdline = getuservariable (INST_CMDLINE);
|
||||
cmdline = malloc (4096);
|
||||
if (!cmdline)
|
||||
return;
|
||||
|
||||
wcmdline = getuservariable (INST_CMDLINE);
|
||||
*cmdline = 0;
|
||||
WideCharToMultiByte(CP_ACP, 0, wcmdline, -1, cmdline, 4095, NULL, NULL);
|
||||
if (!*cmdline)
|
||||
return;
|
||||
|
||||
mark = (*cmdline == '"') ? (cmdline++, '"') : ' ';
|
||||
while (*cmdline && *cmdline != mark)
|
||||
@ -721,6 +806,7 @@ config_init (char **keys, char **values, int max)
|
||||
|
||||
conf = fopen (fname, "r");
|
||||
free (fname);
|
||||
free (cmdline);
|
||||
if (!conf)
|
||||
return;
|
||||
|
||||
@ -843,7 +929,7 @@ config_lookup (char *key)
|
||||
|
||||
|
||||
void __declspec(dllexport)
|
||||
config_fetch (HWND hwndParent, int string_size, char *variables,
|
||||
config_fetch (HWND hwndParent, int string_size, LPTSTR variables,
|
||||
stack_t **stacktop, extra_parameters_t *extra)
|
||||
{
|
||||
char key[256];
|
||||
@ -854,23 +940,23 @@ config_fetch (HWND hwndParent, int string_size, char *variables,
|
||||
EXDLL_INIT();
|
||||
|
||||
/* The expected stack layout: key. */
|
||||
if (popstring (key, sizeof (key)))
|
||||
if (PopStringNA (key, sizeof (key)))
|
||||
err = 1;
|
||||
if (err)
|
||||
{
|
||||
setuservariable (INST_R0, "");
|
||||
setuservariable (INST_R0, L"");
|
||||
return;
|
||||
}
|
||||
|
||||
value = config_lookup (key);
|
||||
|
||||
setuservariable (INST_R0, value == NULL ? "" : value);
|
||||
SetUserVariableA (INST_R0, value == NULL ? "" : value);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void __declspec(dllexport)
|
||||
config_fetch_bool (HWND hwndParent, int string_size, char *variables,
|
||||
config_fetch_bool (HWND hwndParent, int string_size, LPTSTR variables,
|
||||
stack_t **stacktop, extra_parameters_t *extra)
|
||||
{
|
||||
char key[256];
|
||||
@ -882,18 +968,18 @@ config_fetch_bool (HWND hwndParent, int string_size, char *variables,
|
||||
EXDLL_INIT();
|
||||
|
||||
/* The expected stack layout: key. */
|
||||
if (popstring (key, sizeof (key)))
|
||||
if (PopStringNA (key, sizeof (key)))
|
||||
err = 1;
|
||||
if (err)
|
||||
{
|
||||
setuservariable (INST_R0, "");
|
||||
setuservariable (INST_R0, L"");
|
||||
return;
|
||||
}
|
||||
|
||||
value = config_lookup (key);
|
||||
if (value == NULL || *value == '\0')
|
||||
{
|
||||
setuservariable (INST_R0, "");
|
||||
setuservariable (INST_R0, L"");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -903,7 +989,7 @@ config_fetch_bool (HWND hwndParent, int string_size, char *variables,
|
||||
|| atoi (value) != 0)
|
||||
result = 1;
|
||||
|
||||
setuservariable (INST_R0, result == 0 ? "0" : "1");
|
||||
SetUserVariableA (INST_R0, result == 0 ? "0" : "1");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -911,99 +997,107 @@ config_fetch_bool (HWND hwndParent, int string_size, char *variables,
|
||||
/* Return a string from the Win32 Registry or NULL in case of error.
|
||||
Caller must release the return value. A NULL for root is an alias
|
||||
for HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE in turn. */
|
||||
char *
|
||||
read_w32_registry_string (HKEY root, const char *dir, const char *name)
|
||||
static wchar_t *
|
||||
read_w32_registry_string (HKEY root, const wchar_t *dir, const wchar_t *name)
|
||||
{
|
||||
HKEY root_key;
|
||||
HKEY key_handle;
|
||||
DWORD n1, nbytes, type;
|
||||
char *result = NULL;
|
||||
wchar_t *result = NULL;
|
||||
|
||||
root_key = root;
|
||||
if (! root_key)
|
||||
if (!root_key)
|
||||
root_key = HKEY_CURRENT_USER;
|
||||
|
||||
if( RegOpenKeyEx( root_key, dir, 0, KEY_READ, &key_handle ) )
|
||||
if (RegOpenKeyExW (root_key, dir, 0, KEY_READ, &key_handle))
|
||||
{
|
||||
if (root)
|
||||
return NULL; /* no need for a RegClose, so return direct */
|
||||
/* It seems to be common practise to fall back to HKLM. */
|
||||
if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) )
|
||||
if (RegOpenKeyExW (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle))
|
||||
return NULL; /* still no need for a RegClose, so return direct */
|
||||
}
|
||||
|
||||
nbytes = 1;
|
||||
if( RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes ) ) {
|
||||
if (root)
|
||||
goto leave;
|
||||
/* Try to fallback to HKLM also vor a missing value. */
|
||||
RegCloseKey (key_handle);
|
||||
if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) )
|
||||
return NULL; /* Nope. */
|
||||
if (RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes))
|
||||
goto leave;
|
||||
if (RegQueryValueExW (key_handle, name, 0, NULL, NULL, &nbytes))
|
||||
{
|
||||
if (root)
|
||||
goto leave;
|
||||
/* Try to fallback to HKLM also for a missing value. */
|
||||
RegCloseKey (key_handle);
|
||||
if (RegOpenKeyExW (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle))
|
||||
return NULL; /* Nope. */
|
||||
if (RegQueryValueExW (key_handle, name, 0, NULL, NULL, &nbytes))
|
||||
goto leave;
|
||||
}
|
||||
|
||||
result = malloc( (n1=nbytes+1) );
|
||||
result = calloc ((n1=nbytes+1), sizeof *result);
|
||||
if (!result)
|
||||
goto leave;
|
||||
|
||||
if( !result )
|
||||
goto leave;
|
||||
if( RegQueryValueEx( key_handle, name, 0, &type, result, &n1 ) ) {
|
||||
free(result); result = NULL;
|
||||
goto leave;
|
||||
}
|
||||
result[nbytes] = 0; /* make sure it is really a string */
|
||||
if (RegQueryValueExW (key_handle, name, 0, &type,
|
||||
(unsigned char *)result, &n1))
|
||||
{
|
||||
free (result);
|
||||
result = NULL;
|
||||
goto leave;
|
||||
}
|
||||
result[nbytes] = 0; /* Make sure it is really a string */
|
||||
|
||||
leave:
|
||||
RegCloseKey( key_handle );
|
||||
RegCloseKey (key_handle);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/* Registry keys for PATH for HKLM and HKCU. */
|
||||
#define ENV_HK HKEY_LOCAL_MACHINE
|
||||
#define ENV_REG "SYSTEM\\CurrentControlSet\\Control\\" \
|
||||
"Session Manager\\Environment"
|
||||
/* The following setting can be used for a per-user setting. */
|
||||
#define ENV_REG L"SYSTEM\\CurrentControlSet\\Control\\" \
|
||||
"Session Manager\\Environment"
|
||||
#define ENV_HK_USER HKEY_CURRENT_USER
|
||||
#define ENV_REG_USER "Environment"
|
||||
#define ENV_REG_USER L"Environment"
|
||||
|
||||
/* Due to a bug in Windows7 (kb 2685893) we better put a lower limit
|
||||
than 8191 on the maximum length of the PATH variable. Note, that
|
||||
depending on the used toolchain we used to had a 259 byte limit in
|
||||
the past. */
|
||||
* than 8191 on the maximum length of the PATH variable. Note, that
|
||||
* depending on the used toolchain we used to had a 259 byte limit in
|
||||
* the past.
|
||||
* [wk 2023-04-24]: Can this be lifted now that we use the wchar_t API?
|
||||
*/
|
||||
#define PATH_LENGTH_LIMIT 2047
|
||||
|
||||
void __declspec(dllexport)
|
||||
path_add (HWND hwndParent, int string_size, char *variables,
|
||||
path_add (HWND hwndParent, int string_size, LPTSTR variables,
|
||||
stack_t **stacktop, extra_parameters_t *extra)
|
||||
{
|
||||
char dir[PATH_LENGTH_LIMIT];
|
||||
char is_user_install[2];
|
||||
char *path;
|
||||
char *path_new;
|
||||
int path_new_size;
|
||||
char *comp;
|
||||
const char delims[] = ";";
|
||||
wchar_t dir[PATH_LENGTH_LIMIT];
|
||||
wchar_t is_user_install[2];
|
||||
wchar_t *path;
|
||||
wchar_t *path_new;
|
||||
size_t path_new_size;
|
||||
wchar_t *comp;
|
||||
const wchar_t delims[] = L";";
|
||||
int is_user;
|
||||
HKEY key_handle = 0;
|
||||
HKEY root_key;
|
||||
const char *env_reg;
|
||||
const wchar_t *env_reg;
|
||||
/* wchar_t *tokctx; Context var for wcstok - not yet needed. */
|
||||
|
||||
g_hwndParent = hwndParent;
|
||||
EXDLL_INIT();
|
||||
|
||||
setuservariable (INST_R0, "0");
|
||||
|
||||
/* MessageBox (g_hwndParent, "XXX 1", 0, MB_OK); */
|
||||
setuservariable (INST_R0, L"0"); /* Default return value. */
|
||||
|
||||
/* The expected stack layout: path component. */
|
||||
if (popstring (dir, sizeof (dir)))
|
||||
if (popstringn (dir, COUNTOF (dir)))
|
||||
return;
|
||||
dir[COUNTOF(dir)-1] = 0;
|
||||
|
||||
/* The expected stack layout: HKEY component. */
|
||||
if (popstring (is_user_install, sizeof (is_user_install)))
|
||||
if (popstringn (is_user_install, COUNTOF (is_user_install)))
|
||||
return;
|
||||
is_user_install[COUNTOF(is_user_install)-1] = 0;
|
||||
|
||||
if (!strcmp(is_user_install, "1"))
|
||||
if (!wcscmp (is_user_install, L"1"))
|
||||
{
|
||||
root_key = ENV_HK_USER;
|
||||
env_reg = ENV_REG_USER;
|
||||
@ -1014,107 +1108,100 @@ path_add (HWND hwndParent, int string_size, char *variables,
|
||||
env_reg = ENV_REG;
|
||||
}
|
||||
|
||||
path = read_w32_registry_string (root_key, env_reg, "Path");
|
||||
|
||||
if (! path)
|
||||
path = read_w32_registry_string (root_key, env_reg, L"Path");
|
||||
if (!path)
|
||||
{
|
||||
path = strdup ("");
|
||||
path = wcsdup (L"");
|
||||
}
|
||||
|
||||
/* MessageBox (g_hwndParent, "XXX 3", 0, MB_OK); */
|
||||
|
||||
/* Old path plus semicolon plus dir plus terminating nul. */
|
||||
path_new_size = strlen (path) + 1 + strlen (dir) + 1;
|
||||
path_new_size = wcslen (path) + 1 + wcslen (dir) + 1;
|
||||
if (path_new_size > PATH_LENGTH_LIMIT)
|
||||
{
|
||||
MessageBox (g_hwndParent, "PATH env variable too big", 0, MB_OK);
|
||||
MessageBox (g_hwndParent, L"PATH env variable too big", 0, MB_OK);
|
||||
free (path);
|
||||
return;
|
||||
}
|
||||
|
||||
/* MessageBox (g_hwndParent, "XXX 4", 0, MB_OK); */
|
||||
|
||||
path_new = malloc (path_new_size);
|
||||
path_new = calloc (path_new_size, sizeof *path_new);
|
||||
if (!path_new)
|
||||
{
|
||||
free (path);
|
||||
return;
|
||||
}
|
||||
|
||||
/* MessageBox (g_hwndParent, "XXX 5", 0, MB_OK); */
|
||||
|
||||
strcpy (path_new, path);
|
||||
strcat (path_new, ";");
|
||||
strcat (path_new, dir);
|
||||
|
||||
/* MessageBox (g_hwndParent, "XXX 6", 0, MB_OK); */
|
||||
/* MessageBox (g_hwndParent, dir, 0, MB_OK); */
|
||||
/* MessageBox (g_hwndParent, "XXX 7", 0, MB_OK); */
|
||||
wcscpy (path_new, path);
|
||||
wcscat (path_new, L";");
|
||||
wcscat (path_new, dir);
|
||||
|
||||
/* Check if the directory already exists in the path. */
|
||||
comp = strtok (path, delims);
|
||||
comp = wcstok (path, delims/*, &tokctx*/);
|
||||
do
|
||||
{
|
||||
/* MessageBox (g_hwndParent, comp, 0, MB_OK); */
|
||||
/* MessageBox (g_hwndParent, comp, 0, MB_OK); */
|
||||
if (!comp)
|
||||
break;
|
||||
|
||||
if (!strcmp (comp, dir))
|
||||
if (!wcscmp (comp, dir))
|
||||
{
|
||||
free (path);
|
||||
free (path_new);
|
||||
return;
|
||||
}
|
||||
comp = strtok (NULL, delims);
|
||||
comp = wcstok (NULL, delims/*, &tokctx*/);
|
||||
}
|
||||
while (comp);
|
||||
free (path);
|
||||
|
||||
/* Update the path key. */
|
||||
RegCreateKey (root_key, env_reg, &key_handle);
|
||||
RegSetValueEx (key_handle, "Path", 0, REG_EXPAND_SZ,
|
||||
path_new, path_new_size);
|
||||
RegCreateKeyW (root_key, env_reg, &key_handle);
|
||||
RegSetValueEx (key_handle, L"Path", 0, REG_EXPAND_SZ,
|
||||
(unsigned char*)path_new,
|
||||
wcslen (path_new) * sizeof *path_new);
|
||||
RegCloseKey (key_handle);
|
||||
SetEnvironmentVariable("PATH", path_new);
|
||||
SetEnvironmentVariableW(L"PATH", path_new);
|
||||
free (path_new);
|
||||
|
||||
/* MessageBox (g_hwndParent, "XXX 9", 0, MB_OK); */
|
||||
|
||||
setuservariable (INST_R0, "1");
|
||||
setuservariable (INST_R0, L"1"); /* success. */
|
||||
}
|
||||
|
||||
|
||||
void __declspec(dllexport)
|
||||
path_remove (HWND hwndParent, int string_size, char *variables,
|
||||
path_remove (HWND hwndParent, int string_size, LPTSTR variables,
|
||||
stack_t **stacktop, extra_parameters_t *extra)
|
||||
{
|
||||
char dir[PATH_LENGTH_LIMIT];
|
||||
char is_user_install[2];
|
||||
char *path;
|
||||
char *path_new;
|
||||
int path_new_size;
|
||||
char *comp;
|
||||
const char delims[] = ";";
|
||||
wchar_t dir[PATH_LENGTH_LIMIT];
|
||||
wchar_t is_user_install[2];
|
||||
wchar_t *path;
|
||||
wchar_t *path_new;
|
||||
size_t path_new_size;
|
||||
wchar_t *comp;
|
||||
const wchar_t delims[] = L";";
|
||||
HKEY key_handle = 0;
|
||||
int changed = 0;
|
||||
int count = 0;
|
||||
HKEY root_key;
|
||||
const char *env_reg;
|
||||
const wchar_t *env_reg;
|
||||
/* wchar_t *tokctx; Context var for wcstok - not yet needed. */
|
||||
|
||||
g_hwndParent = hwndParent;
|
||||
EXDLL_INIT();
|
||||
|
||||
setuservariable (INST_R0, "0");
|
||||
setuservariable (INST_R0, L"0");
|
||||
|
||||
/* The expected stack layout: path component. */
|
||||
if (popstring (dir, sizeof (dir)))
|
||||
if (popstringn (dir, COUNTOF (dir)))
|
||||
return;
|
||||
dir[COUNTOF(dir)-1] = 0;
|
||||
|
||||
/* The expected stack layout: HKEY component. */
|
||||
if (popstring (is_user_install, sizeof (is_user_install)))
|
||||
if (popstringn (is_user_install, COUNTOF (is_user_install)))
|
||||
return;
|
||||
is_user_install[COUNTOF(is_user_install)-1] = 0;
|
||||
|
||||
if (!strcmp(is_user_install, "1"))
|
||||
if (!wcscmp (is_user_install, L"1"))
|
||||
{
|
||||
root_key = ENV_HK_USER;
|
||||
env_reg = ENV_REG_USER;
|
||||
@ -1125,51 +1212,112 @@ path_remove (HWND hwndParent, int string_size, char *variables,
|
||||
env_reg = ENV_REG;
|
||||
}
|
||||
|
||||
path = read_w32_registry_string (root_key, env_reg, "Path");
|
||||
|
||||
path = read_w32_registry_string (root_key, env_reg, L"Path");
|
||||
if (!path)
|
||||
return;
|
||||
|
||||
/* Old path plus semicolon plus dir plus terminating nul. */
|
||||
path_new_size = strlen (path) + 1;
|
||||
path_new = malloc (path_new_size);
|
||||
path_new_size = wcslen (path) + 1;
|
||||
path_new = calloc (path_new_size, sizeof *path_new);
|
||||
if (!path_new)
|
||||
{
|
||||
free (path);
|
||||
return;
|
||||
}
|
||||
path_new[0] = '\0';
|
||||
|
||||
/* Compose the new path. */
|
||||
comp = strtok (path, delims);
|
||||
comp = wcstok (path, delims/*, &tokctx*/);
|
||||
do
|
||||
{
|
||||
if (strcmp (comp, dir))
|
||||
if (wcscmp (comp, dir))
|
||||
{
|
||||
if (count != 0)
|
||||
strcat (path_new, ";");
|
||||
strcat (path_new, comp);
|
||||
if (count)
|
||||
wcscat (path_new, L";");
|
||||
wcscat (path_new, comp);
|
||||
count++;
|
||||
}
|
||||
else
|
||||
changed = 1;
|
||||
|
||||
comp = strtok (NULL, delims);
|
||||
}
|
||||
while (comp);
|
||||
while ((comp = wcstok (NULL, delims/*, &tokctx*/)));
|
||||
free (path);
|
||||
|
||||
if (! changed)
|
||||
if (!changed)
|
||||
{
|
||||
free (path_new);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Set a key for our CLSID. */
|
||||
RegCreateKey (root_key, env_reg, &key_handle);
|
||||
RegSetValueEx (key_handle, "Path", 0, REG_EXPAND_SZ,
|
||||
path_new, path_new_size);
|
||||
RegCreateKeyW (root_key, env_reg, &key_handle);
|
||||
RegSetValueEx (key_handle, L"Path", 0, REG_EXPAND_SZ,
|
||||
(unsigned char*)path_new,
|
||||
wcslen (path_new) * sizeof *path_new);
|
||||
RegCloseKey (key_handle);
|
||||
free (path_new);
|
||||
|
||||
setuservariable (INST_R0, "1");
|
||||
setuservariable (INST_R0, L"1"); /* success */
|
||||
}
|
||||
|
||||
|
||||
/** @brief Kill processes with the name name.
|
||||
*
|
||||
* This function tries to kill a process using ExitProcess.
|
||||
*
|
||||
* If it does not work it does not work. No return values.
|
||||
* The intention is to make an effort to kill something during
|
||||
* installation / uninstallation.
|
||||
*
|
||||
* The function signature is explained by NSIS.
|
||||
*/
|
||||
void __declspec(dllexport) __cdecl KillProc(HWND hwndParent,
|
||||
int string_size,
|
||||
char *variables,
|
||||
stack_t **stacktop)
|
||||
{
|
||||
HANDLE h;
|
||||
PROCESSENTRY32 pe32;
|
||||
|
||||
if (!stacktop || !*stacktop || !(*stacktop)->text)
|
||||
{
|
||||
ERRORPRINTF ("Invalid call to KillProc.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
h = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
|
||||
if (h == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ERRORPRINTF ("Failed to create Toolhelp snapshot");
|
||||
return;
|
||||
}
|
||||
pe32.dwSize = sizeof (PROCESSENTRY32);
|
||||
|
||||
if (!Process32First (h, &pe32))
|
||||
{
|
||||
ERRORPRINTF ("Failed to get first process");
|
||||
CloseHandle (h);
|
||||
return;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
if (!wcscmp ((*stacktop)->text, pe32.szExeFile))
|
||||
{
|
||||
HANDLE hProc = OpenProcess (PROCESS_ALL_ACCESS, FALSE,
|
||||
pe32.th32ProcessID);
|
||||
if (!hProc)
|
||||
{
|
||||
ERRORPRINTF ("Failed to open process handle.");
|
||||
continue;
|
||||
}
|
||||
if (!TerminateProcess (hProc, 1))
|
||||
{
|
||||
ERRORPRINTF ("Failed to terminate process.");
|
||||
}
|
||||
CloseHandle (hProc);
|
||||
}
|
||||
}
|
||||
while (Process32Next (h, &pe32));
|
||||
CloseHandle (h);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# inst.nsi - Installer for GnuPG on Windows. -*- coding: latin-1; -*-
|
||||
# inst.nsi - Installer for GnuPG on Windows.
|
||||
# Copyright (C) 2005, 2014, 2019-2021 g10 Code GmbH
|
||||
# 2017 Intevation GmbH
|
||||
#
|
||||
@ -31,6 +31,9 @@
|
||||
#
|
||||
# WITH_GUI - Include the GPA GUI
|
||||
|
||||
# This one must be done before addplugindir.
|
||||
Unicode true
|
||||
|
||||
!cd "${INST_DIR}"
|
||||
!addincludedir "${W32_SRCDIR}"
|
||||
!addplugindir "${BUILD_DIR}"
|
||||
@ -64,7 +67,7 @@
|
||||
File version: ${PROD_VERSION}\r\n\
|
||||
Release date: ${BUILD_ISODATE}"
|
||||
!define ABOUT_GERMAN \
|
||||
"GnuPG is die häufigst verwendete Software zur Mail- und Datenverschlüsselung.\
|
||||
"GnuPG is die häufigst verwendete Software zur Mail- und Datenverschlüsselung.\
|
||||
\r\n\r\n$_CLICK \
|
||||
\r\n\r\n\r\n\r\n\r\nDies ist GnuPG Version ${VERSION}.\r\n\
|
||||
Dateiversion: ${PROD_VERSION}\r\n\
|
||||
@ -256,14 +259,14 @@ LangString T_GPLShort ${LANG_ENGLISH} \
|
||||
You may distribute it as long as you give the recipients the same \
|
||||
rights you have received."
|
||||
LangString T_GPLShort ${LANG_GERMAN} \
|
||||
"In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \
|
||||
einzusetzen. Sie können die Software weitergeben, sofern Sie dem \
|
||||
Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben."
|
||||
"In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \
|
||||
einzusetzen. Sie können die Software weitergeben, sofern Sie dem \
|
||||
Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben."
|
||||
|
||||
LangString T_RunKeyManager ${LANG_ENGLISH} \
|
||||
"Run the key manager"
|
||||
LangString T_RunKeyManager ${LANG_GERMAN} \
|
||||
"Die Schlüsselverwaltung aufrufen"
|
||||
"Die Schlüsselverwaltung aufrufen"
|
||||
|
||||
LangString T_MoreInfo ${LANG_ENGLISH} \
|
||||
"Click here to see how to help the GnuPG Project"
|
||||
@ -280,8 +283,8 @@ LangString T_ShowReadme ${LANG_GERMAN} \
|
||||
LangString T_NoKeyManager ${LANG_ENGLISH} \
|
||||
"No key manager has been installed, thus we can't run one now."
|
||||
LangString T_NoKeyManager ${LANG_GERMAN} \
|
||||
"Es wurde keine Schlüsselverwaltung installiert. \
|
||||
Deswegen kann sie jetzt auch nicht ausgeführt werden."
|
||||
"Es wurde keine Schlüsselverwaltung installiert. \
|
||||
Deswegen kann sie jetzt auch nicht ausgeführt werden."
|
||||
|
||||
# Functions
|
||||
|
||||
@ -289,7 +292,7 @@ LangString T_NoKeyManager ${LANG_GERMAN} \
|
||||
LangString T_AlreadyRunning ${LANG_ENGLISH} \
|
||||
"An instance of this installer is already running."
|
||||
LangString T_AlreadyRunning ${LANG_GERMAN} \
|
||||
"Ein Exemplar dieses Installers läuft bereits."
|
||||
"Ein Exemplar dieses Installers läuft bereits."
|
||||
|
||||
Function G4wRunOnce
|
||||
Push $R0
|
||||
@ -416,23 +419,23 @@ LangString T_InstallOptLinks ${LANG_GERMAN} "Startlinks"
|
||||
LangString T_InstOptLabelA ${LANG_ENGLISH} \
|
||||
"Please select where GnuPG shall install links:"
|
||||
LangString T_InstOptLabelA ${LANG_GERMAN} \
|
||||
"Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:"
|
||||
"Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:"
|
||||
|
||||
LangString T_InstOptLabelB ${LANG_ENGLISH} \
|
||||
"(Only programs will be linked into the quick launch bar.)"
|
||||
LangString T_InstOptLabelB ${LANG_GERMAN} \
|
||||
"(In die Schnellstartleiste werden nur Verknüpfungen für \
|
||||
"(In die Schnellstartleiste werden nur Verknüpfungen für \
|
||||
Programme angelegt.) "
|
||||
|
||||
LangString T_InstOptFieldA ${LANG_ENGLISH} \
|
||||
"Start Menu"
|
||||
LangString T_InstOptFieldA ${LANG_GERMAN} \
|
||||
"Startmenü"
|
||||
"Startmenü"
|
||||
|
||||
LangString T_InstOptFieldB ${LANG_ENGLISH} \
|
||||
"Desktop"
|
||||
LangString T_InstOptFieldB ${LANG_GERMAN} \
|
||||
"Arbeitsfläche"
|
||||
"Arbeitsfläche"
|
||||
|
||||
LangString T_InstOptFieldC ${LANG_ENGLISH} \
|
||||
"Quick Launch Bar"
|
||||
@ -447,9 +450,9 @@ LangString T_FoundExistingVersion ${LANG_ENGLISH} \
|
||||
Do you want to overwrite it with version ${VERSION}?"
|
||||
LangString T_FoundExistingVersion ${LANG_GERMAN} \
|
||||
"Version $R1 ist hier bereits installiert. $\r$\n\
|
||||
Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\
|
||||
Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\
|
||||
$\r$\n\
|
||||
(Sie können in jedem Fall mit JA antworten, falls es sich um \
|
||||
(Sie können in jedem Fall mit JA antworten, falls es sich um \
|
||||
eine neuere oder dieselbe Version handelt.)"
|
||||
LangString T_FoundExistingVersionB ${LANG_ENGLISH} \
|
||||
"A version of GnuPG has already been installed on the system. \
|
||||
@ -460,7 +463,7 @@ LangString T_FoundExistingVersionB ${LANG_GERMAN} \
|
||||
"Eine Version von GnuPG ist hier bereits installiert. \
|
||||
$\r$\n\
|
||||
$\r$\n\
|
||||
Möchten die die Installation von GnuPG fortführen?"
|
||||
Möchten die die Installation von GnuPG fortführen?"
|
||||
|
||||
|
||||
|
||||
@ -476,16 +479,16 @@ LangString T_AdminWanted ${LANG_GERMAN} \
|
||||
Administratorrechten zu installieren. \
|
||||
$\r$\n\
|
||||
$\r$\n\
|
||||
Möchten die die Installation von GnuPG ohne Administratorrechte fortführen?"
|
||||
Möchten die die Installation von GnuPG ohne Administratorrechte fortführen?"
|
||||
|
||||
# From Function PrintCloseOtherApps
|
||||
LangString T_CloseOtherApps ${LANG_ENGLISH} \
|
||||
"Please make sure that other applications are not running. \
|
||||
GnuPG will try to install anyway but a reboot may be required."
|
||||
LangString T_CloseOtherApps ${LANG_GERMAN} \
|
||||
"Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen \
|
||||
"Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen \
|
||||
sind. GnuPG wird auf jeden Fall versuchen, eine Installation \
|
||||
durchzuführen; es ist dann aber u.U. notwendig, das System neu zu starten."
|
||||
durchzuführen; es ist dann aber u.U. notwendig, das System neu zu starten."
|
||||
|
||||
|
||||
# TrimNewlines - taken from the NSIS reference
|
||||
@ -736,7 +739,7 @@ LangString DESC_SEC_gnupg ${LANG_ENGLISH} \
|
||||
LangString DESC_SEC_gnupg ${LANG_GERMAN} \
|
||||
"Der GnuPG Core ist, wie der Name schon sagt, der Kernbestandteil \
|
||||
dieser Software. Der GnuPG Core stellt die eigentliche \
|
||||
Verschlüsselung sowie die Verwaltung der Schlüssel bereit."
|
||||
Verschlüsselung sowie die Verwaltung der Schlüssel bereit."
|
||||
|
||||
LangString DESC_Menu_gnupg_manual ${LANG_ENGLISH} \
|
||||
"Show the manual for the GnuPG Core"
|
||||
@ -989,7 +992,7 @@ SectionEnd
|
||||
LangString DESC_SEC_gpa ${LANG_ENGLISH} \
|
||||
"The GnuPG Assistant is the graphical interface of GnuPG"
|
||||
LangString DESC_SEC_gpa ${LANG_GERMAN} \
|
||||
"Der GnuPG Assistent ist die graphische Oberfläche von GnuPG."
|
||||
"Der GnuPG Assistent ist die graphische Oberfläche von GnuPG."
|
||||
|
||||
LangString DESC_Menu_gpa ${LANG_ENGLISH} \
|
||||
"Run the GnuGP Assistant."
|
||||
@ -1462,8 +1465,7 @@ Function .onInit
|
||||
;;!define MUI_LANGDLL_ALWAYSSHOW
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
# Temporay disabled until we have fixed the DLL issue (wk 2023-04-05)
|
||||
# Call G4wRunOnce
|
||||
Call G4wRunOnce
|
||||
|
||||
SetOutPath $TEMP
|
||||
#!ifdef SOURCES
|
||||
|
@ -154,6 +154,42 @@ w32_shgetfolderpath (HWND a, int b, HANDLE c, DWORD d)
|
||||
}
|
||||
#endif /*HAVE_W32_SYSTEM*/
|
||||
|
||||
/* Given the directory name DNAME try to create a common.conf and
|
||||
* enable the keyboxd. This should only be called for the standard
|
||||
* home directory and only if that directory has just been created. */
|
||||
static void
|
||||
create_common_conf (const char *dname)
|
||||
{
|
||||
#ifdef BUILD_WITH_KEYBOXD
|
||||
estream_t fp;
|
||||
char *fcommon;
|
||||
|
||||
fcommon = make_filename (dname, "common.conf", NULL);
|
||||
fp = es_fopen (fcommon, "wx,mode=-rw-r");
|
||||
if (!fp)
|
||||
{
|
||||
log_info (_("error creating '%s': %s\n"), fcommon,
|
||||
gpg_strerror (gpg_error_from_syserror ()));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (es_fputs ("use-keyboxd\n", fp) == EOF)
|
||||
{
|
||||
log_info (_("error writing to '%s': %s\n"), fcommon,
|
||||
gpg_strerror (es_ferror (fp)
|
||||
? gpg_error_from_syserror ()
|
||||
: gpg_error (GPG_ERR_EOF)));
|
||||
es_fclose (fp);
|
||||
}
|
||||
else if (es_fclose (fp))
|
||||
{
|
||||
log_info (_("error closing '%s': %s\n"), fcommon,
|
||||
gpg_strerror (gpg_error_from_syserror ()));
|
||||
}
|
||||
}
|
||||
#endif /* BUILD_WITH_KEYBOXD */
|
||||
}
|
||||
|
||||
|
||||
/* Check whether DIR is the default homedir. */
|
||||
static int
|
||||
@ -259,7 +295,9 @@ standard_homedir (void)
|
||||
|
||||
/* Try to create the directory if it does not yet exists. */
|
||||
if (gnupg_access (dir, F_OK))
|
||||
gnupg_mkdir (dir, "-rwx");
|
||||
if (!gnupg_mkdir (dir, "-rwx"))
|
||||
create_common_conf (dir);
|
||||
|
||||
}
|
||||
else
|
||||
dir = GNUPG_DEFAULT_HOMEDIR;
|
||||
@ -791,39 +829,9 @@ gnupg_maybe_make_homedir (const char *fname, int quiet)
|
||||
fname, strerror(errno) );
|
||||
else
|
||||
{
|
||||
estream_t fp;
|
||||
char *fcommon;
|
||||
|
||||
if (!quiet )
|
||||
log_info ( _("directory '%s' created\n"), fname );
|
||||
|
||||
#ifdef BUILD_WITH_KEYBOXD
|
||||
/* A new default homedir has been created. Now create a
|
||||
* common.conf. */
|
||||
fcommon = make_filename (fname, "common.conf", NULL);
|
||||
fp = es_fopen (fcommon, "wx,mode=-rw-r");
|
||||
if (!fp)
|
||||
{
|
||||
log_info (_("error creating '%s': %s\n"), fcommon,
|
||||
gpg_strerror (gpg_error_from_syserror ()));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (es_fputs ("use-keyboxd\n", fp) == EOF)
|
||||
{
|
||||
log_info (_("error writing to '%s': %s\n"), fcommon,
|
||||
gpg_strerror (es_ferror (fp)
|
||||
? gpg_error_from_syserror ()
|
||||
: gpg_error (GPG_ERR_EOF)));
|
||||
es_fclose (fp);
|
||||
}
|
||||
else if (es_fclose (fp))
|
||||
{
|
||||
log_info (_("error closing '%s': %s\n"), fcommon,
|
||||
gpg_strerror (gpg_error_from_syserror ()));
|
||||
}
|
||||
}
|
||||
#endif /* BUILD_WITH_KEYBOXD */
|
||||
create_common_conf (fname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1657,6 +1665,9 @@ gnupg_module_name (int which)
|
||||
case GNUPG_MODULE_NAME_CARD:
|
||||
X(bindir, "tools", "gpg-card");
|
||||
|
||||
case GNUPG_MODULE_NAME_GPGTAR:
|
||||
X(bindir, "tools", "gpgtar");
|
||||
|
||||
default:
|
||||
BUG ();
|
||||
}
|
||||
|
@ -614,7 +614,7 @@ get_ecc_q_from_canon_sexp (const unsigned char *keydata, size_t keydatalen,
|
||||
size_t buflen, toklen;
|
||||
int depth, last_depth1, last_depth2;
|
||||
const unsigned char *ecc_q = NULL;
|
||||
size_t ecc_q_len;
|
||||
size_t ecc_q_len = 0;
|
||||
|
||||
*r_q = NULL;
|
||||
*r_qlen = 0;
|
||||
|
@ -298,6 +298,7 @@ char *_gnupg_socketdir_internal (int skip_checks, unsigned *r_info);
|
||||
#define GNUPG_MODULE_NAME_KEYBOXD 13
|
||||
#define GNUPG_MODULE_NAME_TPM2DAEMON 14
|
||||
#define GNUPG_MODULE_NAME_CARD 15
|
||||
#define GNUPG_MODULE_NAME_GPGTAR 16
|
||||
const char *gnupg_module_name (int which);
|
||||
void gnupg_module_name_flush_some (void);
|
||||
void gnupg_set_builddir (const char *newdir);
|
||||
|
@ -29,7 +29,7 @@ min_automake_version="1.16.3"
|
||||
m4_define([mym4_package],[gnupg])
|
||||
m4_define([mym4_major], [2])
|
||||
m4_define([mym4_minor], [4])
|
||||
m4_define([mym4_micro], [1])
|
||||
m4_define([mym4_micro], [2])
|
||||
|
||||
# To start a new development series, i.e a new major or minor number
|
||||
# you need to mark an arbitrary commit before the first beta release
|
||||
|
@ -70,9 +70,9 @@ gpg_error_t crl_cache_reload_crl (ctrl_t ctrl, ksba_cert_t cert);
|
||||
|
||||
|
||||
/*-- fakecrl.c --*/
|
||||
crl_cache_result_t fakecrl_isvalid (ctrl_t ctrl,
|
||||
const char *issuer_hash,
|
||||
const char *cert_id);
|
||||
gpg_error_t fakecrl_isvalid (ctrl_t ctrl,
|
||||
const char *issuer_hash,
|
||||
const char *cert_id);
|
||||
|
||||
|
||||
|
||||
|
@ -2555,7 +2555,7 @@ http_get_header_names (http_t hd)
|
||||
* Parse the response from a server.
|
||||
* Returns: Errorcode and sets some files in the handle
|
||||
*/
|
||||
static gpg_err_code_t
|
||||
static gpg_error_t
|
||||
parse_response (http_t hd)
|
||||
{
|
||||
char *line, *p, *p2;
|
||||
@ -2579,11 +2579,11 @@ parse_response (http_t hd)
|
||||
len = es_read_line (hd->fp_read, &hd->buffer, &hd->buffer_size, &maxlen);
|
||||
line = hd->buffer;
|
||||
if (!line)
|
||||
return gpg_err_code_from_syserror (); /* Out of core. */
|
||||
return gpg_error_from_syserror (); /* Out of core. */
|
||||
if (!maxlen)
|
||||
return GPG_ERR_TRUNCATED; /* Line has been truncated. */
|
||||
return gpg_error (GPG_ERR_TRUNCATED); /* Line has been truncated. */
|
||||
if (!len)
|
||||
return GPG_ERR_EOF;
|
||||
return gpg_error (GPG_ERR_EOF);
|
||||
|
||||
if (opt_debug || (hd->flags & HTTP_FLAG_LOG_RESP))
|
||||
log_debug_string (line, "http.c:response:\n");
|
||||
@ -2623,10 +2623,10 @@ parse_response (http_t hd)
|
||||
len = es_read_line (hd->fp_read, &hd->buffer, &hd->buffer_size, &maxlen);
|
||||
line = hd->buffer;
|
||||
if (!line)
|
||||
return gpg_err_code_from_syserror (); /* Out of core. */
|
||||
return gpg_error_from_syserror (); /* Out of core. */
|
||||
/* Note, that we can silently ignore truncated lines. */
|
||||
if (!len)
|
||||
return GPG_ERR_EOF;
|
||||
return gpg_error (GPG_ERR_EOF);
|
||||
/* Trim line endings of empty lines. */
|
||||
if ((*line == '\r' && line[1] == '\n') || *line == '\n')
|
||||
*line = 0;
|
||||
@ -2637,7 +2637,7 @@ parse_response (http_t hd)
|
||||
{
|
||||
gpg_err_code_t ec = store_header (hd, line);
|
||||
if (ec)
|
||||
return ec;
|
||||
return gpg_error (ec);
|
||||
}
|
||||
}
|
||||
while (len && *line);
|
||||
|
@ -675,6 +675,39 @@ and allows the use of gpg-agent with the ssh implementation
|
||||
@command{putty}. This is similar to the regular ssh-agent support but
|
||||
makes use of Windows message queue as required by @command{putty}.
|
||||
|
||||
|
||||
The order in which keys are presented to ssh are:
|
||||
@table @code
|
||||
|
||||
@item Negative Use-for-ssh values
|
||||
If a key file has the attribute "Use-for-ssh" and its value is
|
||||
negative, these keys are presented first to ssh. The negative
|
||||
values are capped at -999 with -999 beeing lower ranked than -1.
|
||||
These values can be used to prefer on-disk keys over keys taken
|
||||
from active cards.
|
||||
|
||||
@item Active cards
|
||||
Active cards (inserted into a card reader or plugged in tokens)
|
||||
are always tried; they are ordered by their serial numbers.
|
||||
|
||||
@item Keys listed in the sshcontrol file
|
||||
Non-disabled keys from the sshcontrol file are presented in the
|
||||
order they appear in this file. Note that the sshcontrol file
|
||||
is deprecated.
|
||||
|
||||
@item Positive Use-for-ssh values
|
||||
If a key file has the attribute "Use-for-ssh" and its value is
|
||||
"yes", "true", or any positive number the key is presented in
|
||||
the order of their values. "yes" and "true" have a value of 1;
|
||||
other values are capped at 99999.
|
||||
|
||||
@end table
|
||||
|
||||
Editing the "Use-for-ssh" values can be done with an editor or using
|
||||
@command{gpg-connect-agent} and "KEYATTR" (Remember to append a colon
|
||||
to the key; i.e. use "Use-for-ssh:").
|
||||
|
||||
|
||||
@anchor{option --ssh-fingerprint-digest}
|
||||
@item --ssh-fingerprint-digest
|
||||
@opindex ssh-fingerprint-digest
|
||||
@ -827,6 +860,9 @@ This file is used when support for the secure shell agent protocol has
|
||||
been enabled (@pxref{option --enable-ssh-support}). Only keys present in
|
||||
this file are used in the SSH protocol. You should backup this file.
|
||||
|
||||
This file is deprecated in favor of the "Use-for-ssh" attribute in the
|
||||
key files.
|
||||
|
||||
The @command{ssh-add} tool may be used to add new entries to this file;
|
||||
you may also add them manually. Comment lines, indicated by a leading
|
||||
hash mark, as well as empty lines are ignored. An entry starts with
|
||||
@ -872,7 +908,6 @@ users start up with a working configuration. For existing users the
|
||||
a small helper script is provided to create these files (@pxref{addgnupghome}).
|
||||
|
||||
|
||||
|
||||
@c
|
||||
@c Agent Signals
|
||||
@c
|
||||
|
11
doc/gpg.texi
11
doc/gpg.texi
@ -399,10 +399,13 @@ this command may change with new releases.
|
||||
@opindex edit-card
|
||||
@itemx --card-edit
|
||||
@opindex card-edit
|
||||
Present a menu to work with a smartcard. The subcommand "help" provides
|
||||
an overview on available commands. For a detailed description, please
|
||||
see the Card HOWTO at
|
||||
https://gnupg.org/documentation/howtos.html#GnuPG-cardHOWTO .
|
||||
Present a menu to work with a smartcard. The subcommand "help"
|
||||
provides an overview on available commands. For a detailed
|
||||
description, please see the Card HOWTO at
|
||||
https://gnupg.org/documentation/howtos.html#GnuPG-cardHOWTO . Please
|
||||
note that the command "openpgp" can be used to switch to the OpenPGP
|
||||
application of cards which by default are presenting another
|
||||
application (e.g. PIV).
|
||||
|
||||
@item --card-status
|
||||
@opindex card-status
|
||||
|
@ -1096,7 +1096,8 @@ agent_keytotpm (ctrl_t ctrl, const char *hexgrip)
|
||||
*/
|
||||
int
|
||||
agent_keytocard (const char *hexgrip, int keyno, int force,
|
||||
const char *serialno, const char *timestamp)
|
||||
const char *serialno, const char *timestamp,
|
||||
const char *ecdh_param_str)
|
||||
{
|
||||
int rc;
|
||||
char line[ASSUAN_LINELENGTH];
|
||||
@ -1104,8 +1105,9 @@ agent_keytocard (const char *hexgrip, int keyno, int force,
|
||||
|
||||
memset (&parm, 0, sizeof parm);
|
||||
|
||||
snprintf (line, DIM(line), "KEYTOCARD %s%s %s OPENPGP.%d %s",
|
||||
force?"--force ": "", hexgrip, serialno, keyno, timestamp);
|
||||
snprintf (line, DIM(line), "KEYTOCARD %s%s %s OPENPGP.%d %s%s%s",
|
||||
force?"--force ": "", hexgrip, serialno, keyno, timestamp,
|
||||
ecdh_param_str? " ":"", ecdh_param_str? ecdh_param_str:"");
|
||||
|
||||
rc = start_agent (NULL, 1);
|
||||
if (rc)
|
||||
@ -1700,6 +1702,30 @@ agent_scd_cardlist (strlist_t *result)
|
||||
}
|
||||
|
||||
|
||||
/* Make the app APPNAME the one on the card. This is sometimes
|
||||
* required to make sure no other process has switched a card to
|
||||
* another application. The only useful APPNAME is "openpgp". */
|
||||
gpg_error_t
|
||||
agent_scd_switchapp (const char *appname)
|
||||
{
|
||||
int err;
|
||||
char line[ASSUAN_LINELENGTH];
|
||||
|
||||
if (appname && !*appname)
|
||||
appname = NULL;
|
||||
|
||||
err = start_agent (NULL, (1 | FLAG_FOR_CARD_SUPPRESS_ERRORS));
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
snprintf (line, DIM(line), "SCD SWITCHAPP --%s%s",
|
||||
appname? " ":"", appname? appname:"");
|
||||
return assuan_transact (agent_ctx, line,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
struct card_keyinfo_parm_s {
|
||||
int error;
|
||||
|
@ -108,6 +108,9 @@ gpg_error_t agent_scd_keypairinfo (ctrl_t ctrl, const char *keyref,
|
||||
/* Return list of cards. */
|
||||
int agent_scd_cardlist (strlist_t *result);
|
||||
|
||||
/* Switch/assure a certain application. */
|
||||
gpg_error_t agent_scd_switchapp (const char *appname);
|
||||
|
||||
/* Free a keypair info list. */
|
||||
void free_keypair_info (keypair_info_t l);
|
||||
|
||||
@ -132,7 +135,8 @@ int agent_keytotpm (ctrl_t ctrl, const char *hexgrip);
|
||||
|
||||
/* Send the KEYTOCARD command. */
|
||||
int agent_keytocard (const char *hexgrip, int keyno, int force,
|
||||
const char *serialno, const char *timestamp);
|
||||
const char *serialno, const char *timestamp,
|
||||
const char *ecdh_param_str);
|
||||
|
||||
/* Send a SETATTR command to the SCdaemon. */
|
||||
gpg_error_t agent_scd_setattr (const char *name,
|
||||
|
@ -705,6 +705,14 @@ current_card_status (ctrl_t ctrl, estream_t fp,
|
||||
}
|
||||
else
|
||||
tty_fprintf (fp, "[none]\n");
|
||||
|
||||
if (!info.manufacturer_name)
|
||||
{
|
||||
tty_fprintf (fp, "\n");
|
||||
tty_fprintf (fp, _("Please try command \"%s\""
|
||||
" if the listing does not look correct\n"),
|
||||
"openpgp");
|
||||
}
|
||||
}
|
||||
|
||||
release_kbnode (keyblock);
|
||||
@ -1289,6 +1297,7 @@ get_info_for_key_operation (struct agent_card_info_s *info)
|
||||
int rc;
|
||||
|
||||
memset (info, 0, sizeof *info);
|
||||
agent_scd_switchapp ("openpgp");
|
||||
rc = agent_scd_getattr ("SERIALNO", info);
|
||||
if (rc || !info->serialno || strncmp (info->serialno, "D27600012401", 12)
|
||||
|| strlen (info->serialno) != 32 )
|
||||
@ -1796,8 +1805,9 @@ card_store_subkey (KBNODE node, int use, strlist_t *processed_keys)
|
||||
int keyno;
|
||||
PKT_public_key *pk;
|
||||
gpg_error_t err;
|
||||
char *hexgrip;
|
||||
char *hexgrip = NULL;
|
||||
int rc;
|
||||
char *ecdh_param_str = NULL;
|
||||
gnupg_isotime_t timebuf;
|
||||
|
||||
log_assert (node->pkt->pkttype == PKT_PUBLIC_KEY
|
||||
@ -1871,8 +1881,19 @@ card_store_subkey (KBNODE node, int use, strlist_t *processed_keys)
|
||||
goto leave;
|
||||
|
||||
epoch2isotime (timebuf, (time_t)pk->timestamp);
|
||||
rc = agent_keytocard (hexgrip, keyno, rc, info.serialno, timebuf);
|
||||
|
||||
if (pk->pubkey_algo == PUBKEY_ALGO_ECDH)
|
||||
{
|
||||
ecdh_param_str = ecdh_param_str_from_pk (pk);
|
||||
if (!ecdh_param_str)
|
||||
{
|
||||
err = gpg_error_from_syserror ();
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
|
||||
rc = agent_keytocard (hexgrip, keyno, rc, info.serialno,
|
||||
timebuf, ecdh_param_str);
|
||||
if (rc)
|
||||
log_error (_("KEYTOCARD failed: %s\n"), gpg_strerror (rc));
|
||||
else
|
||||
@ -1881,9 +1902,10 @@ card_store_subkey (KBNODE node, int use, strlist_t *processed_keys)
|
||||
if (processed_keys)
|
||||
add_to_strlist (processed_keys, hexgrip);
|
||||
}
|
||||
xfree (hexgrip);
|
||||
|
||||
leave:
|
||||
xfree (hexgrip);
|
||||
xfree (ecdh_param_str);
|
||||
agent_release_card_info (&info);
|
||||
return okay;
|
||||
}
|
||||
@ -2242,7 +2264,7 @@ enum cmdids
|
||||
cmdNAME, cmdURL, cmdFETCH, cmdLOGIN, cmdLANG, cmdSEX, cmdCAFPR,
|
||||
cmdFORCESIG, cmdGENERATE, cmdPASSWD, cmdPRIVATEDO, cmdWRITECERT,
|
||||
cmdREADCERT, cmdUNBLOCK, cmdFACTORYRESET, cmdKDFSETUP,
|
||||
cmdKEYATTR, cmdUIF,
|
||||
cmdKEYATTR, cmdUIF, cmdOPENPGP,
|
||||
cmdINVCMD
|
||||
};
|
||||
|
||||
@ -2280,6 +2302,7 @@ static struct
|
||||
N_("setup KDF for PIN authentication (on/single/off)")},
|
||||
{ "key-attr", cmdKEYATTR, 1, N_("change the key attribute")},
|
||||
{ "uif", cmdUIF, 1, N_("change the User Interaction Flag")},
|
||||
{ "openpgp", cmdOPENPGP, 0, N_("switch to the OpenPGP app")},
|
||||
/* Note, that we do not announce these command yet. */
|
||||
{ "privatedo", cmdPRIVATEDO, 0, NULL },
|
||||
{ "readcert", cmdREADCERT, 0, NULL },
|
||||
@ -2579,6 +2602,11 @@ card_edit (ctrl_t ctrl, strlist_t commands)
|
||||
uif (arg_number, arg_rest);
|
||||
break;
|
||||
|
||||
case cmdOPENPGP:
|
||||
agent_scd_switchapp ("openpgp");
|
||||
redisplay = 1;
|
||||
break;
|
||||
|
||||
case cmdQUIT:
|
||||
goto leave;
|
||||
|
||||
|
12
g10/import.c
12
g10/import.c
@ -2955,9 +2955,19 @@ do_transfer (ctrl_t ctrl, kbnode_t keyblock, PKT_public_key *pk,
|
||||
{
|
||||
gpg_error_t err;
|
||||
struct import_stats_s subkey_stats = {0};
|
||||
int force = 0;
|
||||
int already_exist = agent_probe_secret_key (ctrl, pk);
|
||||
|
||||
if (already_exist == 2 || already_exist == 4)
|
||||
{
|
||||
if (!opt.quiet)
|
||||
log_info (_("key %s: card reference is overridden by key material\n"),
|
||||
keystr_from_pk (pk));
|
||||
force = 1;
|
||||
}
|
||||
|
||||
err = transfer_secret_keys (ctrl, &subkey_stats, keyblock,
|
||||
batch, 0, only_marked);
|
||||
batch, force, only_marked);
|
||||
if (gpg_err_code (err) == GPG_ERR_NOT_PROCESSED)
|
||||
{
|
||||
/* TRANSLATORS: For a smartcard, each private key on host has a
|
||||
|
@ -576,6 +576,7 @@ char *format_hexfingerprint (const char *fingerprint,
|
||||
char *buffer, size_t buflen);
|
||||
gpg_error_t keygrip_from_pk (PKT_public_key *pk, unsigned char *array);
|
||||
gpg_error_t hexkeygrip_from_pk (PKT_public_key *pk, char **r_grip);
|
||||
char *ecdh_param_str_from_pk (PKT_public_key *pk);
|
||||
|
||||
|
||||
/*-- kbnode.c --*/
|
||||
|
12
g10/keygen.c
12
g10/keygen.c
@ -5327,12 +5327,20 @@ card_store_key_with_backup (ctrl_t ctrl, PKT_public_key *sub_psk,
|
||||
char *cache_nonce = NULL;
|
||||
void *kek = NULL;
|
||||
size_t keklen;
|
||||
char *ecdh_param_str = NULL;
|
||||
|
||||
sk = copy_public_key (NULL, sub_psk);
|
||||
if (!sk)
|
||||
return gpg_error_from_syserror ();
|
||||
|
||||
epoch2isotime (timestamp, (time_t)sk->timestamp);
|
||||
if (sk->pubkey_algo == PUBKEY_ALGO_ECDH)
|
||||
{
|
||||
ecdh_param_str = ecdh_param_str_from_pk (sk);
|
||||
if (!ecdh_param_str)
|
||||
return gpg_error_from_syserror ();
|
||||
}
|
||||
|
||||
err = hexkeygrip_from_pk (sk, &hexgrip);
|
||||
if (err)
|
||||
goto leave;
|
||||
@ -5345,7 +5353,8 @@ card_store_key_with_backup (ctrl_t ctrl, PKT_public_key *sub_psk,
|
||||
goto leave;
|
||||
}
|
||||
|
||||
rc = agent_keytocard (hexgrip, 2, 1, info.serialno, timestamp);
|
||||
rc = agent_keytocard (hexgrip, 2, 1, info.serialno,
|
||||
timestamp, ecdh_param_str);
|
||||
xfree (info.serialno);
|
||||
if (rc)
|
||||
{
|
||||
@ -5388,6 +5397,7 @@ card_store_key_with_backup (ctrl_t ctrl, PKT_public_key *sub_psk,
|
||||
agent_scd_learn (NULL, 1);
|
||||
|
||||
leave:
|
||||
xfree (ecdh_param_str);
|
||||
xfree (cache_nonce);
|
||||
gcry_cipher_close (cipherhd);
|
||||
xfree (kek);
|
||||
|
22
g10/keyid.c
22
g10/keyid.c
@ -1141,3 +1141,25 @@ hexkeygrip_from_pk (PKT_public_key *pk, char **r_grip)
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
/* Return a hexfied malloced string of the ECDH parameters for an ECDH
|
||||
* key from the public key PK. Returns NULL on error. */
|
||||
char *
|
||||
ecdh_param_str_from_pk (PKT_public_key *pk)
|
||||
{
|
||||
const unsigned char *s;
|
||||
unsigned int n;
|
||||
|
||||
if (!pk
|
||||
|| pk->pubkey_algo != PUBKEY_ALGO_ECDH
|
||||
|| !gcry_mpi_get_flag (pk->pkey[2], GCRYMPI_FLAG_OPAQUE)
|
||||
|| !(s = gcry_mpi_get_opaque (pk->pkey[2], &n)) || !n)
|
||||
{
|
||||
gpg_err_set_errno (EINVAL);
|
||||
return NULL; /* Invalid parameter */
|
||||
}
|
||||
|
||||
n = (n+7)/8;
|
||||
return bin2hex (s, n, NULL);
|
||||
}
|
||||
|
68
po/ca.po
68
po/ca.po
@ -142,6 +142,10 @@ msgstr "la contrasenya és errònia"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "la contrasenya és errònia"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1299,6 +1303,15 @@ msgstr "s'està escrivint la clau secreta a «%s»\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "error en crear «%s»: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "error en la lectura de «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armadura: %s\n"
|
||||
@ -1523,6 +1536,10 @@ msgstr "no forçat"
|
||||
msgid "forced"
|
||||
msgstr "forçat"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1803,6 +1820,9 @@ msgstr "canvia la confiança"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "canvia la confiança"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -2057,11 +2077,6 @@ msgstr "clau %08lX: clau d'estil PGP 2.x - es descarta\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "AVÍS: no s'ha exportat res\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "error en crear «%s»: %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[No s'ha trobat l'id d'usuari]"
|
||||
@ -2526,6 +2541,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "No hi ha cap signatura corresponent en l'anell secret\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "mostra en quin anell de claus està una clau llistada"
|
||||
@ -3164,6 +3183,10 @@ msgstr "es descarta: la clau secreta ja és present\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "error mentre s'enviava a «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3728,6 +3751,9 @@ msgstr "esborra una clau secundària"
|
||||
msgid "add a revocation key"
|
||||
msgstr "afegeix una clau de revocació"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr ""
|
||||
@ -3807,6 +3833,10 @@ msgstr "La clau secreta està disponible.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "La clau secreta està disponible.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Cal la clau secreta per a fer açò.\n"
|
||||
|
||||
@ -3929,6 +3959,10 @@ msgstr "Voleu desar els canvis? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Voleu eixir sense desar? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "no s'ha pogut eliminar el bloc de claus: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "La clau no ha canviat, per tant no cal actualització.\n"
|
||||
@ -4183,6 +4217,18 @@ msgid ""
|
||||
msgstr ""
|
||||
"Esteu segur que voleu nominar aquesta clau com a revocador designat? (s/N): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(a no ser que especifiqueu la clau per la empremta digital)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "l'ID d'usuari «%s» ja està revocat\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -6041,10 +6087,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "no podeu usar %s mentre esteu en mode %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "AVÍS: conflicte de signatures digest en el missatge\n"
|
||||
@ -8247,10 +8289,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "no es pot crear el directori «%s»: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "error en la lectura de «%s»: %s\n"
|
||||
|
||||
# No em passe! ;) ivb
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
@ -10155,10 +10193,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "canvia entre el llistat de claus secretes i públiques"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "la contrasenya és errònia"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr ""
|
||||
|
77
po/cs.po
77
po/cs.po
@ -153,6 +153,11 @@ msgstr "Heslo:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "neshodují se – zkuste to znovu"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Heslo"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1217,6 +1222,14 @@ msgstr "čekám na zámek %s…\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s je příliš stará (potřeba %s, přítomna %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "chyba při vytváření „%s“: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "chyba při uzavírání „%s“: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "ASCII kódování: %s\n"
|
||||
@ -1420,6 +1433,10 @@ msgstr "není vyžadováno"
|
||||
msgid "forced"
|
||||
msgstr "vyžadováno"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Chyba: V současné verzi je povolenou pouze plain ASCII.\n"
|
||||
|
||||
@ -1683,6 +1700,9 @@ msgstr "změní atribut klíče"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "změní příznak interakce uživatele (UIF)"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/karta> "
|
||||
|
||||
@ -1916,10 +1936,6 @@ msgstr "klíč %s: PGP 2.x klíč – přeskočeno\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "POZOR: nebylo nic vyexportováno\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "chyba při vytváření „%s“: %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[ID uživatele nenalezeno]"
|
||||
|
||||
@ -2330,6 +2346,11 @@ msgstr "ukazovat odvolané a prošlé ID uživatelů při výpisu klíčů"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "ukazovat odvolané a prošlé podklíče při výpisu klíčů"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "ukazovat data expirace během výpisu podpisů"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "ukazovat název souboru s klíči při výpisu klíčů"
|
||||
|
||||
@ -2945,6 +2966,10 @@ msgstr "klíč %s: tajný klíč již existuje\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "klíč %s: chyba při odesílání dat agentovi: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3460,6 +3485,11 @@ msgstr "smazat vybrané podklíče"
|
||||
msgid "add a revocation key"
|
||||
msgstr "přidat revokační klíč"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Dešifrování dat uspělo"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "smazat podpisy z vybraných uživatelských ID"
|
||||
|
||||
@ -3521,6 +3551,12 @@ msgstr "Tajný klíč je dostupný.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Tajné podklíče jsou dostupné.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr "Poznámka: Smazána bude pouze tajná část zobrazeného podklíče.\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Pro provedení této operace je potřeba tajný klíč.\n"
|
||||
|
||||
@ -3629,6 +3665,12 @@ msgstr "Uložit změny? (a/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Ukončit bez uložení? (a/N) "
|
||||
|
||||
# The first argument is a "key" or "subkey"
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "smazání tajného %s se nezdařilo: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Klíč nebyl změněn, takže není potřeba jej aktualizovat.\n"
|
||||
@ -3861,6 +3903,19 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "Jste si jistí, že tento klíč chcete pověřit odvoláním? (a/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(dokud neurčíte klíč jeho otiskem)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Podklíč %s je již odvolán.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5622,10 +5677,6 @@ msgstr "%s klíč %s vyžaduje hash o délce %zu nebo více bitů (hash je %s)\
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "klíč %s se nesmí používat v režimu %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr "přesto se pokračuje v ověřování kvůli volbě %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "POZOR: konflikt hashe podpisu ve zprávě\n"
|
||||
@ -7780,10 +7831,6 @@ msgstr "prosím, zjistěte příčinu a soubor ručně smažte\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "vytvoření dočasného kešového dir souboru „%s“ selhalo: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "chyba při uzavírání „%s“: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "nelze vypočítat haš „%s“: %s\n"
|
||||
@ -8944,6 +8991,9 @@ msgstr "Příkazy pro správu Yubikey"
|
||||
msgid "manage the command history"
|
||||
msgstr "spravuje historii příkazů"
|
||||
|
||||
#~ msgid "continuing verification anyway due to option %s\n"
|
||||
#~ msgstr "přesto se pokračuje v ověřování kvůli volbě %s\n"
|
||||
|
||||
#~ msgid "selected AEAD algorithm is invalid\n"
|
||||
#~ msgstr "vybraný algoritmus AEAD je neplatný\n"
|
||||
|
||||
@ -9633,9 +9683,6 @@ msgstr "spravuje historii příkazů"
|
||||
#~ msgid "Key Acquirer"
|
||||
#~ msgstr "Stahovač klíčů"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "Heslo"
|
||||
|
||||
#~ msgid "name of socket too long\n"
|
||||
#~ msgstr "název socketu je příliš dlouhý\n"
|
||||
|
||||
|
75
po/da.po
75
po/da.po
@ -151,6 +151,11 @@ msgstr "Adgangsfrase:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "matcher ikke - prøv igen"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Adgangsfrase"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1325,6 +1330,16 @@ msgstr "venter på lås %s ...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s er for gammel (kræver %s, har %s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "fejl ved oprettelse af »%s«: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error closing %s: %s\n"
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "fejl ved lukning af %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "panser: %s\n"
|
||||
@ -1545,6 +1560,10 @@ msgstr "ikke tvunget"
|
||||
msgid "forced"
|
||||
msgstr "tvunget"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Fejl: Kun ren ASCII er tilladt i øjeblikket.\n"
|
||||
|
||||
@ -1841,6 +1860,9 @@ msgstr "ændr ejertroværdigheden"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "ændr ejertroværdigheden"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/card> "
|
||||
|
||||
@ -2090,11 +2112,6 @@ msgstr "nøgle %s: nøgle i PGP 2.x-stil - udeladt\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "ADVARSEL: intet blev eksporteret\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "fejl ved oprettelse af »%s«: %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Bruger-id blev ikke fundet]"
|
||||
|
||||
@ -2564,6 +2581,11 @@ msgstr "vis tilbagekaldte og udløbne bruger-id'er i nøglevisninger"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "vis tilbagekaldte og udløbne undernøgler i nøglevisninger"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "vis udløbsdatoer under underskriftvisninger"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "vis nøgleringsnavnet i nøglevisninger"
|
||||
|
||||
@ -3210,6 +3232,10 @@ msgstr "udelod: hemmelig nøgle er allerede til stede\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "fejl under afsendelse af %s-kommando: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3750,6 +3776,11 @@ msgstr "slet valgte undernøgler"
|
||||
msgid "add a revocation key"
|
||||
msgstr "tilføj en tilbagekaldsnøgle"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Datadekryptering lykkedes"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "slet underskrifter fra de valgte bruger-id'er"
|
||||
|
||||
@ -3814,6 +3845,10 @@ msgstr "Hemmelig nøgle er tilgængelig.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Hemmelig nøgle er tilgængelig.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Har brug for den hemmelige nøgle for dette.\n"
|
||||
|
||||
@ -3937,6 +3972,11 @@ msgstr "Gem ændringer? (j/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Afslut uden at gemme? (j/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting certificate \"%s\" failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "sletning af certifikat »%s« mislykkedes: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Nøgle ikke ændret så ingen opdatering krævet.\n"
|
||||
@ -4192,6 +4232,19 @@ msgstr ""
|
||||
"Er du sikker på, at du ønsker at udpege denne nøgle som en dedikeret "
|
||||
"tilbagekalder? (j/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(med mindre du angiver nøglen med fingeraftryk)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Undernøgle %s er allerede tilbagekaldt.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
@ -6059,10 +6112,6 @@ msgstr "DSA-nøgle %s kræver en %u bit eller større hash\n"
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "du kan ikke bruge %s i tilstanden %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "ADVARSEL: konflikt for underskriftssammendrag i besked\n"
|
||||
@ -8323,11 +8372,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "kunne ikke oprette midlertidig fil »%s«: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error closing %s: %s\n"
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "fejl ved lukning af %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "can't access `%s': %s\n"
|
||||
msgid "can't hash '%s': %s\n"
|
||||
@ -10484,9 +10528,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "skift mellem hemmelig og offentlig nøglevisning"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "Adgangsfrase"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr "brug midlertidige filer til at sende data til nøgleserverhjælpere"
|
||||
|
||||
|
73
po/de.po
73
po/de.po
@ -7,11 +7,11 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnupg-2.3.0\n"
|
||||
"Project-Id-Version: gnupg-2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
|
||||
"PO-Revision-Date: 2023-03-21 09:31+0100\n"
|
||||
"Last-Translator: Werner Koch <wk@gnupg.org>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -127,6 +127,9 @@ msgstr "Passwort:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "Keine Übereinstimmung - bitte nochmal versuchen."
|
||||
|
||||
msgid "Passphrases match."
|
||||
msgstr "Passwort stimmt."
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1210,6 +1213,14 @@ msgstr "Warten auf die Freigabe der Dateisperre `%s' ...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "Die Bibliothek %s ist nicht aktuell (benötige %s, habe %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "Fehler beim Erstellen von `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "Fehler beim Schließen von `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "ASCII-Hülle: %s\n"
|
||||
@ -1415,6 +1426,11 @@ msgstr "nicht zwingend"
|
||||
msgid "forced"
|
||||
msgstr "zwingend"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
"Falls das Listing nicht korrekt erscheint, geben Sie bitte \"%s\" ein\n"
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Fehler: Nur reines ASCII ist derzeit erlaubt.\n"
|
||||
|
||||
@ -1682,6 +1698,9 @@ msgstr "Das Schlüsselattribut ändern"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "Das User Interaction Flag (UIF) ändern"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr "Auf die OpenPGP Anwendung umschalten"
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/card> "
|
||||
|
||||
@ -1919,10 +1938,6 @@ msgstr "Schlüssel %s: PGP 2.x-artiger Schlüssel - übersprungen\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "WARNUNG: Nichts exportiert\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "Fehler beim Erstellen von `%s': %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[User-ID nicht gefunden]"
|
||||
|
||||
@ -2336,6 +2351,9 @@ msgstr "Zeige widerrufene und verfallene User-ID in den Schlüssellisten"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "Zeige widerrufene und verfallene Unterschlüssel in den Schlüssellisten"
|
||||
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Auch Signaturen mit ungültigen Algorithmen anlisten"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "Anzeigen des Schlüsselbundes, in dem ein Schlüssel drin ist"
|
||||
|
||||
@ -2957,6 +2975,11 @@ msgstr "Schlüssel %s: geheimer Schlüssel bereits vorhanden\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "Schlüssel %s: Fehler beim Senden zum gpg-agent: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
"Schlüssel %s: Der \"stub\" wurde durch einen realen Schlüssel ersetzt\n"
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3482,6 +3505,9 @@ msgstr "ausgewählte Unterschlüssel entfernen"
|
||||
msgid "add a revocation key"
|
||||
msgstr "Einen Widerrufschlüssel hinzufügen"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Einen ADSK hinzufügen"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "Beglaubigungen der ausgewählten User-IDs entfernen"
|
||||
|
||||
@ -3547,6 +3573,12 @@ msgstr "Geheimer Schlüssel ist vorhanden.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Geheimer Unterschlüssel ist vorhanden.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
"Hinweis: Die lokale Kopie des geheimen Schlüssels wird nur nach \"save\" "
|
||||
"gelöscht.\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Hierzu wird der geheime Schlüssel benötigt.\n"
|
||||
|
||||
@ -3660,6 +3692,10 @@ msgstr "Änderungen speichern? (j/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Beenden ohne zu speichern? (j/N) "
|
||||
|
||||
#, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "Fehler beim Löschen der Kopie des geheimen Schlüssels: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Schlüssel ist nicht geändert worden, also ist kein Speichern nötig.\n"
|
||||
@ -3900,6 +3936,17 @@ msgstr ""
|
||||
"Möchten Sie diesen Schlüssel wirklich als vorgesehenen Widerrufer festlegen? "
|
||||
"(j/N): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr "Geben Sie den Fingerprint des ADSK an: "
|
||||
|
||||
#, c-format
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "Haben Sie den Fingerprint des Unterschlüssels angegeben?\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Den Schlüssel \"%s\" gibt es bereits in diesem Schlüsselblock\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5703,10 +5750,6 @@ msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr ""
|
||||
"Schlüssel \"%s\" darf zum Signieren im %s Modus nicht verwendet werden.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr "Die Prüfung wird aufgrund der Option %s weiter durchgeführt\n"
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "WARNUNG: Widersprechende Hashverfahren in der signierten Botschaft\n"
|
||||
@ -7891,10 +7934,6 @@ msgstr ""
|
||||
"Die temporäre Zwischenspeicherverzeichnisdatei `%s' konnte nicht erzeugt "
|
||||
"werden: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "Fehler beim Schließen von `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "Hashwert von `%s' kann nicht gebildet werden: %s\n"
|
||||
@ -9068,6 +9107,9 @@ msgstr "Verwaltungskommandos für Yubikeys"
|
||||
msgid "manage the command history"
|
||||
msgstr "Verwaltung der Kommandohistorie"
|
||||
|
||||
#~ msgid "continuing verification anyway due to option %s\n"
|
||||
#~ msgstr "Die Prüfung wird aufgrund der Option %s weiter durchgeführt\n"
|
||||
|
||||
#~ msgid "selected AEAD algorithm is invalid\n"
|
||||
#~ msgstr "Das ausgewählte AEAD-Verfahren ist ungültig\n"
|
||||
|
||||
@ -10030,9 +10072,6 @@ msgstr "Verwaltung der Kommandohistorie"
|
||||
#~ msgstr ""
|
||||
#~ "Umschalten zwischen dem Auflisten geheimer und öffentlicher Schlüssel"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "Passwort"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr ""
|
||||
#~ "verwende temporäre Dateien, um Daten an die Schlüsselserverhilfsprogramme "
|
||||
|
68
po/el.po
68
po/el.po
@ -123,6 +123,10 @@ msgstr "κακή φράση κλειδί"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "κακή φράση κλειδί"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1238,6 +1242,15 @@ msgstr "εγγραφή του μυστικού κλειδιού στο `%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "σφάλμα κατά τη δημιουργία του `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "σφάλμα κατά την ανάγνωση του `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "θωράκιση: %s\n"
|
||||
@ -1453,6 +1466,10 @@ msgstr "μη επεξεργασμένο"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1732,6 +1749,9 @@ msgstr "αλλαγή της εμπιστοσύνης ιδιοκτήτη"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "αλλαγή της εμπιστοσύνης ιδιοκτήτη"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1988,11 +2008,6 @@ msgstr "κλειδί %08lX: κλειδί τύπου PGP 2.x - παραλείφ
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: δεν έγινε καμμία εξαγωγή\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "σφάλμα κατά τη δημιουργία του `%s': %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[User id δεν βρέθηκε]"
|
||||
@ -2445,6 +2460,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Δεν βρέθηκε αντίστοιχη υπογραφή στη μυστική κλειδοθήκη\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "απεικόνιση της κλειδοθήκης στην οποία αναφέρετε το κλειδί"
|
||||
@ -3081,6 +3100,10 @@ msgstr "παραλείφθηκε: μυστικό κλειδί ήδη παρών\
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "σφάλμα στη αποστολή προς το `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3632,6 +3655,9 @@ msgstr "διαγραφή ενός δευτερεύοντος κλειδιού"
|
||||
msgid "add a revocation key"
|
||||
msgstr "προσθήκη ενός κλειδιού ανάκλησης"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr ""
|
||||
@ -3709,6 +3735,10 @@ msgstr "Το μυστικό κλειδί είναι διαθέσιμο.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Το μυστικό κλειδί είναι διαθέσιμο.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Απαιτείται το μυστικό κλειδί για να γίνει αυτό.\n"
|
||||
|
||||
@ -3831,6 +3861,10 @@ msgstr "Αποθήκευση των αλλαγών; "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Τερματισμός χωρίς αποθήκευση; "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "διαγραφή block κλειδιών απέτυχε: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Το κλειδί δεν άλλαξε οπότε δεν χρειάζεται ενημέρωση.\n"
|
||||
@ -4083,6 +4117,18 @@ msgstr ""
|
||||
"Είστε σίγουροι ότι θέλετε να ορίσετε ένα κλειδί σαν διορισμένο ανακλητή; (y/"
|
||||
"N): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(εκτός εάν προσδιορίσετε ένα κλειδί από αποτύπωμα)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "το user ID \"%s\" έχει ήδη ανακληθεί\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5921,10 +5967,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "απαγορεύετε η χρήση του %s στην κατάσταση %s.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: σύγκρουση υπογραφής περίληψης στο μήνυμα\n"
|
||||
@ -8085,10 +8127,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "αδυναμία δημιουργίας καταλόγου `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "σφάλμα κατά την ανάγνωση του `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "αδυναμία κλεισίματος του `%s': %s\n"
|
||||
@ -9961,10 +9999,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "αλλαγή μεταξύ της απεικόνισης μυστικού και δημόσιου κλειδιού"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "κακή φράση κλειδί"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr ""
|
||||
|
67
po/eo.po
67
po/eo.po
@ -123,6 +123,10 @@ msgstr "malbona pasfrazo"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "malbona pasfrazo"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1242,6 +1246,15 @@ msgstr "skribas sekretan ŝlosilon al '%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "eraro dum kreado de '%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "eraro dum legado de '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "kiraso: %s\n"
|
||||
@ -1452,6 +1465,10 @@ msgstr "ne traktita"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1731,6 +1748,9 @@ msgstr "ŝanĝi la posedantofidon"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "ŝanĝi la posedantofidon"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1972,11 +1992,6 @@ msgstr "ŝlosilo %08lX: PGP-2.x-stila ŝlosilo - ignorita\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "AVERTO: nenio estis eksportita\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "eraro dum kreado de '%s': %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Uzantidentigilo ne trovita]"
|
||||
@ -2426,6 +2441,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Mankas responda subskribo en sekreta ŝlosilaro\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "montri, en kiu ŝlosilaro estas listigita ŝlosilo"
|
||||
@ -3055,6 +3074,10 @@ msgstr "ignorita: sekreta ŝlosilo jam ĉeestas\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "eraro dum sendo al '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3612,6 +3635,9 @@ msgstr "forviŝi flankan ŝlosilon"
|
||||
msgid "add a revocation key"
|
||||
msgstr "aldoni flankan ŝlosilon"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "Ĉu vere aktualigi la preferojn por la elektitaj uzantidentigiloj? "
|
||||
@ -3686,6 +3712,10 @@ msgstr "Sekreta ŝlosilo estas havebla.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Sekreta ŝlosilo estas havebla.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Bezonas la sekretan ŝlosilon por fari tion.\n"
|
||||
|
||||
@ -3808,6 +3838,10 @@ msgstr "Ĉu skribi ŝanĝojn? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Ĉu fini sen skribi ŝanĝojn? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "forviŝo de ŝlosilbloko malsukcesis: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Ŝlosilo ne ŝanĝita, do aktualigo ne necesas.\n"
|
||||
@ -4050,6 +4084,17 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "Ĉu vi estas certa, ke vi ankoraŭ volas subskribi ĝin?\n"
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "malsukcesis doni komencajn valorojn al fido-datenaro: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Uzantidentigilo \"%s\" estas revokita.\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5853,10 +5898,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "Tiu komando ne eblas en la reĝimo %s.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr ""
|
||||
@ -7997,10 +8038,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "%s: ne povas krei dosierujon: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "eraro dum legado de '%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "ne povas fermi '%s': %s\n"
|
||||
@ -9838,10 +9875,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "de sekreta aŭ publika listo iri al la alia"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "malbona pasfrazo"
|
||||
|
||||
#~ msgid "gpg-agent is not available in this session\n"
|
||||
#~ msgstr "gpg-agent ne estas disponata en ĉi tiu sesio\n"
|
||||
|
||||
|
89
po/es.po
89
po/es.po
@ -136,6 +136,20 @@ msgstr "Frase contraseña:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "no coincide - reinténtelo"
|
||||
|
||||
# ¿Por qué no frase de paso?
|
||||
# Porque todo el mundo sabe lo que es una contraseña
|
||||
# y una "frase de paso" no. Soy consciente de que se
|
||||
# traduce igual password y passphrase pero el contexto
|
||||
# permite saber de lo que se está hablando.
|
||||
# No sé, no sé.
|
||||
# ¿Por qué los ingleses entonces sí que saben lo que es un "passphrase"?
|
||||
# ¿Es que son más listos? :-)
|
||||
#
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Frase contraseña"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1248,6 +1262,14 @@ msgstr "esperando al bloqueo %s...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s es demasiado antiguo (necesita %s, tiene %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "error al crear '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "error al cerrar '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armadura: %s\n"
|
||||
@ -1459,6 +1481,10 @@ msgstr "no forzado"
|
||||
msgid "forced"
|
||||
msgstr "forzado"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Error: sólo se permite ASCII sin formato actualmente.\n"
|
||||
|
||||
@ -1732,6 +1758,9 @@ msgstr "cambia valores de la clave"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "cambia valores de confianza"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/tarjeta> "
|
||||
|
||||
@ -1967,10 +1996,6 @@ msgstr "clave %s: clave estilo PGP 2.x - omitida\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "ATENCIÓN: no se ha exportado nada\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "error al crear '%s': %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[ID de usuario no encontrado]"
|
||||
|
||||
@ -2392,6 +2417,11 @@ msgstr "mostar IDs de usuario revocados y caducados al listar firmas"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "mostrar subclaves revocadas y expiradas al listar claves"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "mostrar fechas de caducidad al listar firmas"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "mostrar nombre de los anillos de claves al listar claves"
|
||||
|
||||
@ -3015,6 +3045,10 @@ msgstr "clave %s: clave secreta ya existe\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "clave %s: error enviando al agente: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3527,6 +3561,11 @@ msgstr "borrar clave secundaria"
|
||||
msgid "add a revocation key"
|
||||
msgstr "añadir una clave de revocación"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Datos descifrados correctamente"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "borrar firmas de los ID seleccionados"
|
||||
|
||||
@ -3587,6 +3626,10 @@ msgstr "Clave secreta disponible.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Subclaves secretas disponibles.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Se necesita la clave secreta para hacer esto.\n"
|
||||
|
||||
@ -3698,6 +3741,11 @@ msgstr "¿Grabar cambios? (s/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "¿Salir sin grabar? (s/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "ha fallado el borrado del secreto %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Clave sin cambios, no se necesita actualización.\n"
|
||||
@ -3934,6 +3982,19 @@ msgid ""
|
||||
msgstr ""
|
||||
"¿Está seguro de querer elegir esta clave como revocador designado? (s/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(excepto si especifica la clave dando su huella digital)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "La subclave %s ya ha sido revocada.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5743,10 +5804,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "no puede usar la clave %s para firmar en modo %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "AVISO: conflicto con el resumen de la firma del mensaje\n"
|
||||
@ -7897,10 +7954,6 @@ msgstr "chequea el problema y borra este archivo manualmente\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "no se puede crear el fichero de cache '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "error al cerrar '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "no se puede hacer el hash de '%s': %s\n"
|
||||
@ -9937,18 +9990,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "cambiar entre lista de claves secretas y públicas"
|
||||
|
||||
# ¿Por qué no frase de paso?
|
||||
# Porque todo el mundo sabe lo que es una contraseña
|
||||
# y una "frase de paso" no. Soy consciente de que se
|
||||
# traduce igual password y passphrase pero el contexto
|
||||
# permite saber de lo que se está hablando.
|
||||
# No sé, no sé.
|
||||
# ¿Por qué los ingleses entonces sí que saben lo que es un "passphrase"?
|
||||
# ¿Es que son más listos? :-)
|
||||
#
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "Frase contraseña"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr ""
|
||||
#~ "usar ficheros temporales para pasar datos a los ayudantes delservidor de "
|
||||
|
68
po/et.po
68
po/et.po
@ -120,6 +120,10 @@ msgstr "halb parool"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "halb parool"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1235,6 +1239,15 @@ msgstr "kirjutan salajase võtme faili `%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "viga `%s' loomisel: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "viga `%s' lugemisel: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "pakend: %s\n"
|
||||
@ -1449,6 +1462,10 @@ msgstr "ei töödeldud"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1728,6 +1745,9 @@ msgstr "muuda omaniku usaldust"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "muuda omaniku usaldust"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1978,11 +1998,6 @@ msgstr "võti %08lX: PGP 2.x stiilis võti - jätsin vahele\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "HOIATUS: midagi ei eksporditud\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "viga `%s' loomisel: %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Kasutaja id puudub]"
|
||||
@ -2433,6 +2448,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Vastavat allkirja salajaste võtmete hoidlas pole\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "näita millisesse võtmehoidlasse näidatud võti kuulub"
|
||||
@ -3066,6 +3085,10 @@ msgstr "jätsin vahele: avalik võti on juba olemas\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "viga teate saatmisel serverile `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3608,6 +3631,9 @@ msgstr "kustuta sekundaarne võti"
|
||||
msgid "add a revocation key"
|
||||
msgstr "lisa tühistamise võti"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "Kas uuendan tõesti kõik kasutaja ID-de seaded? "
|
||||
@ -3682,6 +3708,10 @@ msgstr "Salajane võti on kasutatav.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Salajane võti on kasutatav.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Selle tegamiseks on vaja salajast võtit.\n"
|
||||
|
||||
@ -3803,6 +3833,10 @@ msgstr "Salvestan muutused? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Väljun salvestamata? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "võtmebloki kustutamine ebaõnnestus: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Võtit ei muudetud, seega pole uuendamist vaja.\n"
|
||||
@ -4047,6 +4081,18 @@ msgid ""
|
||||
msgstr ""
|
||||
"Olete kindel, et soovite seda võtit seada määratud tühistajaks? (j/E): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(kui te just ei määra võtit sõrmejäljega)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "kasutaja ID \"%s\" on juba tühistatud\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5862,10 +5908,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "%s ei ole moodis %s lubatud.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "HOIATUS: allkirja lühend on teatega konfliktne\n"
|
||||
@ -8002,10 +8044,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "kataloogi `%s' ei õnnestu luua: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "viga `%s' lugemisel: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "`%s' ei õnnestu sulgeda: %s\n"
|
||||
@ -9869,10 +9907,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "lülita salajaste või avalike võtmete loendi vahel"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "halb parool"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr "HOIATUS: seaded failis `%s' pole seekord veel aktiivsed\n"
|
||||
|
68
po/fi.po
68
po/fi.po
@ -136,6 +136,10 @@ msgstr "väärä salasana"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "väärä salasana"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1252,6 +1256,15 @@ msgstr "kirjoitan salaisen avaimen kohteeseen \"%s\"\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "virhe luotaessa \"%s\": %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "virhe luettaessa tiedostoa \"%s\": %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "ascii-koodaus: %s\n"
|
||||
@ -1468,6 +1481,10 @@ msgstr "ei käsitelty"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1747,6 +1764,9 @@ msgstr "muuta luottamusastetta"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "muuta luottamusastetta"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1995,11 +2015,6 @@ msgstr "avain %08lX: PGP 2.x -muodon avain - ohitetaan\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "VAROITUS: mitään ei viety\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "virhe luotaessa \"%s\": %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Käyttäjätunnusta ei löytynyt]"
|
||||
@ -2450,6 +2465,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Salaisesta avainrenkaasta ei löydy vastaavaa allekirjoitusta\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "näytä mihin avainrenkaaseen tulostettu avain kuuluu"
|
||||
@ -3086,6 +3105,10 @@ msgstr "ohitetaan: salainen avain on jo paikalla\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "virhe lähettäessä kohteeseen \"%s\": %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3632,6 +3655,9 @@ msgstr "poista toissijainen avain"
|
||||
msgid "add a revocation key"
|
||||
msgstr "lisää mitätöintiavain"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "Varmastiko päivitä valinnat näille käyttäjätunnuksille? "
|
||||
@ -3706,6 +3732,10 @@ msgstr "Salainen avain on saatavilla.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Salainen avain on saatavilla.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Tähän tarvitaan salainen avain.\n"
|
||||
|
||||
@ -3827,6 +3857,10 @@ msgstr "Tallenna muutokset? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Lopeta tallentamatta muutoksia?"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "avainlohkojen poisto epäonnistui: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Päivitystä ei tarvita, koska avain ei ole muuttunut.\n"
|
||||
@ -4072,6 +4106,18 @@ msgid ""
|
||||
msgstr ""
|
||||
"Haluatko varmasti nimittää tämän avaimen määrätyksi mitätöijäksi? (k/E): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(ellet määritä avainta sormenjäljen perusteella)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "käyttäjätunnus \"%s\" on jo mitätöity\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5912,10 +5958,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "valitsinta %s ei voi käyttää %s-tilassa\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "VAROITUS: allekirjoitustiiviste ei täsmää viestin kanssa\n"
|
||||
@ -8068,10 +8110,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "hakemiston \"%s\" luominen ei onnistu: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "virhe luettaessa tiedostoa \"%s\": %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "tiedostoa \"%s\" ei voi sulkea: %s\n"
|
||||
@ -9943,10 +9981,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "vaihda salaisten ja julkisten avainten luettelon välillä"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "väärä salasana"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr ""
|
||||
|
71
po/fr.po
71
po/fr.po
@ -140,6 +140,11 @@ msgstr "Phrase secrète :"
|
||||
msgid "does not match - try again"
|
||||
msgstr "ne correspond pas — veuillez réessayer"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Phrase secrète"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1265,6 +1270,14 @@ msgstr "attente du verrou %s…\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s est trop ancien (nécessaire : %s, utilisé : %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "erreur de création de « %s » : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "erreur de fermeture de « %s » : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armure : %s\n"
|
||||
@ -1485,6 +1498,10 @@ msgstr "non forcé"
|
||||
msgid "forced"
|
||||
msgstr "forcé"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Erreur : seul l'ASCII standard est permis pour l'instant.\n"
|
||||
|
||||
@ -1781,6 +1798,9 @@ msgstr "modifier la confiance du propriétaire"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "modifier la confiance du propriétaire"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/carte> "
|
||||
|
||||
@ -2021,10 +2041,6 @@ msgstr "clef %s : clef de type PGP 2.x — ignorée\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "Attention : rien n'a été exporté\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "erreur de création de « %s » : %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[identité introuvable]"
|
||||
|
||||
@ -2488,6 +2504,11 @@ msgstr "montrer les identités révoquées et expirées en affichant les clefs"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "indiquer les sous-clefs révoquées et expirées en affichant les clefs"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "montrer les dates d'expiration en affichant les signatures"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "montrer le nom du porte-clefs en affichant les clefs"
|
||||
|
||||
@ -3127,6 +3148,10 @@ msgstr "clef %s : la clef secrète clef existe déjà\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "clef %s : erreur d'envoi à l'agent : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3649,6 +3674,11 @@ msgstr "supprimer les sous-clefs sélectionnées"
|
||||
msgid "add a revocation key"
|
||||
msgstr "ajouter une clef de révocation"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Déchiffrement des données réussi"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "supprimer les signatures des identités sélectionnées"
|
||||
|
||||
@ -3716,6 +3746,10 @@ msgstr "La clef secrète est disponible.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "La clef secrète est disponible.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "La clef secrète est nécessaire pour faire cela.\n"
|
||||
|
||||
@ -3830,6 +3864,11 @@ msgstr "Faut-il enregistrer les modifications ? (o/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Faut-il quitter sans enregistrer ? (o/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "échec de suppression de %s secrète : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "La clef n'a pas été modifiée donc la mise à jour est inutile.\n"
|
||||
@ -4080,6 +4119,19 @@ msgid ""
|
||||
msgstr ""
|
||||
"Voulez-vous vraiment rendre cette clef comme révocateur désigné ? (o/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(à moins d'indiquer la clef par son empreinte)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "La sous-clef %s est déjà révoquée.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
@ -5976,10 +6028,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "impossible d'utiliser %s en mode %s.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "Attention : conflit de hachage de signature dans le message\n"
|
||||
@ -8210,10 +8258,6 @@ msgstr "veuillez vérifier la raison et effacer vous-même ce fichier\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "impossible de créer le répertoire de cache temporaire « %s » : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "erreur de fermeture de « %s » : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "impossible de hacher « %s » : %s\n"
|
||||
@ -10314,9 +10358,6 @@ msgstr ""
|
||||
#~ "passer de la liste de clefs secrètes à celle de clefs privées ou vice "
|
||||
#~ "versa"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "Phrase secrète"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr ""
|
||||
#~ "utiliser des fichiers temporaires pour passer les données aux assistants "
|
||||
|
68
po/gl.po
68
po/gl.po
@ -121,6 +121,10 @@ msgstr "contrasinal erróneo"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "contrasinal erróneo"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1244,6 +1248,15 @@ msgstr "gravando a chave secreta en `%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "erro ao crear `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "erro lendo `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armadura: %s\n"
|
||||
@ -1459,6 +1472,10 @@ msgstr "non procesado"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1738,6 +1755,9 @@ msgstr "cambia-la confianza sobre o dono"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "cambia-la confianza sobre o dono"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1987,11 +2007,6 @@ msgstr "chave %08lX: chave estilo PGP 2.x - omitida\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "AVISO: non se exportou nada\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "erro ao crear `%s': %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Non se atopou o id de usuario]"
|
||||
@ -2441,6 +2456,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Non hai unha sinatura correspondiente no chaveiro secreto\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "amosar en que chaveiro está unha chave listada"
|
||||
@ -3073,6 +3092,10 @@ msgstr "omítese: a chave secreta xa está presente\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "erro ao enviar a `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3624,6 +3647,9 @@ msgstr "borrar unha chave secundaria"
|
||||
msgid "add a revocation key"
|
||||
msgstr "engadir unha chave de revocación"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr ""
|
||||
@ -3704,6 +3730,10 @@ msgstr "A chave secreta está disponible.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "A chave secreta está disponible.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Cómpre a chave secreta para facer isto.\n"
|
||||
|
||||
@ -3827,6 +3857,10 @@ msgstr "¿Garda-los cambios? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "¿Saír sin gardar? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "fallou o borrado do bloque de chaves: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "A chave non cambiou, polo que non fai falla actualizar.\n"
|
||||
@ -4078,6 +4112,18 @@ msgid ""
|
||||
msgstr ""
|
||||
"¿Está seguro de que quere nomear esta chave coma revocador designado? (s/N): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(a menos que especifique a chave por pegada dactilar)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "o ID de usuario \"%s\" xa está revocado\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5912,10 +5958,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "non se pode empregar %s no modo %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "AVISO: conflicto de resumo de sinatura na mensaxe\n"
|
||||
@ -8076,10 +8118,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "non se pode crea-lo directorio `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "erro lendo `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "non se pode pechar `%s': %s\n"
|
||||
@ -9961,10 +9999,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "cambiar entre o listado de chaves públicas e secretas"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "contrasinal erróneo"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr "AVISO: as opcións de `%s' aínda non están activas nesta execución\n"
|
||||
|
68
po/hu.po
68
po/hu.po
@ -120,6 +120,10 @@ msgstr "rossz jelszó"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "rossz jelszó"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1235,6 +1239,15 @@ msgstr "Írom a titkos kulcsot a %s állományba.\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "Hiba \"%s\" létrehozásakor: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "Hiba \"%s\" olvasásakor: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "Páncél: %s\n"
|
||||
@ -1449,6 +1462,10 @@ msgstr "nem feldolgozott"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1728,6 +1745,9 @@ msgstr "kulcstulajdonos megbízhatóságának beállítása"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "kulcstulajdonos megbízhatóságának beállítása"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1978,11 +1998,6 @@ msgstr "%08lX kulcs: PGP 2.x stílusú kulcs - kihagytam.\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "FIGYELEM: Semmit sem exportáltam.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "Hiba \"%s\" létrehozásakor: %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[ismeretlen kulcs]"
|
||||
@ -2433,6 +2448,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Nincs megfelelő aláírás a titkoskulcs-karikán.\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "mutatja a kilistázott kulcs kulcskarikáját is"
|
||||
@ -3065,6 +3084,10 @@ msgstr "Kihagytam: titkos kulcs már jelen van.\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "Hiba %s-ra/-re küldéskor: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3609,6 +3632,9 @@ msgstr "másodlagos kulcs törlése"
|
||||
msgid "add a revocation key"
|
||||
msgstr "visszavonó kulcs hozzáadása"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "Valóban frissíti a kijelölt felhasználóazonosítók preferenciáit? "
|
||||
@ -3683,6 +3709,10 @@ msgstr "Titkos kulcs rendelkezésre áll.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Titkos kulcs rendelkezésre áll.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Ehhez szükség van a titkos kulcsra.\n"
|
||||
|
||||
@ -3804,6 +3834,10 @@ msgstr "Mentsem a változtatásokat? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Kilépjek mentés nélkül? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "A kulcsblokk törlése sikertelen: %s.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "A kulcs nem változott, nincs szükség frissítésre.\n"
|
||||
@ -4051,6 +4085,18 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "Biztosan ez a kulcs legyen a kijelölt visszavonó? (i/N): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(Kivéve, ha megad egy kulcsot az ujjlenyomatával.)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "\"%s\" felhasználói azonosítót már visszavonták.\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5877,10 +5923,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "Lehet, hogy nem használhatja %s-t %s módban!\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "FIGYELEM: Aláíráskivonat-konfliktus az üzenetben.\n"
|
||||
@ -8029,10 +8071,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "Nem tudom a \"%s\" könyvtárat létrehozni: %s.\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "Hiba \"%s\" olvasásakor: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "Nem tudom bezárni a(z) \"%s\" állományt: %s.\n"
|
||||
@ -9901,10 +9939,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "váltás a titkos és a nyilvános kulcs listázása között"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "rossz jelszó"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr ""
|
||||
|
68
po/id.po
68
po/id.po
@ -125,6 +125,10 @@ msgstr "passphrase yang buruk"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "passphrase yang buruk"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1240,6 +1244,15 @@ msgstr "menulis kunci rahasia ke `%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "kesalahan penciptaan : `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "kesalahan membaca `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armor: %s\n"
|
||||
@ -1455,6 +1468,10 @@ msgstr "tidak diproses"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1734,6 +1751,9 @@ msgstr "ubah ownertrust"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "ubah ownertrust"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1984,11 +2004,6 @@ msgstr "kunci %08lX: kunci gaya PGP 2.x - dilewati\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "PERINGATAN: tidak ada yang diekspor\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "kesalahan penciptaan : `%s': %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[User id tidak ditemukan]"
|
||||
@ -2437,6 +2452,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Tidak ada signature koresponden di ring rahasia\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "tampilkan keyring tempat kunci yang dipilih berada"
|
||||
@ -3071,6 +3090,10 @@ msgstr "dilewati: kunci pribadi telah ada\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "kesalahan mengirim ke `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3615,6 +3638,9 @@ msgstr "hapus kunci sekunder"
|
||||
msgid "add a revocation key"
|
||||
msgstr "tambah kunci pembatalan"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "Perbarui preferensi untuk user ID terpilih?"
|
||||
@ -3689,6 +3715,10 @@ msgstr "Kunci rahasia tersedia.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Kunci rahasia tersedia.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Perlu kunci rahasia untuk melakukan hal ini.\n"
|
||||
|
||||
@ -3810,6 +3840,10 @@ msgstr "Simpan perubahan? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Berhenti tanpa menyimpan? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "gagal menghapus keyblok: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Kunci tidak berubah sehingga tidak perlu pembaharuan.\n"
|
||||
@ -4061,6 +4095,18 @@ msgid ""
|
||||
msgstr ""
|
||||
"Anda yakin ingin menunjuk kunci inin sebagai pihak yang dibatalkan? (y/N):"
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(kecuali anda menspesifikasikan kunci dengan fingerprint)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "User ID \"%s\" telah dibatalkan\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5879,10 +5925,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "anda tidak boleh menggunakan %s saat dalam mode %s.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "Peringatan: konflik digest signature dalam pesan\n"
|
||||
@ -8028,10 +8070,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "tidak dapat membuat direktori `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "kesalahan membaca `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "tidak dapat menutup `%s': %s\n"
|
||||
@ -9898,10 +9936,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "ubah tampilan kunci rahasia dan publik"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "passphrase yang buruk"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr "PERINGATAN: opsi dalam `%s' belum aktif selama pelaksanaan ini\n"
|
||||
|
71
po/it.po
71
po/it.po
@ -121,6 +121,11 @@ msgstr "Passphrase:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "non corrisponde - riprova"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase Entry"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Voce passphrase"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1204,6 +1209,14 @@ msgstr "attesa del blocco %s...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s è troppo vecchio (è necessario %s, con %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "errore durante la creazione di '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "errore durante la chiusura di '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armatura: %s\n"
|
||||
@ -1408,6 +1421,10 @@ msgstr "non forzato"
|
||||
msgid "forced"
|
||||
msgstr "costretto"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Errore: al momento è consentito solo ASCII semplice.\n"
|
||||
|
||||
@ -1676,6 +1693,9 @@ msgstr "modificare l'attributo chiave"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "modificare il contrassegno interazione utente"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/card> "
|
||||
|
||||
@ -1915,10 +1935,6 @@ msgstr "chiave %s: chiave di stile PGP 2.x - ignorata\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "ATTENZIONE: non è stato esportato nulla\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "errore durante la creazione di '%s': %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[ID utente non trovato]"
|
||||
|
||||
@ -2330,6 +2346,11 @@ msgstr "mostra ID utente revocati e scaduti negli elenchi di chiavi"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "mostra sottochiavi revocate e scadute negli elenchi di chiavi"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "mostra date di scadenza durante le inserzioni delle firme"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "mostrare il nome del keyring negli elenchi delle chiavi"
|
||||
|
||||
@ -2951,6 +2972,10 @@ msgstr "chiave %s: chiave segreta già esistente\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "chiave %s: errore durante l'invio all'agente: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3468,6 +3493,11 @@ msgstr "eliminare le sottochiavi selezionate"
|
||||
msgid "add a revocation key"
|
||||
msgstr "aggiungi una chiave di revoca"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Decrittografia dei dati riuscita"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "eliminare le firme dagli ID utente selezionati"
|
||||
|
||||
@ -3535,6 +3565,13 @@ msgstr "È disponibile una chiave segreta.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Sono disponibili sottochiavi segrete.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
"Nota: verrà eliminata solo la parte segreta della sottochiave visualizzata.\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Per fare questo serve la chiave segreta.\n"
|
||||
|
||||
@ -3645,6 +3682,11 @@ msgstr "Salvare le modifiche? (y/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Uscire senza salvare? (y/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "eliminazione del segreto %s non riuscita: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "La chiave non è cambiata quindi non sono necessari aggiornamenti.\n"
|
||||
@ -3887,6 +3929,19 @@ msgid ""
|
||||
msgstr ""
|
||||
"Sei sicuro di voler nominare questa chiave come revocatore designato? (y/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(a meno che la chiave sia specificata con il fingerprint)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "La sottochiave %s è già stata revocata.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5676,10 +5731,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "impossibile utilizzare la chiave %s per l'accesso in modalità %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "ATTENZIONE: conflitto del digest delle firme nel messaggio\n"
|
||||
@ -7832,10 +7883,6 @@ msgstr "si prega di controllare il motivo ed eliminare manualmente quel file\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "impossibile creare il file dir della cache temporanea '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "errore durante la chiusura di '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "impossibile eseguire l'hashing '%s': %s\n"
|
||||
|
73
po/ja.po
73
po/ja.po
@ -5,13 +5,13 @@
|
||||
# Yoshihiro Kajiki <kajiki@ylug.org>, 1999.
|
||||
# Takashi P.KATOH, 2002.
|
||||
# NIIBE Yutaka <gniibe@fsij.org>, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
|
||||
# 2020, 2021, 2022.
|
||||
# 2020, 2021, 2022, 2023.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnupg 2.4.0\n"
|
||||
"Project-Id-Version: gnupg 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: translations@gnupg.org\n"
|
||||
"PO-Revision-Date: 2023-01-26 15:24+0900\n"
|
||||
"PO-Revision-Date: 2023-04-26 13:35+0900\n"
|
||||
"Last-Translator: NIIBE Yutaka <gniibe@fsij.org>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ja\n"
|
||||
@ -124,6 +124,9 @@ msgstr "パスフレーズ:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "一致しません - もう一度"
|
||||
|
||||
msgid "Passphrases match."
|
||||
msgstr "パスフレーズが一致。"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1186,6 +1189,14 @@ msgstr "lock %s を待ちます...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s が古すぎます (%s が必要、現在 %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "'%s'の作成エラー: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "'%s'でクローズのエラー: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "外装: %s\n"
|
||||
@ -1388,6 +1399,10 @@ msgstr "強制なし"
|
||||
msgid "forced"
|
||||
msgstr "強制"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr "一覧が正しくないように見える場合、コマンド \"%s\" を試してください\n"
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "エラー: 普通のASCIIだけが今、許可されています。\n"
|
||||
|
||||
@ -1648,6 +1663,9 @@ msgstr "鍵の属性の変更"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "ユーザインタラクションフラグの変更"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr "OpenPGP app にスイッチします"
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/card> "
|
||||
|
||||
@ -1855,7 +1873,7 @@ msgstr "'%s'への書き込み\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: key material on-card - skipped\n"
|
||||
msgstr "鍵%s: 鍵はカード上にあります - スキップします\n"
|
||||
msgstr "鍵%s: 鍵マテリアルはカード上にあります - スキップします\n"
|
||||
|
||||
#, c-format
|
||||
msgid "exporting secret keys not allowed\n"
|
||||
@ -1869,10 +1887,6 @@ msgstr "鍵%s: PGP 2.x形式の鍵です - スキップします\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "*警告*: 何もエクスポートされていません\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "'%s'の作成エラー: %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[ユーザIDが見つかりません]"
|
||||
|
||||
@ -2270,6 +2284,9 @@ msgstr "鍵の一覧に失効したユーザID、期限切れとなったユー
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "鍵の一覧に失効した副鍵、期限切れとなった副鍵を表示する"
|
||||
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "署名の一覧時に無効なアルゴリズムの署名を表示する"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "鍵の一覧に鍵リングの名前を表示する"
|
||||
|
||||
@ -2878,6 +2895,10 @@ msgstr "鍵 %s: 秘密鍵はもうあります\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "鍵 %s: エージェントへの送信エラー: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr "鍵 %s: カード参照が鍵マテリアルで上書きされます\n"
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3374,6 +3395,9 @@ msgstr "選択した副鍵の削除"
|
||||
msgid "add a revocation key"
|
||||
msgstr "失効鍵の追加"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "追加の復号用の副鍵を足す"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "選択したユーザIDから署名を削除する"
|
||||
|
||||
@ -3434,6 +3458,10 @@ msgstr "秘密鍵が利用できます。\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "秘密副鍵が利用できます。\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr "注意: 秘密鍵のローカルなコピーは\"save\"だけで削除されます。\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "この実行には秘密鍵がいります。\n"
|
||||
|
||||
@ -3541,6 +3569,10 @@ msgstr "変更を保存しますか? (y/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "保存せずに終了しますか? (y/N) "
|
||||
|
||||
#, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "秘密鍵のコピーの削除に失敗しました: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "鍵は無変更なので更新は不要です。\n"
|
||||
@ -3770,6 +3802,17 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "本当にこの鍵を指名失効者に任命しますか? (y/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr "追加の復号用の副鍵のフィンガー・プリントを入力してください:"
|
||||
|
||||
#, c-format
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "副鍵のフィンガー・プリントを指定しましたか?\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "鍵 \"%s\" は、もうこの鍵ブロックにあります。\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5495,10 +5538,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "鍵%sを署名のために%sモードで使うことはできません\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr "オプション %sのため、検証を続けます\n"
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "*警告*: 署名のダイジェストが、メッセージと衝突します\n"
|
||||
@ -7545,10 +7584,6 @@ msgstr "理由を確認し、手動でそのファイルを削除してくださ
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "一時キャッシュ・ディレクトリ・ファイル'%s'が作成できません: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "'%s'でクローズのエラー: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "'%s'をハッシュできません: %s\n"
|
||||
@ -8696,6 +8731,9 @@ msgstr "Yubikey管理コマンド"
|
||||
msgid "manage the command history"
|
||||
msgstr "コマンド履歴を管理する"
|
||||
|
||||
#~ msgid "continuing verification anyway due to option %s\n"
|
||||
#~ msgstr "オプション %sのため、検証を続けます\n"
|
||||
|
||||
#~ msgid "selected AEAD algorithm is invalid\n"
|
||||
#~ msgstr "選択されたAEADアルゴリズムは無効です\n"
|
||||
|
||||
@ -9499,9 +9537,6 @@ msgstr "コマンド履歴を管理する"
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "秘密鍵と公開鍵の一覧の反転"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "パスフレーズ"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr "キーサーバ・ヘルパーにデータを与える際、一時ファイルを使う"
|
||||
|
||||
|
68
po/nb.po
68
po/nb.po
@ -133,6 +133,11 @@ msgstr "Passordfrase:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "feil. Prøv igjen"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase Entry"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Skriving av passordfrase"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1217,6 +1222,14 @@ msgstr "venter på lås %s …\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s er for gammel (krever %s, har %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "feil under oppretting av «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "feil under lukking av «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armor: %s\n"
|
||||
@ -1427,6 +1440,10 @@ msgstr "ikke tvunget"
|
||||
msgid "forced"
|
||||
msgstr "tvunget"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Feil: Bare ren ASCII er foreløpig tillatt.\n"
|
||||
|
||||
@ -1711,6 +1728,9 @@ msgstr "endre eiertillit"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "endre eiertillit"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/kort> "
|
||||
|
||||
@ -1946,10 +1966,6 @@ msgstr "nøkkel %s: PGP 2.x-aktig nøkkel - hoppet over\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "ADVARSEL: ingenting eksportert\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "feil under oppretting av «%s»: %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Fant ikke bruker-ID]"
|
||||
|
||||
@ -2361,6 +2377,11 @@ msgstr "vis opphevede og utgåtte bruker-id-er i nøkkelvisning"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "vis opphevede og utgåtte undernøkler i nøkkelvisning"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "vis utløpsdatoer i nøkkelvisning"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "vis nøkkelknippe-navn i nøkkelvisning"
|
||||
|
||||
@ -2982,6 +3003,10 @@ msgstr "nøkkel %s: hemmelig nøkkel finnes allerede\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "nøkkel %s: feil under sending til agent: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3496,6 +3521,11 @@ msgstr "slett valgte undernøkler"
|
||||
msgid "add a revocation key"
|
||||
msgstr "legg til opphevingsnøkkel"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Datadekryptering fullført"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "slett signaturer fra valgte bruker-id-er"
|
||||
|
||||
@ -3561,6 +3591,10 @@ msgstr "Hemmelig nøkkel er tilgjengelig.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Hemmelig nøkkel er tilgjengelig.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Du trenger tilhørende hemmelig nøkkel for å gjøre dette.\n"
|
||||
|
||||
@ -3672,6 +3706,11 @@ msgstr "Vil du lagre endringer? (j/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Vil du avslutte uten å lagre? (j/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "sletting av hemmelig nøkkel %s mislyktes: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Nøkkelen ble ikke endret, så ingen oppdatering er nødvendig.\n"
|
||||
@ -3907,6 +3946,19 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "Er du sikker på at du vil gjøre denne nøkkelen til en opphever? (j/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(med mindre du oppgir nøkkel ved hjelp av fingeravtrykk)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Undernøkkel %s er allerede opphevet.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5703,10 +5755,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "du kan ikke bruke nøkkel %s til signering i %s-modus\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "ADVARSEL: konflikt med signatur-kontrollsum i melding\n"
|
||||
@ -7825,10 +7873,6 @@ msgstr "kontroller årsaken og slett fila manuelt\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "klarte ikke å lage midlertidig hurtiglagermappe-fil «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "feil under lukking av «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "klarte ikke å summere «%s»: %s\n"
|
||||
|
70
po/pl.po
70
po/pl.po
@ -127,6 +127,11 @@ msgstr "Hasło:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "nie pasują - proszę spróbować jeszcze raz"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase Entry"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Wpisywanie hasła"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1210,6 +1215,14 @@ msgstr "oczekiwanie na blokadę %s...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "biblioteka %s jest zbyt stara (wymagana %s, zainstalowana %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "błąd tworzenia ,,%s'': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "błąd zamykania ,,%s'': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "opakowanie: %s\n"
|
||||
@ -1413,6 +1426,10 @@ msgstr "nie wymuszono"
|
||||
msgid "forced"
|
||||
msgstr "wymuszono"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Błąd: aktualnie dopuszczalne jest tylko czyste ASCII.\n"
|
||||
|
||||
@ -1682,6 +1699,9 @@ msgstr "zmiana atrybutu klucza"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "zmiana zaufania właściciela"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/karta> "
|
||||
|
||||
@ -1918,10 +1938,6 @@ msgstr "klucz %s: klucz PGP 2.x - pominięty\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "OSTRZEŻENIE: nic nie zostało wyeksportowane!\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "błąd tworzenia ,,%s'': %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[brak identyfikatora użytkownika]"
|
||||
|
||||
@ -2352,6 +2368,11 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "pokazywanie unieważnionych i wygasłych podkluczy na listach kluczy"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "pokazywanie dat wygaśnięcia przy wypisywaniu podpisów"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "pokazywanie nazwy zbioru kluczy na listach kluczy"
|
||||
|
||||
@ -2973,6 +2994,10 @@ msgstr "klucz %s: klucz prywatny już istnieje\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "klucz %s: błąd wysyłania do agenta: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3503,6 +3528,11 @@ msgstr "usunięcie wybranych podkluczy"
|
||||
msgid "add a revocation key"
|
||||
msgstr "dodanie klucza unieważniającego"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Odszyfrowywanie danych zakończone"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "usunięcie podpisów z wybranych identyfikatorów użytkownika"
|
||||
|
||||
@ -3569,6 +3599,12 @@ msgstr "Dostępny jest klucz tajny.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Dostępne są podklucze tajne.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr "Uwaga: usunięta zostanie tylko tajna część pokazanego podklucza.\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Do wykonania tej operacji potrzebny jest klucz tajny.\n"
|
||||
|
||||
@ -3683,6 +3719,11 @@ msgstr "Zapisać zmiany? (t/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Wyjść bez zapisania zmian? (t/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "usunięcie %s tajnego nie powiodło się: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Klucz nie został zmieniony więc zapis zmian nie jest konieczny.\n"
|
||||
@ -3919,6 +3960,19 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "Czy na pewno chcesz wyznaczyć ten klucz jako unieważniający? (t/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(chyba, że klucz zostaje wybrany przez podanie odcisku)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Podklucz %s jest już unieważniony.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5739,10 +5793,6 @@ msgstr "klucz %s %s wymaga skrótu %zu-bitowego lub większego (skrót to %s)\n"
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "klucz %s nie może być używany do podpisów w trybie %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "OSTRZEŻENIE: konflikt skrótów podpisów w wiadomości\n"
|
||||
@ -7932,10 +7982,6 @@ msgstr ""
|
||||
"nie udało się utworzyć pliku tymczasowego katalogu pamięci podręcznej ,,"
|
||||
"%s'': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "błąd zamykania ,,%s'': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "nie można policzyć skrótu ,,%s'': %s\n"
|
||||
|
68
po/pt.po
68
po/pt.po
@ -123,6 +123,10 @@ msgstr "frase secreta incorrecta"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "frase secreta incorrecta"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1240,6 +1244,15 @@ msgstr "a escrever chave privada para `%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "erro ao criar `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "erro na leitura de `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armadura: %s\n"
|
||||
@ -1454,6 +1467,10 @@ msgstr "não processado"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1733,6 +1750,9 @@ msgstr "muda os valores de confiança"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "muda os valores de confiança"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1981,11 +2001,6 @@ msgstr "chave %08lX: tipo PGP 2.x - ignorada\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "AVISO: nada exportado\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "erro ao criar `%s': %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Utilizador não encontrado]"
|
||||
@ -2438,6 +2453,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Nenhuma assinatura correspondente no porta-chaves secreto\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "mostrar em que porta-chave a chave está"
|
||||
@ -3070,6 +3089,10 @@ msgstr "ignorado: a chave secreta já está presente\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "erro ao enviar para `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3617,6 +3640,9 @@ msgstr "remove uma chave secundária"
|
||||
msgid "add a revocation key"
|
||||
msgstr "adiciona uma chave de revocação"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr ""
|
||||
@ -3694,6 +3720,10 @@ msgstr "Chave secreta disponível.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Chave secreta disponível.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "A chave secreta é necessária para fazer isto.\n"
|
||||
|
||||
@ -3816,6 +3846,10 @@ msgstr "Gravar alterações? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Sair sem gravar? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "remoção do bloco de chave falhou: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Chave não alterada, nenhuma actualização é necessária.\n"
|
||||
@ -4059,6 +4093,18 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "não pode escolher uma chave como revogadora de si mesmo\n"
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(a não ser que escolha a chave pela sua impressão digital)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "o utilizador com o id \"%s\" já está revocado\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5871,10 +5917,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "não pode utilizar %s enquanto estiver no modo %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "AVISO: conflito no 'digest' de assinatura da mensagem\n"
|
||||
@ -8025,10 +8067,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "%s: impossível criar directoria: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "erro na leitura de `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "impossível fechar `%s': %s\n"
|
||||
@ -9887,10 +9925,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "alterna entre listagem de chave secreta e pública"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "frase secreta incorrecta"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr "AVISO: opções em `%s' ainda não estão activas nesta execução\n"
|
||||
|
69
po/ro.po
69
po/ro.po
@ -127,6 +127,10 @@ msgstr "frază-parolă incorectă"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "frază-parolă incorectă"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1259,6 +1263,15 @@ msgstr "scriu cheia secretă în `%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "eroare la creearea `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "eroare în `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "armură: %s\n"
|
||||
@ -1477,6 +1490,10 @@ msgstr "neforţat(ă)"
|
||||
msgid "forced"
|
||||
msgstr "forţat(ă)"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Eroare: Deocamdată sunt permise numai caractere ASCII.\n"
|
||||
|
||||
@ -1756,6 +1773,9 @@ msgstr "schimbă încrederea pentru proprietar"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "schimbă încrederea pentru proprietar"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -2007,11 +2027,6 @@ msgstr "cheia %s: cheie stil PGP 2.x - sărită\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "AVERTISMENT: nimic exportat\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "eroare la creearea `%s': %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[ID utilizator nu a fost găsit]"
|
||||
|
||||
@ -2492,6 +2507,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "Nici o semnătură corespunzătoare în inelul secret\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "arată căruia dintre inelele de chei îi aparţine o cheie enumerată"
|
||||
@ -3142,6 +3161,10 @@ msgstr "sărită: cheia secretă deja prezentă\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "eroare trimitere la `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3668,6 +3691,9 @@ msgstr "şterge subcheile selectate"
|
||||
msgid "add a revocation key"
|
||||
msgstr "adaugă o cheie de revocare"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "şterge semnăturile de pe ID-urile utilizator selectate"
|
||||
|
||||
@ -3734,6 +3760,10 @@ msgstr "Cheia secretă este disponibilă.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Cheia secretă este disponibilă.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Aveţi nevoie de cheia secretă pentru a face aceasta.\n"
|
||||
|
||||
@ -3858,6 +3888,10 @@ msgstr "Salvaţi schimbările? (d/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Terminaţi fără a salva? (d/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "stergere keyblock a eşuat: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Cheia nu a fost schimbată aşa că nici o actualizare a fost necesară.\n"
|
||||
@ -4108,6 +4142,19 @@ msgstr ""
|
||||
"Sunteţi sigur(ă) că doriţi să desemnaţi această cheie ca şi un revocator "
|
||||
"desemnat? (d/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(dacă nu specificaţi cheia prin amprentă)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Subcheia %s este deja revocată.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
@ -5965,10 +6012,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "nu puteţi folosi %s câtă vreme în modul %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "AVERTISMENT: conflict pentru rezumat semnătură în mesaj\n"
|
||||
@ -8150,10 +8193,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "nu pot crea directorul `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "eroare în `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "can't access `%s': %s\n"
|
||||
msgid "can't hash '%s': %s\n"
|
||||
@ -10074,10 +10113,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "comută între listele de chei secrete şi publice"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "frază-parolă incorectă"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "WARNING: keyserver option `%s' is not used on this platform\n"
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
|
71
po/ru.po
71
po/ru.po
@ -130,6 +130,11 @@ msgstr "Фраза-пароль:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "не подходит - попробуйте еще раз"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase Entry"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Ввод фраз-паролей"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1222,6 +1227,14 @@ msgstr "ожидаю снятия блокировки %s...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "слишком старая версия %s (нужно %s, есть %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "ошибка создания '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "ошибка закрытия '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "текстовый формат: %s\n"
|
||||
@ -1425,6 +1438,10 @@ msgstr "не требуется"
|
||||
msgid "forced"
|
||||
msgstr "требуется"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Ошибка: Допустим только простой текст ASCII.\n"
|
||||
|
||||
@ -1694,6 +1711,9 @@ msgstr "изменить атрибут ключа"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "изменить уровень доверия владельцу"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/card> "
|
||||
|
||||
@ -1930,10 +1950,6 @@ msgstr "ключ %s: ключ типа PGP 2.x - пропущен\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "Внимание: нечего экспортировать\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "ошибка создания '%s': %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Идентификатор пользователя не найден]"
|
||||
|
||||
@ -2359,6 +2375,11 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "показывать в списке ключей отозванные и просроченные подключи"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "показывать в списке подписей сроки действия"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "показывать в списке ключей название таблицы ключей"
|
||||
|
||||
@ -2983,6 +3004,10 @@ msgstr "ключ %s: секретный ключ уже имеется\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "ключ %s: ошибка отправки в агент: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3500,6 +3525,11 @@ msgstr "удалить выбранные подключи"
|
||||
msgid "add a revocation key"
|
||||
msgstr "добавить ключ отзыва"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Данные успешно расшифрованы"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "удалить подписи с выбранных идентификаторов пользователя"
|
||||
|
||||
@ -3566,6 +3596,13 @@ msgstr "Секретный ключ доступен.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Секретные подключи доступны.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
"Замечание: Будет удалена только секретная часть показанного подключа.\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Для данного действия нужен секретный ключ.\n"
|
||||
|
||||
@ -3680,6 +3717,11 @@ msgstr "Сохранить изменения? (y/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Выйти без сохранения? (y/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "сбой при удалении секретного %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Ключ не изменялся - обновление не нужно.\n"
|
||||
@ -3920,6 +3962,19 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "Вы уверены, что хотите назначить данный ключ отзывающим? (y/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(если только ключ не задан отпечатком)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Подключ %s уже отозван.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5710,10 +5765,6 @@ msgstr "Ключ %s %s требует %zu-битного или более дл
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "ключ %s нельзя использовать для подписи в режиме %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "Внимание: конфликт хешей подписей в сообщении\n"
|
||||
@ -7891,10 +7942,6 @@ msgstr "выясните причину и удалите этот файл вр
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "невозможно создание временного файла '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "ошибка закрытия '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "невозможно получить хеш '%s': %s\n"
|
||||
|
68
po/sk.po
68
po/sk.po
@ -123,6 +123,10 @@ msgstr "nesprávne heslo"
|
||||
msgid "does not match - try again"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Passphrases match."
|
||||
msgstr "nesprávne heslo"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1240,6 +1244,15 @@ msgstr "zapisujem tajný kľúč do `%s'\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "chyba pri vytváraní `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "chyba pri čítaní `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "ASCII kódovanie: %s\n"
|
||||
@ -1457,6 +1470,10 @@ msgstr "nespracované"
|
||||
msgid "forced"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
|
||||
@ -1736,6 +1753,9 @@ msgstr "zmeniť dôveryhodnosť vlastníka kľúča"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "zmeniť dôveryhodnosť vlastníka kľúča"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr ""
|
||||
|
||||
@ -1986,11 +2006,6 @@ msgstr "kľúč %08lX: PGP 2.x kľúč - preskočené\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "VAROVANIE: nič nebolo vyexportované\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "chyba pri vytváraní `%s': %s\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[User id not found]"
|
||||
@ -2449,6 +2464,10 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "V súbore tajných kľúčov chýba zodpovedajúci podpis\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "ukáž v ktorom súbore kľúčov je vypísaný kľúč"
|
||||
@ -3087,6 +3106,10 @@ msgstr "preskočené: tajný kľúč je už v databáze\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "chyba pri posielaní na `%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3635,6 +3658,9 @@ msgstr "zmazať sekundárny kľúč"
|
||||
msgid "add a revocation key"
|
||||
msgstr "pridať revokačný kľúč"
|
||||
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "Skutočne aktualizovať predvoľby pre vybrané id užívateľa? "
|
||||
@ -3709,6 +3735,10 @@ msgstr "Tajný kľúč je dostupný.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Tajný kľúč je dostupný.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Na vykonanie tejto operácie je potrebný tajný kľúč.\n"
|
||||
|
||||
@ -3830,6 +3860,10 @@ msgstr "Uložiť zmeny? "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Ukončiť bez uloženia? "
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "zmazanie bloku kľúča sa nepodarilo: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "kľúč nebol zmenený, takže nie je potrebné ho aktualizovať.\n"
|
||||
@ -4073,6 +4107,18 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "Ste si istý, že chcete označiť tento kľúč ako revokovací? (a/N): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(pokiaľ neurčíte kľúč jeho fingerprintom)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "užívateľské ID \"%s\" je už revokované\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
@ -5899,10 +5945,6 @@ msgstr ""
|
||||
"použitie %s nie je v móde %s dovolené\n"
|
||||
"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "VAROVANIE: konflikt hashu podpisu v správe\n"
|
||||
@ -8059,10 +8101,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "nemôžem vytvoriť adresár `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "chyba pri čítaní `%s': %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "nemôžem zavrieť `%s': %s\n"
|
||||
@ -9935,10 +9973,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "prepnúť medzi vypísaním zoznamu tajných a verejných kľúčov"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "nesprávne heslo"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "WARNING: keyserver option '%s' is not used on this platform\n"
|
||||
#~ msgstr "VAROVANIE: nastavenie v `%s' ešte nie je aktívne\n"
|
||||
|
75
po/sv.po
75
po/sv.po
@ -160,6 +160,11 @@ msgstr "Lösenfras:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "stämmer inte överens - försök igen"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Lösenfras"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1340,6 +1345,16 @@ msgstr "väntar på låset %s...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s är för gammal (behöver %s, har %s)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "Fel när \"%s\" skapades: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error closing %s: %s\n"
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "fel vid stängning av %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "ASCII-skal: %s\n"
|
||||
@ -1566,6 +1581,10 @@ msgstr "inte tvingad"
|
||||
msgid "forced"
|
||||
msgstr "tvingad"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Fel: Endast ren ASCII tillåts för närvarande.\n"
|
||||
|
||||
@ -1871,6 +1890,9 @@ msgstr "ändra ägartillitsvärdet"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "ändra ägartillitsvärdet"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/kort> "
|
||||
|
||||
@ -2123,11 +2145,6 @@ msgstr "nyckeln %s: nyckel av PGP 2.x-typ - hoppade över\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "VARNING: ingenting exporterat\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error creating `%s': %s\n"
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "Fel när \"%s\" skapades: %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Användaridentiteten hittades inte]"
|
||||
|
||||
@ -2609,6 +2626,11 @@ msgstr "visa spärrade och utgångna användaridentiteter i nyckellistningar"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "visa spärrade och utgångna undernycklar i nyckellistningar"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "visa utgångsdatum under signaturlistningar"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "visa nyckelringens namn i nyckellistningar"
|
||||
|
||||
@ -3273,6 +3295,10 @@ msgstr "hoppade över: hemlig nyckel finns redan\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "fel vid sändning av %s-kommando: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3807,6 +3833,11 @@ msgstr "ta bort valda undernycklar"
|
||||
msgid "add a revocation key"
|
||||
msgstr "lägg till en spärrnyckel"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Datadekryptering lyckades"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "ta bort signaturer från valda användaridentiteter"
|
||||
|
||||
@ -3875,6 +3906,10 @@ msgstr "Den hemliga nyckeln finns tillgänglig.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Den hemliga nyckeln finns tillgänglig.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Den hemliga nyckeln behövs för att göra detta.\n"
|
||||
|
||||
@ -3999,6 +4034,11 @@ msgstr "Spara ändringar? (j/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Avsluta utan att spara? (j/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting certificate \"%s\" failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "borttagning av certifikatet \"%s\" misslyckades: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Nyckeln är oförändrad så det behövs ingen uppdatering.\n"
|
||||
@ -4254,6 +4294,19 @@ msgid ""
|
||||
msgstr ""
|
||||
"Är du säker på att du vill använda den här nyckeln för spärrning? (j/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(om du inte anger nyckeln med hjälp av fingeravtrycket)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Undernyckeln %s är redan spärrad.\n"
|
||||
|
||||
# designated = angiven (utnämnd, utpekad, bestämd, utsedd, avsedd, angiven, designerad)
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
@ -6151,10 +6204,6 @@ msgstr "DSA-nyckeln %s kräver en hash med %u bitar eller större\n"
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "du kan inte använda %s när du är i %s-läget\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "VARNING: konflikt mellan signatursammandrag i meddelandet\n"
|
||||
@ -8457,11 +8506,6 @@ msgstr ""
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "misslyckades med att skapa temporärfilen \"%s\": %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "error closing %s: %s\n"
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "fel vid stängning av %s: %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "can't access `%s': %s\n"
|
||||
msgid "can't hash '%s': %s\n"
|
||||
@ -10630,9 +10674,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "växla mellan att lista hemliga och publika nycklar"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "Lösenfras"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr ""
|
||||
#~ "använd temporärfiler för att skicka data till nyckelserverns hjälpprogram"
|
||||
|
73
po/tr.po
73
po/tr.po
@ -124,6 +124,11 @@ msgstr "Anahtar Parolası:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "eşleşmiyor - yeniden deneyin"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase Entry"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Anahtar Parolası Girişi"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1199,6 +1204,14 @@ msgstr "%s kilidi için bekleniyor...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s çok eski (gereken %s, sizinki %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "'%s' oluşturulurken hata: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "'%s' kapatılırken hata: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "zırh: %s\n"
|
||||
@ -1404,6 +1417,10 @@ msgstr "zorlanmadı"
|
||||
msgid "forced"
|
||||
msgstr "zorlandı"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "Hata: Şimdilik yalnızca US-ASCII mümkün.\n"
|
||||
|
||||
@ -1666,6 +1683,9 @@ msgstr "anahtar özniteliğini değiştir"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "Kullanıcı etkileşim bayrağını değiştir"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/card> "
|
||||
|
||||
@ -1893,10 +1913,6 @@ msgstr "%s anahtarı: PGP 2.x tarzı bir anahtar - atlandı\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "UYARI: Hiçbir şey dışa aktarılmadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "'%s' oluşturulurken hata: %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Kullanıcı kimliği bulunamadı]"
|
||||
|
||||
@ -2303,6 +2319,11 @@ msgstr ""
|
||||
"anahtar listelerinde yürürlükten kaldırılmış ve zaman aşımına uğramış "
|
||||
"yardımcı anahtarlar göster"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "imza listelemesi sırasında zaman aşımı tarihleri göster"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "anahtar zinciri adını anahtar listelerinde göster"
|
||||
|
||||
@ -2920,6 +2941,10 @@ msgstr "%s anahtarı: Gizli anahtar halihazırda var\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "%s anahtarı: Aracıya gönderirken hata: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3441,6 +3466,11 @@ msgstr "seçili yardımcı anahtarları sil"
|
||||
msgid "add a revocation key"
|
||||
msgstr "bir yürürlükten kaldırma anahtarı ekle"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Veri şifresi çözülmesi başarılı"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "seçili kullanıcı kimliklerinden imzaları sile"
|
||||
|
||||
@ -3506,6 +3536,12 @@ msgstr "Gizli anahtar mevcut.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Gizli yardımcı anahtarlar mevcut.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr "Not: Yalnızca gösterilen yardımcı anahtarın gizli kısmı silinecek.\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Bunu yapmak için gizli anahtar gerekli.\n"
|
||||
|
||||
@ -3620,6 +3656,11 @@ msgstr "Değişiklikler kaydedilsin mi? (e/H) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Kaydetmeden çıkılsın mı? (e/H) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "gizli %s silinmesi başarısız: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Anahtar değişmediğinden güncellemeye gerek yok.\n"
|
||||
@ -3864,6 +3905,19 @@ msgstr ""
|
||||
"Bu anahtarın, yürürlükten kaldıran anahtar olmasını istediğinize emin "
|
||||
"misiniz? (e/H) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(anahtar parmak izi ile belirtilmedikçe)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "%s yardımcı anahtarı zaten yürürlükten kaldırılmış.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5625,10 +5679,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "%s anahtarı %s kipinde imzalama için kullanılamaz\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr "%s seçeneğinden dolayı doğrulama yine de sürdürülüyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "UYARI: İletideki imza özeti çelişkili\n"
|
||||
@ -7732,10 +7782,6 @@ msgstr "lütfen nedenini denetleyin ve o dosyayı el ile silin\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "geçici önbellek dizin dosyası '%s' oluşturulamadı: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "'%s' kapatılırken hata: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "'%s' sağlaması yapılamıyor: %s\n"
|
||||
@ -8888,6 +8934,9 @@ msgstr "Yubikey yönetim konsolu"
|
||||
msgid "manage the command history"
|
||||
msgstr "komut geçmişini yönet"
|
||||
|
||||
#~ msgid "continuing verification anyway due to option %s\n"
|
||||
#~ msgstr "%s seçeneğinden dolayı doğrulama yine de sürdürülüyor\n"
|
||||
|
||||
#~ msgid "selected AEAD algorithm is invalid\n"
|
||||
#~ msgstr "seçili AEAD algoritması geçersiz\n"
|
||||
|
||||
|
71
po/uk.po
71
po/uk.po
@ -130,6 +130,11 @@ msgstr "Пароль:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "паролі не збігаються, повторіть спробу"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase"
|
||||
msgid "Passphrases match."
|
||||
msgstr "Пароль"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1226,6 +1231,14 @@ msgstr "очікування на блокування %s…\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s є занадто застарілою (потрібно %s, маємо %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "помилка створення «%s»: %s.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "помилка під час спроби закрити «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "формат ASCII: %s\n"
|
||||
@ -1436,6 +1449,10 @@ msgstr "не увімкнено"
|
||||
msgid "forced"
|
||||
msgstr "увімкнено"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr ""
|
||||
"Помилка: у поточній версії можна використовувати лише звичайний ASCII.\n"
|
||||
@ -1713,6 +1730,9 @@ msgstr "змінити атрибут ключа"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "змінити рівень довіри до власника"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/картка> "
|
||||
|
||||
@ -1952,10 +1972,6 @@ msgstr "ключ %s: ключ у стилі PGP 2.x — пропущено\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "УВАГА: нічого не експортовано\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "помилка створення «%s»: %s.\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[Ідентифікатор не знайдено]"
|
||||
|
||||
@ -2390,6 +2406,11 @@ msgstr ""
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "показувати відкликані та застарілі підключі у списках ключів"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "показувати дати завершення строків дії у списку підписів"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "показувати назву сховища ключів у списках ключів"
|
||||
|
||||
@ -3023,6 +3044,10 @@ msgstr "ключ %s: закритий ключ вже існує\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "ключ %s: помилка під час спроби надсилання агенту: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3547,6 +3572,11 @@ msgstr "вилучити вибрані підключі"
|
||||
msgid "add a revocation key"
|
||||
msgstr "додати ключ відкликання"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "Дані розшифровано"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "вилучити підписи з вибраних ідентифікаторів користувача"
|
||||
|
||||
@ -3613,6 +3643,10 @@ msgstr "Доступний закритий ключ.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "Доступні закриті підключі.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "Для цього потрібен закритий ключ.\n"
|
||||
|
||||
@ -3722,6 +3756,11 @@ msgstr "Зберегти зміни? (y/N або т/Н) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "Вийти без збереження? (y/N або т/Н) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "помилка під час спроби вилучення закритого %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "Ключ не змінено, отже оновлення непотрібне.\n"
|
||||
@ -3967,6 +4006,19 @@ msgstr ""
|
||||
"Ви справді бажаєте призначити цей ключ як підписане відкликання? (y/N або т/"
|
||||
"Н) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(якщо ключ не задано відбитком)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "Підключ %s вже відкликано.\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5787,10 +5839,6 @@ msgstr ""
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "ключ %s не можна використовувати для підписування у режимі %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "УВАГА: конфлікт контрольних сум підписів у повідомленні\n"
|
||||
@ -8004,10 +8052,6 @@ msgstr "будь ласка, перевірте причину і вилучіт
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "не вдалося створити тимчасовий файл каталогу кешу «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "помилка під час спроби закрити «%s»: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "не вдалося хешувати «%s»: %s\n"
|
||||
@ -10068,9 +10112,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "перемкнутися між списками закритих і відкритих ключів"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "Пароль"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr ""
|
||||
#~ "використовувати тимчасові файли для передавання даних до допоміжних "
|
||||
|
73
po/zh_CN.po
73
po/zh_CN.po
@ -123,6 +123,11 @@ msgstr "密码:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "不匹配 - 请重试"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase Entry"
|
||||
msgid "Passphrases match."
|
||||
msgstr "密码条目"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1172,6 +1177,14 @@ msgstr "等待锁 %s...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s 太旧 (需要 %s,拥有 %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "创建‘%s’时出现错误:%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "关闭‘%s’时出现错误:%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "字符封装:%s\n"
|
||||
@ -1372,6 +1385,10 @@ msgstr "非强制"
|
||||
msgid "forced"
|
||||
msgstr "强制"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "错误:目前只允许使用纯 ASCII 字符。\n"
|
||||
|
||||
@ -1632,6 +1649,9 @@ msgstr "更改密钥属性"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "变更用户交互选项"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/card> "
|
||||
|
||||
@ -1856,10 +1876,6 @@ msgstr "密钥 %s:PGP 2.x 样式的密钥 - 已跳过\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "警告:没有导出任何东西\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "创建‘%s’时出现错误:%s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[用户标识未找到]"
|
||||
|
||||
@ -2255,6 +2271,11 @@ msgstr "列出密钥时显示已吊销或已过期的用户标识"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "列出密钥时显示已吊销或已过期的子密钥"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "列出签名时显示过期日期"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "列出密钥时显示钥匙环的名称"
|
||||
|
||||
@ -2863,6 +2884,10 @@ msgstr "密钥 %s:私钥已存在\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "密钥 %s:发送至代理人程序时出现错误:%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3350,6 +3375,11 @@ msgstr "删除选定的子密钥"
|
||||
msgid "add a revocation key"
|
||||
msgstr "增加一个吊销用密钥"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "数据解密成功"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "从所选用户标识上删除签名"
|
||||
|
||||
@ -3410,6 +3440,12 @@ msgstr "私钥可用。\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "私密子密钥可用。\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Note: Only the secret part of the shown subkey will be deleted.\n"
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr "主要:只有显示的子钥的秘密部分会被删除。\n"
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "要有私钥才能这么做。\n"
|
||||
|
||||
@ -3516,6 +3552,11 @@ msgstr "要保存变更吗?(y/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "要不保存而退出吗?(y/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "删除私钥 %s 时失败: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "密钥没有变更所以不需要更新。\n"
|
||||
@ -3741,6 +3782,19 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "您确定要将这个密钥设置为指定吊销者吗?(y/N): "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(除非您用指纹指定密钥)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "子密钥 %s 已被吊销。\n"
|
||||
|
||||
msgid ""
|
||||
"Are you sure you want to change the expiration time for multiple subkeys? (y/"
|
||||
"N) "
|
||||
@ -5447,10 +5501,6 @@ msgstr "%s 密钥 %s 要求一个 %zu 位或更长的散列(散列是 %s)\n"
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "密钥 %s 在 %s 模式中不适用于签名\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr "由于 %s 选项,验证仍在继续中\n"
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "警告:签名散列值与报文不一致\n"
|
||||
@ -7478,10 +7528,6 @@ msgstr "请检查理由并手动删除那个文件\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "创建临时缓存目录文件‘%s’时失败:%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "关闭‘%s’时出现错误:%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "无法取‘%s’的散列:%s\n"
|
||||
@ -8621,6 +8667,9 @@ msgstr "Yubikey 管理命令"
|
||||
msgid "manage the command history"
|
||||
msgstr "管理命令历史记录"
|
||||
|
||||
#~ msgid "continuing verification anyway due to option %s\n"
|
||||
#~ msgstr "由于 %s 选项,验证仍在继续中\n"
|
||||
|
||||
#~ msgid "selected AEAD algorithm is invalid\n"
|
||||
#~ msgstr "所选择的 AEAD 算法无效\n"
|
||||
|
||||
|
71
po/zh_TW.po
71
po/zh_TW.po
@ -138,6 +138,11 @@ msgstr "密語:"
|
||||
msgid "does not match - try again"
|
||||
msgstr "前後不一致 - 請再試一次"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Passphrase"
|
||||
msgid "Passphrases match."
|
||||
msgstr "密語"
|
||||
|
||||
#. TRANSLATORS: The string is appended to an error message in
|
||||
#. the pinentry. The %s is the actual error message, the
|
||||
#. two %d give the current and maximum number of tries.
|
||||
@ -1220,6 +1225,14 @@ msgstr "正在等候 `%s' 鎖定...\n"
|
||||
msgid "%s is too old (need %s, have %s)\n"
|
||||
msgstr "%s 太舊了 (需要 %s, 但是祇有 %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "建立 '%s' 時出錯: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "關閉 '%s' 時出錯: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "armor: %s\n"
|
||||
msgstr "封裝: %s\n"
|
||||
@ -1433,6 +1446,10 @@ msgstr "不強迫使用"
|
||||
msgid "forced"
|
||||
msgstr "強迫使用"
|
||||
|
||||
#, c-format
|
||||
msgid "Please try command \"%s\" if the listing does not look correct\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error: Only plain ASCII is currently allowed.\n"
|
||||
msgstr "錯誤: 目前祇允許使用單純的 ASCII 字符.\n"
|
||||
|
||||
@ -1721,6 +1738,9 @@ msgstr "更改主觀信任"
|
||||
msgid "change the User Interaction Flag"
|
||||
msgstr "更改主觀信任"
|
||||
|
||||
msgid "switch to the OpenPGP app"
|
||||
msgstr ""
|
||||
|
||||
msgid "gpg/card> "
|
||||
msgstr "gpg/卡片> "
|
||||
|
||||
@ -1954,10 +1974,6 @@ msgstr "金鑰 %s: PGP 2.x 型態的金鑰 - 已跳過\n"
|
||||
msgid "WARNING: nothing exported\n"
|
||||
msgstr "警告: 沒有匯出任何東西\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error creating '%s': %s\n"
|
||||
msgstr "建立 '%s' 時出錯: %s\n"
|
||||
|
||||
msgid "[User ID not found]"
|
||||
msgstr "[找不到使用者 ID]"
|
||||
|
||||
@ -2389,6 +2405,11 @@ msgstr "列出金鑰時顯示已撤銷或過期的使用者 ID"
|
||||
msgid "show revoked and expired subkeys in key listings"
|
||||
msgstr "列出金鑰時顯示已撤銷或過期的子鑰"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "show expiration dates during signature listings"
|
||||
msgid "show signatures with invalid algorithms during signature listings"
|
||||
msgstr "列出簽章時顯示有效期限"
|
||||
|
||||
msgid "show the keyring name in key listings"
|
||||
msgstr "在金鑰清單中顯示鑰匙圈名稱"
|
||||
|
||||
@ -3019,6 +3040,10 @@ msgstr "金鑰 %s: 私鑰已存在\n"
|
||||
msgid "key %s: error sending to agent: %s\n"
|
||||
msgstr "金鑰 %s: 送至代理程式時出錯: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "key %s: card reference is overridden by key material\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATORS: For a smartcard, each private key on host has a
|
||||
#. * reference (stub) to a smartcard and actual private key data
|
||||
#. * is stored on the card. A single smartcard can have up to
|
||||
@ -3526,6 +3551,11 @@ msgstr "刪除所選的子鑰"
|
||||
msgid "add a revocation key"
|
||||
msgstr "增加撤銷金鑰"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid "Data decryption succeeded"
|
||||
msgid "add an additional decryption subkey"
|
||||
msgstr "資料已解密成功"
|
||||
|
||||
msgid "delete signatures from the selected user IDs"
|
||||
msgstr "從所選的使用者 ID 中刪除簽章"
|
||||
|
||||
@ -3588,6 +3618,10 @@ msgstr "私鑰可用.\n"
|
||||
msgid "Secret subkeys are available.\n"
|
||||
msgstr "私鑰可用.\n"
|
||||
|
||||
msgid ""
|
||||
"Note: the local copy of the secret key will only be deleted with \"save\".\n"
|
||||
msgstr ""
|
||||
|
||||
msgid "Need the secret key to do this.\n"
|
||||
msgstr "要有私鑰纔能這麼做.\n"
|
||||
|
||||
@ -3696,6 +3730,11 @@ msgstr "要儲存變更嗎? (y/N) "
|
||||
msgid "Quit without saving? (y/N) "
|
||||
msgstr "要不儲存就離開嗎? (y/N) "
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "deleting secret %s failed: %s\n"
|
||||
msgid "deleting copy of secret key failed: %s\n"
|
||||
msgstr "刪除私鑰 %s 時失敗: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Key not changed so no update needed.\n"
|
||||
msgstr "金鑰沒有變更所以不需要更新.\n"
|
||||
@ -3940,6 +3979,19 @@ msgid ""
|
||||
"Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
msgstr "你確定要指派這把金鑰為指定撤銷者嗎? (y/N) "
|
||||
|
||||
msgid "Enter the fingerprint of the additional decryption subkey: "
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "(unless you specify the key by fingerprint)\n"
|
||||
msgid "Did you specify the fingerprint of a subkey?\n"
|
||||
msgstr "(除非你用指紋指定了金鑰)\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Subkey %s is already revoked.\n"
|
||||
msgid "key \"%s\" is already on this keyblock\n"
|
||||
msgstr "子鑰 %s 已撤銷.\n"
|
||||
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Are you sure you want to appoint this key as a designated revoker? (y/N) "
|
||||
@ -5729,10 +5781,6 @@ msgstr "%s 金鑰 %s 需要 %zu 位元以上的雜湊 (雜湊為 %s)\n"
|
||||
msgid "key %s may not be used for signing in %s mode\n"
|
||||
msgstr "你不能夠將 %s 用於 %s 模式中\n"
|
||||
|
||||
#, c-format
|
||||
msgid "continuing verification anyway due to option %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "WARNING: signature digest conflict in message\n"
|
||||
msgstr "警告: 簽章摘要與訊息不一致\n"
|
||||
@ -7823,10 +7871,6 @@ msgstr "請檢查其原因並手動刪除該檔案\n"
|
||||
msgid "failed to create temporary cache dir file '%s': %s\n"
|
||||
msgstr "建立暫存快取目錄檔案 '%s' 失敗: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error closing '%s': %s\n"
|
||||
msgstr "關閉 '%s' 時出錯: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "can't hash '%s': %s\n"
|
||||
msgstr "無法計算 '%s' 的雜湊: %s\n"
|
||||
@ -9807,9 +9851,6 @@ msgstr ""
|
||||
#~ msgid "toggle between the secret and public key listings"
|
||||
#~ msgstr "在私鑰清單和公鑰清單間切換"
|
||||
|
||||
#~ msgid "Passphrase"
|
||||
#~ msgstr "密語"
|
||||
|
||||
#~ msgid "use temporary files to pass data to keyserver helpers"
|
||||
#~ msgstr "用暫存檔來將資料遞送給金鑰伺服器協助程式"
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -778,7 +778,7 @@ static int regatom(regex_t *preg, int *flagp)
|
||||
preg->err = REG_ERR_NULL_CHAR;
|
||||
return 0;
|
||||
}
|
||||
if (start == '\\' && *pattern == 0) {
|
||||
if (end == '\\' && *pattern == 0) {
|
||||
preg->err = REG_ERR_INVALID_ESCAPE;
|
||||
return 0;
|
||||
}
|
||||
@ -796,6 +796,10 @@ static int regatom(regex_t *preg, int *flagp)
|
||||
for (cc = 0; cc < CC_NUM; cc++) {
|
||||
n = strlen(character_class[cc]);
|
||||
if (strncmp(pattern, character_class[cc], n) == 0) {
|
||||
if (pattern[n] != ']') {
|
||||
preg->err = REG_ERR_UNMATCHED_BRACKET;
|
||||
return 0;
|
||||
}
|
||||
/* Found a character class */
|
||||
pattern += n + 1;
|
||||
break;
|
||||
@ -1507,7 +1511,7 @@ static int regmatch(regex_t *preg, int prog)
|
||||
/* Can't match at BOL */
|
||||
if (preg->reginput > preg->regbol) {
|
||||
/* Current must be EOL or nonword */
|
||||
if (reg_iseol(preg, c) || !isalnum(UCHAR(c)) || c != '_') {
|
||||
if (reg_iseol(preg, c) || !(isalnum(UCHAR(c)) || c == '_')) {
|
||||
c = preg->reginput[-1];
|
||||
/* Previous must be word */
|
||||
if (isalnum(UCHAR(c)) || c == '_') {
|
||||
|
@ -3260,7 +3260,7 @@ apdu_send_simple (int slot, int extended_mode,
|
||||
* Out of historical reasons the function returns 0 on success and
|
||||
* outs the status word at the end of the result to be able to get the
|
||||
* status word in the case of a not provided RETBUF, R_SW can be used
|
||||
* to store the SW. But note that R_SW qill only be set if the
|
||||
* to store the SW. But note that R_SW will only be set if the
|
||||
* function returns 0. */
|
||||
int
|
||||
apdu_send_direct (int slot, size_t extended_length,
|
||||
|
@ -119,6 +119,7 @@ struct card_ctx_s {
|
||||
/* Various flags. */
|
||||
unsigned int reset_requested:1;
|
||||
unsigned int periodical_check_needed:1;
|
||||
unsigned int maybe_check_aid:1;
|
||||
};
|
||||
|
||||
|
||||
|
@ -869,10 +869,12 @@ parse_login_data (app_t app)
|
||||
|
||||
#define MAX_ARGS_STORE_FPR 3
|
||||
|
||||
/* Note, that FPR must be at least 20 bytes. */
|
||||
/* Note, that FPR must be at least 20 bytes. If UPDATE is not set,
|
||||
* the fingerprint and the creation date is not actually stored but
|
||||
* the fingerprint is only returned in FPR. */
|
||||
static gpg_error_t
|
||||
store_fpr (app_t app, int keynumber, u32 timestamp, unsigned char *fpr,
|
||||
int algo, ...)
|
||||
store_fpr (app_t app, int update, int keynumber, u32 timestamp,
|
||||
unsigned char *fpr, int algo, ...)
|
||||
{
|
||||
unsigned int n, nbits;
|
||||
unsigned char *buffer, *p;
|
||||
@ -937,6 +939,9 @@ store_fpr (app_t app, int keynumber, u32 timestamp, unsigned char *fpr,
|
||||
|
||||
xfree (buffer);
|
||||
|
||||
if (!update)
|
||||
return 0;
|
||||
|
||||
tag = (app->appversion > 0x0007? 0xC7 : 0xC6) + keynumber;
|
||||
flush_cache_item (app, 0xC5);
|
||||
tag2 = 0xCE + keynumber;
|
||||
@ -1605,7 +1610,8 @@ retrieve_key_material (FILE *fp, const char *hexkeyid,
|
||||
|
||||
|
||||
static gpg_error_t
|
||||
rsa_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
|
||||
rsa_read_pubkey (app_t app, ctrl_t ctrl, int meta_update,
|
||||
u32 created_at, int keyno,
|
||||
const unsigned char *data, size_t datalen, gcry_sexp_t *r_sexp)
|
||||
{
|
||||
gpg_error_t err;
|
||||
@ -1642,7 +1648,11 @@ rsa_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
|
||||
{
|
||||
unsigned char fprbuf[20];
|
||||
|
||||
err = store_fpr (app, keyno, created_at, fprbuf, PUBKEY_ALGO_RSA,
|
||||
/* If META_UPDATE is not set we only compute but not store the
|
||||
* fingerprint. This might return a wrong fingerprint if
|
||||
* CREATED_AT is not set. */
|
||||
err = store_fpr (app, meta_update, keyno,
|
||||
created_at, fprbuf, PUBKEY_ALGO_RSA,
|
||||
m, mlen, e, elen);
|
||||
if (err)
|
||||
return err;
|
||||
@ -1714,7 +1724,8 @@ ecdh_params (const char *curve)
|
||||
}
|
||||
|
||||
static gpg_error_t
|
||||
ecc_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
|
||||
ecc_read_pubkey (app_t app, ctrl_t ctrl, int meta_update,
|
||||
u32 created_at, int keyno,
|
||||
const unsigned char *data, size_t datalen, gcry_sexp_t *r_sexp)
|
||||
{
|
||||
gpg_error_t err;
|
||||
@ -1783,7 +1794,12 @@ ecc_read_pubkey (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
|
||||
{
|
||||
unsigned char fprbuf[20];
|
||||
|
||||
err = store_fpr (app, keyno, created_at, fprbuf, algo, oidbuf, oid_len,
|
||||
/* If META_UPDATE is not set we only compute but not store the
|
||||
* fingerprint. This might return a wrong fingerprint if
|
||||
* CREATED_AT is not set or the ECDH params do not match the
|
||||
* current defaults. */
|
||||
err = store_fpr (app, meta_update, keyno,
|
||||
created_at, fprbuf, algo, oidbuf, oid_len,
|
||||
qbuf, ecc_q_len, ecdh_params (curve), (size_t)4);
|
||||
if (err)
|
||||
goto leave;
|
||||
@ -1826,13 +1842,15 @@ store_keygrip (app_t app, int keyno)
|
||||
|
||||
|
||||
/* Parse tag-length-value data for public key in BUFFER of BUFLEN
|
||||
length. Key of KEYNO in APP is updated with an S-expression of
|
||||
public key. When CTRL is not NULL, fingerprint is computed with
|
||||
CREATED_AT, and fingerprint is written to the card, and key data
|
||||
and fingerprint are send back to the client side.
|
||||
* length. Key of KEYNO in APP is updated with an S-expression of
|
||||
* public key. If CTRL is not NULL, the fingerprint is computed with
|
||||
* CREATED_AT and key data and fingerprint are send back to the client
|
||||
* side. If also META_UPDATE is true the fingerprint and the creation
|
||||
* date are also written to the card.
|
||||
*/
|
||||
static gpg_error_t
|
||||
read_public_key (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
|
||||
read_public_key (app_t app, ctrl_t ctrl, int meta_update,
|
||||
u32 created_at, int keyno,
|
||||
const unsigned char *buffer, size_t buflen)
|
||||
{
|
||||
gpg_error_t err;
|
||||
@ -1848,10 +1866,10 @@ read_public_key (app_t app, ctrl_t ctrl, u32 created_at, int keyno,
|
||||
}
|
||||
|
||||
if (app->app_local->keyattr[keyno].key_type == KEY_TYPE_RSA)
|
||||
err = rsa_read_pubkey (app, ctrl, created_at, keyno,
|
||||
err = rsa_read_pubkey (app, ctrl, meta_update, created_at, keyno,
|
||||
data, datalen, &s_pkey);
|
||||
else if (app->app_local->keyattr[keyno].key_type == KEY_TYPE_ECC)
|
||||
err = ecc_read_pubkey (app, ctrl, created_at, keyno,
|
||||
err = ecc_read_pubkey (app, ctrl, meta_update, created_at, keyno,
|
||||
data, datalen, &s_pkey);
|
||||
else
|
||||
err = gpg_error (GPG_ERR_NOT_IMPLEMENTED);
|
||||
@ -1947,14 +1965,19 @@ get_public_key (app_t app, int keyno)
|
||||
/* Yubikey returns wrong code. Fix it up. */
|
||||
if (APP_CARD(app)->cardtype == CARDTYPE_YUBIKEY)
|
||||
err = gpg_error (GPG_ERR_NO_OBJ);
|
||||
/* Yubikey NEO (!CARDTYPE_YUBIKEY) also returns wrong code. Fix it up. */
|
||||
/* Yubikey NEO (!CARDTYPE_YUBIKEY) also returns wrong code.
|
||||
* Fix it up. */
|
||||
else if (gpg_err_code (err) == GPG_ERR_CARD)
|
||||
err = gpg_error (GPG_ERR_NO_OBJ);
|
||||
log_error (_("reading public key failed: %s\n"), gpg_strerror (err));
|
||||
goto leave;
|
||||
}
|
||||
|
||||
err = read_public_key (app, NULL, 0U, keyno, buffer, buflen);
|
||||
/* Note that we use 0 for the creation date and thus the - via
|
||||
* status lines - returned fingerprint will only be valid if the
|
||||
* key has also been created with that date. A similar problem
|
||||
* occurs with the ECDH params which are fixed in the code. */
|
||||
err = read_public_key (app, NULL, 0, 0U, keyno, buffer, buflen);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -4520,7 +4543,7 @@ rsa_writekey (app_t app, ctrl_t ctrl,
|
||||
goto leave;
|
||||
}
|
||||
|
||||
err = store_fpr (app, keyno, created_at, fprbuf, PUBKEY_ALGO_RSA,
|
||||
err = store_fpr (app, 1, keyno, created_at, fprbuf, PUBKEY_ALGO_RSA,
|
||||
rsa_n, rsa_n_len, rsa_e, rsa_e_len);
|
||||
if (err)
|
||||
goto leave;
|
||||
@ -4545,6 +4568,8 @@ ecc_writekey (app_t app, ctrl_t ctrl,
|
||||
const unsigned char *ecc_q = NULL;
|
||||
const unsigned char *ecc_d = NULL;
|
||||
size_t ecc_q_len, ecc_d_len;
|
||||
const unsigned char *ecdh_param = NULL;
|
||||
size_t ecdh_param_len = 0;
|
||||
const char *curve = NULL;
|
||||
u32 created_at = 0;
|
||||
const char *oidstr;
|
||||
@ -4557,7 +4582,7 @@ ecc_writekey (app_t app, ctrl_t ctrl,
|
||||
unsigned char fprbuf[20];
|
||||
size_t ecc_d_fixed_len;
|
||||
|
||||
/* (private-key(ecc(curve%s)(q%m)(d%m))(created-at%d)):
|
||||
/* (private-key(ecc(curve%s)(q%m)(d%m))(created-at%d)(ecdh-params%s)):
|
||||
curve = "NIST P-256" */
|
||||
/* (private-key(ecc(curve%s)(q%m)(d%m))(created-at%d)):
|
||||
curve = "secp256k1" */
|
||||
@ -4652,6 +4677,7 @@ ecc_writekey (app_t app, ctrl_t ctrl,
|
||||
}
|
||||
if ((err = parse_sexp (&buf, &buflen, &depth, &tok, &toklen)))
|
||||
goto leave;
|
||||
|
||||
if (tok && toklen == 10 && !memcmp ("created-at", tok, toklen))
|
||||
{
|
||||
if ((err = parse_sexp (&buf,&buflen,&depth,&tok,&toklen)))
|
||||
@ -4663,6 +4689,17 @@ ecc_writekey (app_t app, ctrl_t ctrl,
|
||||
created_at = created_at*10 + (*tok - '0');
|
||||
}
|
||||
}
|
||||
else if (tok && toklen == 11 && !memcmp ("ecdh-params", tok, toklen))
|
||||
{
|
||||
if ((err = parse_sexp (&buf,&buflen,&depth,&tok,&toklen)))
|
||||
goto leave;
|
||||
if (tok)
|
||||
{
|
||||
ecdh_param = tok;
|
||||
ecdh_param_len = toklen;
|
||||
}
|
||||
}
|
||||
|
||||
/* Skip until end of list. */
|
||||
last_depth2 = depth;
|
||||
while (!(err = parse_sexp (&buf, &buflen, &depth, &tok, &toklen))
|
||||
@ -4694,6 +4731,13 @@ ecc_writekey (app_t app, ctrl_t ctrl,
|
||||
else
|
||||
algo = PUBKEY_ALGO_ECDSA;
|
||||
|
||||
if (algo == PUBKEY_ALGO_ECDH && !ecdh_param)
|
||||
{
|
||||
log_error ("opgp: ecdh parameters missing\n");
|
||||
err = gpg_error (GPG_ERR_INV_VALUE);
|
||||
goto leave;
|
||||
}
|
||||
|
||||
oidstr = openpgp_curve_to_oid (curve, &n, NULL);
|
||||
ecc_d_fixed_len = (n+7)/8;
|
||||
err = openpgp_oid_from_str (oidstr, &oid);
|
||||
@ -4795,8 +4839,8 @@ ecc_writekey (app_t app, ctrl_t ctrl,
|
||||
goto leave;
|
||||
}
|
||||
|
||||
err = store_fpr (app, keyno, created_at, fprbuf, algo, oidbuf, oid_len,
|
||||
ecc_q, ecc_q_len, ecdh_params (curve), (size_t)4);
|
||||
err = store_fpr (app, 1, keyno, created_at, fprbuf, algo, oidbuf, oid_len,
|
||||
ecc_q, ecc_q_len, ecdh_param, ecdh_param_len);
|
||||
|
||||
leave:
|
||||
gcry_mpi_release (oid);
|
||||
@ -5024,7 +5068,7 @@ do_genkey (app_t app, ctrl_t ctrl, const char *keyref, const char *keyalgo,
|
||||
send_status_info (ctrl, "KEY-CREATED-AT",
|
||||
numbuf, (size_t)strlen(numbuf), NULL, 0);
|
||||
|
||||
err = read_public_key (app, ctrl, created_at, keyno, buffer, buflen);
|
||||
err = read_public_key (app, ctrl, 1, created_at, keyno, buffer, buflen);
|
||||
leave:
|
||||
xfree (buffer);
|
||||
return err;
|
||||
|
@ -5211,6 +5211,7 @@ verify_pin (app_t app,
|
||||
const char *errstr;
|
||||
const char *s;
|
||||
int remaining;
|
||||
unsigned int min_length;
|
||||
int pin_reference;
|
||||
int verified = 0;
|
||||
int i;
|
||||
@ -5277,12 +5278,16 @@ verify_pin (app_t app,
|
||||
}
|
||||
|
||||
/* We might need to cope with UTF8 things here. Not sure how
|
||||
min_length etc. are exactly defined, for now we take them as
|
||||
a plain octet count. */
|
||||
if (strlen (pinvalue) < aodf->min_length)
|
||||
min_length etc. are exactly defined, for now we take them as a
|
||||
plain octet count. For RSCS we enforce 6 despite that some cards
|
||||
give 4 has min. length. */
|
||||
min_length = aodf->min_length;
|
||||
if (app->app_local->card_product == CARD_PRODUCT_RSCS && min_length < 6)
|
||||
min_length = 6;
|
||||
|
||||
if (strlen (pinvalue) < min_length)
|
||||
{
|
||||
log_error ("p15: PIN is too short; minimum length is %lu\n",
|
||||
aodf->min_length);
|
||||
log_error ("p15: PIN is too short; minimum length is %u\n", min_length);
|
||||
err = gpg_error (GPG_ERR_BAD_PIN);
|
||||
}
|
||||
else if (aodf->stored_length && strlen (pinvalue) > aodf->stored_length)
|
||||
|
22
scd/app.c
22
scd/app.c
@ -1606,9 +1606,13 @@ check_external_interference (app_t app, ctrl_t ctrl)
|
||||
/*
|
||||
* Only when a user is using Yubikey with pcsc-shared configuration,
|
||||
* we need this detection. Otherwise, the card/token is under full
|
||||
* control of scdaemon, there's no problem at all.
|
||||
* control of scdaemon, there's no problem at all. However, if the
|
||||
* APDU command has been used we better also check whether the AID
|
||||
* is still valid.
|
||||
*/
|
||||
if (!opt.pcsc_shared || app->card->cardtype != CARDTYPE_YUBIKEY)
|
||||
if (app && app->card && app->card->maybe_check_aid)
|
||||
app->card->maybe_check_aid = 0;
|
||||
else if (!opt.pcsc_shared || app->card->cardtype != CARDTYPE_YUBIKEY)
|
||||
return 0;
|
||||
|
||||
if (app->fnc.check_aid)
|
||||
@ -1646,6 +1650,20 @@ maybe_switch_app (ctrl_t ctrl, card_t card, const char *keyref)
|
||||
|
||||
if (!card->app)
|
||||
return gpg_error (GPG_ERR_CARD_NOT_INITIALIZED);
|
||||
|
||||
if (card->maybe_check_aid && card->app->fnc.reselect
|
||||
&& check_external_interference (card->app, ctrl))
|
||||
{
|
||||
if (DBG_APP)
|
||||
log_debug ("slot %d, app %s: forced re-select due to direct APDU use\n",
|
||||
card->slot, xstrapptype (card->app));
|
||||
err = card->app->fnc.reselect (card->app, ctrl);
|
||||
if (err)
|
||||
log_error ("slot %d, app %s: forced re-select failed: %s - ignored\n",
|
||||
card->slot, xstrapptype (card->app), gpg_strerror (err));
|
||||
err = 0;
|
||||
}
|
||||
|
||||
if (!ctrl->current_apptype)
|
||||
{
|
||||
/* For whatever reasons the current apptype has not been set -
|
||||
|
@ -2195,11 +2195,15 @@ cmd_apdu (assuan_context_t ctx, char *line)
|
||||
unsigned char *result = NULL;
|
||||
size_t resultlen;
|
||||
|
||||
card->maybe_check_aid = 1;
|
||||
rc = apdu_send_direct (card->slot, exlen,
|
||||
apdu, apdulen, handle_more,
|
||||
NULL, &result, &resultlen);
|
||||
if (rc)
|
||||
log_error ("apdu_send_direct failed: %s\n", gpg_strerror (rc));
|
||||
{
|
||||
log_error ("apdu_send_direct failed: %s\n", apdu_strerror (rc));
|
||||
rc = iso7816_map_sw (rc);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = assuan_send_data (ctx, result, resultlen);
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include "../common/openpgpdefs.h"
|
||||
#include "../common/init.h"
|
||||
#include "../common/strlist.h"
|
||||
#include "../common/comopt.h"
|
||||
|
||||
#include "gpgtar.h"
|
||||
|
||||
@ -89,6 +90,7 @@ enum cmd_and_opt_values
|
||||
oTarProgram,
|
||||
|
||||
/* Debugging. */
|
||||
oDebug,
|
||||
oDryRun
|
||||
};
|
||||
|
||||
@ -145,6 +147,8 @@ static gpgrt_opt_t opts[] = {
|
||||
ARGPARSE_s_s (oTarArgs, "tar-args", "@"),
|
||||
ARGPARSE_s_s (oTarProgram, "tar", "@"),
|
||||
|
||||
ARGPARSE_s_s (oDebug, "debug", "@"),
|
||||
|
||||
ARGPARSE_end ()
|
||||
};
|
||||
|
||||
@ -166,7 +170,7 @@ static enum cmd_and_opt_values cmd = 0;
|
||||
static int skip_crypto = 0;
|
||||
static const char *files_from = NULL;
|
||||
static int null_names = 0;
|
||||
|
||||
static int any_debug;
|
||||
|
||||
|
||||
|
||||
@ -438,6 +442,10 @@ parse_arguments (gpgrt_argparse_t *pargs, gpgrt_opt_t *popts)
|
||||
}
|
||||
break;
|
||||
|
||||
case oDebug:
|
||||
any_debug = 1;
|
||||
break;
|
||||
|
||||
case oDryRun:
|
||||
opt.dry_run = 1;
|
||||
break;
|
||||
@ -471,6 +479,10 @@ main (int argc, char **argv)
|
||||
/* Set default options */
|
||||
opt.status_fd = -1;
|
||||
|
||||
/* The configuraton directories for use by gpgrt_argparser. */
|
||||
gpgrt_set_confdir (GPGRT_CONFDIR_SYS, gnupg_sysconfdir ());
|
||||
gpgrt_set_confdir (GPGRT_CONFDIR_USER, gnupg_homedir ());
|
||||
|
||||
/* Parse the command line. */
|
||||
pargs.argc = &argc;
|
||||
pargs.argv = &argv;
|
||||
@ -481,6 +493,10 @@ main (int argc, char **argv)
|
||||
if (log_get_errorcount (0))
|
||||
exit (2);
|
||||
|
||||
/* Get a log file from common.conf. */
|
||||
if (!parse_comopt (GNUPG_MODULE_NAME_GPGTAR, any_debug) && comopt.logfile)
|
||||
log_set_file (comopt.logfile);
|
||||
|
||||
/* Print a warning if an argument looks like an option. */
|
||||
if (!opt.quiet && !(pargs.flags & ARGPARSE_FLAG_STOP_SEEN))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user