---
name: "PKCS12_item_decrypt_d2i"
section: "3ssl"
platform: "linux"
package: "openssl"
version: "3.6.5-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/PKCS12_item_decrypt_d2i"
---

# PKCS12\_item\_decrypt\_d2i(3ssl)

PKCS12 item encrypt/decrypt functions

## NAME

PKCS12\_item\_decrypt\_d2i, PKCS12\_item\_decrypt\_d2i\_ex, PKCS12\_item\_i2d\_encrypt, PKCS12\_item\_i2d\_encrypt\_ex - PKCS12 item encrypt/decrypt functions

## SYNOPSIS

```
 #include <openssl/pkcs12.h>
 void *PKCS12_item_decrypt_d2i(const X509_ALGOR *algor, const ASN1_ITEM *it,
                               const char *pass, int passlen,
                               const ASN1_OCTET_STRING *oct, int zbuf);
 void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it,
                                  const char *pass, int passlen,
                                  const ASN1_OCTET_STRING *oct, int zbuf,
                                  OSSL_LIB_CTX *libctx,
                                  const char *propq);
 ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor,
                                            const ASN1_ITEM *it,
                                            const char *pass, int passlen,
                                            void *obj, int zbuf);
 ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor,
                                               const ASN1_ITEM *it,
                                               const char *pass, int passlen,
                                               void *obj, int zbuf,
                                               OSSL_LIB_CTX *ctx,
                                               const char *propq);
```

## DESCRIPTION

**PKCS12\_item\_decrypt\_d2i()** and **PKCS12\_item\_decrypt\_d2i\_ex()** decrypt an octet string containing an ASN.1 encoded object using the algorithm *algor* and password *pass* of length *passlen*. If *zbuf* is nonzero then the output buffer will zeroed after the decrypt.

**PKCS12\_item\_i2d\_encrypt()** and **PKCS12\_item\_i2d\_encrypt\_ex()** encrypt an ASN.1 object *it* using the algorithm *algor* and password *pass* of length *passlen*, returning an encoded object in *obj*. If *zbuf* is nonzero then the buffer containing the input encoding will be zeroed after the encrypt.

Functions ending in **\_ex()** allow for a library context *ctx* and property query *propq* to be used to select algorithm implementations.

## RETURN VALUES

**PKCS12\_item\_decrypt\_d2i()** and **PKCS12\_item\_decrypt\_d2i\_ex()** return the decrypted object or NULL if an error occurred.

**PKCS12\_item\_i2d\_encrypt()** and **PKCS12\_item\_i2d\_encrypt\_ex()** return the encrypted data as an ASN.1 Octet String or NULL if an error occurred.

## SEE ALSO

**PKCS12\_pbe\_crypt\_ex**(3), **PKCS8\_encrypt\_ex**(3)

## HISTORY

**PKCS12\_item\_decrypt\_d2i\_ex()** and **PKCS12\_item\_i2d\_encrypt\_ex()** were added in OpenSSL 3.0.

## COPYRIGHT

Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License").  You may not use this file except in compliance with the License.  You can obtain a copy in the file LICENSE in the source distribution or at \<https://www.openssl.org/source/license.html\>.
