anchor.diff:  lInlgrHXG2tlv4/QNCXmXBQeUBkVM+4EXOl2ZciEvFv2zAlkUig/CUcLGo/OwsJV
   c8o7MMjRcCH7fDi4BIAzdEKdDYB7uEqnGJgn
   -----END DH PARAMETERS-----"
  +//TODO validation add q to this blob.
   
   (* ------------------------------------------------------------------------ *)
   let save_params (stream : Stream) (dh : dhparams) =
  
positive.code: //TODO validation: also get q out using dhparams.Q
  
  (* ------------------------------------------------------------------------ *)
  let gen_key (dh : dhparams) : skey * pkey =
      let dhparams = new DHParameters(new BigInteger(1, cbytes dh.p), new BigInteger(1, cbytes dh.g)) in
      let kparams  = new DHKeyGenerationParameters(new SecureRandom(), dhparams) in
  
negative.code: 
      { p = abytes (DerInteger.GetInstance(obj.Item(0)).PositiveValue.ToByteArrayUnsigned()) ;
        g = abytes (DerInteger.GetInstance(obj.Item(1)).PositiveValue.ToByteArrayUnsigned()) }
        //TODO validation try to read also q, otherwise set it to None.
  
  let load_params_from_file (file : string) : dhparams option =
      let filestream = new FileStream(file, FileMode.Open, FileAccess.Read) in
  