From a52b66cf1d0a579b95cddba44fb4df0e97bf8e22 Mon Sep 17 00:00:00 2001
From: tkellner <tkellner@174cde9d-5d70-4d2a-aa98-46368bc2aaf7>
Date: Wed, 24 Jul 2013 14:57:49 +0000
Subject: Add proxy authentication

git-svn-id: https://joinup.ec.europa.eu/svn/pdf-over/trunk@465 174cde9d-5d70-4d2a-aa98-46368bc2aaf7
---
 .../main/java/at/asit/pdfover/gui/Constants.java   |   6 +
 .../composites/AdvancedConfigurationComposite.java | 213 +++++++++++++++++++--
 .../gui/composites/ConfigurationComposite.java     |   8 +
 .../gui/workflow/config/ConfigManipulator.java     |  12 ++
 .../workflow/config/ConfigOverlayManipulator.java  |  12 ++
 .../gui/workflow/config/ConfigProvider.java        |  12 ++
 .../gui/workflow/config/ConfigProviderImpl.java    | 108 +++++++++++
 .../workflow/config/ConfigurationContainer.java    |  48 +++--
 .../config/ConfigurationContainerImpl.java         |  66 +++++--
 .../workflow/config/PersistentConfigProvider.java  |  14 +-
 .../gui/workflow/states/PrepareSigningState.java   | 184 +++++++++++-------
 .../at/asit/pdfover/gui/messages.properties        |  20 +-
 .../at/asit/pdfover/gui/messages_de.properties     |  20 +-
 13 files changed, 604 insertions(+), 119 deletions(-)

(limited to 'pdf-over-gui/src')

diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java
index 4c361819..d95fd000 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Constants.java
@@ -110,6 +110,12 @@ public class Constants {
 	/** The proxy port config parameter */
 	public static final String CFG_PROXY_PORT = "PROXY_PORT"; //$NON-NLS-1$
 
+	/** The proxy username config parameter */
+	public static final String CFG_PROXY_USER = "PROXY_USER"; //$NON-NLS-1$
+
+	/** The proxy password config parameter */
+	public static final String CFG_PROXY_PASS = "PROXY_PASS"; //$NON-NLS-1$
+
 	/** The output folder config parameter */
 	public static final String CFG_OUTPUT_FOLDER = "OUTPUT_FOLDER"; //$NON-NLS-1$
 
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java
index 998e5720..20ca737d 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/AdvancedConfigurationComposite.java
@@ -91,9 +91,15 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
 	private Text txtProxyHost;
 	private ErrorMarker proxyHostErrorMarker;
 	private Label lblProxyPort;
-	Text txtProxyPort;
+	private Text txtProxyPort;
+	private ErrorMarker txtProxyPortErrorMarker;
+	private Label lblProxyUser;
+	private Text txtProxyUser;
+	private ErrorMarker proxyUserErrorMarker;
+	private Label lblProxyPass;
+	private Text txtProxyPass;
+	private ErrorMarker proxyPassErrorMarker;
 	FormData fd_txtProxyPort;
-	ErrorMarker txtProxyPortErrorMarker;
 	FormData fd_txtProxyPortErrorMarker;
 
 
@@ -410,16 +416,16 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
 		this.grpProxy.setFont(new Font(Display.getCurrent(), fD_grpProxy[0]));
 
 		this.lblProxyHost = new Label(this.grpProxy, SWT.NONE);
-		GridData gd_lblNewLabel = new GridData(SWT.LEFT, SWT.CENTER, false,
+		GridData gd_lblProxyHost = new GridData(SWT.LEFT, SWT.CENTER, false,
 				false, 1, 1);
-		gd_lblNewLabel.widthHint = 66;
-		this.lblProxyHost.setLayoutData(gd_lblNewLabel);
+		gd_lblProxyHost.widthHint = 66;
+		this.lblProxyHost.setLayoutData(gd_lblProxyHost);
 		this.lblProxyHost.setBounds(0, 0, 57, 15);
 
-		FontData[] fD_lblNewLabel = this.lblProxyHost.getFont().getFontData();
-		fD_lblNewLabel[0].setHeight(Constants.TEXT_SIZE_NORMAL);
+		FontData[] fD_lblProxyHost = this.lblProxyHost.getFont().getFontData();
+		fD_lblProxyHost[0].setHeight(Constants.TEXT_SIZE_NORMAL);
 		this.lblProxyHost.setFont(new Font(Display.getCurrent(),
-				fD_lblNewLabel[0]));
+				fD_lblProxyHost[0]));
 
 		Composite compProxyHostContainer = new Composite(this.grpProxy, SWT.NONE);
 		compProxyHostContainer.setLayout(new FormLayout());
@@ -520,6 +526,118 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
 			}
 		});
 
+		this.lblProxyUser = new Label(this.grpProxy, SWT.NONE);
+		GridData gd_lblProxyUser = new GridData(SWT.LEFT, SWT.CENTER, false,
+				false, 1, 1);
+		gd_lblProxyUser.widthHint = 80;
+		this.lblProxyUser.setLayoutData(gd_lblProxyUser);
+		this.lblProxyUser.setBounds(0, 0, 57, 15);
+
+		FontData[] fD_lblProxyUser = this.lblProxyUser.getFont().getFontData();
+		fD_lblProxyUser[0].setHeight(Constants.TEXT_SIZE_NORMAL);
+		this.lblProxyUser.setFont(new Font(Display.getCurrent(),
+				fD_lblProxyUser[0]));
+
+		Composite compProxyUserContainer = new Composite(this.grpProxy, SWT.NONE);
+		compProxyUserContainer.setLayout(new FormLayout());
+		compProxyUserContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false,
+				1, 1));
+		this.txtProxyUser = new Text(compProxyUserContainer, SWT.BORDER);
+		FormData fd_txtProxyUser = new FormData();
+		fd_txtProxyUser.right = new FormAttachment(100, -42);
+		fd_txtProxyUser.top = new FormAttachment(0);
+		fd_txtProxyUser.left = new FormAttachment(0, 5);
+
+		FontData[] fD_txtProxyUser = this.txtProxyUser.getFont().getFontData();
+		fD_txtProxyUser[0].setHeight(Constants.TEXT_SIZE_NORMAL);
+		this.txtProxyUser.setFont(new Font(Display.getCurrent(),
+				fD_txtProxyUser[0]));
+
+		this.proxyUserErrorMarker = new ErrorMarker(compProxyUserContainer, SWT.NONE, ""); //$NON-NLS-1$
+
+		FormData fd_proxyUserErrorMarker = new FormData();
+		fd_proxyUserErrorMarker.left = new FormAttachment(100, -32);
+		fd_proxyUserErrorMarker.right = new FormAttachment(100);
+		fd_proxyUserErrorMarker.top = new FormAttachment(0);
+		fd_proxyUserErrorMarker.bottom = new FormAttachment(0, 32);
+
+		this.proxyUserErrorMarker.setLayoutData(fd_proxyUserErrorMarker);
+		this.proxyUserErrorMarker.setVisible(false);
+		this.txtProxyUser.setLayoutData(fd_txtProxyUser);
+
+		this.txtProxyUser.addFocusListener(new FocusAdapter() {
+
+			@Override
+			public void focusLost(FocusEvent e) {
+				processProxyUserChanged();
+			}
+		});
+
+		this.txtProxyUser.addTraverseListener(new TraverseListener() {
+
+			@Override
+			public void keyTraversed(TraverseEvent e) {
+				if (e.detail == SWT.TRAVERSE_RETURN) {
+					processProxyUserChanged();
+				}
+			}
+		});
+
+		this.lblProxyPass = new Label(this.grpProxy, SWT.NONE);
+		this.lblProxyPass.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER,
+				false, false, 1, 1));
+		this.lblProxyPass.setBounds(0, 0, 57, 15);
+
+		FontData[] fD_lblProxyPass = this.lblProxyPass.getFont().getFontData();
+		fD_lblProxyPass[0].setHeight(Constants.TEXT_SIZE_NORMAL);
+		this.lblProxyPass.setFont(new Font(Display.getCurrent(),
+				fD_lblProxyPass[0]));
+
+		Composite compProxyPassContainer = new Composite(this.grpProxy, SWT.NONE);
+		compProxyPassContainer.setLayout(new FormLayout());
+		compProxyPassContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false,
+				1, 1));
+		this.txtProxyPass = new Text(compProxyPassContainer, SWT.PASSWORD | SWT.BORDER);
+		FormData fd_txtProxyPass = new FormData();
+		fd_txtProxyPass.right = new FormAttachment(100, -42);
+		fd_txtProxyPass.top = new FormAttachment(0);
+		fd_txtProxyPass.left = new FormAttachment(0, 5);
+
+		FontData[] fD_txtProxyPass = this.txtProxyPass.getFont().getFontData();
+		fD_txtProxyPass[0].setHeight(Constants.TEXT_SIZE_NORMAL);
+		this.txtProxyPass.setFont(new Font(Display.getCurrent(),
+				fD_txtProxyPass[0]));
+
+		this.proxyPassErrorMarker = new ErrorMarker(compProxyPassContainer, SWT.NONE, ""); //$NON-NLS-1$
+
+		FormData fd_proxyPassErrorMarker = new FormData();
+		fd_proxyPassErrorMarker.left = new FormAttachment(100, -32);
+		fd_proxyPassErrorMarker.right = new FormAttachment(100);
+		fd_proxyPassErrorMarker.top = new FormAttachment(0);
+		fd_proxyPassErrorMarker.bottom = new FormAttachment(0, 32);
+
+		this.proxyPassErrorMarker.setLayoutData(fd_proxyPassErrorMarker);
+		this.proxyPassErrorMarker.setVisible(false);
+		this.txtProxyPass.setLayoutData(fd_txtProxyPass);
+
+		this.txtProxyPass.addFocusListener(new FocusAdapter() {
+
+			@Override
+			public void focusLost(FocusEvent e) {
+				processProxyPassChanged();
+			}
+		});
+
+		this.txtProxyPass.addTraverseListener(new TraverseListener() {
+
+			@Override
+			public void keyTraversed(TraverseEvent e) {
+				if (e.detail == SWT.TRAVERSE_RETURN) {
+					processProxyPassChanged();
+				}
+			}
+		});
+
 		reloadResources();
 	}
 
@@ -634,6 +752,44 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
 		this.configurationContainer.setProxyHost(host);
 	}
 
+	void processProxyUserChanged() {
+		try {
+			this.proxyUserErrorMarker.setVisible(false);
+			plainProxyUserSetter();
+		} catch (Exception ex) {
+			this.proxyUserErrorMarker.setVisible(true);
+			this.proxyUserErrorMarker.setToolTipText(ex.getMessage());
+			log.error("processProxyUser: ", ex); //$NON-NLS-1$
+		}
+	}
+
+	/**
+	 *
+	 */
+	private void plainProxyUserSetter() {
+		String user = this.txtProxyUser.getText();
+		this.configurationContainer.setProxyUser(user);
+	}
+
+	void processProxyPassChanged() {
+		try {
+			this.proxyPassErrorMarker.setVisible(false);
+			plainProxyPassSetter();
+		} catch (Exception ex) {
+			this.proxyPassErrorMarker.setVisible(true);
+			this.proxyPassErrorMarker.setToolTipText(ex.getMessage());
+			log.error("processProxyPass: ", ex); //$NON-NLS-1$
+		}
+	}
+
+	/**
+	 *
+	 */
+	private void plainProxyPassSetter() {
+		String pass = this.txtProxyPass.getText();
+		this.configurationContainer.setProxyPass(pass);
+	}
+
 	void processProxyPortChanged() {
 		try {
 			this.txtProxyPortErrorMarker.setVisible(false);
@@ -705,7 +861,17 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
 		if (host != null) {
 			this.txtProxyHost.setText(host);
 		}
-	}
+
+		String user = this.configurationContainer.getProxyUser();
+		if (user != null) {
+			this.txtProxyUser.setText(user);
+		}
+
+		String pass = this.configurationContainer.getProxyPass();
+		if (pass != null) {
+			this.txtProxyPass.setText(pass);
+		}
+}
 
 	/*
 	 * (non-Javadoc)
@@ -737,6 +903,11 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
 			case 2:
 				this.plainProxyPortSetter();
 				// Fall through
+			case 3:
+				this.plainProxyUserSetter();
+				// Fall through
+			case 4:
+				this.plainProxyPassSetter();
 		}
 	}
 
@@ -778,17 +949,27 @@ public class AdvancedConfigurationComposite extends BaseConfigurationComposite {
 		this.cmbLocaleAuswahl.setToolTipText(Messages
 				.getString("advanced_config.LocaleSelection_ToolTip")); //$NON-NLS-1$
 
-		this.grpProxy.setText(Messages.getString("simple_config.Proxy_Title")); //$NON-NLS-1$
-		this.lblProxyHost.setText(Messages.getString("simple_config.ProxyHost")); //$NON-NLS-1$
+		this.grpProxy.setText(Messages.getString("advanced_config.Proxy_Title")); //$NON-NLS-1$
+		this.lblProxyHost.setText(Messages.getString("advanced_config.ProxyHost")); //$NON-NLS-1$
 		this.txtProxyHost.setToolTipText(Messages
-				.getString("simple_config.ProxyHost_ToolTip")); //$NON-NLS-1$
+				.getString("advanced_config.ProxyHost_ToolTip")); //$NON-NLS-1$
 		this.txtProxyHost.setMessage(Messages
-				.getString("simple_config.ProxyHostTemplate")); //$NON-NLS-1$
+				.getString("advanced_config.ProxyHost_Template")); //$NON-NLS-1$
 		this.lblProxyPort.setText(Messages
-				.getString("simple_config.ProxyPort")); //$NON-NLS-1$
+				.getString("advanced_config.ProxyPort")); //$NON-NLS-1$
 		this.txtProxyPort.setToolTipText(Messages
-				.getString("simple_config.ProxyPort_ToolTip")); //$NON-NLS-1$
+				.getString("advanced_config.ProxyPort_ToolTip")); //$NON-NLS-1$
 		this.txtProxyPort.setMessage(Messages
-				.getString("simple_config.ProxyPortTemplate")); //$NON-NLS-1$
+				.getString("advanced_config.ProxyPort_Template")); //$NON-NLS-1$
+		this.lblProxyUser.setText(Messages.getString("advanced_config.ProxyUser")); //$NON-NLS-1$
+		this.txtProxyUser.setToolTipText(Messages
+				.getString("advanced_config.ProxyUser_ToolTip")); //$NON-NLS-1$
+		this.txtProxyUser.setMessage(Messages
+				.getString("advanced_config.ProxyUser_Template")); //$NON-NLS-1$
+		this.lblProxyPass.setText(Messages.getString("advanced_config.ProxyPass")); //$NON-NLS-1$
+		this.txtProxyPass.setToolTipText(Messages
+				.getString("advanced_config.ProxyPass_ToolTip")); //$NON-NLS-1$
+		this.txtProxyPass.setMessage(Messages
+				.getString("advanced_config.ProxyPass_Template")); //$NON-NLS-1$
 	}
 }
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java
index c4691571..fcf3119f 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/ConfigurationComposite.java
@@ -320,6 +320,10 @@ public class ConfigurationComposite extends StateComposite {
 			} catch (InvalidPortException e) {
 				log.error("Failed to set proxy port!", e); //$NON-NLS-1$
 			}
+			this.configurationContainer.setProxyUser(this.configProvider
+					.getProxyUserPersistent());
+			this.configurationContainer.setProxyPass(this.configProvider
+					.getProxyPassPersistent());
 
 			this.simpleConfigComposite.loadConfiguration();
 			this.advancedConfigComposite.loadConfiguration();
@@ -421,6 +425,10 @@ public class ConfigurationComposite extends StateComposite {
 				.getProxyHost());
 		this.configManipulator.setProxyPort(this.configurationContainer
 				.getProxyPort());
+		this.configManipulator.setProxyUser(this.configurationContainer
+				.getProxyUser());
+		this.configManipulator.setProxyPass(this.configurationContainer
+				.getProxyPass());
 		this.configManipulator.setDefaultEmblem(this.configurationContainer
 				.getEmblem());
 
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java
index 58b9e453..68b48242 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigManipulator.java
@@ -75,6 +75,18 @@ public interface ConfigManipulator {
 	 */
 	public void setProxyPort(int port);
 
+	/**
+	 * Sets the proxy username
+	 * @param user the proxy username
+	 */
+	public void setProxyUser(String user);
+
+	/**
+	 * Sets the proxy password
+	 * @param pass the proxy password
+	 */
+	public void setProxyPass(String pass);
+
 	/**
 	 * Sets the default output folder
 	 * @param outputFolder the default output folder
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java
index 952116ec..e3fec9f5 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigOverlayManipulator.java
@@ -60,6 +60,18 @@ public interface ConfigOverlayManipulator {
 	 */
 	public void setProxyPortOverlay(int port);
 
+	/**
+	 * Sets the proxy username
+	 * @param user the proxy username
+	 */
+	public void setProxyUserOverlay(String user);
+
+	/**
+	 * Sets the proxy password
+	 * @param pass the proxy password
+	 */
+	public void setProxyPassOverlay(String pass);
+
 	/**
 	 * Sets the default output folder
 	 * @param outputFolder the default output folder
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java
index 1adf39e4..91bd5ecf 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProvider.java
@@ -84,6 +84,18 @@ public interface ConfigProvider {
 	 */
 	public int getProxyPort();
 
+	/**
+	 * Gets the proxy username
+	 * @return the proxy username
+	 */
+	public String getProxyUser();
+
+	/**
+	 * Gets the proxy password
+	 * @return the proxy password
+	 */
+	public String getProxyPass();
+
 	/**
 	 * Get the default configured BKU
 	 * @return the default configured BKU
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java
index 3225c92d..3010868b 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigProviderImpl.java
@@ -101,6 +101,14 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator,
 		this.setProxyHost(config
 				.getProperty(Constants.CFG_PROXY_HOST));
 
+		// Set Proxy User
+		this.setProxyUser(config
+				.getProperty(Constants.CFG_PROXY_USER));
+
+		// Set Proxy Password
+		this.setProxyPass(config
+				.getProperty(Constants.CFG_PROXY_PASS));
+
 		// Set Output Folder
 		this.setDefaultOutputFolder(config
 				.getProperty(Constants.CFG_OUTPUT_FOLDER));
@@ -279,6 +287,8 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator,
 		props.setProperty(Constants.CFG_PROXY_HOST, this.getProxyHostPersistent());
 		props.setProperty(Constants.CFG_PROXY_PORT,
 				Integer.toString(getProxyPortPersistent()));
+		props.setProperty(Constants.CFG_PROXY_USER, this.getProxyUserPersistent());
+		props.setProperty(Constants.CFG_PROXY_PASS, this.getProxyPassPersistent());
 		props.setProperty(Constants.CFG_EMBLEM, this.getDefaultEmblemPersistent());
 		props.setProperty(Constants.CFG_SIGNATURE_NOTE, this.getSignatureNote());
 		props.setProperty(Constants.CFG_MOBILE_NUMBER, this.getDefaultMobileNumberPersistent());
@@ -758,6 +768,104 @@ public class ConfigProviderImpl implements ConfigProvider, ConfigManipulator,
 		return this.configuration.getProxyPort();
 	}
 
+	/**
+	 * Sets the proxy username
+	 * 
+	 * @param user
+	 *            the proxy username
+	 */
+	@Override
+	public void setProxyUser(String user) {
+		if (user == null || user.trim().isEmpty()) {
+			this.configuration.setProxyUser(STRING_EMPTY);
+		} else {
+			this.configuration.setProxyUser(user);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigOverlayManipulator#setProxyUserOverlay(java.lang.String)
+	 */
+	@Override
+	public void setProxyUserOverlay(String user) {
+		if (user == null || user.trim().isEmpty()) {
+			this.configurationOverlay.setProxyUser(STRING_EMPTY);
+		} else {
+			this.configurationOverlay.setProxyUser(user);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigProvider#getProxyUser()
+	 */
+	@Override
+	public String getProxyUser() {
+		String user = this.configurationOverlay.getProxyUser();
+		if (user == null)
+			user = getProxyUserPersistent();
+		return user;
+	}
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.PersistentConfigProvider#getProxyUserPersistent()
+	 */
+	@Override
+	public String getProxyUserPersistent() {
+		String user = this.configuration.getProxyUser();
+		if (user == null)
+			user = STRING_EMPTY;
+		return user;
+	}
+
+	/**
+	 * Sets the proxy password
+	 * 
+	 * @param pass
+	 *            the proxy password
+	 */
+	@Override
+	public void setProxyPass(String pass) {
+		if (pass == null || pass.trim().isEmpty()) {
+			this.configuration.setProxyPass(STRING_EMPTY);
+		} else {
+			this.configuration.setProxyPass(pass);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigOverlayManipulator#setProxyPassOverlay(java.lang.String)
+	 */
+	@Override
+	public void setProxyPassOverlay(String pass) {
+		if (pass == null || pass.trim().isEmpty()) {
+			this.configurationOverlay.setProxyPass(STRING_EMPTY);
+		} else {
+			this.configurationOverlay.setProxyPass(pass);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigProvider#getProxyPass()
+	 */
+	@Override
+	public String getProxyPass() {
+		String pass = this.configurationOverlay.getProxyPass();
+		if (pass == null)
+			pass = getProxyPassPersistent();
+		return pass;
+	}
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.PersistentConfigProvider#getProxyPassPersistent()
+	 */
+	@Override
+	public String getProxyPassPersistent() {
+		String pass = this.configuration.getProxyPass();
+		if (pass == null)
+			pass = STRING_EMPTY;
+		return pass;
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java
index 383f5e9b..486647cc 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainer.java
@@ -80,18 +80,6 @@ public interface ConfigurationContainer {
 	 */
 	public void setProxyHost(String host);
 
-	/**
-	 * Gets the signature note
-	 * @return the signature note
-	 */
-	public String getSignatureNote();
-
-	/**
-	 * Sets the signature note
-	 * @param note the signature note
-	 */
-	public void setSignatureNote(String note);
-
 	/**
 	 * Gets the proxy port
 	 * 
@@ -111,6 +99,42 @@ public interface ConfigurationContainer {
 	 */
 	public void setProxyPort(int port) throws InvalidPortException;
 
+	/**
+	 * Gets the proxy username
+	 * @return the proxy username
+	 */
+	public String getProxyUser();
+
+	/**
+	 * Sets the proxy username
+	 * @param user the proxy username
+	 */
+	public void setProxyUser(String user);
+
+	/**
+	 * Gets the proxy password
+	 * @return the proxy password
+	 */
+	public String getProxyPass();
+
+	/**
+	 * Sets the proxy password
+	 * @param pass the proxy password
+	 */
+	public void setProxyPass(String pass);
+
+	/**
+	 * Gets the signature note
+	 * @return the signature note
+	 */
+	public String getSignatureNote();
+
+	/**
+	 * Sets the signature note
+	 * @param note the signature note
+	 */
+	public void setSignatureNote(String note);
+
 	/**
 	 * Gets the transparency of the placeholder
 	 * @return transparency of the placeholder (0-255)
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java
index d878f59e..ec79b403 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/ConfigurationContainerImpl.java
@@ -54,31 +54,37 @@ public class ConfigurationContainerImpl implements ConfigurationContainer {
 
 	/** The mobile phone number */
 	protected String mobileNumber = null;
-	
+
 	/** The mobile phone password */
 	protected String mobilePassword = null;
-	
-	/** Holds the proxy Host */
+
+	/** Holds the proxy host */
 	protected String proxyHost = null;
-	
-	/** Holds the signatureNote */
-	protected String signatureNote = null;
-	
+
 	/** Holds the proxy port number */
 	protected int proxyPort = -1;
-	
+
+	/** Holds the proxy username */
+	protected String proxyUser = null;
+
+	/** Holds the proxy password */
+	protected String proxyPass = null;
+
+	/** Holds the signatureNote */
+	protected String signatureNote = null;
+
 	/** Holds the locale */
 	protected Locale locale = null;
-	
+
 	/** Holds the signature locale */
 	protected Locale signLocale = null;
-	
+
 	/** Holds the output folder */
 	protected String folder = null;
-	
+
 	/** Holds the default BKU to use */
 	protected BKUs defaultBKU = BKUs.NONE;
-	
+
 	/** Holds the automatic positioning value */
 	protected boolean automaticPositioning = false;
 
@@ -224,6 +230,42 @@ public class ConfigurationContainerImpl implements ConfigurationContainer {
 	}
 
 
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#getProxyUser()
+	 */
+	@Override
+	public String getProxyUser() {
+		return this.proxyUser;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#setProxyUser(java.lang.String)
+	 */
+	@Override
+	public void setProxyUser(String user) {
+		this.proxyUser = user;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#getProxyPass()
+	 */
+	@Override
+	public String getProxyPass() {
+		return this.proxyPass;
+	}
+
+
+	/* (non-Javadoc)
+	 * @see at.asit.pdfover.gui.workflow.config.ConfigurationContainer#setProxyPass(java.lang.String)
+	 */
+	@Override
+	public void setProxyPass(String pass) {
+		this.proxyPass = pass;
+	}
+
+
 	/* (non-Javadoc)
 	 * @see at.asit.pdfover.gui.workflow.ConfigurationContainer#getPlaceholderTransparency()
 	 */
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java
index ea2c97b1..fe4fceb3 100644
--- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java
+++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/config/PersistentConfigProvider.java
@@ -52,7 +52,7 @@ public interface PersistentConfigProvider {
 	 * @return the emblem
 	 */
 	public String getDefaultEmblemPersistent();
-	
+
 	/**
 	 * Gets the proxy host
 	 * @return the proxy hostname or ip address
@@ -65,6 +65,18 @@ public interface PersistentConfigProvider {
 	 */
 	public int getProxyPortPersistent();
 
+	/**
+	 * Gets the proxy username
+	 * @return the proxy username
+	 */
+	public String getProxyUserPersistent();
+
+	/**
+	 * Gets the proxy password
+	 * @return the proxy password
+	 */
+	public String getProxyPassPersistent();
+
 	/**
 	 * Gets the default output folder for signed documents
 	 * @return the default output folder 
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 d0e9bdfe..ad0658c5 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
@@ -16,6 +16,9 @@
 package at.asit.pdfover.gui.workflow.states;
 
 //Imports
+import java.net.Authenticator;
+import java.net.PasswordAuthentication;
+
 import org.eclipse.swt.SWT;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,7 +39,8 @@ import at.asit.pdfover.signator.SignatureParameter;
 import at.asit.pdfover.signator.Signer;
 
 /**
- * User waiting state, wait for PDF Signator library to prepare document for signing.
+ * User waiting state, wait for PDF Signator library to prepare document for
+ * signing.
  */
 public class PrepareSigningState extends State {
 
@@ -48,97 +52,145 @@ public class PrepareSigningState extends State {
 	}
 
 	private final class PrepareDocumentThread implements Runnable {
-		
+
 		private PrepareSigningState state;
-		
+
 		/**
 		 * Default constructor
+		 *
 		 * @param state
 		 */
 		public PrepareDocumentThread(PrepareSigningState state) {
 			this.state = state;
 		}
-		
+
 		@Override
 		public void run() {
 			try {
-				
+
 				Status status = this.state.stateMachine.getStatus();
-				
-				ConfigProvider configuration = this.state.stateMachine.getConfigProvider();
-				
+
+				ConfigProvider configuration = this.state.stateMachine
+						.getConfigProvider();
+
 				// SET PROXY HOST and PORT settings
-				String proxyHost = configuration.getProxyHost();
-				int proxyPort = configuration.getProxyPort();
-				
-				if(proxyPort > 0 && proxyPort <= 0xFFFF) {
-					System.setProperty("http.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$
-					System.setProperty("https.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$
-				} 
-				
-				if(proxyHost != null && !proxyHost.isEmpty()) {
+				final String proxyHost = configuration.getProxyHost();
+				final int proxyPort = configuration.getProxyPort();
+				final String proxyUser = configuration.getProxyUser();
+				final String proxyPass = configuration.getProxyPass();
+
+				if (proxyPort > 0 && proxyPort <= 0xFFFF) {
+					System.setProperty(
+							"http.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$
+					System.setProperty(
+							"https.proxyPort", Integer.toString(proxyPort)); //$NON-NLS-1$
+				}
+
+				if (proxyHost != null && !proxyHost.isEmpty()) {
 					System.setProperty("http.proxyHost", proxyHost); //$NON-NLS-1$
 					System.setProperty("https.proxyHost", proxyHost); //$NON-NLS-1$
-				} 
-				
-				if(this.state.signer == null) {
-					this.state.signer = this.state.stateMachine.getPDFSigner().getPDFSigner();
 				}
-				
-				if(this.state.signatureParameter == null) {
-					this.state.signatureParameter = this.state.signer.newParameter();
+
+				if (proxyUser != null && !proxyUser.isEmpty()) {
+					System.setProperty("http.proxyUser", proxyUser); //$NON-NLS-1$
+					System.setProperty("https.proxyUser", proxyUser); //$NON-NLS-1$
+				}
+
+				if (proxyPass != null && !proxyPass.isEmpty()) {
+					System.setProperty("http.proxyPassword", proxyPass); //$NON-NLS-1$
+					System.setProperty("https.proxyPassword", proxyPass); //$NON-NLS-1$
+				}
+
+				if (proxyUser != null && !proxyUser.isEmpty() &&
+					proxyPass != null && !proxyPass.isEmpty()) {
+					Authenticator.setDefault(new Authenticator() {
+						/* (non-Javadoc)
+						 * @see java.net.Authenticator#getPasswordAuthentication()
+						 */
+						@Override
+						protected PasswordAuthentication getPasswordAuthentication() {
+							if (getRequestorType() == RequestorType.PROXY) {
+								if (getRequestingHost().equalsIgnoreCase(proxyHost) &&
+									(getRequestingPort() == proxyPort)) {
+									return new PasswordAuthentication(proxyUser, 
+											proxyPass.toCharArray());
+								}
+							}
+							return super.getPasswordAuthentication();
+						}
+					});
+				}
+				if (this.state.signer == null) {
+					this.state.signer = this.state.stateMachine.getPDFSigner()
+							.getPDFSigner();
 				}
-				
-				this.state.signatureParameter.setInputDocument(new PDFFileDocumentSource(status.getDocument()));
-				this.state.signatureParameter.setSignatureDevice(status.getBKU());
-				this.state.signatureParameter.setSignaturePosition(status.getSignaturePosition());
-				
-				if(configuration.getDefaultEmblem() != null && !configuration.getDefaultEmblem().isEmpty()) {
-					this.state.signatureParameter.setEmblem(new FileNameEmblem(configuration.getDefaultEmblem()));
+
+				if (this.state.signatureParameter == null) {
+					this.state.signatureParameter = this.state.signer
+							.newParameter();
+				}
+
+				this.state.signatureParameter
+						.setInputDocument(new PDFFileDocumentSource(status
+								.getDocument()));
+				this.state.signatureParameter.setSignatureDevice(status
+						.getBKU());
+				this.state.signatureParameter.setSignaturePosition(status
+						.getSignaturePosition());
+
+				if (configuration.getDefaultEmblem() != null
+						&& !configuration.getDefaultEmblem().isEmpty()) {
+					this.state.signatureParameter.setEmblem(new FileNameEmblem(
+							configuration.getDefaultEmblem()));
 				}
-				
-				if(configuration.getSignatureNote() != null && !configuration.getSignatureNote().isEmpty()) {
-					this.state.signatureParameter.setProperty("SIG_NOTE", configuration.getSignatureNote()); //$NON-NLS-1$
+
+				if (configuration.getSignatureNote() != null
+						&& !configuration.getSignatureNote().isEmpty()) {
+					this.state.signatureParameter.setProperty(
+							"SIG_NOTE", configuration.getSignatureNote()); //$NON-NLS-1$
 				}
-				
-				this.state.signatureParameter.setSignatureLanguage(configuration.getSignLocale().getLanguage());
-				
-				this.state.signingState = this.state.signer.prepare(this.state.signatureParameter);
-				
+
+				this.state.signatureParameter
+						.setSignatureLanguage(configuration.getSignLocale()
+								.getLanguage());
+
+				this.state.signingState = this.state.signer
+						.prepare(this.state.signatureParameter);
+
 			} catch (Exception e) {
 				log.error("PrepareDocumentThread: ", e); //$NON-NLS-1$
 				this.state.threadException = e;
-			}
-			finally {
+			} finally {
 				this.state.stateMachine.invokeUpdate();
 			}
 		}
 	}
-	
+
 	/**
 	 * SFL4J Logger instance
 	 **/
-	static final Logger log = LoggerFactory.getLogger(PrepareSigningState.class);
-	
+	static final Logger log = LoggerFactory
+			.getLogger(PrepareSigningState.class);
+
 	SignatureParameter signatureParameter;
-	
+
 	private WaitingComposite waitingComposite = null;
 
 	private WaitingComposite getSelectionComposite() {
 		if (this.waitingComposite == null) {
-			this.waitingComposite =
-					this.stateMachine.getGUIProvider().createComposite(WaitingComposite.class, SWT.RESIZE, this);
+			this.waitingComposite = this.stateMachine.getGUIProvider()
+					.createComposite(WaitingComposite.class, SWT.RESIZE, this);
 		}
 
 		return this.waitingComposite;
 	}
-	
-	at.asit.pdfover.signator.SigningState signingState  = null;
+
+	at.asit.pdfover.signator.SigningState signingState = null;
 
 	Signer signer;
-	
+
 	Exception threadException = null;
-	
+
 	@Override
 	public void run() {
 		WaitingComposite waiting = this.getSelectionComposite();
@@ -149,22 +201,23 @@ public class PrepareSigningState extends State {
 
 		Status status = this.stateMachine.getStatus();
 
-		if(this.signatureParameter == null) {
-			this.signatureParameter = this.signer.newParameter(); 
+		if (this.signatureParameter == null) {
+			this.signatureParameter = this.signer.newParameter();
 		}
 
-		if(this.signingState == null && this.threadException == null) {
+		if (this.signingState == null && this.threadException == null) {
 			Thread t = new Thread(new PrepareDocumentThread(this));
 			t.start();
 			return;
 		}
 
-		if(this.threadException != null) {
-			ErrorDialog error = new ErrorDialog(this.stateMachine.getGUIProvider().getMainShell(),
-					Messages.getString("error.PrepareDocument"),  //$NON-NLS-1$
+		if (this.threadException != null) {
+			ErrorDialog error = new ErrorDialog(this.stateMachine
+					.getGUIProvider().getMainShell(),
+					Messages.getString("error.PrepareDocument"), //$NON-NLS-1$
 					BUTTONS.RETRY_CANCEL);
 			this.threadException = null;
-			if(error.open() == SWT.RETRY) {
+			if (error.open() == SWT.RETRY) {
 				run();
 			} else {
 				this.setNextState(new BKUSelectionState(this.stateMachine));
@@ -174,10 +227,10 @@ public class PrepareSigningState extends State {
 
 		// We got the Request set it into status and move on to next state ...
 		status.setSigningState(this.signingState);
-		
-		if(this.stateMachine.getStatus().getBKU() == BKUs.LOCAL) {
+
+		if (this.stateMachine.getStatus().getBKU() == BKUs.LOCAL) {
 			this.setNextState(new LocalBKUState(this.stateMachine));
-		} else if(this.stateMachine.getStatus().getBKU() == BKUs.MOBILE) {
+		} else if (this.stateMachine.getStatus().getBKU() == BKUs.MOBILE) {
 			this.setNextState(new MobileBKUState(this.stateMachine));
 		} else {
 			log.error("Invalid selected BKU Value \"NONE\" in PrepareSigningState!"); //$NON-NLS-1$
@@ -185,7 +238,8 @@ public class PrepareSigningState extends State {
 		}
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
 	 * @see at.asit.pdfover.gui.workflow.states.State#cleanUp()
 	 */
 	@Override
@@ -194,12 +248,14 @@ public class PrepareSigningState extends State {
 			this.waitingComposite.dispose();
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
 	 * @see at.asit.pdfover.gui.workflow.states.State#setMainWindowBehavior()
 	 */
 	@Override
 	public void updateMainWindowBehavior() {
-		MainWindowBehavior behavior = this.stateMachine.getStatus().getBehavior();
+		MainWindowBehavior behavior = this.stateMachine.getStatus()
+				.getBehavior();
 		behavior.reset();
 		behavior.setActive(Buttons.OPEN, true);
 		behavior.setActive(Buttons.POSITION, true);
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 8d174012..c5991585 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
@@ -16,6 +16,19 @@ advanced_config.OutputFolder.Dialog=Select a folder
 advanced_config.OutputFolder.Dialog_Title=Select Output folder
 advanced_config.OutputFolder_Title=&Output location
 advanced_config.OutputFolder_ToolTip=Select the folder where the signed document will be saved automatically (clear this field to disable automatic saving, enter a single dot (".") to denote the input document directory)
+advanced_config.Proxy_Title=&Proxy
+advanced_config.ProxyHost=Host:
+advanced_config.ProxyHost_ToolTip=To use a proxy server enter the hostname or the IP here
+advanced_config.ProxyHost_Template=Hostname or IP of the proxy server
+advanced_config.ProxyPort=Port:
+advanced_config.ProxyPort_Template=Port of the proxy server [1-65535]
+advanced_config.ProxyPort_ToolTip=To use a proxy server enter the port number here
+advanced_config.ProxyUser=Username:
+advanced_config.ProxyUser_Template=Username for proxy authentication
+advanced_config.ProxyUser_ToolTip=To use proxy authentication enter username here
+advanced_config.ProxyPass=Password:
+advanced_config.ProxyPass_Template=Password for proxy authentication
+advanced_config.ProxyPass_ToolTip=To use proxy authentication enter password here
 advanced_config.Signature_Title=Si&gnature
 advanced_config.SigPHTransparency=Signature placeholder transparency
 advanced_config.SigPHTransparencyMax=Opaque
@@ -130,13 +143,6 @@ simple_config.Note_SetDefault=Restore default
 simple_config.Note_Title=Signature &Note
 simple_config.Note_Tooltip=Add an optional note to display on your Signature
 simple_config.PhoneNumber=Mobile number:
-simple_config.ProxyHost=Host:
-simple_config.ProxyHostTemplate=Hostname or IP of the proxy server
-simple_config.ProxyPort=Port:
-simple_config.ProxyPortTemplate=Port of the proxy server [1-65535]
-simple_config.Proxy_Title=&Proxy
-simple_config.ProxyHost_ToolTip=To use a proxy server enter the hostname or the IP here
-simple_config.ProxyPort_ToolTip=To use a proxy server enter the port number here
 simple_config.SigBlockLang_Title=Signature block lan&guage:
 simple_config.SigBlockLang_ToolTip=Select the language to be used in the signature block displayed on the signed document
 tanEnter.ReferenceValue=Reference value:
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 e4add447..4d9eaf50 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
@@ -16,6 +16,19 @@ advanced_config.OutputFolder.Dialog=W
 advanced_config.OutputFolder.Dialog_Title=Ausgabeordner W�hlen
 advanced_config.OutputFolder_Title=Ausgabe&ort
 advanced_config.OutputFolder_ToolTip=W�hlen Sie einen Ordner, in dem signierte Dokumente automatisch abgelegt werden (deaktivert, wenn das Feld leer ist; ein einzelner Punkt (".") w�hlt das Verzeichnis des Ursprungsdokuments)
+advanced_config.Proxy_Title=&Proxy
+advanced_config.ProxyHost=Host:
+advanced_config.ProxyHost_Template=Hostname oder IP des Proxy-Servers
+advanced_config.ProxyHost_ToolTip=Um einen Proxy zu verwenden Hostname/IP hier eingeben
+advanced_config.ProxyPort=Port:
+advanced_config.ProxyPort_Template=Port des Proxy-Servers [1-65535]
+advanced_config.ProxyPort_ToolTip=Um einen Proxy zu verwenden Portnummer hier eingeben
+advanced_config.ProxyUser=Benutzer:
+advanced_config.ProxyUser_Template=Benutzername f�r den Proxy-Server
+advanced_config.ProxyUser_ToolTip=F�r Proxy-Authentifizierung Benutzername hier eingeben
+advanced_config.ProxyPass=Passwort:
+advanced_config.ProxyPass_Template=Passwort f�r den Proxy-Server
+advanced_config.ProxyPass_ToolTip=F�r Proxy-Authentifizierung Passwort hier eingeben
 advanced_config.Signature_Title=Si&gnatur
 advanced_config.SigPHTransparency=Signaturplatzhalter-Transparenz
 advanced_config.SigPHTransparencyMax=Undurchsichtig
@@ -128,15 +141,8 @@ simple_config.Note_SetDefault=Standard wiederherstellen
 simple_config.Note_Title=Signaturhi&nweis
 simple_config.Note_Tooltip=Ein optionaler Hinweis, der in Ihrer Signatur angezeigt wird
 simple_config.PhoneNumber=Handynummer:
-simple_config.ProxyHost=Host:
-simple_config.ProxyHostTemplate=Hostname oder IP des Proxy-Servers
-simple_config.ProxyPort=Port:
-simple_config.ProxyPortTemplate=Port des Proxy-Servers [1-65535]
-simple_config.Proxy_Title=&Proxy
 simple_config.ClearEmblem=Ent&fernen
 simple_config.ExampleNumber_ToolTip=Um die Handynummer voreinzustellen hier eingeben
-simple_config.ProxyHost_ToolTip=Um einen Proxy zu verwenden Hostname/IP hier eingeben
-simple_config.ProxyPort_ToolTip=Um einen Proxy zu verwenden Portnummer hier eingeben
 simple_config.SigBlockLang_Title=Sp&rache des Signaturblocks:
 simple_config.SigBlockLang_ToolTip=W�hlen Sie eine Sprache f�r den Signaturblock, der am signierten Dokument erscheint
 tanEnter.ReferenceValue=Vergleichswert:
-- 
cgit v1.2.3