From 2c1297055041b4657ea1a927acac978c2b09a483 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 18 Apr 2023 09:53:24 +0900 Subject: gpg: Allow overridden key import when stub exists. * g10/import.c (do_transfer): Force importing when it's card reference. -- GnuPG-bug-id: 3456 Signed-off-by: NIIBE Yutaka --- g10/import.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/g10/import.c b/g10/import.c index 1ed40a63c..7b46d8941 100644 --- a/g10/import.c +++ b/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) + { + 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 -- cgit v1.2.3 From ba67fea5b9bb093f446dbd1ed2f88248d269d495 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 18 Apr 2023 08:04:05 +0200 Subject: gpgtar: Read common.conf for the log-file option. * common/util.h (GNUPG_MODULE_NAME_GPGTAR): New. * common/homedir.c (gnupg_module_name): Add it. * tools/gpgtar.c: Include comopt.h. (enum cmd_and_opt_values): Add oDebug. (opts): Add --debug. (any_debug): New. (main): Parse common.conf. -- Having a way to see the output of gpgtar is often useful for debugging. The only effect of the debug option is to show whether common.conf was read. --- common/homedir.c | 3 +++ common/util.h | 1 + tools/gpgtar.c | 18 +++++++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/common/homedir.c b/common/homedir.c index 091964fc1..66e79e35c 100644 --- a/common/homedir.c +++ b/common/homedir.c @@ -1657,6 +1657,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 (); } diff --git a/common/util.h b/common/util.h index d80e4fb25..aa24e39e6 100644 --- a/common/util.h +++ b/common/util.h @@ -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); diff --git a/tools/gpgtar.c b/tools/gpgtar.c index 64e5306b2..b2ccc9f8a 100644 --- a/tools/gpgtar.c +++ b/tools/gpgtar.c @@ -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)) { -- cgit v1.2.3 From 98b8c518fa0be65bac90e2d47388d0914f98c50f Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 18 Apr 2023 09:04:27 +0200 Subject: ssh: Allow to prefer on-disk keys over active card keys. * agent/command-ssh.c (ssh_send_available_keys): Redefine the order of keys. -- GnuPG-bug-id: 6212 --- NEWS | 5 +++++ agent/command-ssh.c | 18 +++++++++++++----- agent/keyformat.txt | 8 +++++++- doc/gpg-agent.texi | 37 ++++++++++++++++++++++++++++++++++++- 4 files changed, 61 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index 894743db5..bbf2ad253 100644 --- a/NEWS +++ b/NEWS @@ -25,10 +25,15 @@ Noteworthy changes in version 2.4.1 (unreleased) * 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] + * gpg: Make list-options "show-sig-subpackets" work again. Fixes regression in 2.4.0. [rG5a223303d7] + Release-info: https://dev.gnupg.org/T6454 + Noteworthy changes in version 2.4.0 (2022-12-16) ------------------------------------------------ diff --git a/agent/command-ssh.c b/agent/command-ssh.c index b41177be6..51111a60d 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -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) { diff --git a/agent/keyformat.txt b/agent/keyformat.txt index bbcaa7e2c..fbe999ca1 100644 --- a/agent/keyformat.txt +++ b/agent/keyformat.txt @@ -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 diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index c8080c7c2..902de56f4 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -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 -- cgit v1.2.3 From f7e00dc73dd0a71e21a30e2b4393a6865ef05718 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 18 Apr 2023 12:04:15 +0200 Subject: scd: On a Yubikey re-select the last app after the use of APDU. * scd/app-common.h (struct card_ctx_s): Add maybe_check_aid flag. * scd/command.c (cmd_apdu): Set it. * scd/app.c (check_external_interference): Consult this flag. (maybe_switch_app): Do a re-select if this flag is set. -- After the gpg-card tool has issued a Yubikey specific command the current application is not anymore correctly selected. This then results in all kind of errors. We detect this now and try to re-select the last app. --- scd/app-common.h | 1 + scd/app.c | 22 ++++++++++++++++++++-- scd/command.c | 1 + 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/scd/app-common.h b/scd/app-common.h index 2eeffbe95..988cddf3f 100644 --- a/scd/app-common.h +++ b/scd/app-common.h @@ -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; }; diff --git a/scd/app.c b/scd/app.c index aeb773a67..3686c0f6c 100644 --- a/scd/app.c +++ b/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 - diff --git a/scd/command.c b/scd/command.c index 0f0c6c9df..635bb350e 100644 --- a/scd/command.c +++ b/scd/command.c @@ -2195,6 +2195,7 @@ 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); -- cgit v1.2.3 From fa4f716917e545a98e7c22469c51e980aa79443d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 18 Apr 2023 17:04:58 +0200 Subject: gpg: Make sure that we are not accidently working with the PIV app. * g10/call-agent.c (agent_scd_switchapp): New. * g10/card-util.c (get_info_for_key_operation): Call it. -- It may happen that the active card was last used for PIV and in that case certain commands will fail because they assume the OpenPGP app. Fortunately we have a pretty central place to assure that the right app has been selected. The bug can be easily noticed on Windows. GnuPG-bug-id: 6378 --- NEWS | 2 ++ g10/call-agent.c | 24 ++++++++++++++++++++++++ g10/call-agent.h | 3 +++ g10/card-util.c | 1 + 4 files changed, 30 insertions(+) diff --git a/NEWS b/NEWS index bbf2ad253..7f6b5689f 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,8 @@ Noteworthy changes in version 2.4.1 (unreleased) * gpg: Make list-options "show-sig-subpackets" work again. Fixes regression in 2.4.0. [rG5a223303d7] + * gpg: Fix the keytocard command for Yubikeys. [T6378] + Release-info: https://dev.gnupg.org/T6454 diff --git a/g10/call-agent.c b/g10/call-agent.c index 66812e998..131f56ae7 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -1700,6 +1700,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; diff --git a/g10/call-agent.h b/g10/call-agent.h index a3f234ade..80595cacc 100644 --- a/g10/call-agent.h +++ b/g10/call-agent.h @@ -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); diff --git a/g10/card-util.c b/g10/card-util.c index 6451b31e7..d8f1b960a 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1289,6 +1289,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 ) -- cgit v1.2.3 From 80d4ae12156530d643e7d685c286df32f71b7285 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 19 Apr 2023 11:05:42 +0200 Subject: Use keyboxd on a fresh install also on Windows. * common/homedir.c (gnupg_maybe_make_homedir): Factor some code out to ... (create_common_conf): new. (standard_homedir): Call it also from here. -- Fixes-commit: d9e7488b17fdc617eec735e2c0485b69285ba511 --- common/homedir.c | 72 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/common/homedir.c b/common/homedir.c index 66e79e35c..286685feb 100644 --- a/common/homedir.c +++ b/common/homedir.c @@ -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); } } } -- cgit v1.2.3 From e1663c045049d801493a26ab2e3512209e448610 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 20 Apr 2023 12:10:54 +0200 Subject: gpg: New command "openpgp" for --card-edit. * g10/card-util.c (current_card_status): Print a hint for fishy outputs. (enum cmdids): Add cmdOPENPGP. (cmds): Add "openpgp". (card_edit): Implement that command. -- If a Yubikey has been used in PIV mode the initial listing does not look correct. Although we explicitly switch to the OpenPGP app when needed, we don't want to do this in listing mode. Instead we offer a new command "openpgp" to force the openpgp mode. The ultimate goal will be to enhance the gpg-card tool to completely take over the --card-edit features. But we are not yet there. GnuPG-bug-id: 6462 --- doc/gpg.texi | 11 +++++++---- g10/card-util.c | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/doc/gpg.texi b/doc/gpg.texi index eb7c35cac..9fdabc743 100644 --- a/doc/gpg.texi +++ b/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 diff --git a/g10/card-util.c b/g10/card-util.c index d8f1b960a..a3297fb71 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -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); @@ -2243,7 +2251,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 }; @@ -2281,6 +2289,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 }, @@ -2580,6 +2589,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; -- cgit v1.2.3 From a82e6f310a034a28c51dfdf6f21fcd5f037d33c5 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 20 Apr 2023 12:26:40 +0200 Subject: common: Fix minor bug in the jimregexp code. * regexp/jimregexp.c (regatom): Make error checking for stray backslash at end of the string work. Check that the pattern class is closed by a bracket. -- GnuPG-bug-id: 6455 Co-authored-by: Guldrelokk --- regexp/jimregexp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/regexp/jimregexp.c b/regexp/jimregexp.c index 7fd6d473e..91be38f22 100644 --- a/regexp/jimregexp.c +++ b/regexp/jimregexp.c @@ -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; } @@ -795,7 +795,8 @@ 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 (!strncmp(pattern, character_class[cc], n) + && pattern[n] == ']') { /* Found a character class */ pattern += n + 1; break; -- cgit v1.2.3 From af3724d3831564218ea23543dd8cea40089409dd Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 20 Apr 2023 12:40:11 +0200 Subject: scd,p15: Enforce a min. PIN length for certain cards. * scd/app-p15.c (verify_pin): Enforce 6 for RSCS cards. --- scd/app-p15.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/scd/app-p15.c b/scd/app-p15.c index 29241af6b..92628b926 100644 --- a/scd/app-p15.c +++ b/scd/app-p15.c @@ -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) -- cgit v1.2.3 From 762b7d07eaa82d7f20a6778726e589c809fbe58e Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 21 Apr 2023 11:51:47 +0900 Subject: common: Incorporate upstream changes of regexp. * regexp/jimregexp.c (regatom): Raise REG_ERR_UNMATCHED_BRACKET when no matching end bracket. (regmatch): Fix the end of word check. -- Original changes: Signed-off-by: Steve Bennett GnuPG-bug-id: 6455 Signed-off-by: NIIBE Yutaka --- regexp/jimregexp.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/regexp/jimregexp.c b/regexp/jimregexp.c index 91be38f22..d80eabd8e 100644 --- a/regexp/jimregexp.c +++ b/regexp/jimregexp.c @@ -795,8 +795,11 @@ 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) - && pattern[n] == ']') { + 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; @@ -1508,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 == '_') { -- cgit v1.2.3 From c03ba92576e34f791430ab1c68814ff16c81407b Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 21 Apr 2023 14:04:04 +0200 Subject: gpg: Fix writing ECDH keys to OpenPGP smartcards. * agent/command.c (cmd_keytocard): Add new arg for ECDH params. * scd/app-openpgp.c (ecc_writekey): Use provided ECDH params to compute the fingerprint. * g10/call-agent.c (agent_keytocard): Add arg ecdh_param_str. * g10/keyid.c (ecdh_param_str_from_pk): New. * g10/card-util.c (card_store_subkey): Pass ECDH params to writekey. * g10/keygen.c (card_store_key_with_backup): Ditto. * scd/app-openpgp.c (store_fpr): Add arg update. (rsa_read_pubkey, ecc_read_pubkey): Add arg meta_update and avoid writing the fingerprint back to the card if not set. (read_public_key): Also add arg meta_update. (get_public_key): Do not pass it as true here... (do_genkey): ... but here. (rsa_write_key, ecc_writekey): Force string the fingerprint. -- The problem showed up because in 2.4 we changed the standard ECDH parameter some years ago. Now when trying to write an ECDH key created by 2.2 with 2.4 to an openpgp card, scdaemon computes a wrong fingerprint and thus gpg was not able to find the key again by fingerprint. The patch also avoids updating the stored fingerprint in certain situations. This fix is somewhat related to GnuPG-bug-id: 6378 --- agent/command.c | 67 +++++++++++++++++++++++++++++++++++++------ g10/call-agent.c | 8 ++++-- g10/call-agent.h | 3 +- g10/card-util.c | 19 ++++++++++-- g10/keydb.h | 1 + g10/keygen.c | 12 +++++++- g10/keyid.c | 22 ++++++++++++++ scd/app-openpgp.c | 86 +++++++++++++++++++++++++++++++++++++++++-------------- 8 files changed, 181 insertions(+), 37 deletions(-) diff --git a/agent/command.c b/agent/command.c index 9481f47c3..dd7cb5e57 100644 --- a/agent/command.c +++ b/agent/command.c @@ -3175,9 +3175,10 @@ cmd_delete_key (assuan_context_t ctx, char *line) #endif static const char hlp_keytocard[] = - "KEYTOCARD [--force] []\n" + "KEYTOCARD [--force] [ []]\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); diff --git a/g10/call-agent.c b/g10/call-agent.c index 131f56ae7..b0bccc0a5 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -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) diff --git a/g10/call-agent.h b/g10/call-agent.h index 80595cacc..45af95422 100644 --- a/g10/call-agent.h +++ b/g10/call-agent.h @@ -135,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, diff --git a/g10/card-util.c b/g10/card-util.c index a3297fb71..d680c4d0a 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -1805,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 @@ -1880,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 @@ -1890,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; } diff --git a/g10/keydb.h b/g10/keydb.h index 9323e3137..1a66d664e 100644 --- a/g10/keydb.h +++ b/g10/keydb.h @@ -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 --*/ diff --git a/g10/keygen.c b/g10/keygen.c index c97783124..7f54f7da0 100644 --- a/g10/keygen.c +++ b/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); diff --git a/g10/keyid.c b/g10/keyid.c index ca6564c5c..9191fec92 100644 --- a/g10/keyid.c +++ b/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); +} diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index d3f460106..66ec9f4a9 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -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; -- cgit v1.2.3 From 0ec10fbd0d4007997cec59da9a514797bc0531a8 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 25 Apr 2023 13:47:49 +0900 Subject: gpg: Fix for overridden key import. * g10/import.c (do_transfer): Force the overridden key import even when smartcard is available. -- Fixes-commit: 2c1297055041b4657ea1a927acac978c2b09a483 GnuPG-bug-id: 3456 Signed-off-by: NIIBE Yutaka --- g10/import.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/g10/import.c b/g10/import.c index 7b46d8941..5e44942e7 100644 --- a/g10/import.c +++ b/g10/import.c @@ -2958,7 +2958,7 @@ do_transfer (ctrl_t ctrl, kbnode_t keyblock, PKT_public_key *pk, int force = 0; int already_exist = agent_probe_secret_key (ctrl, pk); - if (already_exist == 2) + if (already_exist == 2 || already_exist == 4) { if (!opt.quiet) log_info (_("key %s: card reference is overridden by key material\n"), -- cgit v1.2.3 From c4a456e5ff2aa6263ba05377c230c1d8b5910e01 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 26 Apr 2023 13:37:39 +0900 Subject: po: Update Japanese Translation. -- Signed-off-by: NIIBE Yutaka --- po/ja.po | 82 ++++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 59 insertions(+), 23 deletions(-) diff --git a/po/ja.po b/po/ja.po index fb62f7737..c26de690e 100644 --- a/po/ja.po +++ b/po/ja.po @@ -5,13 +5,13 @@ # Yoshihiro Kajiki , 1999. # Takashi P.KATOH, 2002. # NIIBE Yutaka , 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 \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. @@ -223,8 +226,8 @@ msgid "" "Please enter a passphrase to protect the received secret key%%0A %s%%0A " "%s%%0Awithin gpg-agent's key storage" msgstr "" -"パスフレーズを入力してください。gpg-agentの鍵の保管で受信した秘密鍵%%0A %s" -"%%0A %s%%0Aを保護します。" +"パスフレーズを入力してください。gpg-agentの鍵の保管で受信した秘密鍵%%0A " +"%s%%0A %s%%0Aを保護します。" #, c-format msgid "failed to create stream from socket: %s\n" @@ -756,8 +759,8 @@ msgstr "" #, c-format msgid "" -"Do you really want to delete the key identified by keygrip%%0A %s%%0A %%C" -"%%0A?" +"Do you really want to delete the key identified by keygrip%%0A %s%%0A " +"%%C%%0A?" msgstr "本当にこの鍵: keygrip%%0A %s%%0A %%C%%0Aを削除しますか?" msgid "Delete key" @@ -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,10 @@ msgstr "Yubikey管理コマンド" msgid "manage the command history" msgstr "コマンド履歴を管理する" +#, c-format +#~ msgid "continuing verification anyway due to option %s\n" +#~ msgstr "オプション %sのため、検証を続けます\n" + #~ msgid "selected AEAD algorithm is invalid\n" #~ msgstr "選択されたAEADアルゴリズムは無効です\n" @@ -9499,9 +9538,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 "キーサーバ・ヘルパーにデータを与える際、一時ファイルを使う" -- cgit v1.2.3 From 7359665addda3d47768ed0d64cdb45a65ad2b03d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 24 Apr 2023 18:48:54 +0200 Subject: speedo: Update NSIS helper DLL from Gpg4win * build-aux/speedo/w32/inst.nsi: Re-enable run-once check. * build-aux/speedo/w32/exdll.c: New. * build-aux/speedo.mk (g4wihelp.dll): Change build commands. -- GnuPG-bug-id: 6448 --- Makefile.am | 1 + build-aux/speedo.mk | 10 +- build-aux/speedo/w32/exdll.c | 286 +++++++++++++++++++++++++++ build-aux/speedo/w32/exdll.h | 259 +++++++++++++----------- build-aux/speedo/w32/g4wihelp.c | 426 +++++++++++++++++++++++++++------------- build-aux/speedo/w32/inst.nsi | 3 +- 6 files changed, 724 insertions(+), 261 deletions(-) create mode 100644 build-aux/speedo/w32/exdll.c diff --git a/Makefile.am b/Makefile.am index 6a2508b11..0f2075089 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/build-aux/speedo.mk b/build-aux/speedo.mk index f21f43731..820b0a862 100644 --- a/build-aux/speedo.mk +++ b/build-aux/speedo.mk @@ -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 diff --git a/build-aux/speedo/w32/exdll.c b/build-aux/speedo/w32/exdll.c new file mode 100644 index 000000000..7815523ae --- /dev/null +++ b/build-aux/speedo/w32/exdll.c @@ -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); +} diff --git a/build-aux/speedo/w32/exdll.h b/build-aux/speedo/w32/exdll.h index bb13ae097..f419dc3fe 100644 --- a/build-aux/speedo/w32/exdll.h +++ b/build-aux/speedo/w32/exdll.h @@ -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. - */ - -#ifndef _EXDLL_H_ -#define _EXDLL_H_ - -/* only include this file from one place in your DLL. (it is all - static, if you use it in two places it will fail) */ +#include +#ifndef ___NSIS_PLUGIN__H___ +#define ___NSIS_PLUGIN__H___ + +#ifdef __cplusplus +extern "C" { +#endif + +#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) -{ - 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; -} - -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; -} - -static char * __stdcall -getuservariable(const int varnum) +enum { - if (varnum < 0 || varnum >= __INST_LAST) return NULL; - return g_variables+varnum*g_stringsize; -} +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 +}; -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); +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/*_EXDLL_H_*/ +#endif + +#endif//!___NSIS_PLUGIN__H___ + +#ifndef COUNTOF +#define COUNTOF(a) (sizeof(a)/sizeof(a[0])) +#endif + +// 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) ) + +#define ERRORPRINTF(fmt, ...) \ + { \ + char buf[512]; \ + snprintf(buf, 511, "ERROR: " fmt, ##__VA_ARGS__); \ + buf[511] = '\0'; \ + OutputDebugStringA(buf); \ + } diff --git a/build-aux/speedo/w32/g4wihelp.c b/build-aux/speedo/w32/g4wihelp.c index 626f3f12c..bae4b837c 100644 --- a/build-aux/speedo/w32/g4wihelp.c +++ b/build-aux/speedo/w32/g4wihelp.c @@ -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 #include +#include +#include +#include +#include +#include #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); - - snprintf (buf, sizeof buf, - "autoclose =%d\r\n" + char line[512]; + char *p; + const unsigned char *s = (void*)g_variables; + int i,j; + + 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 /* 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) ); - - if( !result ) - goto leave; - if( RegQueryValueEx( key_handle, name, 0, &type, result, &n1 ) ) { - free(result); result = NULL; + result = calloc ((n1=nbytes+1), sizeof *result); + if (!result) 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); } diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi index 42fa2fb58..665c65b02 100644 --- a/build-aux/speedo/w32/inst.nsi +++ b/build-aux/speedo/w32/inst.nsi @@ -1462,8 +1462,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 -- cgit v1.2.3 From 7e1f36b2425e0ee041bd16b1ec51b8128329aab9 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 26 Apr 2023 08:59:55 +0200 Subject: speedo,w32: Adjustments for the new Unicode NSIS plugins. * build-aux/speedo/w32/inst.nsi: Convert to UTF-8. Add Unicode statement. * build-aux/speedo.mk (installer): Remove -INPUTCHARSET. -- GnuPG-bug-id: 6448 --- build-aux/speedo.mk | 3 +-- build-aux/speedo/w32/inst.nsi | 45 +++++++++++++++++++++++-------------------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/build-aux/speedo.mk b/build-aux/speedo.mk index 820b0a862..db78afa50 100644 --- a/build-aux/speedo.mk +++ b/build-aux/speedo.mk @@ -1376,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) \ diff --git a/build-aux/speedo/w32/inst.nsi b/build-aux/speedo/w32/inst.nsi index 665c65b02..283166835 100644 --- a/build-aux/speedo/w32/inst.nsi +++ b/build-aux/speedo/w32/inst.nsi @@ -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 hufigst verwendete Software zur Mail- und Datenverschlsselung.\ + "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 Krze: Sie haben das Recht, die Software zu jedem Zweck \ - einzusetzen. Sie knnen die Software weitergeben, sofern Sie dem \ - Empfnger dieselben Rechte einrumen, 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 Schlsselverwaltung 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 Schlsselverwaltung installiert. \ - Deswegen kann sie jetzt auch nicht ausgefhrt 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 luft 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 whlen Sie, welche Verknpfungen 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 Verknpfungen fr \ + "(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} \ - "Arbeitsflche" + "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\ - Mchten Sie diese mit Version ${VERSION} berschreiben? $\r$\n\ + Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\ $\r$\n\ - (Sie knnen 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\ - Mchten die die Installation von GnuPG fortfhren?" + 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\ - Mchten die die Installation von GnuPG ohne Administratorrechte fortfhren?" + 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 \ - durchzufhren; 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 \ - Verschlsselung sowie die Verwaltung der Schlssel 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 Oberflche von GnuPG." + "Der GnuPG Assistent ist die graphische Oberfläche von GnuPG." LangString DESC_Menu_gpa ${LANG_ENGLISH} \ "Run the GnuGP Assistant." -- cgit v1.2.3 From 23c56344851c2406b493ba1d19b3f29960ed3ecf Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 27 Apr 2023 09:03:55 +0900 Subject: regexp: Update UnicodeData for Unicode 15.0.0. * regexp/UnicodeData.txt: Update from upstream. -- https://www.unicode.org/Public/15.0.0/ucd/UnicodeData.txt See: https://www.unicode.org/versions/Unicode15.0.0/ https://www.unicode.org/reports/tr44/ Signed-off-by: NIIBE Yutaka --- regexp/UnicodeData.txt | 1135 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1131 insertions(+), 4 deletions(-) diff --git a/regexp/UnicodeData.txt b/regexp/UnicodeData.txt index e22f967bb..ea963a716 100644 --- a/regexp/UnicodeData.txt +++ b/regexp/UnicodeData.txt @@ -1525,6 +1525,7 @@ 061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; 061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; 061C;ARABIC LETTER MARK;Cf;0;AL;;;;;N;;;;; +061D;ARABIC END OF TEXT MARK;Po;0;AL;;;;;N;;;;; 061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; 061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; 0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;; @@ -2089,6 +2090,47 @@ 0868;SYRIAC LETTER MALAYALAM LLA;Lo;0;AL;;;;;N;;;;; 0869;SYRIAC LETTER MALAYALAM LLLA;Lo;0;AL;;;;;N;;;;; 086A;SYRIAC LETTER MALAYALAM SSA;Lo;0;AL;;;;;N;;;;; +0870;ARABIC LETTER ALEF WITH ATTACHED FATHA;Lo;0;AL;;;;;N;;;;; +0871;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA;Lo;0;AL;;;;;N;;;;; +0872;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;; +0873;ARABIC LETTER ALEF WITH LEFT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;; +0874;ARABIC LETTER ALEF WITH ATTACHED KASRA;Lo;0;AL;;;;;N;;;;; +0875;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA;Lo;0;AL;;;;;N;;;;; +0876;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +0877;ARABIC LETTER ALEF WITH ATTACHED RIGHT ROUND DOT;Lo;0;AL;;;;;N;;;;; +0878;ARABIC LETTER ALEF WITH ATTACHED LEFT ROUND DOT;Lo;0;AL;;;;;N;;;;; +0879;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT BELOW;Lo;0;AL;;;;;N;;;;; +087A;ARABIC LETTER ALEF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087B;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087C;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087D;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; +087E;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING;Lo;0;AL;;;;;N;;;;; +087F;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING;Lo;0;AL;;;;;N;;;;; +0880;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING;Lo;0;AL;;;;;N;;;;; +0881;ARABIC LETTER ALEF WITH ATTACHED RIGHT HAMZA;Lo;0;AL;;;;;N;;;;; +0882;ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA;Lo;0;AL;;;;;N;;;;; +0883;ARABIC TATWEEL WITH OVERSTRUCK HAMZA;Lo;0;AL;;;;;N;;;;; +0884;ARABIC TATWEEL WITH OVERSTRUCK WAW;Lo;0;AL;;;;;N;;;;; +0885;ARABIC TATWEEL WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; +0886;ARABIC LETTER THIN YEH;Lo;0;AL;;;;;N;;;;; +0887;ARABIC BASELINE ROUND DOT;Lo;0;AL;;;;;N;;;;; +0888;ARABIC RAISED ROUND DOT;Sk;0;AL;;;;;N;;;;; +0889;ARABIC LETTER NOON WITH INVERTED SMALL V;Lo;0;AL;;;;;N;;;;; +088A;ARABIC LETTER HAH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; +088B;ARABIC LETTER TAH WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +088C;ARABIC LETTER TAH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; +088D;ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;; +088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;; +0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;; +0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;; +0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;; +0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;; +089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;; +089B;ARABIC SMALL LOW WORD TASHEEL;Mn;220;NSM;;;;;N;;;;; +089C;ARABIC MADDA WAAJIB;Mn;230;NSM;;;;;N;;;;; +089D;ARABIC SUPERSCRIPT ALEF MOKHASSAS;Mn;230;NSM;;;;;N;;;;; +089E;ARABIC DOUBLED MADDA;Mn;230;NSM;;;;;N;;;;; +089F;ARABIC HALF MADDA OVER MADDA;Mn;230;NSM;;;;;N;;;;; 08A0;ARABIC LETTER BEH WITH SMALL V BELOW;Lo;0;AL;;;;;N;;;;; 08A1;ARABIC LETTER BEH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; 08A2;ARABIC LETTER JEEM WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; @@ -2110,6 +2152,7 @@ 08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;; 08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; 08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; +08B5;ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; 08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;; 08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;; @@ -2128,6 +2171,17 @@ 08C5;ARABIC LETTER JEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 08C6;ARABIC LETTER JEEM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; 08C7;ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; +08C8;ARABIC LETTER GRAF;Lo;0;AL;;;;;N;;;;; +08C9;ARABIC SMALL FARSI YEH;Lm;0;AL;;;;;N;;;;; +08CA;ARABIC SMALL HIGH FARSI YEH;Mn;230;NSM;;;;;N;;;;; +08CB;ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW;Mn;230;NSM;;;;;N;;;;; +08CC;ARABIC SMALL HIGH WORD SAH;Mn;230;NSM;;;;;N;;;;; +08CD;ARABIC SMALL HIGH ZAH;Mn;230;NSM;;;;;N;;;;; +08CE;ARABIC LARGE ROUND DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +08CF;ARABIC LARGE ROUND DOT BELOW;Mn;220;NSM;;;;;N;;;;; +08D0;ARABIC SUKUN BELOW;Mn;220;NSM;;;;;N;;;;; +08D1;ARABIC LARGE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;; +08D2;ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;; 08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;; 08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;; 08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;; @@ -2786,6 +2840,7 @@ 0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; 0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; 0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; +0C3C;TELUGU SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; 0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; 0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; @@ -2806,6 +2861,7 @@ 0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; 0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; 0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;; +0C5D;TELUGU LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;; 0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; @@ -2901,6 +2957,7 @@ 0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; 0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; +0CDD;KANNADA LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;; 0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; 0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; @@ -2918,6 +2975,7 @@ 0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0CF1;KANNADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;; 0CF2;KANNADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;; +0CF3;KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT;Mc;0;L;;;;;N;;;;; 0D00;MALAYALAM SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;; 0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; @@ -3282,6 +3340,7 @@ 0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; 0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; 0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; +0ECE;LAO YAMAKKAN;Mn;0;NSM;;;;;N;;;;; 0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -5258,6 +5317,7 @@ 170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; 170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; 170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; +170D;TAGALOG LETTER RA;Lo;0;L;;;;;N;;;;; 170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; 170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; 1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; @@ -5265,6 +5325,8 @@ 1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; +1715;TAGALOG SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;; +171F;TAGALOG LETTER ARCHAIC RA;Lo;0;L;;;;;N;;;;; 1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; 1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; 1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; @@ -5285,7 +5347,7 @@ 1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; 1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; +1734;HANUNOO SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;; 1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; 1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; 1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; @@ -5455,6 +5517,7 @@ 180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; 180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; 180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;; +180F;MONGOLIAN FREE VARIATION SELECTOR FOUR;Mn;0;NSM;;;;;N;;;;; 1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -6059,6 +6122,20 @@ 1ABE;COMBINING PARENTHESES OVERLAY;Me;0;NSM;;;;;N;;;;; 1ABF;COMBINING LATIN SMALL LETTER W BELOW;Mn;220;NSM;;;;;N;;;;; 1AC0;COMBINING LATIN SMALL LETTER TURNED W BELOW;Mn;220;NSM;;;;;N;;;;; +1AC1;COMBINING LEFT PARENTHESIS ABOVE LEFT;Mn;230;NSM;;;;;N;;;;; +1AC2;COMBINING RIGHT PARENTHESIS ABOVE RIGHT;Mn;230;NSM;;;;;N;;;;; +1AC3;COMBINING LEFT PARENTHESIS BELOW LEFT;Mn;220;NSM;;;;;N;;;;; +1AC4;COMBINING RIGHT PARENTHESIS BELOW RIGHT;Mn;220;NSM;;;;;N;;;;; +1AC5;COMBINING SQUARE BRACKETS ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC6;COMBINING NUMBER SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC7;COMBINING INVERTED DOUBLE ARCH ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC8;COMBINING PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1AC9;COMBINING DOUBLE PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;; +1ACA;COMBINING DOUBLE PLUS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; +1ACB;COMBINING TRIPLE ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; +1ACC;COMBINING LATIN SMALL LETTER INSULAR G;Mn;230;NSM;;;;;N;;;;; +1ACD;COMBINING LATIN SMALL LETTER INSULAR R;Mn;230;NSM;;;;;N;;;;; +1ACE;COMBINING LATIN SMALL LETTER INSULAR T;Mn;230;NSM;;;;;N;;;;; 1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;; 1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;; 1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;; @@ -6135,6 +6212,7 @@ 1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; 1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; 1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; +1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;; 1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -6180,6 +6258,8 @@ 1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; 1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; 1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; +1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;; +1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;; 1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; 1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; 1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; @@ -6778,6 +6858,7 @@ 1DF7;COMBINING KAVYKA ABOVE LEFT;Mn;228;NSM;;;;;N;;;;; 1DF8;COMBINING DOT ABOVE LEFT;Mn;228;NSM;;;;;N;;;;; 1DF9;COMBINING WIDE INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;;;;; +1DFA;COMBINING DOT BELOW LEFT;Mn;218;NSM;;;;;N;;;;; 1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;; 1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;; 1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;; @@ -7457,6 +7538,7 @@ 20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;; 20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;; 20BF;BITCOIN SIGN;Sc;0;ET;;;;;N;;;;; +20C0;SOM SIGN;Sc;0;ET;;;;;N;;;;; 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; 20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; @@ -10300,6 +10382,7 @@ 2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; 2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; 2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; +2C2F;GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI;Lu;0;L;;;;;N;;;;2C5F; 2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 @@ -10347,6 +10430,7 @@ 2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C 2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D 2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E +2C5F;GLAGOLITIC SMALL LETTER CAUDATE CHRIVI;Ll;0;L;;;;;N;;;2C2F;;2C2F 2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; 2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; @@ -10795,6 +10879,17 @@ 2E50;CROSS PATTY WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;; 2E51;CROSS PATTY WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;; 2E52;TIRONIAN SIGN CAPITAL ET;Po;0;ON;;;;;N;;;;; +2E53;MEDIEVAL EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; +2E54;MEDIEVAL QUESTION MARK;Po;0;ON;;;;;N;;;;; +2E55;LEFT SQUARE BRACKET WITH STROKE;Ps;0;ON;;;;;Y;;;;; +2E56;RIGHT SQUARE BRACKET WITH STROKE;Pe;0;ON;;;;;Y;;;;; +2E57;LEFT SQUARE BRACKET WITH DOUBLE STROKE;Ps;0;ON;;;;;Y;;;;; +2E58;RIGHT SQUARE BRACKET WITH DOUBLE STROKE;Pe;0;ON;;;;;Y;;;;; +2E59;TOP HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E5A;TOP HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E5B;BOTTOM HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;; +2E5C;BOTTOM HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;; +2E5D;OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; @@ -12204,7 +12299,7 @@ 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; 4E00;;Lo;0;L;;;;;N;;;;; -9FFC;;Lo;0;L;;;;;N;;;;; +9FFF;;Lo;0;L;;;;;N;;;;; A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; @@ -14149,6 +14244,8 @@ A7BC;LATIN CAPITAL LETTER GLOTTAL I;Lu;0;L;;;;;N;;;;A7BD; A7BD;LATIN SMALL LETTER GLOTTAL I;Ll;0;L;;;;;N;;;A7BC;;A7BC A7BE;LATIN CAPITAL LETTER GLOTTAL U;Lu;0;L;;;;;N;;;;A7BF; A7BF;LATIN SMALL LETTER GLOTTAL U;Ll;0;L;;;;;N;;;A7BE;;A7BE +A7C0;LATIN CAPITAL LETTER OLD POLISH O;Lu;0;L;;;;;N;;;;A7C1; +A7C1;LATIN SMALL LETTER OLD POLISH O;Ll;0;L;;;;;N;;;A7C0;;A7C0 A7C2;LATIN CAPITAL LETTER ANGLICANA W;Lu;0;L;;;;;N;;;;A7C3; A7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0;L;;;;;N;;;A7C2;;A7C2 A7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794; @@ -14158,6 +14255,17 @@ A7C7;LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7C8; A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7 A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA; A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9 +A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1; +A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0 +A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;; +A7D5;LATIN SMALL LETTER DOUBLE WYNN;Ll;0;L;;;;;N;;;;; +A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7; +A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6 +A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9; +A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8 +A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L; 0043;;;;N;;;;; +A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L; 0046;;;;N;;;;; +A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L; 0051;;;;N;;;;; A7F5;LATIN CAPITAL LETTER REVERSED HALF H;Lu;0;L;;;;;N;;;;A7F6; A7F6;LATIN SMALL LETTER REVERSED HALF H;Ll;0;L;;;;;N;;;A7F5;;A7F5 A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;; @@ -15794,6 +15902,7 @@ FBBE;ARABIC SYMBOL TWO DOTS VERTICALLY BELOW;Sk;0;AL;;;;;N;;;;; FBBF;ARABIC SYMBOL RING;Sk;0;AL;;;;;N;;;;; FBC0;ARABIC SYMBOL SMALL TAH ABOVE;Sk;0;AL;;;;;N;;;;; FBC1;ARABIC SYMBOL SMALL TAH BELOW;Sk;0;AL;;;;;N;;;;; +FBC2;ARABIC SYMBOL WASLA ABOVE;Sk;0;AL;;;;;N;;;;; FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; @@ -16159,6 +16268,22 @@ FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;; FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; FD3E;ORNATE LEFT PARENTHESIS;Pe;0;ON;;;;;N;;;;; FD3F;ORNATE RIGHT PARENTHESIS;Ps;0;ON;;;;;N;;;;; +FD40;ARABIC LIGATURE RAHIMAHU ALLAAH;So;0;ON;;;;;N;;;;; +FD41;ARABIC LIGATURE RADI ALLAAHU ANH;So;0;ON;;;;;N;;;;; +FD42;ARABIC LIGATURE RADI ALLAAHU ANHAA;So;0;ON;;;;;N;;;;; +FD43;ARABIC LIGATURE RADI ALLAAHU ANHUM;So;0;ON;;;;;N;;;;; +FD44;ARABIC LIGATURE RADI ALLAAHU ANHUMAA;So;0;ON;;;;;N;;;;; +FD45;ARABIC LIGATURE RADI ALLAAHU ANHUNNA;So;0;ON;;;;;N;;;;; +FD46;ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH;So;0;ON;;;;;N;;;;; +FD47;ARABIC LIGATURE ALAYHI AS-SALAAM;So;0;ON;;;;;N;;;;; +FD48;ARABIC LIGATURE ALAYHIM AS-SALAAM;So;0;ON;;;;;N;;;;; +FD49;ARABIC LIGATURE ALAYHIMAA AS-SALAAM;So;0;ON;;;;;N;;;;; +FD4A;ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM;So;0;ON;;;;;N;;;;; +FD4B;ARABIC LIGATURE QUDDISA SIRRAH;So;0;ON;;;;;N;;;;; +FD4C;ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM;So;0;ON;;;;;N;;;;; +FD4D;ARABIC LIGATURE ALAYHAA AS-SALAAM;So;0;ON;;;;;N;;;;; +FD4E;ARABIC LIGATURE TABAARAKA WA-TAAALAA;So;0;ON;;;;;N;;;;; +FD4F;ARABIC LIGATURE RAHIMAHUM ALLAAH;So;0;ON;;;;;N;;;;; FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; @@ -16277,6 +16402,7 @@ FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; +FDCF;ARABIC LIGATURE SALAAMUHU ALAYNAA;So;0;ON;;;;;N;;;;; FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; @@ -16291,6 +16417,8 @@ FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 06 FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; +FDFE;ARABIC LIGATURE SUBHAANAHU WA TAAALAA;So;0;ON;;;;;N;;;;; +FDFF;ARABIC LIGATURE AZZA WA JALL;So;0;ON;;;;;N;;;;; FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; @@ -17798,6 +17926,76 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10562;CAUCASIAN ALBANIAN LETTER PIWR;Lo;0;L;;;;;N;;;;; 10563;CAUCASIAN ALBANIAN LETTER KIW;Lo;0;L;;;;;N;;;;; 1056F;CAUCASIAN ALBANIAN CITATION MARK;Po;0;L;;;;;N;;;;; +10570;VITHKUQI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;10597; +10571;VITHKUQI CAPITAL LETTER BBE;Lu;0;L;;;;;N;;;;10598; +10572;VITHKUQI CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;10599; +10573;VITHKUQI CAPITAL LETTER CE;Lu;0;L;;;;;N;;;;1059A; +10574;VITHKUQI CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;1059B; +10575;VITHKUQI CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;1059C; +10576;VITHKUQI CAPITAL LETTER DHE;Lu;0;L;;;;;N;;;;1059D; +10577;VITHKUQI CAPITAL LETTER EI;Lu;0;L;;;;;N;;;;1059E; +10578;VITHKUQI CAPITAL LETTER E;Lu;0;L;;;;;N;;;;1059F; +10579;VITHKUQI CAPITAL LETTER FE;Lu;0;L;;;;;N;;;;105A0; +1057A;VITHKUQI CAPITAL LETTER GA;Lu;0;L;;;;;N;;;;105A1; +1057C;VITHKUQI CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;105A3; +1057D;VITHKUQI CAPITAL LETTER HHA;Lu;0;L;;;;;N;;;;105A4; +1057E;VITHKUQI CAPITAL LETTER I;Lu;0;L;;;;;N;;;;105A5; +1057F;VITHKUQI CAPITAL LETTER IJE;Lu;0;L;;;;;N;;;;105A6; +10580;VITHKUQI CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;105A7; +10581;VITHKUQI CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;105A8; +10582;VITHKUQI CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;105A9; +10583;VITHKUQI CAPITAL LETTER LLA;Lu;0;L;;;;;N;;;;105AA; +10584;VITHKUQI CAPITAL LETTER ME;Lu;0;L;;;;;N;;;;105AB; +10585;VITHKUQI CAPITAL LETTER NE;Lu;0;L;;;;;N;;;;105AC; +10586;VITHKUQI CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;105AD; +10587;VITHKUQI CAPITAL LETTER O;Lu;0;L;;;;;N;;;;105AE; +10588;VITHKUQI CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;105AF; +10589;VITHKUQI CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;105B0; +1058A;VITHKUQI CAPITAL LETTER RE;Lu;0;L;;;;;N;;;;105B1; +1058C;VITHKUQI CAPITAL LETTER SE;Lu;0;L;;;;;N;;;;105B3; +1058D;VITHKUQI CAPITAL LETTER SHE;Lu;0;L;;;;;N;;;;105B4; +1058E;VITHKUQI CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;105B5; +1058F;VITHKUQI CAPITAL LETTER THE;Lu;0;L;;;;;N;;;;105B6; +10590;VITHKUQI CAPITAL LETTER U;Lu;0;L;;;;;N;;;;105B7; +10591;VITHKUQI CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;105B8; +10592;VITHKUQI CAPITAL LETTER XE;Lu;0;L;;;;;N;;;;105B9; +10594;VITHKUQI CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;105BB; +10595;VITHKUQI CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;105BC; +10597;VITHKUQI SMALL LETTER A;Ll;0;L;;;;;N;;;10570;;10570 +10598;VITHKUQI SMALL LETTER BBE;Ll;0;L;;;;;N;;;10571;;10571 +10599;VITHKUQI SMALL LETTER BE;Ll;0;L;;;;;N;;;10572;;10572 +1059A;VITHKUQI SMALL LETTER CE;Ll;0;L;;;;;N;;;10573;;10573 +1059B;VITHKUQI SMALL LETTER CHE;Ll;0;L;;;;;N;;;10574;;10574 +1059C;VITHKUQI SMALL LETTER DE;Ll;0;L;;;;;N;;;10575;;10575 +1059D;VITHKUQI SMALL LETTER DHE;Ll;0;L;;;;;N;;;10576;;10576 +1059E;VITHKUQI SMALL LETTER EI;Ll;0;L;;;;;N;;;10577;;10577 +1059F;VITHKUQI SMALL LETTER E;Ll;0;L;;;;;N;;;10578;;10578 +105A0;VITHKUQI SMALL LETTER FE;Ll;0;L;;;;;N;;;10579;;10579 +105A1;VITHKUQI SMALL LETTER GA;Ll;0;L;;;;;N;;;1057A;;1057A +105A3;VITHKUQI SMALL LETTER HA;Ll;0;L;;;;;N;;;1057C;;1057C +105A4;VITHKUQI SMALL LETTER HHA;Ll;0;L;;;;;N;;;1057D;;1057D +105A5;VITHKUQI SMALL LETTER I;Ll;0;L;;;;;N;;;1057E;;1057E +105A6;VITHKUQI SMALL LETTER IJE;Ll;0;L;;;;;N;;;1057F;;1057F +105A7;VITHKUQI SMALL LETTER JE;Ll;0;L;;;;;N;;;10580;;10580 +105A8;VITHKUQI SMALL LETTER KA;Ll;0;L;;;;;N;;;10581;;10581 +105A9;VITHKUQI SMALL LETTER LA;Ll;0;L;;;;;N;;;10582;;10582 +105AA;VITHKUQI SMALL LETTER LLA;Ll;0;L;;;;;N;;;10583;;10583 +105AB;VITHKUQI SMALL LETTER ME;Ll;0;L;;;;;N;;;10584;;10584 +105AC;VITHKUQI SMALL LETTER NE;Ll;0;L;;;;;N;;;10585;;10585 +105AD;VITHKUQI SMALL LETTER NJE;Ll;0;L;;;;;N;;;10586;;10586 +105AE;VITHKUQI SMALL LETTER O;Ll;0;L;;;;;N;;;10587;;10587 +105AF;VITHKUQI SMALL LETTER PE;Ll;0;L;;;;;N;;;10588;;10588 +105B0;VITHKUQI SMALL LETTER QA;Ll;0;L;;;;;N;;;10589;;10589 +105B1;VITHKUQI SMALL LETTER RE;Ll;0;L;;;;;N;;;1058A;;1058A +105B3;VITHKUQI SMALL LETTER SE;Ll;0;L;;;;;N;;;1058C;;1058C +105B4;VITHKUQI SMALL LETTER SHE;Ll;0;L;;;;;N;;;1058D;;1058D +105B5;VITHKUQI SMALL LETTER TE;Ll;0;L;;;;;N;;;1058E;;1058E +105B6;VITHKUQI SMALL LETTER THE;Ll;0;L;;;;;N;;;1058F;;1058F +105B7;VITHKUQI SMALL LETTER U;Ll;0;L;;;;;N;;;10590;;10590 +105B8;VITHKUQI SMALL LETTER VE;Ll;0;L;;;;;N;;;10591;;10591 +105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592 +105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594 +105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595 10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;; 10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;; 10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;; @@ -18139,6 +18337,63 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10765;LINEAR A SIGN A805;Lo;0;L;;;;;N;;;;; 10766;LINEAR A SIGN A806;Lo;0;L;;;;;N;;;;; 10767;LINEAR A SIGN A807;Lo;0;L;;;;;N;;;;; +10780;MODIFIER LETTER SMALL CAPITAL AA;Lm;0;L;;;;;N;;;;; +10781;MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;Lm;0;L; 02D0;;;;N;;;;; +10782;MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;Lm;0;L; 02D1;;;;N;;;;; +10783;MODIFIER LETTER SMALL AE;Lm;0;L; 00E6;;;;N;;;;; +10784;MODIFIER LETTER SMALL CAPITAL B;Lm;0;L; 0299;;;;N;;;;; +10785;MODIFIER LETTER SMALL B WITH HOOK;Lm;0;L; 0253;;;;N;;;;; +10787;MODIFIER LETTER SMALL DZ DIGRAPH;Lm;0;L; 02A3;;;;N;;;;; +10788;MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK;Lm;0;L; AB66;;;;N;;;;; +10789;MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL;Lm;0;L; 02A5;;;;N;;;;; +1078A;MODIFIER LETTER SMALL DEZH DIGRAPH;Lm;0;L; 02A4;;;;N;;;;; +1078B;MODIFIER LETTER SMALL D WITH TAIL;Lm;0;L; 0256;;;;N;;;;; +1078C;MODIFIER LETTER SMALL D WITH HOOK;Lm;0;L; 0257;;;;N;;;;; +1078D;MODIFIER LETTER SMALL D WITH HOOK AND TAIL;Lm;0;L; 1D91;;;;N;;;;; +1078E;MODIFIER LETTER SMALL REVERSED E;Lm;0;L; 0258;;;;N;;;;; +1078F;MODIFIER LETTER SMALL CLOSED REVERSED OPEN E;Lm;0;L; 025E;;;;N;;;;; +10790;MODIFIER LETTER SMALL FENG DIGRAPH;Lm;0;L; 02A9;;;;N;;;;; +10791;MODIFIER LETTER SMALL RAMS HORN;Lm;0;L; 0264;;;;N;;;;; +10792;MODIFIER LETTER SMALL CAPITAL G;Lm;0;L; 0262;;;;N;;;;; +10793;MODIFIER LETTER SMALL G WITH HOOK;Lm;0;L; 0260;;;;N;;;;; +10794;MODIFIER LETTER SMALL CAPITAL G WITH HOOK;Lm;0;L; 029B;;;;N;;;;; +10795;MODIFIER LETTER SMALL H WITH STROKE;Lm;0;L; 0127;;;;N;;;;; +10796;MODIFIER LETTER SMALL CAPITAL H;Lm;0;L; 029C;;;;N;;;;; +10797;MODIFIER LETTER SMALL HENG WITH HOOK;Lm;0;L; 0267;;;;N;;;;; +10798;MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK;Lm;0;L; 0284;;;;N;;;;; +10799;MODIFIER LETTER SMALL LS DIGRAPH;Lm;0;L; 02AA;;;;N;;;;; +1079A;MODIFIER LETTER SMALL LZ DIGRAPH;Lm;0;L; 02AB;;;;N;;;;; +1079B;MODIFIER LETTER SMALL L WITH BELT;Lm;0;L; 026C;;;;N;;;;; +1079C;MODIFIER LETTER SMALL CAPITAL L WITH BELT;Lm;0;L; 1DF04;;;;N;;;;; +1079D;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT;Lm;0;L; A78E;;;;N;;;;; +1079E;MODIFIER LETTER SMALL LEZH;Lm;0;L; 026E;;;;N;;;;; +1079F;MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK;Lm;0;L; 1DF05;;;;N;;;;; +107A0;MODIFIER LETTER SMALL TURNED Y;Lm;0;L; 028E;;;;N;;;;; +107A1;MODIFIER LETTER SMALL TURNED Y WITH BELT;Lm;0;L; 1DF06;;;;N;;;;; +107A2;MODIFIER LETTER SMALL O WITH STROKE;Lm;0;L; 00F8;;;;N;;;;; +107A3;MODIFIER LETTER SMALL CAPITAL OE;Lm;0;L; 0276;;;;N;;;;; +107A4;MODIFIER LETTER SMALL CLOSED OMEGA;Lm;0;L; 0277;;;;N;;;;; +107A5;MODIFIER LETTER SMALL Q;Lm;0;L; 0071;;;;N;;;;; +107A6;MODIFIER LETTER SMALL TURNED R WITH LONG LEG;Lm;0;L; 027A;;;;N;;;;; +107A7;MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK;Lm;0;L; 1DF08;;;;N;;;;; +107A8;MODIFIER LETTER SMALL R WITH TAIL;Lm;0;L; 027D;;;;N;;;;; +107A9;MODIFIER LETTER SMALL R WITH FISHHOOK;Lm;0;L; 027E;;;;N;;;;; +107AA;MODIFIER LETTER SMALL CAPITAL R;Lm;0;L; 0280;;;;N;;;;; +107AB;MODIFIER LETTER SMALL TC DIGRAPH WITH CURL;Lm;0;L; 02A8;;;;N;;;;; +107AC;MODIFIER LETTER SMALL TS DIGRAPH;Lm;0;L; 02A6;;;;N;;;;; +107AD;MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK;Lm;0;L; AB67;;;;N;;;;; +107AE;MODIFIER LETTER SMALL TESH DIGRAPH;Lm;0;L; 02A7;;;;N;;;;; +107AF;MODIFIER LETTER SMALL T WITH RETROFLEX HOOK;Lm;0;L; 0288;;;;N;;;;; +107B0;MODIFIER LETTER SMALL V WITH RIGHT HOOK;Lm;0;L; 2C71;;;;N;;;;; +107B2;MODIFIER LETTER SMALL CAPITAL Y;Lm;0;L; 028F;;;;N;;;;; +107B3;MODIFIER LETTER GLOTTAL STOP WITH STROKE;Lm;0;L; 02A1;;;;N;;;;; +107B4;MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE;Lm;0;L; 02A2;;;;N;;;;; +107B5;MODIFIER LETTER BILABIAL CLICK;Lm;0;L; 0298;;;;N;;;;; +107B6;MODIFIER LETTER DENTAL CLICK;Lm;0;L; 01C0;;;;N;;;;; +107B7;MODIFIER LETTER LATERAL CLICK;Lm;0;L; 01C1;;;;N;;;;; +107B8;MODIFIER LETTER ALVEOLAR CLICK;Lm;0;L; 01C2;;;;N;;;;; +107B9;MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lm;0;L; 1DF0A;;;;N;;;;; +107BA;MODIFIER LETTER SMALL S WITH CURL;Lm;0;L; 1DF1E;;;;N;;;;; 10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; 10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; 10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; @@ -19140,6 +19395,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;; 10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;; 10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;; +10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;; +10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;; +10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;; 10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; 10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;; 10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;; @@ -19222,6 +19480,32 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;; 10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;; 10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;; +10F70;OLD UYGHUR LETTER ALEPH;Lo;0;R;;;;;N;;;;; +10F71;OLD UYGHUR LETTER BETH;Lo;0;R;;;;;N;;;;; +10F72;OLD UYGHUR LETTER GIMEL-HETH;Lo;0;R;;;;;N;;;;; +10F73;OLD UYGHUR LETTER WAW;Lo;0;R;;;;;N;;;;; +10F74;OLD UYGHUR LETTER ZAYIN;Lo;0;R;;;;;N;;;;; +10F75;OLD UYGHUR LETTER FINAL HETH;Lo;0;R;;;;;N;;;;; +10F76;OLD UYGHUR LETTER YODH;Lo;0;R;;;;;N;;;;; +10F77;OLD UYGHUR LETTER KAPH;Lo;0;R;;;;;N;;;;; +10F78;OLD UYGHUR LETTER LAMEDH;Lo;0;R;;;;;N;;;;; +10F79;OLD UYGHUR LETTER MEM;Lo;0;R;;;;;N;;;;; +10F7A;OLD UYGHUR LETTER NUN;Lo;0;R;;;;;N;;;;; +10F7B;OLD UYGHUR LETTER SAMEKH;Lo;0;R;;;;;N;;;;; +10F7C;OLD UYGHUR LETTER PE;Lo;0;R;;;;;N;;;;; +10F7D;OLD UYGHUR LETTER SADHE;Lo;0;R;;;;;N;;;;; +10F7E;OLD UYGHUR LETTER RESH;Lo;0;R;;;;;N;;;;; +10F7F;OLD UYGHUR LETTER SHIN;Lo;0;R;;;;;N;;;;; +10F80;OLD UYGHUR LETTER TAW;Lo;0;R;;;;;N;;;;; +10F81;OLD UYGHUR LETTER LESH;Lo;0;R;;;;;N;;;;; +10F82;OLD UYGHUR COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;; +10F83;OLD UYGHUR COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;; +10F84;OLD UYGHUR COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; +10F85;OLD UYGHUR COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;; +10F86;OLD UYGHUR PUNCTUATION BAR;Po;0;R;;;;;N;;;;; +10F87;OLD UYGHUR PUNCTUATION TWO BARS;Po;0;R;;;;;N;;;;; +10F88;OLD UYGHUR PUNCTUATION TWO DOTS;Po;0;R;;;;;N;;;;; +10F89;OLD UYGHUR PUNCTUATION FOUR DOTS;Po;0;R;;;;;N;;;;; 10FB0;CHORASMIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; 10FB1;CHORASMIAN LETTER SMALL ALEPH;Lo;0;R;;;;;N;;;;; 10FB2;CHORASMIAN LETTER BETH;Lo;0;R;;;;;N;;;;; @@ -19381,6 +19665,12 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1106D;BRAHMI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 1106E;BRAHMI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1106F;BRAHMI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +11070;BRAHMI SIGN OLD TAMIL VIRAMA;Mn;9;NSM;;;;;N;;;;; +11071;BRAHMI LETTER OLD TAMIL SHORT E;Lo;0;L;;;;;N;;;;; +11072;BRAHMI LETTER OLD TAMIL SHORT O;Lo;0;L;;;;;N;;;;; +11073;BRAHMI VOWEL SIGN OLD TAMIL SHORT E;Mn;0;NSM;;;;;N;;;;; +11074;BRAHMI VOWEL SIGN OLD TAMIL SHORT O;Mn;0;NSM;;;;;N;;;;; +11075;BRAHMI LETTER OLD TAMIL LLA;Lo;0;L;;;;;N;;;;; 1107F;BRAHMI NUMBER JOINER;Mn;9;NSM;;;;;N;;;;; 11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; @@ -19448,6 +19738,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; 110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;; 110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +110C2;KAITHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;; 110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;; 110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;; @@ -19772,6 +20063,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; 1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;; +1123F;KHOJKI LETTER QA;Lo;0;L;;;;;N;;;;; +11240;KHOJKI LETTER SHORT I;Lo;0;L;;;;;N;;;;; +11241;KHOJKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;; 11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;; 11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;; @@ -20385,6 +20679,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;; 116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 116B8;TAKRI LETTER ARCHAIC KHA;Lo;0;L;;;;;N;;;;; +116B9;TAKRI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; @@ -20453,6 +20748,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;; 1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;; 1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;; +11740;AHOM LETTER CA;Lo;0;L;;;;;N;;;;; +11741;AHOM LETTER TTA;Lo;0;L;;;;;N;;;;; +11742;AHOM LETTER TTHA;Lo;0;L;;;;;N;;;;; +11743;AHOM LETTER DDA;Lo;0;L;;;;;N;;;;; +11744;AHOM LETTER DDHA;Lo;0;L;;;;;N;;;;; +11745;AHOM LETTER NNA;Lo;0;L;;;;;N;;;;; +11746;AHOM LETTER LLA;Lo;0;L;;;;;N;;;;; 11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;; 11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;; 11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;; @@ -20889,6 +21191,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;; 11AA1;SOYOMBO TERMINAL MARK-1;Po;0;L;;;;;N;;;;; 11AA2;SOYOMBO TERMINAL MARK-2;Po;0;L;;;;;N;;;;; +11AB0;CANADIAN SYLLABICS NATTILIK HI;Lo;0;L;;;;;N;;;;; +11AB1;CANADIAN SYLLABICS NATTILIK HII;Lo;0;L;;;;;N;;;;; +11AB2;CANADIAN SYLLABICS NATTILIK HO;Lo;0;L;;;;;N;;;;; +11AB3;CANADIAN SYLLABICS NATTILIK HOO;Lo;0;L;;;;;N;;;;; +11AB4;CANADIAN SYLLABICS NATTILIK HA;Lo;0;L;;;;;N;;;;; +11AB5;CANADIAN SYLLABICS NATTILIK HAA;Lo;0;L;;;;;N;;;;; +11AB6;CANADIAN SYLLABICS NATTILIK SHRI;Lo;0;L;;;;;N;;;;; +11AB7;CANADIAN SYLLABICS NATTILIK SHRII;Lo;0;L;;;;;N;;;;; +11AB8;CANADIAN SYLLABICS NATTILIK SHRO;Lo;0;L;;;;;N;;;;; +11AB9;CANADIAN SYLLABICS NATTILIK SHROO;Lo;0;L;;;;;N;;;;; +11ABA;CANADIAN SYLLABICS NATTILIK SHRA;Lo;0;L;;;;;N;;;;; +11ABB;CANADIAN SYLLABICS NATTILIK SHRAA;Lo;0;L;;;;;N;;;;; +11ABC;CANADIAN SYLLABICS SPE;Lo;0;L;;;;;N;;;;; +11ABD;CANADIAN SYLLABICS SPI;Lo;0;L;;;;;N;;;;; +11ABE;CANADIAN SYLLABICS SPO;Lo;0;L;;;;;N;;;;; +11ABF;CANADIAN SYLLABICS SPA;Lo;0;L;;;;;N;;;;; 11AC0;PAU CIN HAU LETTER PA;Lo;0;L;;;;;N;;;;; 11AC1;PAU CIN HAU LETTER KA;Lo;0;L;;;;;N;;;;; 11AC2;PAU CIN HAU LETTER LA;Lo;0;L;;;;;N;;;;; @@ -20946,6 +21264,16 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;; 11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;; 11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;; +11B00;DEVANAGARI HEAD MARK;Po;0;L;;;;;N;;;;; +11B01;DEVANAGARI HEAD MARK WITH HEADSTROKE;Po;0;L;;;;;N;;;;; +11B02;DEVANAGARI SIGN BHALE;Po;0;L;;;;;N;;;;; +11B03;DEVANAGARI SIGN BHALE WITH HOOK;Po;0;L;;;;;N;;;;; +11B04;DEVANAGARI SIGN EXTENDED BHALE;Po;0;L;;;;;N;;;;; +11B05;DEVANAGARI SIGN EXTENDED BHALE WITH HOOK;Po;0;L;;;;;N;;;;; +11B06;DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE;Po;0;L;;;;;N;;;;; +11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;; +11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;; +11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;; 11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;; 11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;; 11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;; @@ -21274,6 +21602,92 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;; 11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;; 11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;; +11F00;KAWI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; +11F01;KAWI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; +11F02;KAWI SIGN REPHA;Lo;0;L;;;;;N;;;;; +11F03;KAWI SIGN VISARGA;Mc;0;L;;;;;N;;;;; +11F04;KAWI LETTER A;Lo;0;L;;;;;N;;;;; +11F05;KAWI LETTER AA;Lo;0;L;;;;;N;;;;; +11F06;KAWI LETTER I;Lo;0;L;;;;;N;;;;; +11F07;KAWI LETTER II;Lo;0;L;;;;;N;;;;; +11F08;KAWI LETTER U;Lo;0;L;;;;;N;;;;; +11F09;KAWI LETTER UU;Lo;0;L;;;;;N;;;;; +11F0A;KAWI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; +11F0B;KAWI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; +11F0C;KAWI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; +11F0D;KAWI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; +11F0E;KAWI LETTER E;Lo;0;L;;;;;N;;;;; +11F0F;KAWI LETTER AI;Lo;0;L;;;;;N;;;;; +11F10;KAWI LETTER O;Lo;0;L;;;;;N;;;;; +11F12;KAWI LETTER KA;Lo;0;L;;;;;N;;;;; +11F13;KAWI LETTER KHA;Lo;0;L;;;;;N;;;;; +11F14;KAWI LETTER GA;Lo;0;L;;;;;N;;;;; +11F15;KAWI LETTER GHA;Lo;0;L;;;;;N;;;;; +11F16;KAWI LETTER NGA;Lo;0;L;;;;;N;;;;; +11F17;KAWI LETTER CA;Lo;0;L;;;;;N;;;;; +11F18;KAWI LETTER CHA;Lo;0;L;;;;;N;;;;; +11F19;KAWI LETTER JA;Lo;0;L;;;;;N;;;;; +11F1A;KAWI LETTER JHA;Lo;0;L;;;;;N;;;;; +11F1B;KAWI LETTER NYA;Lo;0;L;;;;;N;;;;; +11F1C;KAWI LETTER TTA;Lo;0;L;;;;;N;;;;; +11F1D;KAWI LETTER TTHA;Lo;0;L;;;;;N;;;;; +11F1E;KAWI LETTER DDA;Lo;0;L;;;;;N;;;;; +11F1F;KAWI LETTER DDHA;Lo;0;L;;;;;N;;;;; +11F20;KAWI LETTER NNA;Lo;0;L;;;;;N;;;;; +11F21;KAWI LETTER TA;Lo;0;L;;;;;N;;;;; +11F22;KAWI LETTER THA;Lo;0;L;;;;;N;;;;; +11F23;KAWI LETTER DA;Lo;0;L;;;;;N;;;;; +11F24;KAWI LETTER DHA;Lo;0;L;;;;;N;;;;; +11F25;KAWI LETTER NA;Lo;0;L;;;;;N;;;;; +11F26;KAWI LETTER PA;Lo;0;L;;;;;N;;;;; +11F27;KAWI LETTER PHA;Lo;0;L;;;;;N;;;;; +11F28;KAWI LETTER BA;Lo;0;L;;;;;N;;;;; +11F29;KAWI LETTER BHA;Lo;0;L;;;;;N;;;;; +11F2A;KAWI LETTER MA;Lo;0;L;;;;;N;;;;; +11F2B;KAWI LETTER YA;Lo;0;L;;;;;N;;;;; +11F2C;KAWI LETTER RA;Lo;0;L;;;;;N;;;;; +11F2D;KAWI LETTER LA;Lo;0;L;;;;;N;;;;; +11F2E;KAWI LETTER WA;Lo;0;L;;;;;N;;;;; +11F2F;KAWI LETTER SHA;Lo;0;L;;;;;N;;;;; +11F30;KAWI LETTER SSA;Lo;0;L;;;;;N;;;;; +11F31;KAWI LETTER SA;Lo;0;L;;;;;N;;;;; +11F32;KAWI LETTER HA;Lo;0;L;;;;;N;;;;; +11F33;KAWI LETTER JNYA;Lo;0;L;;;;;N;;;;; +11F34;KAWI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; +11F35;KAWI VOWEL SIGN ALTERNATE AA;Mc;0;L;;;;;N;;;;; +11F36;KAWI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; +11F37;KAWI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; +11F38;KAWI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; +11F39;KAWI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; +11F3A;KAWI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; +11F3E;KAWI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; +11F3F;KAWI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; +11F40;KAWI VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; +11F41;KAWI SIGN KILLER;Mc;9;L;;;;;N;;;;; +11F42;KAWI CONJOINER;Mn;9;NSM;;;;;N;;;;; +11F43;KAWI DANDA;Po;0;L;;;;;N;;;;; +11F44;KAWI DOUBLE DANDA;Po;0;L;;;;;N;;;;; +11F45;KAWI PUNCTUATION SECTION MARKER;Po;0;L;;;;;N;;;;; +11F46;KAWI PUNCTUATION ALTERNATE SECTION MARKER;Po;0;L;;;;;N;;;;; +11F47;KAWI PUNCTUATION FLOWER;Po;0;L;;;;;N;;;;; +11F48;KAWI PUNCTUATION SPACE FILLER;Po;0;L;;;;;N;;;;; +11F49;KAWI PUNCTUATION DOT;Po;0;L;;;;;N;;;;; +11F4A;KAWI PUNCTUATION DOUBLE DOT;Po;0;L;;;;;N;;;;; +11F4B;KAWI PUNCTUATION TRIPLE DOT;Po;0;L;;;;;N;;;;; +11F4C;KAWI PUNCTUATION CIRCLE;Po;0;L;;;;;N;;;;; +11F4D;KAWI PUNCTUATION FILLED CIRCLE;Po;0;L;;;;;N;;;;; +11F4E;KAWI PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; +11F4F;KAWI PUNCTUATION CLOSING SPIRAL;Po;0;L;;;;;N;;;;; +11F50;KAWI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +11F51;KAWI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +11F52;KAWI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +11F53;KAWI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +11F54;KAWI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +11F55;KAWI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +11F56;KAWI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;; 11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;; 11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;; @@ -22560,6 +22974,105 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;; 12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;; 12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;; +12F90;CYPRO-MINOAN SIGN CM001;Lo;0;L;;;;;N;;;;; +12F91;CYPRO-MINOAN SIGN CM002;Lo;0;L;;;;;N;;;;; +12F92;CYPRO-MINOAN SIGN CM004;Lo;0;L;;;;;N;;;;; +12F93;CYPRO-MINOAN SIGN CM005;Lo;0;L;;;;;N;;;;; +12F94;CYPRO-MINOAN SIGN CM006;Lo;0;L;;;;;N;;;;; +12F95;CYPRO-MINOAN SIGN CM007;Lo;0;L;;;;;N;;;;; +12F96;CYPRO-MINOAN SIGN CM008;Lo;0;L;;;;;N;;;;; +12F97;CYPRO-MINOAN SIGN CM009;Lo;0;L;;;;;N;;;;; +12F98;CYPRO-MINOAN SIGN CM010;Lo;0;L;;;;;N;;;;; +12F99;CYPRO-MINOAN SIGN CM011;Lo;0;L;;;;;N;;;;; +12F9A;CYPRO-MINOAN SIGN CM012;Lo;0;L;;;;;N;;;;; +12F9B;CYPRO-MINOAN SIGN CM012B;Lo;0;L;;;;;N;;;;; +12F9C;CYPRO-MINOAN SIGN CM013;Lo;0;L;;;;;N;;;;; +12F9D;CYPRO-MINOAN SIGN CM015;Lo;0;L;;;;;N;;;;; +12F9E;CYPRO-MINOAN SIGN CM017;Lo;0;L;;;;;N;;;;; +12F9F;CYPRO-MINOAN SIGN CM019;Lo;0;L;;;;;N;;;;; +12FA0;CYPRO-MINOAN SIGN CM021;Lo;0;L;;;;;N;;;;; +12FA1;CYPRO-MINOAN SIGN CM023;Lo;0;L;;;;;N;;;;; +12FA2;CYPRO-MINOAN SIGN CM024;Lo;0;L;;;;;N;;;;; +12FA3;CYPRO-MINOAN SIGN CM025;Lo;0;L;;;;;N;;;;; +12FA4;CYPRO-MINOAN SIGN CM026;Lo;0;L;;;;;N;;;;; +12FA5;CYPRO-MINOAN SIGN CM027;Lo;0;L;;;;;N;;;;; +12FA6;CYPRO-MINOAN SIGN CM028;Lo;0;L;;;;;N;;;;; +12FA7;CYPRO-MINOAN SIGN CM029;Lo;0;L;;;;;N;;;;; +12FA8;CYPRO-MINOAN SIGN CM030;Lo;0;L;;;;;N;;;;; +12FA9;CYPRO-MINOAN SIGN CM033;Lo;0;L;;;;;N;;;;; +12FAA;CYPRO-MINOAN SIGN CM034;Lo;0;L;;;;;N;;;;; +12FAB;CYPRO-MINOAN SIGN CM035;Lo;0;L;;;;;N;;;;; +12FAC;CYPRO-MINOAN SIGN CM036;Lo;0;L;;;;;N;;;;; +12FAD;CYPRO-MINOAN SIGN CM037;Lo;0;L;;;;;N;;;;; +12FAE;CYPRO-MINOAN SIGN CM038;Lo;0;L;;;;;N;;;;; +12FAF;CYPRO-MINOAN SIGN CM039;Lo;0;L;;;;;N;;;;; +12FB0;CYPRO-MINOAN SIGN CM040;Lo;0;L;;;;;N;;;;; +12FB1;CYPRO-MINOAN SIGN CM041;Lo;0;L;;;;;N;;;;; +12FB2;CYPRO-MINOAN SIGN CM044;Lo;0;L;;;;;N;;;;; +12FB3;CYPRO-MINOAN SIGN CM046;Lo;0;L;;;;;N;;;;; +12FB4;CYPRO-MINOAN SIGN CM047;Lo;0;L;;;;;N;;;;; +12FB5;CYPRO-MINOAN SIGN CM049;Lo;0;L;;;;;N;;;;; +12FB6;CYPRO-MINOAN SIGN CM050;Lo;0;L;;;;;N;;;;; +12FB7;CYPRO-MINOAN SIGN CM051;Lo;0;L;;;;;N;;;;; +12FB8;CYPRO-MINOAN SIGN CM052;Lo;0;L;;;;;N;;;;; +12FB9;CYPRO-MINOAN SIGN CM053;Lo;0;L;;;;;N;;;;; +12FBA;CYPRO-MINOAN SIGN CM054;Lo;0;L;;;;;N;;;;; +12FBB;CYPRO-MINOAN SIGN CM055;Lo;0;L;;;;;N;;;;; +12FBC;CYPRO-MINOAN SIGN CM056;Lo;0;L;;;;;N;;;;; +12FBD;CYPRO-MINOAN SIGN CM058;Lo;0;L;;;;;N;;;;; +12FBE;CYPRO-MINOAN SIGN CM059;Lo;0;L;;;;;N;;;;; +12FBF;CYPRO-MINOAN SIGN CM060;Lo;0;L;;;;;N;;;;; +12FC0;CYPRO-MINOAN SIGN CM061;Lo;0;L;;;;;N;;;;; +12FC1;CYPRO-MINOAN SIGN CM062;Lo;0;L;;;;;N;;;;; +12FC2;CYPRO-MINOAN SIGN CM063;Lo;0;L;;;;;N;;;;; +12FC3;CYPRO-MINOAN SIGN CM064;Lo;0;L;;;;;N;;;;; +12FC4;CYPRO-MINOAN SIGN CM066;Lo;0;L;;;;;N;;;;; +12FC5;CYPRO-MINOAN SIGN CM067;Lo;0;L;;;;;N;;;;; +12FC6;CYPRO-MINOAN SIGN CM068;Lo;0;L;;;;;N;;;;; +12FC7;CYPRO-MINOAN SIGN CM069;Lo;0;L;;;;;N;;;;; +12FC8;CYPRO-MINOAN SIGN CM070;Lo;0;L;;;;;N;;;;; +12FC9;CYPRO-MINOAN SIGN CM071;Lo;0;L;;;;;N;;;;; +12FCA;CYPRO-MINOAN SIGN CM072;Lo;0;L;;;;;N;;;;; +12FCB;CYPRO-MINOAN SIGN CM073;Lo;0;L;;;;;N;;;;; +12FCC;CYPRO-MINOAN SIGN CM074;Lo;0;L;;;;;N;;;;; +12FCD;CYPRO-MINOAN SIGN CM075;Lo;0;L;;;;;N;;;;; +12FCE;CYPRO-MINOAN SIGN CM075B;Lo;0;L;;;;;N;;;;; +12FCF;CYPRO-MINOAN SIGN CM076;Lo;0;L;;;;;N;;;;; +12FD0;CYPRO-MINOAN SIGN CM078;Lo;0;L;;;;;N;;;;; +12FD1;CYPRO-MINOAN SIGN CM079;Lo;0;L;;;;;N;;;;; +12FD2;CYPRO-MINOAN SIGN CM080;Lo;0;L;;;;;N;;;;; +12FD3;CYPRO-MINOAN SIGN CM081;Lo;0;L;;;;;N;;;;; +12FD4;CYPRO-MINOAN SIGN CM082;Lo;0;L;;;;;N;;;;; +12FD5;CYPRO-MINOAN SIGN CM083;Lo;0;L;;;;;N;;;;; +12FD6;CYPRO-MINOAN SIGN CM084;Lo;0;L;;;;;N;;;;; +12FD7;CYPRO-MINOAN SIGN CM085;Lo;0;L;;;;;N;;;;; +12FD8;CYPRO-MINOAN SIGN CM086;Lo;0;L;;;;;N;;;;; +12FD9;CYPRO-MINOAN SIGN CM087;Lo;0;L;;;;;N;;;;; +12FDA;CYPRO-MINOAN SIGN CM088;Lo;0;L;;;;;N;;;;; +12FDB;CYPRO-MINOAN SIGN CM089;Lo;0;L;;;;;N;;;;; +12FDC;CYPRO-MINOAN SIGN CM090;Lo;0;L;;;;;N;;;;; +12FDD;CYPRO-MINOAN SIGN CM091;Lo;0;L;;;;;N;;;;; +12FDE;CYPRO-MINOAN SIGN CM092;Lo;0;L;;;;;N;;;;; +12FDF;CYPRO-MINOAN SIGN CM094;Lo;0;L;;;;;N;;;;; +12FE0;CYPRO-MINOAN SIGN CM095;Lo;0;L;;;;;N;;;;; +12FE1;CYPRO-MINOAN SIGN CM096;Lo;0;L;;;;;N;;;;; +12FE2;CYPRO-MINOAN SIGN CM097;Lo;0;L;;;;;N;;;;; +12FE3;CYPRO-MINOAN SIGN CM098;Lo;0;L;;;;;N;;;;; +12FE4;CYPRO-MINOAN SIGN CM099;Lo;0;L;;;;;N;;;;; +12FE5;CYPRO-MINOAN SIGN CM100;Lo;0;L;;;;;N;;;;; +12FE6;CYPRO-MINOAN SIGN CM101;Lo;0;L;;;;;N;;;;; +12FE7;CYPRO-MINOAN SIGN CM102;Lo;0;L;;;;;N;;;;; +12FE8;CYPRO-MINOAN SIGN CM103;Lo;0;L;;;;;N;;;;; +12FE9;CYPRO-MINOAN SIGN CM104;Lo;0;L;;;;;N;;;;; +12FEA;CYPRO-MINOAN SIGN CM105;Lo;0;L;;;;;N;;;;; +12FEB;CYPRO-MINOAN SIGN CM107;Lo;0;L;;;;;N;;;;; +12FEC;CYPRO-MINOAN SIGN CM108;Lo;0;L;;;;;N;;;;; +12FED;CYPRO-MINOAN SIGN CM109;Lo;0;L;;;;;N;;;;; +12FEE;CYPRO-MINOAN SIGN CM110;Lo;0;L;;;;;N;;;;; +12FEF;CYPRO-MINOAN SIGN CM112;Lo;0;L;;;;;N;;;;; +12FF0;CYPRO-MINOAN SIGN CM114;Lo;0;L;;;;;N;;;;; +12FF1;CYPRO-MINOAN SIGN CM301;Po;0;L;;;;;N;;;;; +12FF2;CYPRO-MINOAN SIGN CM302;Po;0;L;;;;;N;;;;; 13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; 13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; 13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; @@ -23631,6 +24144,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;; 1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;; 1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;; +1342F;EGYPTIAN HIEROGLYPH V011D;Lo;0;L;;;;;N;;;;; 13430;EGYPTIAN HIEROGLYPH VERTICAL JOINER;Cf;0;L;;;;;N;;;;; 13431;EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;Cf;0;L;;;;;N;;;;; 13432;EGYPTIAN HIEROGLYPH INSERT AT TOP START;Cf;0;L;;;;;N;;;;; @@ -23640,6 +24154,35 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 13436;EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;Cf;0;L;;;;;N;;;;; 13437;EGYPTIAN HIEROGLYPH BEGIN SEGMENT;Cf;0;L;;;;;N;;;;; 13438;EGYPTIAN HIEROGLYPH END SEGMENT;Cf;0;L;;;;;N;;;;; +13439;EGYPTIAN HIEROGLYPH INSERT AT MIDDLE;Cf;0;L;;;;;N;;;;; +1343A;EGYPTIAN HIEROGLYPH INSERT AT TOP;Cf;0;L;;;;;N;;;;; +1343B;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM;Cf;0;L;;;;;N;;;;; +1343C;EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE;Cf;0;L;;;;;N;;;;; +1343D;EGYPTIAN HIEROGLYPH END ENCLOSURE;Cf;0;L;;;;;N;;;;; +1343E;EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;; +1343F;EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;; +13440;EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY;Mn;0;NSM;;;;;N;;;;; +13441;EGYPTIAN HIEROGLYPH FULL BLANK;Lo;0;L;;;;;N;;;;; +13442;EGYPTIAN HIEROGLYPH HALF BLANK;Lo;0;L;;;;;N;;;;; +13443;EGYPTIAN HIEROGLYPH LOST SIGN;Lo;0;L;;;;;N;;;;; +13444;EGYPTIAN HIEROGLYPH HALF LOST SIGN;Lo;0;L;;;;;N;;;;; +13445;EGYPTIAN HIEROGLYPH TALL LOST SIGN;Lo;0;L;;;;;N;;;;; +13446;EGYPTIAN HIEROGLYPH WIDE LOST SIGN;Lo;0;L;;;;;N;;;;; +13447;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START;Mn;0;NSM;;;;;N;;;;; +13448;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START;Mn;0;NSM;;;;;N;;;;; +13449;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START;Mn;0;NSM;;;;;N;;;;; +1344A;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END;Mn;0;NSM;;;;;N;;;;; +1344B;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP;Mn;0;NSM;;;;;N;;;;; +1344C;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END;Mn;0;NSM;;;;;N;;;;; +1344D;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP;Mn;0;NSM;;;;;N;;;;; +1344E;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END;Mn;0;NSM;;;;;N;;;;; +1344F;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END;Mn;0;NSM;;;;;N;;;;; +13450;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM;Mn;0;NSM;;;;;N;;;;; +13451;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM;Mn;0;NSM;;;;;N;;;;; +13452;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END;Mn;0;NSM;;;;;N;;;;; +13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;; +13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;; +13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;; 14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; 14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; 14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; @@ -24835,6 +25378,95 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 16A69;MRO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16A6E;MRO DANDA;Po;0;L;;;;;N;;;;; 16A6F;MRO DOUBLE DANDA;Po;0;L;;;;;N;;;;; +16A70;TANGSA LETTER OZ;Lo;0;L;;;;;N;;;;; +16A71;TANGSA LETTER OC;Lo;0;L;;;;;N;;;;; +16A72;TANGSA LETTER OQ;Lo;0;L;;;;;N;;;;; +16A73;TANGSA LETTER OX;Lo;0;L;;;;;N;;;;; +16A74;TANGSA LETTER AZ;Lo;0;L;;;;;N;;;;; +16A75;TANGSA LETTER AC;Lo;0;L;;;;;N;;;;; +16A76;TANGSA LETTER AQ;Lo;0;L;;;;;N;;;;; +16A77;TANGSA LETTER AX;Lo;0;L;;;;;N;;;;; +16A78;TANGSA LETTER VZ;Lo;0;L;;;;;N;;;;; +16A79;TANGSA LETTER VC;Lo;0;L;;;;;N;;;;; +16A7A;TANGSA LETTER VQ;Lo;0;L;;;;;N;;;;; +16A7B;TANGSA LETTER VX;Lo;0;L;;;;;N;;;;; +16A7C;TANGSA LETTER EZ;Lo;0;L;;;;;N;;;;; +16A7D;TANGSA LETTER EC;Lo;0;L;;;;;N;;;;; +16A7E;TANGSA LETTER EQ;Lo;0;L;;;;;N;;;;; +16A7F;TANGSA LETTER EX;Lo;0;L;;;;;N;;;;; +16A80;TANGSA LETTER IZ;Lo;0;L;;;;;N;;;;; +16A81;TANGSA LETTER IC;Lo;0;L;;;;;N;;;;; +16A82;TANGSA LETTER IQ;Lo;0;L;;;;;N;;;;; +16A83;TANGSA LETTER IX;Lo;0;L;;;;;N;;;;; +16A84;TANGSA LETTER UZ;Lo;0;L;;;;;N;;;;; +16A85;TANGSA LETTER UC;Lo;0;L;;;;;N;;;;; +16A86;TANGSA LETTER UQ;Lo;0;L;;;;;N;;;;; +16A87;TANGSA LETTER UX;Lo;0;L;;;;;N;;;;; +16A88;TANGSA LETTER AWZ;Lo;0;L;;;;;N;;;;; +16A89;TANGSA LETTER AWC;Lo;0;L;;;;;N;;;;; +16A8A;TANGSA LETTER AWQ;Lo;0;L;;;;;N;;;;; +16A8B;TANGSA LETTER AWX;Lo;0;L;;;;;N;;;;; +16A8C;TANGSA LETTER UIZ;Lo;0;L;;;;;N;;;;; +16A8D;TANGSA LETTER UIC;Lo;0;L;;;;;N;;;;; +16A8E;TANGSA LETTER UIQ;Lo;0;L;;;;;N;;;;; +16A8F;TANGSA LETTER UIX;Lo;0;L;;;;;N;;;;; +16A90;TANGSA LETTER FINAL NG;Lo;0;L;;;;;N;;;;; +16A91;TANGSA LETTER LONG UEX;Lo;0;L;;;;;N;;;;; +16A92;TANGSA LETTER SHORT UEZ;Lo;0;L;;;;;N;;;;; +16A93;TANGSA LETTER SHORT AWX;Lo;0;L;;;;;N;;;;; +16A94;TANGSA LETTER UEC;Lo;0;L;;;;;N;;;;; +16A95;TANGSA LETTER UEZ;Lo;0;L;;;;;N;;;;; +16A96;TANGSA LETTER UEQ;Lo;0;L;;;;;N;;;;; +16A97;TANGSA LETTER UEX;Lo;0;L;;;;;N;;;;; +16A98;TANGSA LETTER UIUZ;Lo;0;L;;;;;N;;;;; +16A99;TANGSA LETTER UIUC;Lo;0;L;;;;;N;;;;; +16A9A;TANGSA LETTER UIUQ;Lo;0;L;;;;;N;;;;; +16A9B;TANGSA LETTER UIUX;Lo;0;L;;;;;N;;;;; +16A9C;TANGSA LETTER MZ;Lo;0;L;;;;;N;;;;; +16A9D;TANGSA LETTER MC;Lo;0;L;;;;;N;;;;; +16A9E;TANGSA LETTER MQ;Lo;0;L;;;;;N;;;;; +16A9F;TANGSA LETTER MX;Lo;0;L;;;;;N;;;;; +16AA0;TANGSA LETTER KA;Lo;0;L;;;;;N;;;;; +16AA1;TANGSA LETTER KHA;Lo;0;L;;;;;N;;;;; +16AA2;TANGSA LETTER GA;Lo;0;L;;;;;N;;;;; +16AA3;TANGSA LETTER NGA;Lo;0;L;;;;;N;;;;; +16AA4;TANGSA LETTER SA;Lo;0;L;;;;;N;;;;; +16AA5;TANGSA LETTER YA;Lo;0;L;;;;;N;;;;; +16AA6;TANGSA LETTER WA;Lo;0;L;;;;;N;;;;; +16AA7;TANGSA LETTER PA;Lo;0;L;;;;;N;;;;; +16AA8;TANGSA LETTER NYA;Lo;0;L;;;;;N;;;;; +16AA9;TANGSA LETTER PHA;Lo;0;L;;;;;N;;;;; +16AAA;TANGSA LETTER BA;Lo;0;L;;;;;N;;;;; +16AAB;TANGSA LETTER MA;Lo;0;L;;;;;N;;;;; +16AAC;TANGSA LETTER NA;Lo;0;L;;;;;N;;;;; +16AAD;TANGSA LETTER HA;Lo;0;L;;;;;N;;;;; +16AAE;TANGSA LETTER LA;Lo;0;L;;;;;N;;;;; +16AAF;TANGSA LETTER HTA;Lo;0;L;;;;;N;;;;; +16AB0;TANGSA LETTER TA;Lo;0;L;;;;;N;;;;; +16AB1;TANGSA LETTER DA;Lo;0;L;;;;;N;;;;; +16AB2;TANGSA LETTER RA;Lo;0;L;;;;;N;;;;; +16AB3;TANGSA LETTER NHA;Lo;0;L;;;;;N;;;;; +16AB4;TANGSA LETTER SHA;Lo;0;L;;;;;N;;;;; +16AB5;TANGSA LETTER CA;Lo;0;L;;;;;N;;;;; +16AB6;TANGSA LETTER TSA;Lo;0;L;;;;;N;;;;; +16AB7;TANGSA LETTER GHA;Lo;0;L;;;;;N;;;;; +16AB8;TANGSA LETTER HTTA;Lo;0;L;;;;;N;;;;; +16AB9;TANGSA LETTER THA;Lo;0;L;;;;;N;;;;; +16ABA;TANGSA LETTER XA;Lo;0;L;;;;;N;;;;; +16ABB;TANGSA LETTER FA;Lo;0;L;;;;;N;;;;; +16ABC;TANGSA LETTER DHA;Lo;0;L;;;;;N;;;;; +16ABD;TANGSA LETTER CHA;Lo;0;L;;;;;N;;;;; +16ABE;TANGSA LETTER ZA;Lo;0;L;;;;;N;;;;; +16AC0;TANGSA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +16AC1;TANGSA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +16AC2;TANGSA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +16AC3;TANGSA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +16AC4;TANGSA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +16AC5;TANGSA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +16AC6;TANGSA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +16AC7;TANGSA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +16AC8;TANGSA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +16AC9;TANGSA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 16AD0;BASSA VAH LETTER ENNI;Lo;0;L;;;;;N;;;;; 16AD1;BASSA VAH LETTER KA;Lo;0;L;;;;;N;;;;; 16AD2;BASSA VAH LETTER SE;Lo;0;L;;;;;N;;;;; @@ -26487,6 +27119,19 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;; 18D00;;Lo;0;L;;;;;N;;;;; 18D08;;Lo;0;L;;;;;N;;;;; +1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;; +1AFF1;KATAKANA LETTER MINNAN TONE-3;Lm;0;L;;;;;N;;;;; +1AFF2;KATAKANA LETTER MINNAN TONE-4;Lm;0;L;;;;;N;;;;; +1AFF3;KATAKANA LETTER MINNAN TONE-5;Lm;0;L;;;;;N;;;;; +1AFF5;KATAKANA LETTER MINNAN TONE-7;Lm;0;L;;;;;N;;;;; +1AFF6;KATAKANA LETTER MINNAN TONE-8;Lm;0;L;;;;;N;;;;; +1AFF7;KATAKANA LETTER MINNAN NASALIZED TONE-1;Lm;0;L;;;;;N;;;;; +1AFF8;KATAKANA LETTER MINNAN NASALIZED TONE-2;Lm;0;L;;;;;N;;;;; +1AFF9;KATAKANA LETTER MINNAN NASALIZED TONE-3;Lm;0;L;;;;;N;;;;; +1AFFA;KATAKANA LETTER MINNAN NASALIZED TONE-4;Lm;0;L;;;;;N;;;;; +1AFFB;KATAKANA LETTER MINNAN NASALIZED TONE-5;Lm;0;L;;;;;N;;;;; +1AFFD;KATAKANA LETTER MINNAN NASALIZED TONE-7;Lm;0;L;;;;;N;;;;; +1AFFE;KATAKANA LETTER MINNAN NASALIZED TONE-8;Lm;0;L;;;;;N;;;;; 1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;; 1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; 1B002;HENTAIGANA LETTER A-1;Lo;0;L;;;;;N;;;;; @@ -26774,9 +27419,15 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1B11C;HENTAIGANA LETTER WO-7;Lo;0;L;;;;;N;;;;; 1B11D;HENTAIGANA LETTER N-MU-MO-1;Lo;0;L;;;;;N;;;;; 1B11E;HENTAIGANA LETTER N-MU-MO-2;Lo;0;L;;;;;N;;;;; +1B11F;HIRAGANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;; +1B120;KATAKANA LETTER ARCHAIC YI;Lo;0;L;;;;;N;;;;; +1B121;KATAKANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;; +1B122;KATAKANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;; +1B132;HIRAGANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;; 1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;; 1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;; 1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;; +1B155;KATAKANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;; 1B164;KATAKANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;; 1B165;KATAKANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;; 1B166;KATAKANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;; @@ -27324,6 +27975,191 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;; 1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;; 1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;; +1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF03;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF04;ZNAMENNY COMBINING MARK NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF05;ZNAMENNY COMBINING MARK SREDNE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF06;ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF07;ZNAMENNY COMBINING MARK POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF08;ZNAMENNY COMBINING MARK VYSOKO ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF09;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0A;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0B;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF0C;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0D;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0E;ZNAMENNY COMBINING MARK TSATA ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF0F;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF10;ZNAMENNY COMBINING MARK NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF11;ZNAMENNY COMBINING MARK SREDNE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF12;ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF13;ZNAMENNY COMBINING MARK POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF14;ZNAMENNY COMBINING MARK VYSOKO ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF15;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF16;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF17;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;; +1CF18;ZNAMENNY COMBINING MARK TSATA S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF19;ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1A;ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE;Mn;0;NSM;;;;;N;;;;; +1CF1B;ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1C;ZNAMENNY COMBINING MARK POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;; +1CF1D;ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM;Mn;0;NSM;;;;;N;;;;; +1CF1E;ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;; +1CF1F;ZNAMENNY COMBINING MARK GORAZDO VYSOKO;Mn;0;NSM;;;;;N;;;;; +1CF20;ZNAMENNY COMBINING MARK ZELO;Mn;0;NSM;;;;;N;;;;; +1CF21;ZNAMENNY COMBINING MARK ON;Mn;0;NSM;;;;;N;;;;; +1CF22;ZNAMENNY COMBINING MARK RAVNO;Mn;0;NSM;;;;;N;;;;; +1CF23;ZNAMENNY COMBINING MARK TIKHAYA;Mn;0;NSM;;;;;N;;;;; +1CF24;ZNAMENNY COMBINING MARK BORZAYA;Mn;0;NSM;;;;;N;;;;; +1CF25;ZNAMENNY COMBINING MARK UDARKA;Mn;0;NSM;;;;;N;;;;; +1CF26;ZNAMENNY COMBINING MARK PODVERTKA;Mn;0;NSM;;;;;N;;;;; +1CF27;ZNAMENNY COMBINING MARK LOMKA;Mn;0;NSM;;;;;N;;;;; +1CF28;ZNAMENNY COMBINING MARK KUPNAYA;Mn;0;NSM;;;;;N;;;;; +1CF29;ZNAMENNY COMBINING MARK KACHKA;Mn;0;NSM;;;;;N;;;;; +1CF2A;ZNAMENNY COMBINING MARK ZEVOK;Mn;0;NSM;;;;;N;;;;; +1CF2B;ZNAMENNY COMBINING MARK SKOBA;Mn;0;NSM;;;;;N;;;;; +1CF2C;ZNAMENNY COMBINING MARK RAZSEKA;Mn;0;NSM;;;;;N;;;;; +1CF2D;ZNAMENNY COMBINING MARK KRYZH ON LEFT;Mn;0;NSM;;;;;N;;;;; +1CF30;ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO;Mn;0;NSM;;;;;N;;;;; +1CF31;ZNAMENNY COMBINING TONAL RANGE MARK SVETLO;Mn;0;NSM;;;;;N;;;;; +1CF32;ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO;Mn;0;NSM;;;;;N;;;;; +1CF33;ZNAMENNY COMBINING MARK ZADERZHKA;Mn;0;NSM;;;;;N;;;;; +1CF34;ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA;Mn;0;NSM;;;;;N;;;;; +1CF35;ZNAMENNY COMBINING MARK OTSECHKA;Mn;0;NSM;;;;;N;;;;; +1CF36;ZNAMENNY COMBINING MARK PODCHASHIE;Mn;0;NSM;;;;;N;;;;; +1CF37;ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE;Mn;0;NSM;;;;;N;;;;; +1CF38;ZNAMENNY COMBINING MARK CHASHKA;Mn;0;NSM;;;;;N;;;;; +1CF39;ZNAMENNY COMBINING MARK CHASHKA POLNAYA;Mn;0;NSM;;;;;N;;;;; +1CF3A;ZNAMENNY COMBINING MARK OBLACHKO;Mn;0;NSM;;;;;N;;;;; +1CF3B;ZNAMENNY COMBINING MARK SOROCHYA NOZHKA;Mn;0;NSM;;;;;N;;;;; +1CF3C;ZNAMENNY COMBINING MARK TOCHKA;Mn;0;NSM;;;;;N;;;;; +1CF3D;ZNAMENNY COMBINING MARK DVOETOCHIE;Mn;0;NSM;;;;;N;;;;; +1CF3E;ZNAMENNY COMBINING ATTACHING VERTICAL OMET;Mn;0;NSM;;;;;N;;;;; +1CF3F;ZNAMENNY COMBINING MARK CURVED OMET;Mn;0;NSM;;;;;N;;;;; +1CF40;ZNAMENNY COMBINING MARK KRYZH;Mn;0;NSM;;;;;N;;;;; +1CF41;ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR;Mn;0;NSM;;;;;N;;;;; +1CF42;ZNAMENNY PRIZNAK MODIFIER LEVEL-2;Mn;0;NSM;;;;;N;;;;; +1CF43;ZNAMENNY PRIZNAK MODIFIER LEVEL-3;Mn;0;NSM;;;;;N;;;;; +1CF44;ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP;Mn;0;NSM;;;;;N;;;;; +1CF45;ZNAMENNY PRIZNAK MODIFIER KRYZH;Mn;0;NSM;;;;;N;;;;; +1CF46;ZNAMENNY PRIZNAK MODIFIER ROG;Mn;0;NSM;;;;;N;;;;; +1CF50;ZNAMENNY NEUME KRYUK;So;0;L;;;;;N;;;;; +1CF51;ZNAMENNY NEUME KRYUK TIKHY;So;0;L;;;;;N;;;;; +1CF52;ZNAMENNY NEUME PARAKLIT;So;0;L;;;;;N;;;;; +1CF53;ZNAMENNY NEUME DVA V CHELNU;So;0;L;;;;;N;;;;; +1CF54;ZNAMENNY NEUME KLYUCH;So;0;L;;;;;N;;;;; +1CF55;ZNAMENNY NEUME ZANOZHEK;So;0;L;;;;;N;;;;; +1CF56;ZNAMENNY NEUME STOPITSA;So;0;L;;;;;N;;;;; +1CF57;ZNAMENNY NEUME STOPITSA S OCHKOM;So;0;L;;;;;N;;;;; +1CF58;ZNAMENNY NEUME PEREVODKA;So;0;L;;;;;N;;;;; +1CF59;ZNAMENNY NEUME PEREVODKA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF5A;ZNAMENNY NEUME STOPITSA WITH SOROCHYA NOZHKA;So;0;L;;;;;N;;;;; +1CF5B;ZNAMENNY NEUME CHELYUSTKA;So;0;L;;;;;N;;;;; +1CF5C;ZNAMENNY NEUME PALKA;So;0;L;;;;;N;;;;; +1CF5D;ZNAMENNY NEUME ZAPYATAYA;So;0;L;;;;;N;;;;; +1CF5E;ZNAMENNY NEUME GOLUBCHIK BORZY;So;0;L;;;;;N;;;;; +1CF5F;ZNAMENNY NEUME GOLUBCHIK TIKHY;So;0;L;;;;;N;;;;; +1CF60;ZNAMENNY NEUME GOLUBCHIK MRACHNY;So;0;L;;;;;N;;;;; +1CF61;ZNAMENNY NEUME GOLUBCHIK SVETLY;So;0;L;;;;;N;;;;; +1CF62;ZNAMENNY NEUME GOLUBCHIK TRESVETLY;So;0;L;;;;;N;;;;; +1CF63;ZNAMENNY NEUME VRAKHIYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF64;ZNAMENNY NEUME VRAKHIYA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF65;ZNAMENNY NEUME VRAKHIYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF66;ZNAMENNY NEUME VRAKHIYA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF67;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF68;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF69;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF6A;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF6B;ZNAMENNY NEUME DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CF6C;ZNAMENNY NEUME REVERSED CHELYUSTKA;So;0;L;;;;;N;;;;; +1CF6D;ZNAMENNY NEUME DERBITSA;So;0;L;;;;;N;;;;; +1CF6E;ZNAMENNY NEUME KHAMILO;So;0;L;;;;;N;;;;; +1CF6F;ZNAMENNY NEUME CHASHKA;So;0;L;;;;;N;;;;; +1CF70;ZNAMENNY NEUME PODCHASHIE;So;0;L;;;;;N;;;;; +1CF71;ZNAMENNY NEUME SKAMEYTSA MRACHNAYA;So;0;L;;;;;N;;;;; +1CF72;ZNAMENNY NEUME SKAMEYTSA SVETLAYA;So;0;L;;;;;N;;;;; +1CF73;ZNAMENNY NEUME SKAMEYTSA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CF74;ZNAMENNY NEUME SKAMEYTSA TIKHAYA;So;0;L;;;;;N;;;;; +1CF75;ZNAMENNY NEUME DEMESTVENNY KLYUCH;So;0;L;;;;;N;;;;; +1CF76;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF77;ZNAMENNY NEUME SKAMEYTSA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF78;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA TIKHAYA;So;0;L;;;;;N;;;;; +1CF79;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA PROSTAYA;So;0;L;;;;;N;;;;; +1CF7A;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CF7B;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF7C;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CF7D;ZNAMENNY NEUME SLOZHITIE;So;0;L;;;;;N;;;;; +1CF7E;ZNAMENNY NEUME SLOZHITIE S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF7F;ZNAMENNY NEUME SLOZHITIE ZAKRYTOE;So;0;L;;;;;N;;;;; +1CF80;ZNAMENNY NEUME SLOZHITIE S KRYZHEM;So;0;L;;;;;N;;;;; +1CF81;ZNAMENNY NEUME KRYZH;So;0;L;;;;;N;;;;; +1CF82;ZNAMENNY NEUME ROG;So;0;L;;;;;N;;;;; +1CF83;ZNAMENNY NEUME FITA;So;0;L;;;;;N;;;;; +1CF84;ZNAMENNY NEUME KOBYLA;So;0;L;;;;;N;;;;; +1CF85;ZNAMENNY NEUME ZMEYTSA;So;0;L;;;;;N;;;;; +1CF86;ZNAMENNY NEUME STATYA;So;0;L;;;;;N;;;;; +1CF87;ZNAMENNY NEUME STATYA S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF88;ZNAMENNY NEUME STATYA S KRYZHEM;So;0;L;;;;;N;;;;; +1CF89;ZNAMENNY NEUME STATYA S ZAPYATOY I KRYZHEM;So;0;L;;;;;N;;;;; +1CF8A;ZNAMENNY NEUME STATYA S KRYZHEM I ZAPYATOY;So;0;L;;;;;N;;;;; +1CF8B;ZNAMENNY NEUME STATYA ZAKRYTAYA;So;0;L;;;;;N;;;;; +1CF8C;ZNAMENNY NEUME STATYA ZAKRYTAYA S ZAPYATOY;So;0;L;;;;;N;;;;; +1CF8D;ZNAMENNY NEUME STATYA S ROGOM;So;0;L;;;;;N;;;;; +1CF8E;ZNAMENNY NEUME STATYA S DVUMYA ZAPYATYMI;So;0;L;;;;;N;;;;; +1CF8F;ZNAMENNY NEUME STATYA S ZAPYATOY I PODCHASHIEM;So;0;L;;;;;N;;;;; +1CF90;ZNAMENNY NEUME POLKULIZMY;So;0;L;;;;;N;;;;; +1CF91;ZNAMENNY NEUME STATYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF92;ZNAMENNY NEUME STRELA PROSTAYA;So;0;L;;;;;N;;;;; +1CF93;ZNAMENNY NEUME STRELA MRACHNOTIKHAYA;So;0;L;;;;;N;;;;; +1CF94;ZNAMENNY NEUME STRELA KRYZHEVAYA;So;0;L;;;;;N;;;;; +1CF95;ZNAMENNY NEUME STRELA POLUPOVODNAYA;So;0;L;;;;;N;;;;; +1CF96;ZNAMENNY NEUME STRELA POVODNAYA;So;0;L;;;;;N;;;;; +1CF97;ZNAMENNY NEUME STRELA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF98;ZNAMENNY NEUME STRELA KLYUCHEPOVODNAYA;So;0;L;;;;;N;;;;; +1CF99;ZNAMENNY NEUME STRELA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CF9A;ZNAMENNY NEUME STRELA TIKHAYA PUTNAYA;So;0;L;;;;;N;;;;; +1CF9B;ZNAMENNY NEUME STRELA DVOECHELNAYA;So;0;L;;;;;N;;;;; +1CF9C;ZNAMENNY NEUME STRELA DVOECHELNOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CF9D;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA;So;0;L;;;;;N;;;;; +1CF9E;ZNAMENNY NEUME STRELA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CF9F;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;; +1CFA0;ZNAMENNY NEUME STRELA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA1;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA2;ZNAMENNY NEUME STRELA GROMNAYA;So;0;L;;;;;N;;;;; +1CFA3;ZNAMENNY NEUME STRELA GROMOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFA4;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFA5;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CFA6;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFA7;ZNAMENNY NEUME MECHIK;So;0;L;;;;;N;;;;; +1CFA8;ZNAMENNY NEUME MECHIK POVODNY;So;0;L;;;;;N;;;;; +1CFA9;ZNAMENNY NEUME MECHIK KLYUCHEVOY;So;0;L;;;;;N;;;;; +1CFAA;ZNAMENNY NEUME MECHIK KLYUCHEPOVODNY;So;0;L;;;;;N;;;;; +1CFAB;ZNAMENNY NEUME MECHIK KLYUCHENEPOSTOYANNY;So;0;L;;;;;N;;;;; +1CFAC;ZNAMENNY NEUME STRELA TRYASOGLASNAYA;So;0;L;;;;;N;;;;; +1CFAD;ZNAMENNY NEUME STRELA TRYASOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFAE;ZNAMENNY NEUME STRELA TRYASOSTRELNAYA;So;0;L;;;;;N;;;;; +1CFAF;ZNAMENNY NEUME OSOKA;So;0;L;;;;;N;;;;; +1CFB0;ZNAMENNY NEUME OSOKA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB1;ZNAMENNY NEUME OSOKA TRESVETLAYA;So;0;L;;;;;N;;;;; +1CFB2;ZNAMENNY NEUME OSOKA KRYUKOVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB3;ZNAMENNY NEUME OSOKA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;; +1CFB4;ZNAMENNY NEUME OSOKA KLYUCHEVAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;; +1CFB5;ZNAMENNY NEUME STRELA KRYUKOVAYA;So;0;L;;;;;N;;;;; +1CFB6;ZNAMENNY NEUME STRELA KRYUKOVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFB7;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFB8;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFB9;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA;So;0;L;;;;;N;;;;; +1CFBA;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA;So;0;L;;;;;N;;;;; +1CFBB;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;; +1CFBC;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;; +1CFBD;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;; +1CFBE;ZNAMENNY NEUME STRELA KRYUKOVAYA TRYASKA;So;0;L;;;;;N;;;;; +1CFBF;ZNAMENNY NEUME KUFISMA;So;0;L;;;;;N;;;;; +1CFC0;ZNAMENNY NEUME OBLAKO;So;0;L;;;;;N;;;;; +1CFC1;ZNAMENNY NEUME DUDA;So;0;L;;;;;N;;;;; +1CFC2;ZNAMENNY NEUME NEMKA;So;0;L;;;;;N;;;;; +1CFC3;ZNAMENNY NEUME PAUK;So;0;L;;;;;N;;;;; 1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; 1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; 1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; @@ -27801,6 +28637,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;; 1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;; 1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;; +1D1E9;MUSICAL SYMBOL SORI;So;0;ON;;;;;N;;;;; +1D1EA;MUSICAL SYMBOL KORON;So;0;ON;;;;;N;;;;; 1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; 1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; 1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; @@ -27871,6 +28709,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; 1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; 1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; +1D2C0;KAKTOVIK NUMERAL ZERO;No;0;L;;;;0;N;;;;; +1D2C1;KAKTOVIK NUMERAL ONE;No;0;L;;;;1;N;;;;; +1D2C2;KAKTOVIK NUMERAL TWO;No;0;L;;;;2;N;;;;; +1D2C3;KAKTOVIK NUMERAL THREE;No;0;L;;;;3;N;;;;; +1D2C4;KAKTOVIK NUMERAL FOUR;No;0;L;;;;4;N;;;;; +1D2C5;KAKTOVIK NUMERAL FIVE;No;0;L;;;;5;N;;;;; +1D2C6;KAKTOVIK NUMERAL SIX;No;0;L;;;;6;N;;;;; +1D2C7;KAKTOVIK NUMERAL SEVEN;No;0;L;;;;7;N;;;;; +1D2C8;KAKTOVIK NUMERAL EIGHT;No;0;L;;;;8;N;;;;; +1D2C9;KAKTOVIK NUMERAL NINE;No;0;L;;;;9;N;;;;; +1D2CA;KAKTOVIK NUMERAL TEN;No;0;L;;;;10;N;;;;; +1D2CB;KAKTOVIK NUMERAL ELEVEN;No;0;L;;;;11;N;;;;; +1D2CC;KAKTOVIK NUMERAL TWELVE;No;0;L;;;;12;N;;;;; +1D2CD;KAKTOVIK NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;; +1D2CE;KAKTOVIK NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;; +1D2CF;KAKTOVIK NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;; +1D2D0;KAKTOVIK NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;; +1D2D1;KAKTOVIK NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;; +1D2D2;KAKTOVIK NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;; +1D2D3;KAKTOVIK NUMERAL NINETEEN;No;0;L;;;;19;N;;;;; 1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;; 1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;; 1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;; @@ -29671,6 +30529,43 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;; 1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;; 1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;; +1DF00;LATIN SMALL LETTER FENG DIGRAPH WITH TRILL;Ll;0;L;;;;;N;;;;; +1DF01;LATIN SMALL LETTER REVERSED SCRIPT G;Ll;0;L;;;;;N;;;;; +1DF02;LATIN LETTER SMALL CAPITAL TURNED G;Ll;0;L;;;;;N;;;;; +1DF03;LATIN SMALL LETTER REVERSED K;Ll;0;L;;;;;N;;;;; +1DF04;LATIN LETTER SMALL CAPITAL L WITH BELT;Ll;0;L;;;;;N;;;;; +1DF05;LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF06;LATIN SMALL LETTER TURNED Y WITH BELT;Ll;0;L;;;;;N;;;;; +1DF07;LATIN SMALL LETTER REVERSED ENG;Ll;0;L;;;;;N;;;;; +1DF08;LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF09;LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF0A;LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lo;0;L;;;;;N;;;;; +1DF0B;LATIN SMALL LETTER ESH WITH DOUBLE BAR;Ll;0;L;;;;;N;;;;; +1DF0C;LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL;Ll;0;L;;;;;N;;;;; +1DF0D;LATIN SMALL LETTER TURNED T WITH CURL;Ll;0;L;;;;;N;;;;; +1DF0E;LATIN LETTER INVERTED GLOTTAL STOP WITH CURL;Ll;0;L;;;;;N;;;;; +1DF0F;LATIN LETTER STRETCHED C WITH CURL;Ll;0;L;;;;;N;;;;; +1DF10;LATIN LETTER SMALL CAPITAL TURNED K;Ll;0;L;;;;;N;;;;; +1DF11;LATIN SMALL LETTER L WITH FISHHOOK;Ll;0;L;;;;;N;;;;; +1DF12;LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF13;LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF14;LATIN SMALL LETTER ENG WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF15;LATIN SMALL LETTER TURNED R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF16;LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF17;LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF18;LATIN SMALL LETTER EZH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; +1DF19;LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1A;LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1B;LATIN SMALL LETTER O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1C;LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1D;LATIN SMALL LETTER C WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; +1DF1E;LATIN SMALL LETTER S WITH CURL;Ll;0;L;;;;;N;;;;; +1DF25;LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF26;LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF27;LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF28;LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF29;LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; +1DF2A;LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;; 1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;; 1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;; 1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;; @@ -29709,6 +30604,69 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; 1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;; 1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; +1E030;MODIFIER LETTER CYRILLIC SMALL A;Lm;0;L; 0430;;;;N;;;;; +1E031;MODIFIER LETTER CYRILLIC SMALL BE;Lm;0;L; 0431;;;;N;;;;; +1E032;MODIFIER LETTER CYRILLIC SMALL VE;Lm;0;L; 0432;;;;N;;;;; +1E033;MODIFIER LETTER CYRILLIC SMALL GHE;Lm;0;L; 0433;;;;N;;;;; +1E034;MODIFIER LETTER CYRILLIC SMALL DE;Lm;0;L; 0434;;;;N;;;;; +1E035;MODIFIER LETTER CYRILLIC SMALL IE;Lm;0;L; 0435;;;;N;;;;; +1E036;MODIFIER LETTER CYRILLIC SMALL ZHE;Lm;0;L; 0436;;;;N;;;;; +1E037;MODIFIER LETTER CYRILLIC SMALL ZE;Lm;0;L; 0437;;;;N;;;;; +1E038;MODIFIER LETTER CYRILLIC SMALL I;Lm;0;L; 0438;;;;N;;;;; +1E039;MODIFIER LETTER CYRILLIC SMALL KA;Lm;0;L; 043A;;;;N;;;;; +1E03A;MODIFIER LETTER CYRILLIC SMALL EL;Lm;0;L; 043B;;;;N;;;;; +1E03B;MODIFIER LETTER CYRILLIC SMALL EM;Lm;0;L; 043C;;;;N;;;;; +1E03C;MODIFIER LETTER CYRILLIC SMALL O;Lm;0;L; 043E;;;;N;;;;; +1E03D;MODIFIER LETTER CYRILLIC SMALL PE;Lm;0;L; 043F;;;;N;;;;; +1E03E;MODIFIER LETTER CYRILLIC SMALL ER;Lm;0;L; 0440;;;;N;;;;; +1E03F;MODIFIER LETTER CYRILLIC SMALL ES;Lm;0;L; 0441;;;;N;;;;; +1E040;MODIFIER LETTER CYRILLIC SMALL TE;Lm;0;L; 0442;;;;N;;;;; +1E041;MODIFIER LETTER CYRILLIC SMALL U;Lm;0;L; 0443;;;;N;;;;; +1E042;MODIFIER LETTER CYRILLIC SMALL EF;Lm;0;L; 0444;;;;N;;;;; +1E043;MODIFIER LETTER CYRILLIC SMALL HA;Lm;0;L; 0445;;;;N;;;;; +1E044;MODIFIER LETTER CYRILLIC SMALL TSE;Lm;0;L; 0446;;;;N;;;;; +1E045;MODIFIER LETTER CYRILLIC SMALL CHE;Lm;0;L; 0447;;;;N;;;;; +1E046;MODIFIER LETTER CYRILLIC SMALL SHA;Lm;0;L; 0448;;;;N;;;;; +1E047;MODIFIER LETTER CYRILLIC SMALL YERU;Lm;0;L; 044B;;;;N;;;;; +1E048;MODIFIER LETTER CYRILLIC SMALL E;Lm;0;L; 044D;;;;N;;;;; +1E049;MODIFIER LETTER CYRILLIC SMALL YU;Lm;0;L; 044E;;;;N;;;;; +1E04A;MODIFIER LETTER CYRILLIC SMALL DZZE;Lm;0;L; A689;;;;N;;;;; +1E04B;MODIFIER LETTER CYRILLIC SMALL SCHWA;Lm;0;L; 04D9;;;;N;;;;; +1E04C;MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I;Lm;0;L; 0456;;;;N;;;;; +1E04D;MODIFIER LETTER CYRILLIC SMALL JE;Lm;0;L; 0458;;;;N;;;;; +1E04E;MODIFIER LETTER CYRILLIC SMALL BARRED O;Lm;0;L; 04E9;;;;N;;;;; +1E04F;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U;Lm;0;L; 04AF;;;;N;;;;; +1E050;MODIFIER LETTER CYRILLIC SMALL PALOCHKA;Lm;0;L; 04CF;;;;N;;;;; +1E051;CYRILLIC SUBSCRIPT SMALL LETTER A;Lm;0;L; 0430;;;;N;;;;; +1E052;CYRILLIC SUBSCRIPT SMALL LETTER BE;Lm;0;L; 0431;;;;N;;;;; +1E053;CYRILLIC SUBSCRIPT SMALL LETTER VE;Lm;0;L; 0432;;;;N;;;;; +1E054;CYRILLIC SUBSCRIPT SMALL LETTER GHE;Lm;0;L; 0433;;;;N;;;;; +1E055;CYRILLIC SUBSCRIPT SMALL LETTER DE;Lm;0;L; 0434;;;;N;;;;; +1E056;CYRILLIC SUBSCRIPT SMALL LETTER IE;Lm;0;L; 0435;;;;N;;;;; +1E057;CYRILLIC SUBSCRIPT SMALL LETTER ZHE;Lm;0;L; 0436;;;;N;;;;; +1E058;CYRILLIC SUBSCRIPT SMALL LETTER ZE;Lm;0;L; 0437;;;;N;;;;; +1E059;CYRILLIC SUBSCRIPT SMALL LETTER I;Lm;0;L; 0438;;;;N;;;;; +1E05A;CYRILLIC SUBSCRIPT SMALL LETTER KA;Lm;0;L; 043A;;;;N;;;;; +1E05B;CYRILLIC SUBSCRIPT SMALL LETTER EL;Lm;0;L; 043B;;;;N;;;;; +1E05C;CYRILLIC SUBSCRIPT SMALL LETTER O;Lm;0;L; 043E;;;;N;;;;; +1E05D;CYRILLIC SUBSCRIPT SMALL LETTER PE;Lm;0;L; 043F;;;;N;;;;; +1E05E;CYRILLIC SUBSCRIPT SMALL LETTER ES;Lm;0;L; 0441;;;;N;;;;; +1E05F;CYRILLIC SUBSCRIPT SMALL LETTER U;Lm;0;L; 0443;;;;N;;;;; +1E060;CYRILLIC SUBSCRIPT SMALL LETTER EF;Lm;0;L; 0444;;;;N;;;;; +1E061;CYRILLIC SUBSCRIPT SMALL LETTER HA;Lm;0;L; 0445;;;;N;;;;; +1E062;CYRILLIC SUBSCRIPT SMALL LETTER TSE;Lm;0;L; 0446;;;;N;;;;; +1E063;CYRILLIC SUBSCRIPT SMALL LETTER CHE;Lm;0;L; 0447;;;;N;;;;; +1E064;CYRILLIC SUBSCRIPT SMALL LETTER SHA;Lm;0;L; 0448;;;;N;;;;; +1E065;CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN;Lm;0;L; 044A;;;;N;;;;; +1E066;CYRILLIC SUBSCRIPT SMALL LETTER YERU;Lm;0;L; 044B;;;;N;;;;; +1E067;CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN;Lm;0;L; 0491;;;;N;;;;; +1E068;CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Lm;0;L; 0456;;;;N;;;;; +1E069;CYRILLIC SUBSCRIPT SMALL LETTER DZE;Lm;0;L; 0455;;;;N;;;;; +1E06A;CYRILLIC SUBSCRIPT SMALL LETTER DZHE;Lm;0;L; 045F;;;;N;;;;; +1E06B;MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER;Lm;0;L; 04AB;;;;N;;;;; +1E06C;MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;Lm;0;L; A651;;;;N;;;;; +1E06D;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;Lm;0;L; 04B1;;;;N;;;;; +1E08F;COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Mn;230;NSM;;;;;N;;;;; 1E100;NYIAKENG PUACHUE HMONG LETTER MA;Lo;0;L;;;;;N;;;;; 1E101;NYIAKENG PUACHUE HMONG LETTER TSA;Lo;0;L;;;;;N;;;;; 1E102;NYIAKENG PUACHUE HMONG LETTER NTA;Lo;0;L;;;;;N;;;;; @@ -29780,6 +30738,37 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E149;NYIAKENG PUACHUE HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1E14E;NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ;Lo;0;L;;;;;N;;;;; 1E14F;NYIAKENG PUACHUE HMONG CIRCLED CA;So;0;L;;;;;N;;;;; +1E290;TOTO LETTER PA;Lo;0;L;;;;;N;;;;; +1E291;TOTO LETTER BA;Lo;0;L;;;;;N;;;;; +1E292;TOTO LETTER TA;Lo;0;L;;;;;N;;;;; +1E293;TOTO LETTER DA;Lo;0;L;;;;;N;;;;; +1E294;TOTO LETTER KA;Lo;0;L;;;;;N;;;;; +1E295;TOTO LETTER GA;Lo;0;L;;;;;N;;;;; +1E296;TOTO LETTER MA;Lo;0;L;;;;;N;;;;; +1E297;TOTO LETTER NA;Lo;0;L;;;;;N;;;;; +1E298;TOTO LETTER NGA;Lo;0;L;;;;;N;;;;; +1E299;TOTO LETTER SA;Lo;0;L;;;;;N;;;;; +1E29A;TOTO LETTER CHA;Lo;0;L;;;;;N;;;;; +1E29B;TOTO LETTER YA;Lo;0;L;;;;;N;;;;; +1E29C;TOTO LETTER WA;Lo;0;L;;;;;N;;;;; +1E29D;TOTO LETTER JA;Lo;0;L;;;;;N;;;;; +1E29E;TOTO LETTER HA;Lo;0;L;;;;;N;;;;; +1E29F;TOTO LETTER RA;Lo;0;L;;;;;N;;;;; +1E2A0;TOTO LETTER LA;Lo;0;L;;;;;N;;;;; +1E2A1;TOTO LETTER I;Lo;0;L;;;;;N;;;;; +1E2A2;TOTO LETTER BREATHY I;Lo;0;L;;;;;N;;;;; +1E2A3;TOTO LETTER IU;Lo;0;L;;;;;N;;;;; +1E2A4;TOTO LETTER BREATHY IU;Lo;0;L;;;;;N;;;;; +1E2A5;TOTO LETTER U;Lo;0;L;;;;;N;;;;; +1E2A6;TOTO LETTER E;Lo;0;L;;;;;N;;;;; +1E2A7;TOTO LETTER BREATHY E;Lo;0;L;;;;;N;;;;; +1E2A8;TOTO LETTER EO;Lo;0;L;;;;;N;;;;; +1E2A9;TOTO LETTER BREATHY EO;Lo;0;L;;;;;N;;;;; +1E2AA;TOTO LETTER O;Lo;0;L;;;;;N;;;;; +1E2AB;TOTO LETTER AE;Lo;0;L;;;;;N;;;;; +1E2AC;TOTO LETTER BREATHY AE;Lo;0;L;;;;;N;;;;; +1E2AD;TOTO LETTER A;Lo;0;L;;;;;N;;;;; +1E2AE;TOTO SIGN RISING TONE;Mn;230;NSM;;;;;N;;;;; 1E2C0;WANCHO LETTER AA;Lo;0;L;;;;;N;;;;; 1E2C1;WANCHO LETTER A;Lo;0;L;;;;;N;;;;; 1E2C2;WANCHO LETTER BA;Lo;0;L;;;;;N;;;;; @@ -29839,6 +30828,76 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;; +1E4D0;NAG MUNDARI LETTER O;Lo;0;L;;;;;N;;;;; +1E4D1;NAG MUNDARI LETTER OP;Lo;0;L;;;;;N;;;;; +1E4D2;NAG MUNDARI LETTER OL;Lo;0;L;;;;;N;;;;; +1E4D3;NAG MUNDARI LETTER OY;Lo;0;L;;;;;N;;;;; +1E4D4;NAG MUNDARI LETTER ONG;Lo;0;L;;;;;N;;;;; +1E4D5;NAG MUNDARI LETTER A;Lo;0;L;;;;;N;;;;; +1E4D6;NAG MUNDARI LETTER AJ;Lo;0;L;;;;;N;;;;; +1E4D7;NAG MUNDARI LETTER AB;Lo;0;L;;;;;N;;;;; +1E4D8;NAG MUNDARI LETTER ANY;Lo;0;L;;;;;N;;;;; +1E4D9;NAG MUNDARI LETTER AH;Lo;0;L;;;;;N;;;;; +1E4DA;NAG MUNDARI LETTER I;Lo;0;L;;;;;N;;;;; +1E4DB;NAG MUNDARI LETTER IS;Lo;0;L;;;;;N;;;;; +1E4DC;NAG MUNDARI LETTER IDD;Lo;0;L;;;;;N;;;;; +1E4DD;NAG MUNDARI LETTER IT;Lo;0;L;;;;;N;;;;; +1E4DE;NAG MUNDARI LETTER IH;Lo;0;L;;;;;N;;;;; +1E4DF;NAG MUNDARI LETTER U;Lo;0;L;;;;;N;;;;; +1E4E0;NAG MUNDARI LETTER UC;Lo;0;L;;;;;N;;;;; +1E4E1;NAG MUNDARI LETTER UD;Lo;0;L;;;;;N;;;;; +1E4E2;NAG MUNDARI LETTER UK;Lo;0;L;;;;;N;;;;; +1E4E3;NAG MUNDARI LETTER UR;Lo;0;L;;;;;N;;;;; +1E4E4;NAG MUNDARI LETTER E;Lo;0;L;;;;;N;;;;; +1E4E5;NAG MUNDARI LETTER ENN;Lo;0;L;;;;;N;;;;; +1E4E6;NAG MUNDARI LETTER EG;Lo;0;L;;;;;N;;;;; +1E4E7;NAG MUNDARI LETTER EM;Lo;0;L;;;;;N;;;;; +1E4E8;NAG MUNDARI LETTER EN;Lo;0;L;;;;;N;;;;; +1E4E9;NAG MUNDARI LETTER ETT;Lo;0;L;;;;;N;;;;; +1E4EA;NAG MUNDARI LETTER ELL;Lo;0;L;;;;;N;;;;; +1E4EB;NAG MUNDARI SIGN OJOD;Lm;0;L;;;;;N;;;;; +1E4EC;NAG MUNDARI SIGN MUHOR;Mn;232;NSM;;;;;N;;;;; +1E4ED;NAG MUNDARI SIGN TOYOR;Mn;232;NSM;;;;;N;;;;; +1E4EE;NAG MUNDARI SIGN IKIR;Mn;220;NSM;;;;;N;;;;; +1E4EF;NAG MUNDARI SIGN SUTUH;Mn;230;NSM;;;;;N;;;;; +1E4F0;NAG MUNDARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; +1E4F1;NAG MUNDARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; +1E4F2;NAG MUNDARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; +1E4F3;NAG MUNDARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; +1E4F4;NAG MUNDARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; +1E4F5;NAG MUNDARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; +1E4F6;NAG MUNDARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; +1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; +1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; +1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; +1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;; +1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;; +1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;; +1E7E3;ETHIOPIC SYLLABLE HHYAA;Lo;0;L;;;;;N;;;;; +1E7E4;ETHIOPIC SYLLABLE HHYEE;Lo;0;L;;;;;N;;;;; +1E7E5;ETHIOPIC SYLLABLE HHYE;Lo;0;L;;;;;N;;;;; +1E7E6;ETHIOPIC SYLLABLE HHYO;Lo;0;L;;;;;N;;;;; +1E7E8;ETHIOPIC SYLLABLE GURAGE HHWA;Lo;0;L;;;;;N;;;;; +1E7E9;ETHIOPIC SYLLABLE HHWI;Lo;0;L;;;;;N;;;;; +1E7EA;ETHIOPIC SYLLABLE HHWEE;Lo;0;L;;;;;N;;;;; +1E7EB;ETHIOPIC SYLLABLE HHWE;Lo;0;L;;;;;N;;;;; +1E7ED;ETHIOPIC SYLLABLE GURAGE MWI;Lo;0;L;;;;;N;;;;; +1E7EE;ETHIOPIC SYLLABLE GURAGE MWEE;Lo;0;L;;;;;N;;;;; +1E7F0;ETHIOPIC SYLLABLE GURAGE QWI;Lo;0;L;;;;;N;;;;; +1E7F1;ETHIOPIC SYLLABLE GURAGE QWEE;Lo;0;L;;;;;N;;;;; +1E7F2;ETHIOPIC SYLLABLE GURAGE QWE;Lo;0;L;;;;;N;;;;; +1E7F3;ETHIOPIC SYLLABLE GURAGE BWI;Lo;0;L;;;;;N;;;;; +1E7F4;ETHIOPIC SYLLABLE GURAGE BWEE;Lo;0;L;;;;;N;;;;; +1E7F5;ETHIOPIC SYLLABLE GURAGE KWI;Lo;0;L;;;;;N;;;;; +1E7F6;ETHIOPIC SYLLABLE GURAGE KWEE;Lo;0;L;;;;;N;;;;; +1E7F7;ETHIOPIC SYLLABLE GURAGE KWE;Lo;0;L;;;;;N;;;;; +1E7F8;ETHIOPIC SYLLABLE GURAGE GWI;Lo;0;L;;;;;N;;;;; +1E7F9;ETHIOPIC SYLLABLE GURAGE GWEE;Lo;0;L;;;;;N;;;;; +1E7FA;ETHIOPIC SYLLABLE GURAGE GWE;Lo;0;L;;;;;N;;;;; +1E7FB;ETHIOPIC SYLLABLE GURAGE FWI;Lo;0;L;;;;;N;;;;; +1E7FC;ETHIOPIC SYLLABLE GURAGE FWEE;Lo;0;L;;;;;N;;;;; +1E7FD;ETHIOPIC SYLLABLE GURAGE PWI;Lo;0;L;;;;;N;;;;; +1E7FE;ETHIOPIC SYLLABLE GURAGE PWEE;Lo;0;L;;;;;N;;;;; 1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;; 1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;; 1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;; @@ -31886,6 +32945,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;; 1F6D6;HUT;So;0;ON;;;;;N;;;;; 1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;; +1F6DC;WIRELESS;So;0;ON;;;;;N;;;;; +1F6DD;PLAYGROUND SLIDE;So;0;ON;;;;;N;;;;; +1F6DE;WHEEL;So;0;ON;;;;;N;;;;; +1F6DF;RING BUOY;So;0;ON;;;;;N;;;;; 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;; 1F6E1;SHIELD;So;0;ON;;;;;N;;;;; 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;; @@ -32028,6 +33091,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F771;ALCHEMICAL SYMBOL FOR MONTH;So;0;ON;;;;;N;;;;; 1F772;ALCHEMICAL SYMBOL FOR HALF DRAM;So;0;ON;;;;;N;;;;; 1F773;ALCHEMICAL SYMBOL FOR HALF OUNCE;So;0;ON;;;;;N;;;;; +1F774;LOT OF FORTUNE;So;0;ON;;;;;N;;;;; +1F775;OCCULTATION;So;0;ON;;;;;N;;;;; +1F776;LUNAR ECLIPSE;So;0;ON;;;;;N;;;;; +1F77B;HAUMEA;So;0;ON;;;;;N;;;;; +1F77C;MAKEMAKE;So;0;ON;;;;;N;;;;; +1F77D;GONGGONG;So;0;ON;;;;;N;;;;; +1F77E;QUAOAR;So;0;ON;;;;;N;;;;; +1F77F;ORCUS;So;0;ON;;;;;N;;;;; 1F780;BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; 1F781;BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; 1F782;BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; @@ -32117,6 +33188,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;; 1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;; 1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;; +1F7D9;NINE POINTED WHITE STAR;So;0;ON;;;;;N;;;;; 1F7E0;LARGE ORANGE CIRCLE;So;0;ON;;;;;N;;;;; 1F7E1;LARGE YELLOW CIRCLE;So;0;ON;;;;;N;;;;; 1F7E2;LARGE GREEN CIRCLE;So;0;ON;;;;;N;;;;; @@ -32129,6 +33201,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F7E9;LARGE GREEN SQUARE;So;0;ON;;;;;N;;;;; 1F7EA;LARGE PURPLE SQUARE;So;0;ON;;;;;N;;;;; 1F7EB;LARGE BROWN SQUARE;So;0;ON;;;;;N;;;;; +1F7F0;HEAVY EQUALS SIGN;So;0;ON;;;;;N;;;;; 1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; 1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; 1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;; @@ -32400,6 +33473,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F976;FREEZING FACE;So;0;ON;;;;;N;;;;; 1F977;NINJA;So;0;ON;;;;;N;;;;; 1F978;DISGUISED FACE;So;0;ON;;;;;N;;;;; +1F979;FACE HOLDING BACK TEARS;So;0;ON;;;;;N;;;;; 1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;; 1F97B;SARI;So;0;ON;;;;;N;;;;; 1F97C;LAB COAT;So;0;ON;;;;;N;;;;; @@ -32482,6 +33556,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;; 1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;; 1F9CB;BUBBLE TEA;So;0;ON;;;;;N;;;;; +1F9CC;TROLL;So;0;ON;;;;;N;;;;; 1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;; 1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;; 1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;; @@ -32636,9 +33711,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FA72;BRIEFS;So;0;ON;;;;;N;;;;; 1FA73;SHORTS;So;0;ON;;;;;N;;;;; 1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;; +1FA75;LIGHT BLUE HEART;So;0;ON;;;;;N;;;;; +1FA76;GREY HEART;So;0;ON;;;;;N;;;;; +1FA77;PINK HEART;So;0;ON;;;;;N;;;;; 1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;; 1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;; 1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;; +1FA7B;X-RAY;So;0;ON;;;;;N;;;;; +1FA7C;CRUTCH;So;0;ON;;;;;N;;;;; 1FA80;YO-YO;So;0;ON;;;;;N;;;;; 1FA81;KITE;So;0;ON;;;;;N;;;;; 1FA82;PARACHUTE;So;0;ON;;;;;N;;;;; @@ -32646,6 +33726,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;; 1FA85;PINATA;So;0;ON;;;;;N;;;;; 1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;; +1FA87;MARACAS;So;0;ON;;;;;N;;;;; +1FA88;FLUTE;So;0;ON;;;;;N;;;;; 1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;; 1FA91;CHAIR;So;0;ON;;;;;N;;;;; 1FA92;RAZOR;So;0;ON;;;;;N;;;;; @@ -32671,6 +33753,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FAA6;HEADSTONE;So;0;ON;;;;;N;;;;; 1FAA7;PLACARD;So;0;ON;;;;;N;;;;; 1FAA8;ROCK;So;0;ON;;;;;N;;;;; +1FAA9;MIRROR BALL;So;0;ON;;;;;N;;;;; +1FAAA;IDENTIFICATION CARD;So;0;ON;;;;;N;;;;; +1FAAB;LOW BATTERY;So;0;ON;;;;;N;;;;; +1FAAC;HAMSA;So;0;ON;;;;;N;;;;; +1FAAD;FOLDING HAND FAN;So;0;ON;;;;;N;;;;; +1FAAE;HAIR PICK;So;0;ON;;;;;N;;;;; +1FAAF;KHANDA;So;0;ON;;;;;N;;;;; 1FAB0;FLY;So;0;ON;;;;;N;;;;; 1FAB1;WORM;So;0;ON;;;;;N;;;;; 1FAB2;BEETLE;So;0;ON;;;;;N;;;;; @@ -32678,9 +33767,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FAB4;POTTED PLANT;So;0;ON;;;;;N;;;;; 1FAB5;WOOD;So;0;ON;;;;;N;;;;; 1FAB6;FEATHER;So;0;ON;;;;;N;;;;; +1FAB7;LOTUS;So;0;ON;;;;;N;;;;; +1FAB8;CORAL;So;0;ON;;;;;N;;;;; +1FAB9;EMPTY NEST;So;0;ON;;;;;N;;;;; +1FABA;NEST WITH EGGS;So;0;ON;;;;;N;;;;; +1FABB;HYACINTH;So;0;ON;;;;;N;;;;; +1FABC;JELLYFISH;So;0;ON;;;;;N;;;;; +1FABD;WING;So;0;ON;;;;;N;;;;; +1FABF;GOOSE;So;0;ON;;;;;N;;;;; 1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;; 1FAC1;LUNGS;So;0;ON;;;;;N;;;;; 1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;; +1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;; +1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;; +1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;; +1FACE;MOOSE;So;0;ON;;;;;N;;;;; +1FACF;DONKEY;So;0;ON;;;;;N;;;;; 1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;; 1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;; 1FAD2;OLIVE;So;0;ON;;;;;N;;;;; @@ -32688,6 +33790,29 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FAD4;TAMALE;So;0;ON;;;;;N;;;;; 1FAD5;FONDUE;So;0;ON;;;;;N;;;;; 1FAD6;TEAPOT;So;0;ON;;;;;N;;;;; +1FAD7;POURING LIQUID;So;0;ON;;;;;N;;;;; +1FAD8;BEANS;So;0;ON;;;;;N;;;;; +1FAD9;JAR;So;0;ON;;;;;N;;;;; +1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;; +1FADB;PEA POD;So;0;ON;;;;;N;;;;; +1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;; +1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;; +1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;; +1FAE3;FACE WITH PEEKING EYE;So;0;ON;;;;;N;;;;; +1FAE4;FACE WITH DIAGONAL MOUTH;So;0;ON;;;;;N;;;;; +1FAE5;DOTTED LINE FACE;So;0;ON;;;;;N;;;;; +1FAE6;BITING LIP;So;0;ON;;;;;N;;;;; +1FAE7;BUBBLES;So;0;ON;;;;;N;;;;; +1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;; +1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;; +1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;; +1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;; +1FAF3;PALM DOWN HAND;So;0;ON;;;;;N;;;;; +1FAF4;PALM UP HAND;So;0;ON;;;;;N;;;;; +1FAF5;INDEX POINTING AT THE VIEWER;So;0;ON;;;;;N;;;;; +1FAF6;HEART HANDS;So;0;ON;;;;;N;;;;; +1FAF7;LEFTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;; +1FAF8;RIGHTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;; 1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;; 1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;; 1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;; @@ -32901,9 +34026,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 20000;;Lo;0;L;;;;;N;;;;; -2A6DD;;Lo;0;L;;;;;N;;;;; +2A6DF;;Lo;0;L;;;;;N;;;;; 2A700;;Lo;0;L;;;;;N;;;;; -2B734;;Lo;0;L;;;;;N;;;;; +2B739;;Lo;0;L;;;;;N;;;;; 2B740;;Lo;0;L;;;;;N;;;;; 2B81D;;Lo;0;L;;;;;N;;;;; 2B820;;Lo;0;L;;;;;N;;;;; @@ -33454,6 +34579,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; 30000;;Lo;0;L;;;;;N;;;;; 3134A;;Lo;0;L;;;;;N;;;;; +31350;;Lo;0;L;;;;;N;;;;; +323AF;;Lo;0;L;;;;;N;;;;; E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; -- cgit v1.2.3 From 2b8109d10207b9ec2e21164f02cec1908a86f50a Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 28 Apr 2023 10:44:41 +0200 Subject: po: Update German translation -- --- po/de.po | 69 ++++++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 17 deletions(-) diff --git a/po/de.po b/po/de.po index eff9b9634..74c4c98ad 100644 --- a/po/de.po +++ b/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 \n" -"Language-Team: German \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,10 @@ 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 +1697,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 +1937,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 +2350,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 +2974,10 @@ 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 +3503,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 +3571,10 @@ 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 +3688,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 +3932,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 +5746,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 +7930,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 +9103,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 +10068,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 " -- cgit v1.2.3 From 51975712e9d3c10376da99ff4a34644de78f63b6 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 28 Apr 2023 10:50:50 +0200 Subject: po: msgmerge done -- --- po/ca.po | 68 ++++++++++++++++++++++++++++++++++------------ po/cs.po | 77 +++++++++++++++++++++++++++++++++++++++++----------- po/da.po | 75 +++++++++++++++++++++++++++++++++++++++------------ po/de.po | 10 ++++--- po/el.po | 68 ++++++++++++++++++++++++++++++++++------------ po/eo.po | 67 ++++++++++++++++++++++++++++++++++------------ po/es.po | 89 ++++++++++++++++++++++++++++++++++++++++++++----------------- po/et.po | 68 ++++++++++++++++++++++++++++++++++------------ po/fi.po | 68 ++++++++++++++++++++++++++++++++++------------ po/fr.po | 71 +++++++++++++++++++++++++++++++++++++----------- po/gl.po | 68 ++++++++++++++++++++++++++++++++++------------ po/hu.po | 68 ++++++++++++++++++++++++++++++++++------------ po/id.po | 68 ++++++++++++++++++++++++++++++++++------------ po/it.po | 71 +++++++++++++++++++++++++++++++++++++++--------- po/ja.po | 9 +++---- po/nb.po | 68 +++++++++++++++++++++++++++++++++++++--------- po/pl.po | 70 +++++++++++++++++++++++++++++++++++++++--------- po/pt.po | 68 ++++++++++++++++++++++++++++++++++------------ po/ro.po | 69 +++++++++++++++++++++++++++++++++++------------ po/ru.po | 71 +++++++++++++++++++++++++++++++++++++++--------- po/sk.po | 68 ++++++++++++++++++++++++++++++++++------------ po/sv.po | 75 +++++++++++++++++++++++++++++++++++++++------------ po/tr.po | 73 +++++++++++++++++++++++++++++++++++++++++--------- po/uk.po | 71 +++++++++++++++++++++++++++++++++++++----------- po/zh_CN.po | 73 +++++++++++++++++++++++++++++++++++++++++--------- po/zh_TW.po | 71 +++++++++++++++++++++++++++++++++++++----------- 26 files changed, 1337 insertions(+), 385 deletions(-) diff --git a/po/ca.po b/po/ca.po index 831e84602..3add69bb1 100644 --- a/po/ca.po +++ b/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 "" diff --git a/po/cs.po b/po/cs.po index df6a29a48..d72bd673f 100644 --- a/po/cs.po +++ b/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" diff --git a/po/da.po b/po/da.po index e8bb98213..404d79eb4 100644 --- a/po/da.po +++ b/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" diff --git a/po/de.po b/po/de.po index 74c4c98ad..64e444d01 100644 --- a/po/de.po +++ b/po/de.po @@ -1428,7 +1428,8 @@ 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" +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" @@ -2976,7 +2977,8 @@ 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" +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 @@ -3573,7 +3575,9 @@ 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" +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" diff --git a/po/el.po b/po/el.po index ce190ea7c..a45232fd8 100644 --- a/po/el.po +++ b/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 "" diff --git a/po/eo.po b/po/eo.po index 8144ae10e..e9b007c41 100644 --- a/po/eo.po +++ b/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" diff --git a/po/es.po b/po/es.po index 41357a983..03e50d3ca 100644 --- a/po/es.po +++ b/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 " diff --git a/po/et.po b/po/et.po index a06ce408e..6c6f7bfbb 100644 --- a/po/et.po +++ b/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" diff --git a/po/fi.po b/po/fi.po index 33c75a214..15fd0471a 100644 --- a/po/fi.po +++ b/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 "" diff --git a/po/fr.po b/po/fr.po index 7581ee8b5..239307ec4 100644 --- a/po/fr.po +++ b/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 " diff --git a/po/gl.po b/po/gl.po index c913afad8..af75e558c 100644 --- a/po/gl.po +++ b/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" diff --git a/po/hu.po b/po/hu.po index 7918a3785..b506d8a68 100644 --- a/po/hu.po +++ b/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 "" diff --git a/po/id.po b/po/id.po index 6285ddeb8..5334da392 100644 --- a/po/id.po +++ b/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" diff --git a/po/it.po b/po/it.po index 3014cf11b..85f9b817c 100644 --- a/po/it.po +++ b/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" diff --git a/po/ja.po b/po/ja.po index c26de690e..9d286148b 100644 --- a/po/ja.po +++ b/po/ja.po @@ -226,8 +226,8 @@ msgid "" "Please enter a passphrase to protect the received secret key%%0A %s%%0A " "%s%%0Awithin gpg-agent's key storage" msgstr "" -"パスフレーズを入力してください。gpg-agentの鍵の保管で受信した秘密鍵%%0A " -"%s%%0A %s%%0Aを保護します。" +"パスフレーズを入力してください。gpg-agentの鍵の保管で受信した秘密鍵%%0A %s" +"%%0A %s%%0Aを保護します。" #, c-format msgid "failed to create stream from socket: %s\n" @@ -759,8 +759,8 @@ msgstr "" #, c-format msgid "" -"Do you really want to delete the key identified by keygrip%%0A %s%%0A " -"%%C%%0A?" +"Do you really want to delete the key identified by keygrip%%0A %s%%0A %%C" +"%%0A?" msgstr "本当にこの鍵: keygrip%%0A %s%%0A %%C%%0Aを削除しますか?" msgid "Delete key" @@ -8731,7 +8731,6 @@ msgstr "Yubikey管理コマンド" msgid "manage the command history" msgstr "コマンド履歴を管理する" -#, c-format #~ msgid "continuing verification anyway due to option %s\n" #~ msgstr "オプション %sのため、検証を続けます\n" diff --git a/po/nb.po b/po/nb.po index 6498e3651..19c2a4d19 100644 --- a/po/nb.po +++ b/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" diff --git a/po/pl.po b/po/pl.po index c32665ae4..dd97fdbdc 100644 --- a/po/pl.po +++ b/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" diff --git a/po/pt.po b/po/pt.po index 2f754d976..d20eb0138 100644 --- a/po/pt.po +++ b/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" diff --git a/po/ro.po b/po/ro.po index d0d4c32ce..e60784d33 100644 --- a/po/ro.po +++ b/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" diff --git a/po/ru.po b/po/ru.po index 0c0807ff0..80e4e7aa6 100644 --- a/po/ru.po +++ b/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" diff --git a/po/sk.po b/po/sk.po index 4b695b888..50e9070b8 100644 --- a/po/sk.po +++ b/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" diff --git a/po/sv.po b/po/sv.po index d096cc878..c8405d50c 100644 --- a/po/sv.po +++ b/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" diff --git a/po/tr.po b/po/tr.po index 9effccfe8..3f15ce679 100644 --- a/po/tr.po +++ b/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" diff --git a/po/uk.po b/po/uk.po index e83cc8ef9..d81fd7d64 100644 --- a/po/uk.po +++ b/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 "" #~ "використовувати тимчасові файли для передавання даних до допоміжних " diff --git a/po/zh_CN.po b/po/zh_CN.po index 9b69aeb45..1b6a221d9 100644 --- a/po/zh_CN.po +++ b/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" diff --git a/po/zh_TW.po b/po/zh_TW.po index 92470d47e..066dd0521 100644 --- a/po/zh_TW.po +++ b/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 "用暫存檔來將資料遞送給金鑰伺服器協助程式" -- cgit v1.2.3 From b331ae1c3f308d139513d5b3bf950615aa85d204 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 28 Apr 2023 11:16:29 +0200 Subject: Release 2.4.1 --- NEWS | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 7f6b5689f..541426f80 100644 --- a/NEWS +++ b/NEWS @@ -1,12 +1,15 @@ -Noteworthy changes in version 2.4.1 (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 +18,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,18 +30,28 @@ 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] + 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 -- cgit v1.2.3 From 625bd924109028fb06cff11366f52b46a58db655 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Fri, 28 Apr 2023 14:16:52 +0200 Subject: Post release updates -- --- NEWS | 4 ++++ configure.ac | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 541426f80..af2064199 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,7 @@ +Noteworthy changes in version 2.4.2 (unreleased) +------------------------------------------------ + + Noteworthy changes in version 2.4.1 (2023-04-28) ------------------------------------------------ diff --git a/configure.ac b/configure.ac index c31ae026a..24448c157 100644 --- a/configure.ac +++ b/configure.ac @@ -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 -- cgit v1.2.3 From 3cf5fc2e2f640a7ad0466b8b5a9bc0108521aa01 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Mon, 1 May 2023 11:36:36 +0900 Subject: scd: Fix cmd_apdu on error. * scd/command.c (cmd_apdu): Fix the code path on error. -- GnuPG-bug-id: 6476 Reported-by: Robin Krahl Signed-off-by: NIIBE Yutaka --- scd/apdu.c | 2 +- scd/command.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scd/apdu.c b/scd/apdu.c index ffada1d78..deb1134e6 100644 --- a/scd/apdu.c +++ b/scd/apdu.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, diff --git a/scd/command.c b/scd/command.c index 635bb350e..0cf66d08c 100644 --- a/scd/command.c +++ b/scd/command.c @@ -2200,7 +2200,10 @@ cmd_apdu (assuan_context_t ctx, char *line) 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); -- cgit v1.2.3 From 698caf30b9f9b3228b61d3324ea3d9a49a232d75 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Mon, 1 May 2023 11:38:20 +0900 Subject: common: Fix parsing ECC key. * common/sexputil.c (get_ecc_q_from_canon_sexp): Initialize ECC_Q_LEN. -- Signed-off-by: NIIBE Yutaka --- common/sexputil.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/sexputil.c b/common/sexputil.c index 29fe508b6..c7471be85 100644 --- a/common/sexputil.c +++ b/common/sexputil.c @@ -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; -- cgit v1.2.3 From 0fe99d69f0c8c6d882305d03032bbdaaa1f06954 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Mon, 1 May 2023 11:39:24 +0900 Subject: dirmngr: Fix API of functions wrt their error type. * dirmngr/crlcache.h (fakecrl_isvalid): Fix return type. * dirmngr/http.c (parse_response): Fix return type to gpg_error_t, modifying the function implementation. -- Signed-off-by: NIIBE Yutaka --- dirmngr/crlcache.h | 6 +++--- dirmngr/http.c | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dirmngr/crlcache.h b/dirmngr/crlcache.h index 375943462..9cc063aff 100644 --- a/dirmngr/crlcache.h +++ b/dirmngr/crlcache.h @@ -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); diff --git a/dirmngr/http.c b/dirmngr/http.c index 20f71f61b..b4c501736 100644 --- a/dirmngr/http.c +++ b/dirmngr/http.c @@ -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); -- cgit v1.2.3