···35353636 val derive_pubkey : privkey:bytes -> bytes
37373838+ val generate_keypair : unit -> bytes * bytes
3939+3840 val privkey_to_multikey : bytes -> string
39414042 val pubkey_to_multikey : bytes -> string
···9092 | None ->
9193 failwith "failed to derive public key"
92949595+ let generate_keypair () : bytes * bytes =
9696+ (* P256 is fine for generating a privkey for either curve,
9797+ but the accompanying public key won't work K256 *)
9898+ let open Mirage_crypto_ec.P256.Dsa in
9999+ let privkey = generate () |> fst |> priv_to_octets |> Bytes.of_string in
100100+ (privkey, derive_pubkey ~privkey)
101101+93102 let pubkey_to_multikey pubkey : string =
94103 to_multikey pubkey ~prefix:public_prefix
95104···146155 P256.raw_to_compressed pubkey
147156 | None ->
148157 failwith "failed to derive public key"
158158+159159+ let generate_keypair () : bytes * bytes =
160160+ (* don't know why but the pubkey returned by generate () fails to validate
161161+ so we derive our own *)
162162+ let open Mirage_crypto_ec.P256.Dsa in
163163+ let privkey = generate () |> fst |> priv_to_octets |> Bytes.of_string in
164164+ (privkey, derive_pubkey ~privkey)
149165150166 let pubkey_to_multikey pubkey : string =
151167 to_multikey pubkey ~prefix:public_prefix