`sig
type parameters = { p : string; g : string; privlen : int; }
val new_parameters :
?rng:Cryptokit.Random.rng ->
?privlen:int -> int -> Cryptokit.DH.parameters
type private_secret
val private_secret :
?rng:Cryptokit.Random.rng ->
Cryptokit.DH.parameters -> Cryptokit.DH.private_secret
val message :
Cryptokit.DH.parameters -> Cryptokit.DH.private_secret -> string
val shared_secret :
Cryptokit.DH.parameters ->
Cryptokit.DH.private_secret -> string -> string
val derive_key : ?diversification:string -> string -> int -> string
end`