diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2006-03-05 22:54:56 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2006-03-05 22:54:56 +0000 |
commit | 1ba223eb08bbd3f270e65c6670b8d3b781bb57d0 (patch) | |
tree | 454dfeaa71809fa881d9095eb97fba692516586d | |
parent | 80efd49951372b44445e546b57b2ba550746f2ba (diff) | |
download | gnutls-1ba223eb08bbd3f270e65c6670b8d3b781bb57d0.tar.gz |
gnutls-cli can now recognize services and port numbers with the -p option.
-rw-r--r-- | src/cli-gaa.c | 178 | ||||
-rw-r--r-- | src/cli-gaa.h | 54 | ||||
-rw-r--r-- | src/cli.c | 12 | ||||
-rw-r--r-- | src/cli.gaa | 8 | ||||
-rw-r--r-- | src/common.c | 23 | ||||
-rw-r--r-- | src/common.h | 1 |
6 files changed, 153 insertions, 123 deletions
diff --git a/src/cli-gaa.c b/src/cli-gaa.c index 7fd15778c6..a4d48d8c2b 100644 --- a/src/cli-gaa.c +++ b/src/cli-gaa.c @@ -136,7 +136,6 @@ void gaa_help(void) __gaa_helpsingle(0, "disable-extensions", "", "Disable all the TLS extensions."); __gaa_helpsingle(0, "xml", "", "Print the certificate information in XML format."); __gaa_helpsingle(0, "print-cert", "", "Print the certificate in PEM format."); - __gaa_helpsingle('p', "port", "integer ", "The port to connect to."); __gaa_helpsingle(0, "recordsize", "integer ", "The maximum record size to advertize."); __gaa_helpsingle('V', "verbose", "", "More verbose output."); __gaa_helpsingle(0, "ciphers", "cipher1 cipher2... ", "Ciphers to enable."); @@ -157,6 +156,7 @@ void gaa_help(void) __gaa_helpsingle(0, "srppasswd", "PASSWD ", "SRP password to use."); __gaa_helpsingle(0, "pskusername", "NAME ", "PSK username to use."); __gaa_helpsingle(0, "pskkey", "KEY ", "PSK key (in hex) to use."); + __gaa_helpsingle('p', "port", "PORT ", "The port to connect to."); __gaa_helpsingle(0, "insecure", "", "Don't abort program if server certificate can't be validated."); __gaa_helpsingle('l', "list", "", "Print a list of the supported algorithms and modes."); __gaa_helpsingle('h', "help", "", "prints this help"); @@ -181,59 +181,59 @@ struct _gaainfo #line 110 "cli.gaa" int insecure; #line 107 "cli.gaa" - char *psk_key; + char *port; #line 104 "cli.gaa" - char *psk_username; + char *psk_key; #line 101 "cli.gaa" - char *srp_passwd; + char *psk_username; #line 98 "cli.gaa" - char *srp_username; + char *srp_passwd; #line 95 "cli.gaa" - char *x509_certfile; + char *srp_username; #line 92 "cli.gaa" - char *x509_keyfile; + char *x509_certfile; #line 89 "cli.gaa" - char *pgp_certfile; + char *x509_keyfile; #line 86 "cli.gaa" - char *pgp_trustdb; + char *pgp_certfile; #line 83 "cli.gaa" - char *pgp_keyring; + char *pgp_trustdb; #line 80 "cli.gaa" - char *pgp_keyfile; + char *pgp_keyring; #line 77 "cli.gaa" - char *x509_crlfile; + char *pgp_keyfile; #line 74 "cli.gaa" - char *x509_cafile; + char *x509_crlfile; #line 71 "cli.gaa" + char *x509_cafile; +#line 68 "cli.gaa" char **ctype; -#line 70 "cli.gaa" - int nctype; #line 67 "cli.gaa" + int nctype; +#line 64 "cli.gaa" char **kx; -#line 66 "cli.gaa" - int nkx; #line 63 "cli.gaa" + int nkx; +#line 60 "cli.gaa" char **macs; -#line 62 "cli.gaa" - int nmacs; #line 59 "cli.gaa" + int nmacs; +#line 56 "cli.gaa" char **comp; -#line 58 "cli.gaa" - int ncomp; #line 55 "cli.gaa" + int ncomp; +#line 52 "cli.gaa" char **proto; -#line 54 "cli.gaa" - int nproto; #line 51 "cli.gaa" + int nproto; +#line 48 "cli.gaa" char **ciphers; -#line 50 "cli.gaa" - int nciphers; #line 47 "cli.gaa" - int verbose; + int nciphers; #line 44 "cli.gaa" - int record_size; + int verbose; #line 41 "cli.gaa" - int port; + int record_size; #line 38 "cli.gaa" int print_cert; #line 35 "cli.gaa" @@ -312,27 +312,27 @@ static int gaa_error = 0; #define GAAOPTID_help 3 #define GAAOPTID_list 4 #define GAAOPTID_insecure 5 -#define GAAOPTID_pskkey 6 -#define GAAOPTID_pskusername 7 -#define GAAOPTID_srppasswd 8 -#define GAAOPTID_srpusername 9 -#define GAAOPTID_x509certfile 10 -#define GAAOPTID_x509keyfile 11 -#define GAAOPTID_pgpcertfile 12 -#define GAAOPTID_pgptrustdb 13 -#define GAAOPTID_pgpkeyring 14 -#define GAAOPTID_pgpkeyfile 15 -#define GAAOPTID_x509crlfile 16 -#define GAAOPTID_x509cafile 17 -#define GAAOPTID_ctypes 18 -#define GAAOPTID_kx 19 -#define GAAOPTID_macs 20 -#define GAAOPTID_comp 21 -#define GAAOPTID_protocols 22 -#define GAAOPTID_ciphers 23 -#define GAAOPTID_verbose 24 -#define GAAOPTID_recordsize 25 -#define GAAOPTID_port 26 +#define GAAOPTID_port 6 +#define GAAOPTID_pskkey 7 +#define GAAOPTID_pskusername 8 +#define GAAOPTID_srppasswd 9 +#define GAAOPTID_srpusername 10 +#define GAAOPTID_x509certfile 11 +#define GAAOPTID_x509keyfile 12 +#define GAAOPTID_pgpcertfile 13 +#define GAAOPTID_pgptrustdb 14 +#define GAAOPTID_pgpkeyring 15 +#define GAAOPTID_pgpkeyfile 16 +#define GAAOPTID_x509crlfile 17 +#define GAAOPTID_x509cafile 18 +#define GAAOPTID_ctypes 19 +#define GAAOPTID_kx 20 +#define GAAOPTID_macs 21 +#define GAAOPTID_comp 22 +#define GAAOPTID_protocols 23 +#define GAAOPTID_ciphers 24 +#define GAAOPTID_verbose 25 +#define GAAOPTID_recordsize 26 #define GAAOPTID_print_cert 27 #define GAAOPTID_xml 28 #define GAAOPTID_disable_extensions 29 @@ -528,6 +528,12 @@ static float gaa_getfloat(char *arg) } /* option structures */ +struct GAAOPTION_port +{ + char* arg1; + int size1; +}; + struct GAAOPTION_pskkey { char* arg1; @@ -642,12 +648,6 @@ struct GAAOPTION_recordsize int size1; }; -struct GAAOPTION_port -{ - int arg1; - int size1; -}; - struct GAAOPTION_debug { int arg1; @@ -690,6 +690,7 @@ static int gaa_get_option_num(char *str, int status) switch(status) { case GAA_LETTER_OPTION: + GAA_CHECK1STR("p", GAAOPTID_port); GAA_CHECK1STR("", GAAOPTID_pskkey); GAA_CHECK1STR("", GAAOPTID_pskusername); GAA_CHECK1STR("", GAAOPTID_srppasswd); @@ -709,7 +710,6 @@ static int gaa_get_option_num(char *str, int status) GAA_CHECK1STR("", GAAOPTID_protocols); GAA_CHECK1STR("", GAAOPTID_ciphers); GAA_CHECK1STR("", GAAOPTID_recordsize); - GAA_CHECK1STR("p", GAAOPTID_port); GAA_CHECK1STR("d", GAAOPTID_debug); case GAA_MULTIPLE_OPTION: #line 375 "gaa.skel" @@ -736,6 +736,7 @@ static int gaa_get_option_num(char *str, int status) GAA_CHECKSTR("help", GAAOPTID_help); GAA_CHECKSTR("list", GAAOPTID_list); GAA_CHECKSTR("insecure", GAAOPTID_insecure); + GAA_CHECKSTR("port", GAAOPTID_port); GAA_CHECKSTR("pskkey", GAAOPTID_pskkey); GAA_CHECKSTR("pskusername", GAAOPTID_pskusername); GAA_CHECKSTR("srppasswd", GAAOPTID_srppasswd); @@ -756,7 +757,6 @@ static int gaa_get_option_num(char *str, int status) GAA_CHECKSTR("ciphers", GAAOPTID_ciphers); GAA_CHECKSTR("verbose", GAAOPTID_verbose); GAA_CHECKSTR("recordsize", GAAOPTID_recordsize); - GAA_CHECKSTR("port", GAAOPTID_port); GAA_CHECKSTR("print-cert", GAAOPTID_print_cert); GAA_CHECKSTR("xml", GAAOPTID_xml); GAA_CHECKSTR("disable-extensions", GAAOPTID_disable_extensions); @@ -778,6 +778,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) { int OK = 0; int gaa_last_non_option; + struct GAAOPTION_port GAATMP_port; struct GAAOPTION_pskkey GAATMP_pskkey; struct GAAOPTION_pskusername GAATMP_pskusername; struct GAAOPTION_srppasswd GAATMP_srppasswd; @@ -797,7 +798,6 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) struct GAAOPTION_protocols GAATMP_protocols; struct GAAOPTION_ciphers GAATMP_ciphers; struct GAAOPTION_recordsize GAATMP_recordsize; - struct GAAOPTION_port GAATMP_port; struct GAAOPTION_debug GAATMP_debug; #line 393 "gaa.skel" @@ -854,12 +854,22 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) return GAA_OK; break; + case GAAOPTID_port: + OK = 0; + GAA_TESTMOREARGS; + GAA_FILL(GAATMP_port.arg1, gaa_getstr, GAATMP_port.size1); + gaa_index++; +#line 108 "cli.gaa" +{ gaaval->port = GAATMP_port.arg1 ;}; + + return GAA_OK; + break; case GAAOPTID_pskkey: OK = 0; GAA_TESTMOREARGS; GAA_FILL(GAATMP_pskkey.arg1, gaa_getstr, GAATMP_pskkey.size1); gaa_index++; -#line 108 "cli.gaa" +#line 105 "cli.gaa" { gaaval->psk_key = GAATMP_pskkey.arg1 ;}; return GAA_OK; @@ -869,7 +879,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_pskusername.arg1, gaa_getstr, GAATMP_pskusername.size1); gaa_index++; -#line 105 "cli.gaa" +#line 102 "cli.gaa" { gaaval->psk_username = GAATMP_pskusername.arg1 ;}; return GAA_OK; @@ -879,7 +889,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_srppasswd.arg1, gaa_getstr, GAATMP_srppasswd.size1); gaa_index++; -#line 102 "cli.gaa" +#line 99 "cli.gaa" { gaaval->srp_passwd = GAATMP_srppasswd.arg1 ;}; return GAA_OK; @@ -889,7 +899,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_srpusername.arg1, gaa_getstr, GAATMP_srpusername.size1); gaa_index++; -#line 99 "cli.gaa" +#line 96 "cli.gaa" { gaaval->srp_username = GAATMP_srpusername.arg1 ;}; return GAA_OK; @@ -899,7 +909,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_x509certfile.arg1, gaa_getstr, GAATMP_x509certfile.size1); gaa_index++; -#line 96 "cli.gaa" +#line 93 "cli.gaa" { gaaval->x509_certfile = GAATMP_x509certfile.arg1 ;}; return GAA_OK; @@ -909,7 +919,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_x509keyfile.arg1, gaa_getstr, GAATMP_x509keyfile.size1); gaa_index++; -#line 93 "cli.gaa" +#line 90 "cli.gaa" { gaaval->x509_keyfile = GAATMP_x509keyfile.arg1 ;}; return GAA_OK; @@ -919,7 +929,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_pgpcertfile.arg1, gaa_getstr, GAATMP_pgpcertfile.size1); gaa_index++; -#line 90 "cli.gaa" +#line 87 "cli.gaa" { gaaval->pgp_certfile = GAATMP_pgpcertfile.arg1 ;}; return GAA_OK; @@ -929,7 +939,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_pgptrustdb.arg1, gaa_getstr, GAATMP_pgptrustdb.size1); gaa_index++; -#line 87 "cli.gaa" +#line 84 "cli.gaa" { gaaval->pgp_trustdb = GAATMP_pgptrustdb.arg1 ;}; return GAA_OK; @@ -939,7 +949,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_pgpkeyring.arg1, gaa_getstr, GAATMP_pgpkeyring.size1); gaa_index++; -#line 84 "cli.gaa" +#line 81 "cli.gaa" { gaaval->pgp_keyring = GAATMP_pgpkeyring.arg1 ;}; return GAA_OK; @@ -949,7 +959,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_pgpkeyfile.arg1, gaa_getstr, GAATMP_pgpkeyfile.size1); gaa_index++; -#line 81 "cli.gaa" +#line 78 "cli.gaa" { gaaval->pgp_keyfile = GAATMP_pgpkeyfile.arg1 ;}; return GAA_OK; @@ -959,7 +969,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_x509crlfile.arg1, gaa_getstr, GAATMP_x509crlfile.size1); gaa_index++; -#line 78 "cli.gaa" +#line 75 "cli.gaa" { gaaval->x509_crlfile = GAATMP_x509crlfile.arg1 ;}; return GAA_OK; @@ -969,7 +979,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_x509cafile.arg1, gaa_getstr, GAATMP_x509cafile.size1); gaa_index++; -#line 75 "cli.gaa" +#line 72 "cli.gaa" { gaaval->x509_cafile = GAATMP_x509cafile.arg1 ;}; return GAA_OK; @@ -977,7 +987,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) case GAAOPTID_ctypes: OK = 0; GAA_LIST_FILL(GAATMP_ctypes.arg1, gaa_getstr, char*, GAATMP_ctypes.size1); -#line 72 "cli.gaa" +#line 69 "cli.gaa" { gaaval->ctype = GAATMP_ctypes.arg1; gaaval->nctype = GAATMP_ctypes.size1 ;}; return GAA_OK; @@ -985,7 +995,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) case GAAOPTID_kx: OK = 0; GAA_LIST_FILL(GAATMP_kx.arg1, gaa_getstr, char*, GAATMP_kx.size1); -#line 68 "cli.gaa" +#line 65 "cli.gaa" { gaaval->kx = GAATMP_kx.arg1; gaaval->nkx = GAATMP_kx.size1 ;}; return GAA_OK; @@ -993,7 +1003,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) case GAAOPTID_macs: OK = 0; GAA_LIST_FILL(GAATMP_macs.arg1, gaa_getstr, char*, GAATMP_macs.size1); -#line 64 "cli.gaa" +#line 61 "cli.gaa" { gaaval->macs = GAATMP_macs.arg1; gaaval->nmacs = GAATMP_macs.size1 ;}; return GAA_OK; @@ -1001,7 +1011,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) case GAAOPTID_comp: OK = 0; GAA_LIST_FILL(GAATMP_comp.arg1, gaa_getstr, char*, GAATMP_comp.size1); -#line 60 "cli.gaa" +#line 57 "cli.gaa" { gaaval->comp = GAATMP_comp.arg1; gaaval->ncomp = GAATMP_comp.size1 ;}; return GAA_OK; @@ -1009,7 +1019,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) case GAAOPTID_protocols: OK = 0; GAA_LIST_FILL(GAATMP_protocols.arg1, gaa_getstr, char*, GAATMP_protocols.size1); -#line 56 "cli.gaa" +#line 53 "cli.gaa" { gaaval->proto = GAATMP_protocols.arg1; gaaval->nproto = GAATMP_protocols.size1 ;}; return GAA_OK; @@ -1017,14 +1027,14 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) case GAAOPTID_ciphers: OK = 0; GAA_LIST_FILL(GAATMP_ciphers.arg1, gaa_getstr, char*, GAATMP_ciphers.size1); -#line 52 "cli.gaa" +#line 49 "cli.gaa" { gaaval->ciphers = GAATMP_ciphers.arg1; gaaval->nciphers = GAATMP_ciphers.size1 ;}; return GAA_OK; break; case GAAOPTID_verbose: OK = 0; -#line 48 "cli.gaa" +#line 45 "cli.gaa" { gaaval->verbose = 1 ;}; return GAA_OK; @@ -1034,18 +1044,8 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list) GAA_TESTMOREARGS; GAA_FILL(GAATMP_recordsize.arg1, gaa_getint, GAATMP_recordsize.size1); gaa_index++; -#line 45 "cli.gaa" -{ gaaval->record_size = GAATMP_recordsize.arg1 ;}; - - return GAA_OK; - break; - case GAAOPTID_port: - OK = 0; - GAA_TESTMOREARGS; - GAA_FILL(GAATMP_port.arg1, gaa_getint, GAATMP_port.size1); - gaa_index++; #line 42 "cli.gaa" -{ gaaval->port = GAATMP_port.arg1 ;}; +{ gaaval->record_size = GAATMP_recordsize.arg1 ;}; return GAA_OK; break; @@ -1149,7 +1149,7 @@ int gaa(int argc, char **argv, gaainfo *gaaval) { #line 122 "cli.gaa" -{ gaaval->resume=0; gaaval->port=443; gaaval->rest_args=NULL; gaaval->ciphers=NULL; +{ gaaval->resume=0; gaaval->port="443"; gaaval->rest_args=NULL; gaaval->ciphers=NULL; gaaval->kx=NULL; gaaval->comp=NULL; gaaval->macs=NULL; gaaval->ctype=NULL; gaaval->nciphers=0; gaaval->nkx=0; gaaval->ncomp=0; gaaval->nmacs=0; gaaval->nctype = 0; gaaval->record_size=0; gaaval->fingerprint=0; gaaval->pgp_trustdb=NULL; gaaval->pgp_keyring=NULL; gaaval->x509_crlfile = NULL; diff --git a/src/cli-gaa.h b/src/cli-gaa.h index c51b08dde2..012ba4f4aa 100644 --- a/src/cli-gaa.h +++ b/src/cli-gaa.h @@ -13,59 +13,59 @@ struct _gaainfo #line 110 "cli.gaa" int insecure; #line 107 "cli.gaa" - char *psk_key; + char *port; #line 104 "cli.gaa" - char *psk_username; + char *psk_key; #line 101 "cli.gaa" - char *srp_passwd; + char *psk_username; #line 98 "cli.gaa" - char *srp_username; + char *srp_passwd; #line 95 "cli.gaa" - char *x509_certfile; + char *srp_username; #line 92 "cli.gaa" - char *x509_keyfile; + char *x509_certfile; #line 89 "cli.gaa" - char *pgp_certfile; + char *x509_keyfile; #line 86 "cli.gaa" - char *pgp_trustdb; + char *pgp_certfile; #line 83 "cli.gaa" - char *pgp_keyring; + char *pgp_trustdb; #line 80 "cli.gaa" - char *pgp_keyfile; + char *pgp_keyring; #line 77 "cli.gaa" - char *x509_crlfile; + char *pgp_keyfile; #line 74 "cli.gaa" - char *x509_cafile; + char *x509_crlfile; #line 71 "cli.gaa" + char *x509_cafile; +#line 68 "cli.gaa" char **ctype; -#line 70 "cli.gaa" - int nctype; #line 67 "cli.gaa" + int nctype; +#line 64 "cli.gaa" char **kx; -#line 66 "cli.gaa" - int nkx; #line 63 "cli.gaa" + int nkx; +#line 60 "cli.gaa" char **macs; -#line 62 "cli.gaa" - int nmacs; #line 59 "cli.gaa" + int nmacs; +#line 56 "cli.gaa" char **comp; -#line 58 "cli.gaa" - int ncomp; #line 55 "cli.gaa" + int ncomp; +#line 52 "cli.gaa" char **proto; -#line 54 "cli.gaa" - int nproto; #line 51 "cli.gaa" + int nproto; +#line 48 "cli.gaa" char **ciphers; -#line 50 "cli.gaa" - int nciphers; #line 47 "cli.gaa" - int verbose; + int nciphers; #line 44 "cli.gaa" - int record_size; + int verbose; #line 41 "cli.gaa" - int port; + int record_size; #line 38 "cli.gaa" int print_cert; #line 35 "cli.gaa" @@ -54,7 +54,7 @@ /* global stuff here */ int resume, starttls, insecure; char *hostname = NULL; -int port; +char* service; int record_max_size; int fingerprint; int crlf; @@ -494,7 +494,7 @@ main (int argc, char **argv) fd_set rset; int maxfd; struct timeval tv; - int user_term = 0; + int user_term = 0, port; struct hostent *server_host; socket_st hd; @@ -526,6 +526,12 @@ main (int argc, char **argv) sd = socket (AF_INET, SOCK_STREAM, 0); ERR (sd, "socket"); + port = service_to_port( service); + if (port == -1) { + fprintf(stderr, "Unknown service\n"); + return -1; + } + memset (&sa, '\0', sizeof (sa)); sa.sin_family = AF_INET; sa.sin_port = htons (port); @@ -773,7 +779,7 @@ gaa_parser (int argc, char **argv) starttls = info.starttls; resume = info.resume; insecure = info.insecure; - port = info.port; + service = info.port; record_max_size = info.record_size; fingerprint = info.fingerprint; diff --git a/src/cli.gaa b/src/cli.gaa index 787307e150..0138146d00 100644 --- a/src/cli.gaa +++ b/src/cli.gaa @@ -38,9 +38,6 @@ option (xml) { $xml = 1 } "Print the certificate information in XML format." #int print_cert; option (print-cert) { $print_cert = 1 } "Print the certificate in PEM format." -#int port; -option (p, port) INT "integer" { $port = $1 } "The port to connect to." - #int record_size; option (recordsize) INT "integer" { $record_size = $1 } "The maximum record size to advertize." @@ -107,6 +104,9 @@ option (pskusername) STR "NAME" { $psk_username = $1 } "PSK username to use." #char *psk_key; option (pskkey) STR "KEY" { $psk_key = $1 } "PSK key (in hex) to use." +#char *port; +option (p, port) STR "PORT" { $port = $1 } "The port to connect to." + #int insecure; option (insecure) { $insecure = 1 } "Don't abort program if server certificate can't be validated." @@ -119,7 +119,7 @@ option ( copyright) { print_license(); exit(0); } "prints the program's license" #char *rest_args; rest STR "hostname" { $rest_args = $1; } -init { $resume=0; $port=443; $rest_args=NULL; $ciphers=NULL; +init { $resume=0; $port="443"; $rest_args=NULL; $ciphers=NULL; $kx=NULL; $comp=NULL; $macs=NULL; $ctype=NULL; $nciphers=0; $nkx=0; $ncomp=0; $nmacs=0; $nctype = 0; $record_size=0; $fingerprint=0; $pgp_trustdb=NULL; $pgp_keyring=NULL; $x509_crlfile = NULL; diff --git a/src/common.c b/src/common.c index 02de9203de..eec613d165 100644 --- a/src/common.c +++ b/src/common.c @@ -817,3 +817,26 @@ sockets_init (void) } #endif } + +/* converts a service name or a port (in string) to a + * port number. The protocol is assumed to be TCP. + * + * returns -1 on error; + */ +int service_to_port( const char* service) +{ +int port; +struct servent *server_port; + + port = atoi(service); + if (port!=0) return port; + + server_port = getservbyname( service, "tcp"); + if (server_port == NULL) { + perror("getservbyname()"); + return(-1); + } + + return ntohs(server_port->s_port); + +} diff --git a/src/common.h b/src/common.h index fb1cc9105a..acc313054b 100644 --- a/src/common.h +++ b/src/common.h @@ -35,6 +35,7 @@ void parse_ciphers (char **ciphers, int nciphers, int *cipher_priority); void parse_protocols (char **protocols, int protocols_size, int *protocol_priority); const char *raw_to_string (const unsigned char *raw, size_t raw_size); +int service_to_port( const char* service); void sockets_init (void); |