diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2016-12-05 20:30:13 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2016-12-05 20:30:13 +0000 |
commit | 22e42d4fd3d3c17f20babf87457148dbec25d61f (patch) | |
tree | de8a591b203bf084a708bf85ec078d5a4e155b16 /lib/libcrypto/man | |
parent | 1b8165ca5502737db3a20785e3a7328044782bb8 (diff) |
import d2i_PrivateKey(3) from OpenSSL
Diffstat (limited to 'lib/libcrypto/man')
-rw-r--r-- | lib/libcrypto/man/Makefile | 3 | ||||
-rw-r--r-- | lib/libcrypto/man/d2i_PrivateKey.3 | 155 |
2 files changed, 157 insertions, 1 deletions
diff --git a/lib/libcrypto/man/Makefile b/lib/libcrypto/man/Makefile index f6c0ef249aa..29e066614f9 100644 --- a/lib/libcrypto/man/Makefile +++ b/lib/libcrypto/man/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.66 2016/12/05 18:24:08 schwarze Exp $ +# $OpenBSD: Makefile,v 1.67 2016/12/05 20:30:12 schwarze Exp $ .include <bsd.own.mk> @@ -206,6 +206,7 @@ MAN= \ d2i_DSAPublicKey.3 \ d2i_ECPKParameters.3 \ d2i_PKCS8PrivateKey_bio.3 \ + d2i_PrivateKey.3 \ d2i_RSAPublicKey.3 \ d2i_X509.3 \ d2i_X509_ALGOR.3 \ diff --git a/lib/libcrypto/man/d2i_PrivateKey.3 b/lib/libcrypto/man/d2i_PrivateKey.3 new file mode 100644 index 00000000000..42dfe973e81 --- /dev/null +++ b/lib/libcrypto/man/d2i_PrivateKey.3 @@ -0,0 +1,155 @@ +.\" $OpenBSD: d2i_PrivateKey.3,v 1.1 2016/12/05 20:30:12 schwarze Exp $ +.\" OpenSSL b97fdb57 Nov 11 09:33:09 2016 +0100 +.\" +.\" This file was written by Dr. Stephen Henson <steve@openssl.org>. +.\" Copyright (c) 2016 The OpenSSL Project. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in +.\" the documentation and/or other materials provided with the +.\" distribution. +.\" +.\" 3. All advertising materials mentioning features or use of this +.\" software must display the following acknowledgment: +.\" "This product includes software developed by the OpenSSL Project +.\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)" +.\" +.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to +.\" endorse or promote products derived from this software without +.\" prior written permission. For written permission, please contact +.\" openssl-core@openssl.org. +.\" +.\" 5. Products derived from this software may not be called "OpenSSL" +.\" nor may "OpenSSL" appear in their names without prior written +.\" permission of the OpenSSL Project. +.\" +.\" 6. Redistributions of any form whatsoever must retain the following +.\" acknowledgment: +.\" "This product includes software developed by the OpenSSL Project +.\" for use in the OpenSSL Toolkit (http://www.openssl.org/)" +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY +.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR +.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +.\" OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd $Mdocdate: December 5 2016 $ +.Dt D2I_PRIVATEKEY 3 +.Os +.Sh NAME +.Nm d2i_PrivateKey , +.Nm d2i_AutoPrivateKey , +.Nm i2d_PrivateKey , +.Nm d2i_PrivateKey_bio , +.Nm d2i_PrivateKey_fp +.Nd decode and encode functions for reading and saving EVP_PKEY structures +.Sh SYNOPSIS +.In openssl/evp.h +.Ft EVP_PKEY * +.Fo d2i_PrivateKey +.Fa "int type" +.Fa "EVP_PKEY **a" +.Fa "const unsigned char **pp" +.Fa "long length" +.Fc +.Ft EVP_PKEY * +.Fo d2i_AutoPrivateKey +.Fa "EVP_PKEY **a" +.Fa "const unsigned char **pp" +.Fa "long length" +.Fc +.Ft int +.Fo i2d_PrivateKey +.Fa "EVP_PKEY *a" +.Fa "unsigned char **pp" +.Fc +.Ft EVP_PKEY * +.Fo d2i_PrivateKey_bio +.Fa "BIO *bp" +.Fa "EVP_PKEY **a" +.Fc +.Ft EVP_PKEY * +.Fo d2i_PrivateKey_fp +.Fa "FILE *fp" +.Fa "EVP_PKEY **a" +.Fc +.Sh DESCRIPTION +.Fn d2i_PrivateKey +decodes a private key using algorithm +.Fa type . +It attempts to use any key specific format or PKCS#8 unencrypted +PrivateKeyInfo format. +The +.Fa type +parameter should be a public key algorithm constant such as +.Dv EVP_PKEY_RSA . +An error occurs if the decoded key does not match +.Fa type . +.Pp +.Fn d2i_AutoPrivateKey +is similar to +.Fn d2i_PrivateKey +except that it attempts to automatically detect the private key format. +.Pp +.Fn i2d_PrivateKey +encodes +.Fa a . +It uses a key specific format or, if none is defined for that key type, +PKCS#8 unencrypted PrivateKeyInfo format. +.Pp +These functions are similar to the +.Xr d2i_X509 3 +functions; see +.Xr d2i_X509 3 . +.Pp +All these functions use DER format and unencrypted keys. +Applications wishing to encrypt or decrypt private keys should use other +functions such as +.Xr d2i_PKC8PrivateKey 3 +instead. +.Pp +If +.Pf * Fa a +is not NULL when calling +.Fn d2i_PrivateKey +or +.Fn d2i_AutoPrivateKey +(i.e. an existing structure is being reused) and the key format is +PKCS#8, then +.Pf * Fa a +will be freed and replaced on a successful call. +.Sh RETURN VALUES +.Fn d2i_PrivateKey +and +.Fn d2i_AutoPrivateKey +return a valid +.Vt EVP_KEY +structure or +.Dv NULL +if an error occurs. +The error code can be obtained by calling +.Xr ERR_get_error 3 . +.Pp +.Fn i2d_PrivateKey +returns the number of bytes successfully encoded or a negative value if +an error occurs. +The error code can be obtained by calling +.Xr ERR_get_error 3 . +.Sh SEE ALSO +.Xr crypto 3 , +.Xr d2i_PKCS8PrivateKey 3 |