aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedMultipartBKUConnector.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedMultipartBKUConnector.java')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedMultipartBKUConnector.java540
1 files changed, 42 insertions, 498 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedMultipartBKUConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedMultipartBKUConnector.java
index a3b2700..68ff62e 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedMultipartBKUConnector.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedMultipartBKUConnector.java
@@ -3,27 +3,21 @@
*/
package at.knowcenter.wag.egov.egiz.sig.connectors.bku;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
+import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException;
import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
-import at.knowcenter.wag.egov.egiz.exceptions.SignatureException;
import at.knowcenter.wag.egov.egiz.sig.SignatureData;
import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
import at.knowcenter.wag.egov.egiz.sig.SignatureResponse;
-import at.knowcenter.wag.egov.egiz.sig.X509Cert;
+import at.knowcenter.wag.egov.egiz.sig.connectors.Connector;
import at.knowcenter.wag.egov.egiz.sig.connectors.TemplateReplaces;
+import at.knowcenter.wag.egov.egiz.sig.sigid.DetachedIdFormatter;
import at.knowcenter.wag.egov.egiz.tools.CodingHelper;
import at.knowcenter.wag.egov.egiz.tools.FileHelper;
@@ -36,14 +30,9 @@ import at.knowcenter.wag.egov.egiz.tools.FileHelper;
*
* @author wprinz
*/
-public class DetachedMultipartBKUConnector
+public class DetachedMultipartBKUConnector implements Connector
{
/**
- * The SIG_ID prefix.
- */
- public static final String SIG_ID_PREFIX = "etsi-bku-detached@"; //$NON-NLS-1$
-
- /**
* The log.
*/
private static Log log = LogFactory.getLog(DetachedMultipartBKUConnector.class);
@@ -65,12 +54,10 @@ public class DetachedMultipartBKUConnector
*
* @param profile
* The profile from which the Environment should be assembled.
- * @throws SettingsException
- * f.e.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- public DetachedMultipartBKUConnector(String profile) throws SignatureException, SettingsException
+ public DetachedMultipartBKUConnector(String profile) throws ConnectorException
{
this.environment = new Environment(profile);
}
@@ -81,10 +68,10 @@ public class DetachedMultipartBKUConnector
* @param data
* The SignatureData.
* @return Returns the sign request xml to be sent.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- protected String prepareSignRequestDetached(SignatureData data) throws SignatureException
+ protected String prepareSignRequestDetached(SignatureData data) throws ConnectorException
{
log.debug("prepareSignRequestDetached:"); //$NON-NLS-1$
@@ -112,329 +99,26 @@ public class DetachedMultipartBKUConnector
* The response properties containing the response String and
* transport related information.
* @return Returns the extracted data encapsulated in a SignatureObject.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- public SignSignatureObject analyzeSignResponse(Properties response_properties) throws SignatureException
+ public SignSignatureObject analyzeSignResponse(Properties response_properties) throws ConnectorException
{
log.debug("analyzeSignResponse:"); //$NON-NLS-1$
String response_string = response_properties.getProperty(BKUPostConnection.RESPONSE_STRING_KEY);
- // TODO debug
- // try
- // {
- // FileOutputStream fos = new
- // FileOutputStream("C:\\wprinz\\Filer\\egiz2\\sign_response.utf8.xml");
- // //$NON-NLS-1$
- // OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
- // //$NON-NLS-1$
- // osw.write(response_string);
- // osw.close();
- // }
- // catch (Exception e)
- // {
- // log.error(e);
- // }
-
- checkResponseForError(response_string);
+ BKUHelper.checkResponseForError(response_string);
- SignSignatureObject so = parseCreateXMLResponse(response_string);
+ SignSignatureObject so = BKUHelper.parseCreateXMLResponse(response_string, new DetachedIdFormatter());
log.debug("analyzeSignResponse finished."); //$NON-NLS-1$
return so;
}
- /**
- * Checks the response xml for an error description and if found throws an
- * appropriate exception.
- *
- * @param response_string
- * The response xml.
- * @throws SignatureException
- * f.e.
- */
- protected void checkResponseForError(String response_string) throws SignatureException
- {
- Pattern erc_p_s = Pattern.compile("<[\\w]*:?ErrorCode>"); //$NON-NLS-1$
- Pattern erc_p_e = Pattern.compile("</[\\w]*:?ErrorCode>"); //$NON-NLS-1$
- Matcher erc_m_s = erc_p_s.matcher(response_string);
- Matcher erc_m_e = erc_p_e.matcher(response_string);
-
- if (erc_m_s.find() && erc_m_e.find())
- {
- log.error("Found error in response: " + response_string); //$NON-NLS-1$
-
- Pattern erm_p_s = Pattern.compile("<[\\w]*:?Info>"); //$NON-NLS-1$
- Pattern erm_p_e = Pattern.compile("</[\\w]*:?Info>"); //$NON-NLS-1$
- Matcher erm_m_s = erm_p_s.matcher(response_string);
- Matcher erm_m_e = erm_p_e.matcher(response_string);
- SignatureException se = new SignatureException(0, "BKUSigExc"); //$NON-NLS-1$
- String error_code = response_string.substring(erc_m_s.end(), erc_m_e.start());
- se.setExternalErrorCode(error_code);
- if (erm_m_s.find() && erm_m_e.find())
- {
- String error_mess = response_string.substring(erm_m_s.end(), erm_m_e.start());
- se.setExternalErrorMessage(error_mess);
- }
- throw se;
- }
- }
-
- /**
- * This method parses the BKU-Response string.
- *
- * <p>
- * It separates the SignatureValue, X509IssuerName, SigningTime,
- * X509SerialNumber, X509Certificate, CertDigest, DigestValue and the
- * signation id-s. If the X509Certificate is extracted it would be stored in
- * the certificates directory.
- * </p>
- *
- * @param xmlResponse
- * The response string.
- * @return Returns the parsed signature object holding the data.
- *
- * @throws SignatureException
- * ErrorCode (303, 304)
- * @see SignatureObject
- * @see CodingHelper
- * @see X509Cert
- */
- private SignSignatureObject parseCreateXMLResponse(String xmlResponse) throws SignatureException
- {
- Pattern sig_val_p_s = Pattern.compile("<[\\w]*:?SignatureValue>"); //$NON-NLS-1$
- Pattern sig_val_p_e = Pattern.compile("</[\\w]*:?SignatureValue>"); //$NON-NLS-1$
- Pattern iss_nam_p_s = Pattern.compile("<[\\w]*:?X509IssuerName>"); //$NON-NLS-1$
- Pattern iss_nam_p_e = Pattern.compile("</[\\w]*:?X509IssuerName>"); //$NON-NLS-1$
- Pattern sig_tim_p_s = Pattern.compile("<[\\w]*:?SigningTime>"); //$NON-NLS-1$
- Pattern sig_tim_p_e = Pattern.compile("</[\\w]*:?SigningTime>"); //$NON-NLS-1$
- Pattern ser_num_p_s = Pattern.compile("<[\\w]*:?X509SerialNumber>"); //$NON-NLS-1$
- Pattern ser_num_p_e = Pattern.compile("</[\\w]*:?X509SerialNumber>"); //$NON-NLS-1$
- Pattern sig_cer_p_s = Pattern.compile("<[\\w]*:?X509Certificate>"); //$NON-NLS-1$
- Pattern sig_cer_p_e = Pattern.compile("</[\\w]*:?X509Certificate>"); //$NON-NLS-1$
-
- // Pattern sig_cer_d_p_s = Pattern.compile("<[\\w]*:?CertDigest>");
- // //$NON-NLS-1$
- // Pattern sig_cer_d_p_e = Pattern.compile("</[\\w]*:?CertDigest>");
- // //$NON-NLS-1$
- // Pattern dig_val_p_s = Pattern.compile("<[\\w]*:?DigestValue>");
- // //$NON-NLS-1$
- // Pattern dig_val_p_e = Pattern.compile("</[\\w]*:?DigestValue>");
- // //$NON-NLS-1$
-
- Matcher sig_val_m_s = sig_val_p_s.matcher(xmlResponse);
- Matcher sig_val_m_e = sig_val_p_e.matcher(xmlResponse);
- Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
- Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
- Matcher sig_tim_m_s = sig_tim_p_s.matcher(xmlResponse);
- Matcher sig_tim_m_e = sig_tim_p_e.matcher(xmlResponse);
- Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
- Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
- Matcher sig_cer_m_s = sig_cer_p_s.matcher(xmlResponse);
- Matcher sig_cer_m_e = sig_cer_p_e.matcher(xmlResponse);
-
- // Matcher sig_cer_d_m_s = sig_cer_d_p_s.matcher(xmlResponse);
- // Matcher sig_cer_d_m_e = sig_cer_d_p_e.matcher(xmlResponse);
- // Matcher dig_val_m_s = dig_val_p_s.matcher(xmlResponse);
- // Matcher dig_val_m_e = dig_val_p_e.matcher(xmlResponse);
-
- // SignatureValue
- String sig_val = null;
- if (sig_val_m_s.find() && sig_val_m_e.find())
- {
- sig_val = removeAllWhitespace(xmlResponse.substring(sig_val_m_s.end(), sig_val_m_e.start()));
- }
- log.debug("sig_val = " + sig_val); //$NON-NLS-1$
-
- // X509IssuerName
- String iss_nam = null;
- if (iss_nam_m_s.find() && iss_nam_m_e.find())
- {
- iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
- }
- log.debug("iss_nam = " + iss_nam); //$NON-NLS-1$
-
- // X509SerialNumber
- String ser_num = null;
- if (ser_num_m_s.find() && ser_num_m_e.find())
- {
- ser_num = removeAllWhitespace(xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start()));
- }
- log.debug("ser_num = " + ser_num); //$NON-NLS-1$
-
- // SigningTime
- String sig_tim = null;
- if (sig_tim_m_s.find() && sig_tim_m_e.find())
- {
- sig_tim = xmlResponse.substring(sig_tim_m_s.end(), sig_tim_m_e.start());
- }
- log.debug("sig_tim = " + sig_tim); //$NON-NLS-1$
-
- // CertDigest
- // if (sig_cer_d_m_s.find() && sig_cer_d_m_e.find())
- // {
- // String cert_digest = xmlResponse.substring(sig_cer_d_m_s.end(),
- // sig_cer_d_m_e.start());
- // if (dig_val_m_s.find() && dig_val_m_e.find())
- // {
- // sig_dig = cert_digest.substring(dig_val_m_s.end(), dig_val_m_e.start());
- // //sigObj.setX509CertificateDigest(sig_dig);
- // }
- // }
-
- // X509Certificate
- X509Certificate cert = null;
- if (sig_cer_m_s.find() && sig_cer_m_e.find())
- {
- String sig_cer = removeAllWhitespace(xmlResponse.substring(sig_cer_m_s.end(), sig_cer_m_e.start()));
-
- try
- {
- byte[] der = CodingHelper.decodeBase64(sig_cer);
- ByteArrayInputStream bais = new ByteArrayInputStream(der);
- CertificateFactory cf = CertificateFactory.getInstance("X.509"); //$NON-NLS-1$
- cert = (X509Certificate) cf.generateCertificate(bais);
- bais.close();
- }
- catch (UnsupportedEncodingException e)
- {
- log.error(e);
- throw new SignatureException(300, e);
- }
- catch (CertificateException e)
- {
- log.error(e);
- throw new SignatureException(300, e);
- }
- catch (IOException e)
- {
- log.error(e);
- throw new SignatureException(300, e);
- }
- }
- log.debug("X509Certificate = " + cert); //$NON-NLS-1$
-
- if (log.isDebugEnabled())
- {
-
- String cert_iss = cert.getIssuerDN().getName();
- log.debug("certificate's issuer = " + cert_iss); //$NON-NLS-1$
- log.debug("response's issuer = " + iss_nam); //$NON-NLS-1$
- log.debug("issuer matches = " + cert_iss.equals(iss_nam)); //$NON-NLS-1$
- log.debug("ser number matches = " + cert.getSerialNumber().toString().equals(ser_num)); //$NON-NLS-1$
- }
-
- // extract Subject Name from X509Certificate
- // if (sig_cer_m_s.find() && sig_cer_m_e.find())
- // {
- // sig_cer = xmlResponse.substring(sig_cer_m_s.end(), sig_cer_m_e.start());
- // sig_cer = sig_cer.replaceAll("\\s", "");
- // //sigObj.setX509Certificate(sig_cer);
- // X509Cert cert = X509Cert.initByString(sig_cer);
- // if (cert.isX509Cert())
- // {
- // //sigObj.setX509Certificate(cert.getCertString());
- // String serial_num = cert.getSerialNumber();
- // String subject_name = cert.getSubjectName();
- // if (!ser_num.equals(serial_num))
- // {
- // SignatureException se = new SignatureException(303, "Serialnumber of
- // certificate and tag X509SerialNumber differs!");
- // throw se;
- // }
- // //sigObj.setSignationName(subject_name);
- // }
- // }
-
- // extract Signature Id's
- String[] ids = new String[5];
- ids[0] = extractId(xmlResponse, "signature-"); //$NON-NLS-1$
- ids[1] = extractId(xmlResponse, "signed-data-reference-"); //$NON-NLS-1$
- ids[2] = extractId(xmlResponse, "signed-data-object-"); //$NON-NLS-1$
- ids[3] = extractId(xmlResponse, "etsi-data-reference-"); //$NON-NLS-1$
- ids[4] = extractId(xmlResponse, "etsi-data-object-"); //$NON-NLS-1$
- String final_ids = formatSigIds(ids);
-
- SignSignatureObject so = new SignSignatureObject();
- so.date = sig_tim;
- so.issuer = iss_nam;
- so.signatureValue = sig_val;
- so.x509Certificate = cert;
-
- so.id = final_ids;
-
- return so;
- }
-
- /**
- * Removes all whitespaces ("\\s") from the String.
- *
- * @param str
- * The String.
- * @return The String with all whitespaces removed.
- */
- protected static String removeAllWhitespace(String str)
- {
- return str.replaceAll("\\s", ""); //$NON-NLS-1$ //$NON-NLS-2$
- }
- /**
- * This emthod extracts id-values from a text. The id is given by the name.
- *
- * @param text
- * the id-value that should extract from
- * @param name
- * the id-key
- * @return the value of the given key in the text
- */
- private String extractId(String text, String name)
- {
- String id = null;
- int start_idx = text.indexOf(name) + name.length();
- int end_idx = text.indexOf("\"", start_idx); //$NON-NLS-1$
-
- final int quot_end_idx = end_idx;
- final int squot_end_idx = text.indexOf("'", start_idx); //$NON-NLS-1$
- end_idx = Math.min(quot_end_idx, squot_end_idx);
- id = text.substring(start_idx, end_idx);
- log.info("extract id:" + name + id); //$NON-NLS-1$
- if (log.isDebugEnabled())
- {
- log.debug("extract id:" + name + id); //$NON-NLS-1$
- }
- return id;
- }
- protected String formatSigIds(String[] sigIds) throws SignatureException
- {
- // ids algorithm:
- String join = ""; //$NON-NLS-1$
- String base = null;
- for (int arr_idx = 0; arr_idx < sigIds.length; arr_idx++)
- {
- String id = sigIds[arr_idx];
- if (log.isDebugEnabled())
- {
- log.debug("Set BKU id:" + id); //$NON-NLS-1$
- }
- int id_idx = id.lastIndexOf("-"); //$NON-NLS-1$
- if (arr_idx == 0)
- {
- base = id.substring(0, id_idx);
- }
- String cur_id = id.substring(id_idx + 1);
- if (cur_id.equalsIgnoreCase("")) //$NON-NLS-1$
- {
- cur_id = "0"; //$NON-NLS-1$
- }
- join += "-" + cur_id; //$NON-NLS-1$
- }
- String ids = base + "@" + join.substring(1); //$NON-NLS-1$
- String final_ids = SIG_ID_PREFIX + ids;
- return final_ids;
- }
public static String[] parseSigIds(String sig_ids)
{
@@ -505,11 +189,11 @@ public class DetachedMultipartBKUConnector
* The data.
* @return Returns the response properties containing among others the
* response XML.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
protected Properties sendRequest(String url, String request_string,
- SignatureData data) throws SignatureException
+ SignatureData data) throws ConnectorException
{
try
{
@@ -518,7 +202,7 @@ public class DetachedMultipartBKUConnector
}
catch (Exception e)
{
- SignatureException se = new SignatureException(320, e);
+ ConnectorException se = new ConnectorException(320, e);
throw se;
}
}
@@ -529,10 +213,10 @@ public class DetachedMultipartBKUConnector
* @param data
* The data to be signed.
* @return Returns the signature object containing the signature data.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- public SignSignatureObject doSign(SignatureData data) throws SignatureException
+ public SignSignatureObject doSign(SignatureData data) throws ConnectorException
{
log.debug("doSign:"); //$NON-NLS-1$
@@ -559,10 +243,10 @@ public class DetachedMultipartBKUConnector
* @param so
* The signature object with the signature information.
* @return Returns the SignatureResponse with the result of the verification.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws SignatureException
+ public SignatureResponse doVerify(SignatureData data, SignSignatureObject so) throws ConnectorException
{
log.debug("doVerify:"); //$NON-NLS-1$
@@ -601,11 +285,11 @@ public class DetachedMultipartBKUConnector
* @param so
* The signature information object.
* @return Returns the verify request xml to be sent.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
public String prepareVerifyRequestDetached(SignatureData data,
- SignSignatureObject so) throws SignatureException
+ SignSignatureObject so) throws ConnectorException
{
String verify_request_template = this.environment.getVerifyRequestTemplate();
@@ -641,10 +325,10 @@ public class DetachedMultipartBKUConnector
* @param so
* The signature object containing the signature information.
* @return Returns the XML content.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- public String prepareXMLContent(SignatureData data, SignSignatureObject so) throws SignatureException
+ public String prepareXMLContent(SignatureData data, SignSignatureObject so) throws ConnectorException
{
log.debug("prepareXMLContent:"); //$NON-NLS-1$
try
@@ -725,7 +409,7 @@ public class DetachedMultipartBKUConnector
catch (Exception e)
{
log.debug(e);
- throw new SignatureException(310, e);
+ throw new ConnectorException(310, e);
}
}
@@ -735,167 +419,23 @@ public class DetachedMultipartBKUConnector
* @param response_properties
* The response properties containing the response XML.
* @return Returns the SignatureResponse containing the verification result.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- public SignatureResponse analyzeVerifyResponse(Properties response_properties) throws SignatureException
+ public SignatureResponse analyzeVerifyResponse(Properties response_properties) throws ConnectorException
{
log.debug("analyzeVerifyResponse:"); //$NON-NLS-1$
String response_string = response_properties.getProperty(BKUPostConnection.RESPONSE_STRING_KEY);
- checkResponseForError(response_string);
+ BKUHelper.checkResponseForError(response_string);
- SignatureResponse signature_response = parseVerifyXMLResponse(response_string);
+ SignatureResponse signature_response = BKUHelper.parseVerifyXMLResponse(response_string);
log.debug("analyzeVerifyResponse finished."); //$NON-NLS-1$
return signature_response;
}
- /**
- * This method parses the verify response string and return a
- * SignatureResponse object. The SignatureResponse object is filled out by the
- * response values from the BKU-response.
- *
- * @param xmlResponse
- * the response values from the BKU-verify request
- * @return SignatureResponse object
- * @see SignatureResponse
- */
- private SignatureResponse parseVerifyXMLResponse(String xmlResponse)
- {
- log.debug("parseVerifyXMLResponse:"); //$NON-NLS-1$
-
- Pattern sub_nam_p_s = Pattern.compile("<dsig:X509SubjectName>"); //$NON-NLS-1$
- Pattern sub_nam_p_e = Pattern.compile("</dsig:X509SubjectName>"); //$NON-NLS-1$
- Pattern iss_nam_p_s = Pattern.compile("<dsig:X509IssuerName>"); //$NON-NLS-1$
- Pattern iss_nam_p_e = Pattern.compile("</dsig:X509IssuerName>"); //$NON-NLS-1$
- Pattern ser_num_p_s = Pattern.compile("<dsig:X509SerialNumber>"); //$NON-NLS-1$
- Pattern ser_num_p_e = Pattern.compile("</dsig:X509SerialNumber>"); //$NON-NLS-1$
-
- Pattern sig_chk_p_s = Pattern.compile("<sl:SignatureCheck>"); //$NON-NLS-1$
- Pattern sig_chk_p_e = Pattern.compile("</sl:SignatureCheck>"); //$NON-NLS-1$
- Pattern man_chk_p_s = Pattern.compile("<sl:SignatureManifestCheck>"); //$NON-NLS-1$
- Pattern man_chk_p_e = Pattern.compile("</sl:SignatureManifestCheck>"); //$NON-NLS-1$
- Pattern cer_chk_p_s = Pattern.compile("<sl:CertificateCheck>"); //$NON-NLS-1$
- Pattern cer_chk_p_e = Pattern.compile("</sl:CertificateCheck>"); //$NON-NLS-1$
-
- // [tknall] start qualified certificate
- Pattern cert_qualified_p = Pattern.compile("<sl:QualifiedCertificate/>"); //$NON-NLS-1$
- Matcher cert_qualified_m = cert_qualified_p.matcher(xmlResponse);
- // [tknall] stop qualified certificate
-
- Pattern code_p_s = Pattern.compile("<sl:Code>"); //$NON-NLS-1$
- Pattern code_p_e = Pattern.compile("</sl:Code>"); //$NON-NLS-1$
- Pattern info_p_s = Pattern.compile("<sl:Info>"); //$NON-NLS-1$
- Pattern info_p_e = Pattern.compile("</sl:Info>"); //$NON-NLS-1$
-
- Pattern cert_p_s = Pattern.compile("<dsig:X509Certificate>"); //$NON-NLS-1$
- Pattern cert_p_e = Pattern.compile("</dsig:X509Certificate>"); //$NON-NLS-1$
-
- Matcher sub_nam_m_s = sub_nam_p_s.matcher(xmlResponse);
- Matcher sub_nam_m_e = sub_nam_p_e.matcher(xmlResponse);
- Matcher iss_nam_m_s = iss_nam_p_s.matcher(xmlResponse);
- Matcher iss_nam_m_e = iss_nam_p_e.matcher(xmlResponse);
- Matcher ser_num_m_s = ser_num_p_s.matcher(xmlResponse);
- Matcher ser_num_m_e = ser_num_p_e.matcher(xmlResponse);
-
- Matcher sig_chk_m_s = sig_chk_p_s.matcher(xmlResponse);
- Matcher sig_chk_m_e = sig_chk_p_e.matcher(xmlResponse);
- Matcher man_chk_m_s = man_chk_p_s.matcher(xmlResponse);
- Matcher man_chk_m_e = man_chk_p_e.matcher(xmlResponse);
- Matcher cer_chk_m_s = cer_chk_p_s.matcher(xmlResponse);
- Matcher cer_chk_m_e = cer_chk_p_e.matcher(xmlResponse);
-
- Matcher cert_m_s = cert_p_s.matcher(xmlResponse);
- Matcher cert_m_e = cert_p_e.matcher(xmlResponse);
-
- SignatureResponse sig_res = new SignatureResponse();
-
- // [tknall] start qualified certificate
- sig_res.setQualifiedCertificate(cert_qualified_m.find());
- // [tknall] stop qualified certificate
-
- if (sub_nam_m_s.find() && sub_nam_m_e.find())
- {
- String sub_nam = xmlResponse.substring(sub_nam_m_s.end(), sub_nam_m_e.start());
- sig_res.setX509SubjectName(sub_nam);
- }
- if (iss_nam_m_s.find() && iss_nam_m_e.find())
- {
- String iss_nam = xmlResponse.substring(iss_nam_m_s.end(), iss_nam_m_e.start());
- sig_res.setX509IssuerName(iss_nam);
- }
- if (ser_num_m_s.find() && ser_num_m_e.find())
- {
- String ser_num = xmlResponse.substring(ser_num_m_s.end(), ser_num_m_e.start());
- sig_res.setX509SerialNumber(ser_num);
- }
- if (sig_chk_m_s.find() && sig_chk_m_e.find())
- {
- String sig_chk = xmlResponse.substring(sig_chk_m_s.end(), sig_chk_m_e.start());
- Matcher code_m_s = code_p_s.matcher(sig_chk);
- Matcher code_m_e = code_p_e.matcher(sig_chk);
- Matcher info_m_s = info_p_s.matcher(sig_chk);
- Matcher info_m_e = info_p_e.matcher(sig_chk);
- if (code_m_s.find() && code_m_e.find())
- {
- String code = sig_chk.substring(code_m_s.end(), code_m_e.start());
- sig_res.setSignatureCheckCode(code);
- }
- if (info_m_s.find() && info_m_e.find())
- {
- String info = sig_chk.substring(info_m_s.end(), info_m_e.start());
- sig_res.setSignatureCheckInfo(info);
- }
- }
- if (man_chk_m_s.find() && man_chk_m_e.find())
- {
- String man_chk = xmlResponse.substring(man_chk_m_s.end(), man_chk_m_e.start());
- Matcher code_m_s = code_p_s.matcher(man_chk);
- Matcher code_m_e = code_p_e.matcher(man_chk);
- Matcher info_m_s = info_p_s.matcher(man_chk);
- Matcher info_m_e = info_p_e.matcher(man_chk);
- if (code_m_s.find() && code_m_e.find())
- {
- String code = man_chk.substring(code_m_s.end(), code_m_e.start());
- sig_res.setSignatureManifestCheckCode(code);
- }
- if (info_m_s.find() && info_m_e.find())
- {
- String info = man_chk.substring(info_m_s.end(), info_m_e.start());
- sig_res.setSignatureManifestCheckInfo(info);
- }
- }
- if (cer_chk_m_s.find() && cer_chk_m_e.find())
- {
- String cer_chk = xmlResponse.substring(cer_chk_m_s.end(), cer_chk_m_e.start());
- Matcher code_m_s = code_p_s.matcher(cer_chk);
- Matcher code_m_e = code_p_e.matcher(cer_chk);
- Matcher info_m_s = info_p_s.matcher(cer_chk);
- Matcher info_m_e = info_p_e.matcher(cer_chk);
- if (code_m_s.find() && code_m_e.find())
- {
- String code = cer_chk.substring(code_m_s.end(), code_m_e.start());
- sig_res.setCertificateCheckCode(code);
- }
- if (info_m_s.find() && info_m_e.find())
- {
- String info = cer_chk.substring(info_m_s.end(), info_m_e.start());
- sig_res.setCertificateCheckInfo(info);
- }
- }
- if (cert_m_s.find() && cert_m_e.find())
- {
- String cert_string = xmlResponse.substring(cert_m_s.end(), cert_m_e.start());
-
- X509Cert resp_cert = X509Cert.initByString(cert_string);
- sig_res.setCertificate(resp_cert);
- }
-
- log.debug("parseVerifyXMLResponse finished."); //$NON-NLS-1$
- return sig_res;
- }
/**
* Holds environment configuration information like templates.
@@ -965,14 +505,20 @@ public class DetachedMultipartBKUConnector
*
* @param profile
* The configuration profile.
- * @throws SettingsException
- * f.e.
- * @throws SignatureException
+ * @throws ConnectorException
* f.e.
*/
- public Environment(String profile) throws SettingsException, SignatureException
+ public Environment(String profile) throws ConnectorException
{
- SettingsReader settings = SettingsReader.getInstance();
+ SettingsReader settings = null;
+ try
+ {
+ settings = SettingsReader.getInstance();
+ }
+ catch (SettingsException e)
+ {
+ throw new ConnectorException(300, e);
+ }
this.sign_keybox_identifier = getConnectorValueFromProfile(settings, profile, SIGN_KEYBOX_IDENTIFIER_KEY);
@@ -980,8 +526,7 @@ public class DetachedMultipartBKUConnector
this.sign_request_template = FileHelper.readFromFile(SettingsReader.relocateFile(sign_request_filename));
if (this.sign_request_template == null)
{
- // TODO make this a settings exception
- throw new SignatureException(300, "Can not read the create xml request template"); //$NON-NLS-1$
+ throw new ConnectorException(300, "Can not read the create xml request template"); //$NON-NLS-1$
}
this.sign_url = getConnectorValueFromProfile(settings, profile, SIGN_URL_KEY);
@@ -991,7 +536,7 @@ public class DetachedMultipartBKUConnector
if (this.verify_request_template == null)
{
// TODO make this a settings exception
- throw new SignatureException(300, "Can not read the verify xml request template"); //$NON-NLS-1$
+ throw new ConnectorException(300, "Can not read the verify xml request template"); //$NON-NLS-1$
}
String verify_filename = getConnectorValueFromProfile(settings, profile, VERIFY_TEMPLATE_KEY);
@@ -999,7 +544,7 @@ public class DetachedMultipartBKUConnector
if (this.verify_template == null)
{
// TODO make this a settings exception
- throw new SignatureException(300, "Can not read the verify template"); //$NON-NLS-1$
+ throw new ConnectorException(300, "Can not read the verify template"); //$NON-NLS-1$
}
this.verify_url = getConnectorValueFromProfile(settings, profile, VERIFY_URL_KEY);
@@ -1112,6 +657,5 @@ public class DetachedMultipartBKUConnector
}
return value;
}
-
}
}