sig
type priv = { p : Z.t; q : Z.t; gg : Z.t; x : Z.t; y : Z.t; }
type pub = { p : Z.t; q : Z.t; gg : Z.t; y : Z.t; }
type keysize =
[ `Exactly of int * int | `Fips1024 | `Fips2048 | `Fips3072 ]
type mask = [ `No | `Yes | `Yes_with of Nocrypto.Rng.g ]
val pub_of_priv : Nocrypto.Dsa.priv -> Nocrypto.Dsa.pub
val generate :
?g:Nocrypto.Rng.g -> Nocrypto.Dsa.keysize -> Nocrypto.Dsa.priv
val sign :
?mask:Nocrypto.Dsa.mask ->
?k:Z.t -> key:Nocrypto.Dsa.priv -> Cstruct.t -> Cstruct.t * Cstruct.t
val verify :
key:Nocrypto.Dsa.pub -> Cstruct.t * Cstruct.t -> Cstruct.t -> bool
val massage : key:Nocrypto.Dsa.pub -> Cstruct.t -> Cstruct.t
module K_gen :
functor (H : Hash.S) ->
sig val generate : key:Nocrypto.Dsa.priv -> Cstruct.t -> Z.t end
val pub_of_sexp : Sexplib.Sexp.t -> Nocrypto.Dsa.pub
val sexp_of_pub : Nocrypto.Dsa.pub -> Sexplib.Sexp.t
val priv_of_sexp : Sexplib.Sexp.t -> Nocrypto.Dsa.priv
val sexp_of_priv : Nocrypto.Dsa.priv -> Sexplib.Sexp.t
end