b2i_PVK_bio_ex.3ossl - Man Page

Decode and encode functions for reading and writing MSBLOB format private keys

Synopsis

​ #include <openssl/pem.h>
​
​ EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u);
​ EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u,
​                          OSSL_LIB_CTX *libctx, const char *propq);
​ int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel,
​                 pem_password_cb *cb, void *u);
​ int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel,
​                    pem_password_cb *cb, void *u,
​                    OSSL_LIB_CTX *libctx, const char *propq);

Description

b2i_PVK_bio_ex() decodes a private key of MSBLOB format read from a BIO. It attempts to automatically determine the key type. If the key is encrypted then ​cb is called with the user data u in order to obtain a password to decrypt the key. The supplied library context libctx and property query string propq are used in any decrypt operation.

b2i_PVK_bio() does the same as b2i_PVK_bio_ex() except that the default library context and property query string are used.

i2b_PVK_bio_ex() encodes pk using MSBLOB format. If enclevel is 1 then a password obtained via pem_password_cb is used to encrypt the private key. If enclevel is 0 then no encryption is applied. The user data in u is passed to the password callback. The supplied library context libctx and property query string propq are used in any decrypt operation.

i2b_PVK_bio() does the same as i2b_PVK_bio_ex() except that the default library context and property query string are used.

Return Values

The b2i_PVK_bio() and b2i_PVK_bio_ex() functions return a valid EVP_KEY structure or NULL if an error occurs. The error code can be obtained by calling ​ERR_get_error(3).

i2b_PVK_bio() and i2b_PVK_bio_ex() return the number of bytes successfully encoded or a negative value if an error occurs. The error code can be obtained by calling ERR_get_error(3).

See Also

crypto(7), ​d2i_PKCS8PrivateKey_bio(3)

History

b2i_PVK_bio_ex() and i2b_PVK_bio_ex() were added in OpenSSL 3.0.

Referenced By

The man pages b2i_PVK_bio.3ossl(3), i2b_PVK_bio.3ossl(3) and i2b_PVK_bio_ex.3ossl(3) are aliases of b2i_PVK_bio_ex.3ossl(3).

2026-08-25 3.5.8 OpenSSL