From e67d839154a0c031e667903da013a4a49be86ced Mon Sep 17 00:00:00 2001 From: DeadZen Date: Wed, 8 Feb 2012 15:14:02 -0500 Subject: Add CA support and make SSL certificate password optional --- src/cowboy_ssl_transport.erl | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/cowboy_ssl_transport.erl b/src/cowboy_ssl_transport.erl index bf8b1fb..b7d555b 100644 --- a/src/cowboy_ssl_transport.erl +++ b/src/cowboy_ssl_transport.erl @@ -68,21 +68,33 @@ listen(Opts) -> {port, Port} = lists:keyfind(port, 1, Opts), Backlog = proplists:get_value(backlog, Opts, 1024), {certfile, CertFile} = lists:keyfind(certfile, 1, Opts), - {keyfile, KeyFile} = lists:keyfind(keyfile, 1, Opts), - {password, Password} = lists:keyfind(password, 1, Opts), + KeyFileOpts = + case lists:keyfind(keyfile, 1, Opts) of + false -> []; + KeyFile -> [KeyFile] + end, + PasswordOpts = + case lists:keyfind(password, 1, Opts) of + false -> []; + Password -> [Password] + end, + ListenOpts0 = [binary, {active, false}, {backlog, Backlog}, {packet, raw}, {reuseaddr, true}, - {certfile, CertFile}, {keyfile, KeyFile}, {password, Password}], + {certfile, CertFile}], ListenOpts1 = case lists:keyfind(ip, 1, Opts) of false -> ListenOpts0; Ip -> [Ip|ListenOpts0] end, - ListenOpts = + ListenOpts2 = case lists:keyfind(cacertfile, 1, Opts) of false -> ListenOpts1; CACertFile -> [CACertFile|ListenOpts1] end, + + ListenOpts = ListenOpts2 ++ KeyFileOpts ++ PasswordOpts, + ssl:listen(Port, ListenOpts). %% @doc Accept an incoming connection on a listen socket. -- cgit v1.2.3