public static void main(String[] args) {

    boolean bOk = parseCmdLine(args);

    String userCertFile = "";
    String userKeyFile = "";
    String userCertReqFile = "";
    if (bOk) {

      // Get default location of cert.
      CoGProperties props = CoGProperties.getDefault();

      // If no alternate directory specified.
      if (certDir == null) {
        userCertFile = props.getUserCertFile();
        userKeyFile = props.getUserKeyFile();
        // Get root dir of default cert location.
        int pos = userKeyFile.lastIndexOf(File.separator);
        certDir = userKeyFile.substring(0, pos + 1);
      } else {
        // If alternate directory specified set cert locations.
        if (certDir.endsWith(File.separator) == false) {
          certDir += File.separator;
        }
        userCertFile = certDir + prefix + "cert.pem";
        userKeyFile = certDir + prefix + "key.pem";
      }

      // Cert request file name.
      userCertReqFile = userCertFile.substring(0, userCertFile.length() - 4) + "_request.pem";
    }

    File fDir = null;
    fDir = new File(certDir);
    if (bOk) {
      // Create dir if does not exists.
      if (!fDir.exists()) {
        fDir.mkdir();
      }

      // Make sure directory exists.
      if (!fDir.exists() || !fDir.isDirectory()) {
        System.out.println("The directory " + certDir + " does not exists.");
        bOk = false;
      }
    }

    // Make sure we can write to it.
    if (bOk) {
      if (!fDir.canWrite()) {
        System.out.println("Can't write to " + certDir);
        bOk = false;
      }
    }

    // Check not to overwrite any of these files.
    if (bOk) {
      if (force == false) {
        boolean bFileExists = false;
        File f = new File(userKeyFile);
        if (f.exists()) {
          System.out.println(userKeyFile + " exists");
          bFileExists = true;
        }
        f = new File(userCertFile);
        if (f.exists()) {
          System.out.println(userCertFile + " exists");
          bFileExists = true;
        }
        f = new File(userCertReqFile);
        if (f.exists()) {
          System.out.println(userCertReqFile + " exists");
          bFileExists = true;
        }

        if (bFileExists) {
          System.out.println("If you wish to overwrite, run the script again with -force.");
          bOk = false;
        }
      }
    }

    String password = "";
    if (bOk && !noPswd) {
      // Get password from user.
      bOk = false;
      int attempts = 0;

      System.out.println(message);

      while (bOk == false && attempts < 3) {
        password = Util.getInput("Enter PEM pass phrase: ");
        String password2 = Util.getInput("Verify password Enter PEM pass phrase: ");
        if (password.compareTo(password2) != 0) {
          System.out.println("Verify failure");
        } else {
          if (password.length() < 4) {
            System.out.println("phrase is too short, needs to be at least 4 chars");
          } else {
            bOk = true;
          }
        }
        attempts++;
      }
    }

    // Generate cert request.
    if (bOk) {

      try {
        System.out.println("writing new private key to " + userKeyFile);
        genCertificateRequest(
            cn, "*****@*****.**", password, userKeyFile, userCertFile, userCertReqFile);
      } catch (Exception e) {
        System.out.println("error: " + e);
        e.printStackTrace();
      }
    }
  }