1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
open Util
let output_msg keys = function
| Ssh.Msg_version v -> Cstruct.of_string (v ^ "\r\n"), keys
| msg -> Packet.encrypt keys msg
let version buf =
let* version, input_buffer = Wire.get_version buf in
match version with
| None -> Ok (None, input_buffer)
| Some v ->
let msg = Ssh.Msg_version v in
Ok (Some msg, input_buffer)
let decrypt ?(ignore_packet = false) keys buf =
let* p = Packet.decrypt keys buf in
match p with
| None -> Ok (keys, None, buf)
| Some (pkt, input_buffer, keys) ->
let* msg = Packet.to_msg pkt in
Ok (keys, (if ignore_packet then None else Some msg), input_buffer)