@@ -659,25 +659,27 @@ <h2>Adding SSL support to Asynchronous Server<a class="headerlink" href="#adding
659659a regular Asynchronous Server (see above). Once this server is setup, SSL can be
660660enabled by adding a< a class ="reference external "href ="http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/ssl__context.html "> Boost.Asio.Ssl.Context</ a > to the options. The settings that can be
661661used are defined in the link.</ p >
662- < div class ="highlight-c++ "> < div class ="highlight "> < pre > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> shared_ptr</ span > < span class ="o "> <</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ></ span > < span class ="n "> ctx</ span > < span class ="o "> =</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> make_shared</ span > < span class ="o "> <</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> sslv23</ span > < span class ="p "> );</ span >
663- < span class ="n "> ctx</ span > < span class ="o "> -></ span > < span class ="n "> set_options</ span > < span class ="p "> (</ span >
664- < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> default_workarounds</ span >
665- < span class ="o "> |</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> no_sslv2</ span >
666- < span class ="o "> |</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> single_dh_use</ span > < span class ="p "> );</ span >
667- < span class ="n "> context_</ span > < span class ="p "> .</ span > < span class ="n "> set_password_callback</ span > < span class ="p "> (</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> bind</ span > < span class ="p "> (</ span > < span class ="o "> &</ span > < span class ="n "> server</ span > < span class ="o "> ::</ span > < span class ="n "> get_password</ span > < span class ="p "> ,</ span > < span class ="k "> this</ span > < span class ="p "> ));</ span >
668- < span class ="n "> context_</ span > < span class ="p "> .</ span > < span class ="n "> use_certificate_chain_file</ span > < span class ="p "> (</ span > < span class ="s "> "server.pem"</ span > < span class ="p "> );</ span >
669- < span class ="n "> context_</ span > < span class ="p "> .</ span > < span class ="n "> use_private_key_file</ span > < span class ="p "> (</ span > < span class ="s "> "server.pem"</ span > < span class ="p "> ,</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> pem</ span > < span class ="p "> );</ span >
670- < span class ="n "> context_</ span > < span class ="p "> .</ span > < span class ="n "> use_tmp_dh_file</ span > < span class ="p "> (</ span > < span class ="s "> "dh512.pem"</ span > < span class ="p "> );</ span >
662+ < div class ="highlight-c++ "> < div class ="highlight "> < pre > < span class ="c1 "> // Initialize SSL context</ span >
663+ < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> shared_ptr</ span > < span class ="o "> <</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ></ span > < span class ="n "> ctx</ span > < span class ="o "> =</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> make_shared</ span > < span class ="o "> <</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> sslv23</ span > < span class ="p "> );</ span >
664+ < span class ="n "> ctx</ span > < span class ="o "> -></ span > < span class ="n "> set_options</ span > < span class ="p "> (</ span >
665+ < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> default_workarounds</ span >
666+ < span class ="o "> |</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> no_sslv2</ span >
667+ < span class ="o "> |</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> single_dh_use</ span > < span class ="p "> );</ span >
668+
669+ < span class ="c1 "> // Set keys</ span >
670+ < span class ="n "> ctx</ span > < span class ="o "> -></ span > < span class ="n "> set_password_callback</ span > < span class ="p "> (</ span > < span class ="n "> password_callback</ span > < span class ="p "> );</ span >
671+ < span class ="n "> ctx</ span > < span class ="o "> -></ span > < span class ="n "> use_certificate_chain_file</ span > < span class ="p "> (</ span > < span class ="s "> "server.pem"</ span > < span class ="p "> );</ span >
672+ < span class ="n "> ctx</ span > < span class ="o "> -></ span > < span class ="n "> use_private_key_file</ span > < span class ="p "> (</ span > < span class ="s "> "server.pem"</ span > < span class ="p "> ,</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context</ span > < span class ="o "> ::</ span > < span class ="n "> pem</ span > < span class ="p "> );</ span >
673+ < span class ="n "> ctx</ span > < span class ="o "> -></ span > < span class ="n "> use_tmp_dh_file</ span > < span class ="p "> (</ span > < span class ="s "> "dh512.pem"</ span > < span class ="p "> );</ span >
671674
672675< span class ="n "> handler_type</ span > < span class ="n "> handler</ span > < span class ="p "> ;</ span >
673676< span class ="n "> http_server</ span > < span class ="o "> ::</ span > < span class ="n "> options</ span > < span class ="n "> options</ span > < span class ="p "> (</ span > < span class ="n "> handler</ span > < span class ="p "> );</ span >
674677< span class ="n "> options</ span > < span class ="p "> .</ span > < span class ="n "> thread_pool</ span > < span class ="p "> (</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> make_shared</ span > < span class ="o "> <</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> network</ span > < span class ="o "> ::</ span > < span class ="n "> utils</ span > < span class ="o "> ::</ span > < span class ="n "> thread_pool</ span > < span class ="o "> ></ span > < span class ="p "> (</ span > < span class ="mi "> 2</ span > < span class ="p "> ));</ span >
675- < span class ="n "> http_server</ span > < span class ="nf "> server</ span > < span class ="p "> (</ span > < span class ="n "> options</ span > < span class ="p "> .</ span > < span class ="n "> address</ span > < span class ="p "> (</ span > < span class ="s "> "127.0.0.1"</ span > < span class ="p "> ).</ span > < span class ="n "> port</ span > < span class ="p "> (</ span > < span class ="s "> "8000 "</ span > < span class ="p "> ).</ span > < span class ="n "> context</ span > < span class ="p "> (</ span > < span class ="n "> ctx</ span > < span class ="p "> ));</ span >
678+ < span class ="n "> http_server</ span > < span class ="nf "> server</ span > < span class ="p "> (</ span > < span class ="n "> options</ span > < span class ="p "> .</ span > < span class ="n "> address</ span > < span class ="p "> (</ span > < span class ="s "> "127.0.0.1"</ span > < span class ="p "> ).</ span > < span class ="n "> port</ span > < span class ="p "> (</ span > < span class ="s "> "8442 "</ span > < span class ="p "> ).</ span > < span class ="n "> context</ span > < span class ="p "> (</ span > < span class ="n "> ctx</ span > < span class ="p "> ));</ span >
676679</ pre > </ div >
677680</ div >
678- < div class ="highlight-c++ "> < div class ="highlight "> < pre > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> string</ span > < span class ="n "> get_password</ span > < span class ="p "> ()</ span > < span class ="k "> const</ span >
679- < span class ="p "> {</ span >
680- < span class ="k "> return</ span > < span class ="s "> "test"</ span > < span class ="p "> ;</ span >
681+ < div class ="highlight-c++ "> < div class ="highlight "> < pre > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> string</ span > < span class ="n "> password_callback</ span > < span class ="p "> (</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="kt "> size_t</ span > < span class ="n "> max_length</ span > < span class ="p "> ,</ span > < span class ="n "> boost</ span > < span class ="o "> ::</ span > < span class ="n "> asio</ span > < span class ="o "> ::</ span > < span class ="n "> ssl</ span > < span class ="o "> ::</ span > < span class ="n "> context_base</ span > < span class ="o "> ::</ span > < span class ="n "> password_purpose</ span > < span class ="n "> purpose</ span > < span class ="p "> )</ span > < span class ="p "> {</ span >
682+ < span class ="k "> return</ span > < span class ="n "> std</ span > < span class ="o "> ::</ span > < span class ="n "> string</ span > < span class ="p "> (</ span > < span class ="s "> "test"</ span > < span class ="p "> );</ span >
681683< span class ="p "> }</ span >
682684</ pre > </ div >
683685</ div >