---
name: "libressl-CMS_final"
section: "3"
platform: "linux"
package: "libressl"
version: "4.4.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libressl-CMS_final"
---

# libressl-CMS\_final(3)

finalise a CMS\_ContentInfo structure

## NAME

**CMS\_final** – finalise a CMS\_ContentInfo structure

## SYNOPSIS

Crypto Library (libcrypto, -lcrypto)

**#include \<openssl/cms.h\>**

*int*\

**CMS\_final**(*CMS\_ContentInfo \*cms*, *BIO \*data*, *BIO \*dcont*, *unsigned int flags*);

## DESCRIPTION

**CMS\_final**() finalises the structure *cms*. Its purpose is to perform any operations necessary on *cms* (digest computation for example) and set the appropriate fields. The parameter *data* contains the content to be processed. The *dcont* parameter contains a *BIO* to write content to after processing: this is only used with detached data and will usually be set to NULL.

This function will normally be called when the CMS\_PARTIAL flag is used. It should only be used when streaming is not performed because the streaming I/O functions perform finalisation operations internally.

## RETURN VALUES

**CMS\_final**() returns 1 for success or 0 for failure.

## SEE ALSO

CMS\_ContentInfo\_new(3), CMS\_encrypt(3), CMS\_sign(3), ERR\_get\_error(3)

## HISTORY

**CMS\_final**() first appeared in OpenSSL 0.9.8h and has been available since OpenBSD 6.7.
