Sortix
Sortix Download Manual Development Source Code News Blog More
current nightly

Sortix nightly manual

This manual documents Sortix nightly, a development build that has not been officially released. You can instead view this document in the latest official manual.

NAME

d2i_PKCS12, i2d_PKCS12, d2i_PKCS12_bio, i2d_PKCS12_bio, d2i_PKCS12_fp, i2d_PKCS12_fp, d2i_PKCS12_MAC_DATA, i2d_PKCS12_MAC_DATA, d2i_PKCS12_SAFEBAG, i2d_PKCS12_SAFEBAG, d2i_PKCS12_BAGS, i2d_PKCS12_BAGS — decode and encode PKCS#12 structures

SYNOPSIS

#include <openssl/pkcs12.h>
PKCS12 *
d2i_PKCS12(PKCS12 **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS12(PKCS12 *val_in, unsigned char **der_out);
PKCS12 *
d2i_PKCS12_bio(BIO *in_bio, PKCS12 **val_out);
int
i2d_PKCS12_bio(BIO *out_bio, PKCS12 *val_in);
PKCS12 *
d2i_PKCS12_fp(FILE *in_fp, PKCS12 **val_out);
int
i2d_PKCS12_fp(FILE *out_fp, PKCS12 *val_in);
PKCS12_MAC_DATA *
d2i_PKCS12_MAC_DATA(PKCS12_MAC_DATA **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS12_MAC_DATA(PKCS12_MAC_DATA *val_in, unsigned char **der_out);
PKCS12_SAFEBAG *
d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS12_SAFEBAG(PKCS12_SAFEBAG *val_in, unsigned char **der_out);
PKCS12_BAGS *
d2i_PKCS12_BAGS(PKCS12_BAGS **val_out, const unsigned char **der_in, long length);
int
i2d_PKCS12_BAGS(PKCS12_BAGS *val_in, unsigned char **der_out);

DESCRIPTION

These functions decode and encode PKCS#12 structures. For details about the semantics, examples, caveats, and bugs, see ASN1_item_d2i(3).
d2i_PKCS12() and i2d_PKCS12() decode and encode an ASN.1 PFX (personal information exchange) structure defined in RFC 7292 section 4. d2i_PKCS12_bio(), i2d_PKCS12_bio(), d2i_PKCS12_fp(), and i2d_PKCS12_fp() are similar except that they decode or encode using a BIO or FILE pointer.
d2i_PKCS12_MAC_DATA() and i2d_PKCS12_MAC_DATA() decode and encode an ASN.1 MacData structure defined in RFC 7292 section 4.
d2i_PKCS12_SAFEBAG() and i2d_PKCS12_SAFEBAG() decode and encode an ASN.1 SafeBag structure defined in RFC 7292 section 4.2.
d2i_PKCS12_BAGS() and i2d_PKCS12_BAGS() decode and encode the bagValue field of an ASN.1 SafeBag structure.

RETURN VALUES

d2i_PKCS12(), d2i_PKCS12_bio(), and d2i_PKCS12_fp() return a PKCS12 object or NULL if an error occurs.
d2i_PKCS12_MAC_DATA(), d2i_PKCS12_SAFEBAG(), and d2i_PKCS12_BAGS() return a PKCS12_MAC_DATA, PKCS12_SAFEBAG, or PKCS12_BAGS object, respectively, or NULL if an error occurs.
i2d_PKCS12(), i2d_PKCS12_MAC_DATA(), i2d_PKCS12_SAFEBAG(), and i2d_PKCS12_BAGS() return the number of bytes successfully encoded or a negative value if an error occurs.
i2d_PKCS12_bio() and i2d_PKCS12_fp() return 1 for success or 0 if an error occurs.

SEE ALSO

ASN1_item_d2i(3), PKCS12_create(3), PKCS12_new(3), PKCS12_parse(3), PKCS12_SAFEBAG_new(3)

STANDARDS

RFC 7292: PKCS #12: Personal Information Exchange Syntax

HISTORY

d2i_PKCS12(), i2d_PKCS12(), d2i_PKCS12_bio(), i2d_PKCS12_bio(), d2i_PKCS12_fp(), i2d_PKCS12_fp(), d2i_PKCS12_MAC_DATA(), i2d_PKCS12_MAC_DATA(), d2i_PKCS12_SAFEBAG(), i2d_PKCS12_SAFEBAG(), d2i_PKCS12_BAGS(), and i2d_PKCS12_BAGS() first appeared in OpenSSL 0.9.3 and have been available since OpenBSD 2.6.
Copyright 2011-2025 Jonas 'Sortie' Termansen and contributors.
Sortix's source code is free software under the ISC license.
#sortix on irc.sortix.org
@sortix_org