* @GNUTLS_PKCS11_OBJ_FLAG_MARK_CA: Mark the object as a CA.
* @GNUTLS_PKCS11_OBJ_FLAG_MARK_KEY_WRAP: Mark the generated key pair as wrapping and unwrapping keys.
* @GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT: When an issuer is requested, override its extensions with the ones present in the trust module.
+ * @GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH: Mark the key pair as requiring authentication (pin entry) before every operation.
*
* Enumeration of different PKCS #11 object flags.
*/
GNUTLS_PKCS11_OBJ_FLAG_MARK_CA = (1<<11),
GNUTLS_PKCS11_OBJ_FLAG_MARK_KEY_WRAP = (1<<12),
GNUTLS_PKCS11_OBJ_FLAG_COMPARE_KEY = (1<<13),
- GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT = (1<<14)
+ GNUTLS_PKCS11_OBJ_FLAG_OVERWRITE_TRUSTMOD_EXT = (1<<14),
+ GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH = (1<<15)
} gnutls_pkcs11_obj_flags;
/**
if (rv == CKR_OK && category == 2)
fobj->flags |= GNUTLS_PKCS11_OBJ_FLAG_MARK_CA;
+ a[0].type = CKA_ALWAYS_AUTHENTICATE;
+ a[0].value = &b;
+ a[0].value_len = sizeof(b);
+
+ rv = pkcs11_get_attribute_value(sinfo->module, sinfo->pks, obj, a, 1);
+ if (rv == CKR_OK && b != 0)
+ fobj->flags |= GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH;
+
/* now recover the object label/id */
a[0].type = CKA_LABEL;
a[0].value = label_tmp;
if (flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE)
_gnutls_buffer_append_str(&str, "CKA_PRIVATE; ");
+ if (flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH)
+ _gnutls_buffer_append_str(&str, "CKA_ALWAYS_AUTH; ");
+
if (flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED)
_gnutls_buffer_append_str(&str, "CKA_TRUSTED; ");
* This function will copy a certificate into a PKCS #11 token specified by
* a URL. Valid flags to mark the certificate: %GNUTLS_PKCS11_OBJ_FLAG_MARK_TRUSTED,
* %GNUTLS_PKCS11_OBJ_FLAG_MARK_SENSITIVE, %GNUTLS_PKCS11_OBJ_FLAG_MARK_PRIVATE,
- * %GNUTLS_PKCS11_OBJ_FLAG_MARK_CA.
+ * %GNUTLS_PKCS11_OBJ_FLAG_MARK_CA, %GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH.
*
* Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, otherwise a
* negative error value.
a_val++;
}
+ if (flags & GNUTLS_PKCS11_OBJ_FLAG_MARK_ALWAYS_AUTH) {
+ a[a_val].type = CKA_ALWAYS_AUTHENTICATE;
+ a[a_val].value = (void *) &tval;
+ a[a_val].value_len = sizeof(tval);
+ a_val++;
+ }
+
if (label) {
a[a_val].type = CKA_LABEL;
a[a_val].value = (void *) label;