1*2175Sjp161948=pod 2*2175Sjp161948 3*2175Sjp161948=head1 NAME 4*2175Sjp161948 5*2175Sjp161948d2i_PKCS8PrivateKey_bio, d2i_PKCS8PrivateKey_fp, 6*2175Sjp161948i2d_PKCS8PrivateKey_bio, i2d_PKCS8PrivateKey_fp, 7*2175Sjp161948i2d_PKCS8PrivateKey_nid_bio, i2d_PKCS8PrivateKey_nid_fp - PKCS#8 format private key functions 8*2175Sjp161948 9*2175Sjp161948=head1 SYNOPSIS 10*2175Sjp161948 11*2175Sjp161948 #include <openssl/evp.h> 12*2175Sjp161948 13*2175Sjp161948 EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u); 14*2175Sjp161948 EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u); 15*2175Sjp161948 16*2175Sjp161948 int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, 17*2175Sjp161948 char *kstr, int klen, 18*2175Sjp161948 pem_password_cb *cb, void *u); 19*2175Sjp161948 20*2175Sjp161948 int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, 21*2175Sjp161948 char *kstr, int klen, 22*2175Sjp161948 pem_password_cb *cb, void *u); 23*2175Sjp161948 24*2175Sjp161948 int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, 25*2175Sjp161948 char *kstr, int klen, 26*2175Sjp161948 pem_password_cb *cb, void *u); 27*2175Sjp161948 28*2175Sjp161948 int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, 29*2175Sjp161948 char *kstr, int klen, 30*2175Sjp161948 pem_password_cb *cb, void *u); 31*2175Sjp161948 32*2175Sjp161948=head1 DESCRIPTION 33*2175Sjp161948 34*2175Sjp161948The PKCS#8 functions encode and decode private keys in PKCS#8 format using both 35*2175Sjp161948PKCS#5 v1.5 and PKCS#5 v2.0 password based encryption algorithms. 36*2175Sjp161948 37*2175Sjp161948Other than the use of DER as opposed to PEM these functions are identical to the 38*2175Sjp161948corresponding B<PEM> function as described in the L<pem(3)|pem(3)> manual page. 39*2175Sjp161948 40*2175Sjp161948=head1 NOTES 41*2175Sjp161948 42*2175Sjp161948Before using these functions L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)> 43*2175Sjp161948should be called to initialize the internal algorithm lookup tables otherwise errors about 44*2175Sjp161948unknown algorithms will occur if an attempt is made to decrypt a private key. 45*2175Sjp161948 46*2175Sjp161948These functions are currently the only way to store encrypted private keys using DER format. 47*2175Sjp161948 48*2175Sjp161948Currently all the functions use BIOs or FILE pointers, there are no functions which 49*2175Sjp161948work directly on memory: this can be readily worked around by converting the buffers 50*2175Sjp161948to memory BIOs, see L<BIO_s_mem(3)|BIO_s_mem(3)> for details. 51*2175Sjp161948 52*2175Sjp161948=head1 SEE ALSO 53*2175Sjp161948 54*2175Sjp161948L<pem(3)|pem(3)> 55*2175Sjp161948 56*2175Sjp161948=cut 57