CryptoController.java
package sk.iway.iwcm.components.crypto;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import sk.iway.iwcm.*;
import sk.iway.iwcm.users.UsersDB;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* Zakladny controller pre spravu sifrovacich klucov
* [#26639]JPA - SIFROVANIE DAT
*/
@Controller
@RequestMapping("/components/crypto/")
@PreAuthorize("@WebjetSecurityService.isAdmin()")
public class CryptoController
{
@GetMapping("admin/keymanagement")
public String generateKeys()
{
return "/components/crypto/admin_keymanagement";
}
@GetMapping("admin/keymanagement/generate")
public String generateKeys(Model model, HttpSession session)
{
Identity user = UsersDB.getCurrentUser(session);
//npe na user neosetrujem, padne to do Exception a tam sa zaznamena chyba
try {
CryptoFactory cryptoFactory = new CryptoFactory();
CryptoKeys generatedKeys = cryptoFactory.generateKeys(user.getLogin());
model.addAttribute("generatedKeys", generatedKeys);
} catch (Exception ex) {
Logger.error(CryptoController.class, "Error generating keys", ex);
model.addAttribute("errorText", "Error generating keys: "+ex.getMessage());
return "/components/maybeError";
}
return "/components/crypto/admin_keymanagement";
}
/**
* Nastavy zadany kluc do session pouzivatela.
* @param key
* @param model
* @param request
* @return
*/
@PostMapping("admin/keymanagement/setkey")
public String setKey(String key, Model model, HttpServletRequest request)
{
CryptoFactory cryptoFactory = new CryptoFactory();
boolean success = cryptoFactory.setPrivateKeyToSession(key, request.getSession());
model.addAttribute("keySetToSession", Boolean.valueOf(success));
return "/components/crypto/admin_keymanagement";
}
// /**
// * Metoda ktora je mozna pouzit iba pri hybridnych klucoch. Z privatneho kluca mozem znova vygenerovat verejny kluc.
// * @param key
// * @param model
// * @return
// */
// @PostMapping("admin/keymanagement/generate/public")
// public String generateKeys(String key, Model model) {
// KeysetHandle privateKey = CryptoToolsV2.getInstance().loadPrivateKeyBase64(key);
// KeysetHandle publicKey = null;
// String prefix = CryptoFactory.getPrefix(key);
// try {
// publicKey = privateKey.getPublicKeysetHandle();
// } catch (Exception ex) {
// Logger.error(CryptoController.class, "Error generating keys", ex);
// model.addAttribute("errorText", "Error generating keys: "+ex.getMessage());
// return "/components/maybeError";
// }
//// CryptoKeys generatedKeys = new CryptoKeys(null, prefix + ":" + CryptoToolsV2.getInstance().getKeyBase64(publicKey), prefix + ":" + CryptoToolsV2.getInstance().getKeyBase64(privateKey));
//// model.addAttribute("generatedKeys", generatedKeys);
// return "/components/crypto/admin_keymanagement";
// }
/*private boolean isCryptoAlg() {
return "v2".equalsIgnoreCase(Constants.getString("cryptoAlg"));
}*/
}