summaryrefslogtreecommitdiff
path: root/pdf-over-gui/src
diff options
context:
space:
mode:
authorTobias Kellner <imcybot@gmail.com>2015-10-07 06:17:42 +0200
committerTobias Kellner <tobias.kellner@iaik.tugraz.at>2015-10-08 17:56:11 +0200
commitd9b7f8f0ed2befcd0bbfa80c84c6a89e190ff481 (patch)
treedc4eaa95debfd8c139a9ead03cf5e002b944e1e8 /pdf-over-gui/src
parent7776caf451bc69219c1455234378c919710595b4 (diff)
downloadpdf-over-d9b7f8f0ed2befcd0bbfa80c84c6a89e190ff481.tar.gz
pdf-over-d9b7f8f0ed2befcd0bbfa80c84c6a89e190ff481.tar.bz2
pdf-over-d9b7f8f0ed2befcd0bbfa80c84c6a89e190ff481.zip
Add keystore signing
Diffstat (limited to 'pdf-over-gui/src')
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java89
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/KSState.java113
-rw-r--r--pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareSigningState.java6
-rw-r--r--pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties3
-rw-r--r--pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties3
5 files changed, 171 insertions, 43 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java
index d21afcaa..8eebe02d 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/BKUSelectionComposite.java
@@ -17,7 +17,7 @@ package at.asit.pdfover.gui.composites;
// Imports
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
@@ -84,6 +84,23 @@ public class BKUSelectionComposite extends StateComposite {
}
/**
+ * Listener for keystore selection
+ */
+ private final class KSSelectionListener extends SelectionAdapter {
+ /**
+ * Empty constructor
+ */
+ public KSSelectionListener() {
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ log.debug("Setting BKU to KS"); //$NON-NLS-1$
+ setSelected(BKUs.KS);
+ }
+ }
+
+ /**
* SLF4J Logger instance
**/
static final Logger log = LoggerFactory
@@ -94,7 +111,9 @@ public class BKUSelectionComposite extends StateComposite {
private Button btnMobile;
private Button btnCard;
-
+
+ private Button btnKS;
+
/**
* Gets selected BKU type
* @return BKUS enum
@@ -122,68 +141,46 @@ public class BKUSelectionComposite extends StateComposite {
super(parent, style, state);
this.setLayout(new FormLayout());
-
+
ClickableCanvas cc_mobile = new ClickableCanvas(this, SWT.NATIVE | SWT.RESIZE);
FormData fd_cc_mobile = new FormData();
fd_cc_mobile.right = new FormAttachment(50, -5);
fd_cc_mobile.top = new FormAttachment(40, -20);
- cc_mobile.addMouseListener(new MouseListener() {
-
- @Override
- public void mouseUp(org.eclipse.swt.events.MouseEvent e) {
- // Nothing to do here
- }
-
+ cc_mobile.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(org.eclipse.swt.events.MouseEvent e) {
setSelected(BKUs.MOBILE);
}
-
- @Override
- public void mouseDoubleClick(org.eclipse.swt.events.MouseEvent e) {
- // Nothing to do here
- }
});
cc_mobile.setLayoutData(fd_cc_mobile);
-
+
Image mobile = new Image(getDisplay(), new ImageData(this.getClass().getResourceAsStream(Constants.RES_IMG_MOBILE)));
cc_mobile.setImage(mobile);
FontData[] fD_cc_mobile = cc_mobile.getFont().getFontData();
fD_cc_mobile[0].setHeight(Constants.TEXT_SIZE_BUTTON);
cc_mobile.setFont(new Font(Display.getCurrent(), fD_cc_mobile[0]));
-
+
ClickableCanvas cc_karte = new ClickableCanvas(this, SWT.NATIVE | SWT.RESIZE);
FormData fd_cc_karte = new FormData();
fd_cc_karte.left = new FormAttachment(50, 5);
fd_cc_karte.top = new FormAttachment(40, -20);
- cc_karte.addMouseListener(new MouseListener() {
-
- @Override
- public void mouseUp(org.eclipse.swt.events.MouseEvent e) {
- // Nothing to do here
- }
-
+ cc_karte.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(org.eclipse.swt.events.MouseEvent e) {
setSelected(BKUs.LOCAL);
}
-
- @Override
- public void mouseDoubleClick(org.eclipse.swt.events.MouseEvent e) {
- // Nothing to do here
- }
});
cc_karte.setLayoutData(fd_cc_karte);
-
+
Image karte = new Image(getDisplay(), new ImageData(this.getClass().getResourceAsStream(Constants.RES_IMG_CARD)));
-
+
cc_karte.setImage(karte);
FontData[] fD_cc_karte = cc_mobile.getFont().getFontData();
fD_cc_karte[0].setHeight(Constants.TEXT_SIZE_BUTTON);
cc_mobile.setFont(new Font(Display.getCurrent(), fD_cc_karte[0]));
-
+
int mobilesize = cc_mobile.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
-
+
this.btnMobile = new Button(this, SWT.NONE);
FormData fd_btnMobile = new FormData();
fd_btnMobile.top = new FormAttachment(cc_mobile, 10);
@@ -191,27 +188,36 @@ public class BKUSelectionComposite extends StateComposite {
fd_btnMobile.right = new FormAttachment(50, -5);
//fd_btnMobile.width = cc_mobile.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
this.btnMobile.setLayoutData(fd_btnMobile);
- this.btnMobile.setText(Messages.getString("bku_selection.mobile")); //$NON-NLS-1$
this.btnMobile.addSelectionListener(new MobileSelectionListener());
-
+
int btnmsize = this.btnMobile.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
-
+
fd_btnMobile.width = (btnmsize > mobilesize) ? btnmsize : mobilesize;
-
+
this.btnCard = new Button(this, SWT.NONE);
FormData fd_btnCard = new FormData();
fd_btnCard.top = new FormAttachment(cc_karte, 10);
//fd_btnMobile.left = new FormAttachment(btn_mobile, 0);
fd_btnCard.left = new FormAttachment(50, 5);
int cardsize = cc_karte.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
-
+
this.btnCard.setLayoutData(fd_btnCard);
- this.btnCard.setText(Messages.getString("bku_selection.card")); //$NON-NLS-1$
this.btnCard.addSelectionListener(new LocalSelectionListener());
-
+
int btncsize = this.btnCard.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
-
+
fd_btnCard.width = (btncsize > cardsize) ? btncsize : cardsize;
+
+ this.btnKS = new Button(this, SWT.NONE);
+ FormData fd_btnKS = new FormData();
+ fd_btnKS.top = new FormAttachment(this.btnCard, 10);
+ fd_btnKS.left = new FormAttachment(this.btnMobile, 0, SWT.LEFT);
+ fd_btnKS.right = new FormAttachment(this.btnCard, 0, SWT.RIGHT);
+
+ this.btnKS.setLayoutData(fd_btnKS);
+ this.btnKS.addSelectionListener(new KSSelectionListener());
+
+ reloadResources();
//this.pack();
}
@@ -235,5 +241,6 @@ public class BKUSelectionComposite extends StateComposite {
public void reloadResources() {
this.btnMobile.setText(Messages.getString("bku_selection.mobile")); //$NON-NLS-1$
this.btnCard.setText(Messages.getString("bku_selection.card")); //$NON-NLS-1$
+ this.btnKS.setText(Messages.getString("bku_selection.ks")); //$NON-NLS-1$
}
}
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()));
diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties
index 7502163c..9b5bd3db 100644
--- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties
+++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages.properties
@@ -1,5 +1,6 @@
#Eclipse messages class
#Fri Jun 26 16:29:30 CEST 2015
+BKU.KS=Keystore
BKU.LOCAL=Local CCE
BKU.MOBILE=Mobile CCE
BKU.NONE=no default
@@ -67,6 +68,7 @@ argument.invalid.proxypass=Proxy password argument invalid\! Usage\:
argument.invalid.proxyport=Proxy port argument invalid\! Usage\:
argument.invalid.proxyuser=Proxy username argument invalid\! Usage\:
bku_selection.card=&Card
+bku_selection.ks=&Keystore
bku_selection.mobile=&Mobile
common.AllExtension_Description=All files
common.Cancel=C&ancel
@@ -102,6 +104,7 @@ error.InvalidBKU=Invalid CCE selection. Please check.
error.InvalidLocale=Locale not valid
error.InvalidPhoneNumber=Given phone number is invalid\! Example\: +43664123456789
error.InvalidSettings=Invalid settings are still present. Please check your input.
+error.KeyStore=Error loading they keystore
error.LocalBKU=Please check if a local CCE (citizen card environment) is running\n\nYou need a CCE to access your citizen card. Further information under www.buergerkarte.at
error.MayNotBeAPDF=This may not be a PDF file
error.NoTan=No TAN entered
diff --git a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties
index 49359c64..bba89f05 100644
--- a/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties
+++ b/pdf-over-gui/src/main/resources/at/asit/pdfover/gui/messages_de.properties
@@ -1,5 +1,6 @@
#Eclipse messages class
#Fri Jun 26 18:01:09 CEST 2015
+BKU.KS=KeyStore
BKU.LOCAL=Lokale BKU
BKU.MOBILE=Handy-BKU
BKU.NONE=Keine Voreinstellung
@@ -67,6 +68,7 @@ argument.invalid.proxypass=Proxy-Passwort ung\u00FCltig\! Verwendung\:
argument.invalid.proxyport=Proxy-Port ung\u00FCltig\! Verwendung\:
argument.invalid.proxyuser=Proxy-Benutzername ung\u00FCltig\! Verwendung\:
bku_selection.card=&Karte
+bku_selection.ks=Key&Store
bku_selection.mobile=&Handy
common.AllExtension_Description=Alle Dateien
common.Cancel=&Abbrechen
@@ -102,6 +104,7 @@ error.InvalidBKU=Ung\u00FCltige BKU-Auswahl. Bitte \u00FCberpr\u00FCfen.
error.InvalidLocale=Ung\u00FCltige Sprache
error.InvalidPhoneNumber=Telefonnummer ung\u00FCltig\! Beispiel\: +43664123456789
error.InvalidSettings=Ung\u00FCltige Einstellungen vorhanden. Bitte \u00FCberpr\u00FCfen.
+error.KeyStore=Fehler beim Laden des KeyStores
error.LocalBKU=Bitte pr\u00FCfen sie, ob Ihre lokale BKU (B\u00FCrgerkartenumgebung) l\u00E4uft\n\nSie ben\u00F6tigen eine BKU, um auf Ihre B\u00FCrgerkarte zuzugreifen. Weitere Informationen unter www.buergerkarte.at
error.MayNotBeAPDF=Dies ist m\u00F6glicherweise keine PDF-Datei
error.NoTan=Keine TAN eingeben