Introduction
Introduction Statistics Contact Development Disclaimer Help
use libtls, remove raw OpenSSL code - irc - IRC client based on c9x.me/irc clie…
git clone git://git.codemadness.org/irc
Log
Files
Refs
README
LICENSE
---
commit cd226fa73bb4f6ab20c4cbf3a2a8d6a2c4c407f5
parent 7cabd77bc55e17135fce024801684b33806d2733
Author: Hiltjo Posthuma <[email protected]>
Date: Fri, 26 May 2017 13:12:44 +0200
use libtls, remove raw OpenSSL code
by using libtls we also support proper peer verification and other
security additions.
Diffstat:
M Makefile | 2 +-
M irc.c | 34 ++++++++++++-----------------…
2 files changed, 14 insertions(+), 22 deletions(-)
---
diff --git a/Makefile b/Makefile
@@ -1,7 +1,7 @@
BIN = irc
CFLAGS = -std=c99 -Os -D_POSIX_C_SOURCE=201112 -D_GNU_SOURCE -D_XOPEN_CURSES -…
-LDFLAGS = -lncursesw -lssl -lcrypto
+LDFLAGS = -lncursesw -lssl -lcrypto -ltls
all: ${BIN}
diff --git a/irc.c b/irc.c
@@ -20,7 +20,8 @@
#include <netdb.h>
#include <locale.h>
#include <wchar.h>
-#include <openssl/ssl.h>
+
+#include <tls.h>
#ifndef __OpenBSD__
#define pledge(a,b) 0
@@ -69,8 +70,7 @@ static struct Chan {
static int ssl;
static struct {
int fd;
- SSL *ssl;
- SSL_CTX *ctx;
+ struct tls *tls;
} srv;
static char nick[64];
static int quit, winchg;
@@ -187,7 +187,7 @@ srd(void)
if (p - l >= BufSz)
p = l; /* Input buffer overflow, there should something better…
if (ssl)
- rd = SSL_read(srv.ssl, p, BufSz - (p - l));
+ rd = tls_read(srv.tls, p, BufSz - (p - l));
else
rd = read(srv.fd, p, BufSz - (p - l));
if (rd <= 0)
@@ -255,14 +255,11 @@ dial(const char *host, const char *service)
return "Cannot connect to host.";
srv.fd = fd;
if (ssl) {
- SSL_load_error_strings();
- SSL_library_init();
- srv.ctx = SSL_CTX_new(SSLv23_client_method());
- if (!srv.ctx)
- return "Could not initialize ssl context.";
- srv.ssl = SSL_new(srv.ctx);
- if (SSL_set_fd(srv.ssl, srv.fd) == 0
- || SSL_connect(srv.ssl) != 1)
+ if (tls_init() < 0)
+ return "Could not initialize TLS.";
+ if (!(srv.tls = tls_client()))
+ return "Could not initialize TLS context.";
+ if (tls_connect_socket(srv.tls, srv.fd, host) < 0)
return "Could not connect with ssl.";
}
freeaddrinfo(res);
@@ -272,19 +269,14 @@ dial(const char *host, const char *service)
static void
hangup(void)
{
- if (srv.ssl) {
- SSL_shutdown(srv.ssl);
- SSL_free(srv.ssl);
- srv.ssl = 0;
+ if (srv.tls) {
+ tls_close(srv.tls);
+ srv.tls = 0;
}
if (srv.fd) {
close(srv.fd);
srv.fd = 0;
}
- if (srv.ctx) {
- SSL_CTX_free(srv.ctx);
- srv.ctx = 0;
- }
}
static inline int
@@ -920,7 +912,7 @@ main(int argc, char *argv[])
int wr;
if (ssl)
- wr = SSL_write(srv.ssl, outb, outp - outb);
+ wr = tls_write(srv.tls, outb, outp - outb);
else
wr = write(srv.fd, outb, outp - outb);
if (wr <= 0) {
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.