summaryrefslogtreecommitdiff
path: root/src/serv-gaa.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/serv-gaa.c')
-rw-r--r--src/serv-gaa.c137
1 files changed, 92 insertions, 45 deletions
diff --git a/src/serv-gaa.c b/src/serv-gaa.c
index 584a1c2c0b..8cbda15bab 100644
--- a/src/serv-gaa.c
+++ b/src/serv-gaa.c
@@ -142,6 +142,8 @@ void gaa_help(void)
__gaa_helpsingle(0, "pgpcertfile", "FILE ", "PGP Public Key (certificate) file to use.");
__gaa_helpsingle(0, "x509keyfile", "FILE ", "X.509 key file to use.");
__gaa_helpsingle(0, "x509certfile", "FILE ", "X.509 Certificate file to use.");
+ __gaa_helpsingle(0, "x509dsakeyfile", "FILE ", "Alternative X.509 key file to use.");
+ __gaa_helpsingle(0, "x509dsacertfile", "FILE ", "Alternative X.509 certificate file to use.");
__gaa_helpsingle(0, "srppasswd", "FILE ", "SRP password file to use.");
__gaa_helpsingle(0, "srppasswdconf", "FILE ", "SRP password conf file to use.");
__gaa_helpsingle(0, "ciphers", "cipher1 cipher2... ", "Ciphers to enable.");
@@ -168,34 +170,38 @@ typedef struct _gaainfo gaainfo;
struct _gaainfo
{
-#line 89 "serv.gaa"
+#line 95 "serv.gaa"
char **ctype;
-#line 88 "serv.gaa"
+#line 94 "serv.gaa"
int nctype;
-#line 85 "serv.gaa"
+#line 91 "serv.gaa"
char **kx;
-#line 84 "serv.gaa"
+#line 90 "serv.gaa"
int nkx;
-#line 81 "serv.gaa"
+#line 87 "serv.gaa"
char **macs;
-#line 80 "serv.gaa"
+#line 86 "serv.gaa"
int nmacs;
-#line 77 "serv.gaa"
+#line 83 "serv.gaa"
char **comp;
-#line 76 "serv.gaa"
+#line 82 "serv.gaa"
int ncomp;
-#line 73 "serv.gaa"
+#line 79 "serv.gaa"
char **proto;
-#line 72 "serv.gaa"
+#line 78 "serv.gaa"
int nproto;
-#line 69 "serv.gaa"
+#line 75 "serv.gaa"
char **ciphers;
-#line 68 "serv.gaa"
+#line 74 "serv.gaa"
int nciphers;
-#line 64 "serv.gaa"
+#line 70 "serv.gaa"
char *srp_passwd_conf;
-#line 61 "serv.gaa"
+#line 67 "serv.gaa"
char *srp_passwd;
+#line 64 "serv.gaa"
+ char *x509_dsacertfile;
+#line 61 "serv.gaa"
+ char *x509_dsakeyfile;
#line 58 "serv.gaa"
char *x509_certfile;
#line 55 "serv.gaa"
@@ -282,7 +288,7 @@ static int gaa_error = 0;
#define GAA_MULTIPLE_OPTION 3
#define GAA_REST 0
-#define GAA_NB_OPTION 29
+#define GAA_NB_OPTION 31
#define GAAOPTID_copyright 1
#define GAAOPTID_version 2
#define GAAOPTID_help 3
@@ -295,23 +301,25 @@ static int gaa_error = 0;
#define GAAOPTID_ciphers 10
#define GAAOPTID_srppasswdconf 11
#define GAAOPTID_srppasswd 12
-#define GAAOPTID_x509certfile 13
-#define GAAOPTID_x509keyfile 14
-#define GAAOPTID_pgpcertfile 15
-#define GAAOPTID_pgpkeyfile 16
-#define GAAOPTID_pgptrustdb 17
-#define GAAOPTID_pgpkeyring 18
-#define GAAOPTID_x509crlfile 19
-#define GAAOPTID_x509cafile 20
-#define GAAOPTID_x509fmtder 21
-#define GAAOPTID_dhparams 22
-#define GAAOPTID_echo 23
-#define GAAOPTID_http 24
-#define GAAOPTID_nodb 25
-#define GAAOPTID_quiet 26
-#define GAAOPTID_port 27
-#define GAAOPTID_generate 28
-#define GAAOPTID_debug 29
+#define GAAOPTID_x509dsacertfile 13
+#define GAAOPTID_x509dsakeyfile 14
+#define GAAOPTID_x509certfile 15
+#define GAAOPTID_x509keyfile 16
+#define GAAOPTID_pgpcertfile 17
+#define GAAOPTID_pgpkeyfile 18
+#define GAAOPTID_pgptrustdb 19
+#define GAAOPTID_pgpkeyring 20
+#define GAAOPTID_x509crlfile 21
+#define GAAOPTID_x509cafile 22
+#define GAAOPTID_x509fmtder 23
+#define GAAOPTID_dhparams 24
+#define GAAOPTID_echo 25
+#define GAAOPTID_http 26
+#define GAAOPTID_nodb 27
+#define GAAOPTID_quiet 28
+#define GAAOPTID_port 29
+#define GAAOPTID_generate 30
+#define GAAOPTID_debug 31
#line 168 "gaa.skel"
@@ -546,6 +554,18 @@ struct GAAOPTION_srppasswd
int size1;
};
+struct GAAOPTION_x509dsacertfile
+{
+ char* arg1;
+ int size1;
+};
+
+struct GAAOPTION_x509dsakeyfile
+{
+ char* arg1;
+ int size1;
+};
+
struct GAAOPTION_x509certfile
{
char* arg1;
@@ -649,6 +669,8 @@ static int gaa_get_option_num(char *str, int status)
GAA_CHECK1STR("", GAAOPTID_ciphers);
GAA_CHECK1STR("", GAAOPTID_srppasswdconf);
GAA_CHECK1STR("", GAAOPTID_srppasswd);
+ GAA_CHECK1STR("", GAAOPTID_x509dsacertfile);
+ GAA_CHECK1STR("", GAAOPTID_x509dsakeyfile);
GAA_CHECK1STR("", GAAOPTID_x509certfile);
GAA_CHECK1STR("", GAAOPTID_x509keyfile);
GAA_CHECK1STR("", GAAOPTID_pgpcertfile);
@@ -688,6 +710,8 @@ static int gaa_get_option_num(char *str, int status)
GAA_CHECKSTR("ciphers", GAAOPTID_ciphers);
GAA_CHECKSTR("srppasswdconf", GAAOPTID_srppasswdconf);
GAA_CHECKSTR("srppasswd", GAAOPTID_srppasswd);
+ GAA_CHECKSTR("x509dsacertfile", GAAOPTID_x509dsacertfile);
+ GAA_CHECKSTR("x509dsakeyfile", GAAOPTID_x509dsakeyfile);
GAA_CHECKSTR("x509certfile", GAAOPTID_x509certfile);
GAA_CHECKSTR("x509keyfile", GAAOPTID_x509keyfile);
GAA_CHECKSTR("pgpcertfile", GAAOPTID_pgpcertfile);
@@ -725,6 +749,8 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
struct GAAOPTION_ciphers GAATMP_ciphers;
struct GAAOPTION_srppasswdconf GAATMP_srppasswdconf;
struct GAAOPTION_srppasswd GAATMP_srppasswd;
+ struct GAAOPTION_x509dsacertfile GAATMP_x509dsacertfile;
+ struct GAAOPTION_x509dsakeyfile GAATMP_x509dsakeyfile;
struct GAAOPTION_x509certfile GAATMP_x509certfile;
struct GAAOPTION_x509keyfile GAATMP_x509keyfile;
struct GAAOPTION_pgpcertfile GAATMP_pgpcertfile;
@@ -758,28 +784,28 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
{
case GAAOPTID_copyright:
OK = 0;
-#line 97 "serv.gaa"
+#line 103 "serv.gaa"
{ print_serv_license(); exit(0); ;};
return GAA_OK;
break;
case GAAOPTID_version:
OK = 0;
-#line 96 "serv.gaa"
+#line 102 "serv.gaa"
{ serv_version(); exit(0); ;};
return GAA_OK;
break;
case GAAOPTID_help:
OK = 0;
-#line 94 "serv.gaa"
+#line 100 "serv.gaa"
{ gaa_help(); exit(0); ;};
return GAA_OK;
break;
case GAAOPTID_list:
OK = 0;
-#line 93 "serv.gaa"
+#line 99 "serv.gaa"
{ print_list(); exit(0); ;};
return GAA_OK;
@@ -787,7 +813,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 90 "serv.gaa"
+#line 96 "serv.gaa"
{ gaaval->ctype = GAATMP_ctypes.arg1; gaaval->nctype = GAATMP_ctypes.size1 ;};
return GAA_OK;
@@ -795,7 +821,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 86 "serv.gaa"
+#line 92 "serv.gaa"
{ gaaval->kx = GAATMP_kx.arg1; gaaval->nkx = GAATMP_kx.size1 ;};
return GAA_OK;
@@ -803,7 +829,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 82 "serv.gaa"
+#line 88 "serv.gaa"
{ gaaval->macs = GAATMP_macs.arg1; gaaval->nmacs = GAATMP_macs.size1 ;};
return GAA_OK;
@@ -811,7 +837,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 78 "serv.gaa"
+#line 84 "serv.gaa"
{ gaaval->comp = GAATMP_comp.arg1; gaaval->ncomp = GAATMP_comp.size1 ;};
return GAA_OK;
@@ -819,7 +845,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 74 "serv.gaa"
+#line 80 "serv.gaa"
{ gaaval->proto = GAATMP_protocols.arg1; gaaval->nproto = GAATMP_protocols.size1 ;};
return GAA_OK;
@@ -827,7 +853,7 @@ 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 70 "serv.gaa"
+#line 76 "serv.gaa"
{ gaaval->ciphers = GAATMP_ciphers.arg1; gaaval->nciphers = GAATMP_ciphers.size1 ;};
return GAA_OK;
@@ -837,7 +863,7 @@ static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
GAA_TESTMOREARGS;
GAA_FILL(GAATMP_srppasswdconf.arg1, gaa_getstr, GAATMP_srppasswdconf.size1);
gaa_index++;
-#line 65 "serv.gaa"
+#line 71 "serv.gaa"
{ gaaval->srp_passwd_conf = GAATMP_srppasswdconf.arg1 ;};
return GAA_OK;
@@ -847,11 +873,31 @@ 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 62 "serv.gaa"
+#line 68 "serv.gaa"
{ gaaval->srp_passwd = GAATMP_srppasswd.arg1 ;};
return GAA_OK;
break;
+ case GAAOPTID_x509dsacertfile:
+ OK = 0;
+ GAA_TESTMOREARGS;
+ GAA_FILL(GAATMP_x509dsacertfile.arg1, gaa_getstr, GAATMP_x509dsacertfile.size1);
+ gaa_index++;
+#line 65 "serv.gaa"
+{ gaaval->x509_dsacertfile = GAATMP_x509dsacertfile.arg1 ;};
+
+ return GAA_OK;
+ break;
+ case GAAOPTID_x509dsakeyfile:
+ OK = 0;
+ GAA_TESTMOREARGS;
+ GAA_FILL(GAATMP_x509dsakeyfile.arg1, gaa_getstr, GAATMP_x509dsakeyfile.size1);
+ gaa_index++;
+#line 62 "serv.gaa"
+{ gaaval->x509_dsakeyfile = GAATMP_x509dsakeyfile.arg1 ;};
+
+ return GAA_OK;
+ break;
case GAAOPTID_x509certfile:
OK = 0;
GAA_TESTMOREARGS;
@@ -1028,12 +1074,13 @@ int gaa(int argc, char **argv, gaainfo *gaaval)
if(inited == 0)
{
-#line 100 "serv.gaa"
+#line 106 "serv.gaa"
{ gaaval->generate=0; gaaval->port=5556; gaaval->http=0; 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->nodb = 0;
gaaval->x509_cafile = NULL; gaaval->pgp_keyfile=NULL; gaaval->pgp_certfile=NULL;
gaaval->x509_keyfile=NULL; gaaval->x509_certfile=NULL; gaaval->x509_crlfile = NULL;
+ gaaval->x509_dsakeyfile=NULL; gaaval->x509_dsacertfile=NULL;
gaaval->srp_passwd=NULL; gaaval->srp_passwd_conf=NULL; gaaval->quiet = 0;
gaaval->pgp_trustdb=NULL; gaaval->pgp_keyring=NULL; gaaval->fmtder = 0;
gaaval->dh_params_file=NULL; gaaval->debug=0; ;};