]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Read the public key algorithm from the selected subkey and not the master key when...
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 16 Mar 2011 18:08:18 +0000 (19:08 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 16 Mar 2011 18:47:45 +0000 (19:47 +0100)
lib/gnutls_privkey.c

index 0ee2d9478abde6442bf3833f3a9f98a0882be994..87c99880d79e1d0c6db9ab2678af06e9920447b8 100644 (file)
@@ -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;