@@ -107,30 +107,33 @@ close(#tls_socket{ssl_socket = SSLSocket}) ->
107
107
% % @doc Prepare SSL options for direct use of ssl:connect/2 (client side)
108
108
% % The `disconnect_on_failure' option is expected to be unset or true
109
109
-spec make_ssl_opts (mongoose_tls :options ()) -> [ssl :tls_option ()].
110
- make_ssl_opts (Opts ) ->
111
- { dummy_ref , SSLOpts } = format_opts_with_ref (Opts , false ),
112
- SSLOpts .
110
+ make_ssl_opts (#{ verify_mode : = Mode } = Opts ) ->
111
+ SslOpts = format_opts (Opts , false ),
112
+ [{ verify_fun , verify_fun ( Mode )} | SslOpts ] .
113
113
114
114
% % @doc Prepare SSL options for direct use of ssl:handshake/2 (server side)
115
115
% % The `disconnect_on_failure' option is expected to be unset or true
116
116
-spec make_cowboy_ssl_opts (mongoose_tls :options ()) -> [ssl :tls_option ()].
117
- make_cowboy_ssl_opts (Opts ) ->
118
- { dummy_ref , SSLOpts } = format_opts_with_ref (Opts , fail_if_no_peer_cert ),
119
- SSLOpts .
117
+ make_cowboy_ssl_opts (#{ verify_mode : = Mode } = Opts ) ->
118
+ SslOpts = format_opts (Opts , fail_if_no_peer_cert ),
119
+ [{ verify_fun , verify_fun ( Mode )} | SslOpts ] .
120
120
121
121
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
122
122
% % local functions
123
123
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
124
124
125
125
format_opts_with_ref (Opts , FailIfNoPeerCert ) ->
126
+ SslOpts0 = format_opts (Opts , FailIfNoPeerCert ),
126
127
{Ref , VerifyFun } = verify_fun_opt (Opts ),
128
+ SslOpts = [{verify_fun , VerifyFun } | SslOpts0 ],
129
+ {Ref , SslOpts }.
130
+
131
+ format_opts (Opts , FailIfNoPeerCert ) ->
127
132
SslOpts0 = maps :to_list (maps :with (ssl_option_keys (), Opts )),
128
133
SslOpts1 = sni_opts (SslOpts0 , Opts ),
129
134
SslOpts2 = verify_opts (SslOpts1 , Opts ),
130
135
SslOpts3 = hibernate_opts (SslOpts2 , Opts ),
131
- SslOpts4 = fail_if_no_peer_cert_opts (SslOpts3 , Opts , FailIfNoPeerCert ),
132
- SslOpts = [{verify_fun , VerifyFun } | SslOpts4 ],
133
- {Ref , SslOpts }.
136
+ fail_if_no_peer_cert_opts (SslOpts3 , Opts , FailIfNoPeerCert ).
134
137
135
138
ssl_option_keys () ->
136
139
[certfile , cacertfile , ciphers , keyfile , password , versions , dhfile ].
@@ -224,8 +227,10 @@ verify_fun(none) ->
224
227
send_verification_failure (Pid , Ref , Reason ) ->
225
228
Pid ! {cert_verification_failure , Ref , Reason }.
226
229
227
- receive_verify_results (dummy_ref ) -> [];
228
- receive_verify_results (Ref ) -> receive_verify_results (Ref , []).
230
+ receive_verify_results (dummy_ref ) ->
231
+ [];
232
+ receive_verify_results (Ref ) ->
233
+ receive_verify_results (Ref , []).
229
234
230
235
receive_verify_results (Ref , Acc ) ->
231
236
receive
0 commit comments