]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
more updates in private key copy.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 27 Aug 2011 18:41:31 +0000 (20:41 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 27 Aug 2011 18:41:31 +0000 (20:41 +0200)
lib/openpgp/gnutls_openpgp.c
lib/openpgp/privkey.c
lib/x509/x509.c

index dd2eaaca4ce356e817b11c6140b3c10c04841c52..5bb97fadc526e9f5b7b2255ef1b2b1e0d9232d83 100644 (file)
@@ -403,6 +403,7 @@ gnutls_certificate_set_openpgp_key_mem2 (gnutls_certificate_credentials_t res,
   ret = gnutls_certificate_set_openpgp_key (res, crt, pkey);
 
   gnutls_openpgp_crt_deinit (crt);
+  gnutls_openpgp_privkey_deinit (pkey);
 
   return ret;
 }
index 8f43dff6fcf90e0a3e6f72bb534e0332eed99d78..0ee05325b4dbb9f7317e8e7dfb6fa858c639a486 100644 (file)
@@ -86,25 +86,19 @@ int
 _gnutls_openpgp_privkey_cpy (gnutls_openpgp_privkey_t dest, gnutls_openpgp_privkey_t src)
 {
   int ret;
-  size_t der_size;
+  size_t raw_size=0;
   opaque *der;
   gnutls_datum_t tmp;
 
-  ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, NULL, &der_size);
+  ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, NULL, &raw_size);
   if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER)
-    {
-      gnutls_assert ();
-      return ret;
-    }
+    return gnutls_assert_val(ret);
 
-  der = gnutls_malloc (der_size);
+  der = gnutls_malloc (raw_size);
   if (der == NULL)
-    {
-      gnutls_assert ();
-      return GNUTLS_E_MEMORY_ERROR;
-    }
+    return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 
-  ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, der, &der_size);
+  ret = gnutls_openpgp_privkey_export (src, GNUTLS_OPENPGP_FMT_RAW, NULL, 0, der, &raw_size);
   if (ret < 0)
     {
       gnutls_assert ();
@@ -113,16 +107,16 @@ _gnutls_openpgp_privkey_cpy (gnutls_openpgp_privkey_t dest, gnutls_openpgp_privk
     }
 
   tmp.data = der;
-  tmp.size = der_size;
+  tmp.size = raw_size;
   ret = gnutls_openpgp_privkey_import (dest, &tmp, GNUTLS_OPENPGP_FMT_RAW, NULL, 0);
 
   gnutls_free (der);
 
   if (ret < 0)
-    {
-      gnutls_assert ();
-      return ret;
-    }
+    return gnutls_assert_val(ret);
+
+  memcpy(dest->preferred_keyid, src->preferred_keyid, GNUTLS_OPENPGP_KEYID_SIZE);
+  dest->preferred_set = src->preferred_set;
 
   return 0;
 }
index 8198c1aee64bc2e43628e2a711f6344a79352bda..a8f6270ec9baf2c8791ce0f9a0fdbcdbed4f1e84 100644 (file)
@@ -83,7 +83,7 @@ int
 _gnutls_x509_crt_cpy (gnutls_x509_crt_t dest, gnutls_x509_crt_t src)
 {
   int ret;
-  size_t der_size;
+  size_t der_size=0;
   opaque *der;
   gnutls_datum_t tmp;