diff options
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_utl.c')
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_utl.c | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_utl.c b/src/lib/libcrypto/x509v3/v3_utl.c index e030234540..2cb53008e3 100644 --- a/src/lib/libcrypto/x509v3/v3_utl.c +++ b/src/lib/libcrypto/x509v3/v3_utl.c | |||
@@ -67,9 +67,9 @@ | |||
67 | 67 | ||
68 | static char *strip_spaces(char *name); | 68 | static char *strip_spaces(char *name); |
69 | static int sk_strcmp(const char * const *a, const char * const *b); | 69 | static int sk_strcmp(const char * const *a, const char * const *b); |
70 | static STACK_OF(OPENSSL_STRING) *get_email(X509_NAME *name, GENERAL_NAMES *gens); | 70 | static STACK *get_email(X509_NAME *name, GENERAL_NAMES *gens); |
71 | static void str_free(OPENSSL_STRING str); | 71 | static void str_free(void *str); |
72 | static int append_ia5(STACK_OF(OPENSSL_STRING) **sk, ASN1_IA5STRING *email); | 72 | static int append_ia5(STACK **sk, ASN1_IA5STRING *email); |
73 | 73 | ||
74 | static int ipv4_from_asc(unsigned char *v4, const char *in); | 74 | static int ipv4_from_asc(unsigned char *v4, const char *in); |
75 | static int ipv6_from_asc(unsigned char *v6, const char *in); | 75 | static int ipv6_from_asc(unsigned char *v6, const char *in); |
@@ -344,7 +344,7 @@ static char *strip_spaces(char *name) | |||
344 | char *p, *q; | 344 | char *p, *q; |
345 | /* Skip over leading spaces */ | 345 | /* Skip over leading spaces */ |
346 | p = name; | 346 | p = name; |
347 | while(*p && isspace((unsigned char)*p)) p++; | 347 | while(isspace((unsigned char)*p)) p++; |
348 | if(!*p) return NULL; | 348 | if(!*p) return NULL; |
349 | q = p + strlen(p) - 1; | 349 | q = p + strlen(p) - 1; |
350 | while((q != p) && isspace((unsigned char)*q)) q--; | 350 | while((q != p) && isspace((unsigned char)*q)) q--; |
@@ -360,10 +360,10 @@ static char *strip_spaces(char *name) | |||
360 | * @@@ (Contents of buffer are always kept in ASCII, also on EBCDIC machines) | 360 | * @@@ (Contents of buffer are always kept in ASCII, also on EBCDIC machines) |
361 | */ | 361 | */ |
362 | 362 | ||
363 | char *hex_to_string(const unsigned char *buffer, long len) | 363 | char *hex_to_string(unsigned char *buffer, long len) |
364 | { | 364 | { |
365 | char *tmp, *q; | 365 | char *tmp, *q; |
366 | const unsigned char *p; | 366 | unsigned char *p; |
367 | int i; | 367 | int i; |
368 | const static char hexdig[] = "0123456789ABCDEF"; | 368 | const static char hexdig[] = "0123456789ABCDEF"; |
369 | if(!buffer || !len) return NULL; | 369 | if(!buffer || !len) return NULL; |
@@ -389,7 +389,7 @@ char *hex_to_string(const unsigned char *buffer, long len) | |||
389 | * a buffer | 389 | * a buffer |
390 | */ | 390 | */ |
391 | 391 | ||
392 | unsigned char *string_to_hex(const char *str, long *len) | 392 | unsigned char *string_to_hex(char *str, long *len) |
393 | { | 393 | { |
394 | unsigned char *hexbuf, *q; | 394 | unsigned char *hexbuf, *q; |
395 | unsigned char ch, cl, *p; | 395 | unsigned char ch, cl, *p; |
@@ -463,23 +463,21 @@ static int sk_strcmp(const char * const *a, const char * const *b) | |||
463 | return strcmp(*a, *b); | 463 | return strcmp(*a, *b); |
464 | } | 464 | } |
465 | 465 | ||
466 | STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x) | 466 | STACK *X509_get1_email(X509 *x) |
467 | { | 467 | { |
468 | GENERAL_NAMES *gens; | 468 | GENERAL_NAMES *gens; |
469 | STACK_OF(OPENSSL_STRING) *ret; | 469 | STACK *ret; |
470 | |||
471 | gens = X509_get_ext_d2i(x, NID_subject_alt_name, NULL, NULL); | 470 | gens = X509_get_ext_d2i(x, NID_subject_alt_name, NULL, NULL); |
472 | ret = get_email(X509_get_subject_name(x), gens); | 471 | ret = get_email(X509_get_subject_name(x), gens); |
473 | sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free); | 472 | sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free); |
474 | return ret; | 473 | return ret; |
475 | } | 474 | } |
476 | 475 | ||
477 | STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x) | 476 | STACK *X509_get1_ocsp(X509 *x) |
478 | { | 477 | { |
479 | AUTHORITY_INFO_ACCESS *info; | 478 | AUTHORITY_INFO_ACCESS *info; |
480 | STACK_OF(OPENSSL_STRING) *ret = NULL; | 479 | STACK *ret = NULL; |
481 | int i; | 480 | int i; |
482 | |||
483 | info = X509_get_ext_d2i(x, NID_info_access, NULL, NULL); | 481 | info = X509_get_ext_d2i(x, NID_info_access, NULL, NULL); |
484 | if (!info) | 482 | if (!info) |
485 | return NULL; | 483 | return NULL; |
@@ -499,12 +497,11 @@ STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x) | |||
499 | return ret; | 497 | return ret; |
500 | } | 498 | } |
501 | 499 | ||
502 | STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x) | 500 | STACK *X509_REQ_get1_email(X509_REQ *x) |
503 | { | 501 | { |
504 | GENERAL_NAMES *gens; | 502 | GENERAL_NAMES *gens; |
505 | STACK_OF(X509_EXTENSION) *exts; | 503 | STACK_OF(X509_EXTENSION) *exts; |
506 | STACK_OF(OPENSSL_STRING) *ret; | 504 | STACK *ret; |
507 | |||
508 | exts = X509_REQ_get_extensions(x); | 505 | exts = X509_REQ_get_extensions(x); |
509 | gens = X509V3_get_d2i(exts, NID_subject_alt_name, NULL, NULL); | 506 | gens = X509V3_get_d2i(exts, NID_subject_alt_name, NULL, NULL); |
510 | ret = get_email(X509_REQ_get_subject_name(x), gens); | 507 | ret = get_email(X509_REQ_get_subject_name(x), gens); |
@@ -514,9 +511,9 @@ STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x) | |||
514 | } | 511 | } |
515 | 512 | ||
516 | 513 | ||
517 | static STACK_OF(OPENSSL_STRING) *get_email(X509_NAME *name, GENERAL_NAMES *gens) | 514 | static STACK *get_email(X509_NAME *name, GENERAL_NAMES *gens) |
518 | { | 515 | { |
519 | STACK_OF(OPENSSL_STRING) *ret = NULL; | 516 | STACK *ret = NULL; |
520 | X509_NAME_ENTRY *ne; | 517 | X509_NAME_ENTRY *ne; |
521 | ASN1_IA5STRING *email; | 518 | ASN1_IA5STRING *email; |
522 | GENERAL_NAME *gen; | 519 | GENERAL_NAME *gen; |
@@ -539,23 +536,23 @@ static STACK_OF(OPENSSL_STRING) *get_email(X509_NAME *name, GENERAL_NAMES *gens) | |||
539 | return ret; | 536 | return ret; |
540 | } | 537 | } |
541 | 538 | ||
542 | static void str_free(OPENSSL_STRING str) | 539 | static void str_free(void *str) |
543 | { | 540 | { |
544 | OPENSSL_free(str); | 541 | OPENSSL_free(str); |
545 | } | 542 | } |
546 | 543 | ||
547 | static int append_ia5(STACK_OF(OPENSSL_STRING) **sk, ASN1_IA5STRING *email) | 544 | static int append_ia5(STACK **sk, ASN1_IA5STRING *email) |
548 | { | 545 | { |
549 | char *emtmp; | 546 | char *emtmp; |
550 | /* First some sanity checks */ | 547 | /* First some sanity checks */ |
551 | if(email->type != V_ASN1_IA5STRING) return 1; | 548 | if(email->type != V_ASN1_IA5STRING) return 1; |
552 | if(!email->data || !email->length) return 1; | 549 | if(!email->data || !email->length) return 1; |
553 | if(!*sk) *sk = sk_OPENSSL_STRING_new(sk_strcmp); | 550 | if(!*sk) *sk = sk_new(sk_strcmp); |
554 | if(!*sk) return 0; | 551 | if(!*sk) return 0; |
555 | /* Don't add duplicates */ | 552 | /* Don't add duplicates */ |
556 | if(sk_OPENSSL_STRING_find(*sk, (char *)email->data) != -1) return 1; | 553 | if(sk_find(*sk, (char *)email->data) != -1) return 1; |
557 | emtmp = BUF_strdup((char *)email->data); | 554 | emtmp = BUF_strdup((char *)email->data); |
558 | if(!emtmp || !sk_OPENSSL_STRING_push(*sk, emtmp)) { | 555 | if(!emtmp || !sk_push(*sk, emtmp)) { |
559 | X509_email_free(*sk); | 556 | X509_email_free(*sk); |
560 | *sk = NULL; | 557 | *sk = NULL; |
561 | return 0; | 558 | return 0; |
@@ -563,9 +560,9 @@ static int append_ia5(STACK_OF(OPENSSL_STRING) **sk, ASN1_IA5STRING *email) | |||
563 | return 1; | 560 | return 1; |
564 | } | 561 | } |
565 | 562 | ||
566 | void X509_email_free(STACK_OF(OPENSSL_STRING) *sk) | 563 | void X509_email_free(STACK *sk) |
567 | { | 564 | { |
568 | sk_OPENSSL_STRING_pop_free(sk, str_free); | 565 | sk_pop_free(sk, str_free); |
569 | } | 566 | } |
570 | 567 | ||
571 | /* Convert IP addresses both IPv4 and IPv6 into an | 568 | /* Convert IP addresses both IPv4 and IPv6 into an |