aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java')
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java40
1 files changed, 29 insertions, 11 deletions
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java
index d8ebd85..22ef789 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java
@@ -106,6 +106,9 @@ public class VerifyXMLSignatureResponseBuilder {
private List adesFormResults = null;
private ExtendedCertificateCheckResult extCheckResult = null;
private Date signingTime;
+
+ private String signatureAlgorithm = null;
+
/**
* Get the <code>VerifyMLSignatureResponse</code> built so far.
*
@@ -121,7 +124,8 @@ public class VerifyXMLSignatureResponseBuilder {
xmlDsigManifestChecks,
certificateCheck,
adesFormResults,
- extCheckResult);
+ extCheckResult,
+ signatureAlgorithm);
}
public void setExtendedCertificateCheckResult(ExtendedCertificateCheckResult extCheckResult) {
@@ -162,7 +166,8 @@ public class VerifyXMLSignatureResponseBuilder {
boolean sscdSourceTSL,
boolean isTSLEnabledTrustprofile,
String issuerCountryCode,
- TslInfos tslInfos)
+ TslInfos tslInfos,
+ boolean isExtendedValidation)
throws MOAApplicationException {
CertificateValidationResult certResult =
@@ -178,6 +183,9 @@ public class VerifyXMLSignatureResponseBuilder {
qualifiedCertificate = checkQC;
+ if (isExtendedValidation)
+ signatureAlgorithm = result.getSignatureAlgorithmName();
+
// create the SignerInfo;
signerInfo =
factory.createSignerInfo(
@@ -192,6 +200,9 @@ public class VerifyXMLSignatureResponseBuilder {
result.getSigningTime(),
tslInfos);
+
+
+ //TODO: add hash algo. infos
// Create HashInputData Content objects
referenceDataList = result.getReferenceDataList();
if (profile.includeHashInputData()) {
@@ -364,7 +375,8 @@ public class VerifyXMLSignatureResponseBuilder {
inputDatas.add(buildInputData(
referenceData.getHashInputData(),
containerType,
- refererNumber));
+ refererNumber,
+ referenceData.getHashAlgorithmName()));
}
}
@@ -391,7 +403,8 @@ public class VerifyXMLSignatureResponseBuilder {
inputDatas.add(buildInputData(
referenceData.getReferenceInputData(),
containerType,
- refererNumber));
+ refererNumber,
+ referenceData.getHashAlgorithmName()));
}
}
@@ -407,11 +420,12 @@ public class VerifyXMLSignatureResponseBuilder {
*
* @param referringReferenceNumber see {@link InputData}
*
- * @return The corresponinding input data implementation.
- *
+ * @param hashAlg see {@link InputData}
+ *
+ * @return The corresponinding input data implementation.
* @throws MOAApplicationException An error occurred creating the result.
*/
- private Content buildInputData(DataObject dataObject, String partOf, int referringReferenceNumber)
+ private Content buildInputData(DataObject dataObject, String partOf, int referringReferenceNumber, String hashAlg)
throws MOAApplicationException {
if (dataObject instanceof BinaryDataObject) {
@@ -419,7 +433,8 @@ public class VerifyXMLSignatureResponseBuilder {
return new InputDataBinaryImpl(
factory.createContent(binaryData.getInputStream(), null),
partOf,
- referringReferenceNumber);
+ referringReferenceNumber,
+ hashAlg);
} else if (dataObject instanceof XMLDataObject) {
XMLDataObject xmlData = (XMLDataObject) dataObject;
List nodes = new ArrayList();
@@ -428,7 +443,8 @@ public class VerifyXMLSignatureResponseBuilder {
return new InputDataXMLImpl(
factory.createContent(new NodeListAdapter(nodes), null),
partOf,
- referringReferenceNumber);
+ referringReferenceNumber,
+ hashAlg);
} else { // dataObject instanceof XMLNodeListDataObject
// if the data in the NodeList can be converted back to valid XML,
// write it as XMLContent; otherwise, write it as Base64Content
@@ -443,7 +459,8 @@ public class VerifyXMLSignatureResponseBuilder {
return new InputDataXMLImpl(
factory.createContent(fragment.getChildNodes(), null),
partOf,
- referringReferenceNumber);
+ referringReferenceNumber,
+ hashAlg);
} catch (Exception e) {
// not successful -> fall through to the Base64Content
}
@@ -472,7 +489,8 @@ public class VerifyXMLSignatureResponseBuilder {
return new InputDataBinaryImpl(
factory.createContent(is, null),
partOf,
- referringReferenceNumber);
+ referringReferenceNumber,
+ hashAlg);
} catch (Exception e) {
throw new MOAApplicationException("2200", null);
}