/******************************************************************************* * 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. ******************************************************************************/ /* * Copyright 2003 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.auth.builder; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import at.gv.egovernment.moa.id.auth.exception.BuildException; /** * Builder for CreateXMLSignatureRequest to sign data from a foreign * eID card. * */ public class CreateXMLSignatureRequestBuilderForeign extends Builder { /** special tag in the XML template to be substituted for the KeyboxIdentifier */ private static final String KEYBOXID_TAG = ""; /** special tag in the XML template to be substituted for the content */ private static final String XMLCONTENT_TAG = ""; /** private static int all contains the representation to replace all tags*/ private static final int ALL = -1; // /** default HTML template */ // private static final String DEFAULT_XML_TEMPLATE = // "" + // "" + // "" + KEYBOXID_TAG + "" + // "" + // "" + // "" + XMLCONTENT_TAG + "" + // "" + // "" + // "" + // "text/plain" + // "" + // "" + // "" + // ""; /** default HTML template */ private static final String DEFAULT_XHTML_TEMPLATE = "" + "" + "" + KEYBOXID_TAG + "" + "" + "" + "" + XMLCONTENT_TAG + "" + "" + "" + "" + "application/xhtml+xml" + "" + "" + "" + ""; /** * Constructor for CreateXMLSignatureRequestBuilderForeign. */ public CreateXMLSignatureRequestBuilderForeign() { super(); } /** * Builds the XML request. * * @param xmlRequest XML Request to be sent as a parameter in the form * @param bkuURL URL of the "Bürgerkartenumgebung" the form will be submitted to; * may be null, in this case the default URL will be used * @param dataURL DataURL to be sent as a parameter in the form */ public String build( String keyboxIdentifier, String xmlContent) throws BuildException { String xmlRequest = DEFAULT_XHTML_TEMPLATE; xmlRequest = replaceTag(xmlRequest, KEYBOXID_TAG, keyboxIdentifier, true, ALL); //htmlForm = replaceTag(htmlForm, XMLREQUEST_TAG, encodeParameter(xmlRequest), true, ALL); xmlRequest = replaceTag(xmlRequest, XMLCONTENT_TAG, xmlContent, true, ALL); return xmlRequest; } /** * Encodes a string for inclusion as a parameter in the form. * Double quotes are substituted by "&quot;". * @param s the string to be encoded * @return the string encoded * @throws BuildException on any exception encountered */ public static String encodeParameter(String s) throws BuildException { StringReader in = new StringReader(s); StringWriter out = new StringWriter(); try { for (int ch = in.read(); ch >= 0; ch = in.read()) { if (ch == '"') out.write("""); else if (ch == '<') out.write("<"); else if (ch == '>') out.write(">"); else if (ch == 'ä') out.write("ä"); else if (ch == 'ö') out.write("ö"); else if (ch == 'ü') out.write("ü"); else if (ch == 'Ä') out.write("Ä"); else if (ch == 'Ö') out.write("Ö"); else if (ch == 'Ü') out.write("Ü"); else if (ch == 'ß') out.write("ß"); else out.write(ch); } } catch (IOException ex) { throw new BuildException("builder.00", new Object[] {"CreateXMLSignatureRequest", ex.toString()}); } return out.toString(); } }