Skip to content

Commit 74c8221

Browse files
authored
Tls: in Config.{client,server} avoid raising an exception (#502)
* Tls: in Config.{client,server} avoid raising an exception Instead, a result value is returned. Addresses #411
1 parent f89d107 commit 74c8221

24 files changed

+260
-202
lines changed

async/examples/test_client.ml

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ open! Core
22
open! Async
33
open Deferred.Or_error.Let_syntax
44

5-
let config = Tls.Config.client ~authenticator:(fun ?ip:_ ~host:_ _ -> Ok None) ()
5+
let config = match Tls.Config.client ~authenticator:(fun ?ip:_ ~host:_ _ -> Ok None) () with
6+
| Ok cfg -> cfg
7+
| Error `Msg msg -> invalid_arg msg
68

79
let test_client () =
810
let host = "127.0.0.1" in

async/examples/test_server.ml

+9-6
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@ let serve_tls ~low_level port handler =
1212
Tls_async.X509_async.Private_key.of_pem_file server_key |> Deferred.Or_error.ok_exn
1313
in
1414
let config =
15-
Tls.Config.(
16-
server
17-
~version:(`TLS_1_0, `TLS_1_2)
18-
~certificates:(`Single (certificate, priv_key))
19-
~ciphers:Ciphers.supported
20-
())
15+
match Tls.Config.(
16+
server
17+
~version:(`TLS_1_0, `TLS_1_2)
18+
~certificates:(`Single (certificate, priv_key))
19+
~ciphers:Ciphers.supported
20+
())
21+
with
22+
| Ok cfg -> cfg
23+
| Error `Msg msg -> invalid_arg msg
2124
in
2225
let where_to_listen = Tcp.Where_to_listen.of_port port in
2326
let on_handler_error = `Ignore in

bench/speed.ml

+10-3
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,18 @@ type state =
6262
; client_out : int
6363
; direction : [ `To_server | `To_client ] }
6464

65+
let get_ok = function
66+
| Ok cfg -> cfg
67+
| Error `Msg msg -> invalid_arg msg
68+
6569
let make ?groups ~cipher ~digest ~key version direction =
6670
let cert = cert ~digest ~key in
67-
let client_cfg = Tls.Config.client ?groups ~version:(version, version)
68-
~ciphers:[ cipher ] ~authenticator ()
69-
and server_cfg = Tls.Config.server ~certificates:(`Single ([ cert ], key)) () in
71+
let client_cfg =
72+
get_ok (Tls.Config.client ?groups ~version:(version, version)
73+
~ciphers:[ cipher ] ~authenticator ())
74+
and server_cfg =
75+
get_ok (Tls.Config.server ~certificates:(`Single ([ cert ], key)) ())
76+
in
7077
let client_state, client_out = Tls.Engine.client client_cfg
7178
and server_state = Tls.Engine.server server_cfg in
7279
{ flow= To_server (client_state, server_state, Some client_out)

eio/tests/fuzz.ml

+2-2
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ end = struct
209209
let null_auth ?ip:_ ~host:_ _ = Ok None
210210

211211
let client =
212-
Tls.Config.client ~authenticator:null_auth ()
212+
Result.get_ok (Tls.Config.client ~authenticator:null_auth ())
213213

214214
let read_file path =
215215
let ch = open_in_bin path in
@@ -222,7 +222,7 @@ end = struct
222222
let certs = Result.get_ok (X509.Certificate.decode_pem_multiple (read_file "server.pem")) in
223223
let pk = Result.get_ok (X509.Private_key.decode_pem (read_file "server.key")) in
224224
let certificates = `Single (certs, pk) in
225-
Tls.Config.(server ~version:(`TLS_1_0, `TLS_1_3) ~certificates ~ciphers:Ciphers.supported ())
225+
Result.get_ok Tls.Config.(server ~version:(`TLS_1_0, `TLS_1_3) ~certificates ~ciphers:Ciphers.supported ())
226226
end
227227

228228
let dispatch_commands ~to_server ~to_client actions =

eio/tests/tls_eio.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ let test_client ~net (host, service) =
3838
(Result.bind (Domain_name.of_string host) Domain_name.host)
3939
in
4040
Tls_eio.client_of_flow
41-
Tls.Config.(client ~version:(`TLS_1_0, `TLS_1_3) ?cached_ticket:!mypsk ~ticket_cache ~authenticator ~ciphers:Ciphers.supported ())
41+
(Result.get_ok Tls.Config.(client ~version:(`TLS_1_0, `TLS_1_3) ?cached_ticket:!mypsk ~ticket_cache ~authenticator ~ciphers:Ciphers.supported ()))
4242
?host socket
4343
in
4444
let req = String.concat "\r\n" [
@@ -68,7 +68,7 @@ let server_config dir =
6868
~priv_key:(dir / "server-ec.key")
6969
in
7070
let certificates = `Multiple [ certificate ; ec_certificate ] in
71-
Tls.Config.(server ~version:(`TLS_1_0, `TLS_1_3) ~certificates ~ciphers:Ciphers.supported ())
71+
Result.get_ok Tls.Config.(server ~version:(`TLS_1_0, `TLS_1_3) ~certificates ~ciphers:Ciphers.supported ())
7272
7373
let serve_ssl ~config server_s callback =
7474
Switch.run @@ fun sw ->

0 commit comments

Comments
 (0)