@deftypefun {int} {gnutls_pkcs7_verify_direct} (gnutls_pkcs7_t @var{pkcs7}, gnutls_x509_crt_t @var{signer}, unsigned @var{idx}, const gnutls_datum_t * @var{data}, unsigned @var{flags}) @var{pkcs7}: should contain a @code{gnutls_pkcs7_t} type @var{signer}: the certificate believed to have signed the structure @var{idx}: the index of the signature info to check @var{data}: The data to be verified or @code{NULL} @var{flags}: Zero or an OR list of @code{gnutls_certificate_verify_flags} This function will verify the provided data against the signature present in the SignedData of the PKCS @code{7} structure. If the data provided are NULL then the data in the encapsulatedContent field will be used instead. Note that, unlike @code{gnutls_pkcs7_verify()} this function does not verify the key purpose of the signer. It is expected for the caller to verify the intended purpose of the @code{signer} -e.g., via @code{gnutls_x509_crt_get_key_purpose_oid()} , or @code{gnutls_x509_crt_check_key_purpose()} . Note also, that since GnuTLS 3.5.6 this function introduces checks in the end certificate ( @code{signer} ), including time checks and key usage checks. @strong{Returns:} On success, @code{GNUTLS_E_SUCCESS} (0) is returned, otherwise a negative error value. A verification error results to a @code{GNUTLS_E_PK_SIG_VERIFY_FAILED} and the lack of encapsulated data to verify to a @code{GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE} . @strong{Since:} 3.4.2 @end deftypefun