D2I_PKCS7(3)

NAME
d2i_PKCS7, i2d_PKCS7, d2i_PKCS7_bio, i2d_PKCS7_bio, d2i_PKCS7_fp, i2d_PKCS7_fp, i2d_PKCS7_NDEF, d2i_PKCS7_DIGEST, i2d_PKCS7_DIGEST, d2i_PKCS7_ENCRYPT, i2d_PKCS7_ENCRYPT, d2i_PKCS7_ENC_CONTENT, i2d_PKCS7_ENC_CONTENT, d2i_PKCS7_ENVELOPE, i2d_PKCS7_ENVELOPE, d2i_PKCS7_ISSUER_AND_SERIAL, i2d_PKCS7_ISSUER_AND_SERIAL, d2i_PKCS7_RECIP_INFO, i2d_PKCS7_RECIP_INFO, d2i_PKCS7_SIGNED, i2d_PKCS7_SIGNED, d2i_PKCS7_SIGNER_INFO, i2d_PKCS7_SIGNER_INFO, d2i_PKCS7_SIGN_ENVELOPE, i2d_PKCS7_SIGN_ENVELOPE - decode and encode PKCS#7 data structures

SYNOPSIS
#include <openssl/pkcs7.h>
PKCS7 *
d2i_PKCS7(PKCS7 **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7(PKCS7 *val_in, unsigned char **der_out);
PKCS7 *
d2i_PKCS7_bio(BIO *in_bio, PKCS7 **val_out);
int
i2d_PKCS7_bio(BIO *out_bio, PKCS7 *val_in);
PKCS7 *
d2i_PKCS7_fp(FILE *in_fp, PKCS7 **val_out);
int
i2d_PKCS7_fp(FILE *out_fp, PKCS7 *val_in);
int
i2d_PKCS7_NDEF(PKCS7 *val_in, unsigned char **ber_out);
PKCS7_DIGEST *
d2i_PKCS7_DIGEST(PKCS7_DIGEST **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_DIGEST(PKCS7_DIGEST *val_in, unsigned char **der_out);
PKCS7_ENCRYPT *
d2i_PKCS7_ENCRYPT(PKCS7_ENCRYPT **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_ENCRYPT(PKCS7_ENCRYPT *val_in, unsigned char **der_out);
PKCS7_ENC_CONTENT *
d2i_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_ENC_CONTENT(PKCS7_ENC_CONTENT *val_in, unsigned char **der_out);
PKCS7_ENVELOPE *
d2i_PKCS7_ENVELOPE(PKCS7_ENVELOPE **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_ENVELOPE(PKCS7_ENVELOPE *val_in, unsigned char **der_out);
PKCS7_ISSUER_AND_SERIAL *
d2i_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_ISSUER_AND_SERIAL(PKCS7_ISSUER_AND_SERIAL *val_in, unsigned char **der_out);
PKCS7_RECIP_INFO *
d2i_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_RECIP_INFO(PKCS7_RECIP_INFO *val_in, unsigned char **der_out);
PKCS7_SIGNED *
d2i_PKCS7_SIGNED(PKCS7_SIGNED **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_SIGNED(PKCS7_SIGNED *val_in, unsigned char **der_out);
PKCS7_SIGNER_INFO *
d2i_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_SIGNER_INFO(PKCS7_SIGNER_INFO *val_in, unsigned char **der_out);
PKCS7_SIGN_ENVELOPE *
d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *val_in, unsigned char **der_out);

DESCRIPTION
These functions decode and encode PKCS#7 data structures. For details about the semantics, examples, caveats, and bugs, see ASN1_item_d2i(3).

d2i_PKCS7() and i2d_PKCS7() decode and encode an ASN.1 ContentInfo structure defined in RFC 2315 section 7. d2i_PKCS7_bio(), i2d_PKCS7_bio(), d2i_PKCS7_fp(), and i2d_PKCS7_fp() are similar except that they decode or encode using a BIO or FILE pointer.

i2d_PKCS7_NDEF() is similar to i2d_PKCS7() except that it encodes using BER rather than DER, using the indefinite length form where appropriate.

d2i_PKCS7_DIGEST() and i2d_PKCS7_DIGEST() decode and encode an ASN.1 DigestedData structure defined in RFC 2315 section 12.

d2i_PKCS7_ENCRYPT() and i2d_PKCS7_ENCRYPT() decode and encode an ASN.1 EncryptedData structure defined in RFC 2315 section 13.

d2i_PKCS7_ENC_CONTENT() and i2d_PKCS7_ENC_CONTENT() decode and encode an ASN.1 EncryptedContentInfo structure defined in RFC 2315 section 10.1.

d2i_PKCS7_ENVELOPE() and i2d_PKCS7_ENVELOPE() decode and encode an ASN.1 EnvelopedData structure defined in RFC 2315 section 10.

d2i_PKCS7_ISSUER_AND_SERIAL() and i2d_PKCS7_ISSUER_AND_SERIAL() decode and encode an ASN.1 IssuerAndSerialNumber structure defined in RFC 2315 section 6.7.

d2i_PKCS7_RECIP_INFO() and i2d_PKCS7_RECIP_INFO() decode and encode an ASN.1 RecipientInfo structure defined in RFC 2315 section 10.2.

d2i_PKCS7_SIGNED() and i2d_PKCS7_SIGNED() decode and encode an ASN.1 SignedData structure defined in RFC 2315 section 9.

d2i_PKCS7_SIGNER_INFO() and i2d_PKCS7_SIGNER_INFO() decode and encode an ASN.1 SignerInfo structure defined in RFC 2315 section 9.2.

d2i_PKCS7_SIGN_ENVELOPE() and i2d_PKCS7_SIGN_ENVELOPE() decode and encode an ASN.1 SignedAndEnvelopedData structure defined in RFC 2315 section 11.

RETURN VALUES
d2i_PKCS7(), d2i_PKCS7_bio(), and d2i_PKCS7_fp() return a PKCS7 object or NULL if an error occurs.

d2i_PKCS7_DIGEST(), d2i_PKCS7_ENCRYPT(), d2i_PKCS7_ENC_CONTENT(), d2i_PKCS7_ENVELOPE(), d2i_PKCS7_ISSUER_AND_SERIAL(), d2i_PKCS7_RECIP_INFO(), d2i_PKCS7_SIGNED(), d2i_PKCS7_SIGNER_INFO(), and d2i_PKCS7_SIGN_ENVELOPE() return an object of the respective type or NULL if an error occurs.

i2d_PKCS7(), i2d_PKCS7_NDEF(), i2d_PKCS7_DIGEST(), i2d_PKCS7_ENCRYPT(), i2d_PKCS7_ENC_CONTENT(), i2d_PKCS7_ENVELOPE(), i2d_PKCS7_ISSUER_AND_SERIAL(), i2d_PKCS7_RECIP_INFO(), i2d_PKCS7_SIGNED(), i2d_PKCS7_SIGNER_INFO(), and i2d_PKCS7_SIGN_ENVELOPE() return the number of bytes successfully encoded or a negative value if an error occurs.

i2d_PKCS7_bio() and i2d_PKCS7_fp() return 1 for success or 0 if an error occurs.

SEE ALSO
ASN1_item_d2i(3), i2d_PKCS7_bio_stream(3), PEM_write_bio_PKCS7_stream(3), PEM_write_PKCS7(3), PKCS7_new(3), SMIME_write_PKCS7(3)

STANDARDS
RFC 2315: PKCS #7: Cryptographic Message Syntax Version 1.5

HISTORY
d2i_PKCS7(), i2d_PKCS7(), d2i_PKCS7_bio(), i2d_PKCS7_bio(), d2i_PKCS7_fp(), i2d_PKCS7_fp(), d2i_PKCS7_DIGEST(), i2d_PKCS7_DIGEST(), d2i_PKCS7_ENCRYPT(), i2d_PKCS7_ENCRYPT(), d2i_PKCS7_ENC_CONTENT(), i2d_PKCS7_ENC_CONTENT(), d2i_PKCS7_ENVELOPE(), i2d_PKCS7_ENVELOPE(), d2i_PKCS7_ISSUER_AND_SERIAL(), i2d_PKCS7_ISSUER_AND_SERIAL(), d2i_PKCS7_RECIP_INFO(), i2d_PKCS7_RECIP_INFO(), d2i_PKCS7_SIGNED(), i2d_PKCS7_SIGNED(), d2i_PKCS7_SIGNER_INFO(), i2d_PKCS7_SIGNER_INFO(), d2i_PKCS7_SIGN_ENVELOPE(), and i2d_PKCS7_SIGN_ENVELOPE() appeared in SSLeay 0.8.1b or earlier and have been available since OpenBSD 2.4.