diff options
Diffstat (limited to 'vchat-protocol.c')
| -rwxr-xr-x | vchat-protocol.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/vchat-protocol.c b/vchat-protocol.c index b077411..6532fbb 100755 --- a/vchat-protocol.c +++ b/vchat-protocol.c | |||
| @@ -24,11 +24,12 @@ | |||
| 24 | #include <sys/socket.h> | 24 | #include <sys/socket.h> |
| 25 | #include <netinet/in.h> | 25 | #include <netinet/in.h> |
| 26 | #include <readline/readline.h> | 26 | #include <readline/readline.h> |
| 27 | #include <openssl/ssl.h> | ||
| 28 | #include <openssl/err.h> | ||
| 29 | #include <locale.h> | 27 | #include <locale.h> |
| 30 | #include <langinfo.h> | 28 | #include <langinfo.h> |
| 31 | 29 | ||
| 30 | // TO BE GONE | ||
| 31 | #include <openssl/bio.h> | ||
| 32 | |||
| 32 | /* local includes */ | 33 | /* local includes */ |
| 33 | #include "vchat.h" | 34 | #include "vchat.h" |
| 34 | #include "vchat-user.h" | 35 | #include "vchat-user.h" |
| @@ -108,7 +109,7 @@ vcconnect (char *server, char *port) | |||
| 108 | char *tildex = NULL; | 109 | char *tildex = NULL; |
| 109 | 110 | ||
| 110 | /* vchat connection x509 store */ | 111 | /* vchat connection x509 store */ |
| 111 | vc_x509store_t vc_store; | 112 | vc_x509store_t *vc_store; |
| 112 | 113 | ||
| 113 | /* pointer to tilde-expanded certificate/keyfile-names */ | 114 | /* pointer to tilde-expanded certificate/keyfile-names */ |
| 114 | char *certfile = NULL, *keyfile = NULL; | 115 | char *certfile = NULL, *keyfile = NULL; |
| @@ -126,14 +127,9 @@ vcconnect (char *server, char *port) | |||
| 126 | 127 | ||
| 127 | /* If SSL is requested, get our ssl-BIO running */ | 128 | /* If SSL is requested, get our ssl-BIO running */ |
| 128 | if( server_conn && getintoption(CF_USESSL) ) { | 129 | if( server_conn && getintoption(CF_USESSL) ) { |
| 129 | static int sslinit; | 130 | vc_store = vc_init_x509store(); |
| 130 | if( !sslinit++ ) { | 131 | // XXX TODO: Check error (with new API) |
| 131 | SSL_library_init (); | 132 | vc_x509store_setflags(vc_store, VC_X509S_SSL_VERIFY_PEER); |
| 132 | SSL_load_error_strings(); | ||
| 133 | } | ||
| 134 | |||
| 135 | vc_init_x509store(&vc_store); | ||
| 136 | vc_x509store_setflags(&vc_store, VC_X509S_SSL_VERIFY_PEER); | ||
| 137 | 133 | ||
| 138 | /* get name of certificate file */ | 134 | /* get name of certificate file */ |
| 139 | certfile = getstroption (CF_CERTFILE); | 135 | certfile = getstroption (CF_CERTFILE); |
| @@ -145,8 +141,8 @@ vcconnect (char *server, char *port) | |||
| 145 | else | 141 | else |
| 146 | tildex = certfile; | 142 | tildex = certfile; |
| 147 | 143 | ||
| 148 | vc_x509store_setflags(&vc_store, VC_X509S_USE_CERTIFICATE); | 144 | vc_x509store_setflags(vc_store, VC_X509S_USE_CERTIFICATE); |
| 149 | vc_x509store_setcertfile(&vc_store, tildex); | 145 | vc_x509store_setcertfile(vc_store, tildex); |
| 150 | 146 | ||
| 151 | /* get name of key file */ | 147 | /* get name of key file */ |
| 152 | keyfile = getstroption (CF_KEYFILE); | 148 | keyfile = getstroption (CF_KEYFILE); |
| @@ -161,12 +157,12 @@ vcconnect (char *server, char *port) | |||
| 161 | else | 157 | else |
| 162 | tildex = keyfile; | 158 | tildex = keyfile; |
| 163 | 159 | ||
| 164 | vc_x509store_set_pkeycb(&vc_store, (vc_askpass_cb_t)passprompt); | 160 | vc_x509store_set_pkeycb(vc_store, (vc_askpass_cb_t)passprompt); |
| 165 | vc_x509store_setkeyfile(&vc_store, tildex); | 161 | vc_x509store_setkeyfile(vc_store, tildex); |
| 166 | } | 162 | } |
| 167 | 163 | ||
| 168 | /* upgrade our plain BIO to ssl */ | 164 | /* upgrade our plain BIO to ssl */ |
| 169 | if( vc_connect_ssl( &server_conn, &vc_store ) ) { | 165 | if( vc_connect_ssl( &server_conn, vc_store ) ) { |
| 170 | BIO_free_all( server_conn ); | 166 | BIO_free_all( server_conn ); |
| 171 | server_conn = NULL; | 167 | server_conn = NULL; |
| 172 | errno = EIO; | 168 | errno = EIO; |
