]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
The CKA_SUBJECT must be specified for a certificate.
authorRickard Bellgrim <rickard@opendnssec.org>
Thu, 16 Jun 2011 06:43:31 +0000 (08:43 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 16 Jun 2011 06:45:44 +0000 (08:45 +0200)
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
lib/pkcs11_write.c

index a81cce81c454679251f37124aaedb2374d5031c0..15ed1322a665bb3f5f6bd30685fa1fe7cc57bb53 100644 (file)
@@ -54,12 +54,13 @@ gnutls_pkcs11_copy_x509_crt (const char *token_url,
   size_t der_size, id_size;
   opaque *der = NULL;
   opaque id[20];
-  struct ck_attribute a[8];
+  struct ck_attribute a[10];
   ck_object_class_t class = CKO_CERTIFICATE;
   ck_certificate_type_t type = CKC_X_509;
   ck_object_handle_t obj;
   ck_bool_t tval = 1;
   int a_val;
+  gnutls_datum_t subject = { NULL, 0 };
 
   ret = pkcs11_url_to_info (token_url, &info);
   if (ret < 0)
@@ -108,6 +109,13 @@ gnutls_pkcs11_copy_x509_crt (const char *token_url,
       gnutls_assert ();
       goto cleanup;
     }
+  
+  ret = gnutls_x509_crt_get_raw_dn (crt, &subject);
+  if (ret < 0)
+    {
+      gnutls_assert ();
+      goto cleanup;
+    }
 
   /* FIXME: copy key usage flags */
 
@@ -129,6 +137,11 @@ gnutls_pkcs11_copy_x509_crt (const char *token_url,
 
   a_val = 5;
 
+  a[a_val].type = CKA_SUBJECT;
+  a[a_val].value = subject.data;
+  a[a_val].value_len = subject.size;
+  a_val++;
+
   if (label)
     {
       a[a_val].type = CKA_LABEL;
@@ -162,7 +175,7 @@ gnutls_pkcs11_copy_x509_crt (const char *token_url,
 cleanup:
   gnutls_free (der);
   pkcs11_close_session (module, pks);
-
+  _gnutls_free_datum(&subject);
   return ret;
 
 }