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.c523
1 files changed, 273 insertions, 250 deletions
diff --git a/src/lib/libcrypto/x509/x_all.c b/src/lib/libcrypto/x509/x_all.c
index b7dde23e9a..fb5015cd4d 100644
--- a/src/lib/libcrypto/x509/x_all.c
+++ b/src/lib/libcrypto/x509/x_all.c
@@ -58,408 +58,431 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#undef SSLEAY_MACROS 60#undef SSLEAY_MACROS
61#include "stack.h" 61#include <openssl/stack.h>
62#include "cryptlib.h" 62#include "cryptlib.h"
63#include "buffer.h" 63#include <openssl/buffer.h>
64#include "asn1.h" 64#include <openssl/asn1.h>
65#include "evp.h" 65#include <openssl/evp.h>
66#include "x509.h" 66#include <openssl/x509.h>
67 67
68int X509_verify(a,r) 68int X509_verify(X509 *a, EVP_PKEY *r)
69X509 *a;
70EVP_PKEY *r;
71 { 69 {
72 return(ASN1_verify((int (*)())i2d_X509_CINF,a->sig_alg, 70 return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CINF),a->sig_alg,
73 a->signature,(char *)a->cert_info,r)); 71 a->signature,a->cert_info,r));
74 } 72 }
75 73
76int X509_REQ_verify(a,r) 74int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r)
77X509_REQ *a;
78EVP_PKEY *r;
79 { 75 {
80 return( ASN1_verify((int (*)())i2d_X509_REQ_INFO, 76 return( ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO),
81 a->sig_alg,a->signature,(char *)a->req_info,r)); 77 a->sig_alg,a->signature,a->req_info,r));
82 } 78 }
83 79
84int X509_CRL_verify(a,r) 80int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r)
85X509_CRL *a;
86EVP_PKEY *r;
87 { 81 {
88 return(ASN1_verify((int (*)())i2d_X509_CRL_INFO, 82 return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CRL_INFO),
89 a->sig_alg, a->signature,(char *)a->crl,r)); 83 a->sig_alg, a->signature,a->crl,r));
90 } 84 }
91 85
92int NETSCAPE_SPKI_verify(a,r) 86int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r)
93NETSCAPE_SPKI *a;
94EVP_PKEY *r;
95 { 87 {
96 return(ASN1_verify((int (*)())i2d_NETSCAPE_SPKAC, 88 return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC),
97 a->sig_algor,a->signature, (char *)a->spkac,r)); 89 a->sig_algor,a->signature,a->spkac,r));
98 } 90 }
99 91
100int X509_sign(x,pkey,md) 92int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md)
101X509 *x;
102EVP_PKEY *pkey;
103EVP_MD *md;
104 { 93 {
105 return(ASN1_sign((int (*)())i2d_X509_CINF, x->cert_info->signature, 94 return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF), x->cert_info->signature,
106 x->sig_alg, x->signature, (char *)x->cert_info,pkey,md)); 95 x->sig_alg, x->signature, x->cert_info,pkey,md));
107 } 96 }
108 97
109int X509_REQ_sign(x,pkey,md) 98int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md)
110X509_REQ *x;
111EVP_PKEY *pkey;
112EVP_MD *md;
113 { 99 {
114 return(ASN1_sign((int (*)())i2d_X509_REQ_INFO,x->sig_alg, NULL, 100 return(ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO),x->sig_alg, NULL,
115 x->signature, (char *)x->req_info,pkey,md)); 101 x->signature, x->req_info,pkey,md));
116 } 102 }
117 103
118int X509_CRL_sign(x,pkey,md) 104int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md)
119X509_CRL *x;
120EVP_PKEY *pkey;
121EVP_MD *md;
122 { 105 {
123 return(ASN1_sign((int (*)())i2d_X509_CRL_INFO,x->crl->sig_alg, 106 return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CRL_INFO),x->crl->sig_alg,
124 x->sig_alg, x->signature, (char *)x->crl,pkey,md)); 107 x->sig_alg, x->signature, x->crl,pkey,md));
125 } 108 }
126 109
127int NETSCAPE_SPKI_sign(x,pkey,md) 110int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md)
128NETSCAPE_SPKI *x;
129EVP_PKEY *pkey;
130EVP_MD *md;
131 { 111 {
132 return(ASN1_sign((int (*)())i2d_NETSCAPE_SPKAC, x->sig_algor,NULL, 112 return(ASN1_item_sign(ASN1_ITEM_rptr(NETSCAPE_SPKAC), x->sig_algor,NULL,
133 x->signature, (char *)x->spkac,pkey,md)); 113 x->signature, x->spkac,pkey,md));
134 } 114 }
135 115
136X509 *X509_dup(x509) 116#ifndef OPENSSL_NO_FP_API
137X509 *x509; 117X509 *d2i_X509_fp(FILE *fp, X509 **x509)
138 { 118 {
139 return((X509 *)ASN1_dup((int (*)())i2d_X509, 119 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509), fp, x509);
140 (char *(*)())d2i_X509,(char *)x509));
141 } 120 }
142 121
143X509_EXTENSION *X509_EXTENSION_dup(ex) 122int i2d_X509_fp(FILE *fp, X509 *x509)
144X509_EXTENSION *ex;
145 { 123 {
146 return((X509_EXTENSION *)ASN1_dup( 124 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509), fp, x509);
147 (int (*)())i2d_X509_EXTENSION,
148 (char *(*)())d2i_X509_EXTENSION,(char *)ex));
149 } 125 }
126#endif
150 127
151#ifndef NO_FP_API 128X509 *d2i_X509_bio(BIO *bp, X509 **x509)
152X509 *d2i_X509_fp(fp,x509)
153FILE *fp;
154X509 *x509;
155 { 129 {
156 return((X509 *)ASN1_d2i_fp((char *(*)())X509_new, 130 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bp, x509);
157 (char *(*)())d2i_X509, (fp),(unsigned char **)(x509)));
158 } 131 }
159 132
160int i2d_X509_fp(fp,x509) 133int i2d_X509_bio(BIO *bp, X509 *x509)
161FILE *fp;
162X509 *x509;
163 { 134 {
164 return(ASN1_i2d_fp(i2d_X509,fp,(unsigned char *)x509)); 135 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509), bp, x509);
165 } 136 }
166#endif
167 137
168X509 *d2i_X509_bio(bp,x509) 138#ifndef OPENSSL_NO_FP_API
169BIO *bp; 139X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl)
170X509 *x509;
171 { 140 {
172 return((X509 *)ASN1_d2i_bio((char *(*)())X509_new, 141 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl);
173 (char *(*)())d2i_X509, (bp),(unsigned char **)(x509)));
174 } 142 }
175 143
176int i2d_X509_bio(bp,x509) 144int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl)
177BIO *bp;
178X509 *x509;
179 { 145 {
180 return(ASN1_i2d_bio(i2d_X509,bp,(unsigned char *)x509)); 146 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl);
181 } 147 }
148#endif
182 149
183X509_CRL *X509_CRL_dup(crl) 150X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl)
184X509_CRL *crl;
185 { 151 {
186 return((X509_CRL *)ASN1_dup((int (*)())i2d_X509_CRL, 152 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl);
187 (char *(*)())d2i_X509_CRL,(char *)crl));
188 } 153 }
189 154
190#ifndef NO_FP_API 155int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl)
191X509_CRL *d2i_X509_CRL_fp(fp,crl)
192FILE *fp;
193X509_CRL *crl;
194 { 156 {
195 return((X509_CRL *)ASN1_d2i_fp((char *(*)()) 157 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl);
196 X509_CRL_new,(char *(*)())d2i_X509_CRL, (fp),
197 (unsigned char **)(crl)));
198 } 158 }
199 159
200int i2d_X509_CRL_fp(fp,crl) 160#ifndef OPENSSL_NO_FP_API
201FILE *fp; 161PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7)
202X509_CRL *crl;
203 { 162 {
204 return(ASN1_i2d_fp(i2d_X509_CRL,fp,(unsigned char *)crl)); 163 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(PKCS7), fp, p7);
205 } 164 }
206#endif
207 165
208X509_CRL *d2i_X509_CRL_bio(bp,crl) 166int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7)
209BIO *bp;
210X509_CRL *crl;
211 { 167 {
212 return((X509_CRL *)ASN1_d2i_bio((char *(*)()) 168 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(PKCS7), fp, p7);
213 X509_CRL_new,(char *(*)())d2i_X509_CRL, (bp),
214 (unsigned char **)(crl)));
215 } 169 }
170#endif
216 171
217int i2d_X509_CRL_bio(bp,crl) 172PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7)
218BIO *bp;
219X509_CRL *crl;
220 { 173 {
221 return(ASN1_i2d_bio(i2d_X509_CRL,bp,(unsigned char *)crl)); 174 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(PKCS7), bp, p7);
222 } 175 }
223 176
224PKCS7 *PKCS7_dup(p7) 177int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7)
225PKCS7 *p7;
226 { 178 {
227 return((PKCS7 *)ASN1_dup((int (*)())i2d_PKCS7, 179 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(PKCS7), bp, p7);
228 (char *(*)())d2i_PKCS7,(char *)p7));
229 } 180 }
230 181
231#ifndef NO_FP_API 182#ifndef OPENSSL_NO_FP_API
232PKCS7 *d2i_PKCS7_fp(fp,p7) 183X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req)
233FILE *fp;
234PKCS7 *p7;
235 { 184 {
236 return((PKCS7 *)ASN1_d2i_fp((char *(*)()) 185 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(X509_REQ), fp, req);
237 PKCS7_new,(char *(*)())d2i_PKCS7, (fp),
238 (unsigned char **)(p7)));
239 } 186 }
240 187
241int i2d_PKCS7_fp(fp,p7) 188int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req)
242FILE *fp;
243PKCS7 *p7;
244 { 189 {
245 return(ASN1_i2d_fp(i2d_PKCS7,fp,(unsigned char *)p7)); 190 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_REQ), fp, req);
246 } 191 }
247#endif 192#endif
248 193
249PKCS7 *d2i_PKCS7_bio(bp,p7) 194X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req)
250BIO *bp;
251PKCS7 *p7;
252 { 195 {
253 return((PKCS7 *)ASN1_d2i_bio((char *(*)()) 196 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_REQ), bp, req);
254 PKCS7_new,(char *(*)())d2i_PKCS7, (bp),
255 (unsigned char **)(p7)));
256 } 197 }
257 198
258int i2d_PKCS7_bio(bp,p7) 199int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req)
259BIO *bp;
260PKCS7 *p7;
261 { 200 {
262 return(ASN1_i2d_bio(i2d_PKCS7,bp,(unsigned char *)p7)); 201 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_REQ), bp, req);
263 } 202 }
264 203
265X509_REQ *X509_REQ_dup(req) 204#ifndef OPENSSL_NO_RSA
266X509_REQ *req; 205
206#ifndef OPENSSL_NO_FP_API
207RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa)
267 { 208 {
268 return((X509_REQ *)ASN1_dup((int (*)())i2d_X509_REQ, 209 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa);
269 (char *(*)())d2i_X509_REQ,(char *)req));
270 } 210 }
271 211
272#ifndef NO_FP_API 212int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa)
273X509_REQ *d2i_X509_REQ_fp(fp,req)
274FILE *fp;
275X509_REQ *req;
276 { 213 {
277 return((X509_REQ *)ASN1_d2i_fp((char *(*)()) 214 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPrivateKey), fp, rsa);
278 X509_REQ_new, (char *(*)())d2i_X509_REQ, (fp),
279 (unsigned char **)(req)));
280 } 215 }
281 216
282int i2d_X509_REQ_fp(fp,req) 217RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa)
283FILE *fp;
284X509_REQ *req;
285 { 218 {
286 return(ASN1_i2d_fp(i2d_X509_REQ,fp,(unsigned char *)req)); 219 return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa);
287 } 220 }
288#endif
289 221
290X509_REQ *d2i_X509_REQ_bio(bp,req) 222
291BIO *bp; 223RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa)
292X509_REQ *req;
293 { 224 {
294 return((X509_REQ *)ASN1_d2i_bio((char *(*)()) 225 return((RSA *)ASN1_d2i_fp((char *(*)())
295 X509_REQ_new, (char *(*)())d2i_X509_REQ, (bp), 226 RSA_new,(char *(*)())d2i_RSA_PUBKEY, (fp),
296 (unsigned char **)(req))); 227 (unsigned char **)(rsa)));
297 } 228 }
298 229
299int i2d_X509_REQ_bio(bp,req) 230int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa)
300BIO *bp;
301X509_REQ *req;
302 { 231 {
303 return(ASN1_i2d_bio(i2d_X509_REQ,bp,(unsigned char *)req)); 232 return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa);
304 } 233 }
305 234
306#ifndef NO_RSA 235int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa)
307RSA *RSAPublicKey_dup(rsa)
308RSA *rsa;
309 { 236 {
310 return((RSA *)ASN1_dup((int (*)())i2d_RSAPublicKey, 237 return(ASN1_i2d_fp(i2d_RSA_PUBKEY,fp,(unsigned char *)rsa));
311 (char *(*)())d2i_RSAPublicKey,(char *)rsa));
312 } 238 }
239#endif
313 240
314RSA *RSAPrivateKey_dup(rsa) 241RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa)
315RSA *rsa;
316 { 242 {
317 return((RSA *)ASN1_dup((int (*)())i2d_RSAPrivateKey, 243 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa);
318 (char *(*)())d2i_RSAPrivateKey,(char *)rsa));
319 } 244 }
320 245
321#ifndef NO_FP_API 246int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa)
322RSA *d2i_RSAPrivateKey_fp(fp,rsa)
323FILE *fp;
324RSA *rsa;
325 { 247 {
326 return((RSA *)ASN1_d2i_fp((char *(*)()) 248 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa);
327 RSA_new,(char *(*)())d2i_RSAPrivateKey, (fp),
328 (unsigned char **)(rsa)));
329 } 249 }
330 250
331int i2d_RSAPrivateKey_fp(fp,rsa) 251RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa)
332FILE *fp;
333RSA *rsa;
334 { 252 {
335 return(ASN1_i2d_fp(i2d_RSAPrivateKey,fp,(unsigned char *)rsa)); 253 return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa);
336 } 254 }
337 255
338RSA *d2i_RSAPublicKey_fp(fp,rsa) 256
339FILE *fp; 257RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa)
340RSA *rsa;
341 { 258 {
342 return((RSA *)ASN1_d2i_fp((char *(*)()) 259 return((RSA *)ASN1_d2i_bio((char *(*)())
343 RSA_new,(char *(*)())d2i_RSAPublicKey, (fp), 260 RSA_new,(char *(*)())d2i_RSA_PUBKEY, (bp),
344 (unsigned char **)(rsa))); 261 (unsigned char **)(rsa)));
345 } 262 }
346 263
347int i2d_RSAPublicKey_fp(fp,rsa) 264int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa)
348FILE *fp; 265 {
349RSA *rsa; 266 return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa);
267 }
268
269int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa)
350 { 270 {
351 return(ASN1_i2d_fp(i2d_RSAPublicKey,fp,(unsigned char *)rsa)); 271 return(ASN1_i2d_bio(i2d_RSA_PUBKEY,bp,(unsigned char *)rsa));
352 } 272 }
353#endif 273#endif
354 274
355RSA *d2i_RSAPrivateKey_bio(bp,rsa) 275#ifndef OPENSSL_NO_DSA
356BIO *bp; 276#ifndef OPENSSL_NO_FP_API
357RSA *rsa; 277DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa)
358 { 278 {
359 return((RSA *)ASN1_d2i_bio((char *(*)()) 279 return((DSA *)ASN1_d2i_fp((char *(*)())
360 RSA_new,(char *(*)())d2i_RSAPrivateKey, (bp), 280 DSA_new,(char *(*)())d2i_DSAPrivateKey, (fp),
361 (unsigned char **)(rsa))); 281 (unsigned char **)(dsa)));
362 } 282 }
363 283
364int i2d_RSAPrivateKey_bio(bp,rsa) 284int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa)
365BIO *bp;
366RSA *rsa;
367 { 285 {
368 return(ASN1_i2d_bio(i2d_RSAPrivateKey,bp,(unsigned char *)rsa)); 286 return(ASN1_i2d_fp(i2d_DSAPrivateKey,fp,(unsigned char *)dsa));
369 } 287 }
370 288
371RSA *d2i_RSAPublicKey_bio(bp,rsa) 289DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa)
372BIO *bp;
373RSA *rsa;
374 { 290 {
375 return((RSA *)ASN1_d2i_bio((char *(*)()) 291 return((DSA *)ASN1_d2i_fp((char *(*)())
376 RSA_new,(char *(*)())d2i_RSAPublicKey, (bp), 292 DSA_new,(char *(*)())d2i_DSA_PUBKEY, (fp),
377 (unsigned char **)(rsa))); 293 (unsigned char **)(dsa)));
378 } 294 }
379 295
380int i2d_RSAPublicKey_bio(bp,rsa) 296int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa)
381BIO *bp;
382RSA *rsa;
383 { 297 {
384 return(ASN1_i2d_bio(i2d_RSAPublicKey,bp,(unsigned char *)rsa)); 298 return(ASN1_i2d_fp(i2d_DSA_PUBKEY,fp,(unsigned char *)dsa));
385 } 299 }
386#endif 300#endif
387 301
388#ifndef NO_DSA 302DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa)
389#ifndef NO_FP_API
390DSA *d2i_DSAPrivateKey_fp(fp,dsa)
391FILE *fp;
392DSA *dsa;
393 { 303 {
394 return((DSA *)ASN1_d2i_fp((char *(*)()) 304 return((DSA *)ASN1_d2i_bio((char *(*)())
395 DSA_new,(char *(*)())d2i_DSAPrivateKey, (fp), 305 DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp),
396 (unsigned char **)(dsa))); 306 (unsigned char **)(dsa)));
397 } 307 }
398 308
399int i2d_DSAPrivateKey_fp(fp,dsa) 309int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa)
400FILE *fp;
401DSA *dsa;
402 { 310 {
403 return(ASN1_i2d_fp(i2d_DSAPrivateKey,fp,(unsigned char *)dsa)); 311 return(ASN1_i2d_bio(i2d_DSAPrivateKey,bp,(unsigned char *)dsa));
404 } 312 }
405#endif
406 313
407DSA *d2i_DSAPrivateKey_bio(bp,dsa) 314DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa)
408BIO *bp;
409DSA *dsa;
410 { 315 {
411 return((DSA *)ASN1_d2i_bio((char *(*)()) 316 return((DSA *)ASN1_d2i_bio((char *(*)())
412 DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp), 317 DSA_new,(char *(*)())d2i_DSA_PUBKEY, (bp),
413 (unsigned char **)(dsa))); 318 (unsigned char **)(dsa)));
414 } 319 }
415 320
416int i2d_DSAPrivateKey_bio(bp,dsa) 321int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa)
417BIO *bp;
418DSA *dsa;
419 { 322 {
420 return(ASN1_i2d_bio(i2d_DSAPrivateKey,bp,(unsigned char *)dsa)); 323 return(ASN1_i2d_bio(i2d_DSA_PUBKEY,bp,(unsigned char *)dsa));
421 } 324 }
325
422#endif 326#endif
423 327
424X509_NAME *X509_NAME_dup(xn) 328int X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned char *md,
425X509_NAME *xn; 329 unsigned int *len)
330 {
331 ASN1_BIT_STRING *key;
332 key = X509_get0_pubkey_bitstr(data);
333 if(!key) return 0;
334 return EVP_Digest(key->data, key->length, md, len, type, NULL);
335 }
336
337int X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md,
338 unsigned int *len)
426 { 339 {
427 return((X509_NAME *)ASN1_dup((int (*)())i2d_X509_NAME, 340 return(ASN1_item_digest(ASN1_ITEM_rptr(X509),type,(char *)data,md,len));
428 (char *(*)())d2i_X509_NAME,(char *)xn));
429 } 341 }
430 342
431X509_NAME_ENTRY *X509_NAME_ENTRY_dup(ne) 343int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md,
432X509_NAME_ENTRY *ne; 344 unsigned int *len)
433 { 345 {
434 return((X509_NAME_ENTRY *)ASN1_dup((int (*)())i2d_X509_NAME_ENTRY, 346 return(ASN1_item_digest(ASN1_ITEM_rptr(X509_CRL),type,(char *)data,md,len));
435 (char *(*)())d2i_X509_NAME_ENTRY,(char *)ne));
436 } 347 }
437 348
438int X509_digest(data,type,md,len) 349int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, unsigned char *md,
439X509 *data; 350 unsigned int *len)
440EVP_MD *type;
441unsigned char *md;
442unsigned int *len;
443 { 351 {
444 return(ASN1_digest((int (*)())i2d_X509,type,(char *)data,md,len)); 352 return(ASN1_item_digest(ASN1_ITEM_rptr(X509_REQ),type,(char *)data,md,len));
445 } 353 }
446 354
447int X509_NAME_digest(data,type,md,len) 355int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md,
448X509_NAME *data; 356 unsigned int *len)
449EVP_MD *type;
450unsigned char *md;
451unsigned int *len;
452 { 357 {
453 return(ASN1_digest((int (*)())i2d_X509_NAME,type,(char *)data,md,len)); 358 return(ASN1_item_digest(ASN1_ITEM_rptr(X509_NAME),type,(char *)data,md,len));
454 } 359 }
455 360
456int PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) 361int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, const EVP_MD *type,
457PKCS7_ISSUER_AND_SERIAL *data; 362 unsigned char *md, unsigned int *len)
458EVP_MD *type;
459unsigned char *md;
460unsigned int *len;
461 { 363 {
462 return(ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type, 364 return(ASN1_item_digest(ASN1_ITEM_rptr(PKCS7_ISSUER_AND_SERIAL),type,
463 (char *)data,md,len)); 365 (char *)data,md,len));
464 } 366 }
465 367
368
369#ifndef OPENSSL_NO_FP_API
370X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8)
371 {
372 return((X509_SIG *)ASN1_d2i_fp((char *(*)())X509_SIG_new,
373 (char *(*)())d2i_X509_SIG, (fp),(unsigned char **)(p8)));
374 }
375
376int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8)
377 {
378 return(ASN1_i2d_fp(i2d_X509_SIG,fp,(unsigned char *)p8));
379 }
380#endif
381
382X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8)
383 {
384 return((X509_SIG *)ASN1_d2i_bio((char *(*)())X509_SIG_new,
385 (char *(*)())d2i_X509_SIG, (bp),(unsigned char **)(p8)));
386 }
387
388int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8)
389 {
390 return(ASN1_i2d_bio(i2d_X509_SIG,bp,(unsigned char *)p8));
391 }
392
393#ifndef OPENSSL_NO_FP_API
394PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp,
395 PKCS8_PRIV_KEY_INFO **p8inf)
396 {
397 return((PKCS8_PRIV_KEY_INFO *)ASN1_d2i_fp(
398 (char *(*)())PKCS8_PRIV_KEY_INFO_new,
399 (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (fp),
400 (unsigned char **)(p8inf)));
401 }
402
403int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf)
404 {
405 return(ASN1_i2d_fp(i2d_PKCS8_PRIV_KEY_INFO,fp,(unsigned char *)p8inf));
406 }
407
408int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key)
409 {
410 PKCS8_PRIV_KEY_INFO *p8inf;
411 int ret;
412 p8inf = EVP_PKEY2PKCS8(key);
413 if(!p8inf) return 0;
414 ret = i2d_PKCS8_PRIV_KEY_INFO_fp(fp, p8inf);
415 PKCS8_PRIV_KEY_INFO_free(p8inf);
416 return ret;
417 }
418
419int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey)
420 {
421 return(ASN1_i2d_fp(i2d_PrivateKey,fp,(unsigned char *)pkey));
422 }
423
424EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a)
425{
426 return((EVP_PKEY *)ASN1_d2i_fp((char *(*)())EVP_PKEY_new,
427 (char *(*)())d2i_AutoPrivateKey, (fp),(unsigned char **)(a)));
428}
429
430int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey)
431 {
432 return(ASN1_i2d_fp(i2d_PUBKEY,fp,(unsigned char *)pkey));
433 }
434
435EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a)
436{
437 return((EVP_PKEY *)ASN1_d2i_fp((char *(*)())EVP_PKEY_new,
438 (char *(*)())d2i_PUBKEY, (fp),(unsigned char **)(a)));
439}
440
441#endif
442
443PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp,
444 PKCS8_PRIV_KEY_INFO **p8inf)
445 {
446 return((PKCS8_PRIV_KEY_INFO *)ASN1_d2i_bio(
447 (char *(*)())PKCS8_PRIV_KEY_INFO_new,
448 (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (bp),
449 (unsigned char **)(p8inf)));
450 }
451
452int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf)
453 {
454 return(ASN1_i2d_bio(i2d_PKCS8_PRIV_KEY_INFO,bp,(unsigned char *)p8inf));
455 }
456
457int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key)
458 {
459 PKCS8_PRIV_KEY_INFO *p8inf;
460 int ret;
461 p8inf = EVP_PKEY2PKCS8(key);
462 if(!p8inf) return 0;
463 ret = i2d_PKCS8_PRIV_KEY_INFO_bio(bp, p8inf);
464 PKCS8_PRIV_KEY_INFO_free(p8inf);
465 return ret;
466 }
467
468int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey)
469 {
470 return(ASN1_i2d_bio(i2d_PrivateKey,bp,(unsigned char *)pkey));
471 }
472
473EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a)
474 {
475 return((EVP_PKEY *)ASN1_d2i_bio((char *(*)())EVP_PKEY_new,
476 (char *(*)())d2i_AutoPrivateKey, (bp),(unsigned char **)(a)));
477 }
478
479int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey)
480 {
481 return(ASN1_i2d_bio(i2d_PUBKEY,bp,(unsigned char *)pkey));
482 }
483
484EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a)
485 {
486 return((EVP_PKEY *)ASN1_d2i_bio((char *(*)())EVP_PKEY_new,
487 (char *(*)())d2i_PUBKEY, (bp),(unsigned char **)(a)));
488 }