---
name: "libressl-PKCS12_parse"
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-PKCS12_parse"
---

# libressl-PKCS12\_parse(3)

parse a PKCS#12 structure

## NAME

**PKCS12\_parse** – parse a PKCS#12 structure

## SYNOPSIS

Crypto Library (libcrypto, -lcrypto)

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

*int*\

**PKCS12\_parse**(*PKCS12 \*p12*, *const char \*pass*, *EVP\_PKEY \*\*pkey*, *X509 \*\*cert*, *STACK\_OF(X509) \*\*ca*);

## DESCRIPTION

**PKCS12\_parse**() parses a PKCS12 structure.

*p12* is the *PKCS12* structure to parse. *pass* is the passphrase to use. If successful, the private key will be written to \**pkey*, the corresponding certificate to \**cert*, and any additional certificates to \**ca*.

The parameters *pkey* and *cert* cannot be NULL. *ca* can be NULL, in which case additional certificates will be discarded. \**ca* can also be a valid STACK, in which case additional certificates are appended to \**ca*. If \**ca* is NULL, a new STACK will be allocated.

The **friendlyName** and **localKeyID** attributes (if present) of each certificate will be stored in the *alias* and *keyid* attributes of the *X509* structure.

## RETURN VALUES

**PKCS12\_parse**() returns 1 for success and 0 if an error occurred.

The error can be obtained from ERR\_get\_error(3).

## SEE ALSO

d2i\_PKCS12(3), PKCS12\_create(3), PKCS12\_new(3), X509\_keyid\_set1(3)

## HISTORY

**PKCS12\_parse**() first appeared in OpenSSL 0.9.3 and has been available since OpenBSD 2.6.

## BUGS

Only a single private key and corresponding certificate is returned by this function. More complex PKCS#12 files with multiple private keys will only return the first match.

Only **friendlyName** and **localKeyID** attributes are currently stored in certificates. Other attributes are discarded.

Attributes currently cannot be stored in the private key *EVP\_PKEY* structure.
