mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-24 10:39:57 +01:00
gpg: New option --compatibility-flags
* g10/gpg.c (oCompatibilityFlags): New. (opts): Add option. (compatibility_flags): New list. (main): Set flags and print help. * g10/options.h (opt): Add field compatibility_flags. -- No flags are yet defined but it is good to have the framework.
This commit is contained in:
parent
a545e14e8a
commit
4a9f3f94c6
@ -2936,6 +2936,14 @@ therefore enables a fast listing of the encryption keys.
|
|||||||
@opindex interactive
|
@opindex interactive
|
||||||
Prompt before overwriting any files.
|
Prompt before overwriting any files.
|
||||||
|
|
||||||
|
@item --compatibility-flags @var{flags}
|
||||||
|
@opindex compatibility-flags
|
||||||
|
Set compatibility flags to work around problems due to non-compliant
|
||||||
|
keys or data. The @var{flags} are given as a comma separated
|
||||||
|
list of flag names and are OR-ed together. The special flag "none"
|
||||||
|
clears the list and allows to start over with an empty list. To get a
|
||||||
|
list of available flags the sole word "help" can be used.
|
||||||
|
|
||||||
@item --debug-level @var{level}
|
@item --debug-level @var{level}
|
||||||
@opindex debug-level
|
@opindex debug-level
|
||||||
Select the debug level for investigating problems. @var{level} may be
|
Select the debug level for investigating problems. @var{level} may be
|
||||||
|
20
g10/gpg.c
20
g10/gpg.c
@ -432,6 +432,7 @@ enum cmd_and_opt_values
|
|||||||
oForceSignKey,
|
oForceSignKey,
|
||||||
oForbidGenKey,
|
oForbidGenKey,
|
||||||
oRequireCompliance,
|
oRequireCompliance,
|
||||||
|
oCompatibilityFlags,
|
||||||
|
|
||||||
oNoop
|
oNoop
|
||||||
};
|
};
|
||||||
@ -896,6 +897,7 @@ static ARGPARSE_OPTS opts[] = {
|
|||||||
ARGPARSE_s_n (oNoAutostart, "no-autostart", "@"),
|
ARGPARSE_s_n (oNoAutostart, "no-autostart", "@"),
|
||||||
ARGPARSE_s_n (oForbidGenKey, "forbid-gen-key", "@"),
|
ARGPARSE_s_n (oForbidGenKey, "forbid-gen-key", "@"),
|
||||||
ARGPARSE_s_n (oRequireCompliance, "require-compliance", "@"),
|
ARGPARSE_s_n (oRequireCompliance, "require-compliance", "@"),
|
||||||
|
ARGPARSE_s_s (oCompatibilityFlags, "compatibility-flags", "@"),
|
||||||
/* Options which can be used in special circumstances. They are not
|
/* Options which can be used in special circumstances. They are not
|
||||||
* published and we hope they are never required. */
|
* published and we hope they are never required. */
|
||||||
ARGPARSE_s_n (oUseOnlyOpenPGPCard, "use-only-openpgp-card", "@"),
|
ARGPARSE_s_n (oUseOnlyOpenPGPCard, "use-only-openpgp-card", "@"),
|
||||||
@ -988,6 +990,13 @@ static struct debug_flags_s debug_flags [] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* The list of compatibility flags. */
|
||||||
|
static struct compatibility_flags_s compatibility_flags [] =
|
||||||
|
{
|
||||||
|
{ 0, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_SELINUX_HACKS
|
#ifdef ENABLE_SELINUX_HACKS
|
||||||
#define ALWAYS_ADD_KEYRINGS 1
|
#define ALWAYS_ADD_KEYRINGS 1
|
||||||
#else
|
#else
|
||||||
@ -2738,6 +2747,15 @@ main (int argc, char **argv)
|
|||||||
|
|
||||||
case oDebugIOLBF: break; /* Already set in pre-parse step. */
|
case oDebugIOLBF: break; /* Already set in pre-parse step. */
|
||||||
|
|
||||||
|
case oCompatibilityFlags:
|
||||||
|
if (parse_compatibility_flags (pargs.r.ret_str, &opt.compat_flags,
|
||||||
|
compatibility_flags))
|
||||||
|
{
|
||||||
|
pargs.r_opt = ARGPARSE_INVALID_ARG;
|
||||||
|
pargs.err = ARGPARSE_PRINT_ERROR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case oStatusFD:
|
case oStatusFD:
|
||||||
set_status_fd ( translate_sys2libc_fd_int (pargs.r.ret_int, 1) );
|
set_status_fd ( translate_sys2libc_fd_int (pargs.r.ret_int, 1) );
|
||||||
break;
|
break;
|
||||||
@ -3776,6 +3794,8 @@ main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
set_debug (debug_level);
|
set_debug (debug_level);
|
||||||
|
if (opt.verbose) /* Print the compatibility flags. */
|
||||||
|
parse_compatibility_flags (NULL, &opt.compat_flags, compatibility_flags);
|
||||||
gnupg_set_compliance_extra_info (opt.min_rsa_length);
|
gnupg_set_compliance_extra_info (opt.min_rsa_length);
|
||||||
if (DBG_CLOCK)
|
if (DBG_CLOCK)
|
||||||
log_clock ("start");
|
log_clock ("start");
|
||||||
|
@ -291,6 +291,9 @@ struct
|
|||||||
int only_sign_text_ids;
|
int only_sign_text_ids;
|
||||||
|
|
||||||
int no_symkey_cache; /* Disable the cache used for --symmetric. */
|
int no_symkey_cache; /* Disable the cache used for --symmetric. */
|
||||||
|
|
||||||
|
/* Compatibility flags (COMPAT_FLAG_xxxx). */
|
||||||
|
unsigned int compat_flags;
|
||||||
} opt;
|
} opt;
|
||||||
|
|
||||||
/* CTRL is used to keep some global variables we currently can't
|
/* CTRL is used to keep some global variables we currently can't
|
||||||
@ -347,8 +350,11 @@ struct {
|
|||||||
EXTERN_UNLESS_MAIN_MODULE int memory_debug_mode;
|
EXTERN_UNLESS_MAIN_MODULE int memory_debug_mode;
|
||||||
EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
|
EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
|
||||||
|
|
||||||
|
/* Compatibility flags */
|
||||||
|
/* #define COMPAT_FOO 1 */
|
||||||
|
|
||||||
/* Compatibility flags. */
|
|
||||||
|
/* Compliance test macors. */
|
||||||
#define GNUPG (opt.compliance==CO_GNUPG || opt.compliance==CO_DE_VS)
|
#define GNUPG (opt.compliance==CO_GNUPG || opt.compliance==CO_DE_VS)
|
||||||
#define RFC2440 (opt.compliance==CO_RFC2440)
|
#define RFC2440 (opt.compliance==CO_RFC2440)
|
||||||
#define RFC4880 (opt.compliance==CO_RFC4880)
|
#define RFC4880 (opt.compliance==CO_RFC4880)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user