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)
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 */
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;
cleanup:
gnutls_free (der);
pkcs11_close_session (module, pks);
-
+ _gnutls_free_datum(&subject);
return ret;
}