nocrypto
exception Insufficient_key
type pub = {
  1. e : Z.t;
  2. n : Z.t;
}
type priv = {
  1. e : Z.t;
  2. d : Z.t;
  3. n : Z.t;
  4. p : Z.t;
  5. q : Z.t;
  6. dp : Z.t;
  7. dq : Z.t;
  8. q' : Z.t;
}
type mask = [
  1. | `No
  2. | `Yes
  3. | `Yes_with of Rng.g
]
val pub_bits : pub -> int
val priv_bits : priv -> int
val priv_of_primes : e:Z.t -> p:Z.t -> q:Z.t -> priv
val pub_of_priv : priv -> pub
val encrypt : key:pub -> Cstruct.t -> Cstruct.t
val decrypt : ?mask:mask -> key:priv -> Cstruct.t -> Cstruct.t
val generate : ?g:Rng.g -> ?e:Z.t -> int -> priv
module PKCS1 : sig ... end
module OAEP (H : Hash.S) : sig ... end
module PSS (H : Hash.S) : sig ... end
val pub_of_sexp : Sexplib.Sexp.t -> pub
val sexp_of_pub : pub -> Sexplib.Sexp.t
val priv_of_sexp : Sexplib.Sexp.t -> priv
val sexp_of_priv : priv -> Sexplib.Sexp.t