@Security.Authenticated(SignedIn.class) public Result generateKey(String applicationId) throws IOException { Logger.info(String.format("Generating new key pair for %s", applicationId)); KeyPair keyPair = keyPairGenerator.genKeyPair(); Application app = Application.find.byId(applicationId); app.key = keyPair.getPublic().getEncoded(); app.save(); String filename = "privatekey-" + applicationId + ".pem"; String filepath = "generated_keys/" + filename; File pemfile = new File(filepath); pemfile.getParentFile().mkdirs(); PemObject pemObject = new PemObject(PEM_FILE_HEADER, keyPair.getPrivate().getEncoded()); PemWriter writer = new PemWriter(new FileWriter(pemfile)); writer.writeObject(pemObject); writer.flush(); writer.close(); response().setContentType("application/x-download"); response().setHeader("Content-disposition", "attachment; filename=" + filename); return ok(pemfile); }