public byte[] generatePremasterSecret() throws IOException {
    if (agreementCredentials != null) {
      return agreementCredentials.generateAgreement(dhAgreeServerPublicKey);
    }

    return calculateDHBasicAgreement(dhAgreeServerPublicKey, dhAgreeClientPrivateKey);
  }
  public byte[] generatePremasterSecret() throws IOException {
    if (agreementCredentials != null) {
      return agreementCredentials.generateAgreement(dhAgreePublicKey);
    }

    if (dhAgreePrivateKey != null) {
      return TlsDHUtils.calculateDHBasicAgreement(dhAgreePublicKey, dhAgreePrivateKey);
    }

    throw new TlsFatalAlert(AlertDescription.internal_error);
  }