diff options
author | Werner Koch <wk@gnupg.org> | 2014-06-03 18:57:33 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2014-06-03 18:57:33 +0200 |
commit | 0beec2f0f255a71f9d5a4a0729d0259f673e8838 (patch) | |
tree | 3e4462eaa0989711335a1ac732a21f42392bc07d /sm/gpgsm.c | |
parent | doc: Minor texi updates. (diff) | |
download | gnupg2-0beec2f0f255a71f9d5a4a0729d0259f673e8838.tar.xz gnupg2-0beec2f0f255a71f9d5a4a0729d0259f673e8838.zip |
gpgsm: New commands --export-secret-key-{p8,raw}
* sm/gpgsm.c: Add new commands.
* sm/minip12.c (build_key_sequence): Add arg mode.
(p12_raw_build): New.
* sm/export.c (export_p12): Add arg rawmode. Call p12_raw_build.
(gpgsm_p12_export): Ditto.
(print_short_info): Print the keygrip.
Diffstat (limited to 'sm/gpgsm.c')
-rw-r--r-- | sm/gpgsm.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/sm/gpgsm.c b/sm/gpgsm.c index 3822717ca..01f33e3ae 100644 --- a/sm/gpgsm.c +++ b/sm/gpgsm.c @@ -74,6 +74,8 @@ enum cmd_and_opt_values { aRecvKeys, aExport, aExportSecretKeyP12, + aExportSecretKeyP8, + aExportSecretKeyRaw, aServer, aLearnCard, aCallDirmngr, @@ -208,7 +210,13 @@ static ARGPARSE_OPTS opts[] = { /*ARGPARSE_c (aRecvKeys, "recv-keys", N_("import keys from a key server")),*/ ARGPARSE_c (aImport, "import", N_("import certificates")), ARGPARSE_c (aExport, "export", N_("export certificates")), + + /* We use -raw and not -p1 for pkcs#1 secret key export so that it + won't accidently be used in case -p12 was intended. */ ARGPARSE_c (aExportSecretKeyP12, "export-secret-key-p12", "@"), + ARGPARSE_c (aExportSecretKeyP8, "export-secret-key-p8", "@"), + ARGPARSE_c (aExportSecretKeyRaw, "export-secret-key-raw", "@"), + ARGPARSE_c (aLearnCard, "learn-card", N_("register a smartcard")), ARGPARSE_c (aServer, "server", N_("run in server mode")), ARGPARSE_c (aCallDirmngr, "call-dirmngr", @@ -1084,6 +1092,8 @@ main ( int argc, char **argv) case aRecvKeys: case aExport: case aExportSecretKeyP12: + case aExportSecretKeyP8: + case aExportSecretKeyRaw: case aDumpKeys: case aDumpChain: case aDumpExternalKeys: @@ -1888,7 +1898,7 @@ main ( int argc, char **argv) estream_t fp = open_es_fwrite (opt.outfile?opt.outfile:"-"); if (argc == 1) - gpgsm_p12_export (&ctrl, *argv, fp); + gpgsm_p12_export (&ctrl, *argv, fp, 0); else wrong_args ("--export-secret-key-p12 KEY-ID"); if (fp != es_stdout) @@ -1896,6 +1906,32 @@ main ( int argc, char **argv) } break; + case aExportSecretKeyP8: + { + estream_t fp = open_es_fwrite (opt.outfile?opt.outfile:"-"); + + if (argc == 1) + gpgsm_p12_export (&ctrl, *argv, fp, 1); + else + wrong_args ("--export-secret-key-p8 KEY-ID"); + if (fp != es_stdout) + es_fclose (fp); + } + break; + + case aExportSecretKeyRaw: + { + estream_t fp = open_es_fwrite (opt.outfile?opt.outfile:"-"); + + if (argc == 1) + gpgsm_p12_export (&ctrl, *argv, fp, 2); + else + wrong_args ("--export-secret-key-raw KEY-ID"); + if (fp != es_stdout) + es_fclose (fp); + } + break; + case aSendKeys: case aRecvKeys: log_error ("this command has not yet been implemented\n"); |