D2I_ESS_SIGNING_CERT(3) | Library Functions Manual | D2I_ESS_SIGNING_CERT(3)

# NAME

`d2i_ESS_SIGNING_CERT`, `i2d_ESS_SIGNING_CERT`, `d2i_ESS_CERT_ID`, `i2d_ESS_CERT_ID`, `d2i_ESS_ISSUER_SERIAL`, `i2d_ESS_ISSUER_SERIAL` — decode and encode signing certificates for S/MIME

# SYNOPSIS

library “libcrypto”
`#include <openssl/ts.h>`

ESS_SIGNING_CERT *
`d2i_ESS_SIGNING_CERT`(ESS_SIGNING_CERT **val_out, const unsigned char **der_in, long length);

int
`i2d_ESS_SIGNING_CERT`(const ESS_SIGNING_CERT *val_in, unsigned char **der_out);

ESS_CERT_ID *
`d2i_ESS_CERT_ID`(ESS_CERT_ID **val_out, const unsigned char **der_in, long length);

int
`i2d_ESS_CERT_ID`(const ESS_CERT_ID *val_in, unsigned char **der_out);

ESS_ISSUER_SERIAL *
`d2i_ESS_ISSUER_SERIAL`(ESS_ISSUER_SERIAL **val_out, const unsigned char **der_in, long length);

int
`i2d_ESS_ISSUER_SERIAL`(const ESS_ISSUER_SERIAL *val_in, unsigned char **der_out);

# DESCRIPTION

These functions decode and encode signing certificate attribute structures. For details about the semantics, examples, caveats, and bugs, see ASN1_item_d2i(3).

`d2i_ESS_SIGNING_CERT`() and `i2d_ESS_SIGNING_CERT`() decode and encode an ASN.1 SigningCertificate structure defined in RFC 2634 section 5.4.

`d2i_ESS_CERT_ID`() and `i2d_ESS_CERT_ID`() decode and encode an ASN.1 ESSCertID structure defined in RFC 2634 section 5.4.1.

`d2i_ESS_ISSUER_SERIAL`() and `i2d_ESS_ISSUER_SERIAL`() decode and encode an ASN.1 IssuerSerial structure defined in RFC 2634 section 5.4.1.

# RETURN VALUES

`d2i_ESS_SIGNING_CERT`(), `d2i_ESS_CERT_ID`(), and `d2i_ESS_ISSUER_SERIAL`() return an ESS_SIGNING_CERT, ESS_CERT_ID, or ESS_ISSUER_SERIAL object, respectively, or `NULL` if an error occurs.

`i2d_ESS_SIGNING_CERT`(), `i2d_ESS_CERT_ID`(), and `i2d_ESS_ISSUER_SERIAL`() return the number of bytes successfully encoded or a negative value if an error occurs.

# SEE ALSO

ASN1_item_d2i(3), ESS_SIGNING_CERT_new(3)

# STANDARDS

RFC 2634: Enhanced Security Services for S/MIME, section 5: Signing Certificate Attribute

# HISTORY

These functions first appeared in OpenSSL 1.0.0 and have been available since OpenBSD 4.9.

June 8, 2025 | Debian