pem.h
Go to the documentation of this file.
1 /* pem.h
2  *
3  * Copyright (C) 2006-2020 wolfSSL Inc.
4  *
5  * This file is part of wolfSSL.
6  *
7  * wolfSSL is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * wolfSSL is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
20  */
21 
22 /* pem.h for openssl */
23 
29 #ifndef WOLFSSL_PEM_H_
30 #define WOLFSSL_PEM_H_
31 
32 #include <wolfssl/openssl/evp.h>
33 #include <wolfssl/openssl/bio.h>
34 #include <wolfssl/openssl/rsa.h>
35 #include <wolfssl/openssl/dsa.h>
36 #include <wolfssl/ssl.h>
37 
38 #ifdef __cplusplus
39  extern "C" {
40 #endif
41 
42 /* RSA */
43 WOLFSSL_API
44 int wolfSSL_PEM_write_bio_RSAPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa,
45  const EVP_CIPHER* cipher,
46  unsigned char* passwd, int len,
47  pem_password_cb* cb, void* arg);
48 WOLFSSL_API
49 WOLFSSL_RSA* wolfSSL_PEM_read_bio_RSAPrivateKey(WOLFSSL_BIO* bio,
50  WOLFSSL_RSA**,
51  pem_password_cb* cb,
52  void* arg);
53 
54 WOLFSSL_API
55 int wolfSSL_PEM_write_bio_RSA_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa);
56 
57 WOLFSSL_API
58 WOLFSSL_RSA *wolfSSL_PEM_read_bio_RSA_PUBKEY(WOLFSSL_BIO* bio,
59  WOLFSSL_RSA** rsa,
60  pem_password_cb* cb, void *u);
61 
62 WOLFSSL_API
63 WOLFSSL_EC_GROUP* wolfSSL_PEM_read_bio_ECPKParameters(WOLFSSL_BIO* bio,
64  WOLFSSL_EC_GROUP** group,
65  pem_password_cb* cb,
66  void* pass);
67 WOLFSSL_API
68 int wolfSSL_PEM_write_mem_RSAPrivateKey(RSA* rsa, const EVP_CIPHER* cipher,
69  unsigned char* passwd, int len,
70  unsigned char **pem, int *plen);
71 #if !defined(NO_FILESYSTEM)
72 WOLFSSL_API
73 int wolfSSL_PEM_write_RSAPrivateKey(XFILE fp, WOLFSSL_RSA *rsa,
74  const EVP_CIPHER *enc,
75  unsigned char *kstr, int klen,
76  pem_password_cb *cb, void *u);
77 WOLFSSL_API
78 WOLFSSL_RSA *wolfSSL_PEM_read_RSAPublicKey(XFILE fp, WOLFSSL_RSA **x,
79  pem_password_cb *cb, void *u);
80 WOLFSSL_API
81 int wolfSSL_PEM_write_RSAPublicKey(XFILE fp, WOLFSSL_RSA *x);
82 
83 WOLFSSL_API
84 int wolfSSL_PEM_write_RSA_PUBKEY(XFILE fp, WOLFSSL_RSA *x);
85 #endif /* NO_FILESYSTEM */
86 
87 /* DSA */
88 WOLFSSL_API
89 int wolfSSL_PEM_write_bio_DSAPrivateKey(WOLFSSL_BIO* bio,
90  WOLFSSL_DSA* dsa,
91  const EVP_CIPHER* cipher,
92  unsigned char* passwd, int len,
93  pem_password_cb* cb, void* arg);
94 
95 WOLFSSL_API
96 WOLFSSL_DSA* wolfSSL_PEM_read_bio_DSAPrivateKey(WOLFSSL_BIO* bio,
97  WOLFSSL_DSA** dsa,
98  pem_password_cb* cb,void *pass);
99 
100 WOLFSSL_API
101 WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSA_PUBKEY(WOLFSSL_BIO* bio,WOLFSSL_DSA** dsa,
102  pem_password_cb* cb, void *pass);
103 
104 WOLFSSL_API
105 int wolfSSL_PEM_write_bio_DSA_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_DSA* dsa);
106 
107 WOLFSSL_API
108 int wolfSSL_PEM_write_mem_DSAPrivateKey(WOLFSSL_DSA* dsa,
109  const EVP_CIPHER* cipher,
110  unsigned char* passwd, int len,
111  unsigned char **pem, int *plen);
112 #if !defined(NO_FILESYSTEM)
113 WOLFSSL_API
114 int wolfSSL_PEM_write_DSAPrivateKey(XFILE fp, WOLFSSL_DSA *dsa,
115  const EVP_CIPHER *enc,
116  unsigned char *kstr, int klen,
117  pem_password_cb *cb, void *u);
118 WOLFSSL_API
119 int wolfSSL_PEM_write_DSA_PUBKEY(XFILE fp, WOLFSSL_DSA *x);
120 #endif /* NO_FILESYSTEM */
121 
122 /* ECC */
123 WOLFSSL_API
124 int wolfSSL_PEM_write_bio_ECPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec,
125  const EVP_CIPHER* cipher,
126  unsigned char* passwd, int len,
127  pem_password_cb* cb, void* arg);
128 WOLFSSL_API
129 WOLFSSL_EC_KEY* wolfSSL_PEM_read_bio_ECPrivateKey(WOLFSSL_BIO* bio,
130  WOLFSSL_EC_KEY** ec,
131  pem_password_cb* cb,
132  void *pass);
133 WOLFSSL_API
134 int wolfSSL_PEM_write_bio_EC_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec);
135 
136 WOLFSSL_API
137 int wolfSSL_PEM_write_mem_ECPrivateKey(WOLFSSL_EC_KEY* key,
138  const EVP_CIPHER* cipher,
139  unsigned char* passwd, int len,
140  unsigned char **pem, int *plen);
141 #if !defined(NO_FILESYSTEM)
142 WOLFSSL_API
143 int wolfSSL_PEM_write_ECPrivateKey(XFILE fp, WOLFSSL_EC_KEY *key,
144  const EVP_CIPHER *enc,
145  unsigned char *kstr, int klen,
146  pem_password_cb *cb, void *u);
147 WOLFSSL_API
148 int wolfSSL_PEM_write_EC_PUBKEY(XFILE fp, WOLFSSL_EC_KEY *key);
149 
150 WOLFSSL_API
151 WOLFSSL_EC_KEY* wolfSSL_PEM_read_bio_EC_PUBKEY(WOLFSSL_BIO* bio,
152  WOLFSSL_EC_KEY** ec,
153  pem_password_cb* cb, void *pass);
154 #endif /* NO_FILESYSTEM */
155 
156 /* EVP_KEY */
157 WOLFSSL_API
158 WOLFSSL_EVP_PKEY* wolfSSL_PEM_read_bio_PrivateKey(WOLFSSL_BIO* bio,
160  pem_password_cb* cb,
161  void* arg);
162 WOLFSSL_API
163 WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_bio_PUBKEY(WOLFSSL_BIO* bio,
164  WOLFSSL_EVP_PKEY **key,
165  pem_password_cb *cb, void *pass);
166 WOLFSSL_API
168  const WOLFSSL_EVP_CIPHER* cipher,
169  unsigned char* passwd, int len,
170  pem_password_cb* cb, void* arg);
171 WOLFSSL_API
172 int wolfSSL_PEM_write_bio_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_EVP_PKEY* key);
173 
174 
175 WOLFSSL_API
176 int wolfSSL_PEM_read_bio(WOLFSSL_BIO* bio, char **name, char **header,
177  unsigned char **data, long *len);
178 WOLFSSL_API
179 int wolfSSL_PEM_write_bio(WOLFSSL_BIO *bio, const char *name,
180  const char *header, const unsigned char *data,
181  long len);
182 #if !defined(NO_FILESYSTEM)
183 WOLFSSL_API
184 int wolfSSL_PEM_read(XFILE fp, char **name, char **header, unsigned char **data,
185  long *len);
186 WOLFSSL_API
187 int wolfSSL_PEM_write(XFILE fp, const char *name, const char *header,
188  const unsigned char *data, long len);
189 #endif
190 
191 #if !defined(NO_FILESYSTEM)
192 WOLFSSL_API
193 WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PUBKEY(XFILE fp, EVP_PKEY **x,
194  pem_password_cb *cb, void *u);
195 WOLFSSL_API
196 WOLFSSL_X509 *wolfSSL_PEM_read_X509(XFILE fp, WOLFSSL_X509 **x,
197  pem_password_cb *cb, void *u);
198 WOLFSSL_API
199 WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PrivateKey(XFILE fp, WOLFSSL_EVP_PKEY **x,
200  pem_password_cb *cb, void *u);
201 
202 WOLFSSL_API
203 int wolfSSL_PEM_write_X509(XFILE fp, WOLFSSL_X509 *x);
204 WOLFSSL_API
205 int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh);
206 #endif /* NO_FILESYSTEM */
207 
208 #define PEM_read wolfSSL_PEM_read
209 #define PEM_read_bio wolfSSL_PEM_read_bio
210 #define PEM_write wolfSSL_PEM_write
211 #define PEM_write_bio wolfSSL_PEM_write_bio
212 
213 #define PEM_read_X509 wolfSSL_PEM_read_X509
214 #define PEM_read_PrivateKey wolfSSL_PEM_read_PrivateKey
215 #define PEM_write_X509 wolfSSL_PEM_write_X509
216 #define PEM_write_bio_PrivateKey wolfSSL_PEM_write_bio_PrivateKey
217 #define PEM_write_bio_PKCS8PrivateKey wolfSSL_PEM_write_bio_PKCS8PrivateKey
218 
219 /* DH */
220 #define PEM_write_DHparams wolfSSL_PEM_write_DHparams
221 /* RSA */
222 #define PEM_write_bio_RSAPrivateKey wolfSSL_PEM_write_bio_RSAPrivateKey
223 #define PEM_read_bio_RSAPrivateKey wolfSSL_PEM_read_bio_RSAPrivateKey
224 #define PEM_write_bio_RSA_PUBKEY wolfSSL_PEM_write_bio_RSA_PUBKEY
225 #define PEM_read_bio_RSA_PUBKEY wolfSSL_PEM_read_bio_RSA_PUBKEY
226 #define PEM_read_bio_ECPKParameters wolfSSL_PEM_read_bio_ECPKParameters
227 #define PEM_write_RSAPrivateKey wolfSSL_PEM_write_RSAPrivateKey
228 #define PEM_write_RSA_PUBKEY wolfSSL_PEM_write_RSA_PUBKEY
229 #define PEM_write_RSAPublicKey wolfSSL_PEM_write_RSAPublicKey
230 #define PEM_read_RSAPublicKey wolfSSL_PEM_read_RSAPublicKey
231 /* DSA */
232 #define PEM_write_bio_DSAPrivateKey wolfSSL_PEM_write_bio_DSAPrivateKey
233 #define PEM_write_DSAPrivateKey wolfSSL_PEM_write_DSAPrivateKey
234 #define PEM_write_bio_DSA_PUBKEY wolfSSL_PEM_write_bio_DSA_PUBKEY
235 #define PEM_write_DSA_PUBKEY wolfSSL_PEM_write_DSA_PUBKEY
236 #define PEM_read_bio_DSAPrivateKey wolfSSL_PEM_read_bio_DSAPrivateKey
237 #define PEM_read_bio_DSA_PUBKEY wolfSSL_PEM_read_bio_DSA_PUBKEY
238 /* ECC */
239 #define PEM_write_bio_ECPrivateKey wolfSSL_PEM_write_bio_ECPrivateKey
240 #define PEM_write_bio_EC_PUBKEY wolfSSL_PEM_write_bio_EC_PUBKEY
241 #define PEM_write_EC_PUBKEY wolfSSL_PEM_write_EC_PUBKEY
242 #define PEM_write_ECPrivateKey wolfSSL_PEM_write_ECPrivateKey
243 #define PEM_read_bio_ECPrivateKey wolfSSL_PEM_read_bio_ECPrivateKey
244 #define PEM_read_bio_EC_PUBKEY wolfSSL_PEM_read_bio_EC_PUBKEY
245 /* EVP_KEY */
246 #define PEM_read_bio_PrivateKey wolfSSL_PEM_read_bio_PrivateKey
247 #define PEM_read_PUBKEY wolfSSL_PEM_read_PUBKEY
248 #define PEM_read_bio_PUBKEY wolfSSL_PEM_read_bio_PUBKEY
249 #define PEM_write_bio_PUBKEY wolfSSL_PEM_write_bio_PUBKEY
250 
251 #ifdef __cplusplus
252  } /* extern "C" */
253 #endif
254 
255 #endif /* WOLFSSL_PEM_H_ */
256 
Definition: rsa.h:66
Definition: ssl.h:316
Header file containing key wolfSSL API.
WOLFSSL_API int wolfSSL_PEM_write_bio_PrivateKey(WOLFSSL_BIO *bio, WOLFSSL_EVP_PKEY *key, const WOLFSSL_EVP_CIPHER *cipher, unsigned char *passwd, int len, pem_password_cb *cb, void *arg)
This function writes a key into a WOLFSSL_BIO structure in PEM format.
Definition: ssl.c:31102
evp.h defines mini evp openssl compatibility layer
Definition: ec.h:106
Definition: internal.h:3598
Definition: ssl.h:461
Definition: dh.h:41
Definition: ec.h:100
Definition: dsa.h:46