diff options
author | ferbas <ferbas@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2009-10-27 11:14:26 +0000 |
---|---|---|
committer | ferbas <ferbas@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2009-10-27 11:14:26 +0000 |
commit | c623dc5a78e03c5f944efb4cb8d628797a1c215f (patch) | |
tree | a91d0b0b44681647340ed39b90c9023b20cdd1a2 /src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca | |
parent | 6d231f9014712a3b66b876b2a6ae7bc0ed32cb75 (diff) | |
download | pdf-as-3-c623dc5a78e03c5f944efb4cb8d628797a1c215f.tar.gz pdf-as-3-c623dc5a78e03c5f944efb4cb8d628797a1c215f.tar.bz2 pdf-as-3-c623dc5a78e03c5f944efb4cb8d628797a1c215f.zip |
added support for dynamic algorithm suites / acos04
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@363 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca')
-rw-r--r-- | src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java | 28 | ||||
-rw-r--r-- | src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java | 8 |
2 files changed, 20 insertions, 16 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java index bcf40fc..a16dbf8 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/LocRefDetachedMOCCAConnector.java @@ -8,6 +8,9 @@ import java.util.regex.Pattern; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteObject;
+import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil;
import at.gv.egiz.pdfas.exceptions.ErrorCode;
import at.gv.egiz.pdfas.framework.ConnectorParameters;
import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
@@ -17,6 +20,7 @@ import at.knowcenter.wag.egov.egiz.exceptions.SettingsException; import at.knowcenter.wag.egov.egiz.sig.SignatureData;
import at.knowcenter.wag.egov.egiz.sig.SignatureResponse;
import at.knowcenter.wag.egov.egiz.sig.connectors.Connector;
+import at.knowcenter.wag.egov.egiz.sig.connectors.ConnectorEnvironment;
import at.knowcenter.wag.egov.egiz.sig.connectors.LocalConnector;
import at.knowcenter.wag.egov.egiz.sig.connectors.TemplateReplaces;
import at.knowcenter.wag.egov.egiz.sig.connectors.bku.BKUHelper;
@@ -204,23 +208,19 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { public String prepareXMLContent(SignatureData data, SignSignatureObject so) throws ConnectorException {
log.debug("prepareXMLContent:");
try {
- String verify_template = this.environment.getVerifyTemplate();
-
+
String ids_string = so.getSigID();
String sigId = this.parseSigId(ids_string);
X509Certificate cert = so.getX509Certificate();
- String cert_alg = this.environment.getCertAlgEcdsa();
- if (cert.getPublicKey().getAlgorithm().indexOf("RSA") >= 0)
- {
- cert_alg = this.environment.getCertAlgRsa();
- }
-
- // cert alg replace
- String verify_xml = verify_template.replaceFirst(TemplateReplaces.CERT_ALG_REPLACE, cert_alg);
+
+
+ // dferbas
+ AlgorithmSuiteObject algSuite = new AlgorithmSuiteObject();
+ String verify_xml = AlgorithmSuiteUtil.evaluateReplaceAlgs(algSuite, this.environment, so);
// data digest replace
- byte[] data_value_hash = CodingHelper.buildDigest(data.getDataSource());
+ byte[] data_value_hash = CodingHelper.buildDigest(data.getDataSource(), algSuite.getDataDigestMethod());
String object_data_hash = CodingHelper.encodeBase64(data_value_hash);
// template replacements
@@ -230,7 +230,7 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { // X.509 Certificate replace
byte[] der = cert.getEncoded();
- byte[] cert_hash = CodingHelper.buildDigest(der);
+ byte[] cert_hash = CodingHelper.buildDigest(der, algSuite.getCertDigestMethod());
String certDigest = CodingHelper.encodeBase64(cert_hash);
String x509_cert_string = CodingHelper.encodeBase64(der);
verify_xml = verify_xml.replaceFirst(TemplateReplaces.X509_CERTIFICATE_REPLACE, x509_cert_string);
@@ -252,7 +252,7 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { String string_to_be_hashed = matcher.group(1);
log.debug("SignedProperties string to be hashed: " + string_to_be_hashed);
final byte[] bytes_to_be_hashed = string_to_be_hashed.getBytes("UTF-8");
- byte[] sig_prop_code = CodingHelper.buildDigest(bytes_to_be_hashed);
+ byte[] sig_prop_code = CodingHelper.buildDigest(bytes_to_be_hashed, algSuite.getPropertiesDigestMethod());
String sig_prop_hash = CodingHelper.encodeBase64(sig_prop_code);
verify_xml = verify_xml.replaceFirst(TemplateReplaces.DIGEST_VALUE_SIGNED_PROPERTIES_REPLACE, sig_prop_hash);
@@ -270,7 +270,7 @@ public class LocRefDetachedMOCCAConnector implements Connector, LocalConnector { * Holds environment configuration information like templates.
* @author wprinz
*/
- public static class Environment {
+ public static class Environment extends ConnectorEnvironment {
/**
* The configuration key of the sign keybox identifier.
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java index f13b5af..1a68eca 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/mocca/MOCCAHelper.java @@ -12,6 +12,8 @@ import java.util.regex.Pattern; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.pdfas.algorithmSuite.AlgorithmSuiteUtil;
import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException;
import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
import at.knowcenter.wag.egov.egiz.sig.X509Cert;
@@ -134,10 +136,12 @@ public final class MOCCAHelper { log.debug("issuer matches = " + cert_iss.equals(iss_nam));
log.debug("ser number matches = " + cert.getSerialNumber().toString().equals(ser_num));
}
-
+
// extract Signature Id's
String[] ids = extractIds(xmlResponse);
- String final_ids = id_formatter.formatIds(ids);
+ // dferbas
+ String algs = AlgorithmSuiteUtil.extractAlgorithmSuiteString(xmlResponse);
+ String final_ids = id_formatter.formatIds(ids, algs);
SignSignatureObject so = new SignSignatureObject();
so.date = sig_tim;
|