]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/d2i_PrivateKey.pod
Update copyright year
[thirdparty/openssl.git] / doc / man3 / d2i_PrivateKey.pod
CommitLineData
b1b3e14f
DSH
1=pod
2
3=head1 NAME
4
24b0be11
RS
5d2i_PrivateKey, d2i_PublicKey, d2i_AutoPrivateKey,
6i2d_PrivateKey, i2d_PublicKey,
4692340e
RS
7d2i_PrivateKey_bio, d2i_PrivateKey_fp
8- decode and encode functions for reading and saving EVP_PKEY structures
b1b3e14f
DSH
9
10=head1 SYNOPSIS
11
12 #include <openssl/evp.h>
13
14 EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
15 long length);
24b0be11
RS
16 EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
17 long length);
b1b3e14f
DSH
18 EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
19 long length);
20 int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp);
24b0be11 21 int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
b1b3e14f 22
4692340e
RS
23 EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a);
24 EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a)
25
b1b3e14f
DSH
26=head1 DESCRIPTION
27
28d2i_PrivateKey() decodes a private key using algorithm B<type>. It attempts to
29use any key specific format or PKCS#8 unencrypted PrivateKeyInfo format. The
30B<type> parameter should be a public key algorithm constant such as
31B<EVP_PKEY_RSA>. An error occurs if the decoded key does not match B<type>.
24b0be11 32d2i_PublicKey() does the same for public keys.
b1b3e14f
DSH
33
34d2i_AutoPrivateKey() is similar to d2i_PrivateKey() except it attempts to
35automatically detect the private key format.
36
37i2d_PrivateKey() encodes B<key>. It uses a key specific format or, if none is
38defined for that key type, PKCS#8 unencrypted PrivateKeyInfo format.
24b0be11 39i2d_PublicKey() does the same for public keys.
b1b3e14f 40
4692340e 41These functions are similar to the d2i_X509() functions; see L<d2i_X509(3)>.
b1b3e14f
DSH
42
43=head1 NOTES
44
45All these functions use DER format and unencrypted keys. Applications wishing
46to encrypt or decrypt private keys should use other functions such as
dd07e68b 47d2i_PKCS8PrivateKey() instead.
b1b3e14f
DSH
48
49If the B<*a> is not NULL when calling d2i_PrivateKey() or d2i_AutoPrivateKey()
50(i.e. an existing structure is being reused) and the key format is PKCS#8
51then B<*a> will be freed and replaced on a successful call.
52
25ca7181
TS
53To decode a key with type B<EVP_PKEY_EC>, d2i_PublicKey() requires B<*a> to be
54a non-NULL EVP_PKEY structure assigned an EC_KEY structure referencing the proper
55EC_GROUP.
56
b1b3e14f
DSH
57=head1 RETURN VALUES
58
25ca7181
TS
59The d2i_PrivateKey(), d2i_AutoPrivateKey(), d2i_PrivateKey_bio(), d2i_PrivateKey_fp(),
60and d2i_PublicKey() functions return a valid B<EVP_KEY> structure or B<NULL> if an
61error occurs. The error code can be obtained by calling L<ERR_get_error(3)>.
b1b3e14f 62
25ca7181
TS
63i2d_PrivateKey() and i2d_PublicKey() return the number of bytes successfully
64encoded or a negative value if an error occurs. The error code can be obtained
65by calling L<ERR_get_error(3)>.
b1b3e14f
DSH
66
67=head1 SEE ALSO
68
b97fdb57 69L<crypto(7)>,
9e183d22 70L<d2i_PKCS8PrivateKey_bio(3)>
b1b3e14f 71
e2f92610
RS
72=head1 COPYRIGHT
73
25ca7181 74Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved.
e2f92610
RS
75
76Licensed under the OpenSSL license (the "License"). You may not use
77this file except in compliance with the License. You can obtain a copy
78in the file LICENSE in the source distribution or at
79L<https://www.openssl.org/source/license.html>.
80
81=cut