aboutsummaryrefslogtreecommitdiffstats
path: root/sm
diff options
context:
space:
mode:
Diffstat (limited to 'sm')
-rw-r--r--sm/ChangeLog6
-rw-r--r--sm/export.c11
-rw-r--r--sm/gpgsm.c11
-rw-r--r--sm/gpgsm.h4
4 files changed, 30 insertions, 2 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog
index f666af5c3..32663041a 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -1,3 +1,9 @@
+2007-03-20 Werner Koch <[email protected]>
+
+ * gpgsm.c: Add option --p12-charset.
+ * gpgsm.h (struct opt): Add p12_charset.
+ * export.c (popen_protect_tool): Use new option.
+
2007-03-19 Werner Koch <[email protected]>
Changes to let export and key listing use estream to help systems
diff --git a/sm/export.c b/sm/export.c
index a87499f94..ec8a764c3 100644
--- a/sm/export.c
+++ b/sm/export.c
@@ -416,6 +416,12 @@ gpgsm_p12_export (ctrl_t ctrl, const char *name, FILE *fp)
putc ('\n', fp);
}
+ if (opt.p12_charset)
+ {
+ fprintf (fp, "The passphrase is %s encoded.\n\n",
+ opt.p12_charset);
+ }
+
ctrl->pem_name = "PKCS12";
rc = gpgsm_create_writer (&b64writer, ctrl, fp, NULL, &writer);
if (rc)
@@ -567,6 +573,11 @@ popen_protect_tool (const char *pgmname,
argv[i++] = "--prompt";
argv[i++] = prompt?prompt:"";
argv[i++] = "--enable-status-msg";
+ if (opt.p12_charset)
+ {
+ argv[i++] = "--p12-charset";
+ argv[i++] = opt.p12_charset;
+ }
argv[i++] = "--",
argv[i++] = keygrip,
argv[i] = NULL;
diff --git a/sm/gpgsm.c b/sm/gpgsm.c
index 415a7cafa..9abd0636e 100644
--- a/sm/gpgsm.c
+++ b/sm/gpgsm.c
@@ -131,6 +131,7 @@ enum cmd_and_opt_values {
oBase64,
oNoArmor,
+ oP12Charset,
oDisableCRLChecks,
oEnableCRLChecks,
@@ -280,6 +281,8 @@ static ARGPARSE_OPTS opts[] = {
{ oArmor, "armor", 0, N_("create ascii armored output")},
{ oArmor, "armour", 0, "@" },
{ oBase64, "base64", 0, N_("create base-64 encoded output")},
+
+ { oP12Charset, "p12-charset", 2, "@" },
{ oAssumeArmor, "assume-armor", 0, N_("assume input is in PEM format")},
{ oAssumeBase64, "assume-base64", 0,
@@ -955,7 +958,7 @@ main ( int argc, char **argv)
set_cmd (&cmd, pargs.r_opt);
break;
- /* output encoding selection */
+ /* Output encoding selection. */
case oArmor:
ctrl.create_pem = 1;
break;
@@ -968,7 +971,11 @@ main ( int argc, char **argv)
ctrl.create_base64 = 0;
break;
- /* Input encoding selection */
+ case oP12Charset:
+ opt.p12_charset = pargs.r.ret_str;
+ break;
+
+ /* Input encoding selection. */
case oAssumeArmor:
ctrl.autodetect_encoding = 0;
ctrl.is_pem = 1;
diff --git a/sm/gpgsm.h b/sm/gpgsm.h
index a52e9e653..727b1cf98 100644
--- a/sm/gpgsm.h
+++ b/sm/gpgsm.h
@@ -74,6 +74,10 @@ struct
int armor; /* force base64 armoring (see also ctrl.with_base64) */
int no_armor; /* don't try to figure out whether data is base64 armored*/
+ const char *p12_charset; /* Use this charset for encoding the
+ pkcs#12 passphrase. */
+
+
const char *def_cipher_algoid; /* cipher algorithm to use if
nothing else is specified */