@deftypefun {int} {gnutls_x509_privkey_sign_data} (gnutls_x509_privkey_t @var{key}, gnutls_digest_algorithm_t @var{digest}, unsigned int @var{flags}, const gnutls_datum_t * @var{data}, void * @var{signature}, size_t * @var{signature_size}) @var{key}: a key @var{digest}: should be a digest algorithm @var{flags}: should be 0 for now @var{data}: holds the data to be signed @var{signature}: will contain the signature @var{signature_size}: holds the size of signature (and will be replaced by the new size) This function will sign the given data using a signature algorithm supported by the private key. Signature algorithms are always used together with a hash functions. Different hash functions may be used for the RSA algorithm, but only SHA-1 for the DSA keys. If the buffer provided is not long enough to hold the output, then * @code{signature_size} is updated and @code{GNUTLS_E_SHORT_MEMORY_BUFFER} will be returned. Use @code{gnutls_x509_crt_get_preferred_hash_algorithm()} to determine the hash algorithm. @strong{Returns:} On success, @code{GNUTLS_E_SUCCESS} (0) is returned, otherwise a negative error value. @end deftypefun