]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Certtool generates DANE entries with selector 0 (X.509 certificate).
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Mon, 8 Oct 2012 15:07:09 +0000 (17:07 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Mon, 8 Oct 2012 15:07:15 +0000 (17:07 +0200)
src/certtool.c

index 9e238f50106d345fba8245bd768b19ddd5496788..ce71b202ba6319cd3a2f14b3f073bec7415a25ab 100644 (file)
@@ -1109,42 +1109,45 @@ static void dane_info(const char* host, const char* proto, unsigned int port,
     port = 443;
     
   crt = load_cert (0, cinfo);
-
-  ret = gnutls_pubkey_init (&pubkey);
-  if (ret < 0)
-    {
-      error (EXIT_FAILURE, 0, "pubkey_init: %s", gnutls_strerror (ret));
-    }
-
   if (crt != NULL)
     {
-      ret = gnutls_pubkey_import_x509 (pubkey, crt, 0);
+      selector = 0; /* X.509 */
+
+      size = buffer_size;
+      ret = gnutls_x509_crt_export (crt, GNUTLS_X509_FMT_DER, buffer, &size);
       if (ret < 0)
-        {
-          error (EXIT_FAILURE, 0, "pubkey_import_x509: %s",
-                 gnutls_strerror (ret));
-        }
+        error (EXIT_FAILURE, 0, "export error: %s", gnutls_strerror (ret));
+
+      gnutls_x509_crt_deinit (crt);
     }
   else
     {
-      pubkey = load_pubkey (1, cinfo);
-    }
+      selector = 1;
 
-  size = buffer_size;
-  ret = gnutls_pubkey_export (pubkey, GNUTLS_X509_FMT_DER, buffer, &size);
-  if (ret < 0)
-    error (EXIT_FAILURE, 0, "export error: %s", gnutls_strerror (ret));
+      ret = gnutls_pubkey_init (&pubkey);
+      if (ret < 0)
+        error (EXIT_FAILURE, 0, "pubkey_init: %s", gnutls_strerror (ret));
 
-  gnutls_pubkey_deinit (pubkey);
+      pubkey = load_pubkey (1, cinfo);
+
+      size = buffer_size;
+      ret = gnutls_pubkey_export (pubkey, GNUTLS_X509_FMT_DER, buffer, &size);
+      if (ret < 0)
+        error (EXIT_FAILURE, 0, "export error: %s", gnutls_strerror (ret));
+    
+      gnutls_pubkey_deinit (pubkey);
+    }
  
   if (default_dig != GNUTLS_DIG_SHA256 && default_dig != GNUTLS_DIG_SHA512)
-    default_dig = GNUTLS_DIG_SHA256;
+    {
+      fprintf(stderr, "Unsupported digest. Assuming SHA256.\n");
+      default_dig = GNUTLS_DIG_SHA256;
+    }
   
   ret = gnutls_hash_fast(default_dig, buffer, size, digest);
   if (ret < 0)
     error (EXIT_FAILURE, 0, "hash error: %s", gnutls_strerror (ret));
 
-  selector = 1;
   if (default_dig == GNUTLS_DIG_SHA256)
     type = 1;
   else type = 2;