diff options
Diffstat (limited to 'g10/g10.c')
-rw-r--r-- | g10/g10.c | 39 |
1 files changed, 33 insertions, 6 deletions
@@ -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); |