From d9b7f8f0ed2befcd0bbfa80c84c6a89e190ff481 Mon Sep 17 00:00:00 2001 From: Tobias Kellner Date: Wed, 7 Oct 2015 06:17:42 +0200 Subject: Add keystore signing --- .../asit/pdfover/gui/workflow/states/KSState.java | 113 +++++++++++++++++++++ .../gui/workflow/states/PrepareSigningState.java | 6 +- 2 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/KSState.java (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/KSState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/KSState.java new file mode 100644 index 00000000..1072942c --- /dev/null +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/KSState.java @@ -0,0 +1,113 @@ +/* + * Copyright 2012 by A-SIT, Secure Information Technology Center Austria + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://joinup.ec.europa.eu/software/page/eupl + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + */ +package at.asit.pdfover.gui.workflow.states; + +// Imports +import org.eclipse.swt.SWT; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.asit.pdfover.gui.MainWindow.Buttons; +import at.asit.pdfover.gui.MainWindowBehavior; +import at.asit.pdfover.gui.controls.Dialog.BUTTONS; +import at.asit.pdfover.gui.controls.ErrorDialog; +import at.asit.pdfover.gui.utils.Messages; +import at.asit.pdfover.gui.workflow.StateMachine; +import at.asit.pdfover.gui.workflow.Status; +import at.asit.pdfover.signator.SignatureException; +import at.asit.pdfover.signator.SigningState; + +/** + * Logical state for performing the BKU Request to a local BKU + */ +public class KSState extends State { + + /** + * SLF4J Logger instance + **/ + static final Logger log = LoggerFactory.getLogger(KSState.class); + + /** + * Constructor + * @param stateMachine the StateMachine + */ + public KSState(StateMachine stateMachine) { + super(stateMachine); + } + + /* + * (non-Javadoc) + * + * @see + * at.asit.pdfover.gui.workflow.WorkflowState#update(at.asit.pdfover.gui + * .workflow.Workflow) + */ + @Override + public void run() { + Status status = getStateMachine().getStatus(); + + SigningState signingState = status.getSigningState(); + + try { + signingState.setKSSigner("D:/Downloads/test.p12", "ecc_test", "123456", "123456", "PKCS12"); + } catch (SignatureException e) { + log.error("Error loading keystore", e); //$NON-NLS-1$ + ErrorDialog dialog = new ErrorDialog( + getStateMachine().getGUIProvider().getMainShell(), + Messages.getString("error.KeyStore"), //$NON-NLS-1$ + BUTTONS.RETRY_CANCEL); + if (dialog.open() != SWT.RETRY) { + //getStateMachine().exit(); + this.setNextState(new BKUSelectionState(getStateMachine())); + return; + } + return; + } + + // OK + this.setNextState(new at.asit.pdfover.gui.workflow.states.SigningState(getStateMachine())); + } + + /* + * (non-Javadoc) + * + * @see at.asit.pdfover.gui.workflow.states.State#cleanUp() + */ + @Override + public void cleanUp() { + // No composite - no cleanup necessary + } + + /* + * (non-Javadoc) + * + * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior() + */ + @Override + public void updateMainWindowBehavior() { + MainWindowBehavior behavior = getStateMachine().getStatus() + .getBehavior(); + behavior.reset(); + behavior.setActive(Buttons.OPEN, true); + behavior.setActive(Buttons.POSITION, true); + behavior.setActive(Buttons.SIGN, true); + } + + @Override + public String toString() { + return this.getClass().getName(); + } +} diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java index 21664d85..45636568 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java @@ -235,10 +235,12 @@ public class PrepareSigningState extends State { // We got the Request set it into status and move on to next state ... status.setSigningState(this.signingState); - if (getStateMachine().getStatus().getBKU() == BKUs.LOCAL) { + if (status.getBKU() == BKUs.LOCAL) { this.setNextState(new LocalBKUState(getStateMachine())); - } else if (getStateMachine().getStatus().getBKU() == BKUs.MOBILE) { + } else if (status.getBKU() == BKUs.MOBILE) { this.setNextState(new MobileBKUState(getStateMachine())); + } else if (status.getBKU() == BKUs.KS) { + this.setNextState(new KSState(getStateMachine())); } else { log.error("Invalid selected BKU Value \"NONE\" in PrepareSigningState!"); //$NON-NLS-1$ this.setNextState(new BKUSelectionState(getStateMachine())); -- cgit v1.2.3