From: Rickard Bellgrim Date: Thu, 16 Jun 2011 06:43:31 +0000 (+0200) Subject: The CKA_SUBJECT must be specified for a certificate. X-Git-Tag: gnutls_2_99_3~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9a64508cbdf354bef5616e17dfb7744c895d5f04;p=thirdparty%2Fgnutls.git The CKA_SUBJECT must be specified for a certificate. Signed-off-by: Nikos Mavrogiannopoulos --- diff --git a/lib/pkcs11_write.c b/lib/pkcs11_write.c index a81cce81c4..15ed1322a6 100644 --- a/lib/pkcs11_write.c +++ b/lib/pkcs11_write.c @@ -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; }