diff options
author | NIIBE Yutaka <[email protected]> | 2015-07-23 05:10:03 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2015-07-23 05:10:03 +0000 |
commit | dbf4534f49a1fe3823bd6d6d7bb4d9df863b4789 (patch) | |
tree | ed0d06bb7a2e0b8526c7c029f042b4a325312ad2 /scd/app-openpgp.c | |
parent | doc: Add a comment to --set-filename. (diff) | |
download | gnupg-dbf4534f49a1fe3823bd6d6d7bb4d9df863b4789.tar.gz gnupg-dbf4534f49a1fe3823bd6d6d7bb4d9df863b4789.zip |
scd: Format change to specify "rsa2048" for KEY-ATTR.
* g10/card-util.c (do_change_keysize): Put "rsa".
* scd/app-openpgp.c (change_keyattr, change_keyattr_from_string):
Change the command format.
(rsa_writekey): Check key type.
(do_writekey): Remove "ecdh" and "ecdsa" support which was available
in experimental libgcrypt before 1.6.0.
Diffstat (limited to '')
-rw-r--r-- | scd/app-openpgp.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/scd/app-openpgp.c b/scd/app-openpgp.c index 5ca526c5f..81b4923d4 100644 --- a/scd/app-openpgp.c +++ b/scd/app-openpgp.c @@ -2848,7 +2848,7 @@ change_keyattr (app_t app, int keyno, const unsigned char *buf, size_t buflen, /* Helper to process an setattr command for name KEY-ATTR. In (VALUE,VALUELEN), it expects following string: - RSA: "--force <keyno> <algo> <nbits>" + RSA: "--force <keyno> <algo> rsa<nbits>" ECC: "--force <keyno> <algo> <curvename>" */ static gpg_error_t @@ -2887,7 +2887,7 @@ change_keyattr_from_string (app_t app, unsigned int nbits; errno = 0; - nbits = strtoul (string+n, NULL, 10); + nbits = strtoul (string+n+3, NULL, 10); if (errno) err = gpg_error (GPG_ERR_INV_DATA); else if (nbits < 1024) @@ -2985,6 +2985,13 @@ rsa_writekey (app_t app, gpg_error_t (*pincb)(void*, const char *, char **), unsigned char fprbuf[20]; u32 created_at = 0; + if (app->app_local->keyattr[keyno].key_type != KEY_TYPE_RSA) + { + log_error (_("unsupported algorithm: %s"), "RSA"); + err = gpg_error (GPG_ERR_INV_VALUE); + goto leave; + } + last_depth1 = depth; while (!(err = parse_sexp (&buf, &buflen, &depth, &tok, &toklen)) && depth && depth >= last_depth1) @@ -3519,10 +3526,7 @@ do_writekey (app_t app, ctrl_t ctrl, goto leave; if (tok && toklen == 3 && memcmp ("rsa", tok, toklen) == 0) err = rsa_writekey (app, pincb, pincb_arg, keyno, buf, buflen, depth); - else if (tok - && ((toklen == 3 && memcmp ("ecc", tok, toklen) == 0) - || (toklen == 4 && memcmp ("ecdh", tok, toklen) == 0) - || (toklen == 5 && memcmp ("ecdsa", tok, toklen) == 0))) + else if (tok && toklen == 3 && memcmp ("ecc", tok, toklen) == 0) err = ecc_writekey (app, pincb, pincb_arg, keyno, buf, buflen, depth); else { |