@@ -27,7 +27,7 @@ module Make (F : Mirage_flow.S) = struct
27
27
| `Write_closed of Tls.Engine .state
28
28
| `Closed
29
29
| `Error of error ] ;
30
- mutable linger : Cstruct .t list ;
30
+ mutable linger : string list ;
31
31
}
32
32
33
33
let half_close state mode =
@@ -51,7 +51,7 @@ module Make (F : Mirage_flow.S) = struct
51
51
let tls_fail f = `Error (`Tls_failure f)
52
52
53
53
let write_flow flow buf =
54
- F. write flow.flow buf >> = function
54
+ F. write flow.flow ( Cstruct. of_string buf) >> = function
55
55
| Ok _ as o -> Lwt. return o
56
56
| Error `Closed ->
57
57
flow.state < - half_close flow.state `write ;
@@ -70,14 +70,14 @@ module Make (F : Mirage_flow.S) = struct
70
70
( match resp with
71
71
| None -> Lwt. return @@ Ok ()
72
72
| Some buf -> write_flow flow buf) >> = fun _ ->
73
- Lwt. return @@ `Ok data
73
+ Lwt. return @@ `Ok ( Option. map Cstruct. of_string data)
74
74
| Error (fail , `Response resp ) ->
75
75
let reason = match fail with
76
76
| `Alert a -> tls_alert a
77
77
| f -> tls_fail f
78
78
in
79
79
flow.state < - reason ;
80
- F. write flow.flow resp >> = fun _ ->
80
+ F. write flow.flow ( Cstruct. of_string resp) >> = fun _ ->
81
81
Lwt. return reason
82
82
in
83
83
match flow.state with
@@ -92,7 +92,7 @@ module Make (F : Mirage_flow.S) = struct
92
92
flow.state < - half_close flow.state `read ;
93
93
Lwt. return `Eof
94
94
| Ok `Data buf -> match flow.state with
95
- | `Active tls | `Write_closed tls -> handle tls buf
95
+ | `Active tls | `Write_closed tls -> handle tls ( Cstruct. to_string buf)
96
96
| `Read_closed _ | `Closed -> Lwt. return `Eof
97
97
| `Error _ as e -> Lwt. return e
98
98
@@ -106,13 +106,15 @@ module Make (F : Mirage_flow.S) = struct
106
106
| `Error e -> Lwt. return @@ Error e )
107
107
| bufs ->
108
108
flow.linger < - [] ;
109
- Lwt. return @@ Ok (`Data (Cstruct. concat @@ List. rev bufs))
109
+ let str = String. concat " " (List. rev bufs) in
110
+ Lwt. return @@ Ok (`Data (Cstruct. of_string str))
110
111
111
112
let writev flow bufs =
112
113
match flow.state with
113
114
| `Closed | `Write_closed _ -> Lwt. return @@ Error `Closed
114
115
| `Error e -> Lwt. return @@ Error (e :> write_error )
115
116
| `Active tls | `Read_closed tls ->
117
+ let bufs = List. map Cstruct. to_string bufs in
116
118
match Tls.Engine. send_application_data tls bufs with
117
119
| Some (tls , answer ) ->
118
120
flow.state < - `Active tls ;
@@ -138,7 +140,7 @@ module Make (F : Mirage_flow.S) = struct
138
140
(* read_react re-throws *)
139
141
read_react flow >> = function
140
142
| `Ok mbuf ->
141
- flow.linger < - Option. to_list mbuf @ flow.linger ;
143
+ flow.linger < - Option. ( to_list (map Cstruct. to_string mbuf)) @ flow.linger ;
142
144
drain_handshake flow
143
145
| `Error e -> Lwt. return @@ Error (e :> write_error )
144
146
| `Eof -> Lwt. return @@ Error `Closed
@@ -273,23 +275,23 @@ module X509 (KV : Mirage_kv.RO) (C: Mirage_clock.PCLOCK) = struct
273
275
| None -> Lwt. return None
274
276
| Some filename ->
275
277
read kv (Mirage_kv.Key. v filename) >> = fun data ->
276
- err_fail pp_msg (X509.CRL. decode_der data) > |= fun crl ->
278
+ err_fail pp_msg (X509.CRL. decode_der ( Cstruct. to_string data) ) > |= fun crl ->
277
279
Some [ crl ]
278
280
279
281
let authenticator ?allowed_hashes ?crl kv =
280
282
let time () = Some (Ptime. v (C. now_d_ps () )) in
281
283
let now = Ptime. v (C. now_d_ps () ) in
282
- read kv ca_roots_file >> =
284
+ read kv ca_roots_file > |= Cstruct. to_string > >=
283
285
decode_or_fail X509.Certificate. decode_pem_multiple >> = fun cas ->
284
286
let ta = X509.Validation. valid_cas ~time: now cas in
285
287
read_crl kv crl > |= fun crls ->
286
288
X509.Authenticator. chain_of_trust ?crls ?allowed_hashes ~time ta
287
289
288
290
let certificate kv =
289
291
let read name =
290
- read kv (Mirage_kv.Key. v (name ^ " .pem" )) >> =
292
+ read kv (Mirage_kv.Key. v (name ^ " .pem" )) > |= Cstruct. to_string > >=
291
293
decode_or_fail X509.Certificate. decode_pem_multiple >> = fun certs ->
292
- read kv (Mirage_kv.Key. v (name ^ " .key" )) >> =
294
+ read kv (Mirage_kv.Key. v (name ^ " .key" )) > |= Cstruct. to_string > >=
293
295
decode_or_fail X509.Private_key. decode_pem > |= fun pk ->
294
296
(certs, pk)
295
297
in function | `Default -> read default_cert
0 commit comments