[#CMS_SignedData_verify]
= CMS&lowbar;SignedData&lowbar;verify
:mrdocs:

Verify a CMS SignedData structure and return a BIO of the signed content on success&period;

== Synopsis

Declared in `&lt;openssl&sol;cms&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
xref:BIO.adoc[BIO]*
CMS&lowbar;SignedData&lowbar;verify(
    xref:CMS_SignedData.adoc[CMS&lowbar;SignedData]* sd,
    xref:BIO.adoc[BIO]* detached&lowbar;data,
    stack&lowbar;st&lowbar;X509* scerts,
    xref:X509_STORE.adoc[X509&lowbar;STORE]* store,
    stack&lowbar;st&lowbar;X509* extra,
    stack&lowbar;st&lowbar;X509&lowbar;CRL* crls,
    unsigned int flags,
    xref:OSSL_LIB_CTX.adoc[OSSL&lowbar;LIB&lowbar;CTX]* libctx,
    char const* propq);
----

== Return Value

Memory BIO containing the content on success, or NULL on failure&period;

== Parameters

[cols="1,4"]
|===
| Name| Description
| *sd*
| SignedData to verify (not freed by this call)&period;
| *detached&lowbar;data*
| Detached content BIO, or NULL if content is encapsulated&period;
| *scerts*
| Optional stack of signer certificates, or NULL&period;
| *store*
| Trusted certificate store for chain verification, or NULL if not required by `flags&period;`
| *extra*
| Optional extra certificates to add for chain building, or NULL&period;
| *crls*
| Optional CRLs to add for verification, or NULL&period;
| *flags*
| CMS verify flags (same meaning as CMS&lowbar;verify())&period;
| *libctx*
| Library context for algorithm fetches, or NULL for the default&period;
| *propq*
| Property query string, or NULL&period;
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
