nocrypto
exception Invalid_public_key
type group = {
  1. p : Z.t;
  2. gg : Z.t;
  3. q : Z.t option;
}
type secret = private {
  1. x : Z.t;
}
val modulus_size : group -> int
val key_of_secret : group -> s:Cstruct.t -> secret * Cstruct.t
val gen_key : ?g:Rng.g -> ?bits:int -> group -> secret * Cstruct.t
val shared : group -> secret -> Cstruct.t -> Cstruct.t
val gen_group : ?g:Rng.g -> int -> group
module Group : sig ... end
val group_of_sexp : Sexplib.Sexp.t -> group
val sexp_of_group : group -> Sexplib.Sexp.t
val secret_of_sexp : Sexplib.Sexp.t -> secret
val sexp_of_secret : secret -> Sexplib.Sexp.t