anchor.diff:  
       { 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
  
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: lInlgrHXG2tlv4/QNCXmXBQeUBkVM+4EXOl2ZciEvFv2zAlkUig/CUcLGo/OwsJV
  c8o7MMjRcCH7fDi4BIAzdEKdDYB7uEqnGJgn
  -----END DH PARAMETERS-----"
  //TODO validation add q to this blob.
  
  (* ------------------------------------------------------------------------ *)
  let save_params (stream : Stream) (dh : dhparams) =
  