]>
Commit | Line | Data |
---|---|---|
01d358a3 DSH |
1 | =pod |
2 | ||
3 | =head1 NAME | |
4 | ||
a8f1aabd DMSP |
5 | X509_PUBKEY_new, X509_PUBKEY_free, X509_PUBKEY_dup, |
6 | X509_PUBKEY_set, X509_PUBKEY_get0, X509_PUBKEY_get, | |
7 | d2i_PUBKEY, i2d_PUBKEY, d2i_PUBKEY_bio, d2i_PUBKEY_fp, | |
93f99b68 DDO |
8 | i2d_PUBKEY_fp, i2d_PUBKEY_bio, X509_PUBKEY_set0_param, X509_PUBKEY_get0_param, |
9 | X509_PUBKEY_eq - SubjectPublicKeyInfo public key functions | |
01d358a3 DSH |
10 | |
11 | =head1 SYNOPSIS | |
12 | ||
13 | #include <openssl/x509.h> | |
14 | ||
15 | X509_PUBKEY *X509_PUBKEY_new(void); | |
16 | void X509_PUBKEY_free(X509_PUBKEY *a); | |
a8f1aabd | 17 | X509_PUBKEY *X509_PUBKEY_dup(const X509_PUBKEY *a); |
01d358a3 DSH |
18 | |
19 | int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); | |
7674e923 DDO |
20 | EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); |
21 | EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); | |
01d358a3 DSH |
22 | |
23 | EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); | |
9fdcc21f | 24 | int i2d_PUBKEY(const EVP_PKEY *a, unsigned char **pp); |
01d358a3 DSH |
25 | |
26 | EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); | |
27 | EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); | |
28 | ||
9fdcc21f DO |
29 | int i2d_PUBKEY_fp(const FILE *fp, EVP_PKEY *pkey); |
30 | int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); | |
01d358a3 DSH |
31 | |
32 | int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, | |
33 | int ptype, void *pval, | |
34 | unsigned char *penc, int penclen); | |
35 | int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, | |
36 | const unsigned char **pk, int *ppklen, | |
7674e923 | 37 | X509_ALGOR **pa, const X509_PUBKEY *pub); |
93f99b68 | 38 | int X509_PUBKEY_eq(X509_PUBKEY *a, X509_PUBKEY *b); |
01d358a3 DSH |
39 | |
40 | =head1 DESCRIPTION | |
41 | ||
42 | The B<X509_PUBKEY> structure represents the ASN.1 B<SubjectPublicKeyInfo> | |
43 | structure defined in RFC5280 and used in certificates and certificate requests. | |
44 | ||
45 | X509_PUBKEY_new() allocates and initializes an B<X509_PUBKEY> structure. | |
46 | ||
47 | X509_PUBKEY_free() frees up B<X509_PUBKEY> structure B<a>. If B<a> is NULL | |
48 | nothing is done. | |
49 | ||
50 | X509_PUBKEY_set() sets the public key in B<*x> to the public key contained | |
51 | in the B<EVP_PKEY> structure B<pkey>. If B<*x> is not NULL any existing | |
52 | public key structure will be freed. | |
53 | ||
54 | X509_PUBKEY_get0() returns the public key contained in B<key>. The returned | |
55 | value is an internal pointer which B<MUST NOT> be freed after use. | |
56 | ||
57 | X509_PUBKEY_get() is similar to X509_PUBKEY_get0() except the reference | |
58 | count on the returned key is incremented so it B<MUST> be freed using | |
59 | EVP_PKEY_free() after use. | |
60 | ||
61 | d2i_PUBKEY() and i2d_PUBKEY() decode and encode an B<EVP_PKEY> structure | |
0ad69cd6 | 62 | using B<SubjectPublicKeyInfo> format. They otherwise follow the conventions of |
01d358a3 DSH |
63 | other ASN.1 functions such as d2i_X509(). |
64 | ||
65 | d2i_PUBKEY_bio(), d2i_PUBKEY_fp(), i2d_PUBKEY_bio() and i2d_PUBKEY_fp() are | |
66 | similar to d2i_PUBKEY() and i2d_PUBKEY() except they decode or encode using a | |
67 | B<BIO> or B<FILE> pointer. | |
68 | ||
69 | X509_PUBKEY_set0_param() sets the public key parameters of B<pub>. The | |
70 | OID associated with the algorithm is set to B<aobj>. The type of the | |
71 | algorithm parameters is set to B<type> using the structure B<pval>. | |
72 | The encoding of the public key itself is set to the B<penclen> | |
73 | bytes contained in buffer B<penc>. On success ownership of all the supplied | |
74 | parameters is passed to B<pub> so they must not be freed after the | |
75 | call. | |
76 | ||
77 | X509_PUBKEY_get0_param() retrieves the public key parameters from B<pub>, | |
78 | B<*ppkalg> is set to the associated OID and the encoding consists of | |
79 | B<*ppklen> bytes at B<*pk>, B<*pa> is set to the associated | |
80 | AlgorithmIdentifier for the public key. If the value of any of these | |
81 | parameters is not required it can be set to B<NULL>. All of the | |
82 | retrieved pointers are internal and must not be freed after the | |
83 | call. | |
84 | ||
93f99b68 DDO |
85 | X509_PUBKEY_eq() compares two B<X509_PUBKEY> values. |
86 | ||
01d358a3 DSH |
87 | =head1 NOTES |
88 | ||
89 | The B<X509_PUBKEY> functions can be used to encode and decode public keys | |
90 | in a standard format. | |
91 | ||
92 | In many cases applications will not call the B<X509_PUBKEY> functions | |
93 | directly: they will instead call wrapper functions such as X509_get0_pubkey(). | |
94 | ||
95 | =head1 RETURN VALUES | |
96 | ||
97 | If the allocation fails, X509_PUBKEY_new() returns B<NULL> and sets an error | |
98 | code that can be obtained by L<ERR_get_error(3)>. | |
99 | ||
100 | Otherwise it returns a pointer to the newly allocated structure. | |
101 | ||
102 | X509_PUBKEY_free() does not return a value. | |
103 | ||
104 | X509_PUBKEY_get0() and X509_PUBKEY_get() return a pointer to an B<EVP_PKEY> | |
105 | structure or B<NULL> if an error occurs. | |
106 | ||
107 | X509_PUBKEY_set(), X509_PUBKEY_set0_param() and X509_PUBKEY_get0_param() | |
108 | return 1 for success and 0 if an error occurred. | |
109 | ||
93f99b68 DDO |
110 | X509_PUBKEY_eq() returns 1 for equal, 0 for different, and < 0 on error. |
111 | ||
01d358a3 DSH |
112 | =head1 SEE ALSO |
113 | ||
114 | L<d2i_X509(3)>, | |
115 | L<ERR_get_error(3)>, | |
116 | L<X509_get_pubkey(3)>, | |
117 | ||
93f99b68 DDO |
118 | =head1 HISTORY |
119 | ||
120 | The X509_PUBKEY_eq() function was added in OpenSSL 3.0. | |
121 | ||
e2f92610 RS |
122 | =head1 COPYRIGHT |
123 | ||
124 | Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. | |
125 | ||
4746f25a | 126 | Licensed under the Apache License 2.0 (the "License"). You may not use |
e2f92610 RS |
127 | this file except in compliance with the License. You can obtain a copy |
128 | in the file LICENSE in the source distribution or at | |
129 | L<https://www.openssl.org/source/license.html>. | |
130 | ||
131 | =cut |