summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x_all.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509/x_all.c')
-rw-r--r--src/lib/libcrypto/x509/x_all.c749
1 files changed, 417 insertions, 332 deletions
diff --git a/src/lib/libcrypto/x509/x_all.c b/src/lib/libcrypto/x509/x_all.c
index e06602d65a..59099f026f 100644
--- a/src/lib/libcrypto/x509/x_all.c
+++ b/src/lib/libcrypto/x509/x_all.c
@@ -70,468 +70,553 @@
70#include <openssl/dsa.h> 70#include <openssl/dsa.h>
71#endif 71#endif
72 72
73int X509_verify(X509 *a, EVP_PKEY *r) 73int
74 { 74X509_verify(X509 *a, EVP_PKEY *r)
75 return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CINF),a->sig_alg, 75{
76 a->signature,a->cert_info,r)); 76 return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CINF), a->sig_alg,
77 } 77 a->signature, a->cert_info, r));
78 78}
79int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r) 79
80 { 80int
81X509_REQ_verify(X509_REQ *a, EVP_PKEY *r)
82{
81 return( ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO), 83 return( ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO),
82 a->sig_alg,a->signature,a->req_info,r)); 84 a->sig_alg, a->signature, a->req_info, r));
83 } 85}
84 86
85int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) 87int
86 { 88NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r)
89{
87 return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC), 90 return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC),
88 a->sig_algor,a->signature,a->spkac,r)); 91 a->sig_algor, a->signature, a->spkac, r));
89 } 92}
90 93
91int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) 94int
92 { 95X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md)
96{
93 x->cert_info->enc.modified = 1; 97 x->cert_info->enc.modified = 1;
94 return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF), x->cert_info->signature, 98 return (ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF),
95 x->sig_alg, x->signature, x->cert_info,pkey,md)); 99 x->cert_info->signature, x->sig_alg, x->signature,
96 } 100 x->cert_info, pkey, md));
101}
97 102
98int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx) 103int
99 { 104X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx)
105{
100 x->cert_info->enc.modified = 1; 106 x->cert_info->enc.modified = 1;
101 return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CINF), 107 return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CINF),
102 x->cert_info->signature, 108 x->cert_info->signature, x->sig_alg, x->signature,
103 x->sig_alg, x->signature, x->cert_info, ctx); 109 x->cert_info, ctx);
104 } 110}
105 111
106int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md) 112int
107 { 113X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md)
108 return(ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO),x->sig_alg, NULL, 114{
109 x->signature, x->req_info,pkey,md)); 115 return (ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO),
110 } 116 x->sig_alg, NULL, x->signature, x->req_info, pkey, md));
111 117}
112int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx) 118
113 { 119int
120X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx)
121{
114 return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO), 122 return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO),
115 x->sig_alg, NULL, x->signature, x->req_info, ctx); 123 x->sig_alg, NULL, x->signature, x->req_info, ctx);
116 } 124}
117 125
118int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md) 126int
119 { 127X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md)
128{
120 x->crl->enc.modified = 1; 129 x->crl->enc.modified = 1;
121 return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CRL_INFO),x->crl->sig_alg, 130 return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CRL_INFO), x->crl->sig_alg,
122 x->sig_alg, x->signature, x->crl,pkey,md)); 131 x->sig_alg, x->signature, x->crl, pkey, md));
123 } 132}
124 133
125int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx) 134int
126 { 135X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx)
136{
127 x->crl->enc.modified = 1; 137 x->crl->enc.modified = 1;
128 return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CRL_INFO), 138 return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CRL_INFO),
129 x->crl->sig_alg, x->sig_alg, x->signature, x->crl, ctx); 139 x->crl->sig_alg, x->sig_alg, x->signature, x->crl, ctx);
130 } 140}
131 141
132int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md) 142int
133 { 143NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md)
134 return(ASN1_item_sign(ASN1_ITEM_rptr(NETSCAPE_SPKAC), x->sig_algor,NULL, 144{
135 x->signature, x->spkac,pkey,md)); 145 return (ASN1_item_sign(ASN1_ITEM_rptr(NETSCAPE_SPKAC),
136 } 146 x->sig_algor, NULL, x->signature, x->spkac, pkey, md));
147}
137 148
138#ifndef OPENSSL_NO_FP_API 149#ifndef OPENSSL_NO_FP_API
139X509 *d2i_X509_fp(FILE *fp, X509 **x509) 150X509
140 { 151*d2i_X509_fp(FILE *fp, X509 **x509)
152{
141 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509), fp, x509); 153 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509), fp, x509);
142 } 154}
143 155
144int i2d_X509_fp(FILE *fp, X509 *x509) 156int
145 { 157i2d_X509_fp(FILE *fp, X509 *x509)
158{
146 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509), fp, x509); 159 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509), fp, x509);
147 } 160}
148#endif 161#endif
149 162
150X509 *d2i_X509_bio(BIO *bp, X509 **x509) 163X509
151 { 164*d2i_X509_bio(BIO *bp, X509 **x509)
165{
152 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bp, x509); 166 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bp, x509);
153 } 167}
154 168
155int i2d_X509_bio(BIO *bp, X509 *x509) 169int
156 { 170i2d_X509_bio(BIO *bp, X509 *x509)
171{
157 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509), bp, x509); 172 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509), bp, x509);
158 } 173}
159 174
160#ifndef OPENSSL_NO_FP_API 175#ifndef OPENSSL_NO_FP_API
161X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl) 176X509_CRL
162 { 177*d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl)
178{
163 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl); 179 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl);
164 } 180}
165 181
166int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl) 182int
167 { 183i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl)
184{
168 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl); 185 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl);
169 } 186}
170#endif 187#endif
171 188
172X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl) 189X509_CRL
173 { 190*d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl)
191{
174 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); 192 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl);
175 } 193}
176 194
177int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl) 195int
178 { 196i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl)
197{
179 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); 198 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl);
180 } 199}
181 200
182#ifndef OPENSSL_NO_FP_API 201#ifndef OPENSSL_NO_FP_API
183PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7) 202PKCS7
184 { 203*d2i_PKCS7_fp(FILE *fp, PKCS7 **p7)
204{
185 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(PKCS7), fp, p7); 205 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(PKCS7), fp, p7);
186 } 206}
187 207
188int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7) 208int
189 { 209i2d_PKCS7_fp(FILE *fp, PKCS7 *p7)
210{
190 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(PKCS7), fp, p7); 211 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(PKCS7), fp, p7);
191 } 212}
192#endif 213#endif
193 214
194PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7) 215PKCS7
195 { 216*d2i_PKCS7_bio(BIO *bp, PKCS7 **p7)
217{
196 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); 218 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(PKCS7), bp, p7);
197 } 219}
198 220
199int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7) 221int
200 { 222i2d_PKCS7_bio(BIO *bp, PKCS7 *p7)
223{
201 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); 224 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(PKCS7), bp, p7);
202 } 225}
203 226
204#ifndef OPENSSL_NO_FP_API 227#ifndef OPENSSL_NO_FP_API
205X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req) 228X509_REQ
206 { 229*d2i_X509_REQ_fp(FILE *fp, X509_REQ **req)
230{
207 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_REQ), fp, req); 231 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_REQ), fp, req);
208 } 232}
209 233
210int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req) 234int
211 { 235i2d_X509_REQ_fp(FILE *fp, X509_REQ *req)
236{
212 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_REQ), fp, req); 237 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_REQ), fp, req);
213 } 238}
214#endif 239#endif
215 240
216X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req) 241X509_REQ
217 { 242*d2i_X509_REQ_bio(BIO *bp, X509_REQ **req)
243{
218 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); 244 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_REQ), bp, req);
219 } 245}
220 246
221int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req) 247int
222 { 248i2d_X509_REQ_bio(BIO *bp, X509_REQ *req)
249{
223 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); 250 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_REQ), bp, req);
224 } 251}
225 252
226#ifndef OPENSSL_NO_RSA 253#ifndef OPENSSL_NO_RSA
227 254
228#ifndef OPENSSL_NO_FP_API 255#ifndef OPENSSL_NO_FP_API
229RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa) 256RSA
230 { 257*d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa)
258{
231 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa); 259 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa);
232 } 260}
233 261
234int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa) 262int
235 { 263i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa)
264{
236 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa); 265 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa);
237 } 266}
238 267
239RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa) 268RSA
240 { 269*d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa)
270{
241 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); 271 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa);
242 } 272}
243 273
244 274
245RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa) 275RSA
246 { 276*d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa)
247 return ASN1_d2i_fp((void *(*)(void)) 277{
248 RSA_new,(D2I_OF(void))d2i_RSA_PUBKEY, fp, 278 return ASN1_d2i_fp((void *(*)(void))RSA_new,
249 (void **)rsa); 279 (D2I_OF(void))d2i_RSA_PUBKEY, fp, (void **)rsa);
250 } 280}
251 281
252int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa) 282int
253 { 283i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa)
284{
254 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); 285 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa);
255 } 286}
256 287
257int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa) 288int
258 { 289i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa)
259 return ASN1_i2d_fp((I2D_OF(void))i2d_RSA_PUBKEY,fp,rsa); 290{
260 } 291 return ASN1_i2d_fp((I2D_OF(void))i2d_RSA_PUBKEY, fp, rsa);
292}
261#endif 293#endif
262 294
263RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa) 295RSA
264 { 296*d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa)
297{
265 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); 298 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa);
266 } 299}
267 300
268int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa) 301int
269 { 302i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa)
303{
270 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); 304 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa);
271 } 305}
272 306
273RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa) 307RSA
274 { 308*d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa)
309{
275 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); 310 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa);
276 } 311}
277 312
278 313
279RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa) 314RSA
280 { 315*d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa)
281 return ASN1_d2i_bio_of(RSA,RSA_new,d2i_RSA_PUBKEY,bp,rsa); 316{
282 } 317 return ASN1_d2i_bio_of(RSA, RSA_new, d2i_RSA_PUBKEY, bp, rsa);
318}
283 319
284int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa) 320int
285 { 321i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa)
322{
286 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); 323 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa);
287 } 324}
288 325
289int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa) 326int
290 { 327i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa)
291 return ASN1_i2d_bio_of(RSA,i2d_RSA_PUBKEY,bp,rsa); 328{
292 } 329 return ASN1_i2d_bio_of(RSA, i2d_RSA_PUBKEY, bp, rsa);
330}
293#endif 331#endif
294 332
295#ifndef OPENSSL_NO_DSA 333#ifndef OPENSSL_NO_DSA
296#ifndef OPENSSL_NO_FP_API 334#ifndef OPENSSL_NO_FP_API
297DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa) 335DSA
298 { 336*d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa)
299 return ASN1_d2i_fp_of(DSA,DSA_new,d2i_DSAPrivateKey,fp,dsa); 337{
300 } 338 return ASN1_d2i_fp_of(DSA, DSA_new, d2i_DSAPrivateKey, fp, dsa);
301 339}
302int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa) 340
303 { 341int
304 return ASN1_i2d_fp_of_const(DSA,i2d_DSAPrivateKey,fp,dsa); 342i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa)
305 } 343{
306 344 return ASN1_i2d_fp_of_const(DSA, i2d_DSAPrivateKey, fp, dsa);
307DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa) 345}
308 { 346
309 return ASN1_d2i_fp_of(DSA,DSA_new,d2i_DSA_PUBKEY,fp,dsa); 347DSA
310 } 348*d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa)
311 349{
312int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa) 350 return ASN1_d2i_fp_of(DSA, DSA_new, d2i_DSA_PUBKEY, fp, dsa);
313 { 351}
314 return ASN1_i2d_fp_of(DSA,i2d_DSA_PUBKEY,fp,dsa); 352
315 } 353int
354i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa)
355{
356 return ASN1_i2d_fp_of(DSA, i2d_DSA_PUBKEY, fp, dsa);
357}
316#endif 358#endif
317 359
318DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa) 360DSA
319 { 361*d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa)
320 return ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAPrivateKey,bp,dsa 362{
321); 363 return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSAPrivateKey, bp, dsa);
322 } 364}
323 365
324int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa) 366int
325 { 367i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa)
326 return ASN1_i2d_bio_of_const(DSA,i2d_DSAPrivateKey,bp,dsa); 368{
327 } 369 return ASN1_i2d_bio_of_const(DSA, i2d_DSAPrivateKey, bp, dsa);
370}
328 371
329DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa) 372DSA
330 { 373*d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa)
331 return ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSA_PUBKEY,bp,dsa); 374{
332 } 375 return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSA_PUBKEY, bp, dsa);
376}
333 377
334int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa) 378int
335 { 379i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa)
336 return ASN1_i2d_bio_of(DSA,i2d_DSA_PUBKEY,bp,dsa); 380{
337 } 381 return ASN1_i2d_bio_of(DSA, i2d_DSA_PUBKEY, bp, dsa);
382}
338 383
339#endif 384#endif
340 385
341#ifndef OPENSSL_NO_EC 386#ifndef OPENSSL_NO_EC
342#ifndef OPENSSL_NO_FP_API 387#ifndef OPENSSL_NO_FP_API
343EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey) 388EC_KEY
344 { 389*d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey)
345 return ASN1_d2i_fp_of(EC_KEY,EC_KEY_new,d2i_EC_PUBKEY,fp,eckey); 390{
346 } 391 return ASN1_d2i_fp_of(EC_KEY, EC_KEY_new, d2i_EC_PUBKEY, fp, eckey);
347 392}
348int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey) 393
349 { 394int
350 return ASN1_i2d_fp_of(EC_KEY,i2d_EC_PUBKEY,fp,eckey); 395i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey)
351 } 396{
352 397 return ASN1_i2d_fp_of(EC_KEY, i2d_EC_PUBKEY, fp, eckey);
353EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey) 398}
354 { 399
355 return ASN1_d2i_fp_of(EC_KEY,EC_KEY_new,d2i_ECPrivateKey,fp,eckey); 400EC_KEY
356 } 401*d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey)
357 402{
358int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey) 403 return ASN1_d2i_fp_of(EC_KEY, EC_KEY_new, d2i_ECPrivateKey, fp, eckey);
359 { 404}
360 return ASN1_i2d_fp_of(EC_KEY,i2d_ECPrivateKey,fp,eckey); 405
361 } 406int
407i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey)
408{
409 return ASN1_i2d_fp_of(EC_KEY, i2d_ECPrivateKey, fp, eckey);
410}
362#endif 411#endif
363EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey) 412EC_KEY
364 { 413*d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey)
365 return ASN1_d2i_bio_of(EC_KEY,EC_KEY_new,d2i_EC_PUBKEY,bp,eckey); 414{
366 } 415 return ASN1_d2i_bio_of(EC_KEY, EC_KEY_new, d2i_EC_PUBKEY, bp, eckey);
367 416}
368int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *ecdsa) 417
369 { 418int
370 return ASN1_i2d_bio_of(EC_KEY,i2d_EC_PUBKEY,bp,ecdsa); 419i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *ecdsa)
371 } 420{
372 421 return ASN1_i2d_bio_of(EC_KEY, i2d_EC_PUBKEY, bp, ecdsa);
373EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey) 422}
374 { 423
375 return ASN1_d2i_bio_of(EC_KEY,EC_KEY_new,d2i_ECPrivateKey,bp,eckey); 424EC_KEY
376 } 425*d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey)
377 426{
378int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey) 427 return ASN1_d2i_bio_of(EC_KEY, EC_KEY_new, d2i_ECPrivateKey, bp, eckey);
379 { 428}
380 return ASN1_i2d_bio_of(EC_KEY,i2d_ECPrivateKey,bp,eckey); 429
381 } 430int
431i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey)
432{
433 return ASN1_i2d_bio_of(EC_KEY, i2d_ECPrivateKey, bp, eckey);
434}
382#endif 435#endif
383 436
384 437
385int X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned char *md, 438int
386 unsigned int *len) 439X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned char *md,
387 { 440 unsigned int *len)
441{
388 ASN1_BIT_STRING *key; 442 ASN1_BIT_STRING *key;
389 key = X509_get0_pubkey_bitstr(data); 443 key = X509_get0_pubkey_bitstr(data);
390 if(!key) return 0; 444 if (!key)
445 return 0;
391 return EVP_Digest(key->data, key->length, md, len, type, NULL); 446 return EVP_Digest(key->data, key->length, md, len, type, NULL);
392 } 447}
393 448
394int X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md, 449int
395 unsigned int *len) 450X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md,
396 { 451 unsigned int *len)
397 return(ASN1_item_digest(ASN1_ITEM_rptr(X509),type,(char *)data,md,len)); 452{
398 } 453 return (ASN1_item_digest(ASN1_ITEM_rptr(X509), type, (char *)data,
399 454 md, len));
400int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md, 455}
401 unsigned int *len) 456
402 { 457int
403 return(ASN1_item_digest(ASN1_ITEM_rptr(X509_CRL),type,(char *)data,md,len)); 458X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md,
404 } 459 unsigned int *len)
405 460{
406int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, unsigned char *md, 461 return (ASN1_item_digest(ASN1_ITEM_rptr(X509_CRL), type, (char *)data,
407 unsigned int *len) 462 md, len));
408 { 463}
409 return(ASN1_item_digest(ASN1_ITEM_rptr(X509_REQ),type,(char *)data,md,len)); 464
410 } 465int
411 466X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, unsigned char *md,
412int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md, 467 unsigned int *len)
413 unsigned int *len) 468{
414 { 469 return (ASN1_item_digest(ASN1_ITEM_rptr(X509_REQ), type,(char *)data,
415 return(ASN1_item_digest(ASN1_ITEM_rptr(X509_NAME),type,(char *)data,md,len)); 470 md, len));
416 } 471}
417 472
418int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, const EVP_MD *type, 473int
419 unsigned char *md, unsigned int *len) 474X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md,
420 { 475 unsigned int *len)
421 return(ASN1_item_digest(ASN1_ITEM_rptr(PKCS7_ISSUER_AND_SERIAL),type, 476{
422 (char *)data,md,len)); 477 return (ASN1_item_digest(ASN1_ITEM_rptr(X509_NAME), type,(char *)data,
423 } 478 md, len));
479}
480
481int
482PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,
483 const EVP_MD *type, unsigned char *md, unsigned int *len)
484{
485 return(ASN1_item_digest(ASN1_ITEM_rptr(PKCS7_ISSUER_AND_SERIAL), type,
486 (char *)data, md, len));
487}
424 488
425 489
426#ifndef OPENSSL_NO_FP_API 490#ifndef OPENSSL_NO_FP_API
427X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8) 491X509_SIG
428 { 492*d2i_PKCS8_fp(FILE *fp, X509_SIG **p8)
429 return ASN1_d2i_fp_of(X509_SIG,X509_SIG_new,d2i_X509_SIG,fp,p8); 493{
430 } 494 return ASN1_d2i_fp_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, fp, p8);
431 495}
432int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8) 496
433 { 497int
434 return ASN1_i2d_fp_of(X509_SIG,i2d_X509_SIG,fp,p8); 498i2d_PKCS8_fp(FILE *fp, X509_SIG *p8)
435 } 499{
500 return ASN1_i2d_fp_of(X509_SIG, i2d_X509_SIG, fp, p8);
501}
436#endif 502#endif
437 503
438X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8) 504X509_SIG
439 { 505*d2i_PKCS8_bio(BIO *bp, X509_SIG **p8)
440 return ASN1_d2i_bio_of(X509_SIG,X509_SIG_new,d2i_X509_SIG,bp,p8); 506{
441 } 507 return ASN1_d2i_bio_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, bp, p8);
508}
442 509
443int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8) 510int
444 { 511i2d_PKCS8_bio(BIO *bp, X509_SIG *p8)
445 return ASN1_i2d_bio_of(X509_SIG,i2d_X509_SIG,bp,p8); 512{
446 } 513 return ASN1_i2d_bio_of(X509_SIG, i2d_X509_SIG, bp, p8);
514}
447 515
448#ifndef OPENSSL_NO_FP_API 516#ifndef OPENSSL_NO_FP_API
449PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, 517PKCS8_PRIV_KEY_INFO
450 PKCS8_PRIV_KEY_INFO **p8inf) 518*d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
451 { 519PKCS8_PRIV_KEY_INFO **p8inf)
452 return ASN1_d2i_fp_of(PKCS8_PRIV_KEY_INFO,PKCS8_PRIV_KEY_INFO_new, 520{
453 d2i_PKCS8_PRIV_KEY_INFO,fp,p8inf); 521 return ASN1_d2i_fp_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new,
454 } 522 d2i_PKCS8_PRIV_KEY_INFO, fp, p8inf);
455 523}
456int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf) 524
457 { 525int
458 return ASN1_i2d_fp_of(PKCS8_PRIV_KEY_INFO,i2d_PKCS8_PRIV_KEY_INFO,fp, 526i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf)
459 p8inf); 527{
460 } 528 return ASN1_i2d_fp_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO,
461 529 fp, p8inf);
462int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key) 530}
463 { 531
532int
533i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key)
534{
464 PKCS8_PRIV_KEY_INFO *p8inf; 535 PKCS8_PRIV_KEY_INFO *p8inf;
465 int ret; 536 int ret;
466 p8inf = EVP_PKEY2PKCS8(key); 537 p8inf = EVP_PKEY2PKCS8(key);
467 if(!p8inf) return 0; 538 if (!p8inf)
539 return 0;
468 ret = i2d_PKCS8_PRIV_KEY_INFO_fp(fp, p8inf); 540 ret = i2d_PKCS8_PRIV_KEY_INFO_fp(fp, p8inf);
469 PKCS8_PRIV_KEY_INFO_free(p8inf); 541 PKCS8_PRIV_KEY_INFO_free(p8inf);
470 return ret; 542 return ret;
471 } 543}
472 544
473int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey) 545int
474 { 546i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey)
475 return ASN1_i2d_fp_of(EVP_PKEY,i2d_PrivateKey,fp,pkey); 547{
476 } 548 return ASN1_i2d_fp_of(EVP_PKEY, i2d_PrivateKey, fp, pkey);
549}
477 550
478EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a) 551EVP_PKEY
552*d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a)
479{ 553{
480 return ASN1_d2i_fp_of(EVP_PKEY,EVP_PKEY_new,d2i_AutoPrivateKey,fp,a); 554 return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey,
555 fp, a);
481} 556}
482 557
483int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey) 558int
484 { 559i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey)
485 return ASN1_i2d_fp_of(EVP_PKEY,i2d_PUBKEY,fp,pkey); 560{
486 } 561 return ASN1_i2d_fp_of(EVP_PKEY, i2d_PUBKEY, fp, pkey);
562}
487 563
488EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a) 564EVP_PKEY
565*d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a)
489{ 566{
490 return ASN1_d2i_fp_of(EVP_PKEY,EVP_PKEY_new,d2i_PUBKEY,fp,a); 567 return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, fp, a);
491} 568}
492 569
493#endif 570#endif
494 571
495PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, 572PKCS8_PRIV_KEY_INFO
496 PKCS8_PRIV_KEY_INFO **p8inf) 573*d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
497 { 574PKCS8_PRIV_KEY_INFO **p8inf)
498 return ASN1_d2i_bio_of(PKCS8_PRIV_KEY_INFO,PKCS8_PRIV_KEY_INFO_new, 575{
499 d2i_PKCS8_PRIV_KEY_INFO,bp,p8inf); 576 return ASN1_d2i_bio_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new,
500 } 577 d2i_PKCS8_PRIV_KEY_INFO, bp, p8inf);
501 578}
502int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf) 579
503 { 580int
504 return ASN1_i2d_bio_of(PKCS8_PRIV_KEY_INFO,i2d_PKCS8_PRIV_KEY_INFO,bp, 581i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf)
505 p8inf); 582{
506 } 583 return ASN1_i2d_bio_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO,
507 584 bp, p8inf);
508int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key) 585}
509 { 586
587int
588i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key)
589{
510 PKCS8_PRIV_KEY_INFO *p8inf; 590 PKCS8_PRIV_KEY_INFO *p8inf;
511 int ret; 591 int ret;
512 p8inf = EVP_PKEY2PKCS8(key); 592 p8inf = EVP_PKEY2PKCS8(key);
513 if(!p8inf) return 0; 593 if (!p8inf)
594 return 0;
514 ret = i2d_PKCS8_PRIV_KEY_INFO_bio(bp, p8inf); 595 ret = i2d_PKCS8_PRIV_KEY_INFO_bio(bp, p8inf);
515 PKCS8_PRIV_KEY_INFO_free(p8inf); 596 PKCS8_PRIV_KEY_INFO_free(p8inf);
516 return ret; 597 return ret;
517 } 598}
518 599
519int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey) 600int
520 { 601i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey)
521 return ASN1_i2d_bio_of(EVP_PKEY,i2d_PrivateKey,bp,pkey); 602{
522 } 603 return ASN1_i2d_bio_of(EVP_PKEY, i2d_PrivateKey, bp, pkey);
523 604}
524EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a) 605
525 { 606EVP_PKEY
526 return ASN1_d2i_bio_of(EVP_PKEY,EVP_PKEY_new,d2i_AutoPrivateKey,bp,a); 607*d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a)
527 } 608{
528 609 return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey, bp, a);
529int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey) 610}
530 { 611
531 return ASN1_i2d_bio_of(EVP_PKEY,i2d_PUBKEY,bp,pkey); 612int
532 } 613i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey)
533 614{
534EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a) 615 return ASN1_i2d_bio_of(EVP_PKEY, i2d_PUBKEY, bp, pkey);
535 { 616}
536 return ASN1_d2i_bio_of(EVP_PKEY,EVP_PKEY_new,d2i_PUBKEY,bp,a); 617
537 } 618EVP_PKEY
619*d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a)
620{
621 return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, bp, a);
622}