open Bos.OS open Syntax open Crypto let read fname = let* b = File.exists fname |> Syntax.unwrap_err_msg in match b with | false -> Ok None | true -> let+ content = File.read fname |> Syntax.unwrap_err_msg in Some content let write_eddsa fname priv = EddsaPrivateKey.to_octets priv |> File.write fname |> Syntax.unwrap_err_msg let write_rsa fname priv = RsaPrivateKey.to_octets priv |> File.write fname |> Syntax.unwrap_err_msg let read_eddsa fname = let* opt = read fname in match opt with | None -> Ok None | Some data -> ( EddsaPrivateKey.of_octets data |> function | Error e -> Error e | Ok v -> Ok (Some v)) let read_rsa fname = let* opt = read fname in match opt with | None -> Ok None | Some data -> ( RsaPrivateKey.of_octets data |> function | Error e -> Error e | Ok v -> Ok (Some v))