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