X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=ssl%2Fssl_cert.c;h=88cc5fc21a33ab51ba847e6d075de2ea1ca095c3;hp=909af7c9848c58d785c35cb6b49dd708797180c1;hb=1e103eafb380a6be490955d15e2df577989cef5b;hpb=eb90a483ad85e9dc430610a78362837ad344cac1 diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c index 909af7c984..88cc5fc21a 100644 --- a/ssl/ssl_cert.c +++ b/ssl/ssl_cert.c @@ -58,13 +58,15 @@ #include #include +#ifndef WIN32 #include -#include "objects.h" -#include "bio.h" -#include "pem.h" +#endif +#include +#include +#include #include "ssl_locl.h" -int SSL_get_ex_data_X509_STORE_CTX_idx() +int SSL_get_ex_data_X509_STORE_CTX_idx(void) { static int ssl_x509_store_ctx_idx= -1; @@ -76,7 +78,7 @@ int SSL_get_ex_data_X509_STORE_CTX_idx() return(ssl_x509_store_ctx_idx); } -CERT *ssl_cert_new() +CERT *ssl_cert_new(void) { CERT *ret; @@ -141,7 +143,7 @@ void ssl_cert_free(CERT *c) #endif } if (c->cert_chain != NULL) - sk_pop_free(c->cert_chain,X509_free); + sk_X509_pop_free(c->cert_chain,X509_free); Free(c); } @@ -172,16 +174,16 @@ int ssl_set_cert_type(CERT *c,int type) return(1); } -int ssl_verify_cert_chain(SSL *s,STACK *sk) +int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk) { X509 *x; int i; X509_STORE_CTX ctx; - if ((sk == NULL) || (sk_num(sk) == 0)) + if ((sk == NULL) || (sk_X509_num(sk) == 0)) return(0); - x=(X509 *)sk_value(sk,0); + x=sk_X509_value(sk,0); X509_STORE_CTX_init(&ctx,s->ctx->cert_store,x,sk); X509_STORE_CTX_set_ex_data(&ctx,SSL_get_ex_data_X509_STORE_CTX_idx(), (char *)s); @@ -205,10 +207,10 @@ int ssl_verify_cert_chain(SSL *s,STACK *sk) return(i); } -static void set_client_CA_list(STACK **ca_list,STACK *list) +static void set_client_CA_list(STACK_OF(X509_NAME) **ca_list,STACK_OF(X509_NAME) *list) { if (*ca_list != NULL) - sk_pop_free(*ca_list,X509_NAME_free); + sk_X509_NAME_pop_free(*ca_list,X509_NAME_free); *ca_list=list; } @@ -232,22 +234,22 @@ STACK *SSL_dup_CA_list(STACK *sk) return(ret); } -void SSL_set_client_CA_list(SSL *s,STACK *list) +void SSL_set_client_CA_list(SSL *s,STACK_OF(X509_NAME) *list) { set_client_CA_list(&(s->client_CA),list); } -void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK *list) +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK_OF(X509_NAME) *list) { set_client_CA_list(&(ctx->client_CA),list); } -STACK *SSL_CTX_get_client_CA_list(SSL_CTX *ctx) +STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(SSL_CTX *ctx) { return(ctx->client_CA); } -STACK *SSL_get_client_CA_list(SSL *s) +STACK_OF(X509_NAME) *SSL_get_client_CA_list(SSL *s) { if (s->type == SSL_ST_CONNECT) { /* we are in the client */ @@ -266,18 +268,18 @@ STACK *SSL_get_client_CA_list(SSL *s) } } -static int add_client_CA(STACK **sk,X509 *x) +static int add_client_CA(STACK_OF(X509_NAME) **sk,X509 *x) { X509_NAME *name; if (x == NULL) return(0); - if ((*sk == NULL) && ((*sk=sk_new_null()) == NULL)) + if ((*sk == NULL) && ((*sk=sk_X509_NAME_new_null()) == NULL)) return(0); if ((name=X509_NAME_dup(X509_get_subject_name(x))) == NULL) return(0); - if (!sk_push(*sk,(char *)name)) + if (!sk_X509_NAME_push(*sk,name)) { X509_NAME_free(name); return(0); @@ -309,15 +311,15 @@ static int name_cmp(X509_NAME **a,X509_NAME **b) * \param file the file containing one or more certs. * \return a ::STACK containing the certs. */ -STACK *SSL_load_client_CA_file(char *file) +STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file) { BIO *in; X509 *x=NULL; X509_NAME *xn=NULL; - STACK *ret,*sk; + STACK_OF(X509_NAME) *ret,*sk; - ret=sk_new(NULL); - sk=sk_new(name_cmp); + ret=sk_X509_NAME_new(NULL); + sk=sk_X509_NAME_new(name_cmp); in=BIO_new(BIO_s_file_internal()); @@ -338,22 +340,22 @@ STACK *SSL_load_client_CA_file(char *file) /* check for duplicates */ xn=X509_NAME_dup(xn); if (xn == NULL) goto err; - if (sk_find(sk,(char *)xn) >= 0) + if (sk_X509_NAME_find(sk,xn) >= 0) X509_NAME_free(xn); else { - sk_push(sk,(char *)xn); - sk_push(ret,(char *)xn); + sk_X509_NAME_push(sk,xn); + sk_X509_NAME_push(ret,xn); } } if (0) { err: - if (ret != NULL) sk_pop_free(ret,X509_NAME_free); + if (ret != NULL) sk_X509_NAME_pop_free(ret,X509_NAME_free); ret=NULL; } - if (sk != NULL) sk_free(sk); + if (sk != NULL) sk_X509_NAME_free(sk); if (in != NULL) BIO_free(in); if (x != NULL) X509_free(x); return(ret); @@ -369,7 +371,7 @@ err: * certs may have been added to \c stack. */ -int SSL_add_cert_file_to_stack(STACK *stack,const char *file) +int SSL_add_file_cert_subjects_to_stack(STACK *stack,const char *file) { BIO *in; X509 *x=NULL; @@ -381,9 +383,9 @@ int SSL_add_cert_file_to_stack(STACK *stack,const char *file) in=BIO_new(BIO_s_file_internal()); - if (ret == NULL || in == NULL) + if (in == NULL) { - SSLerr(SSL_F_SSL_ADD_CERT_FILE_TO_STACK,ERR_R_MALLOC_FAILURE); + SSLerr(SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK,ERR_R_MALLOC_FAILURE); goto err; } @@ -423,13 +425,15 @@ err: * \param stack the stack to append to. * \param dir the directory to append from. All files in this directory will be * examined as potential certs. Any that are acceptable to - * SSL_add_cert_file_to_stack() that are not already in the stack will be + * SSL_add_dir_cert_subjects_to_stack() that are not already in the stack will be * included. * \return 1 for success, 0 for failure. Note that in the case of failure some * certs may have been added to \c stack. */ -int SSL_add_cert_dir_to_stack(STACK *stack,const char *dir) +#ifndef WIN32 + +int SSL_add_dir_cert_subjects_to_stack(STACK *stack,const char *dir) { DIR *d=opendir(dir); struct dirent *dstruct; @@ -437,7 +441,7 @@ int SSL_add_cert_dir_to_stack(STACK *stack,const char *dir) /* Note that a side effect is that the CAs will be sorted by name */ if(!d) { - SSLerr(SSL_F_SSL_ADD_CERT_DIR_TO_STACK,ERR_R_MALLOC_FAILURE); + SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,ERR_R_MALLOC_FAILURE); return 0; } @@ -447,14 +451,16 @@ int SSL_add_cert_dir_to_stack(STACK *stack,const char *dir) if(strlen(dir)+strlen(dstruct->d_name)+2 > sizeof buf) { - SSLerr(SSL_F_SSL_ADD_CERT_DIR_TO_STACK,SSL_R_PATH_TOO_LONG); + SSLerr(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK,SSL_R_PATH_TOO_LONG); return 0; } sprintf(buf,"%s/%s",dir,dstruct->d_name); - if(!SSL_add_cert_file_to_stack(stack,buf)) + if(!SSL_add_file_cert_subjects_to_stack(stack,buf)) return 0; } return 1; } + +#endif