1.\" $OpenBSD: d2i_PKCS8_PRIV_KEY_INFO.3,v 1.3 2018/03/21 21:18:08 schwarze Exp $ 2.\" 3.\" Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org> 4.\" 5.\" Permission to use, copy, modify, and distribute this software for any 6.\" purpose with or without fee is hereby granted, provided that the above 7.\" copyright notice and this permission notice appear in all copies. 8.\" 9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16.\" 17.Dd $Mdocdate: March 21 2018 $ 18.Dt D2I_PKCS8_PRIV_KEY_INFO 3 19.Os 20.Sh NAME 21.Nm d2i_PKCS8_PRIV_KEY_INFO , 22.Nm i2d_PKCS8_PRIV_KEY_INFO , 23.Nm d2i_PKCS8_PRIV_KEY_INFO_bio , 24.Nm i2d_PKCS8_PRIV_KEY_INFO_bio , 25.Nm d2i_PKCS8_PRIV_KEY_INFO_fp , 26.Nm i2d_PKCS8_PRIV_KEY_INFO_fp 27.Nd decode and encode PKCS#8 private key 28.Sh SYNOPSIS 29.In openssl/x509.h 30.Ft PKCS8_PRIV_KEY_INFO * 31.Fo d2i_PKCS8_PRIV_KEY_INFO 32.Fa "PKCS8_PRIV_KEY_INFO **val_out" 33.Fa "const unsigned char **der_in" 34.Fa "long length" 35.Fc 36.Ft int 37.Fo i2d_PKCS8_PRIV_KEY_INFO 38.Fa "PKCS8_PRIV_KEY_INFO *val_in" 39.Fa "unsigned char **der_out" 40.Fc 41.Ft PKCS8_PRIV_KEY_INFO * 42.Fo d2i_PKCS8_PRIV_KEY_INFO_bio 43.Fa "BIO *in_bio" 44.Fa "PKCS8_PRIV_KEY_INFO **val_out" 45.Fc 46.Ft int 47.Fo i2d_PKCS8_PRIV_KEY_INFO_bio 48.Fa "BIO *out_bio" 49.Fa "PKCS8_PRIV_KEY_INFO *val_in" 50.Fc 51.Ft PKCS8_PRIV_KEY_INFO * 52.Fo d2i_PKCS8_PRIV_KEY_INFO_fp 53.Fa "FILE *in_fp" 54.Fa "PKCS8_PRIV_KEY_INFO **val_out" 55.Fc 56.Ft int 57.Fo i2d_PKCS8_PRIV_KEY_INFO_fp 58.Fa "BIO *out_fp" 59.Fa "PKCS8_PRIV_KEY_INFO *val_in" 60.Fc 61.Sh DESCRIPTION 62.Fn d2i_PKCS8_PRIV_KEY_INFO 63and 64.Fn i2d_PKCS8_PRIV_KEY_INFO 65decode and encode an ASN.1 66.Vt PrivateKeyInfo 67structure defined in RFC 5208 section 5. 68.Pp 69.Fn d2i_PKCS8_PRIV_KEY_INFO_bio , 70.Fn i2d_PKCS8_PRIV_KEY_INFO_bio , 71.Fn d2i_PKCS8_PRIV_KEY_INFO_fp , 72and 73.Fn i2d_PKCS8_PRIV_KEY_INFO_fp 74are similar except that they decode or encode using a 75.Vt BIO 76or 77.Vt FILE 78pointer. 79.Pp 80For details about the semantics, examples, caveats, and bugs, see 81.Xr ASN1_item_d2i 3 . 82.Pp 83These functions all use unencrypted DER format. 84To store private keys in encrypted form, consider 85.Xr d2i_PKCS8PrivateKey_bio 3 86or 87.Xr PEM_write_PKCS8PrivateKey 3 . 88.Sh RETURN VALUES 89.Fn d2i_PKCS8_PRIV_KEY_INFO , 90.Fn d2i_PKCS8_PRIV_KEY_INFO_bio , 91and 92.Fn d2i_PKCS8_PRIV_KEY_INFO_fp 93return a 94.Vt PKCS8_PRIV_KEY_INFO 95object or 96.Dv NULL 97if an error occurs. 98.Pp 99.Fn i2d_PKCS8_PRIV_KEY_INFO 100returns the number of bytes successfully encoded or a negative value 101if an error occurs. 102.Pp 103.Fn i2d_PKCS8_PRIV_KEY_INFO_bio 104and 105.Fn i2d_PKCS8_PRIV_KEY_INFO_fp 106return 1 for success or 0 if an error occurs. 107.Sh SEE ALSO 108.Xr ASN1_item_d2i 3 , 109.Xr d2i_PKCS8PrivateKey_bio 3 , 110.Xr d2i_PrivateKey 3 , 111.Xr PEM_write_PKCS8_PRIV_KEY_INFO 3 , 112.Xr PKCS8_PRIV_KEY_INFO_new 3 113.Sh STANDARDS 114RFC 5208: PKCS#8: Private-Key Information Syntax Specification 115.Sh HISTORY 116.Fn d2i_PKCS8_PRIV_KEY_INFO 117and 118.Fn i2d_PKCS8_PRIV_KEY_INFO 119first appeared in OpenSSL 0.9.3. 120.Fn d2i_PKCS8_PRIV_KEY_INFO_bio , 121.Fn i2d_PKCS8_PRIV_KEY_INFO_bio , 122.Fn d2i_PKCS8_PRIV_KEY_INFO_fp , 123and 124.Fn i2d_PKCS8_PRIV_KEY_INFO_fp 125first appeared in OpenSSL 0.9.4. 126All these functions have been available since 127.Ox 2.6 . 128