@deftypefun {int} {gnutls_pkcs11_privkey_generate3} (const char * @var{url}, gnutls_pk_algorithm_t @var{pk}, unsigned int @var{bits}, const char * @var{label}, const gnutls_datum_t * @var{cid}, gnutls_x509_crt_fmt_t @var{fmt}, gnutls_datum_t * @var{pubkey}, unsigned int @var{key_usage}, unsigned int @var{flags}) @var{url}: a token URL @var{pk}: the public key algorithm @var{bits}: the security bits @var{label}: a label @var{cid}: The CKA_ID to use for the new object @var{fmt}: the format of output params. PEM or DER @var{pubkey}: will hold the public key (may be @code{NULL} ) @var{key_usage}: One of GNUTLS_KEY_* @var{flags}: zero or an OR'ed sequence of @code{GNUTLS_PKCS11_OBJ_FLAGs} This function will generate a private key in the specified by the @code{url} token. The private key will be generate within the token and will not be exportable. This function will store the DER-encoded public key in the SubjectPublicKeyInfo format in @code{pubkey} . The @code{pubkey} should be deinitialized using @code{gnutls_free()} . Note that when generating an elliptic curve key, the curve can be substituted in the place of the bits parameter using the @code{GNUTLS_CURVE_TO_BITS()} macro. Since 3.6.3 the objects are marked as sensitive by default unless @code{GNUTLS_PKCS11_OBJ_FLAG_MARK_NOT_SENSITIVE} is specified. @strong{Returns:} On success, @code{GNUTLS_E_SUCCESS} (0) is returned, otherwise a negative error value. @strong{Since:} 3.4.0 @end deftypefun