2025-09-13 15:56:19 +02:00
|
|
|
open Bos.OS
|
|
|
|
|
open Syntax
|
|
|
|
|
open Crypto
|
|
|
|
|
|
|
|
|
|
let read fname =
|
2025-12-03 16:19:11 +01:00
|
|
|
let* b = File.exists fname |> Syntax.unwrap_err_msg in
|
2025-09-13 15:56:19 +02:00
|
|
|
match b with
|
|
|
|
|
| false -> Ok None
|
|
|
|
|
| true ->
|
2025-12-03 16:19:11 +01:00
|
|
|
let+ content = File.read fname |> Syntax.unwrap_err_msg in
|
2025-09-13 15:56:19 +02:00
|
|
|
Some content
|
|
|
|
|
|
2025-12-03 16:19:11 +01:00
|
|
|
let write_eddsa fname priv =
|
|
|
|
|
EddsaPrivateKey.to_octets priv |> File.write fname |> Syntax.unwrap_err_msg
|
2025-09-13 15:56:19 +02:00
|
|
|
|
2025-12-03 16:19:11 +01:00
|
|
|
let write_rsa fname priv =
|
|
|
|
|
RsaPrivateKey.to_octets priv |> File.write fname |> Syntax.unwrap_err_msg
|
2025-09-13 15:56:19 +02:00
|
|
|
|
2025-12-03 16:19:11 +01:00
|
|
|
let read_eddsa fname =
|
|
|
|
|
let* opt = read fname in
|
2025-09-13 15:56:19 +02:00
|
|
|
match opt with
|
|
|
|
|
| None -> Ok None
|
2025-12-03 16:19:11 +01:00
|
|
|
| Some data -> (
|
|
|
|
|
EddsaPrivateKey.of_octets data |> function
|
|
|
|
|
| Error e -> Error e
|
|
|
|
|
| Ok v -> Ok (Some v))
|
2025-09-13 15:56:19 +02:00
|
|
|
|
2025-12-03 16:19:11 +01:00
|
|
|
let read_rsa fname =
|
|
|
|
|
let* opt = read fname in
|
2025-09-13 15:56:19 +02:00
|
|
|
match opt with
|
|
|
|
|
| None -> Ok None
|
2025-12-03 16:19:11 +01:00
|
|
|
| Some data -> (
|
|
|
|
|
RsaPrivateKey.of_octets data |> function
|
|
|
|
|
| Error e -> Error e
|
|
|
|
|
| Ok v -> Ok (Some v))
|