summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Ziebuhr <chris@codefrickler.de>2014-12-01 14:41:36 +0100
committerFelix Fietkau <nbd@openwrt.org>2014-12-01 15:55:41 +0100
commitb1c19610b2f4637c7dfe1b620b6474bbb9b23fe4 (patch)
tree389d9ca535db3521709ebcbd3e61b5cde19ba64b
parent02d7535a45290974e7ed51afc90cf2b562c4c74c (diff)
downloadustream-ssl-b1c19610b2f4637c7dfe1b620b6474bbb9b23fe4.tar.gz
Add support for Server Name Indication
Signed-off-by: Christoph Ziebuhr <chris@codefrickler.de>
-rw-r--r--ustream-openssl.h5
-rw-r--r--ustream-polarssl.h5
-rw-r--r--ustream-ssl.c4
-rw-r--r--ustream-ssl.h1
4 files changed, 15 insertions, 0 deletions
diff --git a/ustream-openssl.h b/ustream-openssl.h
index ef786f2..afff22b 100644
--- a/ustream-openssl.h
+++ b/ustream-openssl.h
@@ -39,4 +39,9 @@ static inline void __ustream_ssl_update_peer_cn(struct ustream_ssl *us)
{
}
+static inline void __ustream_ssl_set_server_name(struct ustream_ssl *us)
+{
+ SSL_set_tlsext_host_name(us->ssl, us->server_name);
+}
+
#endif
diff --git a/ustream-polarssl.h b/ustream-polarssl.h
index 527c14a..dfc287d 100644
--- a/ustream-polarssl.h
+++ b/ustream-polarssl.h
@@ -50,6 +50,11 @@ static inline char *__ustream_ssl_strerror(int error, char *buffer, int len)
return buffer;
}
+static inline void __ustream_ssl_set_server_name(struct ustream_ssl *us)
+{
+ ssl_set_hostname(us->ssl, us->server_name);
+}
+
void __ustream_ssl_update_peer_cn(struct ustream_ssl *us);
void __ustream_ssl_session_free(void *ssl);
void *__ustream_ssl_session_new(struct ustream_ssl_ctx *ctx);
diff --git a/ustream-ssl.c b/ustream-ssl.c
index cf8cb84..dd0faf9 100644
--- a/ustream-ssl.c
+++ b/ustream-ssl.c
@@ -186,6 +186,10 @@ static int _ustream_ssl_init(struct ustream_ssl *us, struct ustream *conn, struc
conn->next = &us->stream;
ustream_set_io(ctx, us->ssl, conn);
ustream_ssl_stream_init(us);
+
+ if (us->server_name)
+ __ustream_ssl_set_server_name(us);
+
ustream_ssl_check_conn(us);
return 0;
diff --git a/ustream-ssl.h b/ustream-ssl.h
index b4317af..0c55344 100644
--- a/ustream-ssl.h
+++ b/ustream-ssl.h
@@ -34,6 +34,7 @@ struct ustream_ssl {
void *ssl;
char *peer_cn;
+ char *server_name;
int error;
bool connected;