/*******************************************************************************
* 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.text.MessageFormat;
import at.gv.egovernment.moa.id.auth.exception.BuildException;
import at.gv.egovernment.moa.util.Constants;
import at.gv.egovernment.moa.util.FileUtils;
/**
* Builder for the <VerifyXMLSignatureRequest>
structure
* used for presenting certificate information in the secure viewer of the security layer implementation.
*
* @author Paul Ivancsics
* @version $Id$
*/
public class CertInfoVerifyXMLSignatureRequestBuilder extends Builder implements Constants {
/** special tag in the VerifyXMLRequest template to be substituted for a <dsig:Signature>
*/
private static final String SIGNATURE_TAG = "";
/** private static String nl contains the NewLine representation in Java*/
private static final String nl = "\n";
/**
* XML template for the CertInfoVerifyXMLSignatureRequest to be built
*/
static final String CERTINFO_REQUEST =
"" + nl +
"<{0}:VerifyXMLSignatureRequest {2} xmlns:dsig=\"" + DSIG_NS_URI + "\">" + nl +
" <{0}:SignatureInfo>" + nl +
" <{0}:SignatureEnvironment>" + nl +
" <{1}:XMLContent xml:space=\"preserve\">{1}:XMLContent>" + nl +
" {0}:SignatureEnvironment>" + nl +
" <{0}:SignatureLocation>//dsig:Signature{0}:SignatureLocation>" + nl +
" {0}:SignatureInfo>" + nl +
"{0}:VerifyXMLSignatureRequest>";
/**
* Constructor
*/
public CertInfoVerifyXMLSignatureRequestBuilder() {
super();
}
/**
* Builds the <VerifyXMLSignatureRequest>
structure.
* @return the XML structure
* @throws BuildException
*/
public String build() throws BuildException {
String sl10Prefix;
String sl11Prefix;
String slNsDeclaration;
// if (slVersion12) {
sl10Prefix = SL12_PREFIX;
sl11Prefix = SL12_PREFIX;
slNsDeclaration = "xmlns:" + SL12_PREFIX + "=\"" + SL12_NS_URI + "\"";
// } else {
//
// sl10Prefix = SL10_PREFIX;
// sl11Prefix = SL11_PREFIX;
// slNsDeclaration = "xmlns:" + sl11Prefix + "=\"" + SL11_NS_URI + "\" xmlns:" + sl10Prefix + "=\"" + SL10_NS_URI + "\"";
//
// }
String certInfoRequest = MessageFormat.format(CERTINFO_REQUEST, new Object[] {sl11Prefix, sl10Prefix, slNsDeclaration});
String resDsigSignature = "resources/xmldata/CertInfoDsigSignature.xml";
try {
String dsigSignature = FileUtils.readResource(resDsigSignature, "UTF-8");
certInfoRequest = replaceTag(certInfoRequest, SIGNATURE_TAG, dsigSignature, true, 1);
return certInfoRequest;
}
catch (IOException ex) {
throw new BuildException("auth.04", new Object[] {resDsigSignature, ex.toString()});
}
}
}