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

# EVP\_PKEY2PKCS8(3ssl)

Convert a private key to/from PKCS8

## NAME

EVP\_PKEY2PKCS8, EVP\_PKCS82PKEY\_ex, EVP\_PKCS82PKEY - Convert a private key to/from PKCS8

## SYNOPSIS

```
 #include <openssl/x509.h>
 PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const EVP_PKEY *pkey);
 EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8);
 EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx,
                             const char *propq);
```

## DESCRIPTION

**EVP\_PKEY2PKCS8()** converts a private key *pkey* into a returned PKCS8 object.

**EVP\_PKCS82PKEY\_ex()** converts a PKCS8 object *p8* into a returned private key. It uses *libctx* and *propq* when fetching algorithms.

**EVP\_PKCS82PKEY()** is similar to **EVP\_PKCS82PKEY\_ex()** but uses default values of NULL for the *libctx* and *propq*.

## RETURN VALUES

**EVP\_PKEY2PKCS8()** returns a PKCS8 object on success. **EVP\_PKCS82PKEY()** and **EVP\_PKCS82PKEY\_ex()** return a private key on success.

All functions return NULL if the operation fails.

## SEE ALSO

**PKCS8\_pkey\_add1\_attr**(3),

## COPYRIGHT

Copyright 2020-2022 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\>.
