diff options
author | Jakub Sławiński | 2007-10-03 23:32:17 +0200 |
---|---|---|
committer | Joshua Judson Rosen | 2014-07-17 21:15:04 +0200 |
commit | be7cc5efd2c1ad8227794f77c27e3376f509ef4a (patch) | |
tree | cd0c80a493c4c8218c01772e8951b9039fbc6f8d /src/afclient.c | |
parent | Update copyright statements. (diff) | |
download | apf-be7cc5efd2c1ad8227794f77c27e3376f509ef4a.tar.gz |
v0.8.4autohistory
- Added (by Joshua Judson Rosen): certificate-based authentication
Diffstat (limited to 'src/afclient.c')
-rw-r--r-- | src/afclient.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/afclient.c b/src/afclient.c index 2963aef..fbafcc1 100644 --- a/src/afclient.c +++ b/src/afclient.c @@ -32,6 +32,7 @@ static struct option long_options[] = { {"portnum", 1, 0, 'p'}, {"verbose", 0, 0, 'v'}, {"keyfile", 1, 0, 'k'}, + {"cerfile", 1, 0, 'c'}, {"storefile", 1, 0, 's'}, {"cfgfile", 1, 0, 'f'}, {"log", 1, 0, 'o'}, @@ -107,6 +108,7 @@ main(int argc, char **argv) char* localPort = NULL; char* localDestinationName = NULL; char* keys = NULL; + char* certif = NULL; char* store = NULL; char* dateformat = NULL; char* kaTimeout = NULL; @@ -180,7 +182,7 @@ main(int argc, char **argv) while ((n = getopt_long(argc, argv, GETOPT_LONG_LIBDL(GETOPT_LONG_LIBPTHREAD( - GETOPT_LONG_AF_INET6("huUn:m:d:p:vk:s:o:i:D:rP:X:VK:A:T:f:"))) + GETOPT_LONG_AF_INET6("huUn:m:d:p:vk:c:s:o:i:D:rP:X:VK:A:T:f:"))) , long_options, 0)) != -1) { switch (n) { case 'h': { @@ -250,6 +252,10 @@ main(int argc, char **argv) keys = optarg; break; } + case 'c': { + certif = optarg; + break; + } case 's': { store = optarg; break; @@ -385,6 +391,9 @@ main(int argc, char **argv) else { ClientConfiguration_set_keysFile(cconfig, keys); } + if (certif != NULL) { + ClientConfiguration_set_certificateFile(cconfig, certif); + } if (store == NULL) { if (ClientConfiguration_get_storeFile(cconfig) == NULL) { ClientConfiguration_set_storeFile(cconfig, "known_hosts"); @@ -486,6 +495,7 @@ main(int argc, char **argv) exit(1); } ClientConfiguration_set_keysFile(cconfig, keys); + ClientConfiguration_set_certificateFile(cconfig, certif); ClientConfiguration_set_storeFile(cconfig, store); ClientConfiguration_set_dateFormat(cconfig, dateformat); ClientConfiguration_set_realmsNumber(cconfig, 1); @@ -695,7 +705,16 @@ main(int argc, char **argv) "Setting rsa key failed (%s)... exiting", keys); exit(1); } - + + certif = ClientConfiguration_get_certificateFile(cconfig); + if (certif) { + if (SSL_CTX_use_certificate_file(ctx, certif, SSL_FILETYPE_PEM) != 1) { + aflog(LOG_T_INIT, LOG_I_CRIT, + "Setting certificate failed (%s)... exiting", certif); + exit(1); + } + } + if ((ClientRealm_get_clientMode(pointer) != CLIENTREALM_MODE_REMOTE) && (!verbose)) daemon(0, 0); |