/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package tr.gov.turkiye.esignuidesk.controller; import iaik.pkcs.pkcs11.TokenException; import iaik.pkcs.pkcs11.wrapper.PKCS11Exception; import java.util.logging.Level; import java.util.logging.Logger; import tr.gov.turkiye.esign.core.SmartCard; import tr.gov.turkiye.esign.exception.SmartCardException; import tr.gov.turkiye.esign.manager.LibraryManager; import tr.gov.turkiye.esign.statics.Modules; import tr.gov.turkiye.esignuidesk.config.Config; import tr.gov.turkiye.esignuidesk.data.UserData; import tr.gov.turkiye.esignuidesk.view.pane.CardSelectScreen; import tr.gov.turkiye.esignuidesk.view.pane.CertificateShowScreen; import tr.gov.turkiye.esignuidesk.view.pane.DonePane; import tr.gov.turkiye.esignuidesk.view.pane.PinPane; /** * * @author iakpolat */ public class LogicManager { public static SmartCard smartCard; /** * Handles screen termination and transition. * * @param screenId */ public static void done(int screenId) { if(screenId==Config.CARD_SELECT_SCREEN_ID) { //goto screen 2 try { LibraryManager.installAndLoadPKCS11Wrapper(); smartCard = new SmartCard(Modules.getModuleLibraryName(UserData.slcCardType)); UserData.certs = smartCard.getCertificateList(); GUIManager.changeScreen(new CertificateShowScreen()); } catch (final Throwable t) { LogManager.handleError(t, true, t.getMessage()); } } else if(screenId==Config.CERT_SHOW_SCREEN_ID) { //replace certifacete show screen right pane with pin pane GUIManager.replacePane(Config.certPaneName, new PinPane()); } else if(screenId==Config.PIN_PANE_ID) { //goto last screen try { /** * Sign user agreement by selected certificate. */ UserData.signedUserAgreement = smartCard.signContent(UserData.userAgreement.getBytes(), UserData.pinPass, UserData.slcCertIndex); UserData.pinPass = null; GUIManager.changeScreen(new DonePane()); } catch(Throwable err) { if(err instanceof PKCS11Exception) { if(err.getMessage().equals("CKR_PIN_INCORRECT")) { GUIManager.showErrMsg("Wrong Password"); } else { LogManager.handleError(err, true, null); } } else { LogManager.handleError(err, true, null); } } } else if(screenId==Config.DONE_PANE_ID) { //close app GUIManager.destroy(); } } /** * Handles cancel operations. * * @param screenId */ public static void cancel(int screenId) { if(screenId==Config.CERT_SHOW_SCREEN_ID) { try { //goto screen 1 LogicManager.smartCard.finalizeModule(); GUIManager.changeScreen(new CardSelectScreen()); } catch (SmartCardException ex) { Logger.getLogger(LogicManager.class.getName()).log(Level.SEVERE, null, ex); } } else if(screenId==Config.PIN_PANE_ID) { //goto screen 2 GUIManager.changeScreen(new CertificateShowScreen()); } else if(screenId==Config.DONE_PANE_ID) { // GUIManager.changeScreen(new PinPane()); } } }