diff options
Diffstat (limited to 'id/moa-id-webgui/src/main/java')
2 files changed, 84 insertions, 15 deletions
diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/GUIDataParser.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/GUIDataParser.java new file mode 100644 index 000000000..be47a404f --- /dev/null +++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/helper/GUIDataParser.java @@ -0,0 +1,67 @@ +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * 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://www.osor.eu/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. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egovernment.moa.id.config.webgui.helper; + +import java.io.IOException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants; +import at.gv.egovernment.moa.util.Base64Utils; +import at.gv.egovernment.moa.util.MiscUtil; + +/** + * @author tlenz + * + */ +public class GUIDataParser { + private static final Logger log = LoggerFactory.getLogger(GUIDataParser.class); + /** + * Extract the BASE64 content from GUI upload + * + * @param guiUpload {String}, which is committed by GUI + * @return Base64 encoded data or null if data is not parseable or empty + */ + public static String getBase64ContentFromGUIUpload(String guiUpload) { + if (MiscUtil.isNotEmpty(guiUpload) && + !guiUpload.equals(MOAIDConfigurationConstants.WEBGUI_EMPTY_ELEMENT) ) { + String[] bkuSelectTemplateSplitted = guiUpload.split(","); + String base64 = null; + if (bkuSelectTemplateSplitted.length > 1) + base64 = bkuSelectTemplateSplitted[1]; + else + base64 = guiUpload; + + try { + if (Base64Utils.decode(base64, false) == null) + return base64; + + } catch (IOException e) { + log.debug("GUI upoad is not decodeable.", e); + + } + } + return null; + } +} diff --git a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java index 7ed9751cb..b6561ccf4 100644 --- a/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java +++ b/id/moa-id-webgui/src/main/java/at/gv/egovernment/moa/id/config/webgui/validation/task/impl/ServicesBKUSelectionTask.java @@ -29,7 +29,6 @@ import java.util.List; import java.util.Map; import java.util.regex.Pattern; -import org.apache.commons.codec.binary.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,6 +37,7 @@ import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants; import at.gv.egovernment.moa.id.commons.validation.ValidationHelper; import at.gv.egovernment.moa.id.config.webgui.exception.ConfigurationTaskValidationException; import at.gv.egovernment.moa.id.config.webgui.exception.ValidationObjectIdentifier; +import at.gv.egovernment.moa.id.config.webgui.helper.GUIDataParser; import at.gv.egovernment.moa.id.config.webgui.helper.LanguageHelper; import at.gv.egovernment.moa.id.config.webgui.validation.task.AbstractTaskValidator; import at.gv.egovernment.moa.id.config.webgui.validation.task.ITaskValidator; @@ -94,6 +94,18 @@ public class ServicesBKUSelectionTask extends AbstractTaskValidator implements I } + String bkuSelectionFileUpload = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA); + String bkuSelectionFile = GUIDataParser.getBase64ContentFromGUIUpload(bkuSelectionFileUpload); + if (bkuSelectionFile != null) + newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA, + bkuSelectionFile); + + String sendAssertionTemplateUpload = input.get(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA); + String sendAssertionTemplate = GUIDataParser.getBase64ContentFromGUIUpload(sendAssertionTemplateUpload); + if (sendAssertionTemplate != null) + newConfigValues.put(MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA, + sendAssertionTemplate); + if (newConfigValues.isEmpty()) return null; else @@ -148,13 +160,8 @@ public class ServicesBKUSelectionTask extends AbstractTaskValidator implements I } - String[] bkuSelectTemplateSplitted = bkuSelectionFileUpload.split(","); - if (bkuSelectTemplateSplitted.length > 1) - bkuSelectTemplate = bkuSelectTemplateSplitted[1]; - else - bkuSelectTemplate = bkuSelectionFileUpload; - - if (!Base64.isBase64(bkuSelectTemplate)) { + bkuSelectTemplate = GUIDataParser.getBase64ContentFromGUIUpload(bkuSelectionFileUpload); + if (bkuSelectTemplate == null) { log.info("BKU Selection Template is not decodeable."); errors.add(new ValidationObjectIdentifier( MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_BKUSELECTION_DATA, @@ -202,13 +209,8 @@ public class ServicesBKUSelectionTask extends AbstractTaskValidator implements I } - String[] sendAssertionTemplateSplitted = sendAssertionFileUpload.split(","); - if (sendAssertionTemplateSplitted.length > 1) - sendAssertionTemplate = sendAssertionTemplateSplitted[1]; - else - sendAssertionTemplate = sendAssertionFileUpload; - - if (!Base64.isBase64(sendAssertionTemplate)) { + sendAssertionTemplate = GUIDataParser.getBase64ContentFromGUIUpload(sendAssertionFileUpload); + if (sendAssertionTemplate == null) { log.info("Send Assertion Template is not decodeable."); errors.add(new ValidationObjectIdentifier( MOAIDConfigurationConstants.SERVICE_AUTH_TEMPLATES_SENDASSERTION_DATA, |