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