X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=apps%2Fapps.c;h=c2633b21e2247959c06797cbadc043a3a1786654;hb=cad4b840c83d866362b2000f62f160994cc682e5;hp=a04f871d0aa0fb09b28e97c60170b49bd011ba5c;hpb=32d862ede4540acfdc8fe7f56bf583f7a2be3dbb;p=oweals%2Fopenssl.git diff --git a/apps/apps.c b/apps/apps.c index a04f871d0a..c2633b21e2 100644 --- a/apps/apps.c +++ b/apps/apps.c @@ -70,7 +70,13 @@ #include #include -#ifdef WINDOWS +#ifdef OPENSSL_SYS_WINDOWS +#define strcasecmp _stricmp +#else +#include +#endif + +#ifdef OPENSSL_SYS_WINDOWS # include "bss_file.c" #endif @@ -184,7 +190,7 @@ int str2fmt(char *s) return(FORMAT_UNDEF); } -#if defined(MSDOS) || defined(WIN32) || defined(WIN16) +#if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) void program_name(char *in, char *out, int size) { int i,n; @@ -222,7 +228,7 @@ void program_name(char *in, char *out, int size) out[n]='\0'; } #else -#ifdef VMS +#ifdef OPENSSL_SYS_VMS void program_name(char *in, char *out, int size) { char *p=in, *q; @@ -258,10 +264,10 @@ void program_name(char *in, char *out, int size) #endif #endif -#ifdef WIN32 +#ifdef OPENSSL_SYS_WIN32 int WIN32_rename(char *from, char *to) { -#ifdef WINNT +#ifdef OPENSSL_SYS_WINNT int ret; /* Note: MoveFileEx() doesn't work under Win95, Win98 */ @@ -442,7 +448,11 @@ int add_oid_section(BIO *err, LHASH *conf) STACK_OF(CONF_VALUE) *sktmp; CONF_VALUE *cnf; int i; - if(!(p=CONF_get_string(conf,NULL,"oid_section"))) return 1; + if(!(p=CONF_get_string(conf,NULL,"oid_section"))) + { + ERR_clear_error(); + return 1; + } if(!(sktmp = CONF_get_section(conf, p))) { BIO_printf(err, "problem loading oid section %s\n", p); return 0; @@ -472,7 +482,10 @@ X509 *load_cert(BIO *err, char *file, int format) } if (file == NULL) + { + setvbuf(stdin, NULL, _IONBF, 0); BIO_set_fp(cert,stdin,BIO_NOCLOSE); + } else { if (BIO_read_filename(cert,file) <= 0) @@ -802,7 +815,7 @@ static int set_table_opts(unsigned long *flags, const char *arg, const NAME_EX_T } else c = 1; for(ptbl = in_tbl; ptbl->name; ptbl++) { - if(!strcmp(arg, ptbl->name)) { + if(!strcasecmp(arg, ptbl->name)) { *flags &= ~ptbl->mask; if(c) *flags |= ptbl->flag; else *flags &= ~ptbl->flag; @@ -833,3 +846,32 @@ void print_name(BIO *out, char *title, X509_NAME *nm, unsigned long lflags) } } +X509_STORE *setup_verify(BIO *bp, char *CAfile, char *CApath) +{ + X509_STORE *store; + X509_LOOKUP *lookup; + if(!(store = X509_STORE_new())) goto end; + lookup=X509_STORE_add_lookup(store,X509_LOOKUP_file()); + if (lookup == NULL) goto end; + if (CAfile) { + if(!X509_LOOKUP_load_file(lookup,CAfile,X509_FILETYPE_PEM)) { + BIO_printf(bp, "Error loading file %s\n", CAfile); + goto end; + } + } else X509_LOOKUP_load_file(lookup,NULL,X509_FILETYPE_DEFAULT); + + lookup=X509_STORE_add_lookup(store,X509_LOOKUP_hash_dir()); + if (lookup == NULL) goto end; + if (CApath) { + if(!X509_LOOKUP_add_dir(lookup,CApath,X509_FILETYPE_PEM)) { + BIO_printf(bp, "Error loading directory %s\n", CApath); + goto end; + } + } else X509_LOOKUP_add_dir(lookup,NULL,X509_FILETYPE_DEFAULT); + + ERR_clear_error(); + return store; + end: + X509_STORE_free(store); + return NULL; +}