@@ -659,25 +659,27 @@ <h2>Adding SSL support to Asynchronous Server<a class="headerlink" href="#adding
659
659
a regular Asynchronous Server (see above). Once this server is setup, SSL can be
660
660
enabled 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
661
661
used 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 >
671
674
672
675
< span class ="n "> handler_type</ span > < span class ="n "> handler</ span > < span class ="p "> ;</ span >
673
676
< 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 >
674
677
< 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 >
676
679
</ pre > </ div >
677
680
</ 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 >
681
683
< span class ="p "> }</ span >
682
684
</ pre > </ div >
683
685
</ div >
0 commit comments