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