package at.gv.egovernment.moa.id.auth.builder;
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
import at.gv.egovernment.moa.id.BuildException;
import at.gv.egovernment.moa.util.Constants;
import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.StringUtils;
/**
* 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(boolean slVersion12) 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);
return certInfoRequest;
}
catch (IOException ex) {
throw new BuildException("auth.04", new Object[] {resDsigSignature, ex.toString()});
}
}
}