@deftypefun {int} {gnutls_pkcs7_sign} (gnutls_pkcs7_t @var{pkcs7}, gnutls_x509_crt_t @var{signer}, gnutls_privkey_t @var{signer_key}, const gnutls_datum_t * @var{data}, gnutls_pkcs7_attrs_t @var{signed_attrs}, gnutls_pkcs7_attrs_t @var{unsigned_attrs}, gnutls_digest_algorithm_t @var{dig}, unsigned @var{flags}) @var{pkcs7}: should contain a @code{gnutls_pkcs7_t} type @var{signer}: the certificate to sign the structure @var{signer_key}: the key to sign the structure @var{data}: The data to be signed or @code{NULL} if the data are already embedded @var{signed_attrs}: Any additional attributes to be included in the signed ones (or @code{NULL} ) @var{unsigned_attrs}: Any additional attributes to be included in the unsigned ones (or @code{NULL} ) @var{dig}: The digest algorithm to use for signing @var{flags}: Should be zero or one of @code{GNUTLS_PKCS7} flags This function will add a signature in the provided PKCS @code{7} structure for the provided data. Multiple signatures can be made with different signers. The available flags are: @code{GNUTLS_PKCS7_EMBED_DATA} , @code{GNUTLS_PKCS7_INCLUDE_TIME} , @code{GNUTLS_PKCS7_INCLUDE_CERT} , and @code{GNUTLS_PKCS7_WRITE_SPKI} . They are explained in the @code{gnutls_pkcs7_sign_flags} definition. @strong{Returns:} On success, @code{GNUTLS_E_SUCCESS} (0) is returned, otherwise a negative error value. @strong{Since:} 3.4.2 @end deftypefun