1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-03-21 21:39:58 +01:00

* gpgkeys_ldap.c (main): Add "check-cert" option to disable SSL

certificate checking (which is on by default).

* gpgkeys_curl.c (main): Add "debug" option to match the LDAP helper.
Add "check-cert" option to disable SSL certificate checking (which is
on by default).
This commit is contained in:
David Shaw 2005-01-22 03:27:19 +00:00
parent 6a0fda89c0
commit 2b10681641
3 changed files with 69 additions and 14 deletions

View File

@ -1,3 +1,12 @@
2005-01-21 David Shaw <dshaw@grover.jabberwocky.com>
* gpgkeys_ldap.c (main): Add "check-cert" option to disable SSL
certificate checking (which is on by default).
* gpgkeys_curl.c (main): Add "debug" option to match the LDAP
helper. Add "check-cert" option to disable SSL certificate
checking (which is on by default).
2005-01-18 David Shaw <dshaw@grover.jabberwocky.com> 2005-01-18 David Shaw <dshaw@grover.jabberwocky.com>
* gpgkeys_curl.c: Fix typo. * gpgkeys_curl.c: Fix typo.

View File

@ -82,12 +82,6 @@ get_key(char *getkey)
curl_easy_setopt(curl,CURLOPT_FILE,output); curl_easy_setopt(curl,CURLOPT_FILE,output);
curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errorbuffer); curl_easy_setopt(curl,CURLOPT_ERRORBUFFER,errorbuffer);
if(verbose>1)
{
curl_easy_setopt(curl,CURLOPT_STDERR,console);
curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
}
res=curl_easy_perform(curl); res=curl_easy_perform(curl);
if(res!=0) if(res!=0)
{ {
@ -116,7 +110,7 @@ main(int argc,char *argv[])
char line[MAX_LINE]; char line[MAX_LINE];
char *thekey=NULL; char *thekey=NULL;
unsigned int timeout=DEFAULT_KEYSERVER_TIMEOUT; unsigned int timeout=DEFAULT_KEYSERVER_TIMEOUT;
long follow_redirects=5; long follow_redirects=5,debug=0,check_cert=1;
console=stderr; console=stderr;
@ -287,6 +281,22 @@ main(int argc,char *argv[])
else if(start[16]=='\0') else if(start[16]=='\0')
follow_redirects=-1; follow_redirects=-1;
} }
else if(strncasecmp(start,"debug",5)==0)
{
if(no)
debug=0;
else if(start[5]=='=')
debug=atoi(&start[6]);
else if(start[5]=='\0')
debug=1;
}
else if(strcasecmp(start,"check-cert")==0)
{
if(no)
check_cert=0;
else
check_cert=1;
}
continue; continue;
} }
@ -337,6 +347,14 @@ main(int argc,char *argv[])
curl_easy_setopt(curl,CURLOPT_MAXREDIRS,follow_redirects); curl_easy_setopt(curl,CURLOPT_MAXREDIRS,follow_redirects);
} }
if(debug)
{
curl_easy_setopt(curl,CURLOPT_STDERR,console);
curl_easy_setopt(curl,CURLOPT_VERBOSE,1);
}
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,check_cert);
if(proxy[0]) if(proxy[0])
curl_easy_setopt(curl,CURLOPT_PROXY,proxy); curl_easy_setopt(curl,CURLOPT_PROXY,proxy);

View File

@ -1534,7 +1534,7 @@ main(int argc,char *argv[])
{ {
int debug=0,port=0,arg,err,action=-1,ret=KEYSERVER_INTERNAL_ERROR; int debug=0,port=0,arg,err,action=-1,ret=KEYSERVER_INTERNAL_ERROR;
char line[MAX_LINE]; char line[MAX_LINE];
int version,failed=0,use_ssl=0,use_tls=0,bound=0; int version,failed=0,use_ssl=0,use_tls=0,bound=0,check_cert=1;
struct keylist *keylist=NULL,*keyptr=NULL; struct keylist *keylist=NULL,*keyptr=NULL;
unsigned int timeout=DEFAULT_KEYSERVER_TIMEOUT; unsigned int timeout=DEFAULT_KEYSERVER_TIMEOUT;
@ -1719,6 +1719,13 @@ main(int argc,char *argv[])
else if(start[3]=='\0') else if(start[3]=='\0')
use_tls=1; use_tls=1;
} }
else if(strcasecmp(start,"check-cert")==0)
{
if(no)
check_cert=0;
else
check_cert=1;
}
else if(strncasecmp(start,"debug",5)==0) else if(strncasecmp(start,"debug",5)==0)
{ {
if(no) if(no)
@ -1868,8 +1875,9 @@ main(int argc,char *argv[])
if(use_ssl) if(use_ssl)
{ {
#if defined(LDAP_OPT_X_TLS_HARD) && defined(HAVE_LDAP_SET_OPTION) #if defined(LDAP_OPT_X_TLS) && defined(HAVE_LDAP_SET_OPTION)
int ssl=LDAP_OPT_X_TLS_HARD; int ssl=LDAP_OPT_X_TLS_HARD;
err=ldap_set_option(ldap,LDAP_OPT_X_TLS,&ssl); err=ldap_set_option(ldap,LDAP_OPT_X_TLS,&ssl);
if(err!=LDAP_SUCCESS) if(err!=LDAP_SUCCESS)
{ {
@ -1878,6 +1886,19 @@ main(int argc,char *argv[])
fail_all(keylist,action,ldap_err_to_gpg_err(err)); fail_all(keylist,action,ldap_err_to_gpg_err(err));
goto fail; goto fail;
} }
if(!check_cert)
ssl=LDAP_OPT_X_TLS_NEVER;
err=ldap_set_option(NULL,LDAP_OPT_X_TLS_REQUIRE_CERT,&ssl);
if(err!=LDAP_SUCCESS)
{
fprintf(console,
"gpgkeys: unable to set certificate validation: %s\n",
ldap_err2string(err));
fail_all(keylist,action,ldap_err_to_gpg_err(err));
goto fail;
}
#else #else
fprintf(console,"gpgkeys: unable to make SSL connection: %s\n", fprintf(console,"gpgkeys: unable to make SSL connection: %s\n",
"not built with LDAPS support"); "not built with LDAPS support");
@ -1915,15 +1936,22 @@ main(int argc,char *argv[])
#if defined(HAVE_LDAP_START_TLS_S) && defined(HAVE_LDAP_SET_OPTION) #if defined(HAVE_LDAP_START_TLS_S) && defined(HAVE_LDAP_SET_OPTION)
int ver=LDAP_VERSION3; int ver=LDAP_VERSION3;
err=LDAP_SUCCESS;
err=ldap_set_option(ldap,LDAP_OPT_PROTOCOL_VERSION,&ver); err=ldap_set_option(ldap,LDAP_OPT_PROTOCOL_VERSION,&ver);
if(err==LDAP_SUCCESS) if(err==LDAP_SUCCESS)
err=ldap_start_tls_s(ldap,NULL,NULL); {
if(check_cert)
ver=LDAP_OPT_X_TLS_HARD;
else
ver=LDAP_OPT_X_TLS_NEVER;
err=ldap_set_option(ldap,LDAP_OPT_X_TLS_REQUIRE_CERT,&ver);
if(err==LDAP_SUCCESS)
err=ldap_start_tls_s(ldap,NULL,NULL);
}
if(err!=LDAP_SUCCESS) if(err!=LDAP_SUCCESS)
{ {
if(use_tls==2 || verbose>2) if(use_tls>=2 || verbose>2)
fprintf(console,"gpgkeys: unable to start TLS: %s\n", fprintf(console,"gpgkeys: unable to start TLS: %s\n",
ldap_err2string(err)); ldap_err2string(err));
/* Are we forcing it? */ /* Are we forcing it? */
@ -1952,7 +1980,7 @@ main(int argc,char *argv[])
/* The LDAP keyserver doesn't require this, but it might be useful /* The LDAP keyserver doesn't require this, but it might be useful
if someone stores keys on a V2 LDAP server somewhere. (V3 if someone stores keys on a V2 LDAP server somewhere. (V3
doesn't require a bind). Leave this out for now since it is not doesn't require a bind). Leave this out for now since it is not
clear if anyone server we're likely to use really cares, plus clear if anyone's server we're likely to use really cares, plus
there are some servers that don't allow it. */ there are some servers that don't allow it. */
err=ldap_simple_bind_s(ldap,NULL,NULL); err=ldap_simple_bind_s(ldap,NULL,NULL);