diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-03-16 19:08:18 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-03-16 20:52:48 +0100 |
commit | 3ac59a36a3b8a9e226e3af6b84096d3d3170b97a (patch) | |
tree | 64b57245a75ebf975226e9e7cfdebf3737e1a0c4 | |
parent | 60338e8676f85dc6f26427b053f9c549d3bc1431 (diff) | |
download | gnutls-3ac59a36a3b8a9e226e3af6b84096d3d3170b97a.tar.gz |
Read the public key algorithm from the selected subkey and not the master key when importing to a gnutls_privkey.
-rw-r--r-- | lib/gnutls_privkey.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/gnutls_privkey.c b/lib/gnutls_privkey.c index c52be50b9f..201686d225 100644 --- a/lib/gnutls_privkey.c +++ b/lib/gnutls_privkey.c @@ -385,7 +385,8 @@ gnutls_privkey_import_openpgp (gnutls_privkey_t pkey, gnutls_openpgp_privkey_t key, unsigned int flags) { -int ret; +int ret, idx; +gnutls_openpgp_keyid_t keyid; ret = check_if_clean(pkey); if (ret < 0) @@ -396,7 +397,14 @@ int ret; pkey->key.openpgp = key; pkey->type = GNUTLS_PRIVKEY_OPENPGP; - pkey->pk_algorithm = gnutls_openpgp_privkey_get_pk_algorithm (key, NULL); + + ret = gnutls_openpgp_privkey_get_preferred_key_id (key, keyid); + if (ret < 0) + return gnutls_assert_val(ret); + + idx = gnutls_openpgp_privkey_get_subkey_idx (key, keyid); + + pkey->pk_algorithm = gnutls_openpgp_privkey_get_subkey_pk_algorithm (key, idx, NULL); pkey->flags = flags; return 0; |