aboutsummaryrefslogtreecommitdiffstats
path: root/g10/g10.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/g10.c')
-rw-r--r--g10/g10.c39
1 files changed, 33 insertions, 6 deletions
diff --git a/g10/g10.c b/g10/g10.c
index 1d21f4f43..cfe1cfb38 100644
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -281,7 +281,9 @@ enum cmd_and_opt_values { aNull = 0,
oNoAutoCheckTrustDB,
oPreservePermissions,
oDefaultPreferenceList,
- oPersonalPreferenceList,
+ oPersonalCipherPreferences,
+ oPersonalDigestPreferences,
+ oPersonalCompressPreferences,
oEmu3DESS2KBug, /* will be removed in 1.1 */
oEmuMDEncodeBug,
oDisplay,
@@ -560,7 +562,9 @@ static ARGPARSE_OPTS opts[] = {
{ aRebuildKeydbCaches, "rebuild-keydb-caches", 256, "@"},
{ oPreservePermissions, "preserve-permissions", 0, "@"},
{ oDefaultPreferenceList, "default-preference-list", 2, "@"},
- { oPersonalPreferenceList, "personal-preference-list", 2, "@"},
+ { oPersonalCipherPreferences, "personal-cipher-preferences", 2, "@"},
+ { oPersonalDigestPreferences, "personal-digest-preferences", 2, "@"},
+ { oPersonalCompressPreferences, "personal-compress-preferences", 2, "@"},
{ oEmu3DESS2KBug, "emulate-3des-s2k-bug", 0, "@"},
{ oEmuMDEncodeBug, "emulate-md-encode-bug", 0, "@"},
{ oDisplay, "display", 2, "@" },
@@ -819,7 +823,9 @@ main( int argc, char **argv )
char *cert_digest_string = NULL;
char *s2k_cipher_string = NULL;
char *s2k_digest_string = NULL;
- char *pers_pref_list = NULL;
+ char *pers_cipher_list = NULL;
+ char *pers_digest_list = NULL;
+ char *pers_compress_list = NULL;
int eyes_only=0;
int pwfd = -1;
int with_fpr = 0; /* make an option out of --fingerprint */
@@ -1362,7 +1368,15 @@ main( int argc, char **argv )
case oDefaultPreferenceList:
opt.def_preference_list = pargs.r.ret_str;
break;
- case oPersonalPreferenceList: pers_pref_list=pargs.r.ret_str; break;
+ case oPersonalCipherPreferences:
+ pers_cipher_list=pargs.r.ret_str;
+ break;
+ case oPersonalDigestPreferences:
+ pers_digest_list=pargs.r.ret_str;
+ break;
+ case oPersonalCompressPreferences:
+ pers_compress_list=pargs.r.ret_str;
+ break;
case oDisplay: opt.display = pargs.r.ret_str; break;
case oTTYname: opt.ttyname = pargs.r.ret_str; break;
case oTTYtype: opt.ttytype = pargs.r.ret_str; break;
@@ -1597,8 +1611,21 @@ main( int argc, char **argv )
keygen_set_std_prefs(opt.def_preference_list,0))
log_error(_("invalid default preferences\n"));
- if(pers_pref_list && keygen_set_std_prefs(pers_pref_list,1))
- log_error(_("invalid personal preferences\n"));
+ /* We provide defaults for the personal digest list */
+ if(!pers_digest_list)
+ pers_digest_list=build_personal_digest_list();
+
+ if(pers_cipher_list &&
+ keygen_set_std_prefs(pers_cipher_list,PREFTYPE_SYM))
+ log_error(_("invalid personal cipher preferences\n"));
+
+ if(pers_digest_list &&
+ keygen_set_std_prefs(pers_digest_list,PREFTYPE_HASH))
+ log_error(_("invalid personal digest preferences\n"));
+
+ if(pers_compress_list &&
+ keygen_set_std_prefs(pers_compress_list,PREFTYPE_ZIP))
+ log_error(_("invalid personal compress preferences\n"));
if( log_get_errorcount(0) )
g10_exit(2);