aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml59
-rw-r--r--README.md85
-rw-r--r--moaSig/build.gradle32
-rw-r--r--moaSig/common/build.gradle18
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java26
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java161
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java21
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java25
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java92
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java15
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java29
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java645
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java1153
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java344
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java18
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java33
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java160
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java243
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java30
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java55
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java73
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java46
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java29
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java55
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java469
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java15
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java15
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java116
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java27
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java399
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java47
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java118
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java159
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java50
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java55
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java29
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java477
-rw-r--r--moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java32
-rw-r--r--moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd369
-rw-r--r--moaSig/common/src/test/java/console/SchemaValidationTest.java52
-rw-r--r--moaSig/common/src/test/resources/zuse/msg.xml7
-rw-r--r--moaSig/gradle/wrapper/gradle-wrapper.jarbin55616 -> 55627 bytes
-rw-r--r--moaSig/gradle/wrapper/gradle-wrapper.properties4
-rwxr-xr-xmoaSig/gradlew22
-rw-r--r--moaSig/gradlew.bat18
-rw-r--r--moaSig/libs/iaik_jce_full-5.62_moa.jar (renamed from moaSig/libs/iaik_jce_full_signed-5.61_MOA.jar)bin1318695 -> 1341167 bytes
-rw-r--r--moaSig/libs/iaik_moa-2.07.jar (renamed from moaSig/libs/iaik_moa-2.06.jar)bin523822 -> 523817 bytes
-rw-r--r--moaSig/libs/iaik_pki_module-2.02_moa.jar (renamed from moaSig/libs/iaik_pki_module-2.01_moa.jar)bin627259 -> 627372 bytes
-rw-r--r--moaSig/libs/pdfbox-2.0.13.jarbin2544500 -> 0 bytes
-rw-r--r--moaSig/libs/pdfbox-app-2.0.9.jarbin8273031 -> 0 bytes
-rw-r--r--moaSig/libs/pdfbox-tools-2.0.13.jarbin76785 -> 0 bytes
-rw-r--r--moaSig/libs/preflight-2.0.13.jarbin246609 -> 0 bytes
-rw-r--r--moaSig/libs/preflight-app-2.0.13.jarbin9149989 -> 0 bytes
-rw-r--r--moaSig/libs/tsl-lib-2.0.3.jarbin978757 -> 0 bytes
-rw-r--r--moaSig/moa-asic/build.gradle16
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java16
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java4
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java56
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java278
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java4
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java48
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java7
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java6
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java202
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java27
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java62
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java107
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java101
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java71
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java67
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java9
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java12
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java250
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java29
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java27
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java11
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java11
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java8
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java11
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java16
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java9
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java9
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java12
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java36
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java41
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java39
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java8
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java8
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java8
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java8
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java8
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java82
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java50
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java293
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java345
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java47
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java209
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java66
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java79
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java206
-rw-r--r--moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java72
-rw-r--r--moaSig/moa-sig-lib/build.gradle44
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java44
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java76
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java84
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java36
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java57
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java1195
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java36
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java43
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java17
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java9
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java17
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java31
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java17
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java25
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java51
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java41
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java9
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java26
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java3
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java16
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java50
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java55
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java24
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java76
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java65
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java78
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java29
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java70
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java33
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java6
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java32
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java10
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java21
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java29
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java19
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java10
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java20
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java10
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java21
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java10
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java26
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java27
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java74
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java85
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java80
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java9
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java19
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java17
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java20
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java1048
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java19
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java137
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java10
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java134
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java4
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java4
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java10
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java17
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java100
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java43
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java106
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java16
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java16
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java20
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java9
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java220
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java325
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java9
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java8
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java23
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java23
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java26
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java8
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java214
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java113
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java243
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java82
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java246
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java310
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java601
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java149
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java216
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java164
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java184
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java440
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java612
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java25
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java23
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java8
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java17
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java9
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java9
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java32
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java21
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java8
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java13
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java16
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java10
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java34
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java11
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java3
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java18
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java3
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java19
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java7
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java57
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java59
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java277
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java23
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java1943
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java689
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java26
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java30
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java35
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java57
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java37
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java58
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java19
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java233
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java288
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java46
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java2
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java16
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java87
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java104
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java92
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java64
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java8
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java49
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java25
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java21
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java173
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java131
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java143
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java32
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java361
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java47
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java33
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java93
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java29
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java27
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java18
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java27
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java25
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java53
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java12
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java15
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java21
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java14
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java45
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java31
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java43
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java350
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java51
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java320
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java18
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java57
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java43
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java2
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java40
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java272
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java529
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java887
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java57
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java50
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java50
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java895
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java83
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java246
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java47
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java187
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java32
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java22
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java38
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java165
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java259
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyXMLSignatureResponseBuilder.java546
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java532
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java479
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java1310
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java103
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java37
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java27
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java37
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java17
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java67
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java52
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java2
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java287
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java21
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java27
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java43
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java106
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java94
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java198
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java430
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java184
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java720
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java196
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java126
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java64
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java32
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java24
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java92
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java100
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java24
-rw-r--r--moaSig/moa-sig/build.gradle103
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java31
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java192
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java94
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java391
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java224
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java858
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java295
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java58
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java63
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java51
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java435
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java424
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java126
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java22
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java38
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java36
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java8
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java24
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java16
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java187
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java215
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java50
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java98
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java60
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java86
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java25
-rw-r--r--moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java167
-rw-r--r--moaSig/moa-sig/src/main/resources/log4j.properties11
-rw-r--r--moaSig/moa-sig/src/main/resources/logback.xml49
-rw-r--r--moaSig/settings.gradle1
-rw-r--r--release-infos/ext_libs/iaik_jce_full_signed-5.61_MOA.jarbin1318695 -> 0 bytes
-rw-r--r--release-infos/readme_3.1.4-RC1.txt85
410 files changed, 20363 insertions, 19545 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..56f443c
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,59 @@
+image: gradle:6.8.3-jdk11
+
+variables:
+ LC_ALL: "en_US.UTF-8"
+ LANG: "en_US.UTF-8"
+ LANGUAGE: "en_US"
+ LIB_NAME: "ms_specific"
+ GIT_DEPTH: "2"
+ SECURE_LOG_LEVEL: "debug"
+ PROJECT_RELEASE_PACKAGE: "../release/"
+
+include:
+ - template: Dependency-Scanning.gitlab-ci.yml
+ - template: Secret-Detection.gitlab-ci.yml
+
+stages:
+ - assemble
+ - test
+# - package
+ - release
+
+cache:
+ paths:
+ - .m2/repository
+ - .gradle/wrapper
+ - .gradle/caches
+
+assemble:
+ stage: assemble
+ tags:
+ - docker
+ except:
+ - tags
+ script: |
+ cd ./moaSig
+ ./gradlew clean assemble --warning-mode all
+ artifacts:
+ when: always
+
+release:
+ stage: release
+ image: registry.gitlab.com/gitlab-org/release-cli:latest
+ needs:
+ - job: assemble
+ artifacts: true
+ when: manual
+ only:
+ - master
+ script: |
+ echo "Releasing version $VERSION of $LIB_NAME"
+ echo "Publishing version $VERSION to public EGIZ maven"
+ cd ./moaSig
+ ./gradlew release
+ artifacts:
+ name: "${CI_PROJECT_NAME}-${CI_COMMIT_SHORT_SHA}-release"
+ expire_in: never
+ paths:
+ - "../release/${VERSION}/moa-spss-${VERSION}.zip"
+ - "../release/${VERSION}/moa-spss-lib-${VERSION}.zip"
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..eec4db2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,85 @@
+# MOA-Signature (MOA-SPSS)
+
+## Description
+
+MOA-Signature, which is also called MOA-SPSS provides a Web-Service interface and a library for signature creation and signature verification. This application consists of two parts
+
+- **Signature generation:** MOA-SS implements signature generation on sever-side for XAdES (XML) and CAdES (CMS) signatures.
+
+- **Signature verification:** MOA-SP implements signature verification and certificate validation on server-side for XAdES, CAdES, , PAdES, and ASiC signatures.
+
+
+
+### Building
+
+The application is build into a Web-application and into a set of jars that can be directly used in another application. The Web application has to be deployed into an application service, like Apache Tomcat
+
+The project can be build with :
+
+```
+./gradlew clean assemble
+```
+
+The resulting `war` file can be deployed into an application server
+
+Set Java System-Property _**-Dmoa.spss.server.configuration**=/path/to/configuration..._ to set the configuration for this application
+
+
+
+### Configuration
+
+A default configuration is located at _/release-infos/handbook/conf/_
+
+
+
+## Generate a Release Package
+
+The full release packages for will be automatically assembled by gradle build-process. Before release build, all release related information have to added into infos folder. To add release informations follow the steps outlined below.
+
+Add a file with release informations to:
+```
+./release-infos/readme_{version}.txt
+```
+
+Add, remove, or update the application description in the handbook
+
+```
+modify: ./release-infos/handbook/
+```
+
+Generate a release package with:
+
+
+```
+./gradlew release
+```
+
+The full release package will be located add
+```
+./moaSig/releases/*
+```
+
+where
+
+- _moa-spss-lib-..._ is the package with the library and dependencies
+- _moa-spss----_ is the Web application with configuration and additional informations
+
+
+
+## Changelog
+
+**v3.1.4**
+
+- Mindestanforderung für JAVA 8
+- Anpassungen an der TSL Implementierung
+ - Updates von Bibliotheken zur Stabilitätsverbesserung
+ - TrustStore Update in der Beispielkonfiguration
+
+**v3.1.3**
+
+ - Anpassungen an der TSL Implementierung
+
+ - Updates von Bibliotheken zur Stabilitätsverbesserung
+ - TrustStore Update in der Beispielkonfiguration
+
+ \ No newline at end of file
diff --git a/moaSig/build.gradle b/moaSig/build.gradle
index c52b4c9..3935b41 100644
--- a/moaSig/build.gradle
+++ b/moaSig/build.gradle
@@ -10,22 +10,44 @@ buildscript {
}
subprojects {
- apply plugin: 'java'
+ apply plugin: 'java-library'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
repositories {
mavenCentral()
+
+ maven {
+ url "https://apps.egiz.gv.at/maven/"
+ mavenContent {
+ releasesOnly()
+ }
+ }
+ maven {
+ url "https://apps.egiz.gv.at/maven-snapshot/"
+ mavenContent {
+ snapshotsOnly()
+ }
+ }
+
}
-
+
dependencies {
- testCompile 'junit:junit:4.12'
+ testImplementation 'junit:junit:4.13.2'
}
- version = '3.1.4-Snapshot'
+ version = '3.1.4-RC1'
jar { manifest.attributes provider: 'EGIZ', 'Specification-Version': getCheckedOutGitCommitHash(), 'Implementation-Version': project.version }
-
+
+ compileJava {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+
+ tasks.withType(JavaCompile) {
+ options.compilerArgs << '-Xlint:-options'
+ }
publishing {
publications {
diff --git a/moaSig/common/build.gradle b/moaSig/common/build.gradle
index c5c7435..5e9122b 100644
--- a/moaSig/common/build.gradle
+++ b/moaSig/common/build.gradle
@@ -1,16 +1,16 @@
dependencies {
- compile files('../libs/iaik_jce_full_signed-5.61_MOA.jar')
-
- compile 'org.slf4j:slf4j-api:1.7.30'
- compile 'xerces:xercesImpl:2.12.0'
- compile 'xalan:xalan:2.7.1'
- compile 'joda-time:joda-time:2.10.6'
- compile 'jaxen:jaxen:1.2.0'
+ implementation files('../libs/iaik_jce_full-5.62_moa.jar')
+ api 'org.slf4j:slf4j-api:1.7.30'
+ api 'xerces:xercesImpl:2.12.0'
+ api 'xalan:xalan:2.7.1'
+ api group: 'xalan', name: 'serializer', version: '2.7.1'
+ api 'joda-time:joda-time:2.10.10'
+ api 'jaxen:jaxen:1.2.0'
}
task testJar(type: Jar, dependsOn: testClasses) {
- baseName = "test-${project.archivesBaseName}"
from sourceSets.test.output
+ classifier = 'tests'
}
configurations {
@@ -18,6 +18,6 @@ configurations {
}
artifacts {
- tests testJar
+ archives testJar
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java
index 9eb84fa..54ab102 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LogMsg.java
@@ -21,23 +21,22 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.logging;
/**
* A unified message type to log messages from inside the MOA subsystem.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class LogMsg {
/** The message to log. */
- private Object message;
+ private final Object message;
/**
* Create a <code>LogMsg</code> object.
- *
- * @param message The actual message to log. May be <code>null</code>.
+ *
+ * @param message The actual message to log. May be <code>null</code>.
*/
public LogMsg(Object message) {
this.message = message;
@@ -45,16 +44,17 @@ public class LogMsg {
/**
* Convert this log message to a <code>String</code>.
- *
- * @return The <code>String</code> representation of this log message.
+ *
+ * @return The <code>String</code> representation of this log message.
*/
+ @Override
public String toString() {
- StringBuffer msg = new StringBuffer();
- LoggingContext ctx =
- LoggingContextManager.getInstance().getLoggingContext();
- String tid = ctx != null ? ctx.getTransactionID() : null;
- String nodeId = ctx != null ? ctx.getNodeID() : null;
-
+ final StringBuffer msg = new StringBuffer();
+ final LoggingContext ctx =
+ LoggingContextManager.getInstance().getLoggingContext();
+ final String tid = ctx != null ? ctx.getTransactionID() : null;
+ final String nodeId = ctx != null ? ctx.getNodeID() : null;
+
msg.append("TID=");
msg.append(tid != null ? tid : "<null>");
msg.append(" NID=");
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java
index 532a8be..23908ab 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/Logger.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.logging;
import java.util.HashMap;
@@ -29,28 +28,28 @@ import java.util.Map;
/**
* A utility class acting as a facade to the logging subsystem.
- *
+ *
* Configure the logging defaultHierarchy that the <code>Logger</code> uses by
* calling <code>setHierarchy</code> once before calling any of the logging
* output functions.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class Logger {
-
+
/**
* Set the default hierarchy to which the <code>Logger</code> should send its
* logging output.
+ *
* @param hierarchy The logging defaultHierarchy.
*/
public static void setHierarchy(String hierarchy) {
- // there is no need for that anymore
+ // there is no need for that anymore
}
-
/** The Constant instances. */
- private static final Map<String, org.slf4j.Logger> instances = new HashMap<String, org.slf4j.Logger>();
+ private static final Map<String, org.slf4j.Logger> instances = new HashMap<>();
/**
* Gets the logger.
@@ -58,173 +57,177 @@ public class Logger {
* @return the logger
*/
private static synchronized org.slf4j.Logger getLogger() {
- StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
-
- int i;
- for(i = 2; i < stacktrace.length; i++)
- if(!stacktrace[i].getClassName().equals(Logger.class.getName()))
- break;
+ final StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
- String className = stacktrace[i].getClassName();
-
- org.slf4j.Logger logger = instances.get(className);
- if (logger != null) {
- return logger;
+ int i;
+ for (i = 2; i < stacktrace.length; i++) {
+ if (!stacktrace[i].getClassName().equals(Logger.class.getName())) {
+ break;
}
+ }
- logger = org.slf4j.LoggerFactory.getLogger(className);
- instances.put(className, logger);
+ final String className = stacktrace[i].getClassName();
+ org.slf4j.Logger logger = instances.get(className);
+ if (logger != null) {
return logger;
+ }
+
+ logger = org.slf4j.LoggerFactory.getLogger(className);
+ instances.put(className, logger);
+
+ return logger;
}
-
+
/**
* Prepare the message for printing it as string.
- * <p>Mainly introduce because the <code>message</code> might be <code>null</code>.
+ * <p>
+ * Mainly introduce because the <code>message</code> might be <code>null</code>.
*
* @param message the message
* @return the string
*/
private static String prepareMessage(Object message) {
- if(null == message)
- return "no message given";
- return message.toString();
+ if (null == message) {
+ return "no message given";
+ }
+ return message.toString();
}
-
+
/**
* Test, if the trace log level is enabled.
- *
+ *
* @return boolean <code>true</code>, if tracing output is enabled
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*/
public static boolean isTraceEnabled() {
- org.slf4j.Logger logger = getLogger();
- return logger.isTraceEnabled();
+ final org.slf4j.Logger logger = getLogger();
+ return logger.isTraceEnabled();
}
-
+
/**
* Test, if the trace log level is enabled for a given hierarchy.
- *
+ *
* @param hierarchy requested log hierarchy
* @return boolean <code>true</code>, if tracing output is enabled
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*/
public static boolean isTraceEnabled(String hierarchy) {
- org.slf4j.Logger logger = getLogger();
- return logger.isTraceEnabled();
+ final org.slf4j.Logger logger = getLogger();
+ return logger.isTraceEnabled();
}
-
+
/**
* Trace a message.
- *
+ *
* @param message The message to trace.
*/
public static void trace(Object message) {
- org.slf4j.Logger logger = getLogger();
- logger.trace(prepareMessage(message));
+ final org.slf4j.Logger logger = getLogger();
+ logger.trace(prepareMessage(message));
}
-
+
/**
* Test, if the debug log level is enabled.
- *
+ *
* @return boolean <code>true</code>, if debug output is enabled
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*/
public static boolean isDebugEnabled() {
- org.slf4j.Logger logger = getLogger();
- return logger.isDebugEnabled();
+ final org.slf4j.Logger logger = getLogger();
+ return logger.isDebugEnabled();
}
-
+
/**
* Test, if the debug log level is enabled for a given hierarchy.
- *
+ *
* @param hierarchy requested log hierarchy
* @return boolean <code>true</code>, if debug output is enabled
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*/
public static boolean isDebugEnabled(String hierarchy) {
- org.slf4j.Logger logger = getLogger();
- return logger.isDebugEnabled();
+ final org.slf4j.Logger logger = getLogger();
+ return logger.isDebugEnabled();
}
-
+
/**
* Log a debug message.
- *
+ *
* @param message The message to log.
*/
public static void debug(Object message) {
- org.slf4j.Logger logger = getLogger();
- logger.debug(prepareMessage(message));
+ final org.slf4j.Logger logger = getLogger();
+ logger.debug(prepareMessage(message));
}
-/**
+ /**
* Log an info message.
- *
+ *
* @param message The message to log.
*/
public static void info(Object message) {
- org.slf4j.Logger logger = getLogger();
- logger.info(prepareMessage(message));
+ final org.slf4j.Logger logger = getLogger();
+ logger.info(prepareMessage(message));
}
-
+
/**
* Log a warning message.
- *
+ *
* @param message The message to log.
*/
public static void warn(Object message) {
- org.slf4j.Logger logger = getLogger();
- logger.warn(prepareMessage(message));
+ final org.slf4j.Logger logger = getLogger();
+ logger.warn(prepareMessage(message));
}
/**
* Log a warning message.
- *
+ *
* @param message The message to log.
- * @param t An exception that may be the cause of the warning.
+ * @param t An exception that may be the cause of the warning.
*/
public static void warn(Object message, Throwable t) {
- org.slf4j.Logger logger = getLogger();
- logger.warn(prepareMessage(message), t);
+ final org.slf4j.Logger logger = getLogger();
+ logger.warn(prepareMessage(message), t);
}
-
+
/**
* Log an error message.
- *
+ *
* @param message The message to log.
*/
public static void error(Object message) {
- org.slf4j.Logger logger = getLogger();
- logger.error(prepareMessage(message));
+ final org.slf4j.Logger logger = getLogger();
+ logger.error(prepareMessage(message));
}
/**
* Log an error message.
- *
+ *
* @param message The message to log.
- * @param t An exception that may be the cause of the error.
+ * @param t An exception that may be the cause of the error.
*/
public static void error(Object message, Throwable t) {
- org.slf4j.Logger logger = getLogger();
- logger.error(prepareMessage(message), t);
+ final org.slf4j.Logger logger = getLogger();
+ logger.error(prepareMessage(message), t);
}
-
+
/**
* Log a fatal error message.
- *
+ *
* @param message The message to log.
*/
public static void fatal(Object message) {
- error(message);
+ error(message);
}
/**
* Log a fatal error message.
- *
+ *
* @param message The message to log.
- * @param t An exception that may be the cause of the error.
+ * @param t An exception that may be the cause of the error.
*/
public static void fatal(Object message, Throwable t) {
- error(message, t);
+ error(message, t);
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java
index 0fb0e7d..d8f03a6 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContext.java
@@ -21,47 +21,46 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.logging;
/**
* Encapsulates contextual information (i.e. per request information) for
* logging purposes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class LoggingContext {
/** The name of the node ID system property. */
public static final String NODE_ID_PROPERTY = "moa.node-id";
-
+
/** The current transaction ID. */
- private String transactionID;
+ private final String transactionID;
/** The node ID. */
- private String nodeID;
-
+ private final String nodeID;
+
/**
* Create a new <code>LoggingContext</code>.
- *
+ *
* @param transactionID The transaction ID. May be <code>null</code>.
*/
public LoggingContext(String transactionID) {
this.transactionID = transactionID;
this.nodeID = System.getProperty(NODE_ID_PROPERTY);
}
-
+
/**
* Return the transaction ID.
- *
+ *
* @return The transaction ID.
*/
public String getTransactionID() {
return transactionID;
}
-
+
/**
* Return the node ID.
- *
+ *
* @return The node ID.
*/
public String getNodeID() {
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java
index b4cd294..aa4bfe8 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/logging/LoggingContextManager.java
@@ -21,25 +21,24 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.logging;
/**
* Provides each thread with a single instance of <code>LoggingContext</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class LoggingContextManager {
/** The single instance of this class. */
private static LoggingContextManager instance = null;
-
+
/** The <code>LoggingContext</code> for each thread. */
- private ThreadLocal context;
-
+ private final ThreadLocal context;
+
/**
* Get the single instance of the <code>LoggingContextManager</code> class.
- *
+ *
* @return LoggingContextManager The single instance.
*/
public static synchronized LoggingContextManager getInstance() {
@@ -48,30 +47,30 @@ public class LoggingContextManager {
}
return instance;
}
-
+
/**
* Creates a new <code>LoggingContextManager</code>.
- *
+ *
* Protected to disallow direct instantiation.
*/
protected LoggingContextManager() {
context = new ThreadLocal();
}
-
+
/**
* Set the <code>LoggingContext</code> context for the current thread.
- *
+ *
* @param ctx The <code>LoggingContext</code> for the current thread.
*/
public void setLoggingContext(LoggingContext ctx) {
context.set(ctx);
}
-
+
/**
* Return the <code>LoggingContext</code> for the current thread.
- *
+ *
* @return LoggingContext The <code>LoggingContext</code> for the current
- * thread, or <code>null</code> if none has been set.
+ * thread, or <code>null</code> if none has been set.
*/
public LoggingContext getLoggingContext() {
return (LoggingContext) context.get();
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java
index 25a19bc..2c9b4c0 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Base64Utils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.ByteArrayInputStream;
@@ -35,81 +34,81 @@ import iaik.utils.Base64OutputStream;
/**
* Utitility functions for encoding/decoding Base64 strings.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class Base64Utils {
/**
- * Read the bytes encoded in a Base64 encoded <code>String</code>.
- *
- * @param base64String The <code>String</code> containing the Base64 encoded
- * bytes.
+ * Read the bytes encoded in a Base64 encoded <code>String</code>.
+ *
+ * @param base64String The <code>String</code> containing the Base64
+ * encoded bytes.
* @param ignoreInvalidChars Whether to ignore invalid Base64 characters.
* @return byte[] The raw bytes contained in the <code>base64String</code>.
* @throws IOException Failed to read the Base64 data.
*/
public static byte[] decode(String base64String, boolean ignoreInvalidChars, String encoding)
- throws IOException {
-
- Base64InputStream in =
- new Base64InputStream(
- new ByteArrayInputStream(base64String.getBytes(encoding)),
- ignoreInvalidChars);
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- byte[] bytes = new byte[256];
+ throws IOException {
+
+ final Base64InputStream in =
+ new Base64InputStream(
+ new ByteArrayInputStream(base64String.getBytes(encoding)),
+ ignoreInvalidChars);
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
+ final byte[] bytes = new byte[256];
int bytesRead;
while ((bytesRead = in.read(bytes)) > 0) {
out.write(bytes, 0, bytesRead);
}
in.close();
-
+
return out.toByteArray();
}
public static byte[] decode(String base64String, boolean ignoreInvalidChars) throws IOException {
- return decode(base64String, ignoreInvalidChars, "UTF-8");
+ return decode(base64String, ignoreInvalidChars, "UTF-8");
}
-
+
/**
* Read the bytes encoded in a Base64 encoded <code>String</code> and provide
* them via an <code>InputStream</code>.
- *
- * @param base64String The <code>String</code> containing the Base64 encoded
- * bytes.
+ *
+ * @param base64String The <code>String</code> containing the Base64
+ * encoded bytes.
* @param ignoreInvalidChars Whether to ignore invalid Base64 characters.
* @return The <code>InputStream</code> from which the binary content of the
- * <code>base64String</code> can be read.
+ * <code>base64String</code> can be read.
*/
public static InputStream decodeToStream(
- String base64String,
- boolean ignoreInvalidChars,
- String encoding) {
+ String base64String,
+ boolean ignoreInvalidChars,
+ String encoding) {
try {
- ByteArrayInputStream bin =
- new ByteArrayInputStream(base64String.getBytes(encoding));
- Base64InputStream in = new Base64InputStream(bin, ignoreInvalidChars);
-
+ final ByteArrayInputStream bin =
+ new ByteArrayInputStream(base64String.getBytes(encoding));
+ final Base64InputStream in = new Base64InputStream(bin, ignoreInvalidChars);
+
return in;
- } catch (UnsupportedEncodingException e) {
+ } catch (final UnsupportedEncodingException e) {
// cannot occur, since UTF-8 is required to be supported by every JRE
- return null;
+ return null;
}
}
public static InputStream decodeToStream(
- String base64String,
- boolean ignoreInvalidChars) {
- return decodeToStream(base64String, ignoreInvalidChars, "UTF-8");
-
+ String base64String,
+ boolean ignoreInvalidChars) {
+ return decodeToStream(base64String, ignoreInvalidChars, "UTF-8");
+
}
-
+
/**
* Convert a byte array to a Base64 encoded <code>String</code>.
- *
+ *
* @param bytes The bytes to encode.
* @return String The Base64 encoded representation of the <code>bytes</code>.
* @throws IOException Failed to write the bytes as Base64 data.
@@ -119,25 +118,26 @@ public class Base64Utils {
}
public static String encode(byte[] bytes, String encoding) throws IOException {
- return encode(new ByteArrayInputStream(bytes), encoding);
- }
-
+ return encode(new ByteArrayInputStream(bytes), encoding);
+ }
+
public static String encode(InputStream inputStream) throws IOException {
- return encode(inputStream, "UTF-8");
+ return encode(inputStream, "UTF-8");
}
+
/**
* Convert the data contained in the given stream to a Base64 encoded
* <code>String</code>.
- *
+ *
* @param inputStream The stream containing the data to encode.
- * @return The Base64 encoded data of <code>inputStream</code>, as a
- * <code>String</code>.
+ * @return The Base64 encoded data of <code>inputStream</code>, as a
+ * <code>String</code>.
* @throws IOException Failed to convert the data in the stream.
*/
public static String encode(InputStream inputStream, String encoding) throws IOException {
- ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
- Base64OutputStream base64Stream = new Base64OutputStream(byteStream, "\n".getBytes());
- byte[] bytes = new byte[256];
+ final ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+ final Base64OutputStream base64Stream = new Base64OutputStream(byteStream, "\n".getBytes());
+ final byte[] bytes = new byte[256];
int bytesRead;
while ((bytesRead = inputStream.read(bytes)) > 0) {
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java
index 56eab08..42f98bc 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/BoolUtils.java
@@ -21,25 +21,24 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
/**
* Utility class for parsing XML schema boolean values.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class BoolUtils {
-
+
/**
- * Return the boolean value of an <code>xsd:boolean</code> type of DOM
+ * Return the boolean value of an <code>xsd:boolean</code> type of DOM
* element/attribute.
- *
+ *
* @param boolStr The value of the <code>xsd:boolean</code> element/attribute.
- * @return <code>true</code>, if <code>boolStr</code> equals
- * <code>&quot;true&quot;</code> or <code>&quot;1;&quot;</code>. Otherwise,
- * <code>false</code> is returned.
+ * @return <code>true</code>, if <code>boolStr</code> equals
+ * <code>&quot;true&quot;</code> or <code>&quot;1;&quot;</code>.
+ * Otherwise, <code>false</code> is returned.
*/
public static boolean valueOf(String boolStr) {
return "true".equals(boolStr) || "1".equals(boolStr);
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java
index 01a80ea..dcca377 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/CollectionUtils.java
@@ -21,40 +21,39 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.Iterator;
import java.util.List;
/**
- * Various utility methods for dealing with <code>java.util.Collection</code>
- * classes.
- *
+ * Various utility methods for dealing with <code>java.util.Collection</code>
+ * classes.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CollectionUtils {
-
+
/**
- * Convert a <code>List</code> of <code>Number</code> objects to an
+ * Convert a <code>List</code> of <code>Number</code> objects to an
* <code>int</code> array.
- *
- * @param nums The <code>List</code> containing the numbers whose integer
- * value to put into the result.
- * @return The <code>int</code> values of the <code>Number</code>s contained
- * in <code>nums</code>.
+ *
+ * @param nums The <code>List</code> containing the numbers whose integer value
+ * to put into the result.
+ * @return The <code>int</code> values of the <code>Number</code>s contained in
+ * <code>nums</code>.
*/
public static int[] toIntArray(List nums) {
- int[] result = new int[nums.size()];
+ final int[] result = new int[nums.size()];
Iterator iter;
int i;
-
+
for (i = 0, iter = nums.iterator(); iter.hasNext(); i++) {
- Number num = (Number) iter.next();
+ final Number num = (Number) iter.next();
result[i] = num.intValue();
}
-
+
return result;
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java
index 7c29ea1..1102975 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java
@@ -21,552 +21,557 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.HashMap;
/**
* Contains various constants used throughout the system.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface Constants {
/** Root location of the schema files. */
- public static final String SCHEMA_ROOT = "/resources/schemas/";
+ String SCHEMA_ROOT = "/resources/schemas/";
/** URI of the Widerrufregister XML namespace. */
- public static final String WRR_NS_URI =
- "http://reference.e-government.gv.at/namespace/moavv/20041223";
+ String WRR_NS_URI =
+ "http://reference.e-government.gv.at/namespace/moavv/20041223";
/** Prefix used for the Widerrufregister XML namespace */
- public static final String WRR_PREFIX = "wrr";
+ String WRR_PREFIX = "wrr";
/** URI of the StandardTextBlock XML namespace. */
- public static final String STB_NS_URI =
- "http://reference.e-government.gv.at/namespace/standardtextblock/20041105#";
+ String STB_NS_URI =
+ "http://reference.e-government.gv.at/namespace/standardtextblock/20041105#";
/** Prefix used for the standard text block XML namespace */
- public static final String STB_PREFIX = "stb";
+ String STB_PREFIX = "stb";
/** URI of the MOA XML namespace. */
- public static final String MOA_NS_URI =
- "http://reference.e-government.gv.at/namespace/moa/20020822#";
+ String MOA_NS_URI =
+ "http://reference.e-government.gv.at/namespace/moa/20020822#";
/** Name of the mandates infobox */
- public static final String INFOBOXIDENTIFIER_MANDATES = "Mandates";
+ String INFOBOXIDENTIFIER_MANDATES = "Mandates";
/** Prefix used for the Mandate XML namespace */
- public static final String MD_PREFIX = "md";
+ String MD_PREFIX = "md";
/** URI of the Mandate XML namespace. */
- public static final String MD_NS_URI =
- "http://reference.e-government.gv.at/namespace/mandates/20040701#";
+ String MD_NS_URI =
+ "http://reference.e-government.gv.at/namespace/mandates/20040701#";
/** Prefix used for the Mandate XML namespace */
- public static final String MVV_PREFIX = "mvv";
+ String MVV_PREFIX = "mvv";
/** URI of the Mandate XML namespace. */
- public static final String MVV_NS_URI =
- "http://reference.e-government.gv.at/namespace/moavv/app2mvv/20041125";
+ String MVV_NS_URI =
+ "http://reference.e-government.gv.at/namespace/moavv/app2mvv/20041125";
/** Prefix used for the MandateCheckProfile XML namespace */
- public static final String MDP_PREFIX = "mdp";
+ String MDP_PREFIX = "mdp";
/** URI of the Mandate XML namespace. */
- public static final String MDP_NS_URI =
- "http://reference.e-government.gv.at/namespace/mandateprofile/20041105#";
+ String MDP_NS_URI =
+ "http://reference.e-government.gv.at/namespace/mandateprofile/20041105#";
/** Prefix used for the MOA XML namespace */
- public static final String MOA_PREFIX = "moa";
+ String MOA_PREFIX = "moa";
/** Local location of the MOA XML schema definition. */
- public static final String MOA_SCHEMA_LOCATION =
- SCHEMA_ROOT + "MOA-SPSS-3.1.2.xsd";
+ String MOA_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "MOA-SPSS-3.1.2.xsd";
/** URI of the MOA configuration XML namespace. */
- public static final String MOA_CONFIG_NS_URI =
- "http://reference.e-government.gv.at/namespace/moaconfig/20021122#";
+ String MOA_CONFIG_NS_URI =
+ "http://reference.e-government.gv.at/namespace/moaconfig/20021122#";
/** URI of the MOA ID configuration XML namespace. */
- public static final String MOA_ID_CONFIG_NS_URI =
- "http://www.buergerkarte.at/namespaces/moaconfig#";
+ String MOA_ID_CONFIG_NS_URI =
+ "http://www.buergerkarte.at/namespaces/moaconfig#";
/** Prefix used for the MOA configuration XML namespace */
- public static final String MOA_CONFIG_PREFIX = "conf";
+ String MOA_CONFIG_PREFIX = "conf";
/** Prefix used for the MOA configuration XML namespace */
- public static final String MOA_ID_CONFIG_PREFIX = "confID";
+ String MOA_ID_CONFIG_PREFIX = "confID";
/** Local location of the MOA configuration XML schema definition. */
- public static final String MOA_CONFIG_SCHEMA_LOCATION =
- SCHEMA_ROOT + "MOA-SPSS-config-3.0.0.xsd";
+ String MOA_CONFIG_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "MOA-SPSS-config-3.0.0.xsd";
/** Local location of the MOA ID configuration XML schema definition. */
- public static final String MOA_ID_CONFIG_SCHEMA_LOCATION =
- SCHEMA_ROOT + "MOA-ID-Configuration-1.5.2.xsd";
+ String MOA_ID_CONFIG_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "MOA-ID-Configuration-1.5.2.xsd";
/** URI of the Security Layer 1.0 namespace. */
- public static final String SL10_NS_URI =
- "http://www.buergerkarte.at/namespaces/securitylayer/20020225#";
+ String SL10_NS_URI =
+ "http://www.buergerkarte.at/namespaces/securitylayer/20020225#";
/** Prefix used for the Security Layer 1.0 XML namespace */
- public static final String SL10_PREFIX = "sl10";
+ String SL10_PREFIX = "sl10";
/** Local location of the Security Layer 1.0 XML schema definition */
- public static final String SL10_SCHEMA_LOCATION =
- SCHEMA_ROOT + "Core.20020225.xsd";
+ String SL10_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "Core.20020225.xsd";
/** URI of the Security Layer 1.1 XML namespace */
- public static final String SL11_NS_URI =
- "http://www.buergerkarte.at/namespaces/securitylayer/20020831#";
+ String SL11_NS_URI =
+ "http://www.buergerkarte.at/namespaces/securitylayer/20020831#";
/** Prefix used for the Security Layer 1.1 XML namespace */
- public static final String SL11_PREFIX = "sl11";
+ String SL11_PREFIX = "sl11";
/** Local location of the Security Layer 1.1 XML schema definition */
- public static final String SL11_SCHEMA_LOCATION =
- SCHEMA_ROOT + "Core.20020831.xsd";
-
+ String SL11_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "Core.20020831.xsd";
+
/** URI of the Security Layer 1.2 XML namespace */
- public static final String SL12_NS_URI =
- "http://www.buergerkarte.at/namespaces/securitylayer/1.2#";
+ String SL12_NS_URI =
+ "http://www.buergerkarte.at/namespaces/securitylayer/1.2#";
/** Prefix used for the Security Layer 1.2 XML namespace */
- public static final String SL12_PREFIX = "sl";
+ String SL12_PREFIX = "sl";
/** Local location of the Security Layer 1.2 XML schema definition */
- public static final String SL12_SCHEMA_LOCATION =
- SCHEMA_ROOT + "Core-1.2.xsd";
-
+ String SL12_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "Core-1.2.xsd";
+
/** URI of the ECDSA XML namespace */
- public static final String ECDSA_NS_URI =
- "http://www.w3.org/2001/04/xmldsig-more#";
-
+ String ECDSA_NS_URI =
+ "http://www.w3.org/2001/04/xmldsig-more#";
+
/** Prefix used for ECDSA namespace */
- public static final String ECDSA_PREFIX = "ecdsa";
+ String ECDSA_PREFIX = "ecdsa";
/** Local location of ECDSA XML schema definition */
- public static final String ECDSA_SCHEMA_LOCATION =
- SCHEMA_ROOT + "ECDSAKeyValue.xsd";
+ String ECDSA_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "ECDSAKeyValue.xsd";
/** URI of the PersonData XML namespace. */
- public static final String PD_NS_URI =
- "http://reference.e-government.gv.at/namespace/persondata/20020228#";
+ String PD_NS_URI =
+ "http://reference.e-government.gv.at/namespace/persondata/20020228#";
/** Prefix used for the PersonData XML namespace */
- public static final String PD_PREFIX = "pr";
+ String PD_PREFIX = "pr";
// /** Local location of the PersonData XML schema definition */
// public static final String PD_SCHEMA_LOCATION =
// SCHEMA_ROOT + "PersonData.xsd";
-
+
/** Local location of the PersonData XML schema definition */
- public static final String PD_SCHEMA_LOCATION =
- SCHEMA_ROOT + "PersonData_20_en_moaWID.xsd";
+ String PD_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "PersonData_20_en_moaWID.xsd";
/** URI of the SAML namespace. */
- public static final String SAML_NS_URI =
- "urn:oasis:names:tc:SAML:1.0:assertion";
+ String SAML_NS_URI =
+ "urn:oasis:names:tc:SAML:1.0:assertion";
/** Prefix used for the SAML XML namespace */
- public static final String SAML_PREFIX = "saml";
+ String SAML_PREFIX = "saml";
/** Local location of the SAML XML schema definition. */
- public static final String SAML_SCHEMA_LOCATION =
- SCHEMA_ROOT + "cs-sstc-schema-assertion-01.xsd";
+ String SAML_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "cs-sstc-schema-assertion-01.xsd";
/** URI of the SAML request-response protocol namespace. */
- public static final String SAMLP_NS_URI =
- "urn:oasis:names:tc:SAML:1.0:protocol";
+ String SAMLP_NS_URI =
+ "urn:oasis:names:tc:SAML:1.0:protocol";
/** Prefix used for the SAML request-response protocol namespace */
- public static final String SAMLP_PREFIX = "samlp";
+ String SAMLP_PREFIX = "samlp";
/** Local location of the SAML request-response protocol schema definition. */
- public static final String SAMLP_SCHEMA_LOCATION =
- SCHEMA_ROOT + "cs-sstc-schema-protocol-01.xsd";
+ String SAMLP_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "cs-sstc-schema-protocol-01.xsd";
/** URI of the XML namespace. */
- public static final String XML_NS_URI =
- "http://www.w3.org/XML/1998/namespace";
+ String XML_NS_URI =
+ "http://www.w3.org/XML/1998/namespace";
/** Prefix used for the XML namespace */
- public static final String XML_PREFIX = "xml";
+ String XML_PREFIX = "xml";
/** Local location of the XML schema definition. */
- public static final String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd";
+ String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd";
/** URI of the XMLNS namespace */
- public static final String XMLNS_NS_URI = "http://www.w3.org/2000/xmlns/";
+ String XMLNS_NS_URI = "http://www.w3.org/2000/xmlns/";
/** Prefix used for the XSI namespace */
- public static final String XSI_PREFIX = "xsi";
+ String XSI_PREFIX = "xsi";
/** Local location of the XSI schema definition. */
- public static final String XSI_SCHEMA_LOCATION =
- SCHEMA_ROOT + "XMLSchema-instance.xsd";
+ String XSI_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "XMLSchema-instance.xsd";
/** URI of the XSI XMLNS namespace */
- public static final String XSI_NS_URI =
- "http://www.w3.org/2001/XMLSchema-instance";
+ String XSI_NS_URI =
+ "http://www.w3.org/2001/XMLSchema-instance";
/** URI of the XSLT XML namespace */
- public static final String XSLT_NS_URI =
- "http://www.w3.org/1999/XSL/Transform";
+ String XSLT_NS_URI =
+ "http://www.w3.org/1999/XSL/Transform";
/** Prefix used for the XSLT XML namespace */
- public static final String XSLT_PREFIX = "xsl";
+ String XSLT_PREFIX = "xsl";
/** URI of the XMLDSig XML namespace. */
- public static final String DSIG_NS_URI = "http://www.w3.org/2000/09/xmldsig#";
+ String DSIG_NS_URI = "http://www.w3.org/2000/09/xmldsig#";
/** Prefix used for the XMLDSig XML namespace */
- public static final String DSIG_PREFIX = "dsig";
+ String DSIG_PREFIX = "dsig";
/** Local location of the XMLDSig XML schema. */
- public static final String DSIG_SCHEMA_LOCATION =
- SCHEMA_ROOT + "xmldsig-core-schema.xsd";
+ String DSIG_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "xmldsig-core-schema.xsd";
/** URI of the XMLDSig XPath Filter XML namespace. */
- public static final String DSIG_FILTER2_NS_URI =
- "http://www.w3.org/2002/06/xmldsig-filter2";
+ String DSIG_FILTER2_NS_URI =
+ "http://www.w3.org/2002/06/xmldsig-filter2";
/** Prefix used for the XMLDSig XPath Filter XML namespace */
- public static final String DSIG_FILTER2_PREFIX = "dsig-filter2";
+ String DSIG_FILTER2_PREFIX = "dsig-filter2";
/** Local location of the XMLDSig XPath Filter XML schema definition. */
- public static final String DSIG_FILTER2_SCHEMA_LOCATION =
- SCHEMA_ROOT + "xmldsig-filter2.xsd";
+ String DSIG_FILTER2_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "xmldsig-filter2.xsd";
/** URI of the Exclusive Canonicalization XML namespace */
- public static final String DSIG_EC_NS_URI =
- "http://www.w3.org/2001/10/xml-exc-c14n#";
-
+ String DSIG_EC_NS_URI =
+ "http://www.w3.org/2001/10/xml-exc-c14n#";
+
/** Prefix used for the Exclusive Canonicalization XML namespace */
- public static final String DSIG_EC_PREFIX = "ec";
+ String DSIG_EC_PREFIX = "ec";
/** Local location of the Exclusive Canonicalizaion XML schema definition */
- public static final String DSIG_EC_SCHEMA_LOCATION =
- SCHEMA_ROOT + "exclusive-canonicalization.xsd";
+ String DSIG_EC_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "exclusive-canonicalization.xsd";
+
+ /** URI of the XMLLoginParameterResolver Configuration XML namespace */
+ String XMLLPR_NS_URI = "http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814";
- /** URI of the XMLLoginParameterResolver Configuration XML namespace */
- public static final String XMLLPR_NS_URI="http://reference.e-government.gv.at/namespace/moa/20020822#/xmllpr20030814";
+ /**
+ * Local location of the XMLLoginParameterResolver Configuration XML schema
+ * definition
+ */
+ String XMLLPR_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "MOAIdentities.xsd";
- /** Local location of the XMLLoginParameterResolver Configuration XML schema definition */
- public static final String XMLLPR_SCHEMA_LOCATION =
- SCHEMA_ROOT + "MOAIdentities.xsd";
-
- /** Local location of the XAdES v1.1.1 schema definition */
- public static final String XADES_1_1_1_SCHEMA_LOCATION =
- SCHEMA_ROOT + "XAdES-1.1.1.xsd";
+ /** Local location of the XAdES v1.1.1 schema definition */
+ String XADES_1_1_1_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "XAdES-1.1.1.xsd";
/** URI of the XAdES v1.1.1 namespace */
- public static final String XADES_1_1_1_NS_URI = "http://uri.etsi.org/01903/v1.1.1#";
-
- public static final String XADES_1_1_1_NS_PREFIX = "xades111";
-
- /** Local location of the XAdES v1.2.2 schema definition */
- public static final String XADES_1_2_2_SCHEMA_LOCATION =
- SCHEMA_ROOT + "XAdES-1.2.2.xsd";
+ String XADES_1_1_1_NS_URI = "http://uri.etsi.org/01903/v1.1.1#";
+
+ String XADES_1_1_1_NS_PREFIX = "xades111";
+
+ /** Local location of the XAdES v1.2.2 schema definition */
+ String XADES_1_2_2_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "XAdES-1.2.2.xsd";
/** URI of the XAdES v1.2.2 namespace */
- public static final String XADES_1_2_2_NS_URI = "http://uri.etsi.org/01903/v1.2.2#";
-
- public static final String XADES_1_2_2_NS_PREFIX = "xades122";
+ String XADES_1_2_2_NS_URI = "http://uri.etsi.org/01903/v1.2.2#";
- /** Local location of the XAdES v1.1.1 schema definition */
- public static final String XADES_1_3_2_SCHEMA_LOCATION =
- SCHEMA_ROOT + "XAdES01903v132-201601.xsd";
+ String XADES_1_2_2_NS_PREFIX = "xades122";
+
+ /** Local location of the XAdES v1.1.1 schema definition */
+ String XADES_1_3_2_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "XAdES01903v132-201601.xsd";
/** URI of the XAdES v1.3.2 namespace */
- public static final String XADES_1_3_2_NS_URI = "http://uri.etsi.org/01903/v1.3.2#";
-
- public static final String XADES_1_3_2_NS_PREFIX = "xades132";
+ String XADES_1_3_2_NS_URI = "http://uri.etsi.org/01903/v1.3.2#";
+
+ String XADES_1_3_2_NS_PREFIX = "xades132";
- /** Local location of the XAdES v1.4.1 schema definition */
- public static final String XADES_1_4_1_SCHEMA_LOCATION =
- SCHEMA_ROOT + "XAdES01903v141-201601.xsd";
+ /** Local location of the XAdES v1.4.1 schema definition */
+ String XADES_1_4_1_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "XAdES01903v141-201601.xsd";
/** URI of the XAdES v1.4.1 namespace */
- public static final String XADES_1_4_1_NS_URI = "http://uri.etsi.org/01903/v1.4.1#";
-
- public static final String XADES_1_4_1_NS_PREFIX = "xades141";
+ String XADES_1_4_1_NS_URI = "http://uri.etsi.org/01903/v1.4.1#";
+
+ String XADES_1_4_1_NS_PREFIX = "xades141";
/** URI of the SAML 2.0 namespace. */
- public static final String SAML2_NS_URI =
- "urn:oasis:names:tc:SAML:2.0:assertion";
+ String SAML2_NS_URI =
+ "urn:oasis:names:tc:SAML:2.0:assertion";
/** Prefix used for the SAML 2.0 XML namespace */
- public static final String SAML2_PREFIX = "saml2";
+ String SAML2_PREFIX = "saml2";
/** Local location of the SAML 2.0 XML schema definition. */
- public static final String SAML2_SCHEMA_LOCATION =
- SCHEMA_ROOT + "saml-schema-assertion-2.0.xsd";
-
+ String SAML2_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "saml-schema-assertion-2.0.xsd";
+
/** URI of the SAML 2.0 protocol namespace. */
- public static final String SAML2P_NS_URI =
- "urn:oasis:names:tc:SAML:2.0:protocol";
+ String SAML2P_NS_URI =
+ "urn:oasis:names:tc:SAML:2.0:protocol";
/** Prefix used for the SAML 2.0 protocol XML namespace */
- public static final String SAML2P_PREFIX = "saml2p";
+ String SAML2P_PREFIX = "saml2p";
/** Local location of the SAML 2.0 protocol XML schema definition. */
- public static final String SAML2P_SCHEMA_LOCATION =
- SCHEMA_ROOT + "saml-schema-protocol-2.0.xsd";
-
+ String SAML2P_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "saml-schema-protocol-2.0.xsd";
+
/** URI of the STORK namespace. */
- public static final String STORK_NS_URI =
- "urn:eu:stork:names:tc:STORK:1.0:assertion";
+ String STORK_NS_URI =
+ "urn:eu:stork:names:tc:STORK:1.0:assertion";
/** Prefix used for the STORK XML namespace */
- public static final String STORK_PREFIX = "stork";
+ String STORK_PREFIX = "stork";
/** Local location of the STORK XML schema definition. */
- public static final String STORK_SCHEMA_LOCATION =
- SCHEMA_ROOT + "stork-schema-assertion-1.0.xsd";
-
+ String STORK_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "stork-schema-assertion-1.0.xsd";
+
/** URI of the STORK protocol namespace. */
- public static final String STORKP_NS_URI =
- "urn:eu:stork:names:tc:STORK:1.0:protocol";
+ String STORKP_NS_URI =
+ "urn:eu:stork:names:tc:STORK:1.0:protocol";
/** Prefix used for the STORK protocol XML namespace */
- public static final String STORKP_PREFIX = "storkp";
+ String STORKP_PREFIX = "storkp";
/** Local location of the STORK protocol XML schema definition. */
- public static final String STORKP_SCHEMA_LOCATION =
- SCHEMA_ROOT + "stork-schema-protocol-1.0.xsd";
-
+ String STORKP_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "stork-schema-protocol-1.0.xsd";
+
/** URI of the TSL namespace. */
- public static final String TSL_NS_URI =
- "http://uri.etsi.org/02231/v2#";
+ String TSL_NS_URI =
+ "http://uri.etsi.org/02231/v2#";
/** Prefix used for the TSL namespace */
- public static final String TSL_PREFIX = "tsl1";
+ String TSL_PREFIX = "tsl1";
/** Local location of the TSL schema definition. */
- public static final String TSL_SCHEMA_LOCATION =
- SCHEMA_ROOT + "ts_119612v010201_xsd.xsd";
+ String TSL_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "ts_119612v010201_xsd.xsd";
/** URI of the TSL SIE namespace. */
- public static final String TSL_SIE_NS_URI =
- "http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#";
+ String TSL_SIE_NS_URI =
+ "http://uri.etsi.org/TrstSvc/SvcInfoExt/eSigDir-1999-93-EC-TrustedList/#";
/** Prefix used for the TSL SIE namespace */
- public static final String TSL_SIE_PREFIX = "tslsie";
+ String TSL_SIE_PREFIX = "tslsie";
/** Local location of the TSL SIE schema definition. */
- public static final String TSL_SIE_SCHEMA_LOCATION =
- SCHEMA_ROOT + "ts_119612v010201_sie_xsd.xsd";
-
+ String TSL_SIE_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "ts_119612v010201_sie_xsd.xsd";
+
/** URI of the TSL additional types namespace. */
- public static final String TSL_ADDTYPES_NS_URI =
- "http://uri.etsi.org/02231/v2/additionaltypes#";
+ String TSL_ADDTYPES_NS_URI =
+ "http://uri.etsi.org/02231/v2/additionaltypes#";
/** Prefix used for the TSL additional types namespace */
- public static final String TSL_ADDTYPES_PREFIX = "tsltype";
+ String TSL_ADDTYPES_PREFIX = "tsltype";
/** Local location of the TSL additional types schema definition. */
- public static final String TSL_ADDTYPES_SCHEMA_LOCATION =
- SCHEMA_ROOT + "ts_ts_119612v010201_additionaltypes_xsd.xsd";
-
+ String TSL_ADDTYPES_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "ts_ts_119612v010201_additionaltypes_xsd.xsd";
+
/** URI of the XML Encryption namespace. */
- public static final String XENC_NS_URI =
- "http://www.w3.org/2001/04/xmlenc#";
+ String XENC_NS_URI =
+ "http://www.w3.org/2001/04/xmlenc#";
/** Prefix used for the XML Encryption XML namespace */
- public static final String XENC_PREFIX = "xenc";
+ String XENC_PREFIX = "xenc";
/** Local location of the XML Encryption XML schema definition. */
- public static final String XENC_SCHEMA_LOCATION =
- SCHEMA_ROOT + "xenc-schema.xsd";
+ String XENC_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "xenc-schema.xsd";
/* Prefix used for the XML Encryption XML namespace */
- public static final String SAML2_METADATA_PREFIX = "md";
-
+ String SAML2_METADATA_PREFIX = "md";
+
/* Prefix used for the XML Encryption XML namespace */
- public static final String SAML2_METADATA_URI = "urn:oasis:names:tc:SAML:2.0:metadata";
+ String SAML2_METADATA_URI = "urn:oasis:names:tc:SAML:2.0:metadata";
/* Local location of the XML Encryption XML schema definition. */
- public static final String SAML2_METADATA_SCHEMA_LOCATION =
- SCHEMA_ROOT + "saml-schema-metadata-2.0.xsd";
+ String SAML2_METADATA_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "saml-schema-metadata-2.0.xsd";
/** Prefix used for the XML Encryption XML namespace */
- public static final String ASIC_PREFIX = "asic";
+ String ASIC_PREFIX = "asic";
/* Prefix used for the XML Encryption XML namespace */
- public static final String ASIC_URI = "http://uri.etsi.org/02918/v1.2.1#";
+ String ASIC_URI = "http://uri.etsi.org/02918/v1.2.1#";
/** Local location of the XML Encryption XML schema definition. */
- public static final String ASIC_SCHEMA_LOCATION =
- SCHEMA_ROOT + "asic.xsd";
-
- /* Prefix and Schema definition for eIDAS specific SAML2 extensions*/
- public static final String SAML2_eIDAS_EXTENSIONS_PREFIX = "eidas";
- public static final String SAML2_eIDAS_EXTENSIONS = "http://eidas.europa.eu/saml-extensions";
- public static final String SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION = SCHEMA_ROOT + "eIDAS_saml_extensions.xsd";
-
- public static final String eDELIVERY20_PREFIX = "eidas";
- public static final String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#";
- public static final String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd";
-
-
- public static final String ONLY_MOASIG_SCHEMA_LOCATIONS =
- (MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " ")
- + (MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " ")
- + (MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " ")
- + (SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " ")
- + (SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " ")
- + (SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " ")
- + (ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " ")
- //+ (PD_NS_URI + " " + PD_SCHEMA_LOCATION + " ")
- + (SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " ")
- + (SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " ")
- + (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ")
- + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ")
- + (DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " ")
- + (DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " ")
- + (DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " ")
- + (XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " ")
- + (XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " ")
- + (XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " ")
- + (XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " ")
- + (XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " ")
- + (TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " ")
- + (TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " ")
- + (TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " ")
- + (SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " ")
- + (SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " ")
- + (STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " ")
- + (STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " ")
- + (XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " ")
- + (SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " ")
- + (ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " ")
- + (SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION + " ")
- + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION);
-
+ String ASIC_SCHEMA_LOCATION =
+ SCHEMA_ROOT + "asic.xsd";
+
+ /* Prefix and Schema definition for eIDAS specific SAML2 extensions */
+ String SAML2_eIDAS_EXTENSIONS_PREFIX = "eidas";
+ String SAML2_eIDAS_EXTENSIONS = "http://eidas.europa.eu/saml-extensions";
+ String SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION = SCHEMA_ROOT + "eIDAS_saml_extensions.xsd";
+
+ String eDELIVERY20_PREFIX = "zu";
+ String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#";
+ String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd";
+
+ String eDELIVERY_PERSON_20_PREFIX = "zup";
+ String eDELIVERY_PERSON_20 = "http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#";
+ String eDELIVERY_PERSON_20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_mypersondata_en_p2.xsd";
+
+ String ONLY_MOASIG_SCHEMA_LOCATIONS =
+ MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " "
+ + MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " "
+ + MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " "
+ + SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " "
+ + SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " "
+ + SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " "
+ + ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " "
+ // + (PD_NS_URI + " " + PD_SCHEMA_LOCATION + " ")
+ + SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " "
+ + SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " "
+ + XML_NS_URI + " " + XML_SCHEMA_LOCATION + " "
+ + XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " "
+ + DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " "
+ + DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " "
+ + DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " "
+ + XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " "
+ + XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " "
+ + XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " "
+ + XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " "
+ + XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " "
+ + TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " "
+ + TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " "
+ + TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " "
+ + SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " "
+ + SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " "
+ + STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " "
+ + STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " "
+ + XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " "
+ + SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " "
+ + ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " "
+ + SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION;
+
/**
- * Contains all namespaces and local schema locations for XML schema
- * definitions relevant for MOA. For use in validating XML parsers.
+ * Contains all namespaces and local schema locations for XML schema definitions
+ * relevant for MOA. For use in validating XML parsers.
*/
- public static final String ALL_SCHEMA_LOCATIONS =
- (MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " ")
- + (MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " ")
- + (MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " ")
- + (SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " ")
- + (SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " ")
- + (SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " ")
- + (ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " ")
- + (PD_NS_URI + " " + PD_SCHEMA_LOCATION + " ")
- + (SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " ")
- + (SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " ")
- + (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ")
- + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ")
- + (DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " ")
- + (DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " ")
- + (DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " ")
- + (XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " ")
- + (XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " ")
- + (XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " ")
- + (XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " ")
- + (XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " ")
- + (TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " ")
- + (TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " ")
- + (TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " ")
- + (SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " ")
- + (SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " ")
- + (STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " ")
- + (STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " ")
- + (XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " ")
- + (SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " ")
- + (ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " ")
- + (SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION + " ")
- + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION);
+ String ALL_SCHEMA_LOCATIONS =
+ MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " "
+ + MOA_CONFIG_NS_URI + " " + MOA_CONFIG_SCHEMA_LOCATION + " "
+ + MOA_ID_CONFIG_NS_URI + " " + MOA_ID_CONFIG_SCHEMA_LOCATION + " "
+ + SL10_NS_URI + " " + SL10_SCHEMA_LOCATION + " "
+ + SL11_NS_URI + " " + SL11_SCHEMA_LOCATION + " "
+ + SL12_NS_URI + " " + SL12_SCHEMA_LOCATION + " "
+ + ECDSA_NS_URI + " " + ECDSA_SCHEMA_LOCATION + " "
+ + PD_NS_URI + " " + PD_SCHEMA_LOCATION + " "
+ + SAML_NS_URI + " " + SAML_SCHEMA_LOCATION + " "
+ + SAMLP_NS_URI + " " + SAMLP_SCHEMA_LOCATION + " "
+ + XML_NS_URI + " " + XML_SCHEMA_LOCATION + " "
+ + XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " "
+ + DSIG_NS_URI + " " + DSIG_SCHEMA_LOCATION + " "
+ + DSIG_FILTER2_NS_URI + " " + DSIG_FILTER2_SCHEMA_LOCATION + " "
+ + DSIG_EC_NS_URI + " " + DSIG_EC_SCHEMA_LOCATION + " "
+ + XMLLPR_NS_URI + " " + XMLLPR_SCHEMA_LOCATION + " "
+ + XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " "
+ + XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " "
+ + XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " "
+ + XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " "
+ + TSL_NS_URI + " " + TSL_SCHEMA_LOCATION + " "
+ + TSL_SIE_NS_URI + " " + TSL_SIE_SCHEMA_LOCATION + " "
+ + TSL_ADDTYPES_NS_URI + " " + TSL_ADDTYPES_SCHEMA_LOCATION + " "
+ + SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " "
+ + SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " "
+ + STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " "
+ + STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " "
+ + XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " "
+ + SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " "
+ + ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " "
+ + SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION + " "
+ + eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION + " "
+ + eDELIVERY_PERSON_20 + " " + eDELIVERY_PERSON_20_SCHEMA_LOCATION;
/** URN prefix for bPK and wbPK. */
- public static final String URN_PREFIX = "urn:publicid:gv.at";
-
+ String URN_PREFIX = "urn:publicid:gv.at";
+
/** URN prefix for context dependent id. */
- public static final String URN_PREFIX_CDID = URN_PREFIX + ":cdid";
-
+ String URN_PREFIX_CDID = URN_PREFIX + ":cdid";
+
/** URN prefix for context dependent id (bPK). */
- public static final String URN_PREFIX_BPK = URN_PREFIX_CDID + "+bpk";
+ String URN_PREFIX_BPK = URN_PREFIX_CDID + "+bpk";
/** URN prefix for context dependent id (HPI). */
- public static final String URN_PREFIX_HPI = URN_PREFIX_CDID + "+EHSP";
-
+ String URN_PREFIX_HPI = URN_PREFIX_CDID + "+EHSP";
+
/** URN prefix for context dependent id (wbPK). */
- public static final String URN_PREFIX_WBPK = URN_PREFIX + ":wbpk";
+ String URN_PREFIX_WBPK = URN_PREFIX + ":wbpk";
/** URN prefix for context dependent id (stork). */
- public static final String URN_PREFIX_STORK = URN_PREFIX + ":storkid";
+ String URN_PREFIX_STORK = URN_PREFIX + ":storkid";
/** URN prefix for context dependent id. */
- public static final String URN_PREFIX_BASEID = URN_PREFIX + ":baseid";
-
+ String URN_PREFIX_BASEID = URN_PREFIX + ":baseid";
+
/** Security Layer manifest type URI. */
- public static final String SL_MANIFEST_TYPE_URI =
- "http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest";
+ String SL_MANIFEST_TYPE_URI =
+ "http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest";
/** URI of the SHA1 digest algorithm */
- public static final String SHA1_URI =
- "http://www.w3.org/2000/09/xmldsig#sha1";
-
+ String SHA1_URI =
+ "http://www.w3.org/2000/09/xmldsig#sha1";
+
/** URI of the SHA1 digest algorithm */
- public static final String SHA256_URI =
- "http://www.w3.org/2000/09/xmldsig#sha256";
-
+ String SHA256_URI =
+ "http://www.w3.org/2000/09/xmldsig#sha256";
+
/** URI of the SHA1 digest algorithm */
- public static final String SHA384_URI =
- "http://www.w3.org/2000/09/xmldsig#sha384";
-
+ String SHA384_URI =
+ "http://www.w3.org/2000/09/xmldsig#sha384";
+
/** URI of the SHA1 digest algorithm */
- public static final String SHA512_URI =
- "http://www.w3.org/2000/09/xmldsig#sha512";
-
+ String SHA512_URI =
+ "http://www.w3.org/2000/09/xmldsig#sha512";
+
/** URI of the Canonical XML algorithm */
- public static final String C14N_URI =
- "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
+ String C14N_URI =
+ "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
/** URI of the Canoncial XML with comments algorithm */
- public static final String C14N_WITH_COMMENTS_URI =
- "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments";
+ String C14N_WITH_COMMENTS_URI =
+ "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments";
/** URI of the Exclusive Canonical XML algorithm */
- public static final String EXC_C14N_URI =
- "http://www.w3.org/2001/10/xml-exc-c14n#";
-
+ String EXC_C14N_URI =
+ "http://www.w3.org/2001/10/xml-exc-c14n#";
+
/** URI of the Exclusive Canonical XML with commments algorithm */
- public static final String EXC_C14N_WITH_COMMENTS_URI =
- "http://www.w3.org/2001/10/xml-exc-c14n#WithComments";
-
+ String EXC_C14N_WITH_COMMENTS_URI =
+ "http://www.w3.org/2001/10/xml-exc-c14n#WithComments";
+
//
// Local names for elements of the MOA SPSS schema
//
-
- /**
+
+ /**
* Local name of request for creating an XML signature.
*/
- public static final String MOA_SPSS_CREATE_XML_REQUEST = "CreateXMLSignatureRequest";
-
- /**
+ String MOA_SPSS_CREATE_XML_REQUEST = "CreateXMLSignatureRequest";
+
+ /**
* Local name of request for creating a CMS signature.
*/
- public static final String MOA_SPSS_CREATE_CMS_REQUEST = "CreateCMSSignatureRequest";
-
- /**
+ String MOA_SPSS_CREATE_CMS_REQUEST = "CreateCMSSignatureRequest";
+
+ /**
* Local name of request for creating a CMS signature.
*/
- public static final String MOA_SPSS_CREATE_PDF_REQUEST = "CreatePDFSignatureRequest";
-
- /**
+ String MOA_SPSS_CREATE_PDF_REQUEST = "CreatePDFSignatureRequest";
+
+ /**
* Local name of request for verifying an XML signature.
*/
- public static final String MOA_SPSS_VERIFY_XML_REQUEST = "VerifiyXMLSignatureRequest";
-
- /**
- * A map used to map namespace prefixes to namespace URIs
- */
- public static HashMap<String, String> nSMap = new HashMap<String, String>(5);
-
+ String MOA_SPSS_VERIFY_XML_REQUEST = "VerifiyXMLSignatureRequest";
+
+ /**
+ * A map used to map namespace prefixes to namespace URIs
+ */
+ HashMap<String, String> nSMap = new HashMap<>(5);
+
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java
index 44eba5a..2f96196 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DOMUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.ByteArrayInputStream;
@@ -73,12 +72,12 @@ import at.gv.egovernment.moaspss.logging.Logger;
/**
* Various utility functions for handling XML DOM trees.
- *
+ *
* The parsing methods in this class make use of some features internal to the
- * Xerces DOM parser, mainly for performance reasons. As soon as JAXP
- * (currently at version 1.2) is better at schema handling, it should be used as
- * the parser interface.
- *
+ * Xerces DOM parser, mainly for performance reasons. As soon as JAXP (currently
+ * at version 1.2) is better at schema handling, it should be used as the parser
+ * interface.
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -86,57 +85,61 @@ public class DOMUtils {
/** Feature URI for namespace aware parsing. */
private static final String NAMESPACES_FEATURE =
- "http://xml.org/sax/features/namespaces";
+ "http://xml.org/sax/features/namespaces";
/** Feature URI for validating parsing. */
private static final String VALIDATION_FEATURE =
- "http://xml.org/sax/features/validation";
+ "http://xml.org/sax/features/validation";
/** Feature URI for schema validating parsing. */
private static final String SCHEMA_VALIDATION_FEATURE =
- "http://apache.org/xml/features/validation/schema";
+ "http://apache.org/xml/features/validation/schema";
/** Feature URI for normalization of element/attribute values. */
private static final String NORMALIZED_VALUE_FEATURE =
- "http://apache.org/xml/features/validation/schema/normalized-value";
+ "http://apache.org/xml/features/validation/schema/normalized-value";
/** Feature URI for parsing ignorable whitespace. */
private static final String INCLUDE_IGNORABLE_WHITESPACE_FEATURE =
- "http://apache.org/xml/features/dom/include-ignorable-whitespace";
+ "http://apache.org/xml/features/dom/include-ignorable-whitespace";
/** Feature URI for creating EntityReference nodes in the DOM tree. */
private static final String CREATE_ENTITY_REF_NODES_FEATURE =
- "http://apache.org/xml/features/dom/create-entity-ref-nodes";
+ "http://apache.org/xml/features/dom/create-entity-ref-nodes";
/** Property URI for providing external schema locations. */
private static final String EXTERNAL_SCHEMA_LOCATION_PROPERTY =
- "http://apache.org/xml/properties/schema/external-schemaLocation";
- /** Property URI for providing the external schema location for elements
- * without a namespace. */
+ "http://apache.org/xml/properties/schema/external-schemaLocation";
+ /**
+ * Property URI for providing the external schema location for elements without
+ * a namespace.
+ */
private static final String EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY =
- "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";
-
+ "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";
+
private static final String EXTERNAL_GENERAL_ENTITIES_FEATURE =
- "http://xml.org/sax/features/external-general-entities";
-
+ "http://xml.org/sax/features/external-general-entities";
+
private static final String EXTERNAL_PARAMETER_ENTITIES_FEATURE =
- "http://xml.org/sax/features/external-parameter-entities";
-
+ "http://xml.org/sax/features/external-parameter-entities";
+
private static final String DISALLOW_DOCTYPE_FEATURE =
- "http://apache.org/xml/features/disallow-doctype-decl";
-
- //Security Manager feature for XERCES XML parser
+ "http://apache.org/xml/features/disallow-doctype-decl";
+
+ // Security Manager feature for XERCES XML parser
private static final String SECURITY_MANAGER =
- org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX + org.apache.xerces.impl.Constants.SECURITY_MANAGER_PROPERTY;
-
-
+ org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX
+ + org.apache.xerces.impl.Constants.SECURITY_MANAGER_PROPERTY;
+
/** Property URI for the Xerces grammar pool. */
private static final String GRAMMAR_POOL =
- org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX
- + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY;
+ org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX
+ + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY;
/** A prime number for initializing the symbol table. */
private static final int BIG_PRIME = 2039;
/** Symbol table for the grammar pool. */
private static SymbolTable symbolTable = new SymbolTable(BIG_PRIME);
/** Xerces schema grammar pool. */
private static XMLGrammarPool grammarPool = new XMLGrammarPoolImpl();
- /** Set holding the NamespaceURIs of the grammarPool, to prevent multiple
- * entries of same grammars to the pool */
- private static Set grammarNamespaces;
+ /**
+ * Set holding the NamespaceURIs of the grammarPool, to prevent multiple entries
+ * of same grammars to the pool
+ */
+ private static Set grammarNamespaces;
static {
grammarPool.lockPool();
@@ -144,38 +147,38 @@ public class DOMUtils {
}
/**
- * Preparse a schema and add it to the schema pool.
- * The method only adds the schema to the pool if a schema having the same
- * <code>systemId</code> (namespace URI) is not already present in the pool.
- *
- * @param inputStream An <code>InputStream</code> providing the contents of
- * the schema.
- * @param systemId The systemId (namespace URI) to use for the schema.
+ * Preparse a schema and add it to the schema pool. The method only adds the
+ * schema to the pool if a schema having the same <code>systemId</code>
+ * (namespace URI) is not already present in the pool.
+ *
+ * @param inputStream An <code>InputStream</code> providing the contents of the
+ * schema.
+ * @param systemId The systemId (namespace URI) to use for the schema.
* @throws IOException An error occurred reading the schema.
*/
public static void addSchemaToPool(InputStream inputStream, String systemId)
- throws IOException {
+ throws IOException {
XMLGrammarPreparser preparser;
- if (!grammarNamespaces.contains(systemId)) {
+ if (!grammarNamespaces.contains(systemId)) {
grammarNamespaces.add(systemId);
-
+
// unlock the pool so that we can add another grammar
grammarPool.unlockPool();
-
+
// prepare the preparser
preparser = new XMLGrammarPreparser(symbolTable);
preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null);
preparser.setProperty(GRAMMAR_POOL, grammarPool);
preparser.setFeature(NAMESPACES_FEATURE, true);
preparser.setFeature(VALIDATION_FEATURE, true);
-
+
// add the grammar to the pool
preparser.preparseGrammar(
- XMLGrammarDescription.XML_SCHEMA,
- new XMLInputSource(null, systemId, null, inputStream, null));
-
+ XMLGrammarDescription.XML_SCHEMA,
+ new XMLInputSource(null, systemId, null, inputStream, null));
+
// lock the pool again so that schemas are not added automatically
grammarPool.lockPool();
}
@@ -183,34 +186,43 @@ public class DOMUtils {
/**
* Parse an XML document from an <code>InputStream</code>.
- *
- * @param inputStream The <code>InputStream</code> containing the XML
- * document.
- * @param validating If <code>true</code>, parse validating.
- * @param externalSchemaLocations A <code>String</code> containing namespace
- * URI to schema location pairs, the same way it is accepted by the <code>xsi:
- * schemaLocation</code> attribute.
- * @param externalNoNamespaceSchemaLocation The schema location of the
- * schema for elements without a namespace, the same way it is accepted by the
- * <code>xsi:noNamespaceSchemaLocation</code> attribute.
- * @param entityResolver An <code>EntityResolver</code> to resolve external
- * entities (schemas and DTDs). If <code>null</code>, it will not be set.
- * @param errorHandler An <code>ErrorHandler</code> to decide what to do
- * with parsing errors. If <code>null</code>, it will not be set.
+ *
+ * @param inputStream The <code>InputStream</code>
+ * containing the XML document.
+ * @param validating If <code>true</code>, parse
+ * validating.
+ * @param externalSchemaLocations A <code>String</code> containing
+ * namespace URI to schema location
+ * pairs, the same way it is accepted
+ * by the <code>xsi:
+ * schemaLocation</code> attribute.
+ * @param externalNoNamespaceSchemaLocation The schema location of the schema
+ * for elements without a namespace,
+ * the same way it is accepted by the
+ * <code>xsi:noNamespaceSchemaLocation</code>
+ * attribute.
+ * @param entityResolver An <code>EntityResolver</code> to
+ * resolve external entities (schemas
+ * and DTDs). If <code>null</code>, it
+ * will not be set.
+ * @param errorHandler An <code>ErrorHandler</code> to
+ * decide what to do with parsing
+ * errors. If <code>null</code>, it
+ * will not be set.
* @return The parsed XML document as a DOM tree.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document.
* @throws ParserConfigurationException An error occurred configuring the XML
- * parser.
+ * parser.
*/
public static Document parseDocument(
- InputStream inputStream,
- boolean validating,
- String externalSchemaLocations,
- String externalNoNamespaceSchemaLocation,
- EntityResolver entityResolver,
- ErrorHandler errorHandler)
- throws SAXException, IOException, ParserConfigurationException {
+ InputStream inputStream,
+ boolean validating,
+ String externalSchemaLocations,
+ String externalNoNamespaceSchemaLocation,
+ EntityResolver entityResolver,
+ ErrorHandler errorHandler)
+ throws SAXException, IOException, ParserConfigurationException {
DOMParser parser;
@@ -222,77 +234,77 @@ public class DOMUtils {
// }
// }
+ // if Debug is enabled make a copy of inputStream to enable debug output in case
+ // of SAXException
+ byte buffer[] = null;
+ ByteArrayInputStream baStream = null;
+ if (true == Logger.isDebugEnabled()) {
+ final int len = inputStream.available();
+ buffer = new byte[len];
+ inputStream.read(buffer);
+ baStream = new ByteArrayInputStream(buffer);
+ }
- //if Debug is enabled make a copy of inputStream to enable debug output in case of SAXException
- byte buffer [] = null;
- ByteArrayInputStream baStream = null;
- if(true == Logger.isDebugEnabled()) {
- int len = inputStream.available();
- buffer = new byte[len];
- inputStream.read(buffer);
- baStream = new ByteArrayInputStream(buffer);
- }
-
// create the DOM parser
if (symbolTable != null) {
parser = new DOMParser(symbolTable, grammarPool);
} else {
parser = new DOMParser();
}
-
-
-
+
// set parser features and properties
try {
- parser.setFeature(NAMESPACES_FEATURE, true);
- parser.setFeature(VALIDATION_FEATURE, validating);
- parser.setFeature(SCHEMA_VALIDATION_FEATURE, validating);
- parser.setFeature(NORMALIZED_VALUE_FEATURE, false);
- parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true);
- parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false);
- parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false);
- parser.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, false);
-
- SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager();
- parser.setProperty(SECURITY_MANAGER, xmlParserSecManager);
-
- //fix XXE problem
- //parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
-
- if (validating) {
- if (externalSchemaLocations != null) {
- parser.setProperty(
- EXTERNAL_SCHEMA_LOCATION_PROPERTY,
- externalSchemaLocations);
- }
- if (externalNoNamespaceSchemaLocation != null) {
- parser.setProperty(
- EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY,
- externalNoNamespaceSchemaLocation);
- }
- }
-
- // set entity resolver and error handler
- if (entityResolver != null) {
- parser.setEntityResolver(entityResolver);
- }
- if (errorHandler != null) {
- parser.setErrorHandler(errorHandler);
- }
-
- // parse the document and return it
- // if debug is enabled: use copy of strem (baStream) else use orig stream
-
- if(null != baStream)
- parser.parse(new InputSource(baStream));
- else
- parser.parse(new InputSource(inputStream));
- } catch(SAXException e) {
- if(true == Logger.isDebugEnabled() && null != buffer) {
- String xmlContent = new String(buffer);
- Logger.debug("SAXException in:\n" + xmlContent);
- }
- throw(e);
+ parser.setFeature(NAMESPACES_FEATURE, true);
+ parser.setFeature(VALIDATION_FEATURE, validating);
+ parser.setFeature(SCHEMA_VALIDATION_FEATURE, validating);
+ parser.setFeature(NORMALIZED_VALUE_FEATURE, false);
+ parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true);
+ parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false);
+ parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false);
+ parser.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, false);
+
+ final SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager();
+ parser.setProperty(SECURITY_MANAGER, xmlParserSecManager);
+
+ // fix XXE problem
+ // parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl",
+ // true);
+
+ if (validating) {
+ if (externalSchemaLocations != null) {
+ parser.setProperty(
+ EXTERNAL_SCHEMA_LOCATION_PROPERTY,
+ externalSchemaLocations);
+ }
+ if (externalNoNamespaceSchemaLocation != null) {
+ parser.setProperty(
+ EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY,
+ externalNoNamespaceSchemaLocation);
+ }
+ }
+
+ // set entity resolver and error handler
+ if (entityResolver != null) {
+ parser.setEntityResolver(entityResolver);
+ }
+ if (errorHandler != null) {
+ parser.setErrorHandler(errorHandler);
+ }
+
+ // parse the document and return it
+ // if debug is enabled: use copy of strem (baStream) else use orig stream
+
+ if (null != baStream) {
+ parser.parse(new InputSource(baStream));
+ } else {
+ parser.parse(new InputSource(inputStream));
+ }
+ } catch (final SAXException e) {
+ if (true == Logger.isDebugEnabled() && null != buffer) {
+ final String xmlContent = new String(buffer);
+ Logger.debug("SAXException in:\n" + xmlContent);
+ }
+ throw e;
}
return parser.getDocument();
@@ -300,31 +312,40 @@ public class DOMUtils {
/**
* Parse an XML document from an <code>InputStream</code>.
- *
- * @param inputStream The <code>InputStream</code> containing the XML
- * document.
- * @param validating If <code>true</code>, parse validating.
- * @param externalSchemaLocations A <code>String</code> containing namespace
- * URI to schema location pairs, the same way it is accepted by the <code>xsi:
- * schemaLocation</code> attribute.
- * @param externalNoNamespaceSchemaLocation The schema location of the
- * schema for elements without a namespace, the same way it is accepted by the
- * <code>xsi:noNamespaceSchemaLocation</code> attribute.
- * @param entityResolver An <code>EntityResolver</code> to resolve external
- * entities (schemas and DTDs). If <code>null</code>, it will not be set.
- * @param errorHandler An <code>ErrorHandler</code> to decide what to do
- * with parsing errors. If <code>null</code>, it will not be set.
+ *
+ * @param inputStream The <code>InputStream</code>
+ * containing the XML document.
+ * @param validating If <code>true</code>, parse
+ * validating.
+ * @param externalSchemaLocations A <code>String</code> containing
+ * namespace URI to schema location
+ * pairs, the same way it is accepted
+ * by the <code>xsi:
+ * schemaLocation</code> attribute.
+ * @param externalNoNamespaceSchemaLocation The schema location of the schema
+ * for elements without a namespace,
+ * the same way it is accepted by the
+ * <code>xsi:noNamespaceSchemaLocation</code>
+ * attribute.
+ * @param entityResolver An <code>EntityResolver</code> to
+ * resolve external entities (schemas
+ * and DTDs). If <code>null</code>, it
+ * will not be set.
+ * @param errorHandler An <code>ErrorHandler</code> to
+ * decide what to do with parsing
+ * errors. If <code>null</code>, it
+ * will not be set.
* @return The parsed XML document as a DOM tree.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document.
* @throws ParserConfigurationException An error occurred configuring the XML
- * parser.
+ * parser.
*/
public static Document parseDocumentSimple(InputStream inputStream)
- throws SAXException, IOException, ParserConfigurationException {
+ throws SAXException, IOException, ParserConfigurationException {
DOMParser parser;
-
+
parser = new DOMParser();
// set parser features and properties
parser.setFeature(NAMESPACES_FEATURE, true);
@@ -333,184 +354,200 @@ public class DOMUtils {
parser.setFeature(NORMALIZED_VALUE_FEATURE, false);
parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true);
parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false);
-
- SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager();
+
+ final SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager();
parser.setProperty(SECURITY_MANAGER, xmlParserSecManager);
-
+
parser.parse(new InputSource(inputStream));
-
+
return parser.getDocument();
}
-
/**
* Parse an XML document from an <code>InputStream</code>.
- *
+ *
* It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code>
* and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>.
- *
- * @param inputStream The <code>InputStream</code> containing the XML
- * document.
- * @param validating If <code>true</code>, parse validating.
- * @param externalSchemaLocations A <code>String</code> containing namespace
- * URI to schema location pairs, the same way it is accepted by the <code>xsi:
- * schemaLocation</code> attribute.
- * @param externalNoNamespaceSchemaLocation The schema location of the
- * schema for elements without a namespace, the same way it is accepted by the
- * <code>xsi:noNamespaceSchemaLocation</code> attribute.
+ *
+ * @param inputStream The <code>InputStream</code>
+ * containing the XML document.
+ * @param validating If <code>true</code>, parse
+ * validating.
+ * @param externalSchemaLocations A <code>String</code> containing
+ * namespace URI to schema location
+ * pairs, the same way it is accepted
+ * by the <code>xsi:
+ * schemaLocation</code> attribute.
+ * @param externalNoNamespaceSchemaLocation The schema location of the schema
+ * for elements without a namespace,
+ * the same way it is accepted by the
+ * <code>xsi:noNamespaceSchemaLocation</code>
+ * attribute.
* @return The parsed XML document as a DOM tree.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document.
* @throws ParserConfigurationException An error occurred configuring the XML
- * parser.
+ * parser.
*/
public static Document parseDocument(
- InputStream inputStream,
- boolean validating,
- String externalSchemaLocations,
- String externalNoNamespaceSchemaLocation)
- throws SAXException, IOException, ParserConfigurationException {
-
-
-
+ InputStream inputStream,
+ boolean validating,
+ String externalSchemaLocations,
+ String externalNoNamespaceSchemaLocation)
+ throws SAXException, IOException, ParserConfigurationException {
+
return parseDocument(
- inputStream,
- validating,
- externalSchemaLocations,
- externalNoNamespaceSchemaLocation,
- new MOAEntityResolver(),
- new MOAErrorHandler());
+ inputStream,
+ validating,
+ externalSchemaLocations,
+ externalNoNamespaceSchemaLocation,
+ new MOAEntityResolver(),
+ new MOAErrorHandler());
}
/**
* Parse an XML document from a <code>String</code>.
- *
+ *
* It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code>
* and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>.
- *
- * @param xmlString The <code>String</code> containing the XML document.
- * @param encoding The encoding of the XML document.
- * @param validating If <code>true</code>, parse validating.
- * @param externalSchemaLocations A <code>String</code> containing namespace
- * URI to schema location pairs, the same way it is accepted by the <code>xsi:
- * schemaLocation</code> attribute.
- * @param externalNoNamespaceSchemaLocation The schema location of the
- * schema for elements without a namespace, the same way it is accepted by the
- * <code>xsi:noNamespaceSchemaLocation</code> attribute.
+ *
+ * @param xmlString The <code>String</code> containing
+ * the XML document.
+ * @param encoding The encoding of the XML document.
+ * @param validating If <code>true</code>, parse
+ * validating.
+ * @param externalSchemaLocations A <code>String</code> containing
+ * namespace URI to schema location
+ * pairs, the same way it is accepted
+ * by the <code>xsi:
+ * schemaLocation</code> attribute.
+ * @param externalNoNamespaceSchemaLocation The schema location of the schema
+ * for elements without a namespace,
+ * the same way it is accepted by the
+ * <code>xsi:noNamespaceSchemaLocation</code>
+ * attribute.
* @return The parsed XML document as a DOM tree.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document.
* @throws ParserConfigurationException An error occurred configuring the XML
- * parser.
+ * parser.
*/
public static Document parseDocument(
- String xmlString,
- String encoding,
- boolean validating,
- String externalSchemaLocations,
- String externalNoNamespaceSchemaLocation)
- throws SAXException, IOException, ParserConfigurationException {
-
- InputStream in = new ByteArrayInputStream(xmlString.getBytes(encoding));
+ String xmlString,
+ String encoding,
+ boolean validating,
+ String externalSchemaLocations,
+ String externalNoNamespaceSchemaLocation)
+ throws SAXException, IOException, ParserConfigurationException {
+
+ final InputStream in = new ByteArrayInputStream(xmlString.getBytes(encoding));
return parseDocument(
- in,
- validating,
- externalSchemaLocations,
- externalNoNamespaceSchemaLocation);
+ in,
+ validating,
+ externalSchemaLocations,
+ externalNoNamespaceSchemaLocation);
}
/**
* Parse an UTF-8 encoded XML document from a <code>String</code>.
- *
- * @param xmlString The <code>String</code> containing the XML document.
- * @param validating If <code>true</code>, parse validating.
- * @param externalSchemaLocations A <code>String</code> containing namespace
- * URI to schema location pairs, the same way it is accepted by the <code>xsi:
- * schemaLocation</code> attribute.
- * @param externalNoNamespaceSchemaLocation The schema location of the
- * schema for elements without a namespace, the same way it is accepted by the
- * <code>xsi:noNamespaceSchemaLocation</code> attribute.
+ *
+ * @param xmlString The <code>String</code> containing
+ * the XML document.
+ * @param validating If <code>true</code>, parse
+ * validating.
+ * @param externalSchemaLocations A <code>String</code> containing
+ * namespace URI to schema location
+ * pairs, the same way it is accepted
+ * by the <code>xsi:
+ * schemaLocation</code> attribute.
+ * @param externalNoNamespaceSchemaLocation The schema location of the schema
+ * for elements without a namespace,
+ * the same way it is accepted by the
+ * <code>xsi:noNamespaceSchemaLocation</code>
+ * attribute.
* @return The parsed XML document as a DOM tree.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document.
* @throws ParserConfigurationException An error occurred configuring the XML
- * parser.
+ * parser.
*/
public static Document parseDocument(
- String xmlString,
- boolean validating,
- String externalSchemaLocations,
- String externalNoNamespaceSchemaLocation)
- throws SAXException, IOException, ParserConfigurationException {
+ String xmlString,
+ boolean validating,
+ String externalSchemaLocations,
+ String externalNoNamespaceSchemaLocation)
+ throws SAXException, IOException, ParserConfigurationException {
return parseDocument(
- xmlString,
- "UTF-8",
- validating,
- externalSchemaLocations,
- externalNoNamespaceSchemaLocation);
+ xmlString,
+ "UTF-8",
+ validating,
+ externalSchemaLocations,
+ externalNoNamespaceSchemaLocation);
}
/**
* A convenience method to parse an XML document validating.
- *
- * @param inputStream The <code>InputStream</code> containing the XML
- * document.
+ *
+ * @param inputStream The <code>InputStream</code> containing the XML document.
* @return The root element of the parsed XML document.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document.
* @throws ParserConfigurationException An error occurred configuring the XML
- * parser.
+ * parser.
*/
public static Element parseXmlValidating(InputStream inputStream)
- throws ParserConfigurationException, SAXException, IOException {
+ throws ParserConfigurationException, SAXException, IOException {
return DOMUtils
- .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null)
- .getDocumentElement();
+ .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null)
+ .getDocumentElement();
}
-
+
/**
* A convenience method to parse an XML document non validating.
- *
- * @param inputStream The <code>InputStream</code> containing the XML
- * document.
+ *
+ * @param inputStream The <code>InputStream</code> containing the XML document.
* @return The root element of the parsed XML document.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document.
* @throws ParserConfigurationException An error occurred configuring the XML
- * parser.
+ * parser.
*/
public static Element parseXmlNonValidating(InputStream inputStream)
- throws ParserConfigurationException, SAXException, IOException {
+ throws ParserConfigurationException, SAXException, IOException {
return DOMUtils
- .parseDocument(inputStream, false, Constants.ALL_SCHEMA_LOCATIONS, null)
- .getDocumentElement();
+ .parseDocument(inputStream, false, Constants.ALL_SCHEMA_LOCATIONS, null)
+ .getDocumentElement();
}
/**
* Schema validate a given DOM element.
- *
- * @param element The element to validate.
- * @param externalSchemaLocations A <code>String</code> containing namespace
- * URI to schema location pairs, the same way it is accepted by the <code>xsi:
- * schemaLocation</code> attribute.
- * @param externalNoNamespaceSchemaLocation The schema location of the
- * schema for elements without a namespace, the same way it is accepted by the
- * <code>xsi:noNamespaceSchemaLocation</code> attribute.
- * @return <code>true</code>, if the <code>element</code> validates against
- * the schemas declared in it.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document from its
- * serialized representation.
+ *
+ * @param element The element to validate.
+ * @param externalSchemaLocations A <code>String</code> containing
+ * namespace URI to schema location
+ * pairs, the same way it is accepted
+ * by the <code>xsi:
+ * schemaLocation</code> attribute.
+ * @param externalNoNamespaceSchemaLocation The schema location of the schema
+ * for elements without a namespace,
+ * the same way it is accepted by the
+ * <code>xsi:noNamespaceSchemaLocation</code>
+ * attribute.
+ * @return <code>true</code>, if the <code>element</code> validates against the
+ * schemas declared in it.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document
+ * from its serialized representation.
* @throws ParserConfigurationException An error occurred configuring the XML
- * @throws TransformerException An error occurred serializing the element.
+ * @throws TransformerException An error occurred serializing the
+ * element.
*/
public static boolean validateElement(
- Element element,
- String externalSchemaLocations,
- String externalNoNamespaceSchemaLocation)
- throws
- ParserConfigurationException,
+ Element element,
+ String externalSchemaLocations,
+ String externalNoNamespaceSchemaLocation)
+ throws ParserConfigurationException,
IOException,
SAXException,
TransformerException {
@@ -534,16 +571,16 @@ public class DOMUtils {
parser.setFeature(SCHEMA_VALIDATION_FEATURE, true);
parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false);
parser.setFeature(DISALLOW_DOCTYPE_FEATURE, true);
-
+
if (externalSchemaLocations != null) {
parser.setProperty(
- EXTERNAL_SCHEMA_LOCATION_PROPERTY,
- externalSchemaLocations);
+ EXTERNAL_SCHEMA_LOCATION_PROPERTY,
+ externalSchemaLocations);
}
if (externalNoNamespaceSchemaLocation != null) {
parser.setProperty(
- EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY,
- "externalNoNamespaceSchemaLocation");
+ EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY,
+ "externalNoNamespaceSchemaLocation");
}
// set up entity resolver and error handler
@@ -555,32 +592,35 @@ public class DOMUtils {
return true;
}
-
/**
* Schema validate a given DOM element.
- *
- * @param element The element to validate.
- * @param externalSchemaLocations A <code>String</code> containing namespace
- * URI to schema location pairs, the same way it is accepted by the <code>xsi:
- * schemaLocation</code> attribute.
- * @param externalNoNamespaceSchemaLocation The schema location of the
- * schema for elements without a namespace, the same way it is accepted by the
- * <code>xsi:noNamespaceSchemaLocation</code> attribute.
- * @return <code>true</code>, if the <code>element</code> validates against
- * the schemas declared in it.
- * @throws SAXException An error occurred parsing the document.
- * @throws IOException An error occurred reading the document from its
- * serialized representation.
+ *
+ * @param element The element to validate.
+ * @param externalSchemaLocations A <code>String</code> containing
+ * namespace URI to schema location
+ * pairs, the same way it is accepted
+ * by the <code>xsi:
+ * schemaLocation</code> attribute.
+ * @param externalNoNamespaceSchemaLocation The schema location of the schema
+ * for elements without a namespace,
+ * the same way it is accepted by the
+ * <code>xsi:noNamespaceSchemaLocation</code>
+ * attribute.
+ * @return <code>true</code>, if the <code>element</code> validates against the
+ * schemas declared in it.
+ * @throws SAXException An error occurred parsing the document.
+ * @throws IOException An error occurred reading the document
+ * from its serialized representation.
* @throws ParserConfigurationException An error occurred configuring the XML
- * @throws TransformerException An error occurred serializing the element.
+ * @throws TransformerException An error occurred serializing the
+ * element.
*/
public static boolean validateElement(
- Element element,
- String externalSchemaLocations,
- String externalNoNamespaceSchemaLocation,
- EntityResolver entityResolver)
- throws
- ParserConfigurationException,
+ Element element,
+ String externalSchemaLocations,
+ String externalNoNamespaceSchemaLocation,
+ EntityResolver entityResolver)
+ throws ParserConfigurationException,
IOException,
SAXException,
TransformerException {
@@ -602,19 +642,19 @@ public class DOMUtils {
parser.setFeature(NAMESPACES_FEATURE, true);
parser.setFeature(VALIDATION_FEATURE, true);
parser.setFeature(SCHEMA_VALIDATION_FEATURE, true);
-
- SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager();
+
+ final SecurityManager xmlParserSecManager = new org.apache.xerces.util.SecurityManager();
parser.setProperty(SECURITY_MANAGER, xmlParserSecManager);
-
+
if (externalSchemaLocations != null) {
parser.setProperty(
- EXTERNAL_SCHEMA_LOCATION_PROPERTY,
- externalSchemaLocations);
+ EXTERNAL_SCHEMA_LOCATION_PROPERTY,
+ externalSchemaLocations);
}
if (externalNoNamespaceSchemaLocation != null) {
parser.setProperty(
- EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY,
- "externalNoNamespaceSchemaLocation");
+ EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY,
+ "externalNoNamespaceSchemaLocation");
}
// set up entity resolver and error handler
@@ -625,122 +665,127 @@ public class DOMUtils {
parser.parse(new InputSource(new ByteArrayInputStream(docBytes)));
return true;
}
-
+
/**
* Serialize the given DOM node.
- *
+ *
* The node will be serialized using the UTF-8 encoding.
- *
+ *
* @param node The node to serialize.
- * @return String The <code>String</code> representation of the given DOM
- * node.
- * @throws TransformerException An error occurred transforming the
- * node to a <code>String</code>.
- * @throws IOException An IO error occurred writing the node to a byte array.
+ * @return String The <code>String</code> representation of the given DOM node.
+ * @throws TransformerException An error occurred transforming the node to a
+ * <code>String</code>.
+ * @throws IOException An IO error occurred writing the node to a byte
+ * array.
*/
public static String serializeNode(Node node)
- throws TransformerException, IOException {
+ throws TransformerException, IOException {
return new String(serializeNode(node, "UTF-8", false), "UTF-8");
}
-
/**
* Serialize the given DOM node.
- *
+ *
* The node will be serialized using the UTF-8 encoding.
- *
- * @param node The node to serialize.
+ *
+ * @param node The node to serialize.
* @param omitXmlDeclaration The boolean value for omitting the XML Declaration.
- * @return String The <code>String</code> representation of the given DOM
- * node.
- * @throws TransformerException An error occurred transforming the
- * node to a <code>String</code>.
- * @throws IOException An IO error occurred writing the node to a byte array.
+ * @return String The <code>String</code> representation of the given DOM node.
+ * @throws TransformerException An error occurred transforming the node to a
+ * <code>String</code>.
+ * @throws IOException An IO error occurred writing the node to a byte
+ * array.
*/
public static String serializeNode(Node node, boolean omitXmlDeclaration)
- throws TransformerException, IOException {
+ throws TransformerException, IOException {
return new String(serializeNode(node, "UTF-8", omitXmlDeclaration), "UTF-8");
}
/**
* Serialize the given DOM node.
- *
+ *
* The node will be serialized using the UTF-8 encoding.
- *
- * @param node The node to serialize.
+ *
+ * @param node The node to serialize.
* @param omitXmlDeclaration The boolean value for omitting the XML Declaration.
- * @param lineSeperator Sets the line seperator String of the parser
- * @return String The <code>String</code> representation of the given DOM
- * node.
- * @throws TransformerException An error occurred transforming the
- * node to a <code>String</code>.
- * @throws IOException An IO error occurred writing the node to a byte array.
+ * @param lineSeperator Sets the line seperator String of the parser
+ * @return String The <code>String</code> representation of the given DOM node.
+ * @throws TransformerException An error occurred transforming the node to a
+ * <code>String</code>.
+ * @throws IOException An IO error occurred writing the node to a byte
+ * array.
*/
public static String serializeNode(Node node, boolean omitXmlDeclaration, String lineSeperator)
- throws TransformerException, IOException {
+ throws TransformerException, IOException {
return new String(serializeNode(node, "UTF-8", omitXmlDeclaration, lineSeperator), "UTF-8");
}
-
+
/**
* Serialize the given DOM node to a byte array.
- *
- * @param node The node to serialize.
+ *
+ * @param node The node to serialize.
* @param xmlEncoding The XML encoding to use.
* @return The serialized node, as a byte array. Using a compatible encoding
- * this can easily be converted into a <code>String</code>.
- * @throws TransformerException An error occurred transforming the node to a
- * byte array.
- * @throws IOException An IO error occurred writing the node to a byte array.
+ * this can easily be converted into a <code>String</code>.
+ * @throws TransformerException An error occurred transforming the node to a
+ * byte array.
+ * @throws IOException An IO error occurred writing the node to a byte
+ * array.
*/
public static byte[] serializeNode(Node node, String xmlEncoding)
- throws TransformerException, IOException {
+ throws TransformerException, IOException {
return serializeNode(node, xmlEncoding, false);
}
-
+
/**
* Serialize the given DOM node to a byte array.
- *
- * @param node The node to serialize.
- * @param xmlEncoding The XML encoding to use.
+ *
+ * @param node The node to serialize.
+ * @param xmlEncoding The XML encoding to use.
* @param omitDeclaration The boolean value for omitting the XML Declaration.
* @return The serialized node, as a byte array. Using a compatible encoding
- * this can easily be converted into a <code>String</code>.
- * @throws TransformerException An error occurred transforming the node to a
- * byte array.
- * @throws IOException An IO error occurred writing the node to a byte array.
+ * this can easily be converted into a <code>String</code>.
+ * @throws TransformerException An error occurred transforming the node to a
+ * byte array.
+ * @throws IOException An IO error occurred writing the node to a byte
+ * array.
*/
public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration)
- throws TransformerException, IOException {
+ throws TransformerException, IOException {
return serializeNode(node, xmlEncoding, omitDeclaration, null);
}
-
/**
* Serialize the given DOM node to a byte array.
- *
- * @param node The node to serialize.
- * @param xmlEncoding The XML encoding to use.
+ *
+ * @param node The node to serialize.
+ * @param xmlEncoding The XML encoding to use.
* @param omitDeclaration The boolean value for omitting the XML Declaration.
- * @param lineSeperator Sets the line seperator String of the parser
+ * @param lineSeperator Sets the line seperator String of the parser
* @return The serialized node, as a byte array. Using a compatible encoding
- * this can easily be converted into a <code>String</code>.
- * @throws TransformerException An error occurred transforming the node to a
- * byte array.
- * @throws IOException An IO error occurred writing the node to a byte array.
+ * this can easily be converted into a <code>String</code>.
+ * @throws TransformerException An error occurred transforming the node to a
+ * byte array.
+ * @throws IOException An IO error occurred writing the node to a byte
+ * array.
*/
- public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration, String lineSeperator)
- throws TransformerException, IOException {
+ public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration,
+ String lineSeperator)
+ throws TransformerException, IOException {
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- ByteArrayOutputStream bos = new ByteArrayOutputStream(16384);
+ final TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ final Transformer transformer = transformerFactory.newTransformer();
+ final ByteArrayOutputStream bos = new ByteArrayOutputStream(16384);
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, xmlEncoding);
- String omit = omitDeclaration ? "yes" : "no";
+ final String omit = omitDeclaration ? "yes" : "no";
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, omit);
- if (null!=lineSeperator) {
- transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", lineSeperator);//does not work for xalan <= 2.5.1
+ if (null != lineSeperator) {
+ transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", lineSeperator);// does not
+ // work for
+ // xalan <=
+ // 2.5.1
}
transformer.transform(new DOMSource(node), new StreamResult(bos));
@@ -751,30 +796,30 @@ public class DOMUtils {
}
/**
- * Return the text that a node contains.
- *
- * This routine:
- * <ul>
- * <li>Ignores comments and processing instructions.</li>
- * <li>Concatenates TEXT nodes, CDATA nodes, and the results recursively
- * processing EntityRef nodes.</li>
- * <li>Ignores any element nodes in the sublist. (Other possible options are
- * to recurse into element sublists or throw an exception.)</li>
- * </ul>
- *
- * @param node A DOM node from which to extract text.
- * @return A String representing its contents.
- */
+ * Return the text that a node contains.
+ *
+ * This routine:
+ * <ul>
+ * <li>Ignores comments and processing instructions.</li>
+ * <li>Concatenates TEXT nodes, CDATA nodes, and the results recursively
+ * processing EntityRef nodes.</li>
+ * <li>Ignores any element nodes in the sublist. (Other possible options are to
+ * recurse into element sublists or throw an exception.)</li>
+ * </ul>
+ *
+ * @param node A DOM node from which to extract text.
+ * @return A String representing its contents.
+ */
public static String getText(Node node) {
if (!node.hasChildNodes()) {
return "";
}
- StringBuffer result = new StringBuffer();
- NodeList list = node.getChildNodes();
+ final StringBuffer result = new StringBuffer();
+ final NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
- Node subnode = list.item(i);
+ final Node subnode = list.item(i);
if (subnode.getNodeType() == Node.TEXT_NODE) {
result.append(subnode.getNodeValue());
} else if (subnode.getNodeType() == Node.CDATA_SECTION_NODE) {
@@ -791,28 +836,28 @@ public class DOMUtils {
/**
* Build the namespace prefix to namespace URL mapping in effect for a given
* node.
- *
+ *
* @param node The context node for which build the map.
- * @return The namespace prefix to namespace URL mapping (
- * a <code>String</code> value to <code>String</code> value mapping).
+ * @return The namespace prefix to namespace URL mapping ( a <code>String</code>
+ * value to <code>String</code> value mapping).
*/
public static Map getNamespaceDeclarations(Node node) {
- Map nsDecls = new HashMap();
+ final Map nsDecls = new HashMap();
int i;
do {
if (node.hasAttributes()) {
- NamedNodeMap attrs = node.getAttributes();
+ final NamedNodeMap attrs = node.getAttributes();
for (i = 0; i < attrs.getLength(); i++) {
- Attr attr = (Attr) attrs.item(i);
+ final Attr attr = (Attr) attrs.item(i);
// add prefix mapping if none exists
if ("xmlns".equals(attr.getPrefix())
- || "xmlns".equals(attr.getName())) {
+ || "xmlns".equals(attr.getName())) {
- String nsPrefix =
- attr.getPrefix() != null ? attr.getLocalName() : "";
+ final String nsPrefix =
+ attr.getPrefix() != null ? attr.getLocalName() : "";
if (nsDecls.get(nsPrefix) == null) {
nsDecls.put(nsPrefix, attr.getValue());
@@ -826,26 +871,26 @@ public class DOMUtils {
}
/**
- * Add all namespace declarations declared in the parent(s) of a given
- * element and used in the subtree of the given element to the given element.
- *
+ * Add all namespace declarations declared in the parent(s) of a given element
+ * and used in the subtree of the given element to the given element.
+ *
* @param context The element to which to add the namespaces.
*/
public static void localizeNamespaceDeclarations(Element context) {
- Node parent = context.getParentNode();
+ final Node parent = context.getParentNode();
if (parent != null) {
- Map namespaces = getNamespaceDeclarations(context.getParentNode());
- Set nsUris = collectNamespaceURIs(context);
+ final Map namespaces = getNamespaceDeclarations(context.getParentNode());
+ final Set nsUris = collectNamespaceURIs(context);
Iterator iter;
for (iter = namespaces.entrySet().iterator(); iter.hasNext();) {
- Map.Entry e = (Map.Entry) iter.next();
+ final Map.Entry e = (Map.Entry) iter.next();
if (nsUris.contains(e.getValue())) {
- String prefix = (String) e.getKey();
- String nsUri = (String) e.getValue();
- String nsAttrName = "".equals(prefix) ? "xmlns" : "xmlns:" + prefix;
+ final String prefix = (String) e.getKey();
+ final String nsUri = (String) e.getValue();
+ final String nsAttrName = "".equals(prefix) ? "xmlns" : "xmlns:" + prefix;
context.setAttributeNS(Constants.XMLNS_NS_URI, nsAttrName, nsUri);
}
@@ -855,13 +900,13 @@ public class DOMUtils {
/**
* Collect all the namespace URIs used in the subtree of a given element.
- *
+ *
* @param context The element that should be searched for namespace URIs.
* @return All namespace URIs used in the subtree of <code>context</code>,
- * including the ones used in <code>context</code> itself.
+ * including the ones used in <code>context</code> itself.
*/
public static Set collectNamespaceURIs(Element context) {
- Set result = new HashSet();
+ final Set result = new HashSet();
collectNamespaceURIsImpl(context, result);
return result;
@@ -869,14 +914,14 @@ public class DOMUtils {
/**
* A recursive method to do the work of <code>collectNamespaceURIs</code>.
- *
+ *
* @param context The context element to evaluate.
- * @param result The result, passed as a parameter to avoid unnecessary
- * instantiations of <code>Set</code>.
+ * @param result The result, passed as a parameter to avoid unnecessary
+ * instantiations of <code>Set</code>.
*/
private static void collectNamespaceURIsImpl(Element context, Set result) {
- NamedNodeMap attrs = context.getAttributes();
- NodeList childNodes = context.getChildNodes();
+ final NamedNodeMap attrs = context.getAttributes();
+ final NodeList childNodes = context.getChildNodes();
String nsUri;
int i;
@@ -896,7 +941,7 @@ public class DOMUtils {
// add all namespaces from subelements
for (i = 0; i < childNodes.getLength(); i++) {
- Node node = childNodes.item(i);
+ final Node node = childNodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
collectNamespaceURIsImpl((Element) node, result);
@@ -907,13 +952,13 @@ public class DOMUtils {
/**
* Check, that each attribute node in the given <code>NodeList</code> has its
* parent in the <code>NodeList</code> as well.
- *
+ *
* @param nodes The <code>NodeList</code> to check.
- * @return <code>true</code>, if each attribute node in <code>nodes</code>
- * has its parent in <code>nodes</code> as well.
+ * @return <code>true</code>, if each attribute node in <code>nodes</code> has
+ * its parent in <code>nodes</code> as well.
*/
public static boolean checkAttributeParentsInNodeList(NodeList nodes) {
- Set nodeSet = new HashSet();
+ final Set nodeSet = new HashSet();
int i;
// put the nodes into the nodeSet
@@ -923,11 +968,11 @@ public class DOMUtils {
// check that each attribute node's parent is in the node list
for (i = 0; i < nodes.getLength(); i++) {
- Node n = nodes.item(i);
+ final Node n = nodes.item(i);
if (n.getNodeType() == Node.ATTRIBUTE_NODE) {
- Attr attr = (Attr) n;
- Element owner = attr.getOwnerElement();
+ final Attr attr = (Attr) n;
+ final Element owner = attr.getOwnerElement();
if (owner == null) {
if (!isNamespaceDeclaration(attr)) {
@@ -945,29 +990,28 @@ public class DOMUtils {
}
/**
- * Convert an unstructured <code>NodeList</code> into a
+ * Convert an unstructured <code>NodeList</code> into a
* <code>DocumentFragment</code>.
*
- * @param nodeList Contains the node list to be converted into a DOM
- * DocumentFragment.
- * @return the resulting DocumentFragment. The DocumentFragment will be
- * backed by a new DOM Document, i.e. all noded of the node list will be
- * cloned.
+ * @param nodeList Contains the node list to be converted into a DOM
+ * DocumentFragment.
+ * @return the resulting DocumentFragment. The DocumentFragment will be backed
+ * by a new DOM Document, i.e. all noded of the node list will be
+ * cloned.
* @throws ParserConfigurationException An error occurred creating the
- * DocumentFragment.
+ * DocumentFragment.
* @precondition The nodes in the node list appear in document order
- * @precondition for each Attr node in the node list, the owning Element is
- * in the node list as well.
- * @precondition each Element or Attr node in the node list is namespace
- * aware.
+ * @precondition for each Attr node in the node list, the owning Element is in
+ * the node list as well.
+ * @precondition each Element or Attr node in the node list is namespace aware.
*/
public static DocumentFragment nodeList2DocumentFragment(NodeList nodeList)
- throws ParserConfigurationException {
+ throws ParserConfigurationException {
- DocumentBuilder builder =
- DocumentBuilderFactory.newInstance().newDocumentBuilder();
- Document doc = builder.newDocument();
- DocumentFragment result = doc.createDocumentFragment();
+ final DocumentBuilder builder =
+ DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ final Document doc = builder.newDocument();
+ final DocumentFragment result = doc.createDocumentFragment();
if (null == nodeList || nodeList.getLength() == 0) {
return result;
@@ -975,116 +1019,114 @@ public class DOMUtils {
int currPos = 0;
currPos =
- nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1;
+ nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1;
while (currPos < nodeList.getLength()) {
currPos =
- nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1;
+ nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1;
}
return result;
}
/**
* Helper method for the <code>nodeList2DocumentFragment</code>.
- *
- * @param nodeList The <code>NodeList</code> to convert.
- * @param currPos The current position in the <code>nodeList</code>.
- * @param result The resulting <code>DocumentFragment</code>.
- * @param currOrgElem The current original element.
+ *
+ * @param nodeList The <code>NodeList</code> to convert.
+ * @param currPos The current position in the <code>nodeList</code>.
+ * @param result The resulting <code>DocumentFragment</code>.
+ * @param currOrgElem The current original element.
* @param currClonedElem The current cloned element.
* @return The current position.
*/
private static int nodeList2DocumentFragment(
- NodeList nodeList,
- int currPos,
- DocumentFragment result,
- Element currOrgElem,
- Element currClonedElem) {
+ NodeList nodeList,
+ int currPos,
+ DocumentFragment result,
+ Element currOrgElem,
+ Element currClonedElem) {
while (currPos < nodeList.getLength()) {
- Node currentNode = nodeList.item(currPos);
+ final Node currentNode = nodeList.item(currPos);
switch (currentNode.getNodeType()) {
- case Node.COMMENT_NODE :
- case Node.PROCESSING_INSTRUCTION_NODE :
- case Node.TEXT_NODE :
- {
- // Append current node either to resulting DocumentFragment or to
- // current cloned Element
- if (null == currClonedElem) {
- result.appendChild(
- result.getOwnerDocument().importNode(currentNode, false));
- } else {
- // Stop processing if current Node is not a descendant of
- // current Element
- if (!isAncestor(currOrgElem, currentNode)) {
- return --currPos;
- }
-
- currClonedElem.appendChild(
+ case Node.COMMENT_NODE:
+ case Node.PROCESSING_INSTRUCTION_NODE:
+ case Node.TEXT_NODE: {
+ // Append current node either to resulting DocumentFragment or to
+ // current cloned Element
+ if (null == currClonedElem) {
+ result.appendChild(
result.getOwnerDocument().importNode(currentNode, false));
+ } else {
+ // Stop processing if current Node is not a descendant of
+ // current Element
+ if (!isAncestor(currOrgElem, currentNode)) {
+ return --currPos;
}
- break;
+
+ currClonedElem.appendChild(
+ result.getOwnerDocument().importNode(currentNode, false));
}
+ break;
+ }
- case Node.ELEMENT_NODE :
- {
- Element nextCurrOrgElem = (Element) currentNode;
- Element nextCurrClonedElem =
+ case Node.ELEMENT_NODE: {
+ final Element nextCurrOrgElem = (Element) currentNode;
+ final Element nextCurrClonedElem =
result.getOwnerDocument().createElementNS(
- nextCurrOrgElem.getNamespaceURI(),
- nextCurrOrgElem.getNodeName());
-
- // Append current Node either to resulting DocumentFragment or to
- // current cloned Element
- if (null == currClonedElem) {
- result.appendChild(nextCurrClonedElem);
- currOrgElem = nextCurrOrgElem;
- currClonedElem = nextCurrClonedElem;
- } else {
- // Stop processing if current Node is not a descendant of
- // current Element
- if (!isAncestor(currOrgElem, currentNode)) {
- return --currPos;
- }
-
- currClonedElem.appendChild(nextCurrClonedElem);
+ nextCurrOrgElem.getNamespaceURI(),
+ nextCurrOrgElem.getNodeName());
+
+ // Append current Node either to resulting DocumentFragment or to
+ // current cloned Element
+ if (null == currClonedElem) {
+ result.appendChild(nextCurrClonedElem);
+ currOrgElem = nextCurrOrgElem;
+ currClonedElem = nextCurrClonedElem;
+ } else {
+ // Stop processing if current Node is not a descendant of
+ // current Element
+ if (!isAncestor(currOrgElem, currentNode)) {
+ return --currPos;
}
- // Process current Node (of type Element) recursively
- currPos =
+ currClonedElem.appendChild(nextCurrClonedElem);
+ }
+
+ // Process current Node (of type Element) recursively
+ currPos =
nodeList2DocumentFragment(
- nodeList,
- ++currPos,
- result,
- nextCurrOrgElem,
- nextCurrClonedElem);
+ nodeList,
+ ++currPos,
+ result,
+ nextCurrOrgElem,
+ nextCurrClonedElem);
- break;
- }
+ break;
+ }
- case Node.ATTRIBUTE_NODE :
- {
- Attr currAttr = (Attr) currentNode;
+ case Node.ATTRIBUTE_NODE: {
+ final Attr currAttr = (Attr) currentNode;
- // GK 20030411: Hack to overcome problems with IAIK IXSIL
- if (currAttr.getOwnerElement() == null)
- break;
- if (currClonedElem == null)
- break;
+ // GK 20030411: Hack to overcome problems with IAIK IXSIL
+ if (currAttr.getOwnerElement() == null) {
+ break;
+ }
+ if (currClonedElem == null) {
+ break;
+ }
- // currClonedElem must be the owner Element of currAttr if
- // preconditions are met
- currClonedElem.setAttributeNS(
+ // currClonedElem must be the owner Element of currAttr if
+ // preconditions are met
+ currClonedElem.setAttributeNS(
currAttr.getNamespaceURI(),
currAttr.getNodeName(),
currAttr.getValue());
- break;
- }
+ break;
+ }
- default :
- {
- // All other nodes will be ignored
- }
+ default: {
+ // All other nodes will be ignored
+ }
}
currPos++;
@@ -1095,10 +1137,10 @@ public class DOMUtils {
/**
* Check, if the given attribute is a namespace declaration.
- *
+ *
* @param attr The attribute to check.
* @return <code>true</code>, if the attribute is a namespace declaration,
- * <code>false</code> otherwise.
+ * <code>false</code> otherwise.
*/
private static boolean isNamespaceDeclaration(Attr attr) {
return Constants.XMLNS_NS_URI.equals(attr.getNamespaceURI());
@@ -1106,81 +1148,82 @@ public class DOMUtils {
/**
* Check, if a given DOM element is an ancestor of a given node.
- *
+ *
* @param candAnc The DOM element to check for being the ancestor.
- * @param cand The node to check for being the child.
- * @return <code>true</code>, if <code>candAnc</code> is an (indirect)
- * ancestor of <code>cand</code>; <code>false</code> otherwise.
+ * @param cand The node to check for being the child.
+ * @return <code>true</code>, if <code>candAnc</code> is an (indirect) ancestor
+ * of <code>cand</code>; <code>false</code> otherwise.
*/
public static boolean isAncestor(Element candAnc, Node cand) {
Node currPar = cand.getParentNode();
while (currPar != null) {
- if (candAnc == currPar)
+ if (candAnc == currPar) {
return true;
+ }
currPar = currPar.getParentNode();
}
return false;
}
-
+
/**
* Selects the (first) element from a node list and returns it.
- *
- * @param nl The NodeList to get the element from.
- * @return The (first) element included in the node list or <code>null</code>
- * if the node list is <code>null</code> or empty or no element is
- * included in the list.
+ *
+ * @param nl The NodeList to get the element from.
+ * @return The (first) element included in the node list or <code>null</code> if
+ * the node list is <code>null</code> or empty or no element is included
+ * in the list.
*/
- public static Element getElementFromNodeList (NodeList nl) {
- if ((nl == null) || (nl.getLength() == 0)) {
+ public static Element getElementFromNodeList(NodeList nl) {
+ if (nl == null || nl.getLength() == 0) {
return null;
}
- for (int i=0; i<nl.getLength(); i++) {
- Node node = nl.item(i);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- return (Element)node;
+ for (int i = 0; i < nl.getLength(); i++) {
+ final Node node = nl.item(i);
+ if (node.getNodeType() == Node.ELEMENT_NODE) {
+ return (Element) node;
}
}
return null;
}
-
+
/**
* Returns all child elements of the given element.
- *
- * @param parent The element to get the child elements from.
- *
- * @return A list including all child elements of the given element.
- * Maybe empty if the parent element has no child elements.
+ *
+ * @param parent The element to get the child elements from.
+ *
+ * @return A list including all child elements of the given element. Maybe empty
+ * if the parent element has no child elements.
*/
- public static List getChildElements (Element parent) {
- Vector v = new Vector();
- NodeList nl = parent.getChildNodes();
- int length = nl.getLength();
- for (int i=0; i < length; i++) {
- Node node = nl.item(i);
+ public static List getChildElements(Element parent) {
+ final Vector v = new Vector();
+ final NodeList nl = parent.getChildNodes();
+ final int length = nl.getLength();
+ for (int i = 0; i < length; i++) {
+ final Node node = nl.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
- v.add((Element)node);
+ v.add(node);
}
}
return v;
}
-
+
/**
* Returns a byte array from given node.
+ *
* @param node
* @return
* @throws TransformerException
*/
public static byte[] nodeToByteArray(Node node) throws TransformerException {
- Source source = new DOMSource(node);
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- //StringWriter stringWriter = new StringWriter();
- Result result = new StreamResult(out);
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer();
- transformer.transform(source, result);
- return out.toByteArray();
+ final Source source = new DOMSource(node);
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
+ // StringWriter stringWriter = new StringWriter();
+ final Result result = new StreamResult(out);
+ final TransformerFactory factory = TransformerFactory.newInstance();
+ final Transformer transformer = factory.newTransformer();
+ transformer.transform(source, result);
+ return out.toByteArray();
}
-
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java
index c199c29..a874bd5 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/DateTimeUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.StringWriter;
@@ -38,9 +37,9 @@ import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/**
- * Utility for parsing and building XML type <code>dateTime</code>,
- * according to ISO 8601.
- *
+ * Utility for parsing and building XML type <code>dateTime</code>, according to
+ * ISO 8601.
+ *
* @author Patrick Peck
* @version $Id$
* @see <code>http://www.w3.org/2001/XMLSchema-datatypes"</code>
@@ -55,7 +54,7 @@ public class DateTimeUtils {
// * @return the <code>dateTime</code> value
// */
// public static String buildDateTime(Calendar cal, boolean useUTC) {
-//
+//
// if (useUTC)
// return buildDateTimeUTC(cal);
// else {
@@ -92,41 +91,46 @@ public class DateTimeUtils {
// return out.toString();
// }
// }
-
+
/**
- * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code> value.
+ * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code>
+ * value.
+ *
* @param cal the <code>Calendar</code> value
* @return the <code>dateTime</code> value
*/
public static String buildDateTimeUTC(Calendar cal) {
-
- SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
- f.setTimeZone(TimeZone.getTimeZone("UTC"));
-
- return f.format(cal.getTime());
+
+ final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+ f.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+ return f.format(cal.getTime());
}
-
+
/**
- * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code> value.
+ * Builds a <code>dateTime</code> value in UTC from a <code>Calendar</code>
+ * value.
+ *
* @param cal the <code>Calendar</code> value
* @return the <code>dateTime</code> value
*/
public static String buildDateTimeUTC(Date cal) {
-
- SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
- f.setTimeZone(TimeZone.getTimeZone("UTC"));
-
- return f.format(cal);
-
+
+ final SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+ f.setTimeZone(TimeZone.getTimeZone("UTC"));
+
+ return f.format(cal);
+
}
-
+
/**
* Builds a <code>dateTime</code> value from a <code>Calendar</code> value.
+ *
* @param cal the <code>Calendar</code> value
* @return the <code>dateTime</code> value
*/
public static String buildDate(Calendar cal) {
- StringWriter out = new StringWriter();
+ final StringWriter out = new StringWriter();
out.write("" + cal.get(Calendar.YEAR));
out.write("-");
out.write(to2DigitString(cal.get(Calendar.MONTH) + 1));
@@ -134,43 +138,45 @@ public class DateTimeUtils {
out.write(to2DigitString(cal.get(Calendar.DAY_OF_MONTH)));
return out.toString();
}
-
+
/**
* Builds a <code>dateTime</code> value from a <code>Calendar</code> value.
+ *
* @param cal the <code>Calendar</code> value
* @return the <code>dateTime</code> value
*/
public static String buildTime(Calendar cal) {
- StringWriter out = new StringWriter();
- out.write(to2DigitString(cal.get(Calendar.HOUR_OF_DAY)));
- out.write(":");
- out.write(to2DigitString(cal.get(Calendar.MINUTE)));
- out.write(":");
- out.write(to2DigitString(cal.get(Calendar.SECOND)));
-
- return out.toString();
+ final StringWriter out = new StringWriter();
+ out.write(to2DigitString(cal.get(Calendar.HOUR_OF_DAY)));
+ out.write(":");
+ out.write(to2DigitString(cal.get(Calendar.MINUTE)));
+ out.write(":");
+ out.write(to2DigitString(cal.get(Calendar.SECOND)));
+
+ return out.toString();
}
-
+
/**
- * Converts month, day, hour, minute, or second value
- * to a 2 digit String.
+ * Converts month, day, hour, minute, or second value to a 2 digit String.
+ *
* @param number the month, day, hour, minute, or second value
* @return 2 digit String
*/
private static String to2DigitString(int number) {
- if (number < 10)
+ if (number < 10) {
return "0" + number;
- else
+ } else {
return "" + number;
+ }
}
/**
- * Parse a <code>String</code> containing a date and time instant, given in
- * ISO 8601 format.
- *
+ * Parse a <code>String</code> containing a date and time instant, given in ISO
+ * 8601 format.
+ *
* @param dateTime The <code>String</code> to parse.
* @return The <code>Date</code> representation of the contents of
- * <code>dateTime</code>.
+ * <code>dateTime</code>.
* @throws ParseException Parsing the <code>dateTime</code> failed.
*/
public static Date parseDateTime(String dateTime) throws ParseException {
@@ -247,8 +253,7 @@ public class DateTimeUtils {
curPos++;
ensureDigits(dateTime, curPos, 1);
fractStr = "0.";
- fractStr
- += dateTime.substring(curPos, curPos + countDigits(dateTime, curPos));
+ fractStr += dateTime.substring(curPos, curPos + countDigits(dateTime, curPos));
fraction = Double.parseDouble(fractStr);
curPos += countDigits(dateTime, curPos);
}
@@ -294,12 +299,12 @@ public class DateTimeUtils {
calendar.set(Calendar.MILLISECOND, 0);
time = calendar.getTime().getTime();
time += (long) (fraction * 1000.0);
- time -= tzSign * ((tzHour * 60) + tzMinute) * 60 * 1000;
+ time -= tzSign * (tzHour * 60 + tzMinute) * 60 * 1000;
if (localTime) {
- time -= TimeZone.getDefault().getRawOffset();
+ time -= TimeZone.getDefault().getRawOffset();
}
return new Date(time);
- } catch (IllegalArgumentException e) {
+ } catch (final IllegalArgumentException e) {
throw new ParseException(msg.getMessage("datetime.00", null), curPos);
}
@@ -307,16 +312,16 @@ public class DateTimeUtils {
/**
* Parse an integer value.
- *
- * @param str The <code>String</code> containing the digits.
+ *
+ * @param str The <code>String</code> containing the digits.
* @param curPos The starting position.
* @param digits The number of digist making up the integer value.
* @return int The integer representation of the digits contained in
- * <code>str</code>.
+ * <code>str</code>.
* @throws ParseException Parsing the integer value failed.
*/
private static int parseInt(String str, int curPos, int digits)
- throws ParseException {
+ throws ParseException {
ensureDigits(str, curPos, digits);
return Integer.parseInt(str.substring(curPos, curPos + digits));
@@ -324,31 +329,33 @@ public class DateTimeUtils {
/**
* Count the number of digits following <code>curPos</code>.
- *
- * @param str The <code>String</code> in which to count digits.
+ *
+ * @param str The <code>String</code> in which to count digits.
* @param curPos The starting position.
* @return int The number of digits.
*/
private static int countDigits(String str, int curPos) {
int i;
- for (i = curPos; i < str.length() && Character.isDigit(str.charAt(i)); i++);
+ for (i = curPos; i < str.length() && Character.isDigit(str.charAt(i)); i++) {
+ ;
+ }
return i - curPos;
}
/**
* Ensure that a value falls in a given min/max range.
- *
- * @param value The value to check.
- * @param min The minimum allowed value.
- * @param max The maximum allowed value.
+ *
+ * @param value The value to check.
+ * @param min The minimum allowed value.
+ * @param max The maximum allowed value.
* @param curPos To indicate the parsing position in the
- * <code>ParseException</code>.
+ * <code>ParseException</code>.
* @throws ParseException Thrown, if <code>value &lt; min || value &gt;
* max</code>
*/
private static void ensureValue(int value, int min, int max, int curPos)
- throws ParseException {
+ throws ParseException {
if (value < min || value > max) {
throw new ParseException(msg.getMessage("datetime.00", null), curPos);
@@ -357,16 +364,16 @@ public class DateTimeUtils {
/**
* Ensure that the given <code>String</code> has a number of characters left.
- *
- * @param str The <code>String</code> to check for its length.
+ *
+ * @param str The <code>String</code> to check for its length.
* @param curPos The starting position.
- * @param count The minimum number of characters that <code>str</code> must
- * contain, starting at from <code>curPos</code>.
- * @throws ParseException Thrown, if
- * <code>curPos + count &gt; str.length()</code>.
+ * @param count The minimum number of characters that <code>str</code> must
+ * contain, starting at from <code>curPos</code>.
+ * @throws ParseException Thrown, if
+ * <code>curPos + count &gt; str.length()</code>.
*/
private static void ensureChars(String str, int curPos, int count)
- throws ParseException {
+ throws ParseException {
if (curPos + count > str.length()) {
throw new ParseException(msg.getMessage("datetime.00", null), curPos);
}
@@ -375,17 +382,17 @@ public class DateTimeUtils {
/**
* Ensure that a given <code>String</code> contains a certain character at a
* certain position.
- *
- * @param str The <code>String</code> in which to look up the character.
+ *
+ * @param str The <code>String</code> in which to look up the character.
* @param curPos The position in <code>str</code> that must contain the
- * character.
- * @param c The character value that must be contained at position
- * <code>curPos</code>.
+ * character.
+ * @param c The character value that must be contained at position
+ * <code>curPos</code>.
* @throws ParseException Thrown, if the characters do not match or
- * <code>curPos</code> is out of range.
+ * <code>curPos</code> is out of range.
*/
private static void ensureChar(String str, int curPos, char c)
- throws ParseException {
+ throws ParseException {
ensureChars(str, curPos, 1);
if (str.charAt(curPos) != c) {
@@ -394,19 +401,19 @@ public class DateTimeUtils {
}
/**
- * Ensure that a given <code>String</code> contains a number of digits,
- * starting at a given position.
- *
- * @param str The <code>String</code> to scan for digits.
+ * Ensure that a given <code>String</code> contains a number of digits, starting
+ * at a given position.
+ *
+ * @param str The <code>String</code> to scan for digits.
* @param curPos The starting postion.
- * @param count The number of digits that must be contained in
- * <code>str</code>, starting at <code>curPos</code>.
- * @throws ParseException Thrown, if <code>str</code> is not long enough, or
- * one of the characters following <code>curPos</code> in <code>str</code> is
- * not a digit.
+ * @param count The number of digits that must be contained in
+ * <code>str</code>, starting at <code>curPos</code>.
+ * @throws ParseException Thrown, if <code>str</code> is not long enough, or one
+ * of the characters following <code>curPos</code> in
+ * <code>str</code> is not a digit.
*/
private static void ensureDigits(String str, int curPos, int count)
- throws ParseException {
+ throws ParseException {
ensureChars(str, curPos, count);
for (int i = curPos; i < curPos + count; i++) {
@@ -415,101 +422,108 @@ public class DateTimeUtils {
}
}
}
-
+
/**
* Calculates the age if date of birth is given (for a calendar time stamp)
+ *
* @param dateOfBirth Date of Birth
- * @param now Calendar time stamp at which the age needs to be calculated for
+ * @param now Calendar time stamp at which the age needs to be
+ * calculated for
* @return Age of a person
*/
public static int calcAge(Calendar dateOfBirth, Calendar now) {
- int age = now.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR);
-
- int nowM = now.get(Calendar.MONTH);
- int dobM = dateOfBirth.get(Calendar.MONTH);
- int nowDOM = now.get(Calendar.DAY_OF_MONTH);
- int dobDOM = dateOfBirth.get(Calendar.DAY_OF_MONTH);
-
- if ((nowM < dobM) || ((nowM == dobM) && (nowDOM < dobDOM))) {
- age--;
- }
-
- if (age < 0) {
- throw new IllegalArgumentException("Calculated age results in negative value.");
- }
- return age;
- }
+ int age = now.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR);
+
+ final int nowM = now.get(Calendar.MONTH);
+ final int dobM = dateOfBirth.get(Calendar.MONTH);
+ final int nowDOM = now.get(Calendar.DAY_OF_MONTH);
+ final int dobDOM = dateOfBirth.get(Calendar.DAY_OF_MONTH);
+
+ if (nowM < dobM || nowM == dobM && nowDOM < dobDOM) {
+ age--;
+ }
+
+ if (age < 0) {
+ throw new IllegalArgumentException("Calculated age results in negative value.");
+ }
+ return age;
+ }
/**
* Calculates the age if date of birth is given as Calendar object
+ *
* @param dateOfBirth Date of Birth as Calendar object
* @return Age of a person
*/
- public static int calcAge(Calendar dateOfBirth) {
- return calcAge(dateOfBirth, Calendar.getInstance());
- }
-
- /**
- * Calculates the age if date of birth is given (for a date time stamp)
- * @param dateOfBirth Date of Birth
- * @param now Date time stamp at which the age needs to be calculated for
- * @return Age of a person
- */
- public static int calcAge(Date dateOfBirth, Date now) {
- Calendar dob = Calendar.getInstance();
- dob.setTime(dateOfBirth);
- Calendar nowCal = Calendar.getInstance();
- nowCal.setTime(now);
- return calcAge(dob, nowCal);
- }
-
- /**
- * Calculates the age if date of birth is given as Date object
- * @param dateOfBirth Date of Birth as Date object
- * @return Age of a person
- */
- public static int calcAge(Date dateOfBirth) {
- return calcAge(dateOfBirth, new Date());
- }
-
- public static String formatPEPSDateToMOADate(String pepsDate) {
-
- if (StringUtils.isEmpty(pepsDate)) {
- return null;
- }
-
- DateTimeFormatter fmt = null;
-
- switch (pepsDate.length()) {
- case 4:
- fmt = DateTimeFormat.forPattern("yyyy");
- break;
- case 6:
- fmt = DateTimeFormat.forPattern("yyyyMM");
- break;
- case 8:
- fmt = DateTimeFormat.forPattern("yyyyMMdd");
- break;
- default:
- fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
- break;
- }
-
- DateTime dt = fmt.parseDateTime(pepsDate);
- DateTimeFormatter fmt2 = DateTimeFormat.forPattern("yyyy-MM-dd");
- return fmt2.print(dt);
-
- }
-
- /**
- * Returns a date as String using a provided format
- * @param format Format the date/time should be returned
- * @return Date/Time as String formatted according the provided format
- */
- public static String getDateTimeWithFormat(String format) {
- DateFormat dateFormat = new SimpleDateFormat(format);
- Date date = new Date();
- return dateFormat.format(date);
+ public static int calcAge(Calendar dateOfBirth) {
+ return calcAge(dateOfBirth, Calendar.getInstance());
+ }
+
+ /**
+ * Calculates the age if date of birth is given (for a date time stamp)
+ *
+ * @param dateOfBirth Date of Birth
+ * @param now Date time stamp at which the age needs to be calculated
+ * for
+ * @return Age of a person
+ */
+ public static int calcAge(Date dateOfBirth, Date now) {
+ final Calendar dob = Calendar.getInstance();
+ dob.setTime(dateOfBirth);
+ final Calendar nowCal = Calendar.getInstance();
+ nowCal.setTime(now);
+ return calcAge(dob, nowCal);
+ }
+
+ /**
+ * Calculates the age if date of birth is given as Date object
+ *
+ * @param dateOfBirth Date of Birth as Date object
+ * @return Age of a person
+ */
+ public static int calcAge(Date dateOfBirth) {
+ return calcAge(dateOfBirth, new Date());
+ }
+
+ public static String formatPEPSDateToMOADate(String pepsDate) {
+
+ if (StringUtils.isEmpty(pepsDate)) {
+ return null;
}
+ DateTimeFormatter fmt = null;
+
+ switch (pepsDate.length()) {
+ case 4:
+ fmt = DateTimeFormat.forPattern("yyyy");
+ break;
+ case 6:
+ fmt = DateTimeFormat.forPattern("yyyyMM");
+ break;
+ case 8:
+ fmt = DateTimeFormat.forPattern("yyyyMMdd");
+ break;
+ default:
+ fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
+ break;
+ }
+
+ final DateTime dt = fmt.parseDateTime(pepsDate);
+ final DateTimeFormatter fmt2 = DateTimeFormat.forPattern("yyyy-MM-dd");
+ return fmt2.print(dt);
+
+ }
+
+ /**
+ * Returns a date as String using a provided format
+ *
+ * @param format Format the date/time should be returned
+ * @return Date/Time as String formatted according the provided format
+ */
+ public static String getDateTimeWithFormat(String format) {
+ final DateFormat dateFormat = new SimpleDateFormat(format);
+ final Date date = new Date();
+ return dateFormat.format(date);
+ }
+
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java
index 9c678d4..8b16a97 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Empty.java
@@ -1,13 +1,13 @@
/*
* Copyright 2011 Federal Chancellery Austria and
* Graz University of Technology
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -21,11 +21,11 @@ package at.gv.egovernment.moaspss.util;
*/
public interface Empty {
- /**
- * Returns {@code true} if underlying object is empty.
- *
- * @return {@code true} if empty, {@code false} if not empty.
- */
- boolean isEmpty();
+ /**
+ * Returns {@code true} if underlying object is empty.
+ *
+ * @return {@code true} if empty, {@code false} if not empty.
+ */
+ boolean isEmpty();
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java
index 487c6a4..6f61517 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/EntityResolverChain.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.IOException;
@@ -34,39 +33,41 @@ import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
- * Implementation of the <code>org.xml.sax.EntityResolver</code>,
- * for use by a <code>org.apache.xerces.parsers.DOMParser</code>.
- *
+ * Implementation of the <code>org.xml.sax.EntityResolver</code>, for use by a
+ * <code>org.apache.xerces.parsers.DOMParser</code>.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class EntityResolverChain implements EntityResolver {
/** The <code>EntityResolver</code>s in the chain. */
- private List resolvers = new ArrayList();
+ private final List resolvers = new ArrayList();
/**
- * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
+ * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
+ * java.lang.String)
*/
+ @Override
public InputSource resolveEntity(String publicId, String systemId)
- throws SAXException, IOException {
-
+ throws SAXException, IOException {
+
Iterator iter;
-
- for (iter = resolvers.iterator(); iter.hasNext(); ) {
- EntityResolver resolver = (EntityResolver) iter.next();
- InputSource is = resolver.resolveEntity(publicId, systemId);
-
+
+ for (iter = resolvers.iterator(); iter.hasNext();) {
+ final EntityResolver resolver = (EntityResolver) iter.next();
+ final InputSource is = resolver.resolveEntity(publicId, systemId);
+
if (is != null) {
return is;
}
}
-
+
return null;
}
-
+
/**
* Add an <code>EntityResolver</code> to the chain.
- *
+ *
* @param entityResolver The <code>EntityResolver</code> to add.
*/
public void addEntityResolver(EntityResolver entityResolver) {
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java
index 309e01a..d64cda0 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/FileUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.BufferedInputStream;
@@ -34,146 +33,167 @@ import java.io.OutputStream;
import java.net.URL;
/**
- * Utility for accessing files on the file system, and for reading from input streams.
+ * Utility for accessing files on the file system, and for reading from input
+ * streams.
+ *
* @author Paul Ivancsics
* @version $Id$
*/
public class FileUtils {
-
+
/**
* Reads a file, given by URL, into a byte array.
+ *
* @param urlString file URL
* @return file content
* @throws IOException on any exception thrown
*/
- public static byte[] readURL(String urlString) throws IOException {
- URL url = new URL(urlString);
- InputStream in = new BufferedInputStream(url.openStream());
- byte[] content = StreamUtils.readStream(in);
+ public static byte[] readURL(String urlString) throws IOException {
+ final URL url = new URL(urlString);
+ final InputStream in = new BufferedInputStream(url.openStream());
+ final byte[] content = StreamUtils.readStream(in);
in.close();
return content;
}
+
/**
* Reads a file, given by URL, into a String.
+ *
* @param urlString file URL
- * @param encoding character encoding
+ * @param encoding character encoding
* @return file content
* @throws IOException on any exception thrown
*/
public static String readURL(String urlString, String encoding) throws IOException {
- byte[] content = readURL(urlString);
+ final byte[] content = readURL(urlString);
return new String(content, encoding);
}
+
/**
* Reads a file, given by filename, into a byte array.
+ *
* @param filename filename
* @return file content
* @throws IOException on any exception thrown
*/
public static byte[] readFile(String filename) throws IOException {
- BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
- byte[] content = StreamUtils.readStream(in);
+ final BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
+ final byte[] content = StreamUtils.readStream(in);
in.close();
return content;
}
+
/**
* Reads a file, given by filename, into a String.
+ *
* @param filename filename
* @param encoding character encoding
* @return file content
* @throws IOException on any exception thrown
*/
public static String readFile(String filename, String encoding) throws IOException {
- byte[] content = readFile(filename);
+ final byte[] content = readFile(filename);
return new String(content, encoding);
}
+
/**
* Reads a file from a resource.
+ *
* @param name resource name
* @return file content as a byte array
* @throws IOException on any exception thrown
*/
public static byte[] readResource(String name) throws IOException {
- ClassLoader cl = FileUtils.class.getClassLoader();
- BufferedInputStream in = new BufferedInputStream(cl.getResourceAsStream(name));
- byte[] content = StreamUtils.readStream(in);
+ final ClassLoader cl = FileUtils.class.getClassLoader();
+ final BufferedInputStream in = new BufferedInputStream(cl.getResourceAsStream(name));
+ final byte[] content = StreamUtils.readStream(in);
in.close();
return content;
}
+
/**
* Reads a file from a resource.
- * @param name filename
+ *
+ * @param name filename
* @param encoding character encoding
* @return file content
* @throws IOException on any exception thrown
*/
public static String readResource(String name, String encoding) throws IOException {
- byte[] content = readResource(name);
+ final byte[] content = readResource(name);
return new String(content, encoding);
}
-
- /**
- * Returns the absolute URL of a given url which is relative to the parameter root
- * @param url
- * @param root
- * @return String
- */
- public static String makeAbsoluteURL(String url, String root) {
- //if url is relative to rootConfigFileDirName make it absolute
-
+
+ /**
+ * Returns the absolute URL of a given url which is relative to the parameter
+ * root
+ *
+ * @param url
+ * @param root
+ * @return String
+ */
+ public static String makeAbsoluteURL(String url, String root) {
+ // if url is relative to rootConfigFileDirName make it absolute
+
File keyFile;
String newURL = url;
- if(null == url) return null;
-
- if (url.startsWith("http:/") || url.startsWith("https:/") || url.startsWith("file:/") || url.startsWith("ftp:/")) {
- return url;
+ if (null == url) {
+ return null;
+ }
+
+ if (url.startsWith("http:/") || url.startsWith("https:/") || url.startsWith("file:/") || url.startsWith(
+ "ftp:/")) {
+ return url;
} else {
// check if absolute - if not make it absolute
keyFile = new File(url);
if (!keyFile.isAbsolute()) {
keyFile = new File(root, url);
- if (keyFile.toString().startsWith("file:"))
- newURL = keyFile.toString();
-
- else
- newURL = keyFile.toURI().toString();
-
+ if (keyFile.toString().startsWith("file:")) {
+ newURL = keyFile.toString();
+ } else {
+ newURL = keyFile.toURI().toString();
+ }
+
}
return newURL;
}
- }
-
-
- private static void copy( InputStream fis, OutputStream fos )
- {
- try
- {
- byte[] buffer = new byte[ 0xFFFF ];
- for ( int len; (len = fis.read(buffer)) != -1; )
- fos.write( buffer, 0, len );
- }
- catch( IOException e ) {
- System.err.println( e );
- }
- finally {
- if ( fis != null )
- try { fis.close(); } catch ( IOException e ) { e.printStackTrace(); }
- if ( fos != null )
- try { fos.close(); } catch ( IOException e ) { e.printStackTrace(); }
- }
- }
-
- public static void copyFile(File src, File dest)
- {
- try
- {
- copy( new FileInputStream( src ), new FileOutputStream( dest ) );
- }
- catch( IOException e ) {
- e.printStackTrace();
- }
- }
-
+ }
+
+ private static void copy(InputStream fis, OutputStream fos) {
+ try {
+ final byte[] buffer = new byte[0xFFFF];
+ for (int len; (len = fis.read(buffer)) != -1;) {
+ fos.write(buffer, 0, len);
+ }
+ } catch (final IOException e) {
+ System.err.println(e);
+ } finally {
+ if (fis != null) {
+ try {
+ fis.close();
+ } catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (fos != null) {
+ try {
+ fos.close();
+ } catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public static void copyFile(File src, File dest) {
+ try {
+ copy(new FileInputStream(src), new FileOutputStream(dest));
+ } catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java
index b4d7b02..f62b82a 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/KeyStoreUtils.java
@@ -21,11 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
-import iaik.x509.X509Certificate;
-
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -38,116 +35,125 @@ import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.cert.Certificate;
+import iaik.x509.X509Certificate;
+
/**
* Utility for creating and loading key stores.
- *
+ *
* @author Paul Ivancsics
* @version $Id$
*/
public class KeyStoreUtils {
-
- /**
- * JAVA KeyStore
- */
- private static final String KEYSTORE_TYPE_JKS = "JKS";
-
- /**
- * PKCS12 KeyStore
- */
- private static final String KEYSTORE_TYPE_PKCS12 = "PKCS12";
-
-
+
+ /**
+ * JAVA KeyStore
+ */
+ private static final String KEYSTORE_TYPE_JKS = "JKS";
+
+ /**
+ * PKCS12 KeyStore
+ */
+ private static final String KEYSTORE_TYPE_PKCS12 = "PKCS12";
/**
* Loads a key store from file.
- *
+ *
* @param keystoreType key store type
- * @param urlString URL of key store
- * @param password password protecting the key store
+ * @param urlString URL of key store
+ * @param password password protecting the key store
* @return key store loaded
- * @throws IOException thrown while reading the key store from file
+ * @throws IOException thrown while reading the key store from file
* @throws GeneralSecurityException thrown while creating the key store
*/
public static KeyStore loadKeyStore(
- String keystoreType,
- String urlString,
- String password)
- throws IOException, GeneralSecurityException {
+ String keystoreType,
+ String urlString,
+ String password)
+ throws IOException, GeneralSecurityException {
- URL keystoreURL = new URL(urlString);
- InputStream in = keystoreURL.openStream();
+ final URL keystoreURL = new URL(urlString);
+ final InputStream in = keystoreURL.openStream();
return loadKeyStore(keystoreType, in, password);
}
+
/**
- * Loads a key store from an <code>InputStream</code>, and
- * closes the <code>InputStream</code>.
- *
+ * Loads a key store from an <code>InputStream</code>, and closes the
+ * <code>InputStream</code>.
+ *
* @param keystoreType key store type
- * @param in input stream
- * @param password password protecting the key store
+ * @param in input stream
+ * @param password password protecting the key store
* @return key store loaded
- * @throws IOException thrown while reading the key store from the stream
+ * @throws IOException thrown while reading the key store from the
+ * stream
* @throws GeneralSecurityException thrown while creating the key store
*/
public static KeyStore loadKeyStore(
- String keystoreType,
- InputStream in,
- String password)
- throws IOException, GeneralSecurityException {
+ String keystoreType,
+ InputStream in,
+ String password)
+ throws IOException, GeneralSecurityException {
char[] chPassword = null;
- if (password != null)
+ if (password != null) {
chPassword = password.toCharArray();
- KeyStore ks = KeyStore.getInstance(keystoreType);
+ }
+ final KeyStore ks = KeyStore.getInstance(keystoreType);
ks.load(in, chPassword);
in.close();
return ks;
}
+
/**
- * Creates a key store from X509 certificate files, aliasing them with
- * the index in the <code>String[]</code>, starting with <code>"0"</code>.
- *
- * @param keyStoreType key store type
+ * Creates a key store from X509 certificate files, aliasing them with the index
+ * in the <code>String[]</code>, starting with <code>"0"</code>.
+ *
+ * @param keyStoreType key store type
* @param certFilenames certificate filenames
* @return key store created
- * @throws IOException thrown while reading the certificates from file
+ * @throws IOException thrown while reading the certificates from
+ * file
* @throws GeneralSecurityException thrown while creating the key store
*/
public static KeyStore createKeyStore(
- String keyStoreType,
- String[] certFilenames)
- throws IOException, GeneralSecurityException {
+ String keyStoreType,
+ String[] certFilenames)
+ throws IOException, GeneralSecurityException {
- KeyStore ks = KeyStore.getInstance(keyStoreType);
+ final KeyStore ks = KeyStore.getInstance(keyStoreType);
ks.load(null, null);
for (int i = 0; i < certFilenames.length; i++) {
- Certificate cert = loadCertificate(certFilenames[i]);
+ final Certificate cert = loadCertificate(certFilenames[i]);
ks.setCertificateEntry("" + i, cert);
}
return ks;
}
+
/**
- * Creates a key store from a directory containg X509 certificate files,
- * aliasing them with the index in the <code>String[]</code>, starting with <code>"0"</code>.
- * All the files in the directory are considered to be certificates.
- *
- * @param keyStoreType key store type
- * @param certDirURLString file URL of directory containing certificate filenames
+ * Creates a key store from a directory containg X509 certificate files,
+ * aliasing them with the index in the <code>String[]</code>, starting with
+ * <code>"0"</code>. All the files in the directory are considered to be
+ * certificates.
+ *
+ * @param keyStoreType key store type
+ * @param certDirURLString file URL of directory containing certificate
+ * filenames
* @return key store created
- * @throws IOException thrown while reading the certificates from file
+ * @throws IOException thrown while reading the certificates from
+ * file
* @throws GeneralSecurityException thrown while creating the key store
*/
public static KeyStore createKeyStoreFromCertificateDirectory(
- String keyStoreType,
- String certDirURLString)
- throws IOException, GeneralSecurityException {
-
- URL certDirURL = new URL(certDirURLString);
- String certDirname = certDirURL.getFile();
- File certDir = new File(certDirname);
- String[] certFilenames = certDir.list();
- String separator =
- (certDirname.endsWith(File.separator) ? "" : File.separator);
+ String keyStoreType,
+ String certDirURLString)
+ throws IOException, GeneralSecurityException {
+
+ final URL certDirURL = new URL(certDirURLString);
+ final String certDirname = certDirURL.getFile();
+ final File certDir = new File(certDirname);
+ final String[] certFilenames = certDir.list();
+ final String separator =
+ certDirname.endsWith(File.separator) ? "" : File.separator;
for (int i = 0; i < certFilenames.length; i++) {
certFilenames[i] = certDirname + separator + certFilenames[i];
}
@@ -156,68 +162,69 @@ public class KeyStoreUtils {
/**
* Loads an X509 certificate from file.
+ *
* @param certFilename filename
* @return the certificate loaded
- * @throws IOException thrown while reading the certificate from file
+ * @throws IOException thrown while reading the certificate from
+ * file
* @throws GeneralSecurityException thrown while creating the certificate
*/
private static Certificate loadCertificate(String certFilename)
- throws IOException, GeneralSecurityException {
+ throws IOException, GeneralSecurityException {
- FileInputStream in = new FileInputStream(certFilename);
- Certificate cert = new X509Certificate(in);
+ final FileInputStream in = new FileInputStream(certFilename);
+ final Certificate cert = new X509Certificate(in);
in.close();
return cert;
}
-
-
- /**
- * Loads a keyStore without knowing the keyStore type
- * @param keyStorePath URL to the keyStore
- * @param password Password protecting the keyStore
- * @return keyStore loaded
- * @throws KeyStoreException thrown if keyStore cannot be loaded
- * @throws FileNotFoundException
- * @throws IOException
- */
- public static KeyStore loadKeyStore(String keyStorePath, String password) throws KeyStoreException, IOException{
-
- //InputStream is = new FileInputStream(keyStorePath);
- URL keystoreURL = new URL(keyStorePath);
- InputStream in = keystoreURL.openStream();
- InputStream isBuffered = new BufferedInputStream(in);
- return loadKeyStore(isBuffered, password);
-
- }
-
- /**
- * Loads a keyStore without knowing the keyStore type
- * @param in input stream
- * @param password Password protecting the keyStore
- * @return keyStore loaded
- * @throws KeyStoreException thrown if keyStore cannot be loaded
- * @throws FileNotFoundException
- * @throws IOException
- */
-public static KeyStore loadKeyStore(InputStream is, String password) throws KeyStoreException, IOException{
- is.mark(1024*1024);
- KeyStore ks = null;
- try {
- try {
- ks = loadKeyStore(KEYSTORE_TYPE_PKCS12, is, password);
- } catch (IOException e2) {
- is.reset();
- ks = loadKeyStore(KEYSTORE_TYPE_JKS, is, password);
- }
- } catch(Exception e) {
- e.printStackTrace();
- //throw new KeyStoreException(e);
- }
- return ks;
-
- }
-
-
+ /**
+ * Loads a keyStore without knowing the keyStore type
+ *
+ * @param keyStorePath URL to the keyStore
+ * @param password Password protecting the keyStore
+ * @return keyStore loaded
+ * @throws KeyStoreException thrown if keyStore cannot be loaded
+ * @throws FileNotFoundException
+ * @throws IOException
+ */
+ public static KeyStore loadKeyStore(String keyStorePath, String password) throws KeyStoreException,
+ IOException {
+
+ // InputStream is = new FileInputStream(keyStorePath);
+ final URL keystoreURL = new URL(keyStorePath);
+ final InputStream in = keystoreURL.openStream();
+ final InputStream isBuffered = new BufferedInputStream(in);
+ return loadKeyStore(isBuffered, password);
+
+ }
+
+ /**
+ * Loads a keyStore without knowing the keyStore type
+ *
+ * @param in input stream
+ * @param password Password protecting the keyStore
+ * @return keyStore loaded
+ * @throws KeyStoreException thrown if keyStore cannot be loaded
+ * @throws FileNotFoundException
+ * @throws IOException
+ */
+ public static KeyStore loadKeyStore(InputStream is, String password) throws KeyStoreException, IOException {
+ is.mark(1024 * 1024);
+ KeyStore ks = null;
+ try {
+ try {
+ ks = loadKeyStore(KEYSTORE_TYPE_PKCS12, is, password);
+ } catch (final IOException e2) {
+ is.reset();
+ ks = loadKeyStore(KEYSTORE_TYPE_JKS, is, password);
+ }
+ } catch (final Exception e) {
+ e.printStackTrace();
+ // throw new KeyStoreException(e);
+ }
+ return ks;
+
+ }
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java
index 3dde827..9d1f01f 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOADefaultHandler.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.IOException;
@@ -36,15 +35,15 @@ import org.xml.sax.helpers.DefaultHandler;
/**
* A <code>DefaultHandler</code> that uses a <code>MOAEntityResolver</code> and
* a <code>MOAErrorHandler</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class MOADefaultHandler extends DefaultHandler {
/** The <code>EntityResolver</code> to use. */
- private EntityResolver entityResolver;
+ private final EntityResolver entityResolver;
/** The <code>ErrorHandler</code> to use. */
- private ErrorHandler errorHandler;
+ private final ErrorHandler errorHandler;
/**
* Create a new <code>MOADefaultHandler</code>.
@@ -56,28 +55,30 @@ public class MOADefaultHandler extends DefaultHandler {
/**
* Create a new <code>MOADefaultHandler</code>.
- *
+ *
* @param entityResolver The <code>EntityResolver</code> to use for resolving
- * external entities.
- * @param errorHandler The <code>ErrorHandler</code> to use for reporting
- * parsing errors.
+ * external entities.
+ * @param errorHandler The <code>ErrorHandler</code> to use for reporting
+ * parsing errors.
*/
public MOADefaultHandler(
- EntityResolver entityResolver,
- ErrorHandler errorHandler) {
+ EntityResolver entityResolver,
+ ErrorHandler errorHandler) {
this.entityResolver = entityResolver;
this.errorHandler = errorHandler;
}
/**
- * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
+ * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
+ * java.lang.String)
*/
+ @Override
public InputSource resolveEntity(String publicId, String systemId)
- throws SAXException {
+ throws SAXException {
try {
return entityResolver.resolveEntity(publicId, systemId);
- } catch (IOException e) {
+ } catch (final IOException e) {
return null;
}
}
@@ -85,6 +86,7 @@ public class MOADefaultHandler extends DefaultHandler {
/**
* @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
*/
+ @Override
public void warning(SAXParseException exception) throws SAXException {
errorHandler.warning(exception);
}
@@ -92,6 +94,7 @@ public class MOADefaultHandler extends DefaultHandler {
/**
* @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
*/
+ @Override
public void error(SAXParseException exception) throws SAXException {
errorHandler.error(exception);
}
@@ -99,6 +102,7 @@ public class MOADefaultHandler extends DefaultHandler {
/**
* @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
*/
+ @Override
public void fatalError(SAXParseException exception) throws SAXException {
errorHandler.fatalError(exception);
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java
index 7f529ca..d7c6a5b 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAEntityResolver.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.InputStream;
@@ -35,18 +34,20 @@ import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
/**
- * An <code>EntityResolver</code> that looks up entities stored as
- * local resources.
- *
- * <p>The following DTDs are mapped to local resources:
+ * An <code>EntityResolver</code> that looks up entities stored as local
+ * resources.
+ *
+ * <p>
+ * The following DTDs are mapped to local resources:
* <ul>
* <li>The XMLSchema.dtd</li>
* <li>The datatypes.dtd</li>
* </ul>
* </p>
- * <p>For all other resources, an attempt is made to resolve them as resources,
+ * <p>
+ * For all other resources, an attempt is made to resolve them as resources,
* either absolute or relative to <code>Constants.SCHEMA_ROOT</code>.
- *
+ *
* @author Patrick Peck
* @author Sven Aigner
*/
@@ -54,56 +55,58 @@ public class MOAEntityResolver implements EntityResolver {
/**
* Resolve an entity.
- *
+ *
* The <code>systemId</code> parameter is used to perform the lookup of the
- * entity as a resource, either by interpreting the <code>systemId</code> as
- * an absolute resource path, or by appending the last path component of
+ * entity as a resource, either by interpreting the <code>systemId</code> as an
+ * absolute resource path, or by appending the last path component of
* <code>systemId</code> to <code>Constants.SCHEMA_ROOT</code>.
- *
+ *
* @param publicId The public ID of the resource.
* @param systemId The system ID of the resource.
* @return An <code>InputSource</code> from which the entity can be read, or
- * <code>null</code>, if the entity could not be found.
- * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
+ * <code>null</code>, if the entity could not be found.
+ * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
+ * java.lang.String)
*/
+ @Override
public InputSource resolveEntity(String publicId, String systemId) {
InputStream stream;
int slashPos;
if (Logger.isDebugEnabled()) {
Logger.debug(
- new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId));
+ new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId));
}
if (publicId != null) {
// check if we can resolve some standard dtd's
if (publicId.equalsIgnoreCase("-//W3C//DTD XMLSchema 200102//EN")) {
return new InputSource(
- getClass().getResourceAsStream(
- Constants.SCHEMA_ROOT + "XMLSchema.dtd"));
+ getClass().getResourceAsStream(
+ Constants.SCHEMA_ROOT + "XMLSchema.dtd"));
} else if (publicId.equalsIgnoreCase("datatypes")) {
return new InputSource(
- getClass().getResourceAsStream(
- Constants.SCHEMA_ROOT + "datatypes.dtd"));
+ getClass().getResourceAsStream(
+ Constants.SCHEMA_ROOT + "datatypes.dtd"));
}
} else if (systemId != null) {
// get the URI path
try {
- URI uri = new URI(systemId);
+ final URI uri = new URI(systemId);
systemId = uri.getPath();
-
+
if (!"file".equals(uri.getScheme()) || "".equals(systemId.trim())) {
return null;
}
-
- } catch (MalformedURIException e) {
+
+ } catch (final MalformedURIException e) {
return null;
}
-
+
// try to get the resource from the full path
stream = getClass().getResourceAsStream(systemId);
if (stream != null) {
- InputSource source = new InputSource(stream);
+ final InputSource source = new InputSource(stream);
source.setSystemId(systemId);
return source;
@@ -114,9 +117,9 @@ public class MOAEntityResolver implements EntityResolver {
if (slashPos >= 0 && systemId.length() > slashPos) {
systemId = systemId.substring(slashPos + 1, systemId.length());
stream =
- getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId);
+ getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId);
if (stream != null) {
- InputSource source = new InputSource(stream);
+ final InputSource source = new InputSource(stream);
source.setSystemId(systemId);
return source;
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java
index 1842d03..f4acabf 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOAErrorHandler.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import org.apache.xml.utils.DefaultErrorHandler;
@@ -35,42 +34,48 @@ import at.gv.egovernment.moaspss.logging.Logger;
* An <code>ErrorHandler</code> that logs a message and throws a
* <code>SAXException</code> upon <code>error</code> and <code>fatal</code>
* parsing errors.
- *
+ *
* @author Patrick Peck
* @author Sven Aigner
*/
public class MOAErrorHandler extends DefaultErrorHandler {
-
/**
* Logs a warning message.
- *
+ *
* @see org.xml.sax.ErrorHandler#warning(SAXParseException)
*/
+ @Override
public void warning(SAXParseException exception) throws SAXException {
warn("parser.00", messageParams(exception), null);
}
/**
* Logs a warning and rethrows the <code>exception</code>.
- *
+ *
* @see org.xml.sax.ErrorHandler#error(SAXParseException)
*/
+ @Override
public void error(SAXParseException exception) throws SAXException {
- warn("parser.01", messageParams(exception), null);
-
- // if Target attribute is missing in QualifyingProperties - don't throw exception (bug fix for old MOCCA signatures)
- if (exception.getMessage().startsWith("cvc-complex-type.4: Attribute 'Target' must appear on element"))
- warn("parser.04", new Object[] {"Attribute 'Target' must appear on element 'QualifyingProperties' - ignored for compatibility reasons."}, null);
- else
- throw exception;
+ warn("parser.01", messageParams(exception), null);
+
+ // if Target attribute is missing in QualifyingProperties - don't throw
+ // exception (bug fix for old MOCCA signatures)
+ if (exception.getMessage().startsWith("cvc-complex-type.4: Attribute 'Target' must appear on element")) {
+ warn("parser.04", new Object[] {
+ "Attribute 'Target' must appear on element 'QualifyingProperties' - ignored for compatibility reasons." },
+ null);
+ } else {
+ throw exception;
+ }
}
/**
* Logs a warning and rethrows the <code>exception</code>.
- *
+ *
* @see org.xml.sax.ErrorHandler#fatalError(SAXParseException)
*/
+ @Override
public void fatalError(SAXParseException exception) throws SAXException {
warn("parser.02", messageParams(exception), null);
throw exception;
@@ -78,38 +83,38 @@ public class MOAErrorHandler extends DefaultErrorHandler {
/**
* Log a warning message.
- *
- * @param messageId The message ID to log.
+ *
+ * @param messageId The message ID to log.
* @param parameters Additional message parameters.
- * @param t The <code>Throwable</code> to log; usually the cause of this
- * warning.
+ * @param t The <code>Throwable</code> to log; usually the cause of
+ * this warning.
*/
private static void warn(
- String messageId,
- Object[] parameters,
- Throwable t) {
+ String messageId,
+ Object[] parameters,
+ Throwable t) {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
Logger.warn(new LogMsg(msg.getMessage(messageId, parameters)), t);
}
/**
- * Put the system id, line and column number information from the exception
- * into an <code>Object</code> array, to provide it as a
- * <code>MessageFormat</code> parameter.
- *
- * @param e The <code>SAXParseException</code> containing the
- * source system id and line/column numbers.
- * @return An array containing the system id (a <code>String</code>) as well
- * as line/column numbers (2 <code>Integer</code> objects) from the
- * <code>SAXParseException</code>.
+ * Put the system id, line and column number information from the exception into
+ * an <code>Object</code> array, to provide it as a <code>MessageFormat</code>
+ * parameter.
+ *
+ * @param e The <code>SAXParseException</code> containing the source system id
+ * and line/column numbers.
+ * @return An array containing the system id (a <code>String</code>) as well as
+ * line/column numbers (2 <code>Integer</code> objects) from the
+ * <code>SAXParseException</code>.
*/
private static Object[] messageParams(SAXParseException e) {
return new Object[] {
- e.getMessage(),
- e.getSystemId(),
- new Integer(e.getLineNumber()),
- new Integer(e.getColumnNumber())};
+ e.getMessage(),
+ e.getSystemId(),
+ new Integer(e.getLineNumber()),
+ new Integer(e.getColumnNumber()) };
}
} \ No newline at end of file
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java
index 8542b58..591495a 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MOATimer.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.Map;
@@ -29,7 +28,7 @@ import java.util.WeakHashMap;
/**
* A timer utility for named timers.
- *
+ *
* @author Sven Aigner
*/
public class MOATimer {
@@ -43,7 +42,7 @@ public class MOATimer {
/**
* Return the single instance of this class.
- *
+ *
* @return The single instance of this class.
*/
public static MOATimer getInstance() {
@@ -55,7 +54,7 @@ public class MOATimer {
/**
* Create a new <code>MOATimer</code>.
- *
+ *
* Protected to disallow multiple instances.
*/
protected MOATimer() {
@@ -64,10 +63,10 @@ public class MOATimer {
/**
* Start timing a certain action.
- *
+ *
* The timing belonging to the action ID is garbage collected as soon as there
* exists no other reference to the action ID.
- *
+ *
* @param id The action ID.
*/
public void startTiming(Object id) {
@@ -76,7 +75,7 @@ public class MOATimer {
/**
* Stop timing an action.
- *
+ *
* @param id The action ID.
*/
public void stopTiming(Object id) {
@@ -85,50 +84,53 @@ public class MOATimer {
/**
* Get the duration of an action.
- *
+ *
* @param id The action ID for which to compute the duration.
* @return long The duration in milliseconds between calls to
- * <code>startTiming()</code> and <code>stopTiming()</code>. If
- * only <code>startTiming()</code> has been called for the action, then
- * current difference to the system time is returned. If no timing exists for
- * the action, <code>- 1</code> is returned.
+ * <code>startTiming()</code> and <code>stopTiming()</code>. If only
+ * <code>startTiming()</code> has been called for the action, then
+ * current difference to the system time is returned. If no timing
+ * exists for the action, <code>- 1</code> is returned.
*/
public long duration(Object id) {
if (timemapstart.containsKey(id)) {
- long start = ((Long) timemapstart.get(id)).longValue();
+ final long start = ((Long) timemapstart.get(id)).longValue();
if (timemapend.containsKey(id)) {
- long end = ((Long) timemapend.get(id)).longValue();
+ final long end = ((Long) timemapend.get(id)).longValue();
return end - start;
} else {
return System.currentTimeMillis() - start;
}
- } else
+ } else {
return -1;
+ }
}
/**
* Get the duration of an action, as a nicely formatted <code>String</code>.
- *
+ *
* @param id The action ID.
* @return String The <code>duration()</code> as a <code>String</code>.
*/
public String durationAsString(Object id) {
- long dur = duration(id);
- long second = dur / 1000;
- long mil = (dur) - (second * 1000);
+ final long dur = duration(id);
+ final long second = dur / 1000;
+ final long mil = dur - second * 1000;
return "Duration: " + second + "." + mil + " seconds";
}
/**
* Remove a timing.
- *
+ *
* @param id The action ID.
*/
public void clearTiming(String id) {
- if (timemapstart.containsKey(id))
+ if (timemapstart.containsKey(id)) {
timemapstart.remove(id);
- if (timemapend.containsKey(id))
+ }
+ if (timemapend.containsKey(id)) {
timemapend.remove(id);
+ }
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java
index da97ea1..163e903 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MessageProvider.java
@@ -21,53 +21,52 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.Locale;
/**
* A singleton wrapper around a <code>Message</code> object.
- *
+ *
* Provides the messages used in the common project.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class MessageProvider {
/** The location of the default message resources. */
private static final String[] DEFAULT_MESSAGE_RESOURCES =
- { "resources/properties/common_messages" };
+ { "resources/properties/common_messages" };
/** The locale of the default message resources. */
private static final Locale[] DEFAULT_MESSAGE_LOCALES =
- new Locale[] { new Locale("de", "AT") };
+ new Locale[] { new Locale("de", "AT") };
/** The single instance of this class. */
private static MessageProvider instance;
-
+
/** The messages provided by this <code>MessageProvider</code>. */
- private Messages messages;
-
+ private final Messages messages;
+
/**
* Return the single instance of the <code>MessageProvider</code>.
- *
+ *
* Intialilizes the <code>MessageProvider</code> with the default message
* locations: <code>/resources/properties/common_messages</code>.
- *
+ *
* @return The single <code>MessageProvider</code>.
*/
public static synchronized MessageProvider getInstance() {
if (instance == null) {
instance =
- new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES);
+ new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES);
}
return instance;
}
/**
* Create a <code>MessageProvider</code>.
- *
+ *
* @param resourceNames The names of the resources containing the messages.
- * @param locales The corresponding locales.
+ * @param locales The corresponding locales.
*/
protected MessageProvider(String[] resourceNames, Locale[] locales) {
this.messages = new Messages(resourceNames, locales);
@@ -76,9 +75,9 @@ public class MessageProvider {
/**
* Get the message corresponding to a given message ID.
*
- * @param messageId The ID of the message.
+ * @param messageId The ID of the message.
* @param parameters The parameters to fill in into the message arguments.
- * @return The formatted message.
+ * @return The formatted message.
*/
public String getMessage(String messageId, Object[] parameters) {
return messages.getMessage(messageId, parameters);
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java
index 6e324b7..61d9b65 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Messages.java
@@ -21,47 +21,46 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
-import java.util.PropertyResourceBundle;
+import java.util.ResourceBundle;
import at.gv.egovernment.moaspss.logging.Logger;
/**
* Provides access to the system messages resource used for exception handling
* and logging messages.
- *
+ *
* Messages must be provided as a resource bundle at the path.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class Messages {
/** Error message indicating that no messages are avaiable. */
private static final String ERROR_MESSAGES_UNAVAILABLE =
- "Fehler in der Server-Konfiguration. "
- + "Die Fehlertexte konnten nicht geladen werden.";
+ "Fehler in der Server-Konfiguration. "
+ + "Die Fehlertexte konnten nicht geladen werden.";
/** Error message indicating that the message is not available. */
private static final String ERROR_NO_MESSAGE =
- "No errormesseage for error with number.={0}";
+ "No errormesseage for error with number.={0}";
/** The names of the resources containing the messages. */
- private String[] resourceNames;
+ private final String[] resourceNames;
/** The corresponding <code>Locale</code>s of the resources. */
- private Locale[] locales;
+ private final Locale[] locales;
/** The <code>ResourceBundle</code>s containing the messages. */
private ResourceBundleChain messages;
/**
- * Create a new <code>Message</code> object containing the messages
- * in the given resources.
- *
+ * Create a new <code>Message</code> object containing the messages in the given
+ * resources.
+ *
* @param resourceNames The names of the resources containing the messages.
- * @param locales The corresponding locales.
+ * @param locales The corresponding locales.
*/
public Messages(String[] resourceNames, Locale[] locales) {
this.resourceNames = resourceNames;
@@ -72,9 +71,9 @@ public class Messages {
/**
* Get the message corresponding to a given message ID.
*
- * @param messageId The ID of the message.
+ * @param messageId The ID of the message.
* @param parameters The parameters to fill in into the message arguments.
- * @return The formatted message.
+ * @return The formatted message.
*/
public String getMessage(String messageId, Object[] parameters) {
// initialize messages
@@ -87,20 +86,20 @@ public class Messages {
return ERROR_MESSAGES_UNAVAILABLE;
} else {
try {
- String rawMessage = messages.getString(messageId);
+ final String rawMessage = messages.getString(messageId);
return MessageFormat.format(rawMessage, parameters);
- } catch (MissingResourceException e2) {
- // couldn't find any message -> set to default error message
+ } catch (final MissingResourceException e2) {
+ // couldn't find any message -> set to default error message
return MessageFormat.format(
- ERROR_NO_MESSAGE,
- new Object[] { messageId });
+ ERROR_NO_MESSAGE,
+ new Object[] { messageId });
}
}
}
/**
* Return the names of the resources containing the messages.
- *
+ *
* @return String[] The names of the resource bundles containing the messages.
*/
private String[] getResourceNames() {
@@ -109,9 +108,9 @@ public class Messages {
/**
* Return the <code>Locale</code>s of the resources containing the messages.
- *
- * @return Locale[] The <code>Locale</code>s of the resource bundles
- * containing the messages.
+ *
+ * @return Locale[] The <code>Locale</code>s of the resource bundles containing
+ * the messages.
*/
private Locale[] getLocales() {
return locales;
@@ -129,10 +128,10 @@ public class Messages {
for (i = 0; i < resourceNames.length; i++) {
try {
messages.addResourceBundle(
- PropertyResourceBundle.getBundle(
- getResourceNames()[i],
- getLocales()[i]));
- } catch (MissingResourceException e) {
+ ResourceBundle.getBundle(
+ getResourceNames()[i],
+ getLocales()[i]));
+ } catch (final MissingResourceException e) {
Logger.error(ERROR_MESSAGES_UNAVAILABLE, e);
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java
index 5510ac8..d2431e4 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/MiscUtil.java
@@ -1,13 +1,13 @@
/*
* Copyright 2011 Federal Chancellery Austria and
* Graz University of Technology
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -25,6 +25,7 @@ import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -44,91 +45,89 @@ import javax.xml.transform.stream.StreamResult;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.ex.EgovUtilException;
-
-
/**
* Class providing several utility methods.
- *
+ *
* @author <a href="mailto:Arne.Tauber@egiz.gv.at">Arne Tauber</a>
- *
+ *
*/
public class MiscUtil {
- public static final String DEFAULT_SLASH = "/";
-
- private static final int IO_BUFFER_SIZE = 4 * 1024;
-
- public static void copyStream(InputStream is, OutputStream os) throws IOException {
- byte[] b = new byte[IO_BUFFER_SIZE];
- int read;
- while ((read = is.read(b)) != -1) {
- os.write(b, 0, read);
- }
- }
-
- public static void assertNotNull(Object param, String name) {
- if (param == null) {
- throw new NullPointerException(name + " must not be null.");
- }
- }
-
- public static boolean areAllNull(Object... objects) {
- for (Object o : objects) {
- if (o != null) {
- return false;
- }
- }
- return true;
- }
-
- public static String extractContentType(String contentTypeString) {
- if (contentTypeString == null) {
- return "";
- }
- if (contentTypeString.indexOf(";") != -1) {
- return contentTypeString.substring(0, contentTypeString.indexOf(";"));
- }
- return contentTypeString;
- }
-
- public static XMLGregorianCalendar getXMLGregorianCalendar(Date date)
- throws DatatypeConfigurationException {
- GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
- cal.setTime(date);
- return DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
- }
-
- public static XMLGregorianCalendar getXMLGregorianCalendar(String str)
- throws DatatypeConfigurationException {
- return DatatypeFactory.newInstance().newXMLGregorianCalendar(str);
- }
-
- public static X509Certificate readCertificate(InputStream certStream)
- throws CertificateException {
- CertificateFactory cf = CertificateFactory.getInstance("X.509");
- return (X509Certificate) cf.generateCertificate(certStream);
- }
-
- public static boolean isEmpty(String str) {
- return str == null || "".equals(str);
- }
-
- public static boolean isNotEmpty(String str) {
- return str != null && !"".equals(str);
- }
-
- public static byte[] sourceToByteArray(Source result)
- throws TransformerException {
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer();
- transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
- transformer.setOutputProperty(OutputKeys.METHOD, "xml");
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- StreamResult streamResult = new StreamResult();
- streamResult.setOutputStream(out);
- transformer.transform(result, streamResult);
- return out.toByteArray();
- }
+ public static final String DEFAULT_SLASH = "/";
+
+ private static final int IO_BUFFER_SIZE = 4 * 1024;
+
+ public static void copyStream(InputStream is, OutputStream os) throws IOException {
+ final byte[] b = new byte[IO_BUFFER_SIZE];
+ int read;
+ while ((read = is.read(b)) != -1) {
+ os.write(b, 0, read);
+ }
+ }
+
+ public static void assertNotNull(Object param, String name) {
+ if (param == null) {
+ throw new NullPointerException(name + " must not be null.");
+ }
+ }
+
+ public static boolean areAllNull(Object... objects) {
+ for (final Object o : objects) {
+ if (o != null) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static String extractContentType(String contentTypeString) {
+ if (contentTypeString == null) {
+ return "";
+ }
+ if (contentTypeString.indexOf(";") != -1) {
+ return contentTypeString.substring(0, contentTypeString.indexOf(";"));
+ }
+ return contentTypeString;
+ }
+
+ public static XMLGregorianCalendar getXMLGregorianCalendar(Date date)
+ throws DatatypeConfigurationException {
+ final GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance();
+ cal.setTime(date);
+ return DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
+ }
+
+ public static XMLGregorianCalendar getXMLGregorianCalendar(String str)
+ throws DatatypeConfigurationException {
+ return DatatypeFactory.newInstance().newXMLGregorianCalendar(str);
+ }
+
+ public static X509Certificate readCertificate(InputStream certStream)
+ throws CertificateException {
+ final CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ return (X509Certificate) cf.generateCertificate(certStream);
+ }
+
+ public static boolean isEmpty(String str) {
+ return str == null || "".equals(str);
+ }
+
+ public static boolean isNotEmpty(String str) {
+ return str != null && !"".equals(str);
+ }
+
+ public static byte[] sourceToByteArray(Source result)
+ throws TransformerException {
+ final TransformerFactory factory = TransformerFactory.newInstance();
+ final Transformer transformer = factory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
+ final StreamResult streamResult = new StreamResult();
+ streamResult.setOutputStream(out);
+ transformer.transform(result, streamResult);
+ return out.toByteArray();
+ }
// public static Document parseDocument(InputStream inputStream)
// throws IOException {
@@ -145,159 +144,159 @@ public class MiscUtil {
// }
// }
- public static String removePrecedingSlash(String path, String slash) {
- assertNotEmpty(slash, "Shash");
- if (!isEmpty(path)) {
- while (path.startsWith(slash)) {
- path = path.substring(slash.length(), path.length());
- }
- }
- return path;
- }
-
- public static String removePrecedingSlash(String path) {
- return removePrecedingSlash(path, DEFAULT_SLASH);
- }
-
- public static void assertNotEmpty(String param, String name) {
- if (param == null) {
- throw new NullPointerException(name + " must not be null.");
- }
- if (param.length() == 0) {
- throw new IllegalArgumentException(name + " must not be empty.");
- }
- }
-
- @SuppressWarnings("rawtypes")
+ public static String removePrecedingSlash(String path, String slash) {
+ assertNotEmpty(slash, "Shash");
+ if (!isEmpty(path)) {
+ while (path.startsWith(slash)) {
+ path = path.substring(slash.length(), path.length());
+ }
+ }
+ return path;
+ }
+
+ public static String removePrecedingSlash(String path) {
+ return removePrecedingSlash(path, DEFAULT_SLASH);
+ }
+
+ public static void assertNotEmpty(String param, String name) {
+ if (param == null) {
+ throw new NullPointerException(name + " must not be null.");
+ }
+ if (param.length() == 0) {
+ throw new IllegalArgumentException(name + " must not be empty.");
+ }
+ }
+
+ @SuppressWarnings("rawtypes")
public static boolean isEmpty(Properties props) {
- if (props == null || props.isEmpty()) {
- return true;
- }
- Iterator it = props.values().iterator();
- while (it.hasNext()) {
- if (MiscUtil.isNotEmpty((String) it.next())) {
- return false;
- }
- }
- return true;
- }
-
- public static boolean isEmpty(Empty empty) {
- return empty == null || empty.isEmpty();
- }
-
- public static boolean isNotEmpty(Empty empty) {
- return !isEmpty(empty);
- }
-
- public static boolean isEmpty(byte[] data) {
- return data == null || data.length == 0;
- }
-
- public static boolean isNotEmpty(byte[] data) {
- return !isEmpty(data);
- }
-
- public static <T> boolean isEmpty(Collection<T> c) {
- return c == null || c.isEmpty();
- }
-
- public static <T> boolean isNotEmpty(Collection<T> c) {
- return !isEmpty(c);
- }
-
- public static boolean areAllEmpty(String... strings) {
- for (String s : strings) {
- if (s != null && s.trim().length() != 0) {
- return false;
- }
- }
- return true;
- }
-
- public static boolean areAllEmpty(Empty... empties) {
- if (empties != null) {
- for (Empty e : empties) {
- if (e != null && !e.isEmpty()) {
- return false;
- }
- }
- }
- return true;
- }
-
- public static <T> void assertNotEmpty(T[] param, String name) {
- if (param == null) {
- throw new NullPointerException(name + " must not be null.");
- }
- if (param.length == 0) {
- throw new IllegalArgumentException(name + " must not be empty.");
- }
- }
-
- public static void assertNotEmpty(Empty empty, String name) {
- if (empty == null) {
- throw new NullPointerException(name + " must not be null.");
- }
- if (empty.isEmpty()) {
- throw new IllegalArgumentException(name + " must not be empty.");
- }
- }
-
- public static void assertNotEmpty(byte[] param, String name) {
- if (param == null) {
- throw new NullPointerException(name + " must not be null.");
- }
- if (param.length == 0) {
- throw new IllegalArgumentException(name + " must not be empty.");
- }
- }
-
- public static Date parseXMLDate(String xmlDate) throws EgovUtilException {
- if (xmlDate == null) {
- return null;
- }
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- try {
- return sdf.parse(xmlDate);
- } catch (ParseException e) {
- throw new EgovUtilException(e);
- }
- }
-
- public static <T> boolean isEmpty(T[] array) {
- return array == null || array.length == 0;
- }
-
- public static <T> boolean isNotEmpty(T[] array) {
- return !isEmpty(array);
- }
-
- public static String convertDateFromStandardToXML(String dateString) {
- MiscUtil.assertNotNull(dateString, "dateString");
- Date date = parseDate(dateString);
- return formatDate(date, "yyyy-MM-dd");
- }
-
- public static Date parseDate(String dateString) {
- return parseDate(dateString, "dd.MM.yyyy");
- }
-
- public static Date parseDate(String dateString, String pattern) {
- MiscUtil.assertNotNull(dateString, "dateString");
- MiscUtil.assertNotNull(pattern, "pattern");
- SimpleDateFormat sdf = new SimpleDateFormat(pattern);
- try {
- return sdf.parse(dateString);
- } catch (ParseException e) {
- Logger.warn("Error parsing date.", e);
- return null;
+ if (props == null || props.isEmpty()) {
+ return true;
}
- }
-
- public static String formatDate(Date date, String format) {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- return sdf.format(date);
- }
-
+ final Iterator it = props.values().iterator();
+ while (it.hasNext()) {
+ if (MiscUtil.isNotEmpty((String) it.next())) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean isEmpty(Empty empty) {
+ return empty == null || empty.isEmpty();
+ }
+
+ public static boolean isNotEmpty(Empty empty) {
+ return !isEmpty(empty);
+ }
+
+ public static boolean isEmpty(byte[] data) {
+ return data == null || data.length == 0;
+ }
+
+ public static boolean isNotEmpty(byte[] data) {
+ return !isEmpty(data);
+ }
+
+ public static <T> boolean isEmpty(Collection<T> c) {
+ return c == null || c.isEmpty();
+ }
+
+ public static <T> boolean isNotEmpty(Collection<T> c) {
+ return !isEmpty(c);
+ }
+
+ public static boolean areAllEmpty(String... strings) {
+ for (final String s : strings) {
+ if (s != null && s.trim().length() != 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean areAllEmpty(Empty... empties) {
+ if (empties != null) {
+ for (final Empty e : empties) {
+ if (e != null && !e.isEmpty()) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ public static <T> void assertNotEmpty(T[] param, String name) {
+ if (param == null) {
+ throw new NullPointerException(name + " must not be null.");
+ }
+ if (param.length == 0) {
+ throw new IllegalArgumentException(name + " must not be empty.");
+ }
+ }
+
+ public static void assertNotEmpty(Empty empty, String name) {
+ if (empty == null) {
+ throw new NullPointerException(name + " must not be null.");
+ }
+ if (empty.isEmpty()) {
+ throw new IllegalArgumentException(name + " must not be empty.");
+ }
+ }
+
+ public static void assertNotEmpty(byte[] param, String name) {
+ if (param == null) {
+ throw new NullPointerException(name + " must not be null.");
+ }
+ if (param.length == 0) {
+ throw new IllegalArgumentException(name + " must not be empty.");
+ }
+ }
+
+ public static Date parseXMLDate(String xmlDate) throws EgovUtilException {
+ if (xmlDate == null) {
+ return null;
+ }
+ final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ return sdf.parse(xmlDate);
+ } catch (final ParseException e) {
+ throw new EgovUtilException(e);
+ }
+ }
+
+ public static <T> boolean isEmpty(T[] array) {
+ return array == null || array.length == 0;
+ }
+
+ public static <T> boolean isNotEmpty(T[] array) {
+ return !isEmpty(array);
+ }
+
+ public static String convertDateFromStandardToXML(String dateString) {
+ MiscUtil.assertNotNull(dateString, "dateString");
+ final Date date = parseDate(dateString);
+ return formatDate(date, "yyyy-MM-dd");
+ }
+
+ public static Date parseDate(String dateString) {
+ return parseDate(dateString, "dd.MM.yyyy");
+ }
+
+ public static Date parseDate(String dateString, String pattern) {
+ MiscUtil.assertNotNull(dateString, "dateString");
+ MiscUtil.assertNotNull(pattern, "pattern");
+ final SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+ try {
+ return sdf.parse(dateString);
+ } catch (final ParseException e) {
+ Logger.warn("Error parsing date.", e);
+ return null;
+ }
+ }
+
+ public static String formatDate(Date date, String format) {
+ final SimpleDateFormat sdf = new SimpleDateFormat(format);
+ return sdf.format(date);
+ }
+
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java
index 998edb4..66907d2 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeIteratorAdapter.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.ListIterator;
@@ -34,20 +33,21 @@ import org.w3c.dom.traversal.NodeIterator;
/**
* A <code>NodeIterator</code> implementation based on a
* <code>ListIterator</code>.
- *
+ *
* @see java.util.ListIterator
* @see org.w3c.dom.traversal.NodeIterator
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class NodeIteratorAdapter implements NodeIterator {
/** The <code>ListIterator</code> to wrap. */
- private ListIterator nodeIterator;
+ private final ListIterator nodeIterator;
/**
* Create a new <code>NodeIteratorAdapter</code>.
+ *
* @param nodeIterator The <code>ListIterator</code> to iterate over.
*/
public NodeIteratorAdapter(ListIterator nodeIterator) {
@@ -57,6 +57,7 @@ public class NodeIteratorAdapter implements NodeIterator {
/**
* @see org.w3c.dom.traversal.NodeIterator#getRoot()
*/
+ @Override
public Node getRoot() {
return null;
}
@@ -64,6 +65,7 @@ public class NodeIteratorAdapter implements NodeIterator {
/**
* @see org.w3c.dom.traversal.NodeIterator#getWhatToShow()
*/
+ @Override
public int getWhatToShow() {
return NodeFilter.SHOW_ALL;
}
@@ -71,6 +73,7 @@ public class NodeIteratorAdapter implements NodeIterator {
/**
* @see org.w3c.dom.traversal.NodeIterator#getFilter()
*/
+ @Override
public NodeFilter getFilter() {
return null;
}
@@ -78,6 +81,7 @@ public class NodeIteratorAdapter implements NodeIterator {
/**
* @see org.w3c.dom.traversal.NodeIterator#getExpandEntityReferences()
*/
+ @Override
public boolean getExpandEntityReferences() {
return false;
}
@@ -85,6 +89,7 @@ public class NodeIteratorAdapter implements NodeIterator {
/**
* @see org.w3c.dom.traversal.NodeIterator#nextNode()
*/
+ @Override
public Node nextNode() throws DOMException {
if (nodeIterator.hasNext()) {
return (Node) nodeIterator.next();
@@ -95,6 +100,7 @@ public class NodeIteratorAdapter implements NodeIterator {
/**
* @see org.w3c.dom.traversal.NodeIterator#previousNode()
*/
+ @Override
public Node previousNode() throws DOMException {
if (nodeIterator.hasPrevious()) {
return (Node) nodeIterator.previous();
@@ -105,6 +111,7 @@ public class NodeIteratorAdapter implements NodeIterator {
/**
* @see org.w3c.dom.traversal.NodeIterator#detach()
*/
+ @Override
public void detach() {
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java
index d88ef4b..d569516 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/NodeListAdapter.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.List;
@@ -31,21 +30,21 @@ import org.w3c.dom.NodeList;
/**
* A <code>NodeList</code> implementation based on a <code>List</code>.
- *
+ *
* @see java.util.List
* @see org.w3c.dom.NodeList
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class NodeListAdapter implements NodeList {
/** The <code>List</code> to wrap. */
- private List nodeList;
-
+ private final List nodeList;
+
/**
* Create a new <code>NodeListAdapter</code>.
- *
- * @param nodeList The <code>List</code> containing the nodes.
+ *
+ * @param nodeList The <code>List</code> containing the nodes.
*/
public NodeListAdapter(List nodeList) {
this.nodeList = nodeList;
@@ -54,6 +53,7 @@ public class NodeListAdapter implements NodeList {
/**
* @see org.w3c.dom.NodeList#item(int)
*/
+ @Override
public Node item(int index) {
return (Node) nodeList.get(index);
}
@@ -61,6 +61,7 @@ public class NodeListAdapter implements NodeList {
/**
* @see org.w3c.dom.NodeList#getLength()
*/
+ @Override
public int getLength() {
return nodeList.size();
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java
index e4e6cc5..6ce951d 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/OutputXML2File.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
/*
* Created on 26.04.2004
*
@@ -36,67 +35,70 @@ import at.gv.egovernment.moaspss.logging.Logger;
/**
* utility functions to write XML data to files
+ *
* @author rschamberger
* @version $Id$
*/
public class OutputXML2File {
- /**
- * writes an XML structure to file if debug is enabled in hierarchy (Encoding: UTF-8)
- *
- * @param filename file name
- * @param rootElem root element in DOM tree
- * @param hierarchy of the Logger
- */
- public static void debugOutputXML2File(String filename, Element rootElem, String hierarchy) {
- if (Logger.isDebugEnabled(hierarchy)) {
- outputXML2File(filename, rootElem);
- }
- }
-
- /**
- * writes an XML structure to file if debug is enabled in hierarchy (Encoding: UTF-8)
- *
- * @param filename file name
- * @param xmlString XML string
- * @param hierarchy of the Logger
- */
- public static void debugOutputXML2File(String filename, String xmlString, String hierarchy) {
- if (Logger.isDebugEnabled(hierarchy)) {
- outputXML2File(filename, xmlString);
- }
- }
+ /**
+ * writes an XML structure to file if debug is enabled in hierarchy (Encoding:
+ * UTF-8)
+ *
+ * @param filename file name
+ * @param rootElem root element in DOM tree
+ * @param hierarchy of the Logger
+ */
+ public static void debugOutputXML2File(String filename, Element rootElem, String hierarchy) {
+ if (Logger.isDebugEnabled(hierarchy)) {
+ outputXML2File(filename, rootElem);
+ }
+ }
+
+ /**
+ * writes an XML structure to file if debug is enabled in hierarchy (Encoding:
+ * UTF-8)
+ *
+ * @param filename file name
+ * @param xmlString XML string
+ * @param hierarchy of the Logger
+ */
+ public static void debugOutputXML2File(String filename, String xmlString, String hierarchy) {
+ if (Logger.isDebugEnabled(hierarchy)) {
+ outputXML2File(filename, xmlString);
+ }
+ }
+
+ /**
+ * writes an XML structure to file (Encoding: UTF-8)
+ *
+ * @param filename file name
+ * @param rootElem root element in DOM tree
+ */
+ public static void outputXML2File(String filename, Element rootElem) {
+ try {
+ final String xmlString = new String(DOMUtils.serializeNode(rootElem));
+ outputXML2File(filename, xmlString);
+ } catch (final Exception ex) {
+ ex.printStackTrace();
+ }
+ }
- /**
- * writes an XML structure to file (Encoding: UTF-8)
- *
- * @param filename file name
- * @param rootElem root element in DOM tree
- */
- public static void outputXML2File(String filename, Element rootElem) {
- try {
- String xmlString = new String(DOMUtils.serializeNode(rootElem));
- outputXML2File(filename, xmlString);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
- /**
- * writes an XML structure to file (Encoding: UTF-8)
- *
- * @param filename file name
- * @param xmlString XML string
- */
- public static void outputXML2File(String filename, String xmlString) {
- try {
- java.io.OutputStream fout = new java.io.FileOutputStream(filename);
- byte[] xmlData = xmlString.getBytes("UTF-8");
- fout.write(xmlData);
- fout.close();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
+ /**
+ * writes an XML structure to file (Encoding: UTF-8)
+ *
+ * @param filename file name
+ * @param xmlString XML string
+ */
+ public static void outputXML2File(String filename, String xmlString) {
+ try {
+ final java.io.OutputStream fout = new java.io.FileOutputStream(filename);
+ final byte[] xmlData = xmlString.getBytes("UTF-8");
+ fout.write(xmlData);
+ fout.close();
+ } catch (final Exception ex) {
+ ex.printStackTrace();
+ }
+ }
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java
index 1edad95..a5c7ecc 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ResourceBundleChain.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.ArrayList;
@@ -32,7 +31,7 @@ import java.util.ResourceBundle;
/**
* A class to chain <code>ResourceBundle</code>s.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -40,11 +39,11 @@ public class ResourceBundleChain {
/** Error message indicating the resource is not available. */
private static final String ERROR_MISSING_RESOURCE = "Missing resource";
/** The <code>ResourceBundle</code>s contained in this chain. */
- private List resourceBundles = new ArrayList();
+ private final List resourceBundles = new ArrayList();
/**
* Add a <code>ResourceBundle</code> to the chain.
- *
+ *
* @param resourceBundle The <code>ResourceBundle</code> to add.
*/
public void addResourceBundle(ResourceBundle resourceBundle) {
@@ -53,13 +52,13 @@ public class ResourceBundleChain {
/**
* Return the value of the resource.
- *
+ *
* @param key The key to access the <code>String</code> resource.
* @return The resource value. All the registered <code>ResourceBundle</code>s
- * are searched in the order in which they have previously been added to this
- * <code>ResourceBundleChain</code>.
+ * are searched in the order in which they have previously been added to
+ * this <code>ResourceBundleChain</code>.
* @throws MissingResourceException The resource coult not be found in any of
- * the bundles.
+ * the bundles.
*/
public String getString(String key) throws MissingResourceException {
MissingResourceException lastException = null;
@@ -68,19 +67,19 @@ public class ResourceBundleChain {
// handle case where no resource bundles have been added
if (resourceBundles.size() == 0) {
throw new MissingResourceException(
- ERROR_MISSING_RESOURCE,
- this.getClass().getName(),
- key);
+ ERROR_MISSING_RESOURCE,
+ this.getClass().getName(),
+ key);
}
// try to find the resource in one of the bundles; if it cannot be found,
// return the exception thrown by the last bundle in the list
for (iter = resourceBundles.iterator(); iter.hasNext();) {
- ResourceBundle resourceBundle = (ResourceBundle) iter.next();
+ final ResourceBundle resourceBundle = (ResourceBundle) iter.next();
try {
- String value = resourceBundle.getString(key);
+ final String value = resourceBundle.getString(key);
return value;
- } catch (MissingResourceException e) {
+ } catch (final MissingResourceException e) {
lastException = e;
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java
index 5078f01..d2d63cb 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/SSLUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.IOException;
@@ -38,207 +37,239 @@ import javax.net.ssl.TrustManagerFactory;
/**
* Utility for connecting to server applications via SSL.
- *
+ *
* @author Paul Ivancsics
* @version $Id$
*/
public class SSLUtils {
-
- /**
- * Creates an <code>SSLSocketFactory</code> which utilizes the given trust store.
- *
- * @param trustStoreType key store type of trust store
- * @param trustStoreInputStream input stream for reading JKS trust store containing
- * trusted server certificates; if <code>null</code>, the default
- * trust store will be utilized
- * @param trustStorePassword if provided, it will be used to check
- * the integrity of the trust store; if omitted, it will not be checked
- * @return <code>SSLSocketFactory</code> to be used by an <code>HttpsURLConnection</code>
- * @throws IOException thrown while reading from the input stream
+
+ /**
+ * Creates an <code>SSLSocketFactory</code> which utilizes the given trust
+ * store.
+ *
+ * @param trustStoreType key store type of trust store
+ * @param trustStoreInputStream input stream for reading JKS trust store
+ * containing trusted server certificates; if
+ * <code>null</code>, the default trust store will
+ * be utilized
+ * @param trustStorePassword if provided, it will be used to check the
+ * integrity of the trust store; if omitted, it
+ * will not be checked
+ * @return <code>SSLSocketFactory</code> to be used by an
+ * <code>HttpsURLConnection</code>
+ * @throws IOException thrown while reading from the input stream
* @throws GeneralSecurityException thrown while creating the socket factory
- */
+ */
public static SSLSocketFactory getSSLSocketFactory(
- String trustStoreType,
- InputStream trustStoreInputStream,
- String trustStorePassword)
- throws IOException, GeneralSecurityException {
-
- TrustManager[] tms = getTrustManagers(trustStoreType, trustStoreInputStream, trustStorePassword);
- SSLContext ctx = SSLContext.getInstance("TLS");
- ctx.init(null, tms, null);
-
- SSLSocketFactory sf = ctx.getSocketFactory();
- return sf;
+ String trustStoreType,
+ InputStream trustStoreInputStream,
+ String trustStorePassword)
+ throws IOException, GeneralSecurityException {
+
+ final TrustManager[] tms = getTrustManagers(trustStoreType, trustStoreInputStream, trustStorePassword);
+ final SSLContext ctx = SSLContext.getInstance("TLS");
+ ctx.init(null, tms, null);
+
+ final SSLSocketFactory sf = ctx.getSocketFactory();
+ return sf;
}
- /**
- * Creates an <code>SSLSocketFactory</code> which utilizes the
- * given trust store and keystore.
- *
- * @param trustStore trust store containing trusted server certificates;
- * if <code>null</code>, the default trust store will be utilized
- * @param clientKeyStoreType key store type of <code>clientKeyStore</code>
- * @param clientKeyStoreURL URL of key store containing keys to be used for
- * client authentication; if <code>null</code>, the default key store will be utilized
- * @param clientKeyStorePassword if provided, it will be used to check
- * the integrity of the client key store; if omitted, it will not be checked
- * @return <code>SSLSocketFactory</code> to be used by an <code>HttpsURLConnection</code>
- * @throws IOException thrown while reading key store file
+
+ /**
+ * Creates an <code>SSLSocketFactory</code> which utilizes the given trust store
+ * and keystore.
+ *
+ * @param trustStore trust store containing trusted server
+ * certificates; if <code>null</code>, the default
+ * trust store will be utilized
+ * @param clientKeyStoreType key store type of <code>clientKeyStore</code>
+ * @param clientKeyStoreURL URL of key store containing keys to be used for
+ * client authentication; if <code>null</code>,
+ * the default key store will be utilized
+ * @param clientKeyStorePassword if provided, it will be used to check the
+ * integrity of the client key store; if omitted,
+ * it will not be checked
+ * @return <code>SSLSocketFactory</code> to be used by an
+ * <code>HttpsURLConnection</code>
+ * @throws IOException thrown while reading key store file
* @throws GeneralSecurityException thrown while creating the socket factory
- */
+ */
public static SSLSocketFactory getSSLSocketFactory(
- KeyStore trustStore,
- String clientKeyStoreType,
- String clientKeyStoreURL,
- String clientKeyStorePassword)
- throws IOException, GeneralSecurityException {
-
- SSLContext ctx = getSSLContext(
- trustStore, clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword);
- SSLSocketFactory sf = ctx.getSocketFactory();
- return sf;
+ KeyStore trustStore,
+ String clientKeyStoreType,
+ String clientKeyStoreURL,
+ String clientKeyStorePassword)
+ throws IOException, GeneralSecurityException {
+
+ final SSLContext ctx = getSSLContext(
+ trustStore, clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword);
+ final SSLSocketFactory sf = ctx.getSocketFactory();
+ return sf;
}
- /**
- * Creates an <code>SSLContext</code> initialized for the
- * given trust store and keystore.
- *
- * @param trustStore trust store containing trusted server certificates;
- * if <code>null</code>, the default trust store will be utilized
- * @param clientKeyStoreType key store type of <code>clientKeyStore</code>
- * @param clientKeyStoreURL URL of key store containing keys to be used for
- * client authentication; if <code>null</code>, the default key store will be utilized
- * @param clientKeyStorePassword if provided, it will be used to check
- * the integrity of the client key store; if omitted, it will not be checked
- * @return <code>SSLContext</code> to be used for creating an <code>SSLSocketFactory</code>
- * @throws IOException thrown while reading key store file
+
+ /**
+ * Creates an <code>SSLContext</code> initialized for the given trust store and
+ * keystore.
+ *
+ * @param trustStore trust store containing trusted server
+ * certificates; if <code>null</code>, the default
+ * trust store will be utilized
+ * @param clientKeyStoreType key store type of <code>clientKeyStore</code>
+ * @param clientKeyStoreURL URL of key store containing keys to be used for
+ * client authentication; if <code>null</code>,
+ * the default key store will be utilized
+ * @param clientKeyStorePassword if provided, it will be used to check the
+ * integrity of the client key store; if omitted,
+ * it will not be checked
+ * @return <code>SSLContext</code> to be used for creating an
+ * <code>SSLSocketFactory</code>
+ * @throws IOException thrown while reading key store file
* @throws GeneralSecurityException thrown while creating the SSL context
- */
+ */
public static SSLContext getSSLContext(
- KeyStore trustStore,
- String clientKeyStoreType,
- String clientKeyStoreURL,
- String clientKeyStorePassword)
- throws IOException, GeneralSecurityException {
-
- TrustManager[] tms = getTrustManagers(trustStore);
- KeyManager[] kms = getKeyManagers(clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword);
- SSLContext ctx = SSLContext.getInstance("TLS");
- ctx.init(kms, tms, null);
- return ctx;
+ KeyStore trustStore,
+ String clientKeyStoreType,
+ String clientKeyStoreURL,
+ String clientKeyStorePassword)
+ throws IOException, GeneralSecurityException {
+
+ final TrustManager[] tms = getTrustManagers(trustStore);
+ final KeyManager[] kms = getKeyManagers(clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword);
+ final SSLContext ctx = SSLContext.getInstance("TLS");
+ ctx.init(kms, tms, null);
+ return ctx;
}
+
/**
- * Loads the trust store from an input stream and gets the
+ * Loads the trust store from an input stream and gets the
* <code>TrustManager</code>s from a default <code>TrustManagerFactory</code>,
- * initialized from the given trust store.
- * @param trustStoreType key store type of trust store
- * @param trustStoreInputStream input stream for reading JKS trust store containing
- * trusted server certificates; if <code>null</code>, the default
- * trust store will be utilized
- * @param trustStorePassword if provided, it will be used to check
- * the integrity of the trust store; if omitted, it will not be checked
- * @return <code>TrustManager</code>s to be used for creating an
- * <code>SSLSocketFactory</code> utilizing the given trust store
- * @throws IOException thrown while reading from the input stream
- * @throws GeneralSecurityException thrown while initializing the
- * default <code>TrustManagerFactory</code>
+ * initialized from the given trust store.
+ *
+ * @param trustStoreType key store type of trust store
+ * @param trustStoreInputStream input stream for reading JKS trust store
+ * containing trusted server certificates; if
+ * <code>null</code>, the default trust store will
+ * be utilized
+ * @param trustStorePassword if provided, it will be used to check the
+ * integrity of the trust store; if omitted, it
+ * will not be checked
+ * @return <code>TrustManager</code>s to be used for creating an
+ * <code>SSLSocketFactory</code> utilizing the given trust store
+ * @throws IOException thrown while reading from the input stream
+ * @throws GeneralSecurityException thrown while initializing the default
+ * <code>TrustManagerFactory</code>
*/
- protected static TrustManager[] getTrustManagers(
- String trustStoreType,
- InputStream trustStoreInputStream,
- String trustStorePassword)
- throws IOException, GeneralSecurityException {
-
- if (trustStoreInputStream == null)
- return null;
-
- // Set up the TrustStore to use. We need to load the file into
- // a KeyStore instance.
- KeyStore trustStore = KeyStoreUtils.loadKeyStore(trustStoreType, trustStoreInputStream, trustStorePassword);
- return getTrustManagers(trustStore);
- }
- /**
- * Gets the <code>TrustManager</code>s from a default <code>TrustManagerFactory</code>,
- * initialized from the given trust store.
- *
- * @param trustStore the trust store to use
- * @return <code>TrustManager</code>s to be used for creating an
- * <code>SSLSocketFactory</code> utilizing the given trust store
- * @throws GeneralSecurityException thrown while initializing the
- * default <code>TrustManagerFactory</code>
- */
- protected static TrustManager[] getTrustManagers(KeyStore trustStore)
- throws GeneralSecurityException {
-
- if (trustStore == null)
- return null;
-
- // Initialize the default TrustManagerFactory with this KeyStore
- String alg=TrustManagerFactory.getDefaultAlgorithm();
- TrustManagerFactory tmFact=TrustManagerFactory.getInstance(alg);
- tmFact.init(trustStore);
-
- // And now get the TrustManagers
- TrustManager[] tms=tmFact.getTrustManagers();
- return tms;
- }
+ protected static TrustManager[] getTrustManagers(
+ String trustStoreType,
+ InputStream trustStoreInputStream,
+ String trustStorePassword)
+ throws IOException, GeneralSecurityException {
+
+ if (trustStoreInputStream == null) {
+ return null;
+ }
+
+ // Set up the TrustStore to use. We need to load the file into
+ // a KeyStore instance.
+ final KeyStore trustStore = KeyStoreUtils.loadKeyStore(trustStoreType, trustStoreInputStream,
+ trustStorePassword);
+ return getTrustManagers(trustStore);
+ }
+
/**
- * Loads the client key store from file and gets the
- * <code>KeyManager</code>s from a default <code>KeyManagerFactory</code>,
- * initialized from the given client key store.
- * @param clientKeyStoreType key store type of <code>clientKeyStore</code>
- * @param clientKeyStoreURL URL of key store containing keys to be used for
- * client authentication; if <code>null</code>, the default key store will be utilized
- * @param clientKeyStorePassword password used to check the integrity of the client key store;
- * if <code>null</code>, it will not be checked
- * @return <code>KeyManager</code>s to be used for creating an
- * <code>SSLSocketFactory</code> utilizing the given client key store
- * @throws IOException thrown while reading from the key store file
- * @throws GeneralSecurityException thrown while initializing the
- * default <code>KeyManagerFactory</code>
+ * Gets the <code>TrustManager</code>s from a default
+ * <code>TrustManagerFactory</code>, initialized from the given trust store.
+ *
+ * @param trustStore the trust store to use
+ * @return <code>TrustManager</code>s to be used for creating an
+ * <code>SSLSocketFactory</code> utilizing the given trust store
+ * @throws GeneralSecurityException thrown while initializing the default
+ * <code>TrustManagerFactory</code>
*/
- public static KeyManager[] getKeyManagers (
- String clientKeyStoreType,
- String clientKeyStoreURL,
- String clientKeyStorePassword)
- throws IOException, GeneralSecurityException {
-
- if (clientKeyStoreURL == null)
- return null;
-
- // Set up the KeyStore to use. We need to load the file into
- // a KeyStore instance.
- KeyStore clientKeyStore = KeyStoreUtils.loadKeyStore(
- clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword);
- return getKeyManagers(clientKeyStore, clientKeyStorePassword);
- }
+ protected static TrustManager[] getTrustManagers(KeyStore trustStore)
+ throws GeneralSecurityException {
+
+ if (trustStore == null) {
+ return null;
+ }
+
+ // Initialize the default TrustManagerFactory with this KeyStore
+ final String alg = TrustManagerFactory.getDefaultAlgorithm();
+ final TrustManagerFactory tmFact = TrustManagerFactory.getInstance(alg);
+ tmFact.init(trustStore);
+
+ // And now get the TrustManagers
+ final TrustManager[] tms = tmFact.getTrustManagers();
+ return tms;
+ }
+
/**
- * Gets the <code>KeyManager</code>s from a default <code>KeyManagerFactory</code>,
- * initialized from the given client key store.
- * @param clientKeyStore client key store
- * @param clientKeyStorePassword if provided, it will be used to check
- * the integrity of the client key store; if omitted, it will not be checked
- * @return <code>KeyManager</code>s to be used for creating an
- * <code>SSLSocketFactory</code> utilizing the given client key store
- * @throws GeneralSecurityException thrown while initializing the
- * default <code>KeyManagerFactory</code>
+ * Loads the client key store from file and gets the <code>KeyManager</code>s
+ * from a default <code>KeyManagerFactory</code>, initialized from the given
+ * client key store.
+ *
+ * @param clientKeyStoreType key store type of <code>clientKeyStore</code>
+ * @param clientKeyStoreURL URL of key store containing keys to be used for
+ * client authentication; if <code>null</code>,
+ * the default key store will be utilized
+ * @param clientKeyStorePassword password used to check the integrity of the
+ * client key store; if <code>null</code>, it will
+ * not be checked
+ * @return <code>KeyManager</code>s to be used for creating an
+ * <code>SSLSocketFactory</code> utilizing the given client key store
+ * @throws IOException thrown while reading from the key store file
+ * @throws GeneralSecurityException thrown while initializing the default
+ * <code>KeyManagerFactory</code>
*/
- public static KeyManager[] getKeyManagers (
- KeyStore clientKeyStore,
- String clientKeyStorePassword)
- throws GeneralSecurityException {
-
- if (clientKeyStore == null)
- return null;
-
- // Now we initialize the default KeyManagerFactory with this KeyStore
- String alg=KeyManagerFactory.getDefaultAlgorithm();
- KeyManagerFactory kmFact=KeyManagerFactory.getInstance(alg);
- char[] password = null;
- if (clientKeyStorePassword != null)
- password = clientKeyStorePassword.toCharArray();
- kmFact.init(clientKeyStore, password);
-
- // And now get the KeyManagers
- KeyManager[] kms=kmFact.getKeyManagers();
- return kms;
- }
+ public static KeyManager[] getKeyManagers(
+ String clientKeyStoreType,
+ String clientKeyStoreURL,
+ String clientKeyStorePassword)
+ throws IOException, GeneralSecurityException {
+
+ if (clientKeyStoreURL == null) {
+ return null;
+ }
+
+ // Set up the KeyStore to use. We need to load the file into
+ // a KeyStore instance.
+ final KeyStore clientKeyStore = KeyStoreUtils.loadKeyStore(
+ clientKeyStoreType, clientKeyStoreURL, clientKeyStorePassword);
+ return getKeyManagers(clientKeyStore, clientKeyStorePassword);
+ }
+
+ /**
+ * Gets the <code>KeyManager</code>s from a default
+ * <code>KeyManagerFactory</code>, initialized from the given client key store.
+ *
+ * @param clientKeyStore client key store
+ * @param clientKeyStorePassword if provided, it will be used to check the
+ * integrity of the client key store; if omitted,
+ * it will not be checked
+ * @return <code>KeyManager</code>s to be used for creating an
+ * <code>SSLSocketFactory</code> utilizing the given client key store
+ * @throws GeneralSecurityException thrown while initializing the default
+ * <code>KeyManagerFactory</code>
+ */
+ public static KeyManager[] getKeyManagers(
+ KeyStore clientKeyStore,
+ String clientKeyStorePassword)
+ throws GeneralSecurityException {
+
+ if (clientKeyStore == null) {
+ return null;
+ }
+
+ // Now we initialize the default KeyManagerFactory with this KeyStore
+ final String alg = KeyManagerFactory.getDefaultAlgorithm();
+ final KeyManagerFactory kmFact = KeyManagerFactory.getInstance(alg);
+ char[] password = null;
+ if (clientKeyStorePassword != null) {
+ password = clientKeyStorePassword.toCharArray();
+ }
+ kmFact.init(clientKeyStore, password);
+
+ // And now get the KeyManagers
+ final KeyManager[] kms = kmFact.getKeyManagers();
+ return kms;
+ }
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java
index 5d328cf..06efdda 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamEntityResolver.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.IOException;
@@ -33,23 +32,26 @@ import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
- * An <code>EntityResolver</code> that maps system IDs to
+ * An <code>EntityResolver</code> that maps system IDs to
* <code>InputStream</code>s.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class StreamEntityResolver implements EntityResolver {
-
- /** A mapping from Public ID or System ID to an <code>InputStream</code>
- * containing the entity. */
- private Map mappedEntities;
-
+
+ /**
+ * A mapping from Public ID or System ID to an <code>InputStream</code>
+ * containing the entity.
+ */
+ private final Map mappedEntities;
+
/**
* Create a <code>StreamEntityResolver</code>.
- *
- * @param mappedEntities A mapping from public or system IDs
- * (<code>String</code> objects) to <code>InputStream</code>s.
+ *
+ * @param mappedEntities A mapping from public or system IDs
+ * (<code>String</code> objects) to
+ * <code>InputStream</code>s.
*/
public StreamEntityResolver(Map mappedEntities) {
this.mappedEntities = mappedEntities;
@@ -57,32 +59,33 @@ public class StreamEntityResolver implements EntityResolver {
/**
* Resolve an entity by looking it up in the mapped entities.
- *
+ *
* First, the public ID is looked up in the mapping, then the system ID.
- *
+ *
* @param publicId The public ID of the entity.
* @param systemId The system ID of the entity.
- * @return An <code>InputStream</code> containing the entity or
- * <code>null</code> if no entity could be found.
+ * @return An <code>InputStream</code> containing the entity or
+ * <code>null</code> if no entity could be found.
* @throws SAXException Signalling a parsing exception.
- * @throws IOException Error reading the entity.
+ * @throws IOException Error reading the entity.
*/
- public InputSource resolveEntity(String publicId, String systemId)
- throws SAXException, IOException {
-
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId)
+ throws SAXException, IOException {
+
InputSource src = null;
-
+
if (publicId != null && mappedEntities.get(publicId) != null) {
src = new InputSource((InputStream) mappedEntities.get(publicId));
} else if (systemId != null && mappedEntities.get(systemId) != null) {
src = new InputSource((InputStream) mappedEntities.get(systemId));
}
-
+
if (src != null) {
src.setPublicId(publicId);
src.setSystemId(systemId);
}
-
+
return src;
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java
index f3abe9c..41eae87 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StreamUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.ByteArrayOutputStream;
@@ -32,34 +31,34 @@ import java.io.PrintStream;
/**
* Utility methods for streams.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class StreamUtils {
-
+
/**
* Compare the contents of two <code>InputStream</code>s.
- *
+ *
* @param is1 The 1st <code>InputStream</code> to compare.
* @param is2 The 2nd <code>InputStream</code> to compare.
* @return boolean <code>true</code>, if both streams contain the exactly the
- * same content, <code>false</code> otherwise.
+ * same content, <code>false</code> otherwise.
* @throws IOException An error occurred reading one of the streams.
*/
- public static boolean compareStreams(InputStream is1, InputStream is2)
- throws IOException {
-
- byte[] buf1 = new byte[256];
- byte[] buf2 = new byte[256];
+ public static boolean compareStreams(InputStream is1, InputStream is2)
+ throws IOException {
+
+ final byte[] buf1 = new byte[256];
+ final byte[] buf2 = new byte[256];
int length1;
int length2;
-
+
try {
while (true) {
length1 = is1.read(buf1);
length2 = is2.read(buf2);
-
+
if (length1 != length2) {
return false;
}
@@ -70,127 +69,128 @@ public class StreamUtils {
return false;
}
}
- } catch (IOException e) {
+ } catch (final IOException e) {
throw e;
} finally {
// close both streams
try {
is1.close();
is2.close();
- } catch (IOException e) {
+ } catch (final IOException e) {
// ignore this
}
}
}
-
+
/**
* Compare two byte arrays, up to a given maximum length.
- *
- * @param b1 1st byte array to compare.
- * @param b2 2nd byte array to compare.
+ *
+ * @param b1 1st byte array to compare.
+ * @param b2 2nd byte array to compare.
* @param length The maximum number of bytes to compare.
* @return <code>true</code>, if the byte arrays are equal, <code>false</code>
- * otherwise.
+ * otherwise.
*/
private static boolean compareBytes(byte[] b1, byte[] b2, int length) {
if (b1.length != b2.length) {
return false;
}
-
+
for (int i = 0; i < b1.length && i < length; i++) {
if (b1[i] != b2[i]) {
return false;
}
}
-
+
return true;
}
/**
* Reads a byte array from a stream.
+ *
* @param in The <code>InputStream</code> to read.
* @return The bytes contained in the given <code>InputStream</code>.
* @throws IOException on any exception thrown
*/
public static byte[] readStream(InputStream in) throws IOException {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
copyStream(in, out, null);
-
- /*
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- int b;
- while ((b = in.read()) >= 0)
- out.write(b);
-
- */
+
+ /*
+ * ByteArrayOutputStream out = new ByteArrayOutputStream(); int b; while ((b =
+ * in.read()) >= 0) out.write(b);
+ *
+ */
in.close();
return out.toByteArray();
}
/**
* Reads a <code>String</code> from a stream, using given encoding.
- * @param in The <code>InputStream</code> to read.
- * @param encoding The character encoding to use for converting the bytes
- * of the <code>InputStream</code> into a <code>String</code>.
- * @return The content of the given <code>InputStream</code> converted into
- * a <code>String</code>.
+ *
+ * @param in The <code>InputStream</code> to read.
+ * @param encoding The character encoding to use for converting the bytes of the
+ * <code>InputStream</code> into a <code>String</code>.
+ * @return The content of the given <code>InputStream</code> converted into a
+ * <code>String</code>.
* @throws IOException on any exception thrown
*/
public static String readStream(InputStream in, String encoding) throws IOException {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
copyStream(in, out, null);
/*
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- int b;
- while ((b = in.read()) >= 0)
- out.write(b);
- */
+ * ByteArrayOutputStream out = new ByteArrayOutputStream(); int b; while ((b =
+ * in.read()) >= 0) out.write(b);
+ */
in.close();
return out.toString(encoding);
}
-
+
/**
- * Reads all data (until EOF is reached) from the given source to the
+ * Reads all data (until EOF is reached) from the given source to the
* destination stream. If the destination stream is null, all data is dropped.
- * It uses the given buffer to read data and forward it. If the buffer is
- * null, this method allocates a buffer.
+ * It uses the given buffer to read data and forward it. If the buffer is null,
+ * this method allocates a buffer.
*
- * @param source The stream providing the data.
- * @param destination The stream that takes the data. If this is null, all
- * data from source will be read and discarded.
- * @param buffer The buffer to use for forwarding. If it is null, the method
- * allocates a buffer.
- * @exception IOException If reading from the source or writing to the
+ * @param source The stream providing the data.
+ * @param destination The stream that takes the data. If this is null, all data
+ * from source will be read and discarded.
+ * @param buffer The buffer to use for forwarding. If it is null, the
+ * method allocates a buffer.
+ * @exception IOException If reading from the source or writing to the
* destination fails.
*/
- private static void copyStream(InputStream source, OutputStream destination, byte[] buffer) throws IOException {
+ private static void copyStream(InputStream source, OutputStream destination, byte[] buffer)
+ throws IOException {
if (source == null) {
throw new NullPointerException("Argument \"source\" must not be null.");
}
if (buffer == null) {
buffer = new byte[8192];
}
-
+
if (destination != null) {
int bytesRead;
while ((bytesRead = source.read(buffer)) >= 0) {
destination.write(buffer, 0, bytesRead);
}
} else {
- while (source.read(buffer) >= 0);
- }
+ while (source.read(buffer) >= 0) {
+ ;
+ }
+ }
}
-
+
/**
* Gets the stack trace of the <code>Throwable</code> passed in as a string.
+ *
* @param t The <code>Throwable</code>.
* @return a String representing the stack trace of the <code>Throwable</code>.
*/
- public static String getStackTraceAsString(Throwable t)
- {
- ByteArrayOutputStream stackTraceBIS = new ByteArrayOutputStream();
+ public static String getStackTraceAsString(Throwable t) {
+ final ByteArrayOutputStream stackTraceBIS = new ByteArrayOutputStream();
t.printStackTrace(new PrintStream(stackTraceBIS));
return new String(stackTraceBIS.toByteArray());
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java
index 695be18..4c22340 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/StringUtils.java
@@ -21,59 +21,59 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.StringTokenizer;
/**
* Utitility functions for string manipulations.
- *
+ *
* @author Harald Bratko
*/
public class StringUtils {
/**
* Removes all blanks and tabs from the given string.
- *
+ *
* @param s The string to remove all blanks and tabs from.
- * @return The input string with all blanks and tabs removed from.
+ * @return The input string with all blanks and tabs removed from.
*/
public static String removeBlanks(String s) {
- StringTokenizer st = new StringTokenizer(s);
- StringBuffer sb = new StringBuffer(s.length());
+ final StringTokenizer st = new StringTokenizer(s);
+ final StringBuffer sb = new StringBuffer(s.length());
while (st.hasMoreTokens()) {
sb.append(st.nextToken());
}
return sb.toString();
}
-
+
/**
* Removes all occurences of the specified token from the the given string.
- *
+ *
* @param s The string to remove all occurences of the specified token from.
- * @return The input string with all occurences of the specified token removed from.
+ * @return The input string with all occurences of the specified token removed
+ * from.
*/
public static String removeToken(String s, String token) {
- StringTokenizer st = new StringTokenizer(s, token);
- StringBuffer sb = new StringBuffer(s.length());
+ final StringTokenizer st = new StringTokenizer(s, token);
+ final StringBuffer sb = new StringBuffer(s.length());
while (st.hasMoreTokens()) {
sb.append(st.nextToken());
}
return sb.toString();
}
-
+
/**
* Removes all leading zeros from the input string.
- *
- * @param s The string remove the leading zeros from.
- * @return The input string with the leading zeros removed from.
+ *
+ * @param s The string remove the leading zeros from.
+ * @return The input string with the leading zeros removed from.
*/
public static String deleteLeadingZeros(String s) {
- StringBuffer sb = new StringBuffer(s);
- int l = sb.length();
+ final StringBuffer sb = new StringBuffer(s);
+ final int l = sb.length();
int j = 0;
- for (int i=0; i<l; i++) {
+ for (int i = 0; i < l; i++) {
if (sb.charAt(i) == '0') {
j++;
} else {
@@ -82,97 +82,94 @@ public class StringUtils {
}
return sb.substring(j, l);
}
-
+
/**
* Replaces each substring of string <code>s</code> that matches the given
* <code>search</code> string by the given <code>replace</code> string.
- *
- * @param s The string where the replacement should take place.
- * @param search The pattern that should be replaced.
- * @param replace The string that should replace all each <code>search</code>
- * string within <code>s</code>.
- * @return A string where all occurrence of <code>search</code> are
- * replaced with <code>replace</code>.
+ *
+ * @param s The string where the replacement should take place.
+ * @param search The pattern that should be replaced.
+ * @param replace The string that should replace all each <code>search</code>
+ * string within <code>s</code>.
+ * @return A string where all occurrence of <code>search</code> are replaced
+ * with <code>replace</code>.
*/
- public static String replaceAll (String s, String search, String replace)
- {
- StringBuffer sb = new StringBuffer();
- int i = 0, j = 0;
- int len = search.length();
- while (j > -1)
- {
- j = s.indexOf(search, i);
+ public static String replaceAll(String s, String search, String replace) {
+ final StringBuffer sb = new StringBuffer();
+ int i = 0, j = 0;
+ final int len = search.length();
+ while (j > -1) {
+ j = s.indexOf(search, i);
+
+ if (j > -1) {
+ sb.append(s.substring(i, j));
+ sb.append(replace);
+ i = j + len;
+ }
+ }
- if (j > -1)
- {
- sb.append(s.substring(i,j));
- sb.append(replace);
- i = j + len;
- }
- }
-
- sb.append(s.substring(i, s.length()));
+ sb.append(s.substring(i, s.length()));
- return sb.toString();
+ return sb.toString();
}
-
+
/**
- * Changes the SecurityLayer version in the given string.
- * This method usually takes as input an XML structure represented in a string
- * format and changes the SecurityLayer namespaces prefixes and URIs from
- * one SecurityLayer version to another.
- * e.g.: code>sl10</code> to <code>sl</code> and
- * <code>http://www.buergerkarte.at/namespaces/securitylayer/20020225#</code>
- * to
- * <code>http://www.buergerkarte.at/namespaces/securitylayer/1.2#</code>
- *
- * @param s The string (usally an XML structure) where the
- * SecurityLayer version should be changed.
- * @param slPrefixOld The SecurityLayer namespace prefix that should be
- * replaced by the new one.
- * @param slPrefixNew The new SecurityLayer namespace prefix that should
- * replace the old one.
- * @param slNSUriOld The SecurityLayer namespace URI that should be
- * replaced by the new one.
- * @param slNSUriNew The new SecurityLayer namespace URI that should
- * replace the old one.
- * @return A string where the SecurityLayer namespace prefixes
- * and URIs are replaced by new ones.
+ * Changes the SecurityLayer version in the given string. This method usually
+ * takes as input an XML structure represented in a string format and changes
+ * the SecurityLayer namespaces prefixes and URIs from one SecurityLayer version
+ * to another. e.g.: code>sl10</code> to <code>sl</code> and
+ * <code>http://www.buergerkarte.at/namespaces/securitylayer/20020225#</code> to
+ * <code>http://www.buergerkarte.at/namespaces/securitylayer/1.2#</code>
+ *
+ * @param s The string (usally an XML structure) where the
+ * SecurityLayer version should be changed.
+ * @param slPrefixOld The SecurityLayer namespace prefix that should be replaced
+ * by the new one.
+ * @param slPrefixNew The new SecurityLayer namespace prefix that should replace
+ * the old one.
+ * @param slNSUriOld The SecurityLayer namespace URI that should be replaced by
+ * the new one.
+ * @param slNSUriNew The new SecurityLayer namespace URI that should replace
+ * the old one.
+ * @return A string where the SecurityLayer namespace prefixes and URIs are
+ * replaced by new ones.
*/
- public static String changeSLVersion(String s, String slPrefixOld, String slPrefixNew, String slNSUriOld, String slNSUriNew) {
+ public static String changeSLVersion(String s, String slPrefixOld, String slPrefixNew, String slNSUriOld,
+ String slNSUriNew) {
String retString = replaceAll(s, slPrefixOld, slPrefixNew);
retString = replaceAll(retString, slNSUriOld, slNSUriNew);
- return retString ;
+ return retString;
}
-
+
/**
* Removes the XML declaration from an XML expression.
- *
+ *
* @param xmlString XML expression as String
- *
+ *
* @return XML expression, XML declaration removed
*/
public static String removeXMLDeclaration(String xmlString) {
- if (xmlString!=null && xmlString.startsWith("<?xml")) {
- int firstElement = xmlString.indexOf("<", 1);
+ if (xmlString != null && xmlString.startsWith("<?xml")) {
+ final int firstElement = xmlString.indexOf("<", 1);
return xmlString.substring(firstElement);
} else {
return xmlString;
}
}
-
+
/**
* Checks if String is empty
+ *
* @param s String to be checked if empty
* @return True if String is empty, false otherwise
*/
public static boolean isEmpty(String s) {
- if (s == null || s.length() == 0)
- return true;
- else
- return false;
-
+ if (s == null || s.length() == 0) {
+ return true;
+ } else {
+ return false;
+ }
+
}
-
-
+
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java
index af71e2d..cfebbb2 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLDecoder.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.ByteArrayOutputStream;
@@ -30,55 +29,60 @@ import java.io.StringReader;
import java.io.UnsupportedEncodingException;
/**
- * Decodes an URL encoded String using a specified character encoding.
- * Provides a function missing in JDK 1.3.
+ * Decodes an URL encoded String using a specified character encoding. Provides
+ * a function missing in JDK 1.3.
+ *
* @author Paul Ivancsics
* @version $Id$
*/
public class URLDecoder {
/**
- * Decodes an <code>application/x-www-form-urlencoded</code> string using a specific encoding scheme.
- * @param s the string to decode
+ * Decodes an <code>application/x-www-form-urlencoded</code> string using a
+ * specific encoding scheme.
+ *
+ * @param s the string to decode
* @param encoding name of character encoding
* @return the newly decoded string
* @throws UnsupportedEncodingException if the encoding is not supported
*/
public static String decode(String s, String encoding) throws UnsupportedEncodingException {
- StringReader in = new StringReader(s);
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- for (int b = read(in); b >= 0; b = read(in))
+ final StringReader in = new StringReader(s);
+ final ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ for (int b = read(in); b >= 0; b = read(in)) {
bout.write(b);
+ }
return bout.toString(encoding);
}
+
/**
* Decodes the next byte from the string reader.
+ *
* @param in string reader
- * @return the next byte decoded;
- * -1 upon end of string, on erroneous data, and on any exception caught
+ * @return the next byte decoded; -1 upon end of string, on erroneous data, and
+ * on any exception caught
* @todo syntax check on string
*/
private static int read(StringReader in) {
- try {
- int b = in.read();
- if (b == '+')
+ try {
+ final int b = in.read();
+ if (b == '+') {
return ' ';
+ }
if (b == '%') {
- char[] hex = new char[2];
+ final char[] hex = new char[2];
if (in.read(hex, 0, 2) >= 0) {
- String hexString = new String(hex);
+ final String hexString = new String(hex);
return Integer.valueOf(hexString, 16).intValue();
- }
- else
+ } else {
return -1;
+ }
}
return b;
- }
- catch (IOException ex) {
- return -1;
- }
- catch (NumberFormatException ex) {
- return -1;
+ } catch (final IOException ex) {
+ return -1;
+ } catch (final NumberFormatException ex) {
+ return -1;
}
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java
index 2aa7e22..5eaece3 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/URLEncoder.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.ByteArrayInputStream;
@@ -29,60 +28,68 @@ import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
/**
- * Translates a string into mime format "x-www-form-urlencoded".
- * Provides a function missing in JDK 1.3.
+ * Translates a string into mime format "x-www-form-urlencoded". Provides a
+ * function missing in JDK 1.3.
+ *
* @author Paul Ivancsics
* @version $Id$
*/
public class URLEncoder {
-
+
/**
* Translates a string into x-www-form-urlencoded format.
- * @param s the string to be translated
+ *
+ * @param s the string to be translated
* @param encoding the encoding to use
* @return the translated string
- * @throws UnsupportedEncodingException when the desired encoding is not supported
+ * @throws UnsupportedEncodingException when the desired encoding is not
+ * supported
*/
public static String encode(String s, String encoding) throws UnsupportedEncodingException {
// if (MiscUtil.isEmpty(s))
// return null;
- byte[] barr = s.getBytes(encoding);
- ByteArrayInputStream bin = new ByteArrayInputStream(barr);
- StringWriter out = new StringWriter();
- for (int b = bin.read(); b >= 0; b = bin.read())
+ final byte[] barr = s.getBytes(encoding);
+ final ByteArrayInputStream bin = new ByteArrayInputStream(barr);
+ final StringWriter out = new StringWriter();
+ for (int b = bin.read(); b >= 0; b = bin.read()) {
encode(b, out);
+ }
return out.toString();
}
-
+
/**
* Encode a character.
- * @param ch The character to encode.
+ *
+ * @param ch The character to encode.
* @param out The <code>StringWriter</code> containing the result.
*/
private static void encode(int ch, StringWriter out) {
- if ((ch >= 'a' && ch <= 'z')
- || (ch >= 'A' && ch <= 'Z')
- || (ch >= '0' && ch <= '9')
- || ch == '.' || ch == '-' || ch == '*' || ch == '_')
+ if (ch >= 'a' && ch <= 'z'
+ || ch >= 'A' && ch <= 'Z'
+ || ch >= '0' && ch <= '9'
+ || ch == '.' || ch == '-' || ch == '*' || ch == '_') {
out.write(ch);
- else if (ch == ' ')
+ } else if (ch == ' ') {
out.write('+');
- else
+ } else {
encodeHex(ch, out);
+ }
}
-
+
/**
- * Encode a character as an escaped hex value.
- * @param ch The character to encode.
+ * Encode a character as an escaped hex value.
+ *
+ * @param ch The character to encode.
* @param out The <code>StringWriter</code> containing the result.
*/
private static void encodeHex(int ch, StringWriter out) {
out.write('%');
- String hex = Integer.toHexString(ch).toUpperCase();
- if (hex.length() < 2)
+ final String hex = Integer.toHexString(ch).toUpperCase();
+ if (hex.length() < 2) {
out.write('0');
- else
+ } else {
out.write(hex.charAt(hex.length() - 2));
+ }
out.write(hex.charAt(hex.length() - 1));
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java
index cbf3e4e..9a60bd2 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathException.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.io.PrintStream;
@@ -29,33 +28,33 @@ import java.io.PrintWriter;
/**
* An exception occurred evaluating an XPath.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XPathException extends RuntimeException {
/**
- *
- */
- private static final long serialVersionUID = 1736311265333034392L;
-/** The wrapped exception. */
- private Throwable wrapped;
-
+ *
+ */
+ private static final long serialVersionUID = 1736311265333034392L;
+ /** The wrapped exception. */
+ private final Throwable wrapped;
+
/**
* Create a <code>XPathException</code>.
- *
+ *
* @param message The exception message.
* @param wrapped The exception being the likely cause of this exception.
*/
public XPathException(String message, Throwable wrapped) {
// TODO: remove wrapped from super cstr. again
- super(message, wrapped);
- this.wrapped = wrapped;
+ super(message, wrapped);
+ this.wrapped = wrapped;
}
-
+
/**
* Return the wrapped exception.
- *
+ *
* @return The wrapped exception being the likely cause of this exception.
*/
public Throwable getWrapped() {
@@ -65,6 +64,7 @@ public class XPathException extends RuntimeException {
/**
* @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
*/
+ @Override
public void printStackTrace(PrintStream s) {
super.printStackTrace(s);
if (getWrapped() != null) {
@@ -76,6 +76,7 @@ public class XPathException extends RuntimeException {
/**
* @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
*/
+ @Override
public void printStackTrace(PrintWriter s) {
super.printStackTrace(s);
if (getWrapped() != null) {
@@ -83,5 +84,5 @@ public class XPathException extends RuntimeException {
getWrapped().printStackTrace(s);
}
}
-
+
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java
index 2604c20..3bc3bb9 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/XPathUtils.java
@@ -21,28 +21,26 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moaspss.util;
import java.util.List;
import java.util.Map;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.traversal.NodeIterator;
-
import org.jaxen.JaxenException;
import org.jaxen.NamespaceContext;
import org.jaxen.Navigator;
import org.jaxen.SimpleNamespaceContext;
import org.jaxen.dom.DOMXPath;
import org.jaxen.dom.DocumentNavigator;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.traversal.NodeIterator;
/**
* Utility methods to evaluate XPath expressions on DOM nodes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -53,16 +51,16 @@ public class XPathUtils {
* root node itself).
*/
public static final String ALL_NODES_XPATH =
- "(.//. | .//@* | .//namespace::*)";
+ "(.//. | .//@* | .//namespace::*)";
/** The <code>DocumentNavigator</code> to use for navigating the document. */
private static Navigator documentNavigator =
- DocumentNavigator.getInstance();
+ DocumentNavigator.getInstance();
/** The default namespace prefix to namespace URI mappings. */
private static NamespaceContext NS_CONTEXT;
static {
- SimpleNamespaceContext ctx = new SimpleNamespaceContext();
+ final SimpleNamespaceContext ctx = new SimpleNamespaceContext();
ctx.addNamespace(Constants.MOA_PREFIX, Constants.MOA_NS_URI);
ctx.addNamespace(Constants.MOA_CONFIG_PREFIX, Constants.MOA_CONFIG_NS_URI);
ctx.addNamespace(Constants.MOA_ID_CONFIG_PREFIX, Constants.MOA_ID_CONFIG_NS_URI);
@@ -95,18 +93,17 @@ public class XPathUtils {
/**
* Return a <code>NodeIterator</code> over the nodes matching the XPath
* expression.
- *
+ *
* All namespace URIs and prefixes declared in the <code>Constants</code>
* interface are used for resolving namespaces.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath expression.
+ * @param exp The XPath expression to evaluate.
* @return An iterator over the resulting nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static NodeIterator selectNodeIterator(Node contextNode, String exp)
- throws XPathException {
+ throws XPathException {
return selectNodeIterator(contextNode, NS_CONTEXT, exp);
}
@@ -114,28 +111,28 @@ public class XPathUtils {
/**
* Return a <code>NodeIterator</code> over the nodes matching the XPath
* expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param namespaceElement An element from which to build the
- * namespace mapping for evaluating the XPath expression
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath
+ * expression.
+ * @param namespaceElement An element from which to build the namespace mapping
+ * for evaluating the XPath expression
+ * @param exp The XPath expression to evaluate.
* @return An iterator over the resulting nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static NodeIterator selectNodeIterator(
- Node contextNode,
- Element namespaceElement,
- String exp)
- throws XPathException {
+ Node contextNode,
+ Element namespaceElement,
+ String exp)
+ throws XPathException {
try {
- SimpleNamespaceContext ctx = new SimpleNamespaceContext();
+ final SimpleNamespaceContext ctx = new SimpleNamespaceContext();
ctx.addElementNamespaces(documentNavigator, namespaceElement);
return selectNodeIterator(contextNode, ctx, exp);
- } catch (JaxenException e) {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { exp });
+ } catch (final JaxenException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] { exp });
throw new XPathException(message, e);
}
}
@@ -143,23 +140,23 @@ public class XPathUtils {
/**
* Return a <code>NodeIterator</code> over the nodes matching the XPath
* expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
+ *
+ * @param contextNode The root node from which to evaluate the XPath
+ * expression.
* @param namespaceMapping A namespace prefix to namespace URI mapping
- * (<code>String</code> to <code>String</code>) for evaluating the XPath
- * expression.
- * @param exp The XPath expression to evaluate.
+ * (<code>String</code> to <code>String</code>) for
+ * evaluating the XPath expression.
+ * @param exp The XPath expression to evaluate.
* @return An iterator over the resulting nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static NodeIterator selectNodeIterator(
- Node contextNode,
- Map namespaceMapping,
- String exp)
- throws XPathException {
+ Node contextNode,
+ Map namespaceMapping,
+ String exp)
+ throws XPathException {
- SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping);
+ final SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping);
return selectNodeIterator(contextNode, ctx, exp);
}
@@ -167,31 +164,31 @@ public class XPathUtils {
/**
* Return a <code>NodeIterator</code> over the nodes matching the XPath
* expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param nsContext The <code>NamespaceContext</code> for resolving namespace
- * prefixes to namespace URIs for evaluating the XPath expression.
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath expression.
+ * @param nsContext The <code>NamespaceContext</code> for resolving namespace
+ * prefixes to namespace URIs for evaluating the XPath
+ * expression.
+ * @param exp The XPath expression to evaluate.
* @return An iterator over the resulting nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
private static NodeIterator selectNodeIterator(
- Node contextNode,
- NamespaceContext nsContext,
- String exp)
- throws XPathException {
+ Node contextNode,
+ NamespaceContext nsContext,
+ String exp)
+ throws XPathException {
try {
- DOMXPath xpath = new DOMXPath(exp);
+ final DOMXPath xpath = new DOMXPath(exp);
List nodes;
xpath.setNamespaceContext(nsContext);
nodes = xpath.selectNodes(contextNode);
return new NodeIteratorAdapter(nodes.listIterator());
- } catch (JaxenException e) {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { exp });
+ } catch (final JaxenException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] { exp });
throw new XPathException(message, e);
}
}
@@ -199,18 +196,17 @@ public class XPathUtils {
/**
* Return a <code>NodeList</code> of all the nodes matching the XPath
* expression.
- *
+ *
* All namespace URIs and prefixes declared in the <code>Constants</code>
* interface are used for resolving namespaces.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath expression.
+ * @param exp The XPath expression to evaluate.
* @return A <code>NodeList</code> containing the matching nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static NodeList selectNodeList(Node contextNode, String exp)
- throws XPathException {
+ throws XPathException {
return selectNodeList(contextNode, NS_CONTEXT, exp);
}
@@ -218,29 +214,29 @@ public class XPathUtils {
/**
* Return a <code>NodeList</code> of all the nodes matching the XPath
* expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param namespaceElement An element from which to build the
- * namespace mapping for evaluating the XPath expression
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath
+ * expression.
+ * @param namespaceElement An element from which to build the namespace mapping
+ * for evaluating the XPath expression
+ * @param exp The XPath expression to evaluate.
* @return A <code>NodeList</code> containing the matching nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static NodeList selectNodeList(
- Node contextNode,
- Element namespaceElement,
- String exp)
- throws XPathException {
+ Node contextNode,
+ Element namespaceElement,
+ String exp)
+ throws XPathException {
try {
- SimpleNamespaceContext ctx = new SimpleNamespaceContext();
+ final SimpleNamespaceContext ctx = new SimpleNamespaceContext();
ctx.addElementNamespaces(documentNavigator, namespaceElement);
return selectNodeList(contextNode, ctx, exp);
- } catch (JaxenException e) {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { exp });
+ } catch (final JaxenException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] { exp });
throw new XPathException(message, e);
}
}
@@ -248,23 +244,23 @@ public class XPathUtils {
/**
* Return a <code>NodeList</code> of all the nodes matching the XPath
* expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
+ *
+ * @param contextNode The root node from which to evaluate the XPath
+ * expression.
* @param namespaceMapping A namespace prefix to namespace URI mapping
- * (<code>String</code> to <code>String</code>) for evaluating the XPath
- * expression.
- * @param exp The XPath expression to evaluate.
+ * (<code>String</code> to <code>String</code>) for
+ * evaluating the XPath expression.
+ * @param exp The XPath expression to evaluate.
* @return A <code>NodeList</code> containing the matching nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static NodeList selectNodeList(
- Node contextNode,
- Map namespaceMapping,
- String exp)
- throws XPathException {
+ Node contextNode,
+ Map namespaceMapping,
+ String exp)
+ throws XPathException {
- SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping);
+ final SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping);
return selectNodeList(contextNode, ctx, exp);
}
@@ -272,133 +268,132 @@ public class XPathUtils {
/**
* Return a <code>NodeList</code> of all the nodes matching the XPath
* expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param nsContext The <code>NamespaceContext</code> for resolving namespace
- * prefixes to namespace URIs for evaluating the XPath expression.
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath expression.
+ * @param nsContext The <code>NamespaceContext</code> for resolving namespace
+ * prefixes to namespace URIs for evaluating the XPath
+ * expression.
+ * @param exp The XPath expression to evaluate.
* @return A <code>NodeList</code> containing the matching nodes.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
private static NodeList selectNodeList(
- Node contextNode,
- NamespaceContext nsContext,
- String exp)
- throws XPathException {
+ Node contextNode,
+ NamespaceContext nsContext,
+ String exp)
+ throws XPathException {
try {
- DOMXPath xpath = new DOMXPath(exp);
+ final DOMXPath xpath = new DOMXPath(exp);
List nodes;
xpath.setNamespaceContext(nsContext);
nodes = xpath.selectNodes(contextNode);
return new NodeListAdapter(nodes);
- } catch (JaxenException e) {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { exp });
+ } catch (final JaxenException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] { exp });
throw new XPathException(message, e);
}
}
/**
* Select the first node matching an XPath expression.
- *
+ *
* All namespace URIs and prefixes declared in the <code>Constants</code>
* interface are used for resolving namespaces.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath expression.
+ * @param exp The XPath expression to evaluate.
* @return Node The first node matching the XPath expression, or
- * <code>null</code>, if no node matched.
+ * <code>null</code>, if no node matched.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static Node selectSingleNode(Node contextNode, String exp)
- throws XPathException {
+ throws XPathException {
return selectSingleNode(contextNode, NS_CONTEXT, exp);
}
/**
* Select the first node matching an XPath expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param namespaceElement An element from which to build the
- * namespace mapping for evaluating the XPath expression
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath
+ * expression.
+ * @param namespaceElement An element from which to build the namespace mapping
+ * for evaluating the XPath expression
+ * @param exp The XPath expression to evaluate.
* @return Node The first node matching the XPath expression, or
- * <code>null</code>, if no node matched.
+ * <code>null</code>, if no node matched.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static Node selectSingleNode(
- Node contextNode,
- Element namespaceElement,
- String exp)
- throws XPathException {
+ Node contextNode,
+ Element namespaceElement,
+ String exp)
+ throws XPathException {
try {
- SimpleNamespaceContext ctx = new SimpleNamespaceContext();
+ final SimpleNamespaceContext ctx = new SimpleNamespaceContext();
ctx.addElementNamespaces(documentNavigator, namespaceElement);
return selectSingleNode(contextNode, ctx, exp);
- } catch (JaxenException e) {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { exp });
+ } catch (final JaxenException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] { exp });
throw new XPathException(message, e);
}
}
/**
* Select the first node matching an XPath expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
+ *
+ * @param contextNode The root node from which to evaluate the XPath
+ * expression.
* @param namespaceMapping A namespace prefix to namespace URI mapping
- * (<code>String</code> to <code>String</code>) for evaluating the XPath
- * expression.
- * @param exp The XPath expression to evaluate.
+ * (<code>String</code> to <code>String</code>) for
+ * evaluating the XPath expression.
+ * @param exp The XPath expression to evaluate.
* @return Node The first node matching the XPath expression, or
- * <code>null</code>, if no node matched.
+ * <code>null</code>, if no node matched.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static Node selectSingleNode(
- Node contextNode,
- Map namespaceMapping,
- String exp)
- throws XPathException {
+ Node contextNode,
+ Map namespaceMapping,
+ String exp)
+ throws XPathException {
- SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping);
+ final SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping);
return selectSingleNode(contextNode, ctx, exp);
}
/**
* Select the first node matching an XPath expression.
- *
- * @param contextNode The root node from which to evaluate the XPath
- * expression.
- * @param nsContext The <code>NamespaceContext</code> for resolving namespace
- * prefixes to namespace URIs for evaluating the XPath expression.
- * @param exp The XPath expression to evaluate.
+ *
+ * @param contextNode The root node from which to evaluate the XPath expression.
+ * @param nsContext The <code>NamespaceContext</code> for resolving namespace
+ * prefixes to namespace URIs for evaluating the XPath
+ * expression.
+ * @param exp The XPath expression to evaluate.
* @return Node The first node matching the XPath expression, or
- * <code>null</code>, if no node matched.
+ * <code>null</code>, if no node matched.
* @throws XPathException An error occurred evaluating the XPath expression.
*/
public static Node selectSingleNode(
- Node contextNode,
- NamespaceContext nsContext,
- String exp)
- throws XPathException {
+ Node contextNode,
+ NamespaceContext nsContext,
+ String exp)
+ throws XPathException {
try {
- DOMXPath xpath = new DOMXPath(exp);
+ final DOMXPath xpath = new DOMXPath(exp);
xpath.setNamespaceContext(nsContext);
return (Node) xpath.selectSingleNode(contextNode);
- } catch (JaxenException e) {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { exp });
+ } catch (final JaxenException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] { exp });
throw new XPathException(message, e);
}
}
@@ -406,140 +401,137 @@ public class XPathUtils {
/**
* Return the value of a DOM element whose location is given by an XPath
* expression.
- *
- * @param root The root element from which to evaluate the XPath.
- * @param xpath The XPath expression pointing to the element whose value
- * to return.
- * @param def The default value to return, if no element can be found using
- * the given <code>xpath</code>.
- * @return The element value, if it can be located using the
- * <code>xpath</code>. Otherwise, <code>def</code> is returned.
+ *
+ * @param root The root element from which to evaluate the XPath.
+ * @param xpath The XPath expression pointing to the element whose value to
+ * return.
+ * @param def The default value to return, if no element can be found using
+ * the given <code>xpath</code>.
+ * @return The element value, if it can be located using the <code>xpath</code>.
+ * Otherwise, <code>def</code> is returned.
*/
public static String getElementValue(
- Element root,
- String xpath,
- String def) {
+ Element root,
+ String xpath,
+ String def) {
- Element elem = (Element) XPathUtils.selectSingleNode(root, xpath);
+ final Element elem = (Element) XPathUtils.selectSingleNode(root, xpath);
return elem != null ? DOMUtils.getText(elem) : def;
}
/**
* Return the value of a DOM attribute whose location is given by an XPath
* expression.
- *
- * @param root The root element from which to evaluate the XPath.
+ *
+ * @param root The root element from which to evaluate the XPath.
* @param xpath The XPath expression pointing to the attribute whose value to
- * return.
- * @param def The default value to return, if no attribute can be found using
- * the given <code>xpath</code>.
- * @return The element value, if it can be located using the
- * <code>xpath</code>. Otherwise, <code>def</code> is returned.
+ * return.
+ * @param def The default value to return, if no attribute can be found using
+ * the given <code>xpath</code>.
+ * @return The element value, if it can be located using the <code>xpath</code>.
+ * Otherwise, <code>def</code> is returned.
*/
public static String getAttributeValue(
- Element root,
- String xpath,
- String def) {
+ Element root,
+ String xpath,
+ String def) {
- Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath);
+ final Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath);
return attr != null ? attr.getValue() : def;
}
-
+
/**
- * Returns the namespace prefix used within <code>XPathUtils</code> for referring to
- * the namespace of the specified (Security Layer command) element.
+ * Returns the namespace prefix used within <code>XPathUtils</code> for
+ * referring to the namespace of the specified (Security Layer command) element.
+ *
+ * This namespace prefix can be used in various XPath expression evaluation
+ * methods within <code> XPathUtils</code> without explicitely binding it to the
+ * particular namespace.
+ *
+ * @param contextElement The (Security Layer command) element.
*
- * This namespace prefix can be used in various XPath expression evaluation methods
- * within <code> XPathUtils</code> without explicitely binding it to the particular
- * namespace.
- *
- * @param contextElement The (Security Layer command) element.
- *
- * @return the namespace prefix used within <code>XPathUtils</code> for referring to
- * the namespace of the specified (Security Layer command) element.
- *
- * throws XpathException If the specified element has a namespace other than the ones
- * known by this implementation as valid Security Layer namespaces (cf.
- * @link Constants#SL10_NS_URI, @link Constants#SL11_NS_URI, @link Constants#SL12_NS_URI).
+ * @return the namespace prefix used within <code>XPathUtils</code> for
+ * referring to the namespace of the specified (Security Layer command)
+ * element.
+ *
+ * throws XpathException If the specified element has a namespace other
+ * than the ones known by this implementation as valid Security Layer
+ * namespaces (cf.
+ * @link Constants#SL10_NS_URI, @link Constants#SL11_NS_URI, @link
+ * Constants#SL12_NS_URI).
*/
- public static String getSlPrefix (Element contextElement) throws XPathException
- {
- String sLNamespace = contextElement.getNamespaceURI();
+ public static String getSlPrefix(Element contextElement) throws XPathException {
+ final String sLNamespace = contextElement.getNamespaceURI();
String sLPrefix = null;
- if (sLNamespace.equals(Constants.SL10_NS_URI))
- {
+ if (sLNamespace.equals(Constants.SL10_NS_URI)) {
sLPrefix = Constants.SL10_PREFIX;
- }
- else if (sLNamespace.equals(Constants.SL12_NS_URI))
- {
+ } else if (sLNamespace.equals(Constants.SL12_NS_URI)) {
sLPrefix = Constants.SL12_PREFIX;
- }
- else if (sLNamespace.equals(Constants.SL11_NS_URI))
- {
+ } else if (sLNamespace.equals(Constants.SL11_NS_URI)) {
sLPrefix = Constants.SL11_PREFIX;
- }
- else
- {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { "Ung�ltiger Security Layer Namespace: \"" + sLNamespace + "\"."});
+ } else {
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] {
+ "Ung�ltiger Security Layer Namespace: \"" + sLNamespace + "\"." });
throw new XPathException(message, null);
}
-
+
return sLPrefix;
}
-
-
+
/**
- * Return the SecurityLayer namespace prefix of the context element.
- * If the context element is not the element that lies within the
- * SecurityLayer namespace. The Securitylayer namespace is derived from
- * the <code>xmlns:sl10</code>, <code>sl11</code> or <code>sl</code>
- * attribute of the context element.
- *
+ * Return the SecurityLayer namespace prefix of the context element. If the
+ * context element is not the element that lies within the SecurityLayer
+ * namespace. The Securitylayer namespace is derived from the
+ * <code>xmlns:sl10</code>, <code>sl11</code> or <code>sl</code> attribute of
+ * the context element.
+ *
* The returned prefix is needed for evaluating XPATH expressions.
+ *
+ * @param contextElement The element to get a prefix for the Securitylayer
+ * namespace, that is used within the corresponding
+ * document.
*
- * @param contextElement The element to get a prefix for the Securitylayer namespace,
- * that is used within the corresponding document.
- *
- * @return The string <code>sl10</code>, <code>sl11</code> or <code>sl</code>,
- * depending on the SecurityLayer namespace of the contextElement.
- *
- * throws XPathException If no (vlalid) SecurityLayer namespace prefix or namespace
- * is defined.
+ * @return The string <code>sl10</code>, <code>sl11</code> or <code>sl</code>,
+ * depending on the SecurityLayer namespace of the contextElement.
+ *
+ * throws XPathException If no (vlalid) SecurityLayer namespace prefix
+ * or namespace is defined.
*/
- public static String getSlPrefixFromNoRoot (Element contextElement) throws XPathException {
-
+ public static String getSlPrefixFromNoRoot(Element contextElement) throws XPathException {
+
String slPrefix = checkSLnsDeclaration(contextElement, Constants.SL10_PREFIX, Constants.SL10_NS_URI);
if (slPrefix == null) {
slPrefix = checkSLnsDeclaration(contextElement, Constants.SL11_PREFIX, Constants.SL11_NS_URI);
}
if (slPrefix == null) {
slPrefix = checkSLnsDeclaration(contextElement, Constants.SL12_PREFIX, Constants.SL12_NS_URI);
- }
-
+ }
+
return slPrefix;
-
+
}
-
+
/**
- * Checks if the context element has an attribute <code>xmlns:slPrefix</code> and
- * if the prefix of that attribute corresponds with a valid SecurityLayer namespace.
+ * Checks if the context element has an attribute <code>xmlns:slPrefix</code>
+ * and if the prefix of that attribute corresponds with a valid SecurityLayer
+ * namespace.
+ *
+ * @param contextElement The element to be checked.
+ * @param slPrefix The prefix which should be checked. Must be a valid
+ * SecurityLayer namespace prefix.
+ * @param slNameSpace The SecurityLayer namespace that corresponds to the
+ * specified prefix.
*
- * @param contextElement The element to be checked.
- * @param slPrefix The prefix which should be checked. Must be a valid SecurityLayer
- * namespace prefix.
- * @param slNameSpace The SecurityLayer namespace that corresponds to the specified prefix.
- *
- * @return The valid SecurityLayer prefix or <code>null</code> if this prefix is
- * not used.
+ * @return The valid SecurityLayer prefix or <code>null</code> if this prefix is
+ * not used.
* @throws XPathException
*/
private static String checkSLnsDeclaration(Element contextElement, String slPrefix, String slNameSpace)
- throws XPathException
- {
- String nsAtt = "xmlns:" + slPrefix;
- String nameSpace = contextElement.getAttribute(nsAtt);
+ throws XPathException {
+ final String nsAtt = "xmlns:" + slPrefix;
+ final String nameSpace = contextElement.getAttribute(nsAtt);
if (nameSpace == "") {
return null;
} else {
@@ -547,8 +539,9 @@ public class XPathUtils {
if (nameSpace.equals(slNameSpace)) {
return slPrefix;
} else {
- MessageProvider msg = MessageProvider.getInstance();
- String message = msg.getMessage("xpath.00", new Object[] { "Ung�ltiger SecurityLayer Namespace: \"" + nameSpace + "\"."});
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String message = msg.getMessage("xpath.00", new Object[] {
+ "Ung�ltiger SecurityLayer Namespace: \"" + nameSpace + "\"." });
throw new XPathException(message, null);
}
}
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java
index 27169b4..5960fce 100644
--- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java
+++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/ex/EgovUtilException.java
@@ -1,13 +1,13 @@
/*
* Copyright 2011 Federal Chancellery Austria and
* Graz University of Technology
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -18,24 +18,24 @@ package at.gv.egovernment.moaspss.util.ex;
public class EgovUtilException extends Exception {
- /**
- *
+ /**
+ *
*/
private static final long serialVersionUID = 1L;
- public EgovUtilException() {
- }
+ public EgovUtilException() {
+ }
- public EgovUtilException(String message) {
- super(message);
- }
+ public EgovUtilException(String message) {
+ super(message);
+ }
- public EgovUtilException(Throwable cause) {
- super(cause);
- }
+ public EgovUtilException(Throwable cause) {
+ super(cause);
+ }
- public EgovUtilException(String message, Throwable cause) {
- super(message, cause);
- }
+ public EgovUtilException(String message, Throwable cause) {
+ super(message, cause);
+ }
}
diff --git a/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd b/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd
new file mode 100644
index 0000000..f23ee96
--- /dev/null
+++ b/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd
@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet -->
+<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" targetNamespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.006">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/>
+ <xs:annotation>
+ <xs:documentation>This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups</xs:documentation>
+ </xs:annotation>
+ <!-- ### structure for person data ### -->
+ <xs:element name="Person" type="p:AbstractPersonType" abstract="true"/>
+ <!-- ### structure of a person with Identification ### -->
+ <xs:element name="PersonAndIdentification" type="p:PersonAndIdentificationType">
+ <xs:annotation>
+ <xs:documentation>element of person details type</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <!-- ### structure of a person with address### -->
+ <xs:element name="PersonAndAddress" type="p:PersonAndAddressType">
+ <xs:annotation>
+ <xs:documentation>element of signed person datastructure type</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <!-- ### physical person, corporate body and authority ### -->
+ <xs:element name="PhysicalPerson" type="p:PhysicalPersonType" substitutionGroup="p:Person">
+ <xs:annotation>
+ <xs:documentation>element of physical person type, dreived from Person </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CorporateBody" type="p:CorporateBodyType" substitutionGroup="p:Person">
+ <xs:annotation>
+ <xs:documentation>element of corporate body type, derived from Person</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Name" type="p:PersonNameType">
+ <xs:annotation>
+ <xs:documentation>data related to the person's name</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FullName" type="xs:token">
+ <xs:annotation>
+ <xs:documentation>name of corporate body (whole name), compare VollerName</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Organization" type="xs:token">
+ <xs:annotation>
+ <xs:documentation>part of an organisation, see also X.500 ou (eg departement, section, branch, ...) , compare Organisation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Target" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>Beinhaltet die Bereichskennung und entweder das VKZ oder den Service-Identifier der Zielorganisation für die das vbPK-ZU umzuschlüsseln ist. Das Target ist in der Form "urn:publicid:gv.at:ecdid+«VKZ od. Service-ID»+«Bereich»" zu liefern. (vgl. SZR 3.0 Anwendungsdokumentation)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DateOfBirth" type="xs:date">
+ <xs:annotation>
+ <xs:documentation>date of birth, compare Geburtsdatum</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <!-- ### adress data for various types of communications ### -->
+ <xs:element name="Address" type="p:AbstractAddressType" abstract="true"/>
+ <xs:element name="PostalAddress" type="p:PostalAddressType" substitutionGroup="p:Address">
+ <xs:annotation>
+ <xs:documentation>Postal or ZMR Address, compare PostAdresse</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InternetAddress" type="p:InternetAddressType" substitutionGroup="p:Address">
+ <xs:annotation>
+ <xs:documentation>element of internet address type</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TelephoneAddress" type="p:TelephoneAddressType" substitutionGroup="p:Address">
+ <xs:annotation>
+ <xs:documentation>element of TelephoneAddressType, compare TelefonAdresse</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <!-- ### Identification elements ###-->
+ <xs:element name="Identification" type="p:IdentificationType">
+ <xs:annotation>
+ <xs:documentation>unique identifier</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="IdentificationType">
+ <xs:annotation>
+ <xs:documentation>unique identifier</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Value">
+ <xs:annotation>
+ <xs:documentation>actual value of the identifier.</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Type" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>type of value (eg 'ZMR', 'SV-Nummer', 'Martrikelnummer', database identification, ...)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!--### Complex types ###-->
+ <xs:complexType name="PersonAndIdentificationType">
+ <xs:annotation>
+ <xs:documentation>person datastructure. The first Identification elements (from the base type) denote the record as such (e.g. database key for this record) - not to be mistaken for identifiers of the person or of an address (they have their own Identification elements).</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="p:Identification"/>
+ <xs:element ref="p:Person"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="PersonAndAddressType">
+ <xs:annotation>
+ <xs:documentation>signed person datastructure. The first Identification elements (from the base type) denote the record as such (e.g. database key for this record) - not to be mistaken for identifiers of the person or of an address (they have their own Identification elements).</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="p:Identification"/>
+ <xs:element ref="p:Person"/>
+ <xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="AbstractPersonType" abstract="true">
+ <xs:annotation>
+ <xs:documentation>main structure of person data</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="PhysicalPersonType">
+ <xs:annotation>
+ <xs:documentation>physical person</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="p:AbstractPersonType">
+ <xs:sequence>
+ <xs:element ref="p:Name"/>
+ <xs:element ref="p:DateOfBirth" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="PersonNameType">
+ <xs:sequence>
+ <xs:element name="GivenName" type="xs:string"/>
+ <xs:element name="FamilyName">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="primary" default="undefined">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ <xs:enumeration value="undefined"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="prefix" type="xs:string"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Affix" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Inlcudes all Information that is not exactly a name: academic or aristocratic titles, ... the new position attribute can contain a suffx or prefix value</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="type" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="academicGrade"/>
+ <xs:enumeration value="aristocraticPrefix"/>
+ <xs:enumeration value="aristocraticTitle"/>
+ <xs:enumeration value="familyNamePrefix"/>
+ <xs:enumeration value="familyNameSuffix"/>
+ <xs:enumeration value="formOfAddress"/>
+ <xs:enumeration value="generation"/>
+ <xs:enumeration value="qualification"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="position" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="prefix"/>
+ <xs:enumeration value="suffix"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="AuthorityType">
+ <xs:annotation>
+ <xs:documentation>public authority</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="p:AbstractPersonType">
+ <xs:sequence>
+ <xs:element ref="p:FullName"/>
+ <xs:element ref="p:Organization" minOccurs="0"/>
+ <xs:element ref="p:Target" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="CorporateBodyType">
+ <xs:annotation>
+ <xs:documentation>juridical person, organisation</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="p:AbstractPersonType">
+ <xs:sequence>
+ <xs:element ref="p:FullName"/>
+ <xs:element ref="p:Organization" minOccurs="0"/>
+ <xs:element ref="p:Target" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="AbstractAddressType">
+ <xs:annotation>
+ <xs:documentation>main structure of address data </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="PostalAddressType">
+ <xs:complexContent>
+ <xs:extension base="p:AbstractAddressType">
+ <xs:sequence>
+ <xs:element name="CountryCode" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Code for the country, use ISO or internatinal Postalstandard, compare Staatscode</xs:documentation>
+ </xs:annotation>
+ <!-- xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Z]{2}"/>
+ </xs:restriction>
+ </xs:simpleType -->
+ </xs:element>
+ <xs:element name="PostalCode" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>ZIP, compare Postleitzahl</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Municipality" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>compare Gemeinde</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MunicipalityNumber" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>compare Gemeindekennzahl</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DeliveryAddress">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="StreetName" type="xs:string"/>
+ <xs:element name="BuildingNumber" type="xs:string"/>
+ <xs:element name="Unit" type="xs:string" minOccurs="0"/>
+ <xs:element name="DoorNumber" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="type" default="undefined">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="postOfficeBoxAddress"/>
+ <xs:enumeration value="streetAddress"/>
+ <xs:enumeration value="militaryAddress"/>
+ <xs:enumeration value="undefined"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="InternetAddressType">
+ <xs:annotation>
+ <xs:documentation>internet based communication</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="p:AbstractAddressType">
+ <xs:sequence>
+ <xs:element name="Address" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>URI: email-Address, Web, FTP, LDAP, ..., comapre Adress</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="TelephoneAddressType">
+ <xs:annotation>
+ <xs:documentation>phone numbers</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="p:AbstractAddressType">
+ <xs:sequence>
+ <xs:element name="Number" type="xs:token">
+ <xs:annotation>
+ <xs:documentation>phonenumber</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="MessengerService" type="xs:token" use="optional" default="SMS">
+ <xs:annotation>
+ <xs:documentation>SMS, WhatsApp, etc.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <!-- ### strings of defined maximum lenght for use with ZMR address #### -->
+ <xs:simpleType name="string3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="string100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="integer5">
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="10000"/>
+ <xs:maxInclusive value="99999"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
diff --git a/moaSig/common/src/test/java/console/SchemaValidationTest.java b/moaSig/common/src/test/java/console/SchemaValidationTest.java
new file mode 100644
index 0000000..db3041b
--- /dev/null
+++ b/moaSig/common/src/test/java/console/SchemaValidationTest.java
@@ -0,0 +1,52 @@
+package console;
+
+import java.io.InputStream;
+
+import org.w3c.dom.Element;
+
+import at.gv.egovernment.moaspss.util.DOMUtils;
+
+public class SchemaValidationTest {
+
+ public static final String SCHEMA_ROOT = "/config/zuseSchema";
+
+ public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
+ public static final String XML_SCHEMA_LOCATION = SCHEMA_ROOT + "xml.xsd";
+
+ public static final String XSI_NS_URI = "http://www.w3.org/2001/XMLSchema-instance";
+ public static final String XSI_SCHEMA_LOCATION = SCHEMA_ROOT + "XMLSchema-instance.xsd";
+
+ public static final String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#";
+ public static final String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd";
+
+ public static final String eDELIVERY_PERSON_20 = "http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#";
+ public static final String eDELIVERY_PERSON_20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_mypersondata_en_p2.xsd";
+
+ private static final String ZUSE_SCHEMAS =
+ (XML_NS_URI + " " + XML_SCHEMA_LOCATION + " ")
+ + (XSI_NS_URI + " " + XSI_SCHEMA_LOCATION + " ")
+ + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION + " ")
+ + (eDELIVERY_PERSON_20 + " " + eDELIVERY_PERSON_20_SCHEMA_LOCATION);
+
+ /**
+ * Simple test.
+ *
+ * @param args not used yet
+ * @throws Exception in case of an error
+ */
+ public static void main(String[] args) throws Exception {
+
+ InputStream is = SchemaValidationTest.class.getResourceAsStream("/zuse/msg.xml");
+
+
+ Element result = DOMUtils.parseXmlValidating(is);
+
+// Document result = DOMUtils.parseDocument(is,
+// true, ZUSE_SCHEMAS, null, new MOASPSSEntityResolver(), new MOAErrorHandler());
+
+
+ System.out.print(DOMUtils.serializeNode(result));
+
+ }
+
+}
diff --git a/moaSig/common/src/test/resources/zuse/msg.xml b/moaSig/common/src/test/resources/zuse/msg.xml
new file mode 100644
index 0000000..200950a
--- /dev/null
+++ b/moaSig/common/src/test/resources/zuse/msg.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?><ns2:DeliveryRequest xmlns="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" xmlns:ns2="http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#">
+ <ns2:Receiver>
+ <Identification>
+ <Value>urn:publicid:gv.at:ecdid+ZUSETNVZ+ZU</Value>
+ </Identification>
+ </ns2:Receiver>
+</ns2:DeliveryRequest>
diff --git a/moaSig/gradle/wrapper/gradle-wrapper.jar b/moaSig/gradle/wrapper/gradle-wrapper.jar
index 5c2d1cf..75ae3ac 100644
--- a/moaSig/gradle/wrapper/gradle-wrapper.jar
+++ b/moaSig/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/moaSig/gradle/wrapper/gradle-wrapper.properties b/moaSig/gradle/wrapper/gradle-wrapper.properties
index 5028f28..e6fc1b1 100644
--- a/moaSig/gradle/wrapper/gradle-wrapper.properties
+++ b/moaSig/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
-zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
diff --git a/moaSig/gradlew b/moaSig/gradlew
index 83f2acf..cccdd3d 100755
--- a/moaSig/gradlew
+++ b/moaSig/gradlew
@@ -1,21 +1,5 @@
#!/usr/bin/env sh
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
##############################################################################
##
## Gradle start up script for UN*X
@@ -44,7 +28,7 @@ APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -125,8 +109,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
diff --git a/moaSig/gradlew.bat b/moaSig/gradlew.bat
index 24467a1..e95643d 100644
--- a/moaSig/gradlew.bat
+++ b/moaSig/gradlew.bat
@@ -1,19 +1,3 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@@ -30,7 +14,7 @@ set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
diff --git a/moaSig/libs/iaik_jce_full_signed-5.61_MOA.jar b/moaSig/libs/iaik_jce_full-5.62_moa.jar
index 78b79e9..382593e 100644
--- a/moaSig/libs/iaik_jce_full_signed-5.61_MOA.jar
+++ b/moaSig/libs/iaik_jce_full-5.62_moa.jar
Binary files differ
diff --git a/moaSig/libs/iaik_moa-2.06.jar b/moaSig/libs/iaik_moa-2.07.jar
index edc2d0f..b3436ef 100644
--- a/moaSig/libs/iaik_moa-2.06.jar
+++ b/moaSig/libs/iaik_moa-2.07.jar
Binary files differ
diff --git a/moaSig/libs/iaik_pki_module-2.01_moa.jar b/moaSig/libs/iaik_pki_module-2.02_moa.jar
index 9d59aef..b7979e5 100644
--- a/moaSig/libs/iaik_pki_module-2.01_moa.jar
+++ b/moaSig/libs/iaik_pki_module-2.02_moa.jar
Binary files differ
diff --git a/moaSig/libs/pdfbox-2.0.13.jar b/moaSig/libs/pdfbox-2.0.13.jar
deleted file mode 100644
index 8bee5ed..0000000
--- a/moaSig/libs/pdfbox-2.0.13.jar
+++ /dev/null
Binary files differ
diff --git a/moaSig/libs/pdfbox-app-2.0.9.jar b/moaSig/libs/pdfbox-app-2.0.9.jar
deleted file mode 100644
index 5dea7ce..0000000
--- a/moaSig/libs/pdfbox-app-2.0.9.jar
+++ /dev/null
Binary files differ
diff --git a/moaSig/libs/pdfbox-tools-2.0.13.jar b/moaSig/libs/pdfbox-tools-2.0.13.jar
deleted file mode 100644
index a268094..0000000
--- a/moaSig/libs/pdfbox-tools-2.0.13.jar
+++ /dev/null
Binary files differ
diff --git a/moaSig/libs/preflight-2.0.13.jar b/moaSig/libs/preflight-2.0.13.jar
deleted file mode 100644
index c8ae0c9..0000000
--- a/moaSig/libs/preflight-2.0.13.jar
+++ /dev/null
Binary files differ
diff --git a/moaSig/libs/preflight-app-2.0.13.jar b/moaSig/libs/preflight-app-2.0.13.jar
deleted file mode 100644
index 56aad3e..0000000
--- a/moaSig/libs/preflight-app-2.0.13.jar
+++ /dev/null
Binary files differ
diff --git a/moaSig/libs/tsl-lib-2.0.3.jar b/moaSig/libs/tsl-lib-2.0.3.jar
deleted file mode 100644
index e1321ac..0000000
--- a/moaSig/libs/tsl-lib-2.0.3.jar
+++ /dev/null
Binary files differ
diff --git a/moaSig/moa-asic/build.gradle b/moaSig/moa-asic/build.gradle
index f8a536d..3ef15cb 100644
--- a/moaSig/moa-asic/build.gradle
+++ b/moaSig/moa-asic/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'java-library-distribution'
distributions {
main{
- baseName = 'MOA-ASIC'
+ distributionBaseName = 'MOA-ASIC'
}
}
@@ -11,12 +11,14 @@ configurations {
}
dependencies {
+ jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.11'
- jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.4-1'
+ implementation project(':common')
+ implementation project(':moa-sig-lib')
+ implementation 'org.slf4j:slf4j-log4j12:1.7.30'
+ api group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
+ api group: 'javax.xml.ws', name: 'jaxws-api', version: '2.3.1'
- compile project(':common')
- compile project(':moa-sig-lib')
- compile 'org.slf4j:slf4j-log4j12:1.7.30'
}
sourceSets {
@@ -49,8 +51,8 @@ task jaxb () {
}
task releases(type: Copy) {
- from jar.outputs
- from distZip.outputs
+ //from jar.outputs
+ //from distZip.outputs
from distTar.outputs
into rootDir.toString() + "/releases/" + version
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java
index 759e910..d8bf4d9 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiC.java
@@ -4,11 +4,15 @@ import java.util.Collection;
import java.util.List;
public interface ASiC {
- public ASiCFormat getFormat();
- public boolean isXAdES();
- public boolean isCAdES();
+ ASiCFormat getFormat();
- public List<ASiCEntry> getSignaturesEntries();
- public Collection<ASiCEntry> getDataEntries();
- public List<ASiCEntry> getInformationEntries();
+ boolean isXAdES();
+
+ boolean isCAdES();
+
+ List<ASiCEntry> getSignaturesEntries();
+
+ Collection<ASiCEntry> getDataEntries();
+
+ List<ASiCEntry> getInformationEntries();
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java
index 02baf40..b987346 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCConstants.java
@@ -4,6 +4,6 @@ package at.gv.egiz.asic.api;
* Created by afitzek on 6/15/16.
*/
public interface ASiCConstants {
- public static final String FILE_MIME_TYPE = "mimetype";
- public static final String FILE_META_INF = "META-INF/";
+ String FILE_MIME_TYPE = "mimetype";
+ String FILE_META_INF = "META-INF/";
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java
index 7c026cf..f0a9edd 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCEntry.java
@@ -7,32 +7,32 @@ import java.io.InputStream;
*/
public class ASiCEntry {
- private String entryName;
- private InputStream contents;
-
- public ASiCEntry() {
- }
-
- public String getEntryName() {
- return entryName;
- }
-
- public void setEntryName(String entryName) {
- this.entryName = entryName;
- }
-
- public InputStream getContents() {
- return contents;
- }
-
- public void setContents(InputStream contents) {
- this.contents = contents;
- }
-
- @Override
- public String toString() {
- return "ASiCEntry{" +
- "entryName='" + entryName + '\'' +
- '}';
- }
+ private String entryName;
+ private InputStream contents;
+
+ public ASiCEntry() {
+ }
+
+ public String getEntryName() {
+ return entryName;
+ }
+
+ public void setEntryName(String entryName) {
+ this.entryName = entryName;
+ }
+
+ public InputStream getContents() {
+ return contents;
+ }
+
+ public void setContents(InputStream contents) {
+ this.contents = contents;
+ }
+
+ @Override
+ public String toString() {
+ return "ASiCEntry{" +
+ "entryName='" + entryName + '\'' +
+ '}';
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java
index 661e418..ccab9a4 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFactory.java
@@ -1,16 +1,5 @@
package at.gv.egiz.asic.api;
-import at.gv.egiz.asic.exceptions.ASiCException;
-import at.gv.egiz.asic.impl.ASiCBaseFormatFactory;
-import at.gv.egiz.asic.impl.ASiCExtendedFormatFactory;
-import at.gv.egiz.asic.impl.ASiCSimpleFormatFactory;
-import at.gv.egiz.asic.impl.ZipCommentReaderStream;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.MOAException;
-import org.apache.commons.io.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -18,147 +7,158 @@ import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.asic.impl.ASiCBaseFormatFactory;
+import at.gv.egiz.asic.impl.ASiCExtendedFormatFactory;
+import at.gv.egiz.asic.impl.ASiCSimpleFormatFactory;
+import at.gv.egiz.asic.impl.ZipCommentReaderStream;
+import at.gv.egovernment.moa.spss.MOAApplicationException;
+import at.gv.egovernment.moa.spss.MOAException;
+
/**
* Created by afitzek on 6/15/16.
*/
public class ASiCFactory {
- private static final Logger logger = LoggerFactory.getLogger(ASiCFactory.class);
-
- private static final String MIMETYPE_FORMAT_E = "application/vnd.etsi.asic-e+zip";
- private static final String MIMETYPE_FORMAT_S = "application/vnd.etsi.asic-s+zip";
-
- public static ASiC parseASiC(InputStream is, ASiCFormat format) throws MOAException {
-
- InputStream newInputStream = is;
-
-
- // Try to determine the asic format!
- if (!newInputStream.markSupported()) {
- ByteArrayOutputStream asicContainer = new ByteArrayOutputStream();
-
- try {
- IOUtils.copy(newInputStream, asicContainer);
- } catch (IOException e) {
- throw new MOAApplicationException("asic.0003", null);
- }
- newInputStream = new ByteArrayInputStream(asicContainer.toByteArray());
- }
-
- String mimeTypeFile = null;
- ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(newInputStream);
- byte[] buffer = new byte[8096];
- try {
- while (commentReaderStream.read(buffer) >= 0) {
- }
- newInputStream.reset();
- } catch (IOException e) {
- throw new MOAApplicationException("asic.0003", null);
- }
-
- ZipInputStream zipInputStream = new ZipInputStream(newInputStream);
-
- try {
- for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream.getNextEntry()) {
- String entryName = entry.getName();
-
- if("mimetype".equalsIgnoreCase(entryName)) {
- if(mimeTypeFile == null) {
- mimeTypeFile = IOUtils.toString(zipInputStream, "UTF-8");
- } else {
- logger.warn("multiple mimetype files found in archiv");
- }
- }
- }
- newInputStream.reset();
- } catch (IOException e) {
- throw new MOAApplicationException("asic.0007", null);
- }
-
- String fileComment = commentReaderStream.getFileComment();
- ASiCFormat fileCommentFormat = null;
- if (fileComment != null) {
- logger.debug("Found file comment in ASiC {}", fileComment);
- if(fileComment.startsWith("mimetype=")) {
- String fileCommentMimeType = fileComment.substring("mimetype=".length());
- if(fileCommentMimeType.startsWith(MIMETYPE_FORMAT_E)) {
- fileCommentFormat = ASiCFormat.ASiCE;
- } else if(fileCommentMimeType.startsWith(MIMETYPE_FORMAT_S)) {
- fileCommentFormat = ASiCFormat.ASiCS;
- }
- }
- } else {
- logger.info("No file comment in ASiC");
- }
-
-
- ASiCFormat mimeTypeFileFormat = null;
- if (mimeTypeFile != null) {
- logger.debug("Found mimetype file in ASiC {}", mimeTypeFile);
- if(MIMETYPE_FORMAT_E.equalsIgnoreCase(mimeTypeFile)) {
- mimeTypeFileFormat = ASiCFormat.ASiCE;
- } else if(MIMETYPE_FORMAT_S.equalsIgnoreCase(mimeTypeFile)) {
- mimeTypeFileFormat = ASiCFormat.ASiCS;
- }
- } else {
- logger.info("No mimetype file in ASiC");
- }
-
- if (format == null) {
- if (fileCommentFormat != null && mimeTypeFileFormat != null) {
- // both are set
- if (fileCommentFormat == mimeTypeFileFormat) {
- format = fileCommentFormat;
- } else {
- throw new MOAApplicationException("asic.0009", null);
- }
- } else if (fileCommentFormat != null) {
- format = fileCommentFormat;
- } else if (mimeTypeFileFormat != null) {
- format = mimeTypeFileFormat;
- } else {
- throw new MOAApplicationException("asic.0008", null);
- }
- } else {
- // format is provided, only check for missmatches
- if (fileCommentFormat != null && fileCommentFormat != format) {
- logger.warn("ASiC format missmatch file comment {} vs provided {}", fileCommentFormat, format);
- throw new MOAApplicationException("asic.0009", null);
- }
- if (mimeTypeFileFormat != null && mimeTypeFileFormat != format) {
- logger.warn("ASiC format missmatch mimetype file {} vs provided {}", mimeTypeFileFormat, format);
- throw new MOAApplicationException("asic.0009", null);
- }
-
- if (fileCommentFormat != null && mimeTypeFileFormat != null) {
- // both are set
- if (fileCommentFormat != mimeTypeFileFormat) {
- logger.warn("ASiC format missmatch file comment {} vs mimetype file {}", fileCommentFormat, mimeTypeFileFormat);
- throw new MOAApplicationException("asic.0009", null);
- }
- }
- }
+ private static final Logger logger = LoggerFactory.getLogger(ASiCFactory.class);
- ASiCBaseFormatFactory formatFactory = null;
+ private static final String MIMETYPE_FORMAT_E = "application/vnd.etsi.asic-e+zip";
+ private static final String MIMETYPE_FORMAT_S = "application/vnd.etsi.asic-s+zip";
- if (format == null) {
- throw new MOAApplicationException("asic.0008", null);
+ public static ASiC parseASiC(InputStream is, ASiCFormat format) throws MOAException {
+
+ InputStream newInputStream = is;
+
+ // Try to determine the asic format!
+ if (!newInputStream.markSupported()) {
+ final ByteArrayOutputStream asicContainer = new ByteArrayOutputStream();
+
+ try {
+ IOUtils.copy(newInputStream, asicContainer);
+ } catch (final IOException e) {
+ throw new MOAApplicationException("asic.0003", null);
+ }
+ newInputStream = new ByteArrayInputStream(asicContainer.toByteArray());
+ }
+
+ String mimeTypeFile = null;
+ final ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(newInputStream);
+ final byte[] buffer = new byte[8096];
+ try {
+ while (commentReaderStream.read(buffer) >= 0) {
+ }
+ newInputStream.reset();
+ } catch (final IOException e) {
+ throw new MOAApplicationException("asic.0003", null);
+ }
+
+ final ZipInputStream zipInputStream = new ZipInputStream(newInputStream);
+
+ try {
+ for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream
+ .getNextEntry()) {
+ final String entryName = entry.getName();
+
+ if ("mimetype".equalsIgnoreCase(entryName)) {
+ if (mimeTypeFile == null) {
+ mimeTypeFile = IOUtils.toString(zipInputStream, "UTF-8");
+ } else {
+ logger.warn("multiple mimetype files found in archiv");
+ }
}
+ }
+ newInputStream.reset();
+ } catch (final IOException e) {
+ throw new MOAApplicationException("asic.0007", null);
+ }
- switch (format) {
- case ASiCE:
- formatFactory = new ASiCExtendedFormatFactory();
- break;
- case ASiCS:
- formatFactory = new ASiCSimpleFormatFactory();
- break;
+ final String fileComment = commentReaderStream.getFileComment();
+ ASiCFormat fileCommentFormat = null;
+ if (fileComment != null) {
+ logger.debug("Found file comment in ASiC {}", fileComment);
+ if (fileComment.startsWith("mimetype=")) {
+ final String fileCommentMimeType = fileComment.substring("mimetype=".length());
+ if (fileCommentMimeType.startsWith(MIMETYPE_FORMAT_E)) {
+ fileCommentFormat = ASiCFormat.ASiCE;
+ } else if (fileCommentMimeType.startsWith(MIMETYPE_FORMAT_S)) {
+ fileCommentFormat = ASiCFormat.ASiCS;
}
+ }
+ } else {
+ logger.info("No file comment in ASiC");
+ }
- if (formatFactory == null) {
- throw new MOAApplicationException("asic.0008", null);
+ ASiCFormat mimeTypeFileFormat = null;
+ if (mimeTypeFile != null) {
+ logger.debug("Found mimetype file in ASiC {}", mimeTypeFile);
+ if (MIMETYPE_FORMAT_E.equalsIgnoreCase(mimeTypeFile)) {
+ mimeTypeFileFormat = ASiCFormat.ASiCE;
+ } else if (MIMETYPE_FORMAT_S.equalsIgnoreCase(mimeTypeFile)) {
+ mimeTypeFileFormat = ASiCFormat.ASiCS;
+ }
+ } else {
+ logger.info("No mimetype file in ASiC");
+ }
+
+ if (format == null) {
+ if (fileCommentFormat != null && mimeTypeFileFormat != null) {
+ // both are set
+ if (fileCommentFormat == mimeTypeFileFormat) {
+ format = fileCommentFormat;
+ } else {
+ throw new MOAApplicationException("asic.0009", null);
}
+ } else if (fileCommentFormat != null) {
+ format = fileCommentFormat;
+ } else if (mimeTypeFileFormat != null) {
+ format = mimeTypeFileFormat;
+ } else {
+ throw new MOAApplicationException("asic.0008", null);
+ }
+ } else {
+ // format is provided, only check for missmatches
+ if (fileCommentFormat != null && fileCommentFormat != format) {
+ logger.warn("ASiC format missmatch file comment {} vs provided {}", fileCommentFormat, format);
+ throw new MOAApplicationException("asic.0009", null);
+ }
+ if (mimeTypeFileFormat != null && mimeTypeFileFormat != format) {
+ logger.warn("ASiC format missmatch mimetype file {} vs provided {}", mimeTypeFileFormat, format);
+ throw new MOAApplicationException("asic.0009", null);
+ }
+
+ if (fileCommentFormat != null && mimeTypeFileFormat != null) {
+ // both are set
+ if (fileCommentFormat != mimeTypeFileFormat) {
+ logger.warn("ASiC format missmatch file comment {} vs mimetype file {}", fileCommentFormat,
+ mimeTypeFileFormat);
+ throw new MOAApplicationException("asic.0009", null);
+ }
+ }
+ }
+
+ ASiCBaseFormatFactory formatFactory = null;
- return formatFactory.createASiC(newInputStream);
+ if (format == null) {
+ throw new MOAApplicationException("asic.0008", null);
}
+ switch (format) {
+ case ASiCE:
+ formatFactory = new ASiCExtendedFormatFactory();
+ break;
+ case ASiCS:
+ formatFactory = new ASiCSimpleFormatFactory();
+ break;
+ }
+
+ if (formatFactory == null) {
+ throw new MOAApplicationException("asic.0008", null);
+ }
+
+ return formatFactory.createASiC(newInputStream);
+ }
+
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java
index 8106944..cc72f58 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCFormat.java
@@ -4,6 +4,6 @@ package at.gv.egiz.asic.api;
* Created by Andreas Fitzek on 6/15/16.
*/
public enum ASiCFormat {
- ASiCS,
- ASiCE
+ ASiCS,
+ ASiCE
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java
index ce8f374..a29b5c2 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerificationResult.java
@@ -1,41 +1,43 @@
package at.gv.egiz.asic.api;
+import java.util.ArrayList;
+import java.util.List;
+
import at.gv.egiz.asic.impl.AsicSignedFilesContainer;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* Created by Andreas Fitzek on 6/16/16.
*/
public class ASiCVerificationResult {
- private List<AsicSignedFilesContainer> signedFiles = new ArrayList<AsicSignedFilesContainer>();
+ private List<AsicSignedFilesContainer> signedFiles = new ArrayList<>();
- private VerifyCMSSignatureResponse cmsResult = null;
- private VerifyXMLSignatureResponse xmlResult = null;
+ private VerifyCMSSignatureResponse cmsResult = null;
+ private VerifyXMLSignatureResponse xmlResult = null;
- public ASiCVerificationResult(List<AsicSignedFilesContainer> references, VerifyCMSSignatureResponse cmsResult) {
- this.signedFiles = references;
- this.cmsResult = cmsResult;
- }
+ public ASiCVerificationResult(List<AsicSignedFilesContainer> references,
+ VerifyCMSSignatureResponse cmsResult) {
+ this.signedFiles = references;
+ this.cmsResult = cmsResult;
+ }
- public ASiCVerificationResult(List<AsicSignedFilesContainer> references, VerifyXMLSignatureResponse xmlResult) {
- this.signedFiles = references;
- this.xmlResult = xmlResult;
- }
+ public ASiCVerificationResult(List<AsicSignedFilesContainer> references,
+ VerifyXMLSignatureResponse xmlResult) {
+ this.signedFiles = references;
+ this.xmlResult = xmlResult;
+ }
- public List<AsicSignedFilesContainer> getSignedFiles() {
- return signedFiles;
- }
+ public List<AsicSignedFilesContainer> getSignedFiles() {
+ return signedFiles;
+ }
- public VerifyXMLSignatureResponse getXmlResult() {
- return xmlResult;
- }
+ public VerifyXMLSignatureResponse getXmlResult() {
+ return xmlResult;
+ }
- public VerifyCMSSignatureResponse getCmsResult() {
- return cmsResult;
- }
+ public VerifyCMSSignatureResponse getCmsResult() {
+ return cmsResult;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java
index 77bc61d..fc8de87 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/api/ASiCVerifier.java
@@ -1,16 +1,15 @@
package at.gv.egiz.asic.api;
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
-
import java.util.Date;
import java.util.List;
+import at.gv.egovernment.moa.spss.MOAException;
+
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public interface ASiCVerifier {
- public List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date) throws MOAException;
+ List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date) throws MOAException;
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java
index ea6d19c..1927528 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/exceptions/ASiCContainerInvalidException.java
@@ -1,7 +1,7 @@
package at.gv.egiz.asic.exceptions;
public class ASiCContainerInvalidException extends ASiCException {
- public ASiCContainerInvalidException(String reason) {
- super();
- }
+ public ASiCContainerInvalidException(String reason) {
+ super();
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java
index 578371c..65c6ccc 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCBaseFormatFactory.java
@@ -1,16 +1,5 @@
package at.gv.egiz.asic.impl;
-import at.gv.egiz.asic.api.ASiC;
-import at.gv.egiz.asic.api.ASiCEntry;
-import at.gv.egiz.asic.api.ASiCFormat;
-import at.gv.egiz.asic.impl.handler.*;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.MOAException;
-import iaik.util.logging.Log;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -21,125 +10,142 @@ import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.asic.api.ASiC;
+import at.gv.egiz.asic.api.ASiCEntry;
+import at.gv.egiz.asic.api.ASiCFormat;
+import at.gv.egiz.asic.impl.handler.AllDataHandler;
+import at.gv.egiz.asic.impl.handler.MetaInfHandler;
+import at.gv.egiz.asic.impl.handler.MimefileHandler;
+import at.gv.egovernment.moa.spss.MOAApplicationException;
+import at.gv.egovernment.moa.spss.MOAException;
+
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public abstract class ASiCBaseFormatFactory implements ASiCContainer {
- private static final Logger logger = LoggerFactory.getLogger(ASiCBaseFormatFactory.class);
-
- protected boolean cadesSigned = false;
- protected boolean xadesSigned = false;
- protected boolean timestamped = false;
+ private static final Logger logger = LoggerFactory.getLogger(ASiCBaseFormatFactory.class);
- protected String mimeType = null;
+ protected boolean cadesSigned = false;
+ protected boolean xadesSigned = false;
+ protected boolean timestamped = false;
- protected List<ASiCEntry> signatureEntries = new ArrayList<ASiCEntry>();
- protected Map<String, ASiCEntry> dataEntries = new HashMap<String, ASiCEntry>();
- protected List<ASiCEntry> informationEntries = new ArrayList<ASiCEntry>();
+ protected String mimeType = null;
- protected List<EntryHandler> handlers = new ArrayList<EntryHandler>();
+ protected List<ASiCEntry> signatureEntries = new ArrayList<>();
+ protected Map<String, ASiCEntry> dataEntries = new HashMap<>();
+ protected List<ASiCEntry> informationEntries = new ArrayList<>();
- @Override
- public void addDataEntry(ASiCEntry entry) throws MOAApplicationException {
- //check if entry with a specific name already exists
- if (!dataEntries.containsKey(entry.getEntryName())) {
- this.dataEntries.put(entry.getEntryName(), entry);
-
- } else {
- logger.warn("ASiC container already contains a DataEntry with name: " + entry.getEntryName() + " ASiC container is INVALID");
- throw new MOAApplicationException("asic.0017", new Object[]{entry.getEntryName()});
- }
- }
+ protected List<EntryHandler> handlers = new ArrayList<>();
- @Override
- public void addSignatureEntry(ASiCEntry entry) {
- this.signatureEntries.add(entry);
- }
+ @Override
+ public void addDataEntry(ASiCEntry entry) throws MOAApplicationException {
+ // check if entry with a specific name already exists
+ if (!dataEntries.containsKey(entry.getEntryName())) {
+ this.dataEntries.put(entry.getEntryName(), entry);
- @Override
- public void addInformationEntry(ASiCEntry entry) {
- this.informationEntries.add(entry);
+ } else {
+ logger.warn("ASiC container already contains a DataEntry with name: " + entry.getEntryName()
+ + " ASiC container is INVALID");
+ throw new MOAApplicationException("asic.0017", new Object[] { entry.getEntryName() });
}
+ }
- public ASiCBaseFormatFactory() {
- handlers.add(new MimefileHandler());
- handlers.add(new MetaInfHandler());
- handlers.add(new AllDataHandler());
- }
+ @Override
+ public void addSignatureEntry(ASiCEntry entry) {
+ this.signatureEntries.add(entry);
+ }
- public abstract ASiCFormat factoryFormat();
+ @Override
+ public void addInformationEntry(ASiCEntry entry) {
+ this.informationEntries.add(entry);
+ }
- protected abstract void validate() throws MOAException;
+ public ASiCBaseFormatFactory() {
+ handlers.add(new MimefileHandler());
+ handlers.add(new MetaInfHandler());
+ handlers.add(new AllDataHandler());
+ }
- public ASiC createASiC(InputStream is) throws MOAException {
+ public abstract ASiCFormat factoryFormat();
- ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(is);
+ protected abstract void validate() throws MOAException;
- ZipInputStream zipInputStream = new ZipInputStream(commentReaderStream);
+ public ASiC createASiC(InputStream is) throws MOAException {
- try {
- for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream.getNextEntry()) {
- String entryName = entry.getName();
+ final ZipCommentReaderStream commentReaderStream = new ZipCommentReaderStream(is);
- Iterator<EntryHandler> handlerIterator = this.handlers.iterator();
- while (handlerIterator.hasNext()) {
- EntryHandler entryHandler = handlerIterator.next();
+ final ZipInputStream zipInputStream = new ZipInputStream(commentReaderStream);
- if (entryHandler.handle(entryName, zipInputStream, this)) {
- break;
- }
- }
- }
- } catch(IOException e) {
- logger.info("Failed to read from ASiC Container", e);
- throw new MOAApplicationException("asic.0007", null);
- }
+ try {
+ for (ZipEntry entry = zipInputStream.getNextEntry(); entry != null; entry = zipInputStream
+ .getNextEntry()) {
+ final String entryName = entry.getName();
+ final Iterator<EntryHandler> handlerIterator = this.handlers.iterator();
+ while (handlerIterator.hasNext()) {
+ final EntryHandler entryHandler = handlerIterator.next();
- if(this.mimeType == null) {
- String mimeTypeComment = commentReaderStream.getFileComment();
- if(mimeTypeComment != null) {
- this.mimeType = mimeTypeComment;
- }
+ if (entryHandler.handle(entryName, zipInputStream, this)) {
+ break;
+ }
}
-
- this.validate();
-
- // unpack and retrieve all available information on ASiC signature
- return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries, dataEntries.values(), this.informationEntries);
+ }
+ } catch (final IOException e) {
+ logger.info("Failed to read from ASiC Container", e);
+ throw new MOAApplicationException("asic.0007", null);
}
- @Override
- public void setMimeType(String mimeType) {
- this.mimeType = mimeType;
+ if (this.mimeType == null) {
+ final String mimeTypeComment = commentReaderStream.getFileComment();
+ if (mimeTypeComment != null) {
+ this.mimeType = mimeTypeComment;
+ }
}
- public void setIsXAdES() throws MOAException {
- if(this.cadesSigned) {
- throw new MOAApplicationException("asic.0010", null);
- }
- this.xadesSigned = true;
- }
+ this.validate();
- public void setIsCAdES() throws MOAException {
- if(this.xadesSigned) {
- throw new MOAApplicationException("asic.0010", null);
- }
- this.cadesSigned = true;
- }
+ // unpack and retrieve all available information on ASiC signature
+ return new ASiCImpl(this.factoryFormat(), this.xadesSigned, this.cadesSigned, this.signatureEntries,
+ dataEntries.values(), this.informationEntries);
+ }
- public void setIsTimestamped() throws MOAException {
- throw new MOAApplicationException("asic.0013", null);
- }
+ @Override
+ public void setMimeType(String mimeType) {
+ this.mimeType = mimeType;
+ }
- @Override
- public void setIsEvidenceERS() throws MOAException {
- throw new MOAApplicationException("asic.0011", null);
+ @Override
+ public void setIsXAdES() throws MOAException {
+ if (this.cadesSigned) {
+ throw new MOAApplicationException("asic.0010", null);
}
+ this.xadesSigned = true;
+ }
- @Override
- public void setIsEvidenceXML() throws MOAException {
- throw new MOAApplicationException("asic.0012", null);
+ @Override
+ public void setIsCAdES() throws MOAException {
+ if (this.xadesSigned) {
+ throw new MOAApplicationException("asic.0010", null);
}
+ this.cadesSigned = true;
+ }
+
+ @Override
+ public void setIsTimestamped() throws MOAException {
+ throw new MOAApplicationException("asic.0013", null);
+ }
+
+ @Override
+ public void setIsEvidenceERS() throws MOAException {
+ throw new MOAApplicationException("asic.0011", null);
+ }
+
+ @Override
+ public void setIsEvidenceXML() throws MOAException {
+ throw new MOAApplicationException("asic.0012", null);
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java
index 3960a37..26f2924 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCContainer.java
@@ -9,15 +9,22 @@ import at.gv.egovernment.moa.spss.MOAException;
*/
public interface ASiCContainer {
- public void setMimeType(String mimeType);
- public void addDataEntry(ASiCEntry entry) throws MOAApplicationException;
- public void addSignatureEntry(ASiCEntry entry);
- public void addInformationEntry(ASiCEntry entry);
-
- public void setIsXAdES() throws MOAException;
- public void setIsCAdES() throws MOAException;
- public void setIsEvidenceERS() throws MOAException;
- public void setIsEvidenceXML() throws MOAException;
- public void setIsTimestamped() throws MOAException;
+ void setMimeType(String mimeType);
+
+ void addDataEntry(ASiCEntry entry) throws MOAApplicationException;
+
+ void addSignatureEntry(ASiCEntry entry);
+
+ void addInformationEntry(ASiCEntry entry);
+
+ void setIsXAdES() throws MOAException;
+
+ void setIsCAdES() throws MOAException;
+
+ void setIsEvidenceERS() throws MOAException;
+
+ void setIsEvidenceXML() throws MOAException;
+
+ void setIsTimestamped() throws MOAException;
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java
index f71552b..854bf81 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCExtendedFormatFactory.java
@@ -1,51 +1,49 @@
package at.gv.egiz.asic.impl;
-import at.gv.egiz.asic.api.ASiC;
-import at.gv.egiz.asic.api.ASiCFormat;
-import at.gv.egiz.asic.impl.handler.*;
+import java.util.Collections;
+import java.util.Iterator;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
+import at.gv.egiz.asic.api.ASiCFormat;
+import at.gv.egiz.asic.impl.handler.ExtendedASiCCAdESHandler;
+import at.gv.egiz.asic.impl.handler.ExtendedASiCXAdESHandler;
+import at.gv.egiz.asic.impl.handler.ExtendedEvidenceERSRecordHandler;
+import at.gv.egiz.asic.impl.handler.ExtendedEvidenceXMLRecordHandler;
+import at.gv.egiz.asic.impl.handler.HandlerSorter;
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public class ASiCExtendedFormatFactory extends ASiCBaseFormatFactory {
- private static final Logger logger = LoggerFactory.getLogger(ASiCExtendedFormatFactory.class);
+ private static final Logger logger = LoggerFactory.getLogger(ASiCExtendedFormatFactory.class);
- public ASiCExtendedFormatFactory() {
- super();
- handlers.add(new ExtendedASiCCAdESHandler());
- handlers.add(new ExtendedASiCXAdESHandler());
- handlers.add(new ExtendedEvidenceERSRecordHandler());
- handlers.add(new ExtendedEvidenceXMLRecordHandler());
+ public ASiCExtendedFormatFactory() {
+ super();
+ handlers.add(new ExtendedASiCCAdESHandler());
+ handlers.add(new ExtendedASiCXAdESHandler());
+ handlers.add(new ExtendedEvidenceERSRecordHandler());
+ handlers.add(new ExtendedEvidenceXMLRecordHandler());
- Collections.sort(handlers, new HandlerSorter());
+ Collections.sort(handlers, new HandlerSorter());
- logger.debug("Handler ordering for ASiCExtendedFormatFactory");
- Iterator<EntryHandler> handlerIterator = this.handlers.iterator();
- while(handlerIterator.hasNext()) {
- EntryHandler entryHandler = handlerIterator.next();
- logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName());
- }
+ logger.debug("Handler ordering for ASiCExtendedFormatFactory");
+ final Iterator<EntryHandler> handlerIterator = this.handlers.iterator();
+ while (handlerIterator.hasNext()) {
+ final EntryHandler entryHandler = handlerIterator.next();
+ logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName());
}
+ }
- @Override
- protected void validate() {
+ @Override
+ protected void validate() {
- }
+ }
- @Override
- public ASiCFormat factoryFormat() {
- return ASiCFormat.ASiCE;
- }
+ @Override
+ public ASiCFormat factoryFormat() {
+ return ASiCFormat.ASiCE;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java
index 34f6343..e7cfc7e 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCImpl.java
@@ -1,74 +1,75 @@
package at.gv.egiz.asic.impl;
-import at.gv.egiz.asic.api.ASiC;
-import at.gv.egiz.asic.api.ASiCEntry;
-import at.gv.egiz.asic.api.ASiCFormat;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import at.gv.egiz.asic.api.ASiC;
+import at.gv.egiz.asic.api.ASiCEntry;
+import at.gv.egiz.asic.api.ASiCFormat;
+
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public class ASiCImpl implements ASiC {
- private ASiCFormat format;
- private boolean xades;
- private boolean cades;
+ private final ASiCFormat format;
+ private final boolean xades;
+ private final boolean cades;
- protected List<ASiCEntry> signatureEntries = new ArrayList<ASiCEntry>();
- protected Collection<ASiCEntry> dataEntries = new ArrayList<ASiCEntry>();
- protected List<ASiCEntry> informationEntries = new ArrayList<ASiCEntry>();
+ protected List<ASiCEntry> signatureEntries = new ArrayList<>();
+ protected Collection<ASiCEntry> dataEntries = new ArrayList<>();
+ protected List<ASiCEntry> informationEntries = new ArrayList<>();
- public ASiCImpl(ASiCFormat format, boolean xades, boolean cades, List<ASiCEntry> signatureEntries, Collection<ASiCEntry> collection, List<ASiCEntry> informationEntries) {
- this.format = format;
- this.xades = xades;
- this.cades = cades;
- this.signatureEntries = signatureEntries;
- this.dataEntries = collection;
- this.informationEntries = informationEntries;
- }
+ public ASiCImpl(ASiCFormat format, boolean xades, boolean cades, List<ASiCEntry> signatureEntries,
+ Collection<ASiCEntry> collection, List<ASiCEntry> informationEntries) {
+ this.format = format;
+ this.xades = xades;
+ this.cades = cades;
+ this.signatureEntries = signatureEntries;
+ this.dataEntries = collection;
+ this.informationEntries = informationEntries;
+ }
- @Override
- public ASiCFormat getFormat() {
- return format;
- }
+ @Override
+ public ASiCFormat getFormat() {
+ return format;
+ }
- @Override
- public boolean isXAdES() {
- return xades;
- }
+ @Override
+ public boolean isXAdES() {
+ return xades;
+ }
- @Override
- public boolean isCAdES() {
- return cades;
- }
+ @Override
+ public boolean isCAdES() {
+ return cades;
+ }
- @Override
- public List<ASiCEntry> getSignaturesEntries() {
- return signatureEntries;
- }
+ @Override
+ public List<ASiCEntry> getSignaturesEntries() {
+ return signatureEntries;
+ }
- @Override
- public Collection<ASiCEntry> getDataEntries() {
- return dataEntries;
- }
+ @Override
+ public Collection<ASiCEntry> getDataEntries() {
+ return dataEntries;
+ }
- @Override
- public List<ASiCEntry> getInformationEntries() {
- return informationEntries;
- }
+ @Override
+ public List<ASiCEntry> getInformationEntries() {
+ return informationEntries;
+ }
- @Override
- public String toString() {
- return "ASiCImpl{" +
- "format=" + format +
- ", xades=" + xades +
- ", cades=" + cades +
- ", signatureEntries=" + signatureEntries +
- ", dataEntries=" + dataEntries +
- ", informationEntries=" + informationEntries +
- '}';
- }
+ @Override
+ public String toString() {
+ return "ASiCImpl{" +
+ "format=" + format +
+ ", xades=" + xades +
+ ", cades=" + cades +
+ ", signatureEntries=" + signatureEntries +
+ ", dataEntries=" + dataEntries +
+ ", informationEntries=" + informationEntries +
+ '}';
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java
index 51392da..1ae32ed 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCMOAVerifier.java
@@ -1,87 +1,62 @@
package at.gv.egiz.asic.impl;
-import at.gv.egiz.asic.ASiCManifestType;
-import at.gv.egiz.asic.DataObjectReferenceType;
-import at.gv.egiz.asic.ReferenceType;
-import at.gv.egiz.asic.XAdESSignaturesType;
-import at.gv.egiz.asic.api.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.asic.api.ASiC;
+import at.gv.egiz.asic.api.ASiCVerificationResult;
+import at.gv.egiz.asic.api.ASiCVerifier;
import at.gv.egiz.asic.impl.verifier.ExtendedCAdESVerifier;
import at.gv.egiz.asic.impl.verifier.ExtendedXAdESVerifier;
import at.gv.egiz.asic.impl.verifier.SimpleCAdESVerifier;
import at.gv.egiz.asic.impl.verifier.SimpleXAdESVerifier;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.MOARuntimeException;
import at.gv.egovernment.moa.spss.MOASystemException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.cmsverify.*;
-import at.gv.egovernment.moa.spss.api.common.*;
-import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl;
-import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
-import at.gv.egovernment.moa.spss.server.invoke.VerifyCMSSignatureResponseBuilder;
-import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;
-import iaik.server.cmspdfverify.CertificateValidationResult;
-import org.apache.commons.codec.binary.Hex;
-import org.apache.commons.io.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.bind.DataBindingException;
-import javax.xml.bind.JAXB;
-import javax.xml.crypto.dsig.Reference;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.DigestInputStream;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-import java.util.*;
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public class ASiCMOAVerifier implements ASiCVerifier {
- private static final Logger logger = LoggerFactory.getLogger(ASiCMOAVerifier.class);
+ private static final Logger logger = LoggerFactory.getLogger(ASiCMOAVerifier.class);
- private List<Verifier> verifierMap = new ArrayList<Verifier>();
+ private final List<Verifier> verifierMap = new ArrayList<>();
- public ASiCMOAVerifier() {
- verifierMap.add(new SimpleCAdESVerifier());
- verifierMap.add(new SimpleXAdESVerifier());
- verifierMap.add(new ExtendedCAdESVerifier());
- verifierMap.add(new ExtendedXAdESVerifier());
- }
+ public ASiCMOAVerifier() {
+ verifierMap.add(new SimpleCAdESVerifier());
+ verifierMap.add(new SimpleXAdESVerifier());
+ verifierMap.add(new ExtendedCAdESVerifier());
+ verifierMap.add(new ExtendedXAdESVerifier());
+ }
- @Override
- public List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date) throws MOAException {
- List<ASiCVerificationResult> response = new ArrayList<ASiCVerificationResult>();
- boolean handled = false;
+ @Override
+ public List<ASiCVerificationResult> verify(ASiC asic, String trustProfileID, Date date)
+ throws MOAException {
+ final List<ASiCVerificationResult> response = new ArrayList<>();
+ boolean handled = false;
- Iterator<Verifier> verifierIterator = verifierMap.iterator();
+ final Iterator<Verifier> verifierIterator = verifierMap.iterator();
- while (verifierIterator.hasNext()) {
- Verifier verifier = verifierIterator.next();
- if (verifier.handles(asic)) {
- verifier.verify(asic, trustProfileID, date, response);
- handled = true;
- break;
- }
- }
-
- if (!handled) {
- logger.warn("Cannot handle ASiC: {}", asic);
- throw new MOASystemException("asic.0016", null);
- }
+ while (verifierIterator.hasNext()) {
+ final Verifier verifier = verifierIterator.next();
+ if (verifier.handles(asic)) {
+ verifier.verify(asic, trustProfileID, date, response);
+ handled = true;
+ break;
+ }
+ }
- return response;
+ if (!handled) {
+ logger.warn("Cannot handle ASiC: {}", asic);
+ throw new MOASystemException("asic.0016", null);
}
+ return response;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java
index 90b3081..f478f93 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ASiCSimpleFormatFactory.java
@@ -1,54 +1,59 @@
package at.gv.egiz.asic.impl;
-import at.gv.egiz.asic.api.ASiCFormat;
-import at.gv.egiz.asic.impl.handler.*;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
+import java.util.Collections;
+import java.util.Iterator;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.Collections;
-import java.util.Iterator;
+import at.gv.egiz.asic.api.ASiCFormat;
+import at.gv.egiz.asic.impl.handler.HandlerSorter;
+import at.gv.egiz.asic.impl.handler.SimpleASiCCAdESHandler;
+import at.gv.egiz.asic.impl.handler.SimpleASiCXAdESHandler;
+import at.gv.egiz.asic.impl.handler.SimpleEvidenceERSRecordHandler;
+import at.gv.egiz.asic.impl.handler.SimpleEvidenceXMLRecordHandler;
+import at.gv.egovernment.moa.spss.MOAApplicationException;
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public class ASiCSimpleFormatFactory extends ASiCBaseFormatFactory {
- private static final Logger logger = LoggerFactory.getLogger(ASiCSimpleFormatFactory.class);
+ private static final Logger logger = LoggerFactory.getLogger(ASiCSimpleFormatFactory.class);
- public ASiCSimpleFormatFactory() {
- super();
+ public ASiCSimpleFormatFactory() {
+ super();
- handlers.add(new SimpleASiCCAdESHandler());
- handlers.add(new SimpleASiCXAdESHandler());
- handlers.add(new SimpleEvidenceXMLRecordHandler());
- handlers.add(new SimpleEvidenceERSRecordHandler());
+ handlers.add(new SimpleASiCCAdESHandler());
+ handlers.add(new SimpleASiCXAdESHandler());
+ handlers.add(new SimpleEvidenceXMLRecordHandler());
+ handlers.add(new SimpleEvidenceERSRecordHandler());
- Collections.sort(handlers, new HandlerSorter());
+ Collections.sort(handlers, new HandlerSorter());
- logger.debug("Handler ordering for ASiCSimpleFormatFactory");
- Iterator<EntryHandler> handlerIterator = this.handlers.iterator();
- while(handlerIterator.hasNext()) {
- EntryHandler entryHandler = handlerIterator.next();
- logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName());
- }
+ logger.debug("Handler ordering for ASiCSimpleFormatFactory");
+ final Iterator<EntryHandler> handlerIterator = this.handlers.iterator();
+ while (handlerIterator.hasNext()) {
+ final EntryHandler entryHandler = handlerIterator.next();
+ logger.debug(" " + entryHandler.getPriority() + " " + entryHandler.getClass().getSimpleName());
}
+ }
- @Override
- protected void validate() throws MOAApplicationException {
- if(this.dataEntries.size() != 1) {
- logger.warn("There can only be one data entry for ASiC signatures in simple format");
- throw new MOAApplicationException("asic.0014", null);
- }
-
- if(this.signatureEntries.size() != 1) {
- logger.warn("There can only be one signature entry for ASiC signatures in simple format");
- throw new MOAApplicationException("asic.0015", null);
- }
+ @Override
+ protected void validate() throws MOAApplicationException {
+ if (this.dataEntries.size() != 1) {
+ logger.warn("There can only be one data entry for ASiC signatures in simple format");
+ throw new MOAApplicationException("asic.0014", null);
}
- @Override
- public ASiCFormat factoryFormat() {
- return ASiCFormat.ASiCS;
+ if (this.signatureEntries.size() != 1) {
+ logger.warn("There can only be one signature entry for ASiC signatures in simple format");
+ throw new MOAApplicationException("asic.0015", null);
}
+ }
+
+ @Override
+ public ASiCFormat factoryFormat() {
+ return ASiCFormat.ASiCS;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java
index c21960d..fe88a0e 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/AsicSignedFilesContainer.java
@@ -2,38 +2,37 @@ package at.gv.egiz.asic.impl;
public class AsicSignedFilesContainer {
- private String uri = null;
- private String hashAlg = null;
-
-
- /**
- * Container element with ASIC signed files information
- *
- * @param uri Identifier of the file
- * @param hashAlg Hash algorithm that is used to hash the file
- */
- public AsicSignedFilesContainer(String uri, String hashAlg) {
- this.uri = uri;
- this.hashAlg = hashAlg;
-
- }
-
- /**
- * Get file identifier
- *
- * @return
- */
- public String getUri() {
- return uri;
- }
-
- /**
- * Get hash algorithm that is used to hash the file
- *
- * @return
- */
- public String getHashAlg() {
- return hashAlg;
- }
-
+ private String uri = null;
+ private String hashAlg = null;
+
+ /**
+ * Container element with ASIC signed files information
+ *
+ * @param uri Identifier of the file
+ * @param hashAlg Hash algorithm that is used to hash the file
+ */
+ public AsicSignedFilesContainer(String uri, String hashAlg) {
+ this.uri = uri;
+ this.hashAlg = hashAlg;
+
+ }
+
+ /**
+ * Get file identifier
+ *
+ * @return
+ */
+ public String getUri() {
+ return uri;
+ }
+
+ /**
+ * Get hash algorithm that is used to hash the file
+ *
+ * @return
+ */
+ public String getHashAlg() {
+ return hashAlg;
+ }
+
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java
index 7767b33..e5e19ed 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/EntryHandler.java
@@ -1,14 +1,15 @@
package at.gv.egiz.asic.impl;
-import at.gv.egovernment.moa.spss.MOAException;
-
import java.io.IOException;
import java.io.InputStream;
+import at.gv.egovernment.moa.spss.MOAException;
+
/**
* Created by afitzek on 6/15/16.
*/
public interface EntryHandler {
- public int getPriority();
- public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAException;
+ int getPriority();
+
+ boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAException;
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java
index 95a2450..29bba58 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/Verifier.java
@@ -1,18 +1,18 @@
package at.gv.egiz.asic.impl;
+import java.util.Date;
+import java.util.List;
+
import at.gv.egiz.asic.api.ASiC;
import at.gv.egiz.asic.api.ASiCVerificationResult;
import at.gv.egovernment.moa.spss.MOAException;
-import java.util.Date;
-import java.util.List;
-
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public interface Verifier {
- public boolean handles(ASiC asic);
+ boolean handles(ASiC asic);
- public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response)
- throws MOAException;
+ void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response)
+ throws MOAException;
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java
index 93b7651..dacc76e 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/ZipCommentReaderStream.java
@@ -1,7 +1,5 @@
package at.gv.egiz.asic.impl;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -10,171 +8,171 @@ import java.io.InputStream;
*/
public class ZipCommentReaderStream extends InputStream {
- private InputStream inputStream;
+ private final InputStream inputStream;
- private int[] tempBuffer = new int[22];
+ private final int[] tempBuffer = new int[22];
- private int[] commentBuffer = null;
+ private int[] commentBuffer = null;
- private int commentBufferContentLen = 0;
- private int commentBufferContentOff = 0;
+ private int commentBufferContentLen = 0;
+ private int commentBufferContentOff = 0;
- private int tempBufferContentLen = 0;
- private int tempBufferContentOff = 0;
+ private int tempBufferContentLen = 0;
+ private int tempBufferContentOff = 0;
- private String fileComment = null;
+ private String fileComment = null;
- private static final byte[] directoryRecord = new byte[] { (byte)0x50, (byte)0x4b, 0x05, 0x06 };
+ private static final byte[] directoryRecord = new byte[] { (byte) 0x50, (byte) 0x4b, 0x05, 0x06 };
- public ZipCommentReaderStream(InputStream inputStream) {
- this.inputStream = inputStream;
- }
-
- private int readIntIntoBuffer() throws IOException {
- int tValue = this.inputStream.read();
-
- if(this.tempBuffer.length <= tempBufferContentOff) {
- throw new IOException("Temp Buffer is out of space! @ " + tempBufferContentOff);
- }
+ public ZipCommentReaderStream(InputStream inputStream) {
+ this.inputStream = inputStream;
+ }
- this.tempBuffer[tempBufferContentOff] = tValue;
- tempBufferContentOff++;
- tempBufferContentLen++;
+ private int readIntIntoBuffer() throws IOException {
+ final int tValue = this.inputStream.read();
- return tValue;
+ if (this.tempBuffer.length <= tempBufferContentOff) {
+ throw new IOException("Temp Buffer is out of space! @ " + tempBufferContentOff);
}
- private int readIntIntoCommentBuffer() throws IOException {
- int tValue = this.inputStream.read();
+ this.tempBuffer[tempBufferContentOff] = tValue;
+ tempBufferContentOff++;
+ tempBufferContentLen++;
- if(this.commentBuffer.length <= commentBufferContentOff) {
- throw new IOException("Comment Buffer is out of space! @ " + commentBufferContentOff);
- }
+ return tValue;
+ }
- this.commentBuffer[commentBufferContentOff] = tValue;
- commentBufferContentOff++;
- commentBufferContentLen++;
+ private int readIntIntoCommentBuffer() throws IOException {
+ final int tValue = this.inputStream.read();
- return tValue;
+ if (this.commentBuffer.length <= commentBufferContentOff) {
+ throw new IOException("Comment Buffer is out of space! @ " + commentBufferContentOff);
}
- private void checkMagicBytes() throws IOException {
- boolean foundMagic = true;
- tempBufferContentOff = 0;
- tempBufferContentLen = 0;
- for(int i = 1; i < directoryRecord.length; i++) {
- int tValue = readIntIntoBuffer();
- if(tValue != directoryRecord[i]) {
- foundMagic = false;
- break;
- }
- if(tValue < 0) {
- // Found EOF
- return;
- }
- }
+ this.commentBuffer[commentBufferContentOff] = tValue;
+ commentBufferContentOff++;
+ commentBufferContentLen++;
+
+ return tValue;
+ }
+
+ private void checkMagicBytes() throws IOException {
+ boolean foundMagic = true;
+ tempBufferContentOff = 0;
+ tempBufferContentLen = 0;
+ for (int i = 1; i < directoryRecord.length; i++) {
+ final int tValue = readIntIntoBuffer();
+ if (tValue != directoryRecord[i]) {
+ foundMagic = false;
+ break;
+ }
+ if (tValue < 0) {
+ // Found EOF
+ return;
+ }
+ }
- if(foundMagic) {
- // read input stream until comment length
- for(int i = 0; i < 16; i++) {
- int tValue = readIntIntoBuffer();
+ if (foundMagic) {
+ // read input stream until comment length
+ for (int i = 0; i < 16; i++) {
+ final int tValue = readIntIntoBuffer();
- if(tValue < 0) {
- // Found EOF
- return;
- }
- }
+ if (tValue < 0) {
+ // Found EOF
+ return;
+ }
+ }
- int commentlengthHigh = readIntIntoBuffer();
+ final int commentlengthHigh = readIntIntoBuffer();
- if(commentlengthHigh < 0) {
- // Found EOF
- return;
- }
+ if (commentlengthHigh < 0) {
+ // Found EOF
+ return;
+ }
- int commentlengthLow = readIntIntoBuffer();
+ final int commentlengthLow = readIntIntoBuffer();
- if(commentlengthLow < 0) {
- // Found EOF
- return;
- }
+ if (commentlengthLow < 0) {
+ // Found EOF
+ return;
+ }
- int commentLength = commentlengthLow * 255 + commentlengthHigh;
+ final int commentLength = commentlengthLow * 255 + commentlengthHigh;
- if(commentLength == 0) {
- return;
- }
+ if (commentLength == 0) {
+ return;
+ }
- this.commentBuffer = new int[commentLength];
+ this.commentBuffer = new int[commentLength];
- commentBufferContentOff = 0;
- commentBufferContentLen = 0;
+ commentBufferContentOff = 0;
+ commentBufferContentLen = 0;
- // read comment buffer string
- for(int i = 0; i < commentLength; i++) {
- int tValue = readIntIntoCommentBuffer();
+ // read comment buffer string
+ for (int i = 0; i < commentLength; i++) {
+ final int tValue = readIntIntoCommentBuffer();
- if(tValue < 0) {
- // Found EOF
- return;
- }
- }
+ if (tValue < 0) {
+ // Found EOF
+ return;
+ }
+ }
- byte[] stringBuffer = new byte[this.commentBuffer.length];
+ final byte[] stringBuffer = new byte[this.commentBuffer.length];
- for(int i = 0; i < stringBuffer.length; i++) {
- stringBuffer[i] = (byte)this.commentBuffer[i];
- }
+ for (int i = 0; i < stringBuffer.length; i++) {
+ stringBuffer[i] = (byte) this.commentBuffer[i];
+ }
- this.fileComment = new String(stringBuffer);
- }
+ this.fileComment = new String(stringBuffer);
}
+ }
- @Override
- public int read() throws IOException {
- int value = -1;
- if(tempBufferContentLen > 0) {
- value = this.tempBuffer[tempBufferContentOff];
- tempBufferContentOff++;
+ @Override
+ public int read() throws IOException {
+ int value = -1;
+ if (tempBufferContentLen > 0) {
+ value = this.tempBuffer[tempBufferContentOff];
+ tempBufferContentOff++;
- // reset temp buffer
- if(tempBufferContentOff >= tempBufferContentLen) {
- tempBufferContentOff = 0;
- tempBufferContentLen = 0;
- }
+ // reset temp buffer
+ if (tempBufferContentOff >= tempBufferContentLen) {
+ tempBufferContentOff = 0;
+ tempBufferContentLen = 0;
+ }
- return value;
- }
+ return value;
+ }
- if(this.commentBuffer != null) {
- value = this.commentBuffer[commentBufferContentOff];
+ if (this.commentBuffer != null) {
+ value = this.commentBuffer[commentBufferContentOff];
- commentBufferContentOff++;
+ commentBufferContentOff++;
- // reset comment buffer
- if(commentBufferContentOff >= commentBufferContentLen) {
- commentBufferContentOff = 0;
- commentBufferContentLen = 0;
- this.commentBuffer = null;
- }
+ // reset comment buffer
+ if (commentBufferContentOff >= commentBufferContentLen) {
+ commentBufferContentOff = 0;
+ commentBufferContentLen = 0;
+ this.commentBuffer = null;
+ }
- return value;
- }
-
- value = this.inputStream.read();
+ return value;
+ }
- if(value == directoryRecord[0] && this.fileComment == null) {
- // might have found start of magic bytes
- checkMagicBytes();
- // reset buffer offsets
- tempBufferContentOff = 0;
- commentBufferContentOff = 0;
- }
+ value = this.inputStream.read();
- return value;
+ if (value == directoryRecord[0] && this.fileComment == null) {
+ // might have found start of magic bytes
+ checkMagicBytes();
+ // reset buffer offsets
+ tempBufferContentOff = 0;
+ commentBufferContentOff = 0;
}
- public String getFileComment() {
- return this.fileComment;
- }
+ return value;
+ }
+
+ public String getFileComment() {
+ return this.fileComment;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java
index cbf7a35..e1d95c0 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/AllDataHandler.java
@@ -1,29 +1,30 @@
package at.gv.egiz.asic.impl.handler;
+import java.io.IOException;
+import java.io.InputStream;
+
import at.gv.egiz.asic.api.ASiCConstants;
-import at.gv.egiz.asic.impl.ASiCContainer;
import at.gv.egiz.asic.api.ASiCEntry;
+import at.gv.egiz.asic.impl.ASiCContainer;
import at.gv.egiz.asic.impl.EntryHandler;
import at.gv.egovernment.moa.spss.MOAApplicationException;
-import java.io.IOException;
-import java.io.InputStream;
-
/**
* Created by afitzek on 6/15/16.
*/
public class AllDataHandler extends BaseHandler implements EntryHandler, ASiCConstants {
- @Override
- public int getPriority() {
- return 100;
- }
+ @Override
+ public int getPriority() {
+ return 100;
+ }
- @Override
- public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAApplicationException {
+ @Override
+ public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException,
+ MOAApplicationException {
- ASiCEntry entry = buildASiCEntry(entryName, is);
- container.addDataEntry(entry);
+ final ASiCEntry entry = buildASiCEntry(entryName, is);
+ container.addDataEntry(entry);
- return true;
- }
+ return true;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java
index 2b5ca9a..208edb4 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/BaseHandler.java
@@ -1,27 +1,28 @@
package at.gv.egiz.asic.impl.handler;
-import at.gv.egiz.asic.api.ASiCConstants;
-import at.gv.egiz.asic.api.ASiCEntry;
-import at.gv.egiz.asic.impl.EntryHandler;
-import org.apache.commons.io.IOUtils;
-
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import org.apache.commons.io.IOUtils;
+
+import at.gv.egiz.asic.api.ASiCConstants;
+import at.gv.egiz.asic.api.ASiCEntry;
+import at.gv.egiz.asic.impl.EntryHandler;
+
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public abstract class BaseHandler implements EntryHandler, ASiCConstants {
- protected ASiCEntry buildASiCEntry(String entryName, InputStream is) throws IOException {
- ASiCEntry entry = new ASiCEntry();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- IOUtils.copy(is, baos);
- entry.setContents(new ByteArrayInputStream(baos.toByteArray()));
- entry.setEntryName(entryName);
- return entry;
- }
+ protected ASiCEntry buildASiCEntry(String entryName, InputStream is) throws IOException {
+ final ASiCEntry entry = new ASiCEntry();
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ IOUtils.copy(is, baos);
+ entry.setContents(new ByteArrayInputStream(baos.toByteArray()));
+ entry.setEntryName(entryName);
+ return entry;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java
index 3ee97fc..fef2e38 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/CAdESHandler.java
@@ -5,16 +5,13 @@ import at.gv.egiz.asic.impl.ASiCContainer;
import at.gv.egiz.asic.impl.EntryHandler;
import at.gv.egovernment.moa.spss.MOAException;
-import java.io.IOException;
-import java.io.InputStream;
-
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public abstract class CAdESHandler extends SignatureHandler implements EntryHandler, ASiCConstants {
- @Override
- protected void setType(ASiCContainer container) throws MOAException {
- container.setIsCAdES();
- }
+ @Override
+ protected void setType(ASiCContainer container) throws MOAException {
+ container.setIsCAdES();
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java
index f89c6d0..5ba05d6 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceERSRecordHandler.java
@@ -3,16 +3,13 @@ package at.gv.egiz.asic.impl.handler;
import at.gv.egiz.asic.impl.ASiCContainer;
import at.gv.egovernment.moa.spss.MOAException;
-import java.io.IOException;
-import java.io.InputStream;
-
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public abstract class EvidenceERSRecordHandler extends SignatureHandler {
- @Override
- protected void setType(ASiCContainer container) throws MOAException {
- container.setIsEvidenceERS();
- }
+ @Override
+ protected void setType(ASiCContainer container) throws MOAException {
+ container.setIsEvidenceERS();
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java
index 4516bb0..932687b 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/EvidenceXMLRecordHandler.java
@@ -8,8 +8,8 @@ import at.gv.egovernment.moa.spss.MOAException;
*/
public abstract class EvidenceXMLRecordHandler extends SignatureHandler {
- @Override
- protected void setType(ASiCContainer container) throws MOAException {
- container.setIsEvidenceXML();
- }
+ @Override
+ protected void setType(ASiCContainer container) throws MOAException {
+ container.setIsEvidenceXML();
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java
index 464bcf6..6eb4d60 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCCAdESHandler.java
@@ -1,13 +1,12 @@
package at.gv.egiz.asic.impl.handler;
-import at.gv.egiz.asic.api.ASiCConstants;
-
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public class ExtendedASiCCAdESHandler extends CAdESHandler {
- @Override
- protected boolean matches(String entryName) {
- return entryName.endsWith(".p7s") && entryName.startsWith(FILE_META_INF) && entryName.contains("signature");
- }
+ @Override
+ protected boolean matches(String entryName) {
+ return entryName.endsWith(".p7s") && entryName.startsWith(FILE_META_INF) && entryName.contains(
+ "signature");
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java
index 971ba31..199dda1 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedASiCXAdESHandler.java
@@ -2,17 +2,17 @@ package at.gv.egiz.asic.impl.handler;
/**
* Created by Andreas Fitzek on 6/15/16.
- *
+ *
* Updated by Thomas Lenz on 02/03/17
*/
public class ExtendedASiCXAdESHandler extends XAdESHandler {
- @Override
- protected boolean matches(String entryName) {
- return entryName.endsWith(".xml")
- && entryName.startsWith(FILE_META_INF)
- && entryName.contains("signatures")
+ @Override
+ protected boolean matches(String entryName) {
+ return entryName.endsWith(".xml")
+ && entryName.startsWith(FILE_META_INF)
+ && entryName.contains("signatures")
// && !entryName.contains("ASiCManifest")
// && !entryName.contains("AsiCManifest")
- ;
- }
+ ;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java
index ccf9224..ab6f2d5 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceERSRecordHandler.java
@@ -4,8 +4,9 @@ package at.gv.egiz.asic.impl.handler;
* Created by Andreas Fitzek on 6/17/16.
*/
public class ExtendedEvidenceERSRecordHandler extends EvidenceERSRecordHandler {
- @Override
- protected boolean matches(String entryName) {
- return entryName.endsWith(".ers") && entryName.startsWith(FILE_META_INF) && entryName.contains("evidencerecord");
- }
+ @Override
+ protected boolean matches(String entryName) {
+ return entryName.endsWith(".ers") && entryName.startsWith(FILE_META_INF) && entryName.contains(
+ "evidencerecord");
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java
index d24d61b..ecac8b6 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/ExtendedEvidenceXMLRecordHandler.java
@@ -4,8 +4,9 @@ package at.gv.egiz.asic.impl.handler;
* Created by Andreas Fitzek on 6/17/16.
*/
public class ExtendedEvidenceXMLRecordHandler extends EvidenceERSRecordHandler {
- @Override
- protected boolean matches(String entryName) {
- return entryName.endsWith(".xml") && entryName.startsWith(FILE_META_INF) && entryName.contains("evidencerecord");
- }
+ @Override
+ protected boolean matches(String entryName) {
+ return entryName.endsWith(".xml") && entryName.startsWith(FILE_META_INF) && entryName.contains(
+ "evidencerecord");
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java
index 36a215d..2f753cf 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/HandlerSorter.java
@@ -1,16 +1,16 @@
package at.gv.egiz.asic.impl.handler;
-import at.gv.egiz.asic.impl.EntryHandler;
-
import java.util.Comparator;
+import at.gv.egiz.asic.impl.EntryHandler;
+
/**
* Created by afitzek on 6/15/16.
*/
public class HandlerSorter implements Comparator<EntryHandler> {
- @Override
- public int compare(EntryHandler o1, EntryHandler o2) {
- return Integer.compare(o1.getPriority(), o2.getPriority());
- }
+ @Override
+ public int compare(EntryHandler o1, EntryHandler o2) {
+ return Integer.compare(o1.getPriority(), o2.getPriority());
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java
index ec4f101..0127ea4 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MetaInfHandler.java
@@ -1,33 +1,33 @@
package at.gv.egiz.asic.impl.handler;
+import java.io.IOException;
+import java.io.InputStream;
+
import at.gv.egiz.asic.api.ASiCConstants;
-import at.gv.egiz.asic.impl.ASiCContainer;
import at.gv.egiz.asic.api.ASiCEntry;
+import at.gv.egiz.asic.impl.ASiCContainer;
import at.gv.egiz.asic.impl.EntryHandler;
-import java.io.IOException;
-import java.io.InputStream;
-
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public class MetaInfHandler extends BaseHandler implements EntryHandler, ASiCConstants {
- @Override
- public int getPriority() {
- return 20;
- }
+ @Override
+ public int getPriority() {
+ return 20;
+ }
- @Override
- public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException {
+ @Override
+ public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException {
- boolean metainf = entryName.startsWith(FILE_META_INF);
+ final boolean metainf = entryName.startsWith(FILE_META_INF);
- if(metainf) {
- ASiCEntry entry = buildASiCEntry(entryName, is);
- container.addInformationEntry(entry);
- return true;
- }
-
- return false;
+ if (metainf) {
+ final ASiCEntry entry = buildASiCEntry(entryName, is);
+ container.addInformationEntry(entry);
+ return true;
}
+
+ return false;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java
index 68fc87e..5a67fb8 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/MimefileHandler.java
@@ -1,36 +1,37 @@
package at.gv.egiz.asic.impl.handler;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.commons.io.IOUtils;
+
import at.gv.egiz.asic.api.ASiCConstants;
import at.gv.egiz.asic.impl.ASiCContainer;
import at.gv.egiz.asic.impl.EntryHandler;
-import org.apache.commons.io.IOUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
/**
* Created by afitzek on 6/15/16.
*/
public class MimefileHandler implements EntryHandler, ASiCConstants {
- private boolean isMimeType(String entryName) {
- return FILE_MIME_TYPE.equalsIgnoreCase(entryName);
- }
-
- @Override
- public int getPriority() {
- return 1;
- }
+ private boolean isMimeType(String entryName) {
+ return FILE_MIME_TYPE.equalsIgnoreCase(entryName);
+ }
- @Override
- public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException {
+ @Override
+ public int getPriority() {
+ return 1;
+ }
- if(isMimeType(entryName)) {
- String mimeType = IOUtils.toString(is, "UTF-8");
- container.setMimeType(mimeType);
- return true;
- }
+ @Override
+ public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException {
- return false;
+ if (isMimeType(entryName)) {
+ final String mimeType = IOUtils.toString(is, "UTF-8");
+ container.setMimeType(mimeType);
+ return true;
}
+
+ return false;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java
index 621c9d4..08adbe9 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SignatureHandler.java
@@ -1,36 +1,37 @@
package at.gv.egiz.asic.impl.handler;
-import at.gv.egiz.asic.impl.ASiCContainer;
-import at.gv.egovernment.moa.spss.MOAException;
-
import java.io.IOException;
import java.io.InputStream;
+import at.gv.egiz.asic.impl.ASiCContainer;
+import at.gv.egovernment.moa.spss.MOAException;
+
/**
* Created by Andreas Fitzek on 6/15/16.
*/
public abstract class SignatureHandler extends BaseHandler {
- @Override
- public int getPriority() {
- return 0;
- }
-
- protected abstract boolean matches(String entryName);
+ @Override
+ public int getPriority() {
+ return 0;
+ }
- protected abstract void setType(ASiCContainer container) throws MOAException;
+ protected abstract boolean matches(String entryName);
- @Override
- public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException, MOAException {
- boolean signature = this.matches(entryName);
+ protected abstract void setType(ASiCContainer container) throws MOAException;
- if(signature) {
- this.setType(container);
- container.addSignatureEntry(buildASiCEntry(entryName, is));
- return true;
- }
+ @Override
+ public boolean handle(String entryName, InputStream is, ASiCContainer container) throws IOException,
+ MOAException {
+ final boolean signature = this.matches(entryName);
- return false;
+ if (signature) {
+ this.setType(container);
+ container.addSignatureEntry(buildASiCEntry(entryName, is));
+ return true;
}
+ return false;
+ }
+
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java
index fdeda41..b049767 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCCAdESHandler.java
@@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants;
* Created by Andreas Fitzek on 6/15/16.
*/
public class SimpleASiCCAdESHandler extends CAdESHandler {
- @Override
- protected boolean matches(String entryName) {
- return (ASiCConstants.FILE_META_INF + "signature.p7s").equalsIgnoreCase(entryName);
- }
+ @Override
+ protected boolean matches(String entryName) {
+ return (ASiCConstants.FILE_META_INF + "signature.p7s").equalsIgnoreCase(entryName);
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java
index 66a7546..8425b51 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleASiCXAdESHandler.java
@@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants;
* Created by Andreas Fitzek on 6/15/16.
*/
public class SimpleASiCXAdESHandler extends XAdESHandler {
- @Override
- protected boolean matches(String entryName) {
- return (ASiCConstants.FILE_META_INF + "signatures.xml").equalsIgnoreCase(entryName);
- }
+ @Override
+ protected boolean matches(String entryName) {
+ return (ASiCConstants.FILE_META_INF + "signatures.xml").equalsIgnoreCase(entryName);
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java
index 58221f5..63a70da 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceERSRecordHandler.java
@@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants;
* Created by Andreas Fitzek on 6/17/16.
*/
public class SimpleEvidenceERSRecordHandler extends EvidenceERSRecordHandler {
- @Override
- protected boolean matches(String entryName) {
- return (ASiCConstants.FILE_META_INF + "evidencerecord.ers").equalsIgnoreCase(entryName);
- }
+ @Override
+ protected boolean matches(String entryName) {
+ return (ASiCConstants.FILE_META_INF + "evidencerecord.ers").equalsIgnoreCase(entryName);
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java
index dacc218..db7c063 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/SimpleEvidenceXMLRecordHandler.java
@@ -6,8 +6,8 @@ import at.gv.egiz.asic.api.ASiCConstants;
* Created by Andreas Fitzek on 6/17/16.
*/
public class SimpleEvidenceXMLRecordHandler extends EvidenceERSRecordHandler {
- @Override
- protected boolean matches(String entryName) {
- return (ASiCConstants.FILE_META_INF + "evidencerecord.xml").equalsIgnoreCase(entryName);
- }
+ @Override
+ protected boolean matches(String entryName) {
+ return (ASiCConstants.FILE_META_INF + "evidencerecord.xml").equalsIgnoreCase(entryName);
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java
index ff19759..19e37c1 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/handler/XAdESHandler.java
@@ -10,8 +10,8 @@ import at.gv.egovernment.moa.spss.MOAException;
*/
public abstract class XAdESHandler extends SignatureHandler implements EntryHandler, ASiCConstants {
- @Override
- protected void setType(ASiCContainer container) throws MOAException {
- container.setIsXAdES();
- }
+ @Override
+ protected void setType(ASiCContainer container) throws MOAException {
+ container.setIsXAdES();
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java
index cc2d363..3060f67 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/BaseVerifier.java
@@ -1,61 +1,61 @@
package at.gv.egiz.asic.impl.verifier;
-import at.gv.egiz.asic.impl.Verifier;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
-import org.apache.commons.codec.binary.Hex;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.codec.binary.Hex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.asic.impl.Verifier;
+
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public abstract class BaseVerifier implements Verifier {
- protected static Map<String, String> hashTranslator = new HashMap<String, String>();
-
- static {
- hashTranslator.put("http://www.w3.org/2000/09/xmldsig#sha1", "SHA-1");
- hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha224", "SHA-224");
- hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha256", "SHA-256");
- hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha384", "SHA-384");
- hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha512", "SHA-512");
- hashTranslator.put("http://www.w3.org/2001/04/xmlenc#ripemd160", "RIPEMD-160");
- }
-
- private static final Logger logger = LoggerFactory.getLogger(BaseVerifier.class);
-
- protected boolean compareHash(byte[] reference, byte[] calculated, String refName) {
- String referenceHex = Hex.encodeHexString(reference);
- String calculatedHex = Hex.encodeHexString(calculated);
- if(Arrays.equals(reference, calculated)) {
- logger.debug("Digest from manifest do match for {}", refName);
- return true;
- } else {
- logger.info("Digest from manifest do not match for {}", refName);
- logger.info("Digest from manifest for {} : {}", refName, referenceHex);
- logger.info("Digest from calculated for {} : {}", refName, calculatedHex);
- return false;
- }
+ protected static Map<String, String> hashTranslator = new HashMap<>();
+
+ static {
+ hashTranslator.put("http://www.w3.org/2000/09/xmldsig#sha1", "SHA-1");
+ hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha224", "SHA-224");
+ hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha256", "SHA-256");
+ hashTranslator.put("http://www.w3.org/2001/04/xmldsig-more#sha384", "SHA-384");
+ hashTranslator.put("http://www.w3.org/2001/04/xmlenc#sha512", "SHA-512");
+ hashTranslator.put("http://www.w3.org/2001/04/xmlenc#ripemd160", "RIPEMD-160");
+ }
+
+ private static final Logger logger = LoggerFactory.getLogger(BaseVerifier.class);
+
+ protected boolean compareHash(byte[] reference, byte[] calculated, String refName) {
+ final String referenceHex = Hex.encodeHexString(reference);
+ final String calculatedHex = Hex.encodeHexString(calculated);
+ if (Arrays.equals(reference, calculated)) {
+ logger.debug("Digest from manifest do match for {}", refName);
+ return true;
+ } else {
+ logger.info("Digest from manifest do not match for {}", refName);
+ logger.info("Digest from manifest for {} : {}", refName, referenceHex);
+ logger.info("Digest from calculated for {} : {}", refName, calculatedHex);
+ return false;
}
+ }
- protected MessageDigest getMessageDigestFromURI(String uri) {
- try {
+ protected MessageDigest getMessageDigestFromURI(String uri) {
+ try {
- String algo = hashTranslator.get(uri);
+ String algo = hashTranslator.get(uri);
- if(algo == null) {
- algo = uri;
- }
+ if (algo == null) {
+ algo = uri;
+ }
- return MessageDigest.getInstance(algo);
- } catch (NoSuchAlgorithmException e) {
- return null;
- }
+ return MessageDigest.getInstance(algo);
+ } catch (final NoSuchAlgorithmException e) {
+ return null;
}
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java
index 5ab677c..ac96f90 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/CAdESVerifier.java
@@ -1,5 +1,8 @@
package at.gv.egiz.asic.impl.verifier;
+import java.io.InputStream;
+import java.util.Date;
+
import at.gv.egiz.asic.api.ASiC;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.api.SPSSFactory;
@@ -9,35 +12,34 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
-import java.io.InputStream;
-import java.util.Date;
-
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public abstract class CAdESVerifier extends BaseVerifier {
- @Override
- public boolean handles(ASiC asic) {
- return asic.isCAdES();
- }
+ @Override
+ public boolean handles(ASiC asic) {
+ return asic.isCAdES();
+ }
- protected VerifyCMSSignatureResponse runCMSVerification(InputStream signedData, InputStream cmsSignature,
- String trustProfileID, Date date) throws MOAException {
- CMSContent cmsContent = SPSSFactory.getInstance().createCMSContent(signedData);
- CMSDataObject cmsDataObject = SPSSFactory.getInstance().createCMSDataObject(null, cmsContent, null, null);
+ protected VerifyCMSSignatureResponse runCMSVerification(InputStream signedData, InputStream cmsSignature,
+ String trustProfileID, Date date) throws MOAException {
+ final CMSContent cmsContent = SPSSFactory.getInstance().createCMSContent(signedData);
+ final CMSDataObject cmsDataObject = SPSSFactory.getInstance().createCMSDataObject(null, cmsContent, null,
+ null);
- VerifyCMSSignatureRequest verifyCMSSignatureRequest =
- SPSSFactory.getInstance().createVerifyCMSSignatureRequest(
- VerifyCMSSignatureRequest.ALL_SIGNATORIES,
- date,
- cmsSignature,
- cmsDataObject,
- trustProfileID,
- false,
- true);
+ final VerifyCMSSignatureRequest verifyCMSSignatureRequest =
+ SPSSFactory.getInstance().createVerifyCMSSignatureRequest(
+ VerifyCMSSignatureRequest.ALL_SIGNATORIES,
+ date,
+ cmsSignature,
+ cmsDataObject,
+ trustProfileID,
+ false,
+ true);
- VerifyCMSSignatureResponse verifyResponse = CMSSignatureVerificationInvoker.getInstance().verifyCMSSignature(
- verifyCMSSignatureRequest);
- return verifyResponse;
- }
+ final VerifyCMSSignatureResponse verifyResponse = CMSSignatureVerificationInvoker.getInstance()
+ .verifyCMSSignature(
+ verifyCMSSignatureRequest);
+ return verifyResponse;
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java
index 4dda99f..62ac1c8 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedCAdESVerifier.java
@@ -1,5 +1,19 @@
package at.gv.egiz.asic.impl.verifier;
+import java.io.IOException;
+import java.security.DigestInputStream;
+import java.security.MessageDigest;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.bind.JAXB;
+
+import org.apache.commons.codec.binary.Hex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import at.gv.egiz.asic.ASiCManifestType;
import at.gv.egiz.asic.DataObjectReferenceType;
import at.gv.egiz.asic.api.ASiC;
@@ -11,162 +25,155 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.cmsverify.*;
+import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
+import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement;
import at.gv.egovernment.moa.spss.api.common.CheckResult;
import at.gv.egovernment.moa.spss.api.common.SignerInfo;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
-import org.apache.commons.codec.binary.Hex;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.bind.JAXB;
-import java.io.IOException;
-import java.security.DigestInputStream;
-import java.security.MessageDigest;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public class ExtendedCAdESVerifier extends CAdESVerifier {
- private static final Logger logger = LoggerFactory.getLogger(ExtendedCAdESVerifier.class);
+ private static final Logger logger = LoggerFactory.getLogger(ExtendedCAdESVerifier.class);
- @Override
- public boolean handles(ASiC asic) {
- return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat());
- }
+ @Override
+ public boolean handles(ASiC asic) {
+ return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat());
+ }
+
+ @Override
+ public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response)
+ throws MOAException {
+ try {
+ final Iterator<ASiCEntry> informationsIterator = asic.getInformationEntries().iterator();
- @Override
- public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException {
- try {
- Iterator<ASiCEntry> informationsIterator = asic.getInformationEntries().iterator();
+ while (informationsIterator.hasNext()) {
+ final ASiCEntry informationEntry = informationsIterator.next();
+
+ if (informationEntry.getEntryName().startsWith("META-INF/") && informationEntry.getEntryName()
+ .endsWith(".xml")
+ && informationEntry.getEntryName().contains("ASiCManifest")) {
+ // Got ASiC Manifest
+ final ASiCManifestType asiCManifestType = JAXB.unmarshal(informationEntry.getContents(),
+ ASiCManifestType.class);
+ final String signatureName = asiCManifestType.getSigReference().getURI();
+
+ ASiCEntry cadesSignature = null;
+
+ // find referenced signature
+ final Iterator<ASiCEntry> cadesSignatureIterator = asic.getSignaturesEntries().iterator();
+
+ while (cadesSignatureIterator.hasNext()) {
+ final ASiCEntry tmpCadesSignature = cadesSignatureIterator.next();
+ if (signatureName.equalsIgnoreCase(tmpCadesSignature.getEntryName())) {
+ cadesSignature = tmpCadesSignature;
+ break;
+ }
+ }
- while (informationsIterator.hasNext()) {
- ASiCEntry informationEntry = informationsIterator.next();
-
- if (informationEntry.getEntryName().startsWith("META-INF/") && informationEntry.getEntryName().endsWith(".xml")
- && informationEntry.getEntryName().contains("ASiCManifest")) {
- // Got ASiC Manifest
- ASiCManifestType asiCManifestType = JAXB.unmarshal(informationEntry.getContents(), ASiCManifestType.class);
- String signatureName = asiCManifestType.getSigReference().getURI();
-
- ASiCEntry cadesSignature = null;
-
- // find referenced signature
- Iterator<ASiCEntry> cadesSignatureIterator = asic.getSignaturesEntries().iterator();
-
- while (cadesSignatureIterator.hasNext()) {
- ASiCEntry tmpCadesSignature = cadesSignatureIterator.next();
- if (signatureName.equalsIgnoreCase(tmpCadesSignature.getEntryName())) {
- cadesSignature = tmpCadesSignature;
- break;
- }
- }
-
- if (cadesSignature == null) {
- throw new MOAApplicationException("asic.0004", new Object[]{signatureName});
- }
-
- // verify all references
-
- boolean allReferencesValid = true;
- List<AsicSignedFilesContainer> signedFiles = new ArrayList<AsicSignedFilesContainer>();
- Iterator<DataObjectReferenceType> dataObjectReferenceTypeIterator = asiCManifestType.getDataObjectReference().iterator();
- while (dataObjectReferenceTypeIterator.hasNext()) {
- DataObjectReferenceType dataObjectReferenceType = dataObjectReferenceTypeIterator.next();
-
- String mdURI = dataObjectReferenceType.getDigestMethod().getAlgorithm();
- String uri = dataObjectReferenceType.getURI();
- signedFiles.add(new AsicSignedFilesContainer(uri, mdURI));
-
- Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator();
-
- while (dataEntryIterator.hasNext()) {
- ASiCEntry dataEntry = dataEntryIterator.next();
- if (uri.equalsIgnoreCase(dataEntry.getEntryName())) {
- MessageDigest md = this.getMessageDigestFromURI(mdURI);
- if (md == null) {
- throw new MOAApplicationException("asic.0005", new Object[]{mdURI});
- }
- DigestInputStream dis = new DigestInputStream(dataEntry.getContents(), md);
- byte[] buffer = new byte[8096];
- while (dis.read(buffer) > 0) ;
-
- if (!this.compareHash(dataObjectReferenceType.getDigestValue(), md.digest(), uri)) {
- allReferencesValid = false;
- }
-
- dataEntry.getContents().reset();
- break;
- }
- }
- }
-
- if (allReferencesValid) {
- logger.info("ASiCManifest {} references do match data files!",
- informationEntry.getEntryName());
- }
-
- informationEntry.getContents().reset();
- MessageDigest md = this.getMessageDigestFromURI("SHA-256");
- DigestInputStream dis = new DigestInputStream(informationEntry.getContents(), md);
-
- VerifyCMSSignatureResponse verifyResponse =
- this.runCMSVerification(dis, cadesSignature.getContents(), trustProfileID, date);
-
- dis.close();
-
- String fullDigest = Hex.encodeHexString(md.digest());
- logger.debug("CMS Input data {}", fullDigest);
-
- if (!allReferencesValid) {
- logger.warn("ASiCManifest {} References do not match data files!",
- informationEntry.getEntryName());
- List responseElements = new ArrayList();
-
- SignerInfo signerInfo;
-
-
- // add SignerInfo element
- Iterator responseElementIterator = verifyResponse.getResponseElements().iterator();
- while (responseElementIterator.hasNext()) {
- VerifyCMSSignatureResponseElement orig = (VerifyCMSSignatureResponseElement)
- responseElementIterator.next();
-
- CheckResult signatureCheck;
- CheckResult certificateCheck;
-
- // add SignatureCheck element
- signatureCheck = SPSSFactory.getInstance().createCheckResult(1, null);
-
- // build the response element
- VerifyCMSSignatureResponseElement responseElement =
- SPSSFactory.getInstance().createVerifyCMSSignatureResponseElement(
- orig.getSignerInfo(),
- signatureCheck,
- orig.getCertificateCheck(),
- orig.getAdESFormResults(),
- orig.getExtendedCertificateCheck(),
- orig.getSignatureAlgorithm(),
- null,
- null);
- responseElements.add(responseElement);
- }
- VerifyCMSSignatureResponse verifyCMSSignatureResponse = SPSSFactory.getInstance().
- createVerifyCMSSignatureResponse(responseElements);
- response.add(new ASiCVerificationResult(signedFiles, verifyCMSSignatureResponse));
- continue;
- } else {
- response.add(new ASiCVerificationResult(signedFiles, verifyResponse));
- }
+ if (cadesSignature == null) {
+ throw new MOAApplicationException("asic.0004", new Object[] { signatureName });
+ }
+
+ // verify all references
+
+ boolean allReferencesValid = true;
+ final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>();
+ final Iterator<DataObjectReferenceType> dataObjectReferenceTypeIterator = asiCManifestType
+ .getDataObjectReference().iterator();
+ while (dataObjectReferenceTypeIterator.hasNext()) {
+ final DataObjectReferenceType dataObjectReferenceType = dataObjectReferenceTypeIterator.next();
+
+ final String mdURI = dataObjectReferenceType.getDigestMethod().getAlgorithm();
+ final String uri = dataObjectReferenceType.getURI();
+ signedFiles.add(new AsicSignedFilesContainer(uri, mdURI));
+
+ final Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator();
+
+ while (dataEntryIterator.hasNext()) {
+ final ASiCEntry dataEntry = dataEntryIterator.next();
+ if (uri.equalsIgnoreCase(dataEntry.getEntryName())) {
+ final MessageDigest md = this.getMessageDigestFromURI(mdURI);
+ if (md == null) {
+ throw new MOAApplicationException("asic.0005", new Object[] { mdURI });
}
+ final DigestInputStream dis = new DigestInputStream(dataEntry.getContents(), md);
+ final byte[] buffer = new byte[8096];
+ while (dis.read(buffer) > 0) {
+ ;
+ }
+
+ if (!this.compareHash(dataObjectReferenceType.getDigestValue(), md.digest(), uri)) {
+ allReferencesValid = false;
+ }
+
+ dataEntry.getContents().reset();
+ break;
+ }
+ }
+ }
+
+ if (allReferencesValid) {
+ logger.info("ASiCManifest {} references do match data files!",
+ informationEntry.getEntryName());
+ }
+
+ informationEntry.getContents().reset();
+ final MessageDigest md = this.getMessageDigestFromURI("SHA-256");
+ final DigestInputStream dis = new DigestInputStream(informationEntry.getContents(), md);
+
+ final VerifyCMSSignatureResponse verifyResponse =
+ this.runCMSVerification(dis, cadesSignature.getContents(), trustProfileID, date);
+
+ dis.close();
+
+ final String fullDigest = Hex.encodeHexString(md.digest());
+ logger.debug("CMS Input data {}", fullDigest);
+
+ if (!allReferencesValid) {
+ logger.warn("ASiCManifest {} References do not match data files!",
+ informationEntry.getEntryName());
+ final List responseElements = new ArrayList();
+
+ final SignerInfo signerInfo;
+
+ // add SignerInfo element
+ final Iterator responseElementIterator = verifyResponse.getResponseElements().iterator();
+ while (responseElementIterator.hasNext()) {
+ final VerifyCMSSignatureResponseElement orig =
+ (VerifyCMSSignatureResponseElement) responseElementIterator.next();
+
+ CheckResult signatureCheck;
+ final CheckResult certificateCheck;
+
+ // add SignatureCheck element
+ signatureCheck = SPSSFactory.getInstance().createCheckResult(1, null);
+
+ // build the response element
+ final VerifyCMSSignatureResponseElement responseElement =
+ SPSSFactory.getInstance().createVerifyCMSSignatureResponseElement(
+ orig.getSignerInfo(),
+ signatureCheck,
+ orig.getCertificateCheck(),
+ orig.getAdESFormResults(),
+ orig.getExtendedCertificateCheck(),
+ orig.getSignatureAlgorithm(),
+ null,
+ null);
+ responseElements.add(responseElement);
}
- } catch (IOException ex) {
- throw new MOASystemException("asic.0003", null, ex);
+ final VerifyCMSSignatureResponse verifyCMSSignatureResponse = SPSSFactory.getInstance()
+ .createVerifyCMSSignatureResponse(responseElements);
+ response.add(new ASiCVerificationResult(signedFiles, verifyCMSSignatureResponse));
+ continue;
+ } else {
+ response.add(new ASiCVerificationResult(signedFiles, verifyResponse));
+ }
}
+ }
+ } catch (final IOException ex) {
+ throw new MOASystemException("asic.0003", null, ex);
}
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java
index 86918bf..565921f 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/ExtendedXAdESVerifier.java
@@ -1,5 +1,30 @@
package at.gv.egiz.asic.impl.verifier;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXB;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
import at.gv.egiz.asic.ReferenceType;
import at.gv.egiz.asic.SignatureType;
import at.gv.egiz.asic.XAdESSignaturesType;
@@ -15,187 +40,187 @@ import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.SPSSFactory;
import at.gv.egovernment.moa.spss.api.common.Content;
import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
-import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl;
import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;
import at.gv.egovernment.moaspss.util.URLEncoder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.*;
-import org.xml.sax.SAXException;
-
-import javax.xml.bind.*;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.*;
-import java.util.*;
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public class ExtendedXAdESVerifier extends XAdESVerifier {
- private static final Logger logger = LoggerFactory.getLogger(ExtendedXAdESVerifier.class);
+ private static final Logger logger = LoggerFactory.getLogger(ExtendedXAdESVerifier.class);
- private void resetStream(InputStream is) {
- try {
- is.reset();
- } catch (IOException e) {
- throw new MOARuntimeException("Failed to reset inputStream", null, e);
- }
+ private void resetStream(InputStream is) {
+ try {
+ is.reset();
+ } catch (final IOException e) {
+ throw new MOARuntimeException("Failed to reset inputStream", null, e);
}
+ }
- @Override
- public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException {
- try {
- Iterator<ASiCEntry> xadesSignatureIterator = asic.getSignaturesEntries().iterator();
+ @Override
+ public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response)
+ throws MOAException {
+ try {
+ final Iterator<ASiCEntry> xadesSignatureIterator = asic.getSignaturesEntries().iterator();
- while (xadesSignatureIterator.hasNext()) {
- ASiCEntry xadesSignature = xadesSignatureIterator.next();
+ while (xadesSignatureIterator.hasNext()) {
+ final ASiCEntry xadesSignature = xadesSignatureIterator.next();
- List<SignatureType> xmlSignatures = null;
- //int signatureSize = 0;
+ List<SignatureType> xmlSignatures = null;
+ // int signatureSize = 0;
-
- // TODO: support not only XAdESSignaturesType object 4.4.3.2
+ // TODO: support not only XAdESSignaturesType object 4.4.3.2
// XAdESSignaturesType xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class);
- // signatureSize = xAdESSignaturesType.getSignature().size();
-
- // this.resetStream(xadesSignature.getContents());
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- dbFactory.setNamespaceAware(true);
- //dbFactory.setValidating(true);
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(xadesSignature.getContents());
-
- this.resetStream(xadesSignature.getContents());
-
- org.w3c.dom.Element rootElement = doc.getDocumentElement();
-
- if ("http://www.w3.org/2000/09/xmldsig#".equals(rootElement.getNamespaceURI()) &&
- "Signature".equals(rootElement.getTagName())) {
- JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic");
- JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(rootElement, SignatureType.class);
- SignatureType xmlSignature = xmlSignatureJaxb.getValue();
- xmlSignatures = new ArrayList<SignatureType>();
- xmlSignatures.add(xmlSignature);
- } else if ("http://uri.etsi.org/02918/v1.2.1#".equals(rootElement.getNamespaceURI()) &&
- "XAdESSignatures".equals(rootElement.getLocalName())) {
- XAdESSignaturesType xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class);
- xmlSignatures = xAdESSignaturesType.getSignature();
-
- //TODO: maybe add additional XAdES version
- } else if ("http://uri.etsi.org/02918/v1.1.1#".equals(rootElement.getNamespaceURI()) &&
- "XAdESSignatures".equals(rootElement.getLocalName())) {
-
- logger.warn("ASiC v1.1.1 is not supported any more. MOA-SP only supports v1.2.1 (http://uri.etsi.org/02918/v1.2.1#)");
- //XAdESSignaturesType xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class);
- //xmlSignatures = xAdESSignaturesType.getSignature();
-
- } else {
- NodeList childrenNodes = rootElement.getChildNodes();
- for(int i = 0; i < childrenNodes.getLength(); i++) {
- Node node = childrenNodes.item(i);
- JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic");
- xmlSignatures = new ArrayList<SignatureType>();
- if ("http://www.w3.org/2000/09/xmldsig#".equals(node.getNamespaceURI()) &&
- "Signature".equals(rootElement.getTagName())) {
- JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(rootElement, SignatureType.class);
- SignatureType xmlSignature = xmlSignatureJaxb.getValue();
- xmlSignatures.add(xmlSignature);
- }
- }
- }
-
-
- this.resetStream(xadesSignature.getContents());
-
- Map namespaces = new HashMap();
-
- //namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#");
- namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#");
-
- if (xmlSignatures == null || xmlSignatures.size() == 0) {
- logger.info("ASiC container does not include a signature or signature format is not supported");
- throw new MOAApplicationException("asic.0016", null);
-
- }
-
- for (int i = 0; i < xmlSignatures.size(); i++) {
- //NodeList nodes = (NodeList) result;
-
- //for(int i = 0; i < nodes.getLength(); i++) {
- //Node node = nodes.item(i);
- //JAXBContext jc = JAXBContext.newInstance( "at.gv.egiz.asic" );
- //JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(node, SignatureType.class);
- //SignatureType xmlSignature = xmlSignatureJaxb.getValue();
- List<AsicSignedFilesContainer> signedFiles = new ArrayList<AsicSignedFilesContainer>();
-
- //Iterator<ReferenceType> it = xmlSignature.getSignedInfo().getReference().iterator();
- Iterator<ReferenceType> it = xmlSignatures.get(i).getSignedInfo().getReference().iterator();
- while (it.hasNext()) {
- ReferenceType refType = it.next();
- if (!refType.getURI().startsWith("#")) {
- signedFiles.add(new AsicSignedFilesContainer(refType.getURI(), refType.getDigestMethod().getAlgorithm()));
- }
- }
-
- Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator();
-
- Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null);
-
- List supplementsList = new ArrayList();
- while (dataEntryIterator.hasNext()) {
- ASiCEntry dataEntry = dataEntryIterator.next();
- dataEntry.getContents().reset();
- String entryName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8")
- .replaceAll("\\+", "%20")
- .replaceAll("\\%21", "!")
- .replaceAll("\\%2F", "/")
- //.replaceAll("\\%27", "'")
- //.replaceAll("\\%28", "(")
- //.replaceAll("\\%29", ")")
- .replaceAll("\\%7E", "~");
- logger.info("Adding Entry : {}", entryName);
- Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(), entryName);
- XMLDataObjectAssociation association = SPSSFactoryImpl.getInstance().createXMLDataObjectAssociation(null, dataContent);
- SupplementProfile profile = SPSSFactoryImpl.getInstance().createSupplementProfile(association);
- supplementsList.add(profile);
- }
- String location = "(//ds:Signature)[" + (i + 1) + "]";
-
- VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance().createVerifySignatureLocation(
- location, namespaces);
-
- VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(content, verifySignatureLocation);
-
- VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance().createVerifyXMLSignatureRequest(
- date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true);
-
- response.add(new ASiCVerificationResult(signedFiles,
- XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest)));
- }
+ // signatureSize = xAdESSignaturesType.getSignature().size();
+
+ // this.resetStream(xadesSignature.getContents());
+ final DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ dbFactory.setNamespaceAware(true);
+ // dbFactory.setValidating(true);
+ final DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ final Document doc = dBuilder.parse(xadesSignature.getContents());
+
+ this.resetStream(xadesSignature.getContents());
+
+ final org.w3c.dom.Element rootElement = doc.getDocumentElement();
+
+ if ("http://www.w3.org/2000/09/xmldsig#".equals(rootElement.getNamespaceURI()) &&
+ "Signature".equals(rootElement.getTagName())) {
+ final JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic");
+ final JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(rootElement,
+ SignatureType.class);
+ final SignatureType xmlSignature = xmlSignatureJaxb.getValue();
+ xmlSignatures = new ArrayList<>();
+ xmlSignatures.add(xmlSignature);
+ } else if ("http://uri.etsi.org/02918/v1.2.1#".equals(rootElement.getNamespaceURI()) &&
+ "XAdESSignatures".equals(rootElement.getLocalName())) {
+ final XAdESSignaturesType xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(),
+ XAdESSignaturesType.class);
+ xmlSignatures = xAdESSignaturesType.getSignature();
+
+ // TODO: maybe add additional XAdES version
+ } else if ("http://uri.etsi.org/02918/v1.1.1#".equals(rootElement.getNamespaceURI()) &&
+ "XAdESSignatures".equals(rootElement.getLocalName())) {
+
+ logger.warn(
+ "ASiC v1.1.1 is not supported any more. MOA-SP only supports v1.2.1 (http://uri.etsi.org/02918/v1.2.1#)");
+ // XAdESSignaturesType xAdESSignaturesType =
+ // JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class);
+ // xmlSignatures = xAdESSignaturesType.getSignature();
+
+ } else {
+ final NodeList childrenNodes = rootElement.getChildNodes();
+ for (int i = 0; i < childrenNodes.getLength(); i++) {
+ final Node node = childrenNodes.item(i);
+ final JAXBContext jc = JAXBContext.newInstance("at.gv.egiz.asic");
+ xmlSignatures = new ArrayList<>();
+ if ("http://www.w3.org/2000/09/xmldsig#".equals(node.getNamespaceURI()) &&
+ "Signature".equals(rootElement.getTagName())) {
+ final JAXBElement<SignatureType> xmlSignatureJaxb = jc.createUnmarshaller().unmarshal(
+ rootElement, SignatureType.class);
+ final SignatureType xmlSignature = xmlSignatureJaxb.getValue();
+ xmlSignatures.add(xmlSignature);
}
- } catch( UnsupportedEncodingException e) {
- logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e);
- throw new MOARuntimeException("asic.0003", null, e);
- } catch (IOException ex) {
- throw new MOASystemException("asic.0003", null, ex);
- } catch (ParserConfigurationException e) {
- throw new MOASystemException("asic.0003", null, e);
- } catch (SAXException e) {
- throw new MOASystemException("asic.0003", null, e);
- } catch (JAXBException e) {
- throw new MOASystemException("asic.0003", null, e);
+ }
}
- }
- @Override
- public boolean handles(ASiC asic) {
- return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat());
+ this.resetStream(xadesSignature.getContents());
+
+ final Map namespaces = new HashMap();
+
+ // namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#");
+ namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#");
+
+ if (xmlSignatures == null || xmlSignatures.size() == 0) {
+ logger.info("ASiC container does not include a signature or signature format is not supported");
+ throw new MOAApplicationException("asic.0016", null);
+
+ }
+
+ for (int i = 0; i < xmlSignatures.size(); i++) {
+ // NodeList nodes = (NodeList) result;
+
+ // for(int i = 0; i < nodes.getLength(); i++) {
+ // Node node = nodes.item(i);
+ // JAXBContext jc = JAXBContext.newInstance( "at.gv.egiz.asic" );
+ // JAXBElement<SignatureType> xmlSignatureJaxb =
+ // jc.createUnmarshaller().unmarshal(node, SignatureType.class);
+ // SignatureType xmlSignature = xmlSignatureJaxb.getValue();
+ final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>();
+
+ // Iterator<ReferenceType> it =
+ // xmlSignature.getSignedInfo().getReference().iterator();
+ final Iterator<ReferenceType> it = xmlSignatures.get(i).getSignedInfo().getReference().iterator();
+ while (it.hasNext()) {
+ final ReferenceType refType = it.next();
+ if (!refType.getURI().startsWith("#")) {
+ signedFiles.add(new AsicSignedFilesContainer(refType.getURI(), refType.getDigestMethod()
+ .getAlgorithm()));
+ }
+ }
+
+ final Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator();
+
+ final Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null);
+
+ final List supplementsList = new ArrayList();
+ while (dataEntryIterator.hasNext()) {
+ final ASiCEntry dataEntry = dataEntryIterator.next();
+ dataEntry.getContents().reset();
+ final String entryName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8")
+ .replaceAll("\\+", "%20")
+ .replaceAll("\\%21", "!")
+ .replaceAll("\\%2F", "/")
+ // .replaceAll("\\%27", "'")
+ // .replaceAll("\\%28", "(")
+ // .replaceAll("\\%29", ")")
+ .replaceAll("\\%7E", "~");
+ logger.info("Adding Entry : {}", entryName);
+ final Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(),
+ entryName);
+ final XMLDataObjectAssociation association = SPSSFactory.getInstance()
+ .createXMLDataObjectAssociation(null, dataContent);
+ final SupplementProfile profile = SPSSFactory.getInstance().createSupplementProfile(association);
+ supplementsList.add(profile);
+ }
+ final String location = "(//ds:Signature)[" + (i + 1) + "]";
+
+ final VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance()
+ .createVerifySignatureLocation(
+ location, namespaces);
+
+ final VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(
+ content, verifySignatureLocation);
+
+ final VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance()
+ .createVerifyXMLSignatureRequest(
+ date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true);
+
+ response.add(new ASiCVerificationResult(signedFiles,
+ XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest)));
+ }
+ }
+ } catch (final UnsupportedEncodingException e) {
+ logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e);
+ throw new MOARuntimeException("asic.0003", null, e);
+ } catch (final IOException ex) {
+ throw new MOASystemException("asic.0003", null, ex);
+ } catch (final ParserConfigurationException e) {
+ throw new MOASystemException("asic.0003", null, e);
+ } catch (final SAXException e) {
+ throw new MOASystemException("asic.0003", null, e);
+ } catch (final JAXBException e) {
+ throw new MOASystemException("asic.0003", null, e);
}
+ }
+
+ @Override
+ public boolean handles(ASiC asic) {
+ return super.handles(asic) && ASiCFormat.ASiCE.equals(asic.getFormat());
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java
index f1756fa..5af344a 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleCAdESVerifier.java
@@ -1,47 +1,42 @@
package at.gv.egiz.asic.impl.verifier;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
import at.gv.egiz.asic.api.ASiC;
import at.gv.egiz.asic.api.ASiCEntry;
import at.gv.egiz.asic.api.ASiCFormat;
import at.gv.egiz.asic.api.ASiCVerificationResult;
import at.gv.egiz.asic.impl.AsicSignedFilesContainer;
import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public class SimpleCAdESVerifier extends CAdESVerifier {
- @Override
- public boolean handles(ASiC asic) {
- return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat());
- }
+ @Override
+ public boolean handles(ASiC asic) {
+ return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat());
+ }
- @Override
- public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException {
- ASiCEntry cadesSignature = asic.getSignaturesEntries().get(0);
+ @Override
+ public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response)
+ throws MOAException {
+ final ASiCEntry cadesSignature = asic.getSignaturesEntries().get(0);
- //get first element
- ASiCEntry dataEntry = asic.getDataEntries().iterator().next();
+ // get first element
+ final ASiCEntry dataEntry = asic.getDataEntries().iterator().next();
- List<AsicSignedFilesContainer> signedFiles = new ArrayList<AsicSignedFilesContainer>();
- signedFiles.add(new AsicSignedFilesContainer(dataEntry.getEntryName(), null));
+ final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>();
+ signedFiles.add(new AsicSignedFilesContainer(dataEntry.getEntryName(), null));
- VerifyCMSSignatureResponse verifyResponse =
- this.runCMSVerification(dataEntry.getContents(), cadesSignature.getContents(), trustProfileID, date);
-
- response.add(new ASiCVerificationResult(signedFiles,
- verifyResponse));
- }
+ final VerifyCMSSignatureResponse verifyResponse =
+ this.runCMSVerification(dataEntry.getContents(), cadesSignature.getContents(), trustProfileID, date);
+ response.add(new ASiCVerificationResult(signedFiles,
+ verifyResponse));
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java
index b378d5b..bc418e2 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/SimpleXAdESVerifier.java
@@ -1,5 +1,19 @@
package at.gv.egiz.asic.impl.verifier;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXB;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import at.gv.egiz.asic.ReferenceType;
import at.gv.egiz.asic.XAdESSignaturesType;
import at.gv.egiz.asic.api.ASiC;
@@ -13,117 +27,116 @@ import at.gv.egovernment.moa.spss.MOARuntimeException;
import at.gv.egovernment.moa.spss.api.SPSSFactory;
import at.gv.egovernment.moa.spss.api.common.Content;
import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
-import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl;
import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;
import at.gv.egovernment.moaspss.util.URLEncoder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.xml.bind.JAXB;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.*;
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public class SimpleXAdESVerifier extends XAdESVerifier {
- private static final Logger logger = LoggerFactory.getLogger(SimpleXAdESVerifier.class);
-
-
- @Override
- public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response) throws MOAException {
- // XAdES
- try {
- ASiCEntry xadesSignature = asic.getSignaturesEntries().get(0);
-
- XAdESSignaturesType xAdESSignaturesType = null;
- try {
- xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class);
- } catch (Throwable ex) {
- logger.warn("Failed to process xml signature: ex");
- throw new MOAApplicationException("asic.0003", null, ex);
- }
-
- if (xAdESSignaturesType == null) {
- throw new MOAApplicationException("asic.0003", null);
- }
-
- int signatureSize = xAdESSignaturesType.getSignature().size();
-
- try {
- xadesSignature.getContents().reset();
- } catch (IOException e) {
- throw new MOARuntimeException("asic.0003", null, e);
- }
- Map namespaces = new HashMap();
-
- namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#");
- namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#");
-
- for (int i = 0; i < signatureSize; i++) {
-
- List<AsicSignedFilesContainer> signedFiles = new ArrayList<AsicSignedFilesContainer>();
-
- Iterator<ReferenceType> it = xAdESSignaturesType.getSignature().get(i).getSignedInfo().getReference().iterator();
- while (it.hasNext()) {
- ReferenceType refType = it.next();
- if (!refType.getURI().startsWith("#")) {
- signedFiles.add(new AsicSignedFilesContainer(refType.getURI(), refType.getDigestMethod().getAlgorithm()));
- }
- }
-
- boolean addAll = signedFiles.isEmpty() && asic.getDataEntries().size() == 1;
-
- Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator();
-
- Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null);
- List supplementsList = new ArrayList();
- while (dataEntryIterator.hasNext()) {
- ASiCEntry dataEntry = dataEntryIterator.next();
- String uriName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8")
- .replaceAll("\\+", "%20")
- .replaceAll("\\%21", "!")
- .replaceAll("\\%27", "'")
- //.replaceAll("\\%28", "(")
- //.replaceAll("\\%29", ")")
- .replaceAll("\\%7E", "~");
-
- Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(), uriName);
- XMLDataObjectAssociation association = SPSSFactoryImpl.getInstance().createXMLDataObjectAssociation(null, dataContent);
- SupplementProfile profile = SPSSFactoryImpl.getInstance().createSupplementProfile(association);
- supplementsList.add(profile);
-
- if (addAll) {
- signedFiles.add(new AsicSignedFilesContainer(dataEntry.getEntryName(), null));
- }
- }
- String location = "(//ds:Signature)[" + (i + 1) + "]";
-
- VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance().createVerifySignatureLocation(
- location, namespaces);
-
- VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(content, verifySignatureLocation);
-
- VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance().createVerifyXMLSignatureRequest(
- date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true);
-
- response.add(new ASiCVerificationResult(signedFiles,
- XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest)));
- }
- } catch(UnsupportedEncodingException e) {
- logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e);
- throw new MOARuntimeException("asic.0003", null, e);
+ private static final Logger logger = LoggerFactory.getLogger(SimpleXAdESVerifier.class);
+
+ @Override
+ public void verify(ASiC asic, String trustProfileID, Date date, List<ASiCVerificationResult> response)
+ throws MOAException {
+ // XAdES
+ try {
+ final ASiCEntry xadesSignature = asic.getSignaturesEntries().get(0);
+
+ XAdESSignaturesType xAdESSignaturesType = null;
+ try {
+ xAdESSignaturesType = JAXB.unmarshal(xadesSignature.getContents(), XAdESSignaturesType.class);
+ } catch (final Throwable ex) {
+ logger.warn("Failed to process xml signature: ex");
+ throw new MOAApplicationException("asic.0003", null, ex);
+ }
+
+ if (xAdESSignaturesType == null) {
+ throw new MOAApplicationException("asic.0003", null);
+ }
+
+ final int signatureSize = xAdESSignaturesType.getSignature().size();
+
+ try {
+ xadesSignature.getContents().reset();
+ } catch (final IOException e) {
+ throw new MOARuntimeException("asic.0003", null, e);
+ }
+ final Map namespaces = new HashMap();
+
+ namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#");
+ namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#");
+
+ for (int i = 0; i < signatureSize; i++) {
+
+ final List<AsicSignedFilesContainer> signedFiles = new ArrayList<>();
+
+ final Iterator<ReferenceType> it = xAdESSignaturesType.getSignature().get(i).getSignedInfo()
+ .getReference().iterator();
+ while (it.hasNext()) {
+ final ReferenceType refType = it.next();
+ if (!refType.getURI().startsWith("#")) {
+ signedFiles.add(new AsicSignedFilesContainer(refType.getURI(), refType.getDigestMethod()
+ .getAlgorithm()));
+ }
}
- }
- @Override
- public boolean handles(ASiC asic) {
- return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat());
+ final boolean addAll = signedFiles.isEmpty() && asic.getDataEntries().size() == 1;
+
+ final Iterator<ASiCEntry> dataEntryIterator = asic.getDataEntries().iterator();
+
+ final Content content = SPSSFactory.getInstance().createContent(xadesSignature.getContents(), null);
+ final List supplementsList = new ArrayList();
+ while (dataEntryIterator.hasNext()) {
+ final ASiCEntry dataEntry = dataEntryIterator.next();
+ final String uriName = URLEncoder.encode(dataEntry.getEntryName(), "UTF-8")
+ .replaceAll("\\+", "%20")
+ .replaceAll("\\%21", "!")
+ .replaceAll("\\%27", "'")
+ // .replaceAll("\\%28", "(")
+ // .replaceAll("\\%29", ")")
+ .replaceAll("\\%7E", "~");
+
+ final Content dataContent = SPSSFactory.getInstance().createContent(dataEntry.getContents(),
+ uriName);
+ final XMLDataObjectAssociation association = SPSSFactory.getInstance()
+ .createXMLDataObjectAssociation(null, dataContent);
+ final SupplementProfile profile = SPSSFactory.getInstance().createSupplementProfile(association);
+ supplementsList.add(profile);
+
+ if (addAll) {
+ signedFiles.add(new AsicSignedFilesContainer(dataEntry.getEntryName(), null));
+ }
+ }
+ final String location = "(//ds:Signature)[" + (i + 1) + "]";
+
+ final VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance()
+ .createVerifySignatureLocation(
+ location, namespaces);
+
+ final VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(
+ content, verifySignatureLocation);
+
+ final VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance()
+ .createVerifyXMLSignatureRequest(
+ date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true);
+
+ response.add(new ASiCVerificationResult(signedFiles,
+ XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest)));
+ }
+ } catch (final UnsupportedEncodingException e) {
+ logger.error("UTF8 encoding not supported by system. MOA will not work on this system!", e);
+ throw new MOARuntimeException("asic.0003", null, e);
}
+ }
+
+ @Override
+ public boolean handles(ASiC asic) {
+ return super.handles(asic) && ASiCFormat.ASiCS.equals(asic.getFormat());
+ }
} \ No newline at end of file
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java
index 904ad4e..2074464 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/impl/verifier/XAdESVerifier.java
@@ -1,54 +1,54 @@
package at.gv.egiz.asic.impl.verifier;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import at.gv.egiz.asic.api.ASiC;
-import at.gv.egiz.asic.api.ASiCEntry;
-import at.gv.egiz.asic.api.ASiCVerificationResult;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
import at.gv.egovernment.moa.spss.api.common.Content;
-import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
-import at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl;
-import at.gv.egovernment.moa.spss.api.xmlverify.*;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
+import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureInfo;
+import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
+import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
+import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureVerificationInvoker;
-import java.io.InputStream;
-import java.util.*;
-
/**
* Created by Andreas Fitzek on 6/17/16.
*/
public abstract class XAdESVerifier extends BaseVerifier {
- @Override
- public boolean handles(ASiC asic) {
- return asic.isXAdES();
- }
+ @Override
+ public boolean handles(ASiC asic) {
+ return asic.isXAdES();
+ }
- protected VerifyXMLSignatureResponse runXMLVerification(InputStream signedData, InputStream xmlSignature,
- String trustProfileID, Date date, List supplementsList,
- String location, Map namespaces) throws MOAException {
+ protected VerifyXMLSignatureResponse runXMLVerification(InputStream signedData, InputStream xmlSignature,
+ String trustProfileID, Date date, List supplementsList,
+ String location, Map namespaces) throws MOAException {
- if(namespaces == null) {
- namespaces = new HashMap();
+ if (namespaces == null) {
+ namespaces = new HashMap();
- namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#");
- namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#");
- }
+ namespaces.put("asic", "http://uri.etsi.org/02918/v1.2.1#");
+ namespaces.put("ds", "http://www.w3.org/2000/09/xmldsig#");
+ }
- Content content = SPSSFactory.getInstance().createContent(xmlSignature, null);
+ final Content content = SPSSFactory.getInstance().createContent(xmlSignature, null);
- VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance().createVerifySignatureLocation(
- location, namespaces);
+ final VerifySignatureLocation verifySignatureLocation = SPSSFactory.getInstance()
+ .createVerifySignatureLocation(
+ location, namespaces);
- VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(content, verifySignatureLocation);
+ final VerifySignatureInfo verifySignatureInfo = SPSSFactory.getInstance().createVerifySignatureInfo(
+ content, verifySignatureLocation);
- VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance().createVerifyXMLSignatureRequest(
- date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true);
+ final VerifyXMLSignatureRequest verifyXMLSignatureRequest = SPSSFactory.getInstance()
+ .createVerifyXMLSignatureRequest(
+ date, verifySignatureInfo, supplementsList, null, false, trustProfileID, true);
- return XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest);
- }
+ return XMLSignatureVerificationInvoker.getInstance().verifyXMLSignature(verifyXMLSignatureRequest);
+ }
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java
index c06e30e..b152b6d 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureRequestParser.java
@@ -21,31 +21,25 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egiz.asic.xmlbind;
+import java.io.InputStream;
+import java.util.Date;
+
+import org.w3c.dom.Element;
+
import at.gv.egiz.asic.api.ASiCFormat;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.SPSSFactory;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent;
-import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
-import at.gv.egovernment.moa.spss.api.common.MetaInfo;
import at.gv.egovernment.moa.spss.api.xmlbind.RequestParserUtils;
-import at.gv.egovernment.moaspss.util.*;
-import org.w3c.dom.Element;
-
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.StringTokenizer;
+import at.gv.egovernment.moaspss.util.Base64Utils;
+import at.gv.egovernment.moaspss.util.Constants;
+import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* A parser to parse <code>VerifyCMSSignatureRequest</code> DOM trees into
* <code>VerifyCMSSignatureRequest</code> API objects.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -61,48 +55,47 @@ public class VerifyASICSignatureRequestParser {
private static final String ASIC_EXTENSION_XPATH = MOA + "ASICExtension";
private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
-
/** The <code>SPSSFactory</code> for creating new API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/**
- * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined
- * by the MOA schema.
- *
+ * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
* @param requestElem The <code>VerifyCMSSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema for this
- * method to succeed.
- * @return A <code>VerifyCMSSignatureRequest</code> API objects containing
- * the data from the DOM element.
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>VerifyCMSSignatureRequest</code> API objects containing the
+ * data from the DOM element.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public VerifyASiCRequest parseASIC(Element requestElem)
- throws MOAApplicationException {
- Date dateTime =
- RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
+ throws MOAApplicationException {
+ final Date dateTime =
+ RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
+
+ final boolean extendedValidation =
+ RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
- boolean extendedValidation =
- RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
-
- String asicSignatureStr =
- XPathUtils.getElementValue(requestElem, ASIC_SIGNATURE_XPATH, "");
+ final String asicSignatureStr =
+ XPathUtils.getElementValue(requestElem, ASIC_SIGNATURE_XPATH, "");
- String asicExtensionStr =
- XPathUtils.getElementValue(requestElem, ASIC_EXTENSION_XPATH, "");
+ final String asicExtensionStr =
+ XPathUtils.getElementValue(requestElem, ASIC_EXTENSION_XPATH, "");
- String trustProfileID =
- XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
- //Logger.info("CMSSignature: " + cmsSignatureStr);
- InputStream asicSignature =
- Base64Utils.decodeToStream(asicSignatureStr, true);
+ final String trustProfileID =
+ XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
+ // Logger.info("CMSSignature: " + cmsSignatureStr);
+ final InputStream asicSignature =
+ Base64Utils.decodeToStream(asicSignatureStr, true);
ASiCFormat format = null;
- if("asics".equalsIgnoreCase(asicExtensionStr) || "scs".equalsIgnoreCase(asicExtensionStr)
- || "application/vnd.etsi.asic-s+zip".equalsIgnoreCase(asicExtensionStr)) {
+ if ("asics".equalsIgnoreCase(asicExtensionStr) || "scs".equalsIgnoreCase(asicExtensionStr)
+ || "application/vnd.etsi.asic-s+zip".equalsIgnoreCase(asicExtensionStr)) {
format = ASiCFormat.ASiCS;
- } else if("asice".equalsIgnoreCase(asicExtensionStr) || "sce".equalsIgnoreCase(asicExtensionStr)
- || "application/vnd.etsi.asic-e+zip".equalsIgnoreCase(asicExtensionStr)) {
+ } else if ("asice".equalsIgnoreCase(asicExtensionStr) || "sce".equalsIgnoreCase(asicExtensionStr)
+ || "application/vnd.etsi.asic-e+zip".equalsIgnoreCase(asicExtensionStr)) {
format = ASiCFormat.ASiCE;
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java
index 67d8b05..34744ef 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASICSignatureResponseBuilder.java
@@ -21,168 +21,172 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egiz.asic.xmlbind;
+import java.util.Iterator;
+import java.util.List;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
import at.gv.egiz.asic.api.ASiCVerificationResult;
import at.gv.egiz.asic.impl.AsicSignedFilesContainer;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement;
import at.gv.egovernment.moa.spss.api.common.CheckResult;
import at.gv.egovernment.moa.spss.api.common.SignerInfo;
import at.gv.egovernment.moa.spss.api.xmlbind.ResponseBuilderUtils;
+import at.gv.egovernment.moa.spss.api.xmlbind.VerifyCMSSignatureResponseBuilder;
import at.gv.egovernment.moa.spss.api.xmlbind.VerifyXMLSignatureResponseBuilder;
import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
-import at.gv.egovernment.moa.spss.api.xmlbind.VerifyCMSSignatureResponseBuilder;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.MiscUtil;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import java.util.Iterator;
-import java.util.List;
-
/**
- * Convert a <code>VerifyCMSSignatureResponse</code> API object into its
- * XML representation, according to the MOA XML schema.
- *
+ * Convert a <code>VerifyCMSSignatureResponse</code> API object into its XML
+ * representation, according to the MOA XML schema.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class VerifyASICSignatureResponseBuilder {
/** The XML document containing the response element. */
- private Document responseDoc;
+ private final Document responseDoc;
/** The response <code>VerifyCMSSignatureResponse</code> DOM element. */
- private Element responseElem;
+ private final Element responseElem;
/**
* Create a new <code>VerifyCMSSignatureResponseBuilder</code>:
*
- * @throws MOASystemException An error occurred setting up the resulting
- * XML document.
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
*/
public VerifyASICSignatureResponseBuilder() throws MOASystemException {
responseDoc =
- ResponseBuilderUtils.createResponse("VerifyASICSignatureResponse");
+ ResponseBuilderUtils.createResponse("VerifyASICSignatureResponse");
responseElem = responseDoc.getDocumentElement();
}
-
+
/**
- * Build a document containing a <code>VerifyCMSSignatureResponse</code>
- * DOM element being the XML representation of the given
+ * Build a document containing a <code>VerifyCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
* <code>VerifyCMSSignatureResponse</code> API object.
- *
- * @param response The <code>VerifyCMSSignatureResponse</code> to convert
- * to XML.
- * @return A document containing the <code>VerifyCMSSignatureResponse</code>
- * DOM element.
+ *
+ * @param response The <code>VerifyCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>VerifyCMSSignatureResponse</code> DOM
+ * element.
* @throws MOAApplicationException An error occurred building the response.
*/
public Document build(List<ASiCVerificationResult> results)
- throws MOAException {
+ throws MOAException {
- Iterator<ASiCVerificationResult> iter = results.iterator();
+ final Iterator<ASiCVerificationResult> iter = results.iterator();
- while(iter.hasNext()) {
- ASiCVerificationResult aSiCVerificationResult = iter.next();
- addASiCResultElement(aSiCVerificationResult);
+ while (iter.hasNext()) {
+ final ASiCVerificationResult aSiCVerificationResult = iter.next();
+ addASiCResultElement(aSiCVerificationResult);
}
-
+
return responseDoc;
}
- private void addASiCResultElement(ASiCVerificationResult aSiCVerificationResult)
- throws MOAException {
- Element asiCSignatureResultElem = responseDoc.createElementNS(Constants.MOA_NS_URI, "ASiCSignatureResult");
-
- Iterator<AsicSignedFilesContainer> signedFiles = aSiCVerificationResult.getSignedFiles().iterator();
- while (signedFiles.hasNext()) {
- AsicSignedFilesContainer signedFile = signedFiles.next();
- Element signedFilesElem = responseDoc.createElementNS(Constants.MOA_NS_URI, "signedFiles");
- signedFilesElem.setTextContent(signedFile.getUri());
- if (MiscUtil.isNotEmpty(signedFile.getHashAlg()))
- signedFilesElem.setAttribute("hashAlgorithm", signedFile.getHashAlg());
-
- asiCSignatureResultElem.appendChild(signedFilesElem);
- }
-
- if(aSiCVerificationResult.getXmlResult() != null) {
- VerifyXMLSignatureResponseBuilder verifyXMLSignatureResponseBuilder = new VerifyXMLSignatureResponseBuilder(this.responseDoc, "XMLSignatureResult", true);
- asiCSignatureResultElem.appendChild(verifyXMLSignatureResponseBuilder.buildElement(aSiCVerificationResult.getXmlResult()));
- } else if(aSiCVerificationResult.getCmsResult() != null) {
- VerifyCMSSignatureResponseBuilder verifyCMSSignatureResponseBuilder = new VerifyCMSSignatureResponseBuilder(this.responseDoc, "CMSSignatureResult", true);
- asiCSignatureResultElem.appendChild(verifyCMSSignatureResponseBuilder.buildElement(aSiCVerificationResult.getCmsResult()));
- }
-
- responseElem.appendChild(asiCSignatureResultElem);
+ private void addASiCResultElement(ASiCVerificationResult aSiCVerificationResult)
+ throws MOAException {
+ final Element asiCSignatureResultElem = responseDoc.createElementNS(Constants.MOA_NS_URI,
+ "ASiCSignatureResult");
+
+ final Iterator<AsicSignedFilesContainer> signedFiles = aSiCVerificationResult.getSignedFiles().iterator();
+ while (signedFiles.hasNext()) {
+ final AsicSignedFilesContainer signedFile = signedFiles.next();
+ final Element signedFilesElem = responseDoc.createElementNS(Constants.MOA_NS_URI, "signedFiles");
+ signedFilesElem.setTextContent(signedFile.getUri());
+ if (MiscUtil.isNotEmpty(signedFile.getHashAlg())) {
+ signedFilesElem.setAttribute("hashAlgorithm", signedFile.getHashAlg());
+ }
+
+ asiCSignatureResultElem.appendChild(signedFilesElem);
+ }
+
+ if (aSiCVerificationResult.getXmlResult() != null) {
+ final VerifyXMLSignatureResponseBuilder verifyXMLSignatureResponseBuilder =
+ new VerifyXMLSignatureResponseBuilder(this.responseDoc, "XMLSignatureResult", true);
+ asiCSignatureResultElem.appendChild(verifyXMLSignatureResponseBuilder.buildElement(
+ aSiCVerificationResult.getXmlResult()));
+ } else if (aSiCVerificationResult.getCmsResult() != null) {
+ final VerifyCMSSignatureResponseBuilder verifyCMSSignatureResponseBuilder =
+ new VerifyCMSSignatureResponseBuilder(this.responseDoc, "CMSSignatureResult", true);
+ asiCSignatureResultElem.appendChild(verifyCMSSignatureResponseBuilder.buildElement(
+ aSiCVerificationResult.getCmsResult()));
}
+ responseElem.appendChild(asiCSignatureResultElem);
+ }
+
/**
* Add an element to the response.
- *
+ *
* @param responseElement The element to add to the response.
* @throws MOAApplicationException An error occurred adding the element.
*/
private void addResponseElement(VerifyCMSSignatureResponseElement responseElement)
- throws MOAApplicationException {
+ throws MOAApplicationException {
+
+ final SignerInfo signerInfo = responseElement.getSignerInfo();
+ final CheckResult signatureCheck = responseElement.getSignatureCheck();
+ final CheckResult certCheck = responseElement.getCertificateCheck();
- SignerInfo signerInfo = responseElement.getSignerInfo();
- CheckResult signatureCheck = responseElement.getSignatureCheck();
- CheckResult certCheck = responseElement.getCertificateCheck();
-
ResponseBuilderUtils.addSignerInfo(
- responseDoc,
- responseElem,
- signerInfo.getSignerCertificate(),
- signerInfo.isQualifiedCertificate(),
- signerInfo.getQCSource(),
- signerInfo.isPublicAuthority(),
- signerInfo.getPublicAuhtorityID(),
- signerInfo.isSSCD(),
- signerInfo.getSSCDSource(),
- signerInfo.getIssuerCountryCode(),
- signerInfo.getTslInfos());
+ responseDoc,
+ responseElem,
+ signerInfo.getSignerCertificate(),
+ signerInfo.isQualifiedCertificate(),
+ signerInfo.getQCSource(),
+ signerInfo.isPublicAuthority(),
+ signerInfo.getPublicAuhtorityID(),
+ signerInfo.isSSCD(),
+ signerInfo.getSSCDSource(),
+ signerInfo.getIssuerCountryCode(),
+ signerInfo.getTslInfos());
ResponseBuilderUtils.addSignatureAlgorithm(responseDoc,
- responseElem,
- responseElement.getSignatureAlgorithm());
-
+ responseElem,
+ responseElement.getSignatureAlgorithm());
+
ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- responseElem,
- "SignatureCheck",
- signatureCheck.getCode(),
- signatureCheck.getInfo());
+ responseDoc,
+ responseElem,
+ "SignatureCheck",
+ signatureCheck.getCode(),
+ signatureCheck.getInfo());
ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- responseElem,
- "CertificateCheck",
- certCheck.getCode(),
- certCheck.getInfo());
-
+ responseDoc,
+ responseElem,
+ "CertificateCheck",
+ certCheck.getCode(),
+ certCheck.getInfo());
if (responseElement.getAdESFormResults() != null) {
- Iterator formIterator = responseElement.getAdESFormResults().iterator();
-
- while (formIterator.hasNext()) {
- AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
- // add the CertificateCheck
- ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
- adESFormResult.getCode().intValue(), adESFormResult.getName());
-
- }
- }
-
- if(responseElement.getExtendedCertificateCheck() != null) {
- ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement.getExtendedCertificateCheck());
- }
-
+ final Iterator formIterator = responseElement.getAdESFormResults().iterator();
+
+ while (formIterator.hasNext()) {
+ final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
+ // add the CertificateCheck
+ ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
+ adESFormResult.getCode().intValue(), adESFormResult.getName());
+
+ }
+ }
+
+ if (responseElement.getExtendedCertificateCheck() != null) {
+ ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement
+ .getExtendedCertificateCheck());
+ }
+
}
}
diff --git a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java
index 37584a6..93218bc 100644
--- a/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java
+++ b/moaSig/moa-asic/src/main/java/at/gv/egiz/asic/xmlbind/VerifyASiCRequest.java
@@ -1,46 +1,46 @@
package at.gv.egiz.asic.xmlbind;
-import at.gv.egiz.asic.api.ASiCFormat;
-
import java.io.InputStream;
import java.util.Date;
+import at.gv.egiz.asic.api.ASiCFormat;
+
/**
* Created by Andreas Fitzek on 6/16/16.
*/
public class VerifyASiCRequest {
- private Date date;
- private InputStream asicInput;
- private String trustProfile;
- private ASiCFormat format;
- private boolean extendedValidation;
-
-
- public VerifyASiCRequest(ASiCFormat format, Date date, InputStream asicInput, String trustProfile, boolean extendedValidation) {
- this.format = format;
- this.date = date;
- this.asicInput = asicInput;
- this.trustProfile = trustProfile;
- this.extendedValidation = extendedValidation;
- }
-
- public Date getDate() {
- return date;
- }
-
- public InputStream getAsicInput() {
- return asicInput;
- }
-
- public String getTrustProfile() {
- return trustProfile;
- }
-
- public ASiCFormat getFormat() {
- return format;
- }
-
- public boolean isExtendedValidation() {
- return extendedValidation;
- }
+ private final Date date;
+ private final InputStream asicInput;
+ private final String trustProfile;
+ private final ASiCFormat format;
+ private final boolean extendedValidation;
+
+ public VerifyASiCRequest(ASiCFormat format, Date date, InputStream asicInput, String trustProfile,
+ boolean extendedValidation) {
+ this.format = format;
+ this.date = date;
+ this.asicInput = asicInput;
+ this.trustProfile = trustProfile;
+ this.extendedValidation = extendedValidation;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public InputStream getAsicInput() {
+ return asicInput;
+ }
+
+ public String getTrustProfile() {
+ return trustProfile;
+ }
+
+ public ASiCFormat getFormat() {
+ return format;
+ }
+
+ public boolean isExtendedValidation() {
+ return extendedValidation;
+ }
}
diff --git a/moaSig/moa-sig-lib/build.gradle b/moaSig/moa-sig-lib/build.gradle
index 438b71b..bb1a8d3 100644
--- a/moaSig/moa-sig-lib/build.gradle
+++ b/moaSig/moa-sig-lib/build.gradle
@@ -2,32 +2,38 @@ apply plugin: 'java-library-distribution'
apply plugin: 'maven-publish'
distributions {
- main{
- baseName = 'MOA-SPSS'
+ main {
+ distributionBaseName = 'moa-spss-lib'
}
}
-dependencies {
- compile fileTree(dir: '../libs', include: '*.jar')
- compile project(':common')
- testCompile project(path: ':common', configuration: 'tests')
+dependencies {
+ implementation project(':common')
+ testImplementation project(path: ':common')
- compile 'log4j:log4j:1.2.17'
- compile 'commons-logging:commons-logging:1.2'
- compile 'commons-io:commons-io:2.7'
- compile 'commons-codec:commons-codec:1.14'
- compile 'org.apache.axis:axis-jaxrpc:1.4'
- compile 'org.xerial:sqlite-jdbc:3.32.3.2'
- compile 'javax.xml.bind:jaxb-api:2.3.1'
- compile 'com.sun.xml.bind:jaxb-core:2.3.0.1'
- compile 'com.sun.xml.bind:jaxb-impl:2.3.2'
- compile 'org.postgresql:postgresql:42.2.15.jre7'
- compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.11'
- compile group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: '4.5.12'
+ api fileTree(dir: '../libs', include: '*.jar')
+ api group: 'at.gv.egovernment.moa.sig', name: 'tsl-lib', version: '2.0.4'
+ api 'log4j:log4j:1.2.17'
+ api 'commons-logging:commons-logging:1.2'
+ api 'commons-io:commons-io:2.8.0'
+ api 'commons-codec:commons-codec:1.15'
+ api 'org.apache.axis:axis-jaxrpc:1.4'
+ api 'org.xerial:sqlite-jdbc:3.34.0'
+ api 'javax.xml.bind:jaxb-api:2.3.1'
+ api 'com.sun.xml.bind:jaxb-core:2.3.0.1'
+ api 'com.sun.xml.bind:jaxb-impl:2.3.2'
+ api 'org.postgresql:postgresql:42.2.19.jre7'
+ api group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.23'
+ api group: 'org.apache.pdfbox', name: 'pdfbox-tools', version: '2.0.23'
+ api group: 'org.apache.pdfbox', name: 'pdfbox-app', version: '2.0.23'
+ api group: 'org.apache.pdfbox', name: 'preflight', version: '2.0.23'
+ api group: 'org.apache.pdfbox', name: 'preflight-app', version: '2.0.23'
+ api group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
+ api group: 'org.apache.httpcomponents', name: 'httpclient-cache', version: '4.5.13'
}
task releases(type: Copy) {
- from jar.outputs
+ //from jar.outputs
from distZip.outputs
from distTar.outputs
into rootDir.toString() + "/releases/" + version
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java
index 305c227..97e63c5 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAApplicationException.java
@@ -21,30 +21,30 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss;
+
/**
* Base class of application specific MOA exceptions.
- *
- * Application exceptions are exceptions that originate from application
- * code (e.g. inconsistent data provided by the user, no permission to access
- * certain resources, etc.)
- *
+ *
+ * Application exceptions are exceptions that originate from application code
+ * (e.g. inconsistent data provided by the user, no permission to access certain
+ * resources, etc.)
+ *
* @author Patrick Peck
* @version $Id$
*/
public class MOAApplicationException extends MOAException {
-
+
/**
- *
- */
- private static final long serialVersionUID = 1042877795934327684L;
+ *
+ */
+ private static final long serialVersionUID = 1042877795934327684L;
-/**
+ /**
* Create a new <code>MOAApplicationException</code>.
- *
- * @param messageId The identifier of the message associated with this
- * exception.
+ *
+ * @param messageId The identifier of the message associated with this
+ * exception.
* @param parameters Additional message parameters.
*/
public MOAApplicationException(String messageId, Object[] parameters) {
@@ -53,17 +53,17 @@ public class MOAApplicationException extends MOAException {
/**
* Create a new <code>MOAApplicationException</code>.
- *
- * @param messageId The identifier of the message associated with this
- * <code>MOAApplicationException</code>.
+ *
+ * @param messageId The identifier of the message associated with this
+ * <code>MOAApplicationException</code>.
* @param parameters Additional message parameters.
- * @param wrapped The exception wrapped by this
- * <code>MOAApplicationException</code>.
+ * @param wrapped The exception wrapped by this
+ * <code>MOAApplicationException</code>.
*/
public MOAApplicationException(
- String messageId,
- Object[] parameters,
- Throwable wrapped) {
+ String messageId,
+ Object[] parameters,
+ Throwable wrapped) {
super(messageId, parameters, wrapped);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java
index bf7f9af..0aff639 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOAException.java
@@ -21,8 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss;
+
import java.io.PrintStream;
import java.io.PrintWriter;
@@ -39,30 +39,30 @@ import at.gv.egovernment.moaspss.util.Constants;
/**
* Base class of MOA specific exceptions.
- *
- * This class has the ability to wrap other exceptions which may be seen
- * as the root cause for this exception. A similar mechanism is in place
- * since JDK1.4 (see the <code>getClause()</code> method) but will not be used
- * because of required compatibility with JDK1.3.
- *
+ *
+ * This class has the ability to wrap other exceptions which may be seen as the
+ * root cause for this exception. A similar mechanism is in place since JDK1.4
+ * (see the <code>getClause()</code> method) but will not be used because of
+ * required compatibility with JDK1.3.
+ *
* @author Patrick Peck
* @version $Id$
*/
public abstract class MOAException extends Exception {
/**
- *
- */
- private static final long serialVersionUID = 7115301799538771949L;
-/** The message ID. */
- private String messageId;
+ *
+ */
+ private static final long serialVersionUID = 7115301799538771949L;
+ /** The message ID. */
+ private final String messageId;
/** The wrapped <code>Throwable</code>. */
private Throwable wrapped;
/**
* Create a <code>MOAException</code>.
- *
- * @param messageId The message ID of the message contained in the created
- * <code>MOAException</code>.
+ *
+ * @param messageId The message ID of the message contained in the created
+ * <code>MOAException</code>.
* @param parameters The parameters needed to fill in the message arguments.
*/
public MOAException(String messageId, Object[] parameters) {
@@ -72,15 +72,15 @@ public abstract class MOAException extends Exception {
/**
* Create a <code>MOAException</code>.
- *
- * @param messageId The message ID of the message contained in the created
- * <code>MOAException</code>.
+ *
+ * @param messageId The message ID of the message contained in the created
+ * <code>MOAException</code>.
* @param parameters The parameters needed to fill in the message arguments.
- * @param wrapped The exception wrapped by the created
- * <code>MOAException</code>.
+ * @param wrapped The exception wrapped by the created
+ * <code>MOAException</code>.
*/
public MOAException(String messageId, Object[] parameters, Throwable wrapped) {
- // TODO: remove wrapped again from super constructor
+ // TODO: remove wrapped again from super constructor
super(MessageProvider.getInstance().getMessage(messageId, parameters), wrapped);
this.messageId = messageId;
this.wrapped = wrapped;
@@ -88,7 +88,7 @@ public abstract class MOAException extends Exception {
/**
* Returns the message ID of this exception.
- *
+ *
* @return The message ID as provided in the constructor.
*/
public String getMessageId() {
@@ -97,9 +97,9 @@ public abstract class MOAException extends Exception {
/**
* Returns the exception wrapped by this <code>MOAException</code>.
- *
- * @return The exception wrapped by this exception. Possibly
- * <code>null</code>, if none was provided at construction time.
+ *
+ * @return The exception wrapped by this exception. Possibly <code>null</code>,
+ * if none was provided at construction time.
*/
public Throwable getWrapped() {
return wrapped;
@@ -108,9 +108,10 @@ public abstract class MOAException extends Exception {
/**
* Convert this <code>MOAException</code> to an <code>ErrorResponse</code>
* element from the MOA namespace.
- *
+ *
* @return An <code>ErrorResponse</code> element, containing the subelements
- * <code>ErrorCode</code> and <code>Info</code> required by the MOA schema.
+ * <code>ErrorCode</code> and <code>Info</code> required by the MOA
+ * schema.
*/
public Element toErrorResponse() {
DocumentBuilder builder;
@@ -124,7 +125,7 @@ public abstract class MOAException extends Exception {
try {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
impl = builder.getDOMImplementation();
- } catch (ParserConfigurationException e) {
+ } catch (final ParserConfigurationException e) {
return null;
}
@@ -134,11 +135,11 @@ public abstract class MOAException extends Exception {
// add MOA namespace declaration
errorResponse.setAttributeNS(
- Constants.XMLNS_NS_URI,
- "xmlns",
- Constants.MOA_NS_URI);
+ Constants.XMLNS_NS_URI,
+ "xmlns",
+ Constants.MOA_NS_URI);
- // build the child elements
+ // build the child elements
errorCode = doc.createElementNS(Constants.MOA_NS_URI, "ErrorCode");
errorCode.appendChild(doc.createTextNode(messageId));
info = doc.createElementNS(Constants.MOA_NS_URI, "Info");
@@ -147,22 +148,24 @@ public abstract class MOAException extends Exception {
errorResponse.appendChild(info);
return errorResponse;
}
-
+
/**
* Print a stack trace of this exception to <code>System.err</code>.
- *
+ *
* @see java.lang.Throwable#printStackTrace()
*/
+ @Override
public void printStackTrace() {
printStackTrace(System.err);
}
/**
* Print a stack trace of this exception, including the wrapped exception.
- *
+ *
* @param s The stream to write the stack trace to.
* @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
*/
+ @Override
public void printStackTrace(PrintStream s) {
super.printStackTrace(s);
if (getWrapped() != null) {
@@ -173,10 +176,11 @@ public abstract class MOAException extends Exception {
/**
* Print a stack trace of this exception, including the wrapped exception.
- *
+ *
* @param s The stream to write the stacktrace to.
* @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
*/
+ @Override
public void printStackTrace(PrintWriter s) {
super.printStackTrace(s);
if (getWrapped() != null) {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java
index 3a65c48..d7522ff 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOARuntimeException.java
@@ -21,8 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss;
+
import java.io.PrintStream;
import java.io.PrintWriter;
@@ -39,30 +39,30 @@ import at.gv.egovernment.moaspss.util.Constants;
/**
* Base class of MOA specific runtime exceptions.
- *
- * This class has the ability to wrap other exceptions which may be seen
- * as the root cause for this exception. A similar mechanism is in place
- * since JDK1.4 (see the <code>getClause()</code> method) but will not be used
- * because of required compatibility with JDK1.3.
- *
+ *
+ * This class has the ability to wrap other exceptions which may be seen as the
+ * root cause for this exception. A similar mechanism is in place since JDK1.4
+ * (see the <code>getClause()</code> method) but will not be used because of
+ * required compatibility with JDK1.3.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class MOARuntimeException extends RuntimeException {
/**
- *
- */
- private static final long serialVersionUID = 8516197293435621864L;
-/** The message ID. */
- private String messageId;
+ *
+ */
+ private static final long serialVersionUID = 8516197293435621864L;
+ /** The message ID. */
+ private final String messageId;
/** The wrapped <code>Throwable</code>. */
private Throwable wrapped;
/**
* Create a <code>MOAException</code>.
- *
- * @param messageId The message ID of the message contained in the created
- * <code>MOAException</code>.
+ *
+ * @param messageId The message ID of the message contained in the created
+ * <code>MOAException</code>.
* @param parameters The parameters needed to fill in the message arguments.
*/
public MOARuntimeException(String messageId, Object[] parameters) {
@@ -72,17 +72,17 @@ public class MOARuntimeException extends RuntimeException {
/**
* Create a <code>MOAException</code>.
- *
- * @param messageId The message ID of the message contained in the created
- * <code>MOAException</code>.
+ *
+ * @param messageId The message ID of the message contained in the created
+ * <code>MOAException</code>.
* @param parameters The parameters needed to fill in the message arguments.
- * @param wrapped The exception wrapped by the created
- * <code>MOAException</code>.
+ * @param wrapped The exception wrapped by the created
+ * <code>MOAException</code>.
*/
public MOARuntimeException(
- String messageId,
- Object[] parameters,
- Throwable wrapped) {
+ String messageId,
+ Object[] parameters,
+ Throwable wrapped) {
super(MessageProvider.getInstance().getMessage(messageId, parameters));
this.messageId = messageId;
@@ -91,7 +91,7 @@ public class MOARuntimeException extends RuntimeException {
/**
* Returns the message ID of this exception.
- *
+ *
* @return The message ID as provided in the constructor.
*/
public String getMessageId() {
@@ -100,20 +100,21 @@ public class MOARuntimeException extends RuntimeException {
/**
* Returns the exception wrapped by this <code>MOARuntimeException</code>.
- *
- * @return The exception wrapped by this exception. Possibly
- * <code>null</code>, if none was provided at construction time.
+ *
+ * @return The exception wrapped by this exception. Possibly <code>null</code>,
+ * if none was provided at construction time.
*/
public Throwable getWrapped() {
return wrapped;
}
/**
- * Convert this <code>MOARuntimeException</code> to an <code>ErrorResponse</code>
- * element from the MOA namespace.
- *
+ * Convert this <code>MOARuntimeException</code> to an
+ * <code>ErrorResponse</code> element from the MOA namespace.
+ *
* @return An <code>ErrorResponse</code> element, containing the subelements
- * <code>ErrorCode</code> and <code>Info</code> required by the MOA schema.
+ * <code>ErrorCode</code> and <code>Info</code> required by the MOA
+ * schema.
*/
public Element toErrorResponse() {
DocumentBuilder builder;
@@ -127,7 +128,7 @@ public class MOARuntimeException extends RuntimeException {
try {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
impl = builder.getDOMImplementation();
- } catch (ParserConfigurationException e) {
+ } catch (final ParserConfigurationException e) {
return null;
}
@@ -137,11 +138,11 @@ public class MOARuntimeException extends RuntimeException {
// add MOA namespace declaration
errorResponse.setAttributeNS(
- Constants.XMLNS_NS_URI,
- "xmlns",
- Constants.MOA_NS_URI);
+ Constants.XMLNS_NS_URI,
+ "xmlns",
+ Constants.MOA_NS_URI);
- // build the child elements
+ // build the child elements
errorCode = doc.createElementNS(Constants.MOA_NS_URI, "ErrorCode");
errorCode.appendChild(doc.createTextNode(messageId));
info = doc.createElementNS(Constants.MOA_NS_URI, "Info");
@@ -150,22 +151,24 @@ public class MOARuntimeException extends RuntimeException {
errorResponse.appendChild(info);
return errorResponse;
}
-
+
/**
* Print a stack trace of this exception to <code>System.err</code>.
- *
+ *
* @see java.lang.Throwable#printStackTrace()
*/
+ @Override
public void printStackTrace() {
printStackTrace(System.err);
}
/**
* Print a stack trace of this exception, including the wrapped exception.
- *
+ *
* @param s The stream to write the stack trace to.
* @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
*/
+ @Override
public void printStackTrace(PrintStream s) {
super.printStackTrace(s);
if (getWrapped() != null) {
@@ -176,10 +179,11 @@ public class MOARuntimeException extends RuntimeException {
/**
* Print a stack trace of this exception, including the wrapped exception.
- *
+ *
* @param s The stream to write the stacktrace to.
* @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
*/
+ @Override
public void printStackTrace(PrintWriter s) {
super.printStackTrace(s);
if (getWrapped() != null) {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java
index 67c1908..aea00a8 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/MOASystemException.java
@@ -21,29 +21,29 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss;
+
/**
* Base class of technical MOA exceptions.
- *
+ *
* Technical exceptions are exceptions that originate from system failure (e.g.,
* a database connection fails, a component is not available, etc.)
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class MOASystemException extends MOAException {
/**
- *
- */
- private static final long serialVersionUID = 655642019638205185L;
+ *
+ */
+ private static final long serialVersionUID = 655642019638205185L;
-/**
+ /**
* Create a new <code>MOASystemException</code>.
- *
- * @param messageId The identifier of the message associated with this
- * exception.
+ *
+ * @param messageId The identifier of the message associated with this
+ * exception.
* @param parameters Additional message parameters.
*/
public MOASystemException(String messageId, Object[] parameters) {
@@ -52,17 +52,17 @@ public class MOASystemException extends MOAException {
/**
* Create a new <code>MOASystemException</code>.
- *
- * @param messageId The identifier of the message associated with this
- * <code>MOASystemException</code>.
+ *
+ * @param messageId The identifier of the message associated with this
+ * <code>MOASystemException</code>.
* @param parameters Additional message parameters.
- * @param wrapped The exception wrapped by this
- * <code>MOASystemException</code>.
+ * @param wrapped The exception wrapped by this
+ * <code>MOASystemException</code>.
*/
public MOASystemException(
- String messageId,
- Object[] parameters,
- Throwable wrapped) {
+ String messageId,
+ Object[] parameters,
+ Throwable wrapped) {
super(messageId, parameters, wrapped);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java
index c264475..e69171c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/OutputConstants.java
@@ -5,11 +5,10 @@ import java.lang.reflect.Field;
import iaik.server.modules.resultcodes.ResultCode;
public class OutputConstants {
- public static void main(String[] argv) throws IllegalArgumentException, IllegalAccessException {
- Field[] fields = ResultCode.class.getFields();
- for(int i = 0; i < fields.length; i++) {
- Field f = fields[i];
- System.out.println(f.getName() + " : " + f.get(null));
- }
- }
+ public static void main(String[] argv) throws IllegalArgumentException, IllegalAccessException {
+ final Field[] fields = ResultCode.class.getFields();
+ for (final Field f : fields) {
+ System.out.println(f.getName() + " : " + f.get(null));
+ }
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java
index 59db7b5..f2d3b89 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/Configurator.java
@@ -21,17 +21,17 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.server.init.ConfiguratorImpl;
+import at.gv.egovernment.moa.spss.server.init.StartupConfigurationHolder;
/**
* Configures the SP/SS API.
- *
- * Also handles dynamic configuration updates.
- *
+ *
+ * Also handles dynamic configuration updates.
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -39,7 +39,7 @@ public abstract class Configurator {
/** The default implementation class. */
private static final String DEFAULT_IMPLEMENTATION =
- "at.gv.egovernment.moa.spss.server.init.ConfiguratorImpl";
+ "at.gv.egovernment.moa.spss.server.init.ConfiguratorImpl";
/** The single instance of this class. */
private static Configurator instance = null;
@@ -47,14 +47,13 @@ public abstract class Configurator {
public static synchronized Configurator getInstance() {
if (instance == null) {
try {
- /*DiscoverClass discover = new DiscoverClass();
- instance =
- (Configurator) discover.newInstance(
- Configurator.class,
- DEFAULT_IMPLEMENTATION);*/
- instance = new ConfiguratorImpl();
- } catch (Exception e) {
- // this can not happen since we provide a valid default
+ /*
+ * DiscoverClass discover = new DiscoverClass(); instance = (Configurator)
+ * discover.newInstance( Configurator.class, DEFAULT_IMPLEMENTATION);
+ */
+ instance = new ConfiguratorImpl();
+ } catch (final Exception e) {
+ // this can not happen since we provide a valid default
// implementation
}
}
@@ -62,23 +61,35 @@ public abstract class Configurator {
}
/**
+ * Get current configuration object.
+ *
+ * @return Configuration or <code>null</code> if it was not initialized yet
+ */
+ public abstract StartupConfigurationHolder getCurrentConfiguration();
+
+ /**
* Initialize the SP/SS configuration.
- *
- * Only a single call to this method will have an effect. Use
- * <code>update()</code> for reflecting changes in the configuration instead.
- *
+ *
+ * Only a single call to this method will have an effect. Use
+ * <code>update()</code> for reflecting changes in the configuration instead.
+ *
+ * @return Configuration holder
+ *
* @throws MOAException An error occurred updating the SP/SS configuration.
- */
- public abstract void init() throws MOAException;
-
+ */
+ public abstract StartupConfigurationHolder init() throws MOAException;
+
/**
* Update the SP/SS configuration.
- *
+ *
* This will only have an effect after the system has been initialized once
* using <code>init()</code>.
- *
+ *
+ * @return Updated Configuration holder, or <code>null</code> if it was not
+ * initialized
+ *
* @throws MOAException An error occurred updating the SP/SS configuration.
*/
- public abstract void update() throws MOAException;
+ public abstract StartupConfigurationHolder update() throws MOAException;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
index d7cd10c..d0be7d5 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SPSSFactory.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api;
import java.io.InputStream;
@@ -81,10 +80,10 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
/**
* An abstract factory for creating MOA SP/SS API objects.
- *
- * Use <code>getInstance()</code> to get a concrete factory instance. Using
- * this instance, concrete MOA SP/SS API object can be created.
- *
+ *
+ * Use <code>getInstance()</code> to get a concrete factory instance. Using this
+ * instance, concrete MOA SP/SS API object can be created.
+ *
* @author Patrick Peck
* @author Gregor Karlinger
* @version $Id$
@@ -93,27 +92,26 @@ public abstract class SPSSFactory {
/** The default implementation of this class. */
private static final String DEFAULT_IMPLEMENTATION =
- "at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl";
+ "at.gv.egovernment.moa.spss.api.impl.SPSSFactoryImpl";
/** The single instance of this class. */
private static SPSSFactory instance = null;
/**
* Returns the single instance of this class.
- *
+ *
* @return The single instance of this class.
*/
public static synchronized SPSSFactory getInstance() {
if (instance == null) {
try {
- /*DiscoverClass discover = new DiscoverClass();
- instance =
- (SPSSFactory) discover.newInstance(
- SPSSFactory.class,
- DEFAULT_IMPLEMENTATION);*/
+ /*
+ * DiscoverClass discover = new DiscoverClass(); instance = (SPSSFactory)
+ * discover.newInstance( SPSSFactory.class, DEFAULT_IMPLEMENTATION);
+ */
instance = new SPSSFactoryImpl();
- } catch (Exception e) {
- // this can not happen since we provide a valid default
+ } catch (final Exception e) {
+ // this can not happen since we provide a valid default
// implementation
}
}
@@ -126,94 +124,94 @@ public abstract class SPSSFactory {
/**
* Create a new <code>CreateXMLSignatureRequest</code> object.
- *
- * @param keyIdentifier The identifier for the key group to use for signing.
- * @param singleSignatureInfos A <code>List</code> of
- * <code>SingleSignatureInfo</code> objects containing information about a
- * single signature to be created.
- * @return The <code>CreateXMLSignatureRequest</code> containing the above
- * data.
- *
+ *
+ * @param keyIdentifier The identifier for the key group to use for
+ * signing.
+ * @param singleSignatureInfos A <code>List</code> of
+ * <code>SingleSignatureInfo</code> objects
+ * containing information about a single signature
+ * to be created.
+ * @return The <code>CreateXMLSignatureRequest</code> containing the above data.
+ *
* @pre keyIdentifier != null && keyIdentifier.length() > 0
* @pre singleSignatureInfos != null
- * @pre forall Object o in singleSignatureInfos |
- * o instanceof at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo
+ * @pre forall Object o in singleSignatureInfos | o instanceof
+ * at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo
* @post return != null
*/
public abstract CreateXMLSignatureRequest createCreateXMLSignatureRequest(
- String keyIdentifier,
- List singleSignatureInfos);
+ String keyIdentifier,
+ List singleSignatureInfos);
/**
* Create a new <code>CreateCMSSignatureRequest</code> object.
- *
- * @param keyIdentifier The identifier for the key group to use for signing.
- * @param singleSignatureInfos A <code>List</code> of
- * <code>SingleSignatureInfo</code> objects containing information about a
- * single signature to be created.
- * @return The <code>CreateCMSSignatureRequest</code> containing the above
- * data.
- *
+ *
+ * @param keyIdentifier The identifier for the key group to use for
+ * signing.
+ * @param singleSignatureInfos A <code>List</code> of
+ * <code>SingleSignatureInfo</code> objects
+ * containing information about a single signature
+ * to be created.
+ * @return The <code>CreateCMSSignatureRequest</code> containing the above data.
+ *
* @pre keyIdentifier != null && keyIdentifier.length() > 0
* @pre singleSignatureInfos != null
- * @pre forall Object o in singleSignatureInfos |
- * o instanceof at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo
+ * @pre forall Object o in singleSignatureInfos | o instanceof
+ * at.gv.egovernment.moa.spss.api.common.SingleSignatureInfo
* @post return != null
*/
public abstract CreateCMSSignatureRequest createCreateCMSSignatureRequest(
- String keyIdentifier,
- List singleSignatureInfos);
-
+ String keyIdentifier,
+ List singleSignatureInfos);
+
/**
* Create a new <code>SingleSignatureInfo</code> object.
- *
- * @param dataObjectInfos The data objects that will be signed (including
- * transformations).
- * @param createSignatureInfo Information about the signature environment. May
- * be <code>null</code>.
+ *
+ * @param dataObjectInfos The data objects that will be signed (including
+ * transformations).
+ * @param createSignatureInfo Information about the signature environment. May
+ * be <code>null</code>.
* @param securityLayerConform If <code>true</code>, a Security Layer conform
- * signature manifest is created, otherwise not.
+ * signature manifest is created, otherwise not.
* @return The <code>SingleSignatureInfo</code> containing the above data.
- *
+ *
* @pre dataObjectInfos != null && dataObjectInfos.size() > 0
- * @pre forall Object o in dataObjectInfos |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo
+ * @pre forall Object o in dataObjectInfos | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo
* @post return != null
*/
public abstract SingleSignatureInfo createSingleSignatureInfo(
- List dataObjectInfos,
- CreateSignatureInfo createSignatureInfo, boolean securityLayerConform);
-
+ List dataObjectInfos,
+ CreateSignatureInfo createSignatureInfo, boolean securityLayerConform);
+
/**
* Create a new <code>SingleSignatureInfo</code> object.
- *
- * @param dataObjectInfo The data object that will be signed.
+ *
+ * @param dataObjectInfo The data object that will be signed.
* @param securityLayerConform If <code>true</code>, a Security Layer conform
- * signature manifest is created, otherwise not.
- * @param isPAdESSignature
+ * signature manifest is created, otherwise not.
+ * @param isPAdESSignature
* @return The <code>SingleSignatureInfo</code> containing the above data.
- *
+ *
* @post return != null
*/
- public abstract at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS(
- at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo,
- boolean securityLayerConform, boolean isPAdESSignature);
-
-
-
+ public abstract at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS(
+ at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo,
+ boolean securityLayerConform, boolean isPAdESSignature);
/**
* Create a new <code>DataObjectInfo</code> object.
- *
- * @param structure The type of signature to create.
- * @param childOfManifest If <code>true</code>, references will be returned
- * as children of an XMLDsig manifest. Otherwise, they will be returned as
- * children of the signature itself.
- * @param dataObject The data object that will be signed.
- * @param createTransformsInfoProfile Additional transformations to apply
- * to the data object.
+ *
+ * @param structure The type of signature to create.
+ * @param childOfManifest If <code>true</code>, references will be
+ * returned as children of an XMLDsig
+ * manifest. Otherwise, they will be returned
+ * as children of the signature itself.
+ * @param dataObject The data object that will be signed.
+ * @param createTransformsInfoProfile Additional transformations to apply to the
+ * data object.
* @return The <code>DataObjectInfo</code> containing the above data.
- *
+ *
* @pre DataObjectInfo.STRUCTURE_DETACHED.equals(structure) ||
* DataObjectInfo.STRUCTURE_ENVELOPING.equals(structure)
* @pre dataObject != null
@@ -221,218 +219,216 @@ public abstract class SPSSFactory {
* @post return != null
*/
public abstract DataObjectInfo createDataObjectInfo(
- String structure,
- boolean childOfManifest,
- Content dataObject,
- CreateTransformsInfoProfile createTransformsInfoProfile);
+ String structure,
+ boolean childOfManifest,
+ Content dataObject,
+ CreateTransformsInfoProfile createTransformsInfoProfile);
/**
* Create a new <code>DataObjectInfo</code> object.
- *
- * @param structure The type of signature to create.
+ *
+ * @param structure The type of signature to create.
* @param dataObject The data object that will be signed.
* @return The <code>DataObjectInfo</code> containing the above data.
- *
+ *
* @pre DataObjectInfo.STRUCTURE_DETACHED.equals(structure) ||
* DataObjectInfo.STRUCTURE_ENVELOPING.equals(structure)
* @pre dataObject != null
* @post return != null
*/
public abstract at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo createDataObjectInfo(
- String structure,
- CMSDataObject dataObject);
-
+ String structure,
+ CMSDataObject dataObject);
+
/**
* Create a new <code>CreateTransformsInfoProfile</code> object containing a
* reference to a locally stored profile.
- *
- * @param profileID The profile ID to resolve during signature creation.
+ *
+ * @param profileID The profile ID to resolve during signature creation.
* @return The <code>CreateTransformsInfoProfile</code> containing the given
- * profile ID.
- *
+ * profile ID.
+ *
* @pre profileID != null && profileID.length() > 0
* @post return != null
*/
public abstract CreateTransformsInfoProfile createCreateTransformsInfoProfile(String profileID);
/**
- * Create a new <code>CreateTransformsInfoProfile</code> object by providing
- * the profile data explicitly.
- *
- * @param transformsInfo The transformations to apply to the associated
- * data object.
- * @param supplements Supplemental information for the transformation. May be
- * <code>null</code>.
+ * Create a new <code>CreateTransformsInfoProfile</code> object by providing the
+ * profile data explicitly.
+ *
+ * @param transformsInfo The transformations to apply to the associated data
+ * object.
+ * @param supplements Supplemental information for the transformation. May be
+ * <code>null</code>.
* @return The <code>CreateTransformsInfoProfile</code> containing the above
- * data.
- *
+ * data.
+ *
* @pre transformsInfo != null
- * @pre supplements != null implies
- * forall Object o in supplements |
- * o instanceof at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation
+ * @pre supplements != null implies forall Object o in supplements | o
+ * instanceof
+ * at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation
* @post return != null
*/
public abstract CreateTransformsInfoProfile createCreateTransformsInfoProfile(
- CreateTransformsInfo transformsInfo,
- List supplements);
+ CreateTransformsInfo transformsInfo,
+ List supplements);
/**
* Create a new <code>CreateTransformsInfo</code> object.
- *
- * @param transforms The <code>Transform</code>s to apply to the associated
- * data object. May be <code>null</code>.
- * @param finalDataMetaInfo Information about the type of the transformed
- * data.
+ *
+ * @param transforms The <code>Transform</code>s to apply to the
+ * associated data object. May be <code>null</code>.
+ * @param finalDataMetaInfo Information about the type of the transformed data.
* @return The <code>CreateTransformsInfo</code> containing the above data.
- *
+ *
* @pre transforms != null implies transforms.size > 0
- * @pre transforms != null implies
- * forall Object o in transforms |
- * o instanceof at.gv.egovernment.moa.spss.api.common.Transform
+ * @pre transforms != null implies forall Object o in transforms | o instanceof
+ * at.gv.egovernment.moa.spss.api.common.Transform
* @pre finalDataMetaInfo != null
* @post return != null
*/
public abstract CreateTransformsInfo createCreateTransformsInfo(
- List transforms,
- MetaInfo finalDataMetaInfo);
+ List transforms,
+ MetaInfo finalDataMetaInfo);
/**
* Create a new <code>CreateSignatureInfo</code> object.
- *
- * @param createSignatureEnvironment The signature environment that will
- * contain the signature.
- * @param createSignatureEnvironmentProfile Additional information about
- * the signture environment.
+ *
+ * @param createSignatureEnvironment The signature environment that will
+ * contain the signature.
+ * @param createSignatureEnvironmentProfile Additional information about the
+ * signture environment.
* @return The <code>CreateSignatureInfo</code> containing the above data.
- *
+ *
* @pre createSignatureEnvironment != null
* @pre createSignatureEnvironmentProfile != null
* @post return != null
*/
public abstract CreateSignatureInfo createCreateSignatureInfo(
- Content createSignatureEnvironment,
- CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile);
+ Content createSignatureEnvironment,
+ CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile);
/**
- * Create a new <code>CreateSignatureEnvironmentProfile</code> object
- * containing a reference to a locally stored profile.
- *
+ * Create a new <code>CreateSignatureEnvironmentProfile</code> object containing
+ * a reference to a locally stored profile.
+ *
* @param profileID The profile ID to resolve during signature creation.
- * @return The <code>CreateSignatureEnvironmentProfile</code> containing
- * the given profile ID.
- *
+ * @return The <code>CreateSignatureEnvironmentProfile</code> containing the
+ * given profile ID.
+ *
* @pre profileID != null && profileID.length() > 0
* @post return != null
*/
public abstract CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(String profileID);
/**
- * Create a new <code>CreateSignatureEnvironmentProfile</code> object by
- * providing the profile data explicitly.
- *
+ * Create a new <code>CreateSignatureEnvironmentProfile</code> object by
+ * providing the profile data explicitly.
+ *
* @param createSignatureLocation The location where the signature will be
- * inserted.
- * @param supplements Additional information about the signature environment.
+ * inserted.
+ * @param supplements Additional information about the signature
+ * environment.
* @return The <code>CreateSignatureEnvironmentProfile</code> containing the
- * above data.
- *
+ * above data.
+ *
* @pre createSignatureLocation != null
- * @pre supplements != null
- * @pre forall Object o in supplements |
- * o instanceof at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation
+ * @pre supplements != null
+ * @pre forall Object o in supplements | o instanceof
+ * at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation
* @post return != null
*/
public abstract CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(
- CreateSignatureLocation createSignatureLocation,
- List supplements);
+ CreateSignatureLocation createSignatureLocation,
+ List supplements);
/**
* Create a new <code>CreateSignatureLocation</code> object.
- *
- * @param xPathExpression The XPath expression to select the signature
- * parent element within the signature environment.
- * @param index The index of the node, after which the signature will be
- * inserted.
+ *
+ * @param xPathExpression The XPath expression to select the signature
+ * parent element within the signature environment.
+ * @param index The index of the node, after which the signature
+ * will be inserted.
* @param namespaceDeclarations The namespace prefix to URI mapping to apply
- * while evaluating the XPath expression.
+ * while evaluating the XPath expression.
* @return The <code>CreateSignatureLocation</code> containing the above data.
- *
+ *
* @pre xPathExpression != null
* @pre index >= 0
* @pre namespaceDeclarations != null
*/
public abstract CreateSignatureLocation createCreateSignatureLocation(
- String xPathExpression,
- int index,
- Map namespaceDeclarations);
+ String xPathExpression,
+ int index,
+ Map namespaceDeclarations);
/**
* Create a new <code>CreateXMLSignatureResponse</code> object.
- *
- * @param responseElements The elements of the response, either
- * <code>SignatureEnvironmentResponse</code> objects, or
- * <code>ErrorResponse</code> objects.
- * @return The new <code>CreateXMLSignatureResponse</code> containing the
- * above data.
- *
+ *
+ * @param responseElements The elements of the response, either
+ * <code>SignatureEnvironmentResponse</code> objects, or
+ * <code>ErrorResponse</code> objects.
+ * @return The new <code>CreateXMLSignatureResponse</code> containing the above
+ * data.
+ *
* @pre responseElements != null && responseElements.size() > 0
- * @pre forall Object o in responseElements |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureResponseElement
+ * @pre forall Object o in responseElements | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureResponseElement
* @post return != null
*/
public abstract CreateXMLSignatureResponse createCreateXMLSignatureResponse(List responseElements);
-
/**
* Create a new <code>CreateCMSSignatureResponse</code> object.
- *
- * @param responseElements The elements of the response, either
- * <code>CMSSignatureResponse</code> objects, or
- * <code>ErrorResponse</code> objects.
- * @return The new <code>CreateCMSSignatureResponse</code> containing the
- * above data.
- *
+ *
+ * @param responseElements The elements of the response, either
+ * <code>CMSSignatureResponse</code> objects, or
+ * <code>ErrorResponse</code> objects.
+ * @return The new <code>CreateCMSSignatureResponse</code> containing the above
+ * data.
+ *
* @pre responseElements != null && responseElements.size() > 0
- * @pre forall Object o in responseElements |
- * o instanceof at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse
+ * @pre forall Object o in responseElements | o instanceof
+ * at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse
* @post return != null
*/
public abstract CreateCMSSignatureResponse createCreateCMSSignatureResponse(List responseElements);
-
-
+
/**
* Create a new <code>SignatureEnvironmentResponse</code> object.
- *
+ *
* @param signatureEnvironment The signature environment containing the
- * signature.
+ * signature.
* @return The <code>SignatureEnvironmentResponse</code> containing the
- * <code>signatureEnvironment</code>.
- *
+ * <code>signatureEnvironment</code>.
+ *
* @pre signatureEnvironment != null
* @post return != null
*/
public abstract CMSSignatureResponse createCMSSignatureResponse(String base64value);
-
+
/**
* Create a new <code>SignatureEnvironmentResponse</code> object.
- *
+ *
* @param signatureEnvironment The signature environment containing the
- * signature.
+ * signature.
* @return The <code>SignatureEnvironmentResponse</code> containing the
- * <code>signatureEnvironment</code>.
- *
+ * <code>signatureEnvironment</code>.
+ *
* @pre signatureEnvironment != null
* @post return != null
*/
- public abstract SignatureEnvironmentResponse createSignatureEnvironmentResponse(Element signatureEnvironment);
+ public abstract SignatureEnvironmentResponse createSignatureEnvironmentResponse(
+ Element signatureEnvironment);
/**
* Create a new <code>ErrorResponse</code> object.
- *
+ *
* @param code The numerical error code.
* @param info Verbose error information.
* @return The new <code>ErrorResponse</code> containing the above data.
- *
+ *
* @pre code > 0
* @pre info != null
* @post return != null
@@ -445,91 +441,87 @@ public abstract class SPSSFactory {
/**
* Create a new <code>VerifyCMSSignatureRequest</code> object.
- *
- * @param signatories The indexes of the signatories whose signature is to
- * be verified.
- * @param dateTime The date for which the verification is to be performed.
- * May be <code>null</code>.
- * @param cmsSignature The CMS signature.
- * @param dataObject The signed data. May be <code>null</code>.
- * @param trustProfileID The ID of the trust profile containing the trusted
- * root certificates.
- * @return The <code>VerifyCMSSignatureRequest</code> containing the above
- * data.
- *
+ *
+ * @param signatories The indexes of the signatories whose signature is to be
+ * verified.
+ * @param dateTime The date for which the verification is to be performed.
+ * May be <code>null</code>.
+ * @param cmsSignature The CMS signature.
+ * @param dataObject The signed data. May be <code>null</code>.
+ * @param trustProfileID The ID of the trust profile containing the trusted root
+ * certificates.
+ * @return The <code>VerifyCMSSignatureRequest</code> containing the above data.
+ *
* @pre signatories != null && signatories.length > 0
- * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies
- * for (int i = 0; i < signatories.length; i++)
- * signatories[i] >= 1
+ * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies for
+ * (int i = 0; i < signatories.length; i++) signatories[i] >= 1
* @pre cmsSignature != null
* @pre trustProfileID != null && trustProfileID.length() > 0
* @post return != null
*/
public abstract VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(
- int[] signatories,
- Date dateTime,
- InputStream cmsSignature,
- CMSDataObject dataObject,
- String trustProfileID,
- boolean pdf);
-
+ int[] signatories,
+ Date dateTime,
+ InputStream cmsSignature,
+ CMSDataObject dataObject,
+ String trustProfileID,
+ boolean pdf);
+
/**
* Create a new <code>VerifyCMSSignatureRequest</code> object.
- *
- * @param signatories The indexes of the signatories whose signature is to
- * be verified.
- * @param dateTime The date for which the verification is to be performed.
- * May be <code>null</code>.
- * @param cmsSignature The CMS signature.
- * @param dataObject The signed data. May be <code>null</code>.
- * @param trustProfileID The ID of the trust profile containing the trusted
- * root certificates.
- * @return The <code>VerifyCMSSignatureRequest</code> containing the above
- * data.
- *
+ *
+ * @param signatories The indexes of the signatories whose signature is to be
+ * verified.
+ * @param dateTime The date for which the verification is to be performed.
+ * May be <code>null</code>.
+ * @param cmsSignature The CMS signature.
+ * @param dataObject The signed data. May be <code>null</code>.
+ * @param trustProfileID The ID of the trust profile containing the trusted root
+ * certificates.
+ * @return The <code>VerifyCMSSignatureRequest</code> containing the above data.
+ *
* @pre signatories != null && signatories.length > 0
- * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies
- * for (int i = 0; i < signatories.length; i++)
- * signatories[i] >= 1
+ * @pre signaturies != VerifyCMSSignatureRequest.ALL_SIGNATORIES implies for
+ * (int i = 0; i < signatories.length; i++) signatories[i] >= 1
* @pre cmsSignature != null
* @pre trustProfileID != null && trustProfileID.length() > 0
* @post return != null
*/
public abstract VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(
- int[] signatories,
- Date dateTime,
- InputStream cmsSignature,
- CMSDataObject dataObject,
- String trustProfileID,
- boolean pdf,
- boolean extended);
+ int[] signatories,
+ Date dateTime,
+ InputStream cmsSignature,
+ CMSDataObject dataObject,
+ String trustProfileID,
+ boolean pdf,
+ boolean extended);
/**
* Create a new <code>CMSDataObject</code> object from data at a given URI.
- *
- * @param metaInfo Type information about the <code>CMSDataObject</code>.
- * May be <code>null</code>.
- * @param content The CMS content containing the data.
+ *
+ * @param metaInfo Type information about the <code>CMSDataObject</code>. May be
+ * <code>null</code>.
+ * @param content The CMS content containing the data.
* @return The new <code>CMSDataObject</code> containing the data.
- *
+ *
* @pre referenceURI != null
* @pre content != null
* @post return != null
*/
public abstract CMSDataObject createCMSDataObject(
- MetaInfo metaInfo,
- CMSContent content,
- BigDecimal excludeByteRangeFrom,
- BigDecimal excludeByteRangeTo);
+ MetaInfo metaInfo,
+ CMSContent content,
+ BigDecimal excludeByteRangeFrom,
+ BigDecimal excludeByteRangeTo);
/**
* Create a new <code>CMSContent</code> object from the data contained at the
* given URI.
- *
+ *
* @param referenceURI The URI identifying the data. Must be resolvable.
* @return The <code>CMSContent</code> containing a reference to the signed
- * data.
- *
+ * data.
+ *
* @pre referenceURI != null
* @post return != null
*/
@@ -537,11 +529,11 @@ public abstract class SPSSFactory {
/**
* Create a new <code>CMSContent</code> object from a byte stream.
- *
+ *
* @param binaryContent The byte stream containing the signed data.
- * @return The new <code>CMSContent</code> containing the data from the
- * byte stream.
- *
+ * @return The new <code>CMSContent</code> containing the data from the byte
+ * stream.
+ *
* @pre binaryContent != null
* @post return != null
*/
@@ -549,41 +541,40 @@ public abstract class SPSSFactory {
/**
* Create a new <code>VerifyCMSSignatureResponse</code> object.
- *
+ *
* @param responseElements Verification information about each signature.
- * @return The new <code>VerifyCMSSignatureResponse</code> containing the
- * status of signature verification for each signature contained in the
- * request.
- *
- * @pre responseElements != null && responseElements.size() > 0
- * @pre forall Object o in responseElements |
- * o instanceof at.gv.egovernment.moa.spss.api.cmssign.VerifyCMSSignatureResponseElement
+ * @return The new <code>VerifyCMSSignatureResponse</code> containing the status
+ * of signature verification for each signature contained in the
+ * request.
+ *
+ * @pre responseElements != null && responseElements.size() > 0
+ * @pre forall Object o in responseElements | o instanceof
+ * at.gv.egovernment.moa.spss.api.cmssign.VerifyCMSSignatureResponseElement
* @post return != null
*/
public abstract VerifyCMSSignatureResponse createVerifyCMSSignatureResponse(List responseElements);
/**
* Create a new <code>VerifyCMSSignatureResponseElement</code> object.
- *
- * @param signerInfo Information about the signer certificate.
- * @param signatureCheck Result of the signature value check.
+ *
+ * @param signerInfo Information about the signer certificate.
+ * @param signatureCheck Result of the signature value check.
* @param certificateCheck Result of the certificate status check.
- * @return The new <code>VerifyCMSSignatureResponseElement</code> containing
- * the above data.
- *
- * @pre signerInfo != null && signatureCheck != null &&
- * certificateCheck != null
+ * @return The new <code>VerifyCMSSignatureResponseElement</code> containing the
+ * above data.
+ *
+ * @pre signerInfo != null && signatureCheck != null && certificateCheck != null
* @post return != null
*/
public abstract VerifyCMSSignatureResponseElement createVerifyCMSSignatureResponseElement(
- SignerInfo signerInfo,
- CheckResult signatureCheck,
- CheckResult certificateCheck,
- List adesResult,
- ExtendedCertificateCheckResult extendedCertificateCheckResult,
- String usedAlgorithm,
- Boolean coversFullDocument,
- int[] byteRangeOfSignature);
+ SignerInfo signerInfo,
+ CheckResult signatureCheck,
+ CheckResult certificateCheck,
+ List adesResult,
+ ExtendedCertificateCheckResult extendedCertificateCheckResult,
+ String usedAlgorithm,
+ Boolean coversFullDocument,
+ int[] byteRangeOfSignature);
//
// Factory methods for verifying XML signatures
@@ -591,114 +582,114 @@ public abstract class SPSSFactory {
/**
* Create a new <code>VerifyXMLSignatureRequest</code> object.
- *
- * @param dateTime The date for which the verification is to be performed.
- * May be <code>null</code>.
- * @param verifySignatureInfo Information about the signature environment and
- * the location of the signature.
- * @param supplementProfiles Supplemental information for the signature
- * environment. May be <code>null</code>.
+ *
+ * @param dateTime The date for which the verification is to be
+ * performed. May be <code>null</code>.
+ * @param verifySignatureInfo Information about the signature environment
+ * and the location of the signature.
+ * @param supplementProfiles Supplemental information for the signature
+ * environment. May be <code>null</code>.
* @param signatureManifestParams Additional information for checking the
- * signature manifest. May be <code>null</code>.
- * @param returnHashInputData If <code>true</code>, hash input data will
- * be returned in the response, otherwise not.
- * @param trustProfileID The ID of the trust profile containing the trusted
- * root certificates.
- * @return The new <code>VerifyXMLSignatureRequest</code> containing the
- * above data.
- *
+ * signature manifest. May be <code>null</code>.
+ * @param returnHashInputData If <code>true</code>, hash input data will be
+ * returned in the response, otherwise not.
+ * @param trustProfileID The ID of the trust profile containing the
+ * trusted root certificates.
+ * @return The new <code>VerifyXMLSignatureRequest</code> containing the above
+ * data.
+ *
* @pre verifySignatureInfo != null
- * @pre supplementProfiles != null implies
- * forall Object o in supplementProfiles |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile
+ * @pre supplementProfiles != null implies forall Object o in supplementProfiles
+ * | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile
* @pre trustProfileID != null && trustProfileID.length() > 0
* @post return != null
*/
public abstract VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(
- Date dateTime,
- VerifySignatureInfo verifySignatureInfo,
- List supplementProfiles,
- SignatureManifestCheckParams signatureManifestParams,
- boolean returnHashInputData,
- String trustProfileID);
-
+ Date dateTime,
+ VerifySignatureInfo verifySignatureInfo,
+ List supplementProfiles,
+ SignatureManifestCheckParams signatureManifestParams,
+ boolean returnHashInputData,
+ String trustProfileID);
+
/**
* Create a new <code>VerifyXMLSignatureRequest</code> object.
- *
- * @param dateTime The date for which the verification is to be performed.
- * May be <code>null</code>.
- * @param verifySignatureInfo Information about the signature environment and
- * the location of the signature.
- * @param supplementProfiles Supplemental information for the signature
- * environment. May be <code>null</code>.
+ *
+ * @param dateTime The date for which the verification is to be
+ * performed. May be <code>null</code>.
+ * @param verifySignatureInfo Information about the signature environment
+ * and the location of the signature.
+ * @param supplementProfiles Supplemental information for the signature
+ * environment. May be <code>null</code>.
* @param signatureManifestParams Additional information for checking the
- * signature manifest. May be <code>null</code>.
- * @param returnHashInputData If <code>true</code>, hash input data will
- * be returned in the response, otherwise not.
- * @param trustProfileID The ID of the trust profile containing the trusted
- * root certificates.
- * @param extendedValidation Should the valdation result in forms
- * @return The new <code>VerifyXMLSignatureRequest</code> containing the
- * above data.
- *
+ * signature manifest. May be <code>null</code>.
+ * @param returnHashInputData If <code>true</code>, hash input data will be
+ * returned in the response, otherwise not.
+ * @param trustProfileID The ID of the trust profile containing the
+ * trusted root certificates.
+ * @param extendedValidation Should the valdation result in forms
+ * @return The new <code>VerifyXMLSignatureRequest</code> containing the above
+ * data.
+ *
* @pre verifySignatureInfo != null
- * @pre supplementProfiles != null implies
- * forall Object o in supplementProfiles |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile
+ * @pre supplementProfiles != null implies forall Object o in supplementProfiles
+ * | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfile
* @pre trustProfileID != null && trustProfileID.length() > 0
* @post return != null
*/
public abstract VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(
- Date dateTime,
- VerifySignatureInfo verifySignatureInfo,
- List supplementProfiles,
- SignatureManifestCheckParams signatureManifestParams,
- boolean returnHashInputData,
- String trustProfileID,
- boolean extendedValidation);
+ Date dateTime,
+ VerifySignatureInfo verifySignatureInfo,
+ List supplementProfiles,
+ SignatureManifestCheckParams signatureManifestParams,
+ boolean returnHashInputData,
+ String trustProfileID,
+ boolean extendedValidation);
/**
* Create a new <code>VerifySignatureInfo</code> object.
- *
- * @param verifySignatureEnvironment The signature environment containing
- * the signature to be verified.
- * @param verifySignatureLocation The location of the signature within the
- * signature environment.
+ *
+ * @param verifySignatureEnvironment The signature environment containing the
+ * signature to be verified.
+ * @param verifySignatureLocation The location of the signature within the
+ * signature environment.
* @return The new <code>VerifySignatureInfo</code> containing the above data.
- *
+ *
* @pre verifySignatureEnvironment != null
* @pre verifySignatureLocation != null
* @post return != null
*/
public abstract VerifySignatureInfo createVerifySignatureInfo(
- Content verifySignatureEnvironment,
- VerifySignatureLocation verifySignatureLocation);
+ Content verifySignatureEnvironment,
+ VerifySignatureLocation verifySignatureLocation);
/**
* Create a new <code>VerifySignatureLocation</code> object.
- *
- * @param xPathExpression The XPath expression to select the signature
- * element within the signature environment.
+ *
+ * @param xPathExpression The XPath expression to select the signature
+ * element within the signature environment.
* @param namespaceDeclarations The namespace prefix to URI mapping to apply
- * while evaluating the XPath expression.
+ * while evaluating the XPath expression.
* @return The new <code>VerifySignatureLocation</code> containing the above
- * data.
- *
+ * data.
+ *
* @pre xPathExpression != null
* @pre namespaceDeclarations != null
* @post return != null
*/
public abstract VerifySignatureLocation createVerifySignatureLocation(
- String xPathExpression,
- Map namespaceDeclarations);
+ String xPathExpression,
+ Map namespaceDeclarations);
/**
- * Create a new <code>SupplementProfile</code> object containing a reference
- * to a locally stored profile.
- *
+ * Create a new <code>SupplementProfile</code> object containing a reference to
+ * a locally stored profile.
+ *
* @param profileID The profile ID to resolve during signature verification.
* @return The <code>SupplementProfile</code> containing the profile ID.
- *
+ *
* @pre profileID != null && profileID.length() > 0
* @post return != null
*/
@@ -707,7 +698,7 @@ public abstract class SPSSFactory {
/**
* Create a new <code>SupplementProfile</code> object by providing the profile
* data explicitly.
- *
+ *
* @param supplementProfile The profile data.
* @return The <code>SupplementProfile</code> containing the profile data.
*/
@@ -715,232 +706,227 @@ public abstract class SPSSFactory {
/**
* Create a new <code>SignatureManifestCheckParams</code> object.
- *
- * @param referenceInfos Information for checking the validity of a
- * a reference.
- * @param returnReferenceInputData If <code>true</code>, the input data to
- * the calculation of reference digest values will be returned in the
- * response, otherwise not.
- * @return The <code>SignatureManifestCheckParams</code> containing the
- * above data.
- *
+ *
+ * @param referenceInfos Information for checking the validity of a a
+ * reference.
+ * @param returnReferenceInputData If <code>true</code>, the input data to the
+ * calculation of reference digest values will
+ * be returned in the response, otherwise not.
+ * @return The <code>SignatureManifestCheckParams</code> containing the above
+ * data.
+ *
* @pre referenceInfos != null && referenceInfos.size() > 0
- * @pre forall Object o in referenceInfos |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo
+ * @pre forall Object o in referenceInfos | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo
* @post return != null
*/
public abstract SignatureManifestCheckParams createSignatureManifestCheckParams(
- List referenceInfos,
- boolean returnReferenceInputData);
+ List referenceInfos,
+ boolean returnReferenceInputData);
/**
* Create a new <code>ReferenceInfo</code> object.
- *
- * @param verifyTransformsInfoProfiles The transformation profiles valid for
- * the associated reference.
- * @return The <code>ReferenceInfo</code> containing the transformation
- * profiles.
- *
- * @pre verifyTransformsInfoProfiles != null &&
- * verifyTransformsInfoProfiles.size() > 0
- * @pre forall Object o in verifyTransformsInfoProfiles |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfile
+ *
+ * @param verifyTransformsInfoProfiles The transformation profiles valid for the
+ * associated reference.
+ * @return The <code>ReferenceInfo</code> containing the transformation
+ * profiles.
+ *
+ * @pre verifyTransformsInfoProfiles != null &&
+ * verifyTransformsInfoProfiles.size() > 0
+ * @pre forall Object o in verifyTransformsInfoProfiles | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfile
* @post return != null
*/
public abstract ReferenceInfo createReferenceInfo(List verifyTransformsInfoProfiles);
/**
- * Create a new <code>VerifyTransformsInfoProfile</code> object containing
- * a reference to a locally stored profile.
- *
+ * Create a new <code>VerifyTransformsInfoProfile</code> object containing a
+ * reference to a locally stored profile.
+ *
* @param profileID The profile ID to resolve during signature verification.
- * @return The <code>VerifyTransformsInfoProfile</code> containing the
- * given profile ID.
- *
+ * @return The <code>VerifyTransformsInfoProfile</code> containing the given
+ * profile ID.
+ *
* @pre profileID != null && profileID.length() > 0
* @post return != null
*/
public abstract VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(String profileID);
/**
- * Create a new <code>VerifyTransformsInfoProfile</code> object by providing
- * the profile data explicitly.
- *
- * @param transforms A valid chain of transformations for the reference.
- * May be <code>null</code>.
+ * Create a new <code>VerifyTransformsInfoProfile</code> object by providing the
+ * profile data explicitly.
+ *
+ * @param transforms A valid chain of transformations for the
+ * reference. May be <code>null</code>.
* @param transformParameters Additional transformation information.
* @return The <code>VerifyTransformsInfoProfile</code> containing the above
- * data.
- *
- * @pre transforms != null implies
- * (transforms.size() > 0 &&
- * forall Object o in transforms | o instanceof Transform)
- * @pre transformParameters != null implies
- * forall Object o in transformParameters |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlverify.TransformParameter
+ * data.
+ *
+ * @pre transforms != null implies (transforms.size() > 0 && forall Object o in
+ * transforms | o instanceof Transform)
+ * @pre transformParameters != null implies forall Object o in
+ * transformParameters | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlverify.TransformParameter
* @post return != null
*/
public abstract VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(
- List transforms,
- List transformParameters);
+ List transforms,
+ List transformParameters);
/**
- * Create a new <code>TransformParameter</code> object with the data
- * contained at the given URI.
- *
+ * Create a new <code>TransformParameter</code> object with the data contained
+ * at the given URI.
+ *
* @param URI The URI identifying the data. The URI will be resolved during
- * signature verification.
- * @return The <code>TransformParameter</code> containing the URI of the
- * data.
- *
+ * signature verification.
+ * @return The <code>TransformParameter</code> containing the URI of the data.
+ *
* @pre URI != null
* @post return != null
*/
public abstract TransformParameter createTransformParameter(String URI);
/**
- * Creata a new <code>TransformParameter</code> object containing the
- * binary data.
- *
- * @param URI The URI identifying the data.
- * @param binaryData The binary data.
+ * Creata a new <code>TransformParameter</code> object containing the binary
+ * data.
+ *
+ * @param URI The URI identifying the data.
+ * @param binaryData The binary data.
* @return The <code>TransformParameter</code> containig the binary data.
- *
+ *
* @pre URI != null
* @pre binary != null
* @post return != null
*/
public abstract TransformParameter createTransformParameter(
- String URI,
- InputStream binaryData);
+ String URI,
+ InputStream binaryData);
/**
- * Create a new <code>TransformParameter</code> object containing the hash
- * value of the transformation data.
- *
- * @param URI The URI identifying the data. It will be resolved during
- * signature verification.
- * @param digestMethod The digest method used for calculating the digest
- * value.
- * @param digestValue The hash value of the transformation data.
+ * Create a new <code>TransformParameter</code> object containing the hash value
+ * of the transformation data.
+ *
+ * @param URI The URI identifying the data. It will be resolved during
+ * signature verification.
+ * @param digestMethod The digest method used for calculating the digest value.
+ * @param digestValue The hash value of the transformation data.
* @return The <code>TransformParameter</code> containing the above data.
- *
+ *
* @pre URI != null
* @pre digestMethod != null
* @pre digestValue != null
*/
public abstract TransformParameter createTransformParameter(
- String URI,
- String digestMethod,
- byte[] digestValue);
+ String URI,
+ String digestMethod,
+ byte[] digestValue);
/**
* Create a new <code>VerifyXMLSignatureResponse</code> object.
- *
- * @param signerInfo Information about the signer certificate.
- * @param hashInputDatas The signed data objects. May be <code>null</code>.
- * @param referenceInputDatas The reference input data objects.
- * May be <code>null</code>.
- * @param signatureCheck Status information about the signature check.
- * @param signatureManifestCheck Status information about the signature
- * manifest check.
- * @param xmlDsigManifestChecks Status information about each XMLDsig manifest
- * check.
- * @param certificateCheck Status information about the signer certificate
- * check.
+ *
+ * @param signerInfo Information about the signer certificate.
+ * @param hashInputDatas The signed data objects. May be
+ * <code>null</code>.
+ * @param referenceInputDatas The reference input data objects. May be
+ * <code>null</code>.
+ * @param signatureCheck Status information about the signature check.
+ * @param signatureManifestCheck Status information about the signature manifest
+ * check.
+ * @param xmlDsigManifestChecks Status information about each XMLDsig manifest
+ * check.
+ * @param certificateCheck Status information about the signer certificate
+ * check.
* @return The <code>VerifyXMLSignatureResponse</code> containing the above
- * data.
- *
+ * data.
+ *
* @pre signerInfo != null
- * @pre hashInputDatas != null implies
- * forall Object o in hashInputDatas |
- * o instanceof at.gv.egovernment.moa.spss.api.common.Content
- * @pre referenceInputDatas != null implies
- * forall Object o in referenceInputDatas |
- * o instanceof at.gv.egovernment.moa.spss.api.common.Content
+ * @pre hashInputDatas != null implies forall Object o in hashInputDatas | o
+ * instanceof at.gv.egovernment.moa.spss.api.common.Content
+ * @pre referenceInputDatas != null implies forall Object o in
+ * referenceInputDatas | o instanceof
+ * at.gv.egovernment.moa.spss.api.common.Content
* @pre signatureCheck != null
- * @pre xmlDsigManifestChecks != null implies
- * forall Object o in xmlDsigManifestChecks |
- * o instanceof at.gv.egovernment.moa.spss.api.xmlverifyManifestRefsCheckResult
+ * @pre xmlDsigManifestChecks != null implies forall Object o in
+ * xmlDsigManifestChecks | o instanceof
+ * at.gv.egovernment.moa.spss.api.xmlverifyManifestRefsCheckResult
* @pre certificateCheck != null
* @post return != null
*/
public abstract VerifyXMLSignatureResponse createVerifyXMLSignatureResponse(
- SignerInfo signerInfo,
- List hashInputDatas,
- List referenceInputDatas,
- ReferencesCheckResult signatureCheck,
- ReferencesCheckResult signatureManifestCheck,
- List xmlDsigManifestChecks,
- CheckResult certificateCheck,
- List adesFormResults,
- ExtendedCertificateCheckResult extCheckResult,
- String signatureAlgorithm);
+ SignerInfo signerInfo,
+ List hashInputDatas,
+ List referenceInputDatas,
+ ReferencesCheckResult signatureCheck,
+ ReferencesCheckResult signatureManifestCheck,
+ List xmlDsigManifestChecks,
+ CheckResult certificateCheck,
+ List adesFormResults,
+ ExtendedCertificateCheckResult extCheckResult,
+ String signatureAlgorithm);
/**
* Create a new <code>ReferencesCheckResult</code> object.
- *
+ *
* @param code The status code.
* @param info Additional information about the reference check.
* @return The <code>ReferencesCheckResult</code> containing the above data.
- *
+ *
* @pre code >= 0
* @post return != null
*/
public abstract ReferencesCheckResult createReferencesCheckResult(
- int code,
- ReferencesCheckResultInfo info);
+ int code,
+ ReferencesCheckResultInfo info);
/**
* Create a new <code>ReferencesCheckResultInfo</code> object.
- *
- * @param anyOtherInfo Arbitrary XML content describing the check result.
- * May be <code>null</code>.
- * @param failedReferences The indexes of the failed references. May be
- * <code>null</code>.
- * @return The <code>ReferencesCheckResultInfo</code> containing the above
- * data.
- *
+ *
+ * @param anyOtherInfo Arbitrary XML content describing the check result.
+ * May be <code>null</code>.
+ * @param failedReferences The indexes of the failed references. May be
+ * <code>null</code>.
+ * @return The <code>ReferencesCheckResultInfo</code> containing the above data.
+ *
* @post return != null
*/
public abstract ReferencesCheckResultInfo createReferencesCheckResultInfo(
- NodeList anyOtherInfo,
- int[] failedReferences);
+ NodeList anyOtherInfo,
+ int[] failedReferences);
/**
* Create a new <code>ManifestRefsCheckResult</code> object.
- *
+ *
* @param code The status code.
* @param info Additional information about the manifest check. May be
- * <code>null</code>.
- * @return The <code>ManifestRefsCheckResult</code> containing the above
- * data.
- *
+ * <code>null</code>.
+ * @return The <code>ManifestRefsCheckResult</code> containing the above data.
+ *
* @pre code >= 0
* @post return != null
*/
public abstract ManifestRefsCheckResult createManifestRefsCheckResult(
- int code,
- ManifestRefsCheckResultInfo info);
+ int code,
+ ManifestRefsCheckResultInfo info);
/**
* Create a new <code>ManifestRefsCheckResultInfo</code> object.
- *
- * @param anyOtherInfo Arbitrary XML content describing the check result.
- * May be <code>null</code>.
- * @param failedReferences The indexes of the failed references. May be
- * <code>null</code>.
+ *
+ * @param anyOtherInfo Arbitrary XML content describing the check
+ * result. May be <code>null</code>.
+ * @param failedReferences The indexes of the failed references. May be
+ * <code>null</code>.
* @param referringSigReference The index of the reference in the signature.
- * @return The <code>ManifestRefsCheckResultInfo</code> containing the
- * above data.
- *
+ * @return The <code>ManifestRefsCheckResultInfo</code> containing the above
+ * data.
+ *
* @pre referringSigReference > 0
* @post return != null
*/
public abstract ManifestRefsCheckResultInfo createManifestRefsCheckResultInfo(
- NodeList anyOtherInfo,
- int[] failedReferences,
- int referringSigReference);
+ NodeList anyOtherInfo,
+ int[] failedReferences,
+ int referringSigReference);
//
// Factory methods for common objects
@@ -948,10 +934,10 @@ public abstract class SPSSFactory {
/**
* Create a new <code>Content</code> object referencing data via a URI.
- *
+ *
* @param referenceURI The URI pointing to the content.
* @return The <code>Content</code> object containing the reference.
- *
+ *
* @pre referenceURI != null && referenceURI.length() > 0
* @post return != null
*/
@@ -959,41 +945,43 @@ public abstract class SPSSFactory {
/**
* Create a new <code>Content</code> object containing binary data.
- *
- * @param binaryData An <code>InputStream</code> containing the binary data.
+ *
+ * @param binaryData An <code>InputStream</code> containing the binary data.
* @param referenceURI An URI identifying the data. May be <code>null</code>.
* @return The <code>Content</code> object containing the data.
- *
+ *
* @pre binaryData != null
* @post return != null
*/
public abstract Content createContent(
- InputStream binaryData,
- String referenceURI);
+ InputStream binaryData,
+ String referenceURI);
/**
- * Create a new <code>Content</code> object containing location reference data.
- *
- * @param locationReferenceURI a URI pointing to the actual remote location of the content.
- *
- * @param referenceURI An URI identifying the data. May be <code>null</code>.
- *
- * @return The <code>Content</code> object containing the data.
- *
- * @pre locationReferenceURI != null
- * @post return != null
- */
- public abstract Content createContent(
- String locationReferenceURI,
- String referenceURI);
+ * Create a new <code>Content</code> object containing location reference data.
+ *
+ * @param locationReferenceURI a URI pointing to the actual remote location of
+ * the content.
+ *
+ * @param referenceURI An URI identifying the data. May be
+ * <code>null</code>.
+ *
+ * @return The <code>Content</code> object containing the data.
+ *
+ * @pre locationReferenceURI != null
+ * @post return != null
+ */
+ public abstract Content createContent(
+ String locationReferenceURI,
+ String referenceURI);
/**
* Create a new <code>Content</code> object containing XML data.
- *
- * @param xmlData The XML data contained in the new <code>Content</code>.
+ *
+ * @param xmlData The XML data contained in the new <code>Content</code>.
* @param referenceURI An URI identifying the data. May be <code>null</code>.
* @return The <code>Content</code> object containing the data.
- *
+ *
* @pre xmlData != null
* @post return != null
*/
@@ -1001,13 +989,11 @@ public abstract class SPSSFactory {
/**
* Create a new <code>XMLDataObjectAssociation</code> object.
- *
- * @param metaInfo Information about the content type. May be
- * <code>null</code>.
- * @param content The <code>Content</code> object containing the data.
- * @return The <code>XMLDataObjectAssociation</code> containing the above
- * data.
- *
+ *
+ * @param metaInfo Information about the content type. May be <code>null</code>.
+ * @param content The <code>Content</code> object containing the data.
+ * @return The <code>XMLDataObjectAssociation</code> containing the above data.
+ *
* @pre content != null
* @pre content.getContentType() == Content.CONTENT_XML ||
* content.getContentType() == Contetn.CONTENT_BINARY
@@ -1015,34 +1001,36 @@ public abstract class SPSSFactory {
* @post return != null
*/
public abstract XMLDataObjectAssociation createXMLDataObjectAssociation(
- MetaInfo metaInfo,
- Content content);
+ MetaInfo metaInfo,
+ Content content);
/**
* Create a new <code>MetaInfo</code> object.
- *
- * @param mimeType The MIME type part of the meta information.
+ *
+ * @param mimeType The MIME type part of the meta information.
* @param description Descriptive meta information. May be <code>null</code>.
- * @param otherInfo XML meta information. May be <code>null</code>.
- * @param type Type information for XML signature creation. May be <code>null</code>.
+ * @param otherInfo XML meta information. May be <code>null</code>.
+ * @param type Type information for XML signature creation. May be
+ * <code>null</code>.
* @return The <code>MetaInfo</code> object containing the above data.
- *
+ *
* @pre mimeType != null && mimeType.length() > 0
- * @pre otherInfo != null implies
- * forall Node n in otherInfo | n.getNodeType() == Node.ELEMENT
+ * @pre otherInfo != null implies forall Node n in otherInfo | n.getNodeType()
+ * == Node.ELEMENT
*/
public abstract MetaInfo createMetaInfo(
- String mimeType,
- String description,
- NodeList otherInfo,
- String type);
+ String mimeType,
+ String description,
+ NodeList otherInfo,
+ String type);
/**
- * Create a <code>CanonicalizationTransform</code> type of <code>Transform</code>.
- *
+ * Create a <code>CanonicalizationTransform</code> type of
+ * <code>Transform</code>.
+ *
* @param algorithmURI The algorithm URI of the canonicalization.
* @return The created <code>CanonicalizationTransform</code> object.
- *
+ *
* @pre CanonicalizationTransform.CANONICAL_XML.equals(algorithmURI) ||
* CanonicalizationTransform.CANONICAL_XML_WITH_COMMENTS.equals(algorithmURI)
* @post return != null
@@ -1052,95 +1040,95 @@ public abstract class SPSSFactory {
/**
* Create an <code>ExclusiveCanonicalizationTransform</code> type of
* <code>Transform</code>.
- *
- * @param algorithmURI The algorithm URI of the exclusive canonicalization.
- * @param inclusiveNamespacePrefixes The prefixes of the namespaces to
- * treat according to canonical XML.
+ *
+ * @param algorithmURI The algorithm URI of the exclusive
+ * canonicalization.
+ * @param inclusiveNamespacePrefixes The prefixes of the namespaces to treat
+ * according to canonical XML.
* @return The new <code>ExclusiveCanonicalizationTransform</code>
- *
- * @pre ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals(algorithmURI) ||
+ *
+ * @pre ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals(algorithmURI)
+ * ||
* ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS.equals(algorithmURI)
* @pre inclusiveNamespacePrefixes != null
- * @pre forall Object o in inclusiveNamespacePrefixes | o instanceof String
+ * @pre forall Object o in inclusiveNamespacePrefixes | o instanceof String
* @post return != null
*/
public abstract Transform createExclusiveCanonicalizationTransform(
- String algorithmURI,
- List inclusiveNamespacePrefixes);
+ String algorithmURI,
+ List inclusiveNamespacePrefixes);
/**
* Create a <code>Base64Transform</code> type of <code>Transform</code>.
- *
+ *
* @return A <code>Transform</code> denoting a Base64 decoding.
- *
+ *
* @post return != null
*/
public abstract Transform createBase64Transform();
/**
- * Create a <code>EnvelopedSignatureTransform</code> type of
+ * Create a <code>EnvelopedSignatureTransform</code> type of
* <code>Transform</code>.
- *
+ *
* @return A <code>Transform</code> denoting an enveloped signature.
- *
+ *
* @post return != null
*/
public abstract Transform createEnvelopedSignatureTransform();
/**
* Create an <code>XSLTTransform</code> type of <code>Transform</code>.
- *
- * @param styleSheet The XSLT stylesheet contained in the
- * <code>Transform</code>.
+ *
+ * @param styleSheet The XSLT stylesheet contained in the
+ * <code>Transform</code>.
* @return A <code>Transform</code> containing the XSLT stylesheet.
- *
+ *
* @post return != null
*/
public abstract Transform createXSLTTransform(Element styleSheet);
/**
* Create an <code>XPathTransform</code> type of <code>Transform</code>.
- *
- * @param xPathExpression The XPath expression to use in the created
- * <code>Transform</code>.
- * @param namespaceDeclarations The namespace prefix to URI mapping to
- * apply on evaluation of the XPath expression.
+ *
+ * @param xPathExpression The XPath expression to use in the created
+ * <code>Transform</code>.
+ * @param namespaceDeclarations The namespace prefix to URI mapping to apply on
+ * evaluation of the XPath expression.
* @return The <code>XPathTransform</code> containing the above data.
- *
+ *
* @pre xPathExpression != null
* @pre namespaceDeclarations != null
* @post return != null
*/
public abstract Transform createXPathTransform(
- String xPathExpression,
- Map namespaceDeclarations);
+ String xPathExpression,
+ Map namespaceDeclarations);
/**
- * Create a new <code>XPathFilter2Transform</code> type of
- * <code>Transform</code>.
- *
+ * Create a new <code>XPathFilter2Transform</code> type of
+ * <code>Transform</code>.
+ *
* @param xPathFilters The filters contained in the newly created
- * <code>XPathFilter2Transform</code>.
- * @return The <code>XPathFilter2Transform</code> containing the given
- * filters.
- *
- * @pre xPathFilters != null &&
- * forall Object o in xPathFilters |
- * o instanceof at.gv.egovernment.moa.spss.api.common.XPathFilter
+ * <code>XPathFilter2Transform</code>.
+ * @return The <code>XPathFilter2Transform</code> containing the given filters.
+ *
+ * @pre xPathFilters != null && forall Object o in xPathFilters | o instanceof
+ * at.gv.egovernment.moa.spss.api.common.XPathFilter
* @post return != null
*/
public abstract Transform createXPathFilter2Transform(List xPathFilters);
/**
* Create a new <code>XPathFilter</code> object.
- *
- * @param filterType The type of filter.
- * @param xPathExpression The XPath expression contained in this filter.
- * @param namespaceDeclarations The namespace prefix to URI mapping to apply
- * on evaluation of the XPath expression.
+ *
+ * @param filterType The type of filter.
+ * @param xPathExpression The XPath expression contained in this filter.
+ * @param namespaceDeclarations The namespace prefix to URI mapping to apply on
+ * evaluation of the XPath expression.
* @return The <code>XPathFilter</code> containing the above data.
- *
- * @pre XPathFilter.SUBTRACT_TYPE.equals(filterType) ||
+ *
+ * @pre XPathFilter.SUBTRACT_TYPE.equals(filterType) ||
* XPathFilter.INTERSECT_TYPE.equals(filterType) ||
* XPathFilter.UNION_TYPE.equals(filterType)
* @pre xPathExpression != null
@@ -1148,73 +1136,76 @@ public abstract class SPSSFactory {
* @post return != null
*/
public abstract XPathFilter createXPathFilter(
- String filterType,
- String xPathExpression,
- Map namespaceDeclarations);
+ String filterType,
+ String xPathExpression,
+ Map namespaceDeclarations);
/**
* Create a new <code>CheckResult</code> object.
- *
+ *
* @param code The check code.
* @param info Verbose information about the check. May be <code>null</code>.
* @return The <code>CheckResult</code> containing the above data.
- *
+ *
* @pre code >= 0
* @post return != null
*/
public abstract CheckResult createCheckResult(int code, NodeList info);
-
-
/**
* Create a new <code>SignerInfo</code> object.
- *
- * @param signerCertificate The signer certificate in binary form.
- * @param qualifiedCertificate <code>true</code>, if the signer certificate is
- * a qualified certificate, otherwise <code>false</code>.
- * @param qcSourceTSL <code>true</code>, if the QC information comes from the TSL,
- * otherwise <code>false</code>.
- * @param publicAuthority <code>true</code>, if the signer certificate is a
- * public authority certificate, otherwise <code>false</code>.
- * @param publicAuthorityID The identification of the public authority
- * (if <code>publicAuthority</code> is <code>true</code>). May be
- * <code>null</code>.
- * @param sscd <code>true</code>, if the TSL check verifies the
- * signature based on a SSDC, otherwise <code>false</code>.
- * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from the TSL,
- * otherwise <code>false</code>.
- * @param issuerCountryCode contains the signer certificate issuer country code.
- * @param tslInfos contains information from Trust-Status List for the signer certificate
+ *
+ * @param signerCertificate The signer certificate in binary form.
+ * @param qualifiedCertificate <code>true</code>, if the signer certificate is a
+ * qualified certificate, otherwise
+ * <code>false</code>.
+ * @param qcSourceTSL <code>true</code>, if the QC information comes
+ * from the TSL, otherwise <code>false</code>.
+ * @param publicAuthority <code>true</code>, if the signer certificate is a
+ * public authority certificate, otherwise
+ * <code>false</code>.
+ * @param publicAuthorityID The identification of the public authority (if
+ * <code>publicAuthority</code> is
+ * <code>true</code>). May be <code>null</code>.
+ * @param sscd <code>true</code>, if the TSL check verifies the
+ * signature based on a SSDC, otherwise
+ * <code>false</code>.
+ * @param sscdSourceTSL <code>true</code>, if the SSCD information comes
+ * from the TSL, otherwise <code>false</code>.
+ * @param issuerCountryCode contains the signer certificate issuer country
+ * code.
+ * @param tslInfos contains information from Trust-Status List for
+ * the signer certificate
* @return The <code>SignerInfo</code> containing the above data.
- *
+ *
* @pre signerCertSubjectName != null
* @pre signerCertIssuerSerial != null
* @pre signerCertificate != null
*/
public abstract SignerInfo createSignerInfo(
- X509Certificate signerCertificate,
- boolean qualifiedCertificate,
- boolean qcSourceTSL,
- boolean publicAuthority,
- String publicAuthorityID,
- boolean sscd,
- boolean sscdSourceTSL,
- String issuerCountryCode,
- Date signingTime,
- TslInfos tslInfos);
-
+ X509Certificate signerCertificate,
+ boolean qualifiedCertificate,
+ boolean qcSourceTSL,
+ boolean publicAuthority,
+ String publicAuthorityID,
+ boolean sscd,
+ boolean sscdSourceTSL,
+ String issuerCountryCode,
+ Date signingTime,
+ TslInfos tslInfos);
+
/**
* Create a new <code>X509IssuerSerial</code> object.
- *
- * @param issuerName The distinguished name of the issuer.
+ *
+ * @param issuerName The distinguished name of the issuer.
* @param issuerSerial The certificate serial number.
* @return The <code>X509IssuerSerial</code> containing the above data.
- *
+ *
* @pre issuerName != null
* @pre issuerSerial != null
*/
public abstract X509IssuerSerial createX509IssuerSerial(
- String issuerName,
- BigInteger issuerSerial);
+ String issuerName,
+ BigInteger issuerSerial);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java
index 05271fb..4019ad7 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureCreationService.java
@@ -21,18 +21,16 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api;
import at.gv.egovernment.moa.spss.MOAException;
-
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
import at.gv.egovernment.moa.spss.server.invoke.SignatureCreationServiceImpl;
/**
* Interface providing functions for signature creation.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -40,42 +38,40 @@ public abstract class SignatureCreationService {
/** The default implementation class. */
private static final String DEFAULT_IMPLEMENTATION =
- "at.gv.egovernment.moa.spss.server.invoke.SignatureCreationServiceImpl";
-
- /** The single instance of this class. */
+ "at.gv.egovernment.moa.spss.server.invoke.SignatureCreationServiceImpl";
+
+ /** The single instance of this class. */
private static SignatureCreationService instance = null;
/**
* Get an instance of the <code>SignatureCreationService</code>.
- *
+ *
* @return A concrete instance of the <code>SignatureCreationService</code>.
*/
public static synchronized SignatureCreationService getInstance() {
if (instance == null) {
try {
- /*
- DiscoverClass discover = new DiscoverClass();
- instance =
- (SignatureCreationService) discover.newInstance(
- SignatureCreationService.class,
- DEFAULT_IMPLEMENTATION);*/
+ /*
+ * DiscoverClass discover = new DiscoverClass(); instance =
+ * (SignatureCreationService) discover.newInstance(
+ * SignatureCreationService.class, DEFAULT_IMPLEMENTATION);
+ */
instance = new SignatureCreationServiceImpl();
- } catch (Exception e) {
- // this can not happen since we provide a valid default
+ } catch (final Exception e) {
+ // this can not happen since we provide a valid default
// implementation
}
}
return instance;
}
-
+
/**
* Create an XML signature.
- *
+ *
* @param request Information on how to create the signature.
- * @return A <code>CreateXMLSignatureResponse</code> containing the
- * signature.
+ * @return A <code>CreateXMLSignatureResponse</code> containing the signature.
* @throws MOAException Error in server side MOA module.
*/
public abstract CreateXMLSignatureResponse createXMLSignature(CreateXMLSignatureRequest request)
- throws MOAException;
+ throws MOAException;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java
index 2433e20..7d95d3a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/SignatureVerificationService.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api;
import at.gv.egovernment.moa.spss.MOAException;
@@ -33,7 +32,7 @@ import at.gv.egovernment.moa.spss.server.invoke.SignatureVerificationServiceImpl
/**
* Interface providing functions for verifying signatures.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -41,28 +40,27 @@ public abstract class SignatureVerificationService {
/** The default implementation class. */
private static final String DEFAULT_IMPLEMENTATION =
- "at.gv.egovernment.moa.spss.server.invoke.SignatureVerificationServiceImpl";
+ "at.gv.egovernment.moa.spss.server.invoke.SignatureVerificationServiceImpl";
/** The single instance of this class. */
private static SignatureVerificationService instance = null;
/**
* Get an instance of the <code>SignatureVerificationService</code>.
- *
- * @return A concrete instance of the
- * <code>SignatureVerificationService</code>.
+ *
+ * @return A concrete instance of the <code>SignatureVerificationService</code>.
*/
public static synchronized SignatureVerificationService getInstance() {
if (instance == null) {
try {
- /*DiscoverClass discover = new DiscoverClass();
- instance =
- (SignatureVerificationService) discover.newInstance(
- SignatureVerificationService.class,
- DEFAULT_IMPLEMENTATION);*/
- instance = new SignatureVerificationServiceImpl();
- } catch (Exception e) {
- // this can not happen since we provide a valid default
+ /*
+ * DiscoverClass discover = new DiscoverClass(); instance =
+ * (SignatureVerificationService) discover.newInstance(
+ * SignatureVerificationService.class, DEFAULT_IMPLEMENTATION);
+ */
+ instance = new SignatureVerificationServiceImpl();
+ } catch (final Exception e) {
+ // this can not happen since we provide a valid default
// implementation
}
}
@@ -71,23 +69,24 @@ public abstract class SignatureVerificationService {
/**
* Verify a CMS signature.
- *
+ *
* @param request Detailed information on the verification that should be
- * performed.
+ * performed.
* @return A <code>VerifyCMSSignatureResponse</code> object that contains
- * information about the performed verification.
+ * information about the performed verification.
* @throws MOAException Error in server side MOA module.
*/
public abstract VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request)
- throws MOAException;
+ throws MOAException;
+
/**
* Verfiy an XML Signature.
- *
- * @param request information on the verification that should be performed.
+ *
+ * @param request information on the verification that should be performed.
* @return A <code>VerifyXMLSignatureResponse</code> object that contains
- * information about the performed verification.
+ * information about the performed verification.
* @throws MOAException Error in server side MOA module.
*/
public abstract VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request)
- throws MOAException;
+ throws MOAException;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java
index 10db676..958bd7d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CMSSignatureResponse.java
@@ -21,21 +21,19 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmssign;
-
/**
* Contains the signature if the signature creation was successful.
- *
+ *
* @version $Id$
*/
public interface CMSSignatureResponse
- extends CreateCMSSignatureResponseElement {
- /**
+ extends CreateCMSSignatureResponseElement {
+ /**
* Gets the CMS signature (Base64 encoded).
- *
+ *
* @return The CMS signature
*/
- public String getCMSSignature();
+ String getCMSSignature();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java
index 9d5cd7a..c971451 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureRequest.java
@@ -21,29 +21,28 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmssign;
import java.util.List;
-
/**
* Object that encapsulates a request to create a CMS Signature.
- *
- *
+ *
+ *
* @version $Id$
*/
public interface CreateCMSSignatureRequest {
/**
* Gets the identifier for the keys to be used for the signature.
- *
+ *
* @return The identifier for the keys to be used.
*/
- public String getKeyIdentifier();
+ String getKeyIdentifier();
+
/**
- * Gets the information of the singleSignatureInfo elements.
- *
+ * Gets the information of the singleSignatureInfo elements.
+ *
* @return The information of singleSignatureInfo elements.
*/
- public List getSingleSignatureInfos();
+ List getSingleSignatureInfos();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java
index 6062a11..e81a2bc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponse.java
@@ -21,22 +21,21 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmssign;
import java.util.List;
/**
- * Object that encapsulates the response on to a
+ * Object that encapsulates the response on to a
* <code>CreateCMSSignatureRequest</code> to create an XML signature.
- *
+ *
* @version $Id$
*/
public interface CreateCMSSignatureResponse {
/**
* Gets the response elements.
- *
+ *
* @return The response elements.
*/
- public List getResponseElements();
+ List getResponseElements();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java
index 8e4e611..a8d0ebd 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/CreateCMSSignatureResponseElement.java
@@ -21,31 +21,29 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmssign;
/**
- * Base class for <code>CMSSignature</code> and
- * <code>ErrorResponse</code> elements in a
- * <code>CreateXMLSignatureResponse</code>.
- *
+ * Base class for <code>CMSSignature</code> and <code>ErrorResponse</code>
+ * elements in a <code>CreateXMLSignatureResponse</code>.
+ *
* @version $Id$
*/
public interface CreateCMSSignatureResponseElement {
/**
* Indicates that this object contains a <code>CMSSignature</code>.
*/
- public static final int CMS_SIGNATURE = 0;
+ int CMS_SIGNATURE = 0;
/**
* Indicates that this objet contains an <code>ErrorResponse</code>.
*/
- public static final int ERROR_RESPONSE = 1;
-
+ int ERROR_RESPONSE = 1;
+
/**
* Gets the type of response object.
- *
- * @return The type of response object, either
- * <code>CMS_SIGNATURE</code> or <code>ERROR_RESPONSE</code>.
+ *
+ * @return The type of response object, either <code>CMS_SIGNATURE</code> or
+ * <code>ERROR_RESPONSE</code>.
*/
- public int getResponseType();
+ int getResponseType();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java
index b9f3630..4f97e5a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/DataObjectInfo.java
@@ -21,38 +21,37 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmssign;
import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
/**
* Encapsulates information required to create a single signature.
- *
+ *
* @version $Id$
*/
public interface DataObjectInfo {
/**
* Indicates that a detached signature will be created.
*/
- public static final String STRUCTURE_DETACHED = "detached";
+ String STRUCTURE_DETACHED = "detached";
/**
* Indicates that an enveloping signature will be created.
*/
- public static final String STRUCTURE_ENVELOPING = "enveloping";
+ String STRUCTURE_ENVELOPING = "enveloping";
/**
* Gets the structure of the signature.
- *
+ *
* @return The structure of the signature.
*/
- public String getStructure();
+ String getStructure();
/**
* Gets information related to a single data object.
- *
+ *
* @return Information related to a single data object.
*/
- public CMSDataObject getDataObject();
-
+ CMSDataObject getDataObject();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
index 4d56cf3..2bff558 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmssign/SingleSignatureInfo.java
@@ -21,14 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmssign;
-
-
/**
* Encapsulates data to create a single signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,24 +33,24 @@ package at.gv.egovernment.moa.spss.api.cmssign;
public interface SingleSignatureInfo {
/**
* Gets the dataObjectInfo information.
- *
+ *
* @return The dataObjectInfo information.
*/
- public DataObjectInfo getDataObjectInfo();
-
+ DataObjectInfo getDataObjectInfo();
+
/**
* Check whether a Security Layer conform signature manifest will be created.
- *
- * @return <code>true</code>, if a Security Layer conform signature manifest
- * will be created, <code>false</code> otherwise.
+ *
+ * @return <code>true</code>, if a Security Layer conform signature manifest
+ * will be created, <code>false</code> otherwise.
*/
- public boolean isSecurityLayerConform();
-
+ boolean isSecurityLayerConform();
+
/**
- * Check whether a PAdES conform CAdES signature will be created
- *
- * @return <code>true</code>, if a PAdES conform CAdES signature
- * will be created, <code>false</code> otherwise.
+ * Check whether a PAdES conform CAdES signature will be created
+ *
+ * @return <code>true</code>, if a PAdES conform CAdES signature will be
+ * created, <code>false</code> otherwise.
*/
- public boolean isPAdESConform();
+ boolean isPAdESConform();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java
index 4c2c1cc..f240da8 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContent.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmsverify;
/**
* Base class for objects containing CMS content.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -35,18 +34,18 @@ public interface CMSContent {
/**
* Indicates that this object contains a reference to the CMS content.
*/
- public static final int REFERENCE_CONTENT = 0;
+ int REFERENCE_CONTENT = 0;
/**
* Indicates that this object contains the CMS content explicitly.
*/
- public static final int EXPLICIT_CONTENT = 1;
-
+ int EXPLICIT_CONTENT = 1;
+
/**
* Gets the type of the contained content.
- *
+ *
* @return The type of content, either <code>REFERENCE_CONTENT</code> or
- * <code>EXPLICIT_CONTENT</code>.
+ * <code>EXPLICIT_CONTENT</code>.
*/
- public int getContentType();
-
+ int getContentType();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java
index 7fc6029..1c6506c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentExcplicit.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmsverify;
import java.io.InputStream;
/**
* Encapsulates binary CMS content.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,8 +35,8 @@ import java.io.InputStream;
public interface CMSContentExcplicit extends CMSContent {
/**
* Gets the content as a stream.
- *
+ *
* @return A stream containing the binary content.
*/
- public InputStream getBinaryContent();
+ InputStream getBinaryContent();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java
index ade197d..c7366ff 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSContentReference.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmsverify;
/**
* Encapsulates CMS content that is referenced by an URI.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -34,8 +33,8 @@ package at.gv.egovernment.moa.spss.api.cmsverify;
public interface CMSContentReference extends CMSContent {
/**
* Gets the reference URI from wher the content can be retrieved.
- *
+ *
* @return The reference URI.
*/
- public String getReference();
+ String getReference();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java
index f9a6846..ffd31e1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/CMSDataObject.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmsverify;
import java.math.BigDecimal;
@@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo;
/**
* A data object used for verification of CMS signatures.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -38,20 +37,20 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo;
public interface CMSDataObject {
/**
* Gets the meta information of the content.
- *
+ *
* @return An object containig the meta information.
*/
- public MetaInfo getMetaInfo();
+ MetaInfo getMetaInfo();
+
/**
* Gets the actual content of the data object.
- *
+ *
* @return The actual content.
*/
- public CMSContent getContent();
-
-
- public BigDecimal getExcludeByteRangeFrom();
-
- public BigDecimal getExcludeByteRangeTo();
-
- }
+ CMSContent getContent();
+
+ BigDecimal getExcludeByteRangeFrom();
+
+ BigDecimal getExcludeByteRangeTo();
+
+}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java
index 6294fb1..5ce51cf 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureRequest.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmsverify;
import java.io.InputStream;
@@ -29,7 +28,7 @@ import java.util.Date;
/**
* Object that encapsulates a request to verify a CMS signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -38,42 +37,48 @@ public interface VerifyCMSSignatureRequest {
/**
* Indicates, that signature checks for all signatories must be returned.
*/
- public static int[] ALL_SIGNATORIES = new int[] { -1 };
+ int[] ALL_SIGNATORIES = new int[] { -1 };
+
/**
* Gets the positions of signatories whose signature must be verified.
- *
+ *
* @return The positions of signatories.
*/
- public int[] getSignatories();
+ int[] getSignatories();
+
/**
- * Gets the date and time for which the signature verification has to
- * be performed.
- *
- * @return Date and time for which the signature verification has
- * to be performed.
+ * Gets the date and time for which the signature verification has to be
+ * performed.
+ *
+ * @return Date and time for which the signature verification has to be
+ * performed.
*/
- public Date getDateTime();
+ Date getDateTime();
+
/**
* Gets the binary CMS signature.
- *
- * @return An <code>InputStream</code> from which the binary CMS signature
- * can be read.
+ *
+ * @return An <code>InputStream</code> from which the binary CMS signature can
+ * be read.
*/
- public InputStream getCMSSignature();
- /**
+ InputStream getCMSSignature();
+
+ /**
* Gets the data object necessary for the verification.
- *
+ *
* @return The data object necessary for verification.
*/
- public CMSDataObject getDataObject();
+ CMSDataObject getDataObject();
+
/**
* Gets the profile ID of trusted certificates to be used for signature
* verification.
- *
+ *
* @return The profile ID of trusted certificates.
*/
- public String getTrustProfileId();
-
- public boolean isPDF();
- public boolean isExtended();
+ String getTrustProfileId();
+
+ boolean isPDF();
+
+ boolean isExtended();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java
index 33924cb..9f58c43 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponse.java
@@ -21,16 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmsverify;
import java.util.List;
-
/**
- * Object that encapsulates the response on a request to verify a CMS
- * signature.
- *
+ * Object that encapsulates the response on a request to verify a CMS signature.
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -38,8 +35,8 @@ import java.util.List;
public interface VerifyCMSSignatureResponse {
/**
* Gets the response elements.
- *
- * @return The response elements.
+ *
+ * @return The response elements.
*/
- public List getResponseElements();
+ List getResponseElements();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java
index ec540bf..35bdf6e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/cmsverify/VerifyCMSSignatureResponseElement.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.cmsverify;
import java.util.List;
@@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo;
/**
* Contains detailed information about the verification of a signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -40,37 +39,39 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo;
public interface VerifyCMSSignatureResponseElement {
/**
* Gets a SignerInfo element according to CMS.
- *
+ *
* @return The SignerInfo element according to CMS.
*/
- public SignerInfo getSignerInfo();
+ SignerInfo getSignerInfo();
+
/**
* Gets the result of the signature verification.
- *
+ *
* @return The result of the signature verification.
*/
- public CheckResult getSignatureCheck();
+ CheckResult getSignatureCheck();
+
/**
* Gets the result of the certificate verification.
- *
+ *
* @return The result of the certificate verification.
*/
- public CheckResult getCertificateCheck();
-
+ CheckResult getCertificateCheck();
+
/**
* Gets AdES Form results
- *
+ *
* This might be null!
- *
+ *
* @return The result of the AdES Form validation
*/
- public List getAdESFormResults();
-
- public ExtendedCertificateCheckResult getExtendedCertificateCheck();
-
- public String getSignatureAlgorithm();
-
- public Boolean getCoversFullDocument();
-
- public int[] getByteRangeOfSignature();
+ List getAdESFormResults();
+
+ ExtendedCertificateCheckResult getExtendedCertificateCheck();
+
+ String getSignatureAlgorithm();
+
+ Boolean getCoversFullDocument();
+
+ int[] getByteRangeOfSignature();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java
index 6050d5b..e1c650f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Base64Transform.java
@@ -21,17 +21,16 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
/**
* A <code>Transform</code> performing a Base64 decoding.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface Base64Transform extends Transform {
/** Algorithm URI of the Base64 <code>Transform</code> type. */
- public static final String BASE64_DECODING =
- "http://www.w3.org/2000/09/xmldsig#base64";
+ String BASE64_DECODING =
+ "http://www.w3.org/2000/09/xmldsig#base64";
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java
index 05977c5..680061d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CanonicalizationTransform.java
@@ -21,21 +21,20 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import at.gv.egovernment.moaspss.util.Constants;
/**
* A canonicalization type of <code>Transform</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface CanonicalizationTransform extends Transform {
/** Algorithm URI of canonical XML. */
- public static final String CANONICAL_XML = Constants.C14N_URI;
+ String CANONICAL_XML = Constants.C14N_URI;
/** Algorithm URI of canonical XML with comments. */
- public static final String CANONICAL_XML_WITH_COMMENTS =
- Constants.C14N_WITH_COMMENTS_URI;
+ String CANONICAL_XML_WITH_COMMENTS =
+ Constants.C14N_WITH_COMMENTS_URI;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java
index 5c94981..4a9ff27 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/CheckResult.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import org.w3c.dom.NodeList;
/**
* Object encapsulating the result of a signature verification.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,14 +35,15 @@ import org.w3c.dom.NodeList;
public interface CheckResult {
/**
* Gets the result code.
- *
+ *
* @return The result code.
*/
- public int getCode();
+ int getCode();
+
/**
* Gets descriptive information.
- *
+ *
* @return Descriptive information.
*/
- public NodeList getInfo();
+ NodeList getInfo();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java
index efde1eb..d9adb68 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Content.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
/**
* Encapsulates content data.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @author Gregor Karlinger
@@ -35,37 +34,38 @@ package at.gv.egovernment.moa.spss.api.common;
public interface Content {
/**
- * Indicates that this object contains a URI reference to some content.
+ * Indicates that this object contains a URI reference to some content.
*/
- public static final int REFERENCE_CONTENT = 0;
+ int REFERENCE_CONTENT = 0;
/**
* Indicates that this object contains binary content.
*/
- public static final int BINARY_CONTENT = 1;
+ int BINARY_CONTENT = 1;
/**
* Indicates that this object contains XML content.
*/
- public static final int XML_CONTENT = 2;
-
+ int XML_CONTENT = 2;
+
/**
* Indicates that this object contains a location reference content.
*/
- public static final int LOCREF_CONTENT = 3;
+ int LOCREF_CONTENT = 3;
/**
* Gets the type of content contained in this object.
- *
- * @return The type of content, one of <code>BINARY_CONTENT</code>, <code>XML_CONTENT</code>, <code>
+ *
+ * @return The type of content, one of <code>BINARY_CONTENT</code>,
+ * <code>XML_CONTENT</code>, <code>
* REFERENCE_CONTENT</code> or <code>LOCREF_CONTENT</code>.
*/
- public int getContentType();
+ int getContentType();
/**
* Gets the reference to the content data (a URI).
- *
+ *
* @return The reference to the content data.
*/
- public String getReference();
+ String getReference();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java
index 77ec9dd..a30c5f8 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentBinary.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.io.InputStream;
/**
* Encapsulates binary content.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,10 +35,10 @@ import java.io.InputStream;
public interface ContentBinary extends Content {
/**
* Get the binary content.
- *
- * @return An <code>InputStream</code> from which the binary content can
- * be read.
+ *
+ * @return An <code>InputStream</code> from which the binary content can be
+ * read.
*/
- public InputStream getBinaryContent();
-
+ InputStream getBinaryContent();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java
index d1ef096..59c96cb 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentLocRef.java
@@ -21,21 +21,20 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
/**
* Encapsulates location reference content.
- *
+ *
* @author Gregor Karlinger
* @version $Id$
*/
-public interface ContentLocRef extends Content
-{
+public interface ContentLocRef extends Content {
/**
- * Gets the location reference URI pointing to the actual remote location of the content.
- *
+ * Gets the location reference URI pointing to the actual remote location of the
+ * content.
+ *
* @return the location reference URI.
*/
- public String getLocationReferenceURI();
+ String getLocationReferenceURI();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java
index 8c4a658..5650939 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentReference.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
/**
* Content containing a reference to content data.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java
index d41f6a6..1f294b1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ContentXML.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import org.w3c.dom.NodeList;
/**
* Encapsulates arbitrary XML content.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,8 +35,8 @@ import org.w3c.dom.NodeList;
public interface ContentXML extends Content {
/**
* Gets the XML content stored in this object.
- *
+ *
* @return The XML content.
*/
- public NodeList getXMLContent();
+ NodeList getXMLContent();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java
index b446c5f..9d29d9b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ElementSelector.java
@@ -21,32 +21,32 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.util.Map;
/**
- * A class containing data for selecting single elements using an XPath
+ * A class containing data for selecting single elements using an XPath
* expression.
- *
+ *
* Derived classes are used to point to the <code>CreateSignatureLocation</code>
* and the <code>VerifySignatureLocation</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface ElementSelector {
/**
* Gets the XPath expression pointing to a single element.
- *
+ *
* @return The XPath expression to select the signature parent element.
*/
- public String getXPathExpression();
+ String getXPathExpression();
+
/**
* Gets the namespace prefix to URI mapping to use when evaluating the XPath.
- *
+ *
* @return The namespace prefix to URI mapping.
*/
- public Map getNamespaceDeclarations();
+ Map getNamespaceDeclarations();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java
index 8e6de87..816576a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/EnvelopedSignatureTransform.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
/**
* An enveloped signature type of <code>Transform</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -34,6 +33,6 @@ public interface EnvelopedSignatureTransform extends Transform {
/**
* Algorithm URI of the enveloped signature type of <code>Transform</code>.
*/
- public static final String ENVELOPED_SIGNATURE =
- "http://www.w3.org/2000/09/xmldsig#enveloped-signature";
+ String ENVELOPED_SIGNATURE =
+ "http://www.w3.org/2000/09/xmldsig#enveloped-signature";
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java
index 557ff21..18e452c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExclusiveCanonicalizationTransform.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.util.List;
@@ -30,22 +29,22 @@ import at.gv.egovernment.moaspss.util.Constants;
/**
* An exclusive canonicalization type of <code>Transform</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface ExclusiveCanonicalizationTransform extends Transform {
/** Algorithm URI of exclusive canonical XML. */
- public static final String EXCLUSIVE_CANONICAL_XML = Constants.EXC_C14N_URI;
+ String EXCLUSIVE_CANONICAL_XML = Constants.EXC_C14N_URI;
/** Algorithm URI of exclusive canonical XML with comments. */
- public static final String EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS =
- Constants.EXC_C14N_WITH_COMMENTS_URI;
+ String EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS =
+ Constants.EXC_C14N_WITH_COMMENTS_URI;
/**
* Sets the namespace prefixes that are handled in the same manner as in
* canonical XML.
- *
+ *
* @return The inclusive namespace prefixes.
*/
- public List getInclusiveNamespacePrefixes();
+ List getInclusiveNamespacePrefixes();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java
index 494b216..afc783e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/ExtendedCertificateCheckResult.java
@@ -1,33 +1,31 @@
package at.gv.egovernment.moa.spss.api.common;
-import org.w3c.dom.NodeList;
-
public interface ExtendedCertificateCheckResult {
- /**
- * Gets the result code.
- *
- * @return The result code.
- */
- public int getMajorCode();
+ /**
+ * Gets the result code.
+ *
+ * @return The result code.
+ */
+ int getMajorCode();
- /**
- * Gets descriptive information.
- *
- * @return Descriptive information.
- */
- public String getMajorInfo();
+ /**
+ * Gets descriptive information.
+ *
+ * @return Descriptive information.
+ */
+ String getMajorInfo();
- /**
- * Gets the result code.
- *
- * @return The result code.
- */
- public int getMinorCode();
+ /**
+ * Gets the result code.
+ *
+ * @return The result code.
+ */
+ int getMinorCode();
- /**
- * Gets descriptive information.
- *
- * @return Descriptive information.
- */
- public String getMinorInfo();
+ /**
+ * Gets descriptive information.
+ *
+ * @return Descriptive information.
+ */
+ String getMinorInfo();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java
index 8f8a714..b9c75bb 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/InputData.java
@@ -21,45 +21,42 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
/**
- * Interface specifying accessors for two attributes needed for returning
- * <code>HashInputData</code> and <code>ReferenceInputData</code> information
- * as part of <code>VerifyXMLSignatureResponse</code>.
- *
+ * Interface specifying accessors for two attributes needed for returning
+ * <code>HashInputData</code> and <code>ReferenceInputData</code> information as
+ * part of <code>VerifyXMLSignatureResponse</code>.
+ *
* @author Gregor Karlinger
- *
+ *
* @version $Id$
*/
-public interface InputData extends Content
-{
+public interface InputData extends Content {
/**
- * Possible value returned by {@link #getPartOf}.
+ * Possible value returned by {@link #getPartOf}.
*/
- public static String CONTAINER_SIGNEDINFO_ = "SignedInfo";
+ String CONTAINER_SIGNEDINFO_ = "SignedInfo";
/**
- * Possible value returned by {@link #getPartOf}.
+ * Possible value returned by {@link #getPartOf}.
*/
- public static String CONTAINER_XMLDSIGMANIFEST_ = "XMLDSIGManifest";
-
+ String CONTAINER_XMLDSIGMANIFEST_ = "XMLDSIGManifest";
+
/**
* Value returned by {link getReferringReferenceNumber}, signalling that the
* attribute is not used.
*/
- public static int REFERER_NONE_ = -1;
-
+ int REFERER_NONE_ = -1;
+
/**
- * Returns a <code>String</code> signalling what kind of container the
- * XMLDSIG <code>Reference</code> this <code>InputData</code> belongs
- * to is part of.
- *
- * @return the kind of container.
+ * Returns a <code>String</code> signalling what kind of container the XMLDSIG
+ * <code>Reference</code> this <code>InputData</code> belongs to is part of.
+ *
+ * @return the kind of container.
*/
- public String getPartOf();
-
+ String getPartOf();
+
/**
* If this <code>InputData</code> belongs to an XMLDSIG <code>Reference</code>
* being part of either a XMLDSIGManifest or a SignatureManifest, this method
@@ -67,14 +64,14 @@ public interface InputData extends Content
* of the XMLDSIG <code>SignedInfo</code> referring to the XMLDSIGManifest or
* SignatureManifest respectively.
*/
- public int getReferringReferenceNumber();
-
-
+ int getReferringReferenceNumber();
+
/**
- * Returns an identifier of the hash algorithm that is used to hash this {@link InputData}
- *
+ * Returns an identifier of the hash algorithm that is used to hash this
+ * {@link InputData}
+ *
* @return
*/
- public String getHashAlgorithm();
-
+ String getHashAlgorithm();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java
index 2413229..8c1b270 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/MetaInfo.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import org.w3c.dom.NodeList;
/**
* Object encapsulating descriptive meta information.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,26 +35,29 @@ import org.w3c.dom.NodeList;
public interface MetaInfo {
/**
* Gets the mime type of the associated object.
- *
+ *
* @return The mimetype of the associated object.
*/
- public String getMimeType();
+ String getMimeType();
+
/**
* Gets the descriptive information (URI).
- *
+ *
* @return URI referencing the descriptive information.
*/
- public String getDescription();
+ String getDescription();
+
/**
* Gets the elemental informations.
- *
+ *
* @return The elemental informations.
- */
- public NodeList getAnyElements();
+ */
+ NodeList getAnyElements();
+
/**
* Gets the XML signature creation type information of the associated object.
- *
+ *
* @return the XML signature creation type information of the associated object.
*/
- public String getType();
+ String getType();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java
index bb3dfdf..07b5f7f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/SignerInfo.java
@@ -21,16 +21,14 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.security.cert.X509Certificate;
import java.util.Date;
-
/**
* Contains information about the signer.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -38,65 +36,69 @@ import java.util.Date;
public interface SignerInfo {
/**
* Gets the signer certificate.
- *
+ *
* @return The signer certificate.
- */
- public X509Certificate getSignerCertificate();
+ */
+ X509Certificate getSignerCertificate();
+
/**
* Checks, whether the certificate contained in this object is qualified.
- *
+ *
* @return <code>true</code>, if the certificate is qualified, otherwise
- * <code>false</code>.
+ * <code>false</code>.
*/
- public boolean isQualifiedCertificate();
-
-
+ boolean isQualifiedCertificate();
+
/**
* Checks, whether the signature is based on a SSCD.
- *
+ *
* @return <code>true</code>, if the signature is based on a SSCD, otherwise
- * <code>false</code>.
+ * <code>false</code>.
*/
- public boolean isSSCD();
-
+ boolean isSSCD();
+
/**
- * Returns the source of the SSCD check (TSL or Certificate) *
+ * Returns the source of the SSCD check (TSL or Certificate) *
*/
- public String getSSCDSource();
+ String getSSCDSource();
/**
- * Returns the source of the QC check (TSL or Certificate) *
+ * Returns the source of the QC check (TSL or Certificate) *
*/
- public String getQCSource();
+ String getQCSource();
/**
* Returns the signer certificate issuer country code
+ *
* @return
*/
- public String getIssuerCountryCode();
+ String getIssuerCountryCode();
+
/**
- * Checks, whether the certificate contained in this object is a
- * public authority certificate.
- *
- * @return <code>true</code>, if the certificate is a public authority
- * certificate, otherwise <code>false</code>.
+ * Checks, whether the certificate contained in this object is a public
+ * authority certificate.
+ *
+ * @return <code>true</code>, if the certificate is a public authority
+ * certificate, otherwise <code>false</code>.
*/
- public boolean isPublicAuthority();
+ boolean isPublicAuthority();
+
/**
- * Gets the public authority ID, if the certificate contained in this
- * object is from a public authority.
- *
+ * Gets the public authority ID, if the certificate contained in this object is
+ * from a public authority.
+ *
* @return The public authority ID.
- */
- public String getPublicAuhtorityID();
+ */
+ String getPublicAuhtorityID();
+
+ Date getSigningTime();
- public Date getSigningTime();
-
/**
* Gets information from the Trust-Status List for this certificate
- *
- * @return {@link TslInfos} if the certificate is on the Trust-Status List, otherwise null
+ *
+ * @return {@link TslInfos} if the certificate is on the Trust-Status List,
+ * otherwise null
*/
- public TslInfos getTslInfos();
-
+ TslInfos getTslInfos();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java
index be6fe4b..8d0a9fa 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TSLConfiguration.java
@@ -21,67 +21,64 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
-
-import iaik.xml.crypto.utils.URI;
-
import java.util.Date;
import java.util.List;
+import iaik.xml.crypto.utils.URI;
/**
* Contains TSL configuration information.
- *
+ *
* @author kstranacher
*/
public interface TSLConfiguration {
-
- /** Default URL of EU TSL */
- public String DEFAULT_EU_TSL_URL = "https://ec.europa.eu/tools/lotl/eu-lotl.xml";
-
- /** Default period (1day=86400000 msec) for update schedule */
- public String DEFAULT_UPDATE_SCHEDULE_PERIOD = "86400000";
-
- /** Default start time (2:00 AM) for update schedule */
- public String DEFAULT_UPDATE_SCHEDULE_STARTTIME = "02:00:00";
-
- public String DEFAULT_WORKING_DIR = "tslworking";
-
+
+ /** Default URL of EU TSL */
+ String DEFAULT_EU_TSL_URL = "https://ec.europa.eu/tools/lotl/eu-lotl.xml";
+
+ /** Default period (1day=86400000 msec) for update schedule */
+ String DEFAULT_UPDATE_SCHEDULE_PERIOD = "86400000";
+
+ /** Default start time (2:00 AM) for update schedule */
+ String DEFAULT_UPDATE_SCHEDULE_STARTTIME = "02:00:00";
+
+ String DEFAULT_WORKING_DIR = "tslworking";
+
/**
* Gets the EU TSL URL.
- *
+ *
* @return The EU TSL URL.
- */
- public String getEuTSLUrl();
+ */
+ String getEuTSLUrl();
/**
- *
+ *
* @return
*/
- public Date getUpdateScheduleStartTime();
-
+ Date getUpdateScheduleStartTime();
+
/**
- *
+ *
* @return
*/
- public long getUpdateSchedulePeriod();
-
+ long getUpdateSchedulePeriod();
+
/**
- *
+ *
* @return
*/
- public String getWorkingDirectory();
-
+ String getWorkingDirectory();
+
/**
- *
+ *
* @return
*/
- public URI getWorkingDirectoryAsURI();
-
- public List<java.net.URI> getQualifierForQC();
+ URI getWorkingDirectoryAsURI();
+
+ List<java.net.URI> getQualifierForQC();
- public List<java.net.URI> getQualifierForSSCD();
+ List<java.net.URI> getQualifierForSSCD();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java
index ad050b4..5b924c3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/Transform.java
@@ -21,20 +21,19 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
/**
* Base class for XMLDsig <code>Transform</code> elements.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface Transform {
/**
* Gets the algorithm URI of this <code>Transform</code>.
- *
+ *
* @return The algorithm URI of this <code>Transform</code>.
*/
- public String getAlgorithmURI();
+ String getAlgorithmURI();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java
index 2a04f96..34d28c4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/TslInfos.java
@@ -3,47 +3,49 @@ package at.gv.egovernment.moa.spss.api.common;
import java.util.List;
/**
- * Trust-Status list information for a specific certificate
- * All informations and identifiers are according to the Trust-Status List specification
- *
+ * Trust-Status list information for a specific certificate All informations and
+ * identifiers are according to the Trust-Status List specification
+ *
* @author tlenz
*
*/
public interface TslInfos {
- /**
- * Gets the issuer country of the TSL
- *
- * @return
- */
- public String getTslIssuerCountry();
-
- /**
- * Gets the Service-Type Status of the TSP, which issues the analyzed certificate
- *
- * @return
- */
- public String getServiceTypeStatus();
-
- /**
- * Gets the Service-Type Identifier of the TSP, which issues the analyzed certificate
- *
- * @return
- */
- public String getServiceTypeIdentifier();
-
- /**
- * Gets additional qualifiers for the analyzed certificate
- *
- * @return
- */
- public List<String> getQualifiers();
-
- /**
- * Gets additional service information for the analyzed certificate
- *
- * @return
- */
- public List<String> getAdditionalServiceInformation();
-
+ /**
+ * Gets the issuer country of the TSL
+ *
+ * @return
+ */
+ String getTslIssuerCountry();
+
+ /**
+ * Gets the Service-Type Status of the TSP, which issues the analyzed
+ * certificate
+ *
+ * @return
+ */
+ String getServiceTypeStatus();
+
+ /**
+ * Gets the Service-Type Identifier of the TSP, which issues the analyzed
+ * certificate
+ *
+ * @return
+ */
+ String getServiceTypeIdentifier();
+
+ /**
+ * Gets additional qualifiers for the analyzed certificate
+ *
+ * @return
+ */
+ List<String> getQualifiers();
+
+ /**
+ * Gets additional service information for the analyzed certificate
+ *
+ * @return
+ */
+ List<String> getAdditionalServiceInformation();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java
index 39ec807..007fbe8 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/X509IssuerSerial.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.math.BigInteger;
/**
* Contains an X.509 issuer distinguished name/serial number pair.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,14 +35,15 @@ import java.math.BigInteger;
public interface X509IssuerSerial {
/**
* Gets the issuer distinguished name.
- *
+ *
* @return The issuer distinguished name.
*/
- public String getX509IssuerName();
+ String getX509IssuerName();
+
/**
* Gets the issuer serial number.
- *
+ *
* @return The issuer serial number.
*/
- public BigInteger getX509SerialNumber();
+ BigInteger getX509SerialNumber();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java
index fe2a795..7b3f830 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XMLDataObjectAssociation.java
@@ -21,14 +21,12 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
-
/**
* Object encapsulating arbitrary content and optional descriptive meta
* information.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,14 +34,15 @@ package at.gv.egovernment.moa.spss.api.common;
public interface XMLDataObjectAssociation {
/**
* Gets descriptive meta information.
- *
+ *
* @return The descriptive meta information.
*/
- public MetaInfo getMetaInfo();
+ MetaInfo getMetaInfo();
+
/**
* Gets the actual content.
- *
+ *
* @return The content of this association.
*/
- public Content getContent();
+ Content getContent();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java
index 06a49a2..f3a12dc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter.java
@@ -21,42 +21,43 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.util.Map;
/**
* An XPath expression set operation.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface XPathFilter {
/** Subtract this filter's node set from the resulting node set. */
- public static final String SUBTRACT_TYPE = "subtract";
+ String SUBTRACT_TYPE = "subtract";
/** Intersect this filter's node set with the resulting node set. */
- public static final String INTERSECT_TYPE = "intersect";
+ String INTERSECT_TYPE = "intersect";
/** Compute the union of this filter's node set and the resulting node set. */
- public static final String UNION_TYPE = "union";
-
+ String UNION_TYPE = "union";
+
/**
* Gets the type of this <code>XPathFilter</code>.
- *
+ *
* @return The type of this <code>XPathFilter</code>.
*/
- public String getFilterType();
+ String getFilterType();
+
/**
* Gets the XPath expression for selecting the nodes.
- *
+ *
* @return The XPath expression for selecting the nodes.
*/
- public String getXPathExpression();
+ String getXPathExpression();
+
/**
- * Gets The namespace prefix to URI mapping used during evaluation of the
- * XPath expression.
- *
+ * Gets The namespace prefix to URI mapping used during evaluation of the XPath
+ * expression.
+ *
* @return The namespace prefix to URI mapping.
*/
- public Map getNamespaceDeclarations();
+ Map getNamespaceDeclarations();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java
index 6f05710..b5899a4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathFilter2Transform.java
@@ -21,29 +21,28 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.util.List;
/**
* An XPath type of <code>Transform</code> containing multiple filters for
- * performing set operations on XPath selections.
- *
+ * performing set operations on XPath selections.
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface XPathFilter2Transform extends Transform {
/** Algorithm URI for the XPath Filter2 <code>Transform</code>. */
- public static final String XPATH_FILTER2 =
- "http://www.w3.org/2002/06/xmldsig-filter2";
+ String XPATH_FILTER2 =
+ "http://www.w3.org/2002/06/xmldsig-filter2";
/**
- * Gets the <code>XPathFilter</code>s contained in this
+ * Gets the <code>XPathFilter</code>s contained in this
* <code>XPathFilter2Transform</code>.
- *
+ *
* @return The <code>XPathFilter</code>s.
*/
- public List getFilters();
+ List getFilters();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java
index 99eda2a..41227c5 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XPathTransform.java
@@ -21,34 +21,34 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import java.util.Map;
/**
* A <code>Transform</code> performing an XPath selection.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface XPathTransform extends Transform {
/** Algorithm URI of the XPath <code>Transform</code>. */
- public static final String XPATH =
- "http://www.w3.org/TR/1999/REC-xpath-19991116";
+ String XPATH =
+ "http://www.w3.org/TR/1999/REC-xpath-19991116";
/**
* Gets the XPath expression used for selection.
- *
+ *
* @return The XPath expression used for selection.
*/
- public String getXPathExpression();
+ String getXPathExpression();
+
/**
- * Gets The namespace prefix to URI mapping used during evaluation of the
- * XPath expression.
- *
+ * Gets The namespace prefix to URI mapping used during evaluation of the XPath
+ * expression.
+ *
* @return The namespace prefix to URI mapping.
*/
- public Map getNamespaceDeclarations();
-
+ Map getNamespaceDeclarations();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java
index 8cb6c8e..bdfd2eb 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/common/XSLTTransform.java
@@ -21,27 +21,26 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.common;
import org.w3c.dom.Element;
/**
* A <code>Transform</code> containing an XSLT stylesheet.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface XSLTTransform extends Transform {
/** Algorithm URI for the XSLT type of <code>Transform</code>. */
- public static final String XSLT =
- "http://www.w3.org/TR/1999/REC-xslt-19991116";
+ String XSLT =
+ "http://www.w3.org/TR/1999/REC-xslt-19991116";
/**
* Gets the XSLT stylesheet element used for the transformation.
- *
+ *
* @return The XSLT stylesheet element used for the transformation.
*/
- public Element getStylesheet();
+ Element getStylesheet();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java
index c186c54..46710c0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/AdESFormResultsImpl.java
@@ -4,39 +4,39 @@ import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
public class AdESFormResultsImpl implements AdESFormResults {
- private Integer code;
- private String info;
- private String name;
-
- public synchronized void setCode(Integer code) {
- this.code = code;
- }
-
- public synchronized void setInfo(String info) {
- this.info = info;
- }
-
- public synchronized void setName(String name) {
- this.name = name;
- }
-
- @Override
- public Integer getCode() {
- return this.code;
- }
-
- @Override
- public String getInfo() {
- return this.info;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public String toString() {
- return "AdESFormResultsImpl [code=" + code + ", info=" + info + ", name=" + name + "]";
- }
+ private Integer code;
+ private String info;
+ private String name;
+
+ public synchronized void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public synchronized void setInfo(String info) {
+ this.info = info;
+ }
+
+ public synchronized void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public Integer getCode() {
+ return this.code;
+ }
+
+ @Override
+ public String getInfo() {
+ return this.info;
+ }
+
+ @Override
+ public String getName() {
+ return this.name;
+ }
+
+ @Override
+ public String toString() {
+ return "AdESFormResultsImpl [code=" + code + ", info=" + info + ", name=" + name + "]";
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java
index f708bab..b08c74c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/Base64TransformImpl.java
@@ -21,20 +21,19 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.Base64Transform;
/**
* Default implementation of <code>Base64Transform</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class Base64TransformImpl
- extends TransformImpl
- implements Base64Transform {
+ extends TransformImpl
+ implements Base64Transform {
/**
* Create a new <code>Base64TransformImpl</code> object.
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java
index 8dede90..f6c1574 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentExplicitImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.io.InputStream;
@@ -30,33 +29,35 @@ import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentExcplicit;
/**
* Default implementation of <code>CMSContentExplicit</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CMSContentExplicitImpl implements CMSContentExcplicit {
-
+
/** The binary content, as a stream. */
private InputStream binaryContent;
/**
* Sets the binary content as a stream.
- *
+ *
* @param content The binary content as a stream.
*/
public void setBinaryContent(InputStream content) {
this.binaryContent = content;
}
+ @Override
public InputStream getBinaryContent() {
return binaryContent;
}
/**
* Gets the type of content.
- *
+ *
* @return EXPLICIT_CONTENT
*/
+ @Override
public int getContentType() {
return EXPLICIT_CONTENT;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java
index fb90c5f..a14ea90 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSContentReferenceImpl.java
@@ -21,40 +21,41 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.cmsverify.CMSContentReference;
/**
* Default implementation of <code>CMSContentReference</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CMSContentReferenceImpl implements CMSContentReference {
-
+
/** The reference pointing to the actual data. */
private String reference;
/**
* Sets the reference URI.
- *
+ *
* @param referenceURI The URI pointing to the content data.
*/
public void setReference(String referenceURI) {
this.reference = referenceURI;
}
+ @Override
public String getReference() {
return reference;
}
/**
* Gets the content type.
- *
+ *
* @return REFERENCE_CONTENT
*/
+ @Override
public int getContentType() {
return REFERENCE_CONTENT;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java
index 20a9b56..e9b4fea 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSDataObjectImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.math.BigDecimal;
@@ -32,60 +31,64 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo;
/**
* Default implementation of <code>CMLSDataObject</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CMSDataObjectImpl implements CMSDataObject {
-
+
/** The <code>MetaInfo</code> associated with the CMS data object. */
private MetaInfo metaInfo;
/** The <code>CMSContent</code> contained in this data object. */
private CMSContent cmsContent;
-
+
private BigDecimal excludeByteRangeFrom;
private BigDecimal excludeByteRangeTo;
/**
* Sets the meta information associated with the CMS data object.
- *
+ *
* @param metaInfo The meta information.
*/
public void setMetaInfo(MetaInfo metaInfo) {
this.metaInfo = metaInfo;
}
+ @Override
public MetaInfo getMetaInfo() {
return metaInfo;
}
/**
* Sets the data of this <code>CMSDataObject</code>.
- *
+ *
* @param cmsContent The actual data of this <code>CMSDataObject</code>.
*/
public void setContent(CMSContent cmsContent) {
this.cmsContent = cmsContent;
}
+ @Override
public CMSContent getContent() {
return cmsContent;
}
public void setExcludeByteRangeFrom(BigDecimal excludeByteRangeFrom) {
- this.excludeByteRangeFrom = excludeByteRangeFrom;
+ this.excludeByteRangeFrom = excludeByteRangeFrom;
}
-
+
+ @Override
public BigDecimal getExcludeByteRangeFrom() {
- return excludeByteRangeFrom;
+ return excludeByteRangeFrom;
}
-
+
public void setExcludeByteRangeTo(BigDecimal excludeByteRangeTo) {
- this.excludeByteRangeTo = excludeByteRangeTo;
+ this.excludeByteRangeTo = excludeByteRangeTo;
}
-
+
+ @Override
public BigDecimal getExcludeByteRangeTo() {
- return excludeByteRangeTo;
- }
-
+ return excludeByteRangeTo;
+ }
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java
index b512dd0..77ef137 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CMSSignatureResponseImpl.java
@@ -21,42 +21,41 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
-import org.w3c.dom.Element;
-
import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
/**
* Default implementation of <code>CMSSignatureResponse</code>.
- *
+ *
* @version $Id$
*/
public class CMSSignatureResponseImpl
- implements CMSSignatureResponse {
+ implements CMSSignatureResponse {
/** The base64 value of the CMS signature. */
private String cmsSignature;
- /**
+ /**
* Sets the CMS signature.
- *
+ *
* @param cmsSignature The Base64 encoded value CMS signature.
*/
public void setCMSSignature(String cmsSignature) {
this.cmsSignature = cmsSignature;
}
+ @Override
public String getCMSSignature() {
return cmsSignature;
}
/**
* Gets the type of <code>CreateCMSSignatureResponseElement</code>.
- *
+ *
* @return CMS_SIGNATURE
*/
+ @Override
public int getResponseType() {
return CMS_SIGNATURE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java
index f8efe26..e931c4b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CanonicalizationTransformImpl.java
@@ -21,26 +21,25 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.CanonicalizationTransform;
/**
* Default implementation of <code>CanonicalizationTransform</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CanonicalizationTransformImpl
- extends TransformImpl
- implements CanonicalizationTransform {
-
+ extends TransformImpl
+ implements CanonicalizationTransform {
+
/**
* Create a new <code>CanonicalizationTransformImpl</code> object.
- *
- * @param algorithmURI Algorithm URI of the canonicalization
- * <code>Transform</code> type.
+ *
+ * @param algorithmURI Algorithm URI of the canonicalization
+ * <code>Transform</code> type.
*/
public CanonicalizationTransformImpl(String algorithmURI) {
setAlgorithmURI(algorithmURI);
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java
index 5bb6e60..a57c4e6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CheckResultImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.NodeList;
@@ -30,20 +29,20 @@ import at.gv.egovernment.moa.spss.api.common.CheckResult;
/**
* Default implementation of <code>CheckResult</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CheckResultImpl implements CheckResult {
/** The result code. */
private int code;
-
- /** Additional information. */
+
+ /** Additional information. */
private NodeList info;
/**
* Sets a result code.
- *
+ *
* @param code The result code.
*/
public void setCode(int code) {
@@ -53,13 +52,14 @@ public class CheckResultImpl implements CheckResult {
/**
* @see at.gv.egovernment.moa.spss.api.common.CheckResult#getCode()
*/
+ @Override
public int getCode() {
return code;
}
/**
* Sets a descriptive information.
- *
+ *
* @param info The descriptive information.
*/
public void setInfo(NodeList info) {
@@ -69,6 +69,7 @@ public class CheckResultImpl implements CheckResult {
/**
* @see at.gv.egovernment.moa.spss.api.common.CheckResult#getInfo()
*/
+ @Override
public NodeList getInfo() {
return info;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java
index 7fe1cf9..aa49375 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentBinaryImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.io.InputStream;
@@ -30,33 +29,35 @@ import at.gv.egovernment.moa.spss.api.common.ContentBinary;
/**
* Default implementation of <code>ContentBinary</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class ContentBinaryImpl extends ContentImpl implements ContentBinary {
- /** The binary content as a stream. */
+ /** The binary content as a stream. */
private InputStream binaryContent;
/**
* Sets the binary content as a stream.
- *
+ *
* @param binaryContent The binary content as a stream.
*/
public void setBinaryContent(InputStream binaryContent) {
this.binaryContent = binaryContent;
}
+ @Override
public InputStream getBinaryContent() {
return binaryContent;
}
/**
* Gets the type of content.
- *
+ *
* @return BINARY_CONTENT
*/
+ @Override
public int getContentType() {
return BINARY_CONTENT;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java
index d061747..4c73795 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentImpl.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.Content;
/**
* Default base class for <code>Content</code> implementations.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -38,13 +37,14 @@ public abstract class ContentImpl implements Content {
/**
* Sets the reference pointing to the content data.
- *
+ *
* @param referenceURI The URI of the content data.
*/
public void setReference(String referenceURI) {
this.reference = referenceURI;
}
+ @Override
public String getReference() {
return reference;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java
index aa01a93..7d763c1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentLocRefImpl.java
@@ -21,47 +21,47 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.ContentLocRef;
/**
* Default implementation of <code>ContentLocRef</code>.
- *
+ *
* @author Gregor Karlinger
* @version $Id$
*/
-public class ContentLocRefImpl extends ContentImpl implements ContentLocRef
-{
+public class ContentLocRefImpl extends ContentImpl implements ContentLocRef {
/**
- * The location reference URI pointing to the actual remote location of the content.
+ * The location reference URI pointing to the actual remote location of the
+ * content.
*/
private String locationReferenceURI_;
-
- /**
+
+ /**
* @see at.gv.egovernment.moa.spss.api.common.ContentLocRef#getLocationReferenceURI()
*/
- public String getLocationReferenceURI()
- {
+ @Override
+ public String getLocationReferenceURI() {
return locationReferenceURI_;
}
-
+
/**
- * Sets the location reference URI pointing to the actual remote location of the content.
- *
+ * Sets the location reference URI pointing to the actual remote location of the
+ * content.
+ *
* @param locationReferenceURI the location reference URI.
*/
- public void setLocationReferenceURI(String locationReferenceURI)
- {
+ public void setLocationReferenceURI(String locationReferenceURI) {
locationReferenceURI_ = locationReferenceURI;
}
-
+
/**
* Gets the type of content.
- *
+ *
* @return LOCREF_CONTENT.
*/
+ @Override
public int getContentType() {
return LOCREF_CONTENT;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java
index ab5c3b4..de0e1cf 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentReferenceImpl.java
@@ -21,26 +21,26 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.ContentReference;
/**
* Default implementation of <code>ContentReference</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ContentReferenceImpl
- extends ContentImpl
- implements ContentReference {
+ extends ContentImpl
+ implements ContentReference {
/**
* Gets the type of content.
- *
+ *
* @return REFERENCE_CONTENT
*/
+ @Override
public int getContentType() {
return REFERENCE_CONTENT;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java
index dcc1935..496550f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ContentXMLImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.NodeList;
@@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.ContentXML;
/**
* Default implementation of <code>ContentXML</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -38,25 +37,27 @@ public class ContentXMLImpl extends ContentImpl implements ContentXML {
/** The nodes making up the XML content. */
private NodeList xmlContent;
-
+
/**
* Sets the nodes making up the XML content.
- *
+ *
* @param xmlContent The XML content.
*/
public void setXMLContent(NodeList xmlContent) {
this.xmlContent = xmlContent;
}
+ @Override
public NodeList getXMLContent() {
return xmlContent;
}
/**
* Gets the type of content.
- *
+ *
* @return XML_CONTENT
*/
+ @Override
public int getContentType() {
return XML_CONTENT;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java
index e8408bc..dcdb77f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureRequestImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,44 +31,46 @@ import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest;
/**
* Default implementation of <code>CreateCMSSignatureRequest</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CreateCMSSignatureRequestImpl
- implements CreateCMSSignatureRequest {
+ implements CreateCMSSignatureRequest {
- /** The identifier for selecting the private keys for creating the signature.*/
+ /** The identifier for selecting the private keys for creating the signature. */
private String keyIdentifier;
/** Information for creating a single signature. */
private List singleSignatureInfos = new ArrayList();
/**
- * Sets the identifier for selecting the private keys for creating the
+ * Sets the identifier for selecting the private keys for creating the
* signature.
- *
+ *
* @param keyIdentifier The identifier for selecting the private keys.
*/
public void setKeyIdentifier(String keyIdentifier) {
this.keyIdentifier = keyIdentifier;
}
+ @Override
public String getKeyIdentifier() {
return keyIdentifier;
}
/**
* Sets the information for creating single signatures.
- *
+ *
* @param singleSignaureInfos The information for creating single signatures.
*/
public void setSingleSignatureInfos(List singleSignaureInfos) {
this.singleSignatureInfos =
- singleSignaureInfos != null
- ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos))
- : null;
+ singleSignaureInfos != null
+ ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos))
+ : null;
}
+ @Override
public List getSingleSignatureInfos() {
return singleSignatureInfos;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java
index d596058..ae64195 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateCMSSignatureResponseImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,27 +31,28 @@ import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
/**
* Default implementation of <code>CreateCMSSignatureResponse</code>.
- *
+ *
* @version $Id$
*/
public class CreateCMSSignatureResponseImpl
- implements CreateCMSSignatureResponse {
+ implements CreateCMSSignatureResponse {
/** The elements contained in the response. */
private List responseElements = new ArrayList();
/**
* Sets the elements contained in the response.
- *
+ *
* @param responseElements The response elements.
*/
public void setResponseElements(List responseElements) {
this.responseElements =
- responseElements != null
- ? Collections.unmodifiableList(new ArrayList(responseElements))
- : null;
+ responseElements != null
+ ? Collections.unmodifiableList(new ArrayList(responseElements))
+ : null;
}
+ @Override
public List getResponseElements() {
return responseElements;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java
index 9fe8eaf..3d5279f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileExplicitImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,14 +31,14 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureEnvironmentProfileE
import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureLocation;
/**
- * Default implementation of
+ * Default implementation of
* <codeCreateSignatureEnvironmentProfileExplicit</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CreateSignatureEnvironmentProfileExplicitImpl
- implements CreateSignatureEnvironmentProfileExplicit {
+ implements CreateSignatureEnvironmentProfileExplicit {
/** The insertion location of the signature to be created. */
private CreateSignatureLocation createSignatureLocation;
@@ -49,40 +48,42 @@ public class CreateSignatureEnvironmentProfileExplicitImpl
/**
* Sets the insertion location of the signature to be created.
- *
- * @param createSignatureLocation The insertion location of the signature to
- * be created.
+ *
+ * @param createSignatureLocation The insertion location of the signature to be
+ * created.
*/
public void setCreateSignatureLocation(CreateSignatureLocation createSignatureLocation) {
this.createSignatureLocation = createSignatureLocation;
}
+ @Override
public CreateSignatureLocation getCreateSignatureLocation() {
return createSignatureLocation;
}
/**
- * Sets the supplemental information for evaluating the signature
- * environment.
- *
+ * Sets the supplemental information for evaluating the signature environment.
+ *
* @param supplements The supplemental information.
*/
public void setSupplements(List supplements) {
this.supplements =
- supplements != null
- ? Collections.unmodifiableList(new ArrayList(supplements))
- : null;
+ supplements != null
+ ? Collections.unmodifiableList(new ArrayList(supplements))
+ : null;
}
+ @Override
public List getSupplements() {
return supplements;
}
/**
* Gets the type of profile.
- *
+ *
* @return EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE
*/
+ @Override
public int getCreateSignatureEnvironmentProfileType() {
return EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java
index 5edbf4f..4818f9e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureEnvironmentProfileIDImpl.java
@@ -21,41 +21,42 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureEnvironmentProfileID;
/**
* Default implementation of <code>CreateSignatureEnvironmentProfileID</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CreateSignatureEnvironmentProfileIDImpl
- implements CreateSignatureEnvironmentProfileID {
+ implements CreateSignatureEnvironmentProfileID {
/** The profile ID. */
private String createSignatureEnvironmentProfileID;
/**
* Sets the profile ID.
- *
+ *
* @param profileID The profile ID.
*/
public void setCreateSignatureEnvironmentProfileID(String profileID) {
this.createSignatureEnvironmentProfileID = profileID;
}
+ @Override
public String getCreateSignatureEnvironmentProfileID() {
return createSignatureEnvironmentProfileID;
}
/**
* Gets the type of profile.
- *
+ *
* @return ID_CREATESIGNATUREENVIRONMENTPROFILE
*/
+ @Override
public int getCreateSignatureEnvironmentProfileType() {
return ID_CREATESIGNATUREENVIRONMENTPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java
index 7111633..7a97cd5 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.Content;
@@ -30,29 +29,30 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureInfo;
/**
* Default implementation of <code>CreateSignatureInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CreateSignatureInfoImpl implements CreateSignatureInfo {
-
- /** The signature environment that will contain the newly created
- * signature. */
+
+ /**
+ * The signature environment that will contain the newly created signature.
+ */
private Content createSignatureEnvironment;
/** Additional information about the signature environment. */
private CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile;
/**
- * Sets the signature environment that will contain the newly created
- * signature.
- *
+ * Sets the signature environment that will contain the newly created signature.
+ *
* @param createSignatureEnvironment The signature environment.
*/
public void setCreateSignatureEnvironment(Content createSignatureEnvironment) {
this.createSignatureEnvironment = createSignatureEnvironment;
}
+ @Override
public Content getCreateSignatureEnvironment() {
return createSignatureEnvironment;
}
@@ -60,13 +60,14 @@ public class CreateSignatureInfoImpl implements CreateSignatureInfo {
/**
* Sets the signature environment profile containing additional information
* about the signature environment.
- *
+ *
* @param profile The signature environment profile.
*/
public void setCreateSignatureEnvironmentProfile(CreateSignatureEnvironmentProfile profile) {
this.createSignatureEnvironmentProfile = profile;
}
+ @Override
public CreateSignatureEnvironmentProfile getCreateSignatureEnvironmentProfile() {
return createSignatureEnvironmentProfile;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java
index 6f3101f..121dcf0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateSignatureLocationImpl.java
@@ -21,33 +21,33 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateSignatureLocation;
/**
* Default implementation of <code>CreateSignatureLocation</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CreateSignatureLocationImpl
- extends ElementSelectorImpl
- implements CreateSignatureLocation {
+ extends ElementSelectorImpl
+ implements CreateSignatureLocation {
/** The index of the newly created signature. */
private int index;
/**
* Sets the index of the newly created signature.
- *
+ *
* @param index The index of the newly created signature.
*/
public void setIndex(int index) {
this.index = index;
}
+ @Override
public int getIndex() {
return index;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java
index d53f103..24e4abc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -33,7 +32,7 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo;
/**
* Default implementation of <code>CreateTransformsInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -45,29 +44,31 @@ public class CreateTransformsInfoImpl implements CreateTransformsInfo {
/**
* Sets the transforms.
- *
+ *
* @param transforms The transforms.
*/
public void setTransforms(List transforms) {
this.transforms =
- transforms != null
- ? Collections.unmodifiableList(new ArrayList(transforms))
- : null;
+ transforms != null
+ ? Collections.unmodifiableList(new ArrayList(transforms))
+ : null;
}
+ @Override
public List getTransforms() {
return transforms;
}
/**
* Sets the meta information about the data resulting from the transforms.
- *
+ *
* @param finalDataMetaInfo The meta information.
*/
public void setFinalDataMetaInfo(MetaInfo finalDataMetaInfo) {
this.finalDataMetaInfo = finalDataMetaInfo;
}
+ @Override
public MetaInfo getFinalDataMetaInfo() {
return finalDataMetaInfo;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java
index b6b9d52..3ffc8e3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileExplicitImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -33,12 +32,12 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfileExplici
/**
* Default implementation of <code>CreateTransformsInfoProfileExplicit</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CreateTransformsInfoProfileExplicitImpl
- implements CreateTransformsInfoProfileExplicit {
+ implements CreateTransformsInfoProfileExplicit {
/** Transformation information. */
private CreateTransformsInfo transformsInfo;
@@ -47,38 +46,41 @@ public class CreateTransformsInfoProfileExplicitImpl
/**
* Sets the transformation information.
- *
+ *
* @param transformsInfo The transformation information.
*/
public void setCreateTransformsInfo(CreateTransformsInfo transformsInfo) {
this.transformsInfo = transformsInfo;
}
+ @Override
public CreateTransformsInfo getCreateTransformsInfo() {
return transformsInfo;
}
/**
* Sets the additional data for the transformations.
- *
+ *
* @param supplements The additional data.
*/
public void setSupplements(List supplements) {
this.supplements =
- supplements != null
- ? Collections.unmodifiableList(new ArrayList(supplements))
- : null;
+ supplements != null
+ ? Collections.unmodifiableList(new ArrayList(supplements))
+ : null;
}
+ @Override
public List getSupplements() {
return supplements;
}
/**
* Gets the type of profile.
- *
+ *
* @return EXPLICIT_CREATETRANSFORMSINFOPROFILE
*/
+ @Override
public int getCreateTransformsInfoProfileType() {
return EXPLICIT_CREATETRANSFORMSINFOPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java
index 55d0ca6..e86c7de 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateTransformsInfoProfileIDImpl.java
@@ -21,40 +21,42 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfileID;
/**
* Default implementation of <code>CreateTransformsInfoProfileID</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CreateTransformsInfoProfileIDImpl
- implements CreateTransformsInfoProfileID {
+ implements CreateTransformsInfoProfileID {
/** The profile ID. */
private String createTransformsID;
/**
* Sets the profile ID.
+ *
* @param createTransformsID The profile ID.
*/
public void setCreateTransformsInfoProfileID(String createTransformsID) {
this.createTransformsID = createTransformsID;
}
+ @Override
public String getCreateTransformsInfoProfileID() {
return createTransformsID;
}
/**
* Gets the type of profile.
- *
+ *
* @return ID_CREATETRANSFORMSINFOPROFILE
*/
+ @Override
public int getCreateTransformsInfoProfileType() {
return ID_CREATETRANSFORMSINFOPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java
index aaffaa7..30779a3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureRequestImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,44 +31,46 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest;
/**
* Default implementation of <code>CreateXMLSignatureRequest</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CreateXMLSignatureRequestImpl
- implements CreateXMLSignatureRequest {
+ implements CreateXMLSignatureRequest {
- /** The identifier for selecting the private keys for creating the signature.*/
+ /** The identifier for selecting the private keys for creating the signature. */
private String keyIdentifier;
/** Information for creating a single signature. */
private List singleSignatureInfos = new ArrayList();
/**
- * Sets the identifier for selecting the private keys for creating the
+ * Sets the identifier for selecting the private keys for creating the
* signature.
- *
+ *
* @param keyIdentifier The identifier for selecting the private keys.
*/
public void setKeyIdentifier(String keyIdentifier) {
this.keyIdentifier = keyIdentifier;
}
+ @Override
public String getKeyIdentifier() {
return keyIdentifier;
}
/**
* Sets the information for creating single signatures.
- *
+ *
* @param singleSignaureInfos The information for creating single signatures.
*/
public void setSingleSignatureInfos(List singleSignaureInfos) {
this.singleSignatureInfos =
- singleSignaureInfos != null
- ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos))
- : null;
+ singleSignaureInfos != null
+ ? Collections.unmodifiableList(new ArrayList(singleSignaureInfos))
+ : null;
}
+ @Override
public List getSingleSignatureInfos() {
return singleSignatureInfos;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java
index 7a8359f..80cd6dc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/CreateXMLSignatureResponseImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,28 +31,29 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
/**
* Default implementation of <code>CreateXMLSignatureResponse</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class CreateXMLSignatureResponseImpl
- implements CreateXMLSignatureResponse {
+ implements CreateXMLSignatureResponse {
/** The elements contained in the response. */
private List responseElements = new ArrayList();
/**
* Sets the elements contained in the response.
- *
+ *
* @param responseElements The response elements.
*/
public void setResponseElements(List responseElements) {
this.responseElements =
- responseElements != null
- ? Collections.unmodifiableList(new ArrayList(responseElements))
- : null;
+ responseElements != null
+ ? Collections.unmodifiableList(new ArrayList(responseElements))
+ : null;
}
+ @Override
public List getResponseElements() {
return responseElements;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java
index 702086b..f65816a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoCMSImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo;
@@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
/**
* Default implementation of <code>DataObjectInfo</code> for CMS.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -41,27 +40,28 @@ public class DataObjectInfoCMSImpl implements DataObjectInfo {
/**
* Sets the signature structure type.
- *
+ *
* @param structure The signature structure type.
*/
public void setStructure(String structure) {
this.stucture = structure;
}
+ @Override
public String getStructure() {
return stucture;
}
-
/**
* Sets the data object to be signed.
- *
+ *
* @param dataObject The data object to be signed.
*/
public void setDataObject(CMSDataObject dataObject) {
this.dataObject = dataObject;
}
+ @Override
public CMSDataObject getDataObject() {
return dataObject;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java
index 7a25a97..4099d89 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/DataObjectInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.Content;
@@ -30,15 +29,16 @@ import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo;
/**
* Default implementation of <code>DataObjectInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class DataObjectInfoImpl implements DataObjectInfo {
/** The signature structure type. */
private String stucture;
- /** Whether a reference will be placed in the signature itself or in the
- * manifest */
+ /**
+ * Whether a reference will be placed in the signature itself or in the manifest
+ */
private boolean childOfManifest;
/** The data object to be signed. */
private Content dataObject;
@@ -47,13 +47,14 @@ public class DataObjectInfoImpl implements DataObjectInfo {
/**
* Sets the signature structure type.
- *
+ *
* @param structure The signature structure type.
*/
public void setStructure(String structure) {
this.stucture = structure;
}
+ @Override
public String getStructure() {
return stucture;
}
@@ -61,41 +62,44 @@ public class DataObjectInfoImpl implements DataObjectInfo {
/**
* Sets whether a reference will be placed in the signature itself or in the
* manifest.
- *
- * @param childOfManifest Whether to put the reference in the signature of
- * in the manifest.
+ *
+ * @param childOfManifest Whether to put the reference in the signature of in
+ * the manifest.
*/
public void setChildOfManifest(boolean childOfManifest) {
this.childOfManifest = childOfManifest;
}
+ @Override
public boolean isChildOfManifest() {
return childOfManifest;
}
/**
* Sets the data object to be signed.
- *
+ *
* @param dataObject The data object to be signed.
*/
public void setDataObject(Content dataObject) {
this.dataObject = dataObject;
}
+ @Override
public Content getDataObject() {
return dataObject;
}
/**
* Sets additional information for the transformations.
- *
+ *
* @param profile The profile containing additional information for the
- * transformations.
+ * transformations.
*/
public void setCreateTransformsInfoProfile(CreateTransformsInfoProfile profile) {
this.createTransformsInfoProfile = profile;
}
+ @Override
public CreateTransformsInfoProfile getCreateTransformsInfoProfile() {
return createTransformsInfoProfile;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java
index 7de0660..e505440 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ElementSelectorImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.HashMap;
@@ -31,7 +30,7 @@ import at.gv.egovernment.moa.spss.api.common.ElementSelector;
/**
* Default implementation of <code>ElementSelector</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -43,27 +42,29 @@ public class ElementSelectorImpl implements ElementSelector {
/**
* Sets the XPath expression pointing to the element.
- *
+ *
* @param xPathExpression XPath expression pointing to the element.
*/
public void setXPathExpression(String xPathExpression) {
this.xPathExpression = xPathExpression;
}
+ @Override
public String getXPathExpression() {
return xPathExpression;
}
/**
* Sets namespace declarations to apply for evaluating the XPath.
- *
- * @param namespaceDeclarations The namespace declarations to apply for
- * evaluating the XPath.
+ *
+ * @param namespaceDeclarations The namespace declarations to apply for
+ * evaluating the XPath.
*/
public void setNamespaceDeclarations(Map namespaceDeclarations) {
this.namespaceDeclarations = namespaceDeclarations;
}
+ @Override
public Map getNamespaceDeclarations() {
return namespaceDeclarations;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java
index 121037f..40a579b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/EnvelopedSignatureTransformImpl.java
@@ -21,20 +21,19 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.EnvelopedSignatureTransform;
/**
* Default implementation of <code>EnvelopedSignatureTransform</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class EnvelopedSignatureTransformImpl
- extends TransformImpl
- implements EnvelopedSignatureTransform {
+ extends TransformImpl
+ implements EnvelopedSignatureTransform {
/**
* Create a <code>EnvelopedSignatureTransformImpl</code>.
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java
index a2a59a7..e55b69b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ErrorResponseImpl.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
/**
* Default implementation of <code>ErrorResponse</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -40,35 +39,38 @@ public class ErrorResponseImpl implements ErrorResponse {
/**
* Sets the error code.
- *
+ *
* @param code The error code.
*/
public void setErrorCode(int code) {
this.code = code;
}
+ @Override
public int getErrorCode() {
return code;
}
/**
* Sets the verbose error information.
- *
+ *
* @param info The verbose error information.
*/
public void setInfo(String info) {
this.info = info;
}
+ @Override
public String getInfo() {
return info;
}
/**
* Gets the response type.
- *
- * @return ERROR_RESPONSE
+ *
+ * @return ERROR_RESPONSE
*/
+ @Override
public int getResponseType() {
return ERROR_RESPONSE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java
index eea09c0..fd0e276 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExclusiveCanonicalizationTransformImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,22 +31,22 @@ import at.gv.egovernment.moa.spss.api.common.ExclusiveCanonicalizationTransform;
/**
* Default implementation of <code>ExclusiveCanonicalizationTransform</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ExclusiveCanonicalizationTransformImpl
- extends TransformImpl
- implements ExclusiveCanonicalizationTransform {
+ extends TransformImpl
+ implements ExclusiveCanonicalizationTransform {
/** The namespaces to treat according to canonical XML. */
private List inclusiveNamespacePrefixes;
-
- /**
+
+ /**
* Create a <code>ExclusiveCanonicalizationTransformImpl</code> object.
- *
+ *
* @param algorithmURI The algorithm URI identifying the transformation
- * algorithm.
+ * algorithm.
*/
public ExclusiveCanonicalizationTransformImpl(String algorithmURI) {
setAlgorithmURI(algorithmURI);
@@ -55,16 +54,18 @@ public class ExclusiveCanonicalizationTransformImpl
/**
* Sets the namespaces to treat according to canonical XML.
- * @param inclusiveNamespacePrefixes The namespaces to treat according to
- * canonical XML.
+ *
+ * @param inclusiveNamespacePrefixes The namespaces to treat according to
+ * canonical XML.
*/
public void setInclusiveNamespacePrefixes(List inclusiveNamespacePrefixes) {
this.inclusiveNamespacePrefixes =
- inclusiveNamespacePrefixes != null
- ? Collections.unmodifiableList(new ArrayList(inclusiveNamespacePrefixes))
- : null;
+ inclusiveNamespacePrefixes != null
+ ? Collections.unmodifiableList(new ArrayList(inclusiveNamespacePrefixes))
+ : null;
}
+ @Override
public List getInclusiveNamespacePrefixes() {
return inclusiveNamespacePrefixes;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java
index f36760c..21db8e0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ExtendedCertificateCheckResultImpl.java
@@ -3,42 +3,42 @@ package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult;
public class ExtendedCertificateCheckResultImpl implements ExtendedCertificateCheckResult {
- private int majorCode;
- private String majorInfo;
-
- private int minorCode;
- private String minorInfo;
-
- public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo) {
- this(majorCode, majorInfo, -1, "");
- }
-
- public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo,
- int minorCode, String minorInfo) {
- this.majorCode = majorCode;
- this.majorInfo = majorInfo;
- this.minorCode = minorCode;
- this.minorInfo = minorInfo;
- }
-
- @Override
- public int getMajorCode() {
- return this.majorCode;
- }
-
- @Override
- public String getMajorInfo() {
- return this.majorInfo;
- }
-
- @Override
- public int getMinorCode() {
- return this.minorCode;
- }
-
- @Override
- public String getMinorInfo() {
- return this.minorInfo;
- }
+ private final int majorCode;
+ private final String majorInfo;
+
+ private final int minorCode;
+ private final String minorInfo;
+
+ public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo) {
+ this(majorCode, majorInfo, -1, "");
+ }
+
+ public ExtendedCertificateCheckResultImpl(int majorCode, String majorInfo,
+ int minorCode, String minorInfo) {
+ this.majorCode = majorCode;
+ this.majorInfo = majorInfo;
+ this.minorCode = minorCode;
+ this.minorInfo = minorInfo;
+ }
+
+ @Override
+ public int getMajorCode() {
+ return this.majorCode;
+ }
+
+ @Override
+ public String getMajorInfo() {
+ return this.majorInfo;
+ }
+
+ @Override
+ public int getMinorCode() {
+ return this.minorCode;
+ }
+
+ @Override
+ public String getMinorInfo() {
+ return this.minorInfo;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java
index 4b5659e..a806f16 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataBinaryImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.io.InputStream;
@@ -32,102 +31,104 @@ import at.gv.egovernment.moa.spss.api.common.ContentBinary;
import at.gv.egovernment.moa.spss.api.common.InputData;
/**
- * Content wrapper decorating a binary content with two additional attributes
+ * Content wrapper decorating a binary content with two additional attributes
* needed for returning <code>HashInputData</code> and <code>ReferenceInputData
* </code> information as part of <code>VerifyXMLSignatureResponse</code>.
- *
+ *
* @author Gregor Karlinger
- *
+ *
* @version $Id$
*/
-public class InputDataBinaryImpl implements ContentBinary, InputData
-{
+public class InputDataBinaryImpl implements ContentBinary, InputData {
/**
* The wrapped <code>Content</code>.
*/
protected ContentBinary wrapped_;
-
+
/**
- * This attribute signals what kind of container the XMLDSIG <code>Reference</code>
- * this <code>InputData</code> belongs to is part of.
+ * This attribute signals what kind of container the XMLDSIG
+ * <code>Reference</code> this <code>InputData</code> belongs to is part of.
*/
protected String partOf_;
-
+
/**
* If this <code>InputData</code> belongs to an XMLDSIG <code>Reference</code>
* being part of either a XMLDSIGManifest or a SignatureManifest, this attribute
- * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG
+ * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG
* <code>SignedInfo</code> referring to the XMLDSIGManifest or SignatureManifest
* respectively.
*/
protected int referringReferenceNumber_;
-
+
protected String hashAlg = null;
-
+
/**
* Creates a new instance.
- *
- * @param wrapped The wrapped <code>Content</code>. Must be of type {@link Content#BINARY_CONTENT}.
- *
- * @param partOf see {@link InputData}
- *
+ *
+ * @param wrapped The wrapped <code>Content</code>. Must be of
+ * type {@link Content#BINARY_CONTENT}.
+ *
+ * @param partOf see {@link InputData}
+ *
* @param referringReferenceNumber see {@link InputData}
- *
- * @param hashAlg see {@link InputData}
+ *
+ * @param hashAlg see {@link InputData}
*/
- public InputDataBinaryImpl(Content wrapped, String partOf, int referringReferenceNumber, String hashAlg) throws MOARuntimeException
- {
- if (wrapped.getContentType() != Content.BINARY_CONTENT) throw new MOARuntimeException("9901", null);
-
+ public InputDataBinaryImpl(Content wrapped, String partOf, int referringReferenceNumber, String hashAlg)
+ throws MOARuntimeException {
+ if (wrapped.getContentType() != Content.BINARY_CONTENT) {
+ throw new MOARuntimeException("9901", null);
+ }
+
wrapped_ = (ContentBinary) wrapped;
- partOf_ = partOf;
+ partOf_ = partOf;
referringReferenceNumber_ = referringReferenceNumber;
- this.hashAlg = hashAlg;
+ this.hashAlg = hashAlg;
}
-
- /**
+
+ /**
* @see at.gv.egovernment.moa.spss.api.common.Content#getContentType()
*/
- public int getContentType()
- {
+ @Override
+ public int getContentType() {
return wrapped_.getContentType();
}
/**
* @see at.gv.egovernment.moa.spss.api.common.Content#getReference()
*/
- public String getReference()
- {
+ @Override
+ public String getReference() {
return wrapped_.getReference();
}
/**
* @see at.gv.egovernment.moa.spss.api.common.ContentBinary#getBinaryContent()
*/
- public InputStream getBinaryContent()
- {
+ @Override
+ public InputStream getBinaryContent() {
return wrapped_.getBinaryContent();
}
/**
* @see at.gv.egovernment.moa.spss.api.common.InputData#getPartOf()
*/
- public String getPartOf()
- {
+ @Override
+ public String getPartOf() {
return partOf_;
}
/**
* @see at.gv.egovernment.moa.spss.api.common.InputData#getReferringReferenceNumber()
*/
- public int getReferringReferenceNumber()
- {
+ @Override
+ public int getReferringReferenceNumber() {
return referringReferenceNumber_;
}
-@Override
-public String getHashAlgorithm() {
- return this.hashAlg;
-}
+ @Override
+ public String getHashAlgorithm() {
+ return this.hashAlg;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java
index e89976e..fd97bf8 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/InputDataXMLImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.NodeList;
@@ -32,102 +31,103 @@ import at.gv.egovernment.moa.spss.api.common.ContentXML;
import at.gv.egovernment.moa.spss.api.common.InputData;
/**
- * Content wrapper decorating an XML content with two additional attributes
+ * Content wrapper decorating an XML content with two additional attributes
* needed for returning <code>HashInputData</code> and <code>ReferenceInputData
* </code> information as part of <code>VerifyXMLSignatureResponse</code>.
- *
+ *
* @author Gregor Karlinger
- *
+ *
* @version $Id$
*/
-public class InputDataXMLImpl implements ContentXML, InputData
-{
+public class InputDataXMLImpl implements ContentXML, InputData {
/**
* The wrapped <code>ContentXML</code>.
*/
protected ContentXML wrapped_;
-
+
/**
- * This attribute signals what kind of container the XMLDSIG <code>Reference</code>
- * this <code>InputData</code> belongs to is part of.
+ * This attribute signals what kind of container the XMLDSIG
+ * <code>Reference</code> this <code>InputData</code> belongs to is part of.
*/
protected String partOf_;
-
+
/**
* If this <code>InputData</code> belongs to an XMLDSIG <code>Reference</code>
* being part of either a XMLDSIGManifest or a SignatureManifest, this attribute
- * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG
+ * (a positive int) signals the particular <code>Reference</code> of the XMLDSIG
* <code>SignedInfo</code> referring to the XMLDSIGManifest or SignatureManifest
* respectively.
*/
protected int referringReferenceNumber_;
-
+
protected String hashAlg = null;
-
+
/**
* Creates a new instance.
- *
- * @param wrapped The wrapped <code>ContentBinary</code>. Must be of type {@link Content#XML_CONTENT}.
- *
- * @param partOf see {@link InputData}
- *
+ *
+ * @param wrapped The wrapped <code>ContentBinary</code>. Must
+ * be of type {@link Content#XML_CONTENT}.
+ *
+ * @param partOf see {@link InputData}
+ *
* @param referringReferenceNumber see {@link InputData}
- *
- * @param hashAlg see {@link InputData}
+ *
+ * @param hashAlg see {@link InputData}
*/
- public InputDataXMLImpl(Content wrapped, String partOf, int referringReferenceNumber, String hashAlg)
- {
- if (wrapped.getContentType() != Content.XML_CONTENT) throw new MOARuntimeException("9901", null);
+ public InputDataXMLImpl(Content wrapped, String partOf, int referringReferenceNumber, String hashAlg) {
+ if (wrapped.getContentType() != Content.XML_CONTENT) {
+ throw new MOARuntimeException("9901", null);
+ }
wrapped_ = (ContentXML) wrapped;
- partOf_ = partOf;
+ partOf_ = partOf;
referringReferenceNumber_ = referringReferenceNumber;
this.hashAlg = hashAlg;
}
-
- /**
+
+ /**
* @see at.gv.egovernment.moa.spss.api.common.Content#getContentType()
*/
- public int getContentType()
- {
+ @Override
+ public int getContentType() {
return wrapped_.getContentType();
}
/**
* @see at.gv.egovernment.moa.spss.api.common.Content#getReference()
*/
- public String getReference()
- {
+ @Override
+ public String getReference() {
return wrapped_.getReference();
}
/**
* @see at.gv.egovernment.moa.spss.api.common.ContentXML#getXMLContent()
*/
- public NodeList getXMLContent()
- {
+ @Override
+ public NodeList getXMLContent() {
return wrapped_.getXMLContent();
}
/**
* @see at.gv.egovernment.moa.spss.api.common.InputData#getPartOf()
*/
- public String getPartOf()
- {
+ @Override
+ public String getPartOf() {
return partOf_;
}
/**
* @see at.gv.egovernment.moa.spss.api.common.InputData#getReferringReferenceNumber()
*/
- public int getReferringReferenceNumber()
- {
+ @Override
+ public int getReferringReferenceNumber() {
return referringReferenceNumber_;
}
-@Override
-public String getHashAlgorithm() {
- return this.hashAlg;
-}
+ @Override
+ public String getHashAlgorithm() {
+ return this.hashAlg;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java
index e5b7f40..752fec0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResult;
@@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResultInfo;
/**
* Default implementation of <code>ManifestRefsCheckResult</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -41,26 +40,28 @@ public class ManifestRefsCheckResultImpl implements ManifestRefsCheckResult {
/**
* Sets the check code.
- *
+ *
* @param code A numerical representation of the result of the manifest check.
*/
public void setCode(int code) {
this.code = code;
}
+ @Override
public int getCode() {
return code;
}
/**
* Sets a reference to the manifest.
- *
+ *
* @param info The reference to the manifest.
*/
public void setInfo(ManifestRefsCheckResultInfo info) {
this.info = info;
}
+ @Override
public ManifestRefsCheckResultInfo getInfo() {
return info;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java
index f0ef1c5..68405a1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ManifestRefsCheckResultInfoImpl.java
@@ -21,34 +21,37 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResultInfo;
/**
* Default implementation of <code>ManifestRefsCheckResultInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class ManifestRefsCheckResultInfoImpl
- extends ReferencesCheckResultInfoImpl
- implements ManifestRefsCheckResultInfo {
+ extends ReferencesCheckResultInfoImpl
+ implements ManifestRefsCheckResultInfo {
- /** The position of the signature reference containing the reference to the
- * manifest being described by this object.*/
+ /**
+ * The position of the signature reference containing the reference to the
+ * manifest being described by this object.
+ */
private int referringSignatureReference;
/**
- * Sets the position of the signature reference containing the reference to
- * the manifest being described by this object.
+ * Sets the position of the signature reference containing the reference to the
+ * manifest being described by this object.
+ *
* @param referringSignatureReference The position of the signature reference.
*/
public void setReferringSignatureReference(int referringSignatureReference) {
this.referringSignatureReference = referringSignatureReference;
}
+ @Override
public int getReferringSignatureReference() {
return referringSignatureReference;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java
index e3a06c6..9f6d882 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/MetaInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.NodeList;
@@ -30,6 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo;
/**
* Default implementation of <code>MetaInfo</code>.
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -45,55 +45,58 @@ public class MetaInfoImpl implements MetaInfo {
/**
* Sets the MIME type.
- *
+ *
* @param mimeType The MIME type to set.
*/
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
+ @Override
public String getMimeType() {
return mimeType;
}
/**
* Sets the URI pointing to a description of the content.
- *
+ *
* @param description The URI pointing to a description of the content.
*/
public void setDescription(String description) {
this.description = description;
}
+ @Override
public String getDescription() {
return description;
}
/**
* Sets descriptive XML content.
- *
+ *
* @param anyElements The elements to set.
*/
public void setAnyElements(NodeList anyElements) {
- this.anyElements = anyElements;
+ this.anyElements = anyElements;
}
+ @Override
public NodeList getAnyElements() {
return anyElements;
}
/**
* Sets the XML signature creation type information.
- *
+ *
* @param type the XML signature creation type information to set.
*/
public void setType(String type) {
this.type = type;
}
+ @Override
public String getType() {
return type;
}
-
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java
index 8bd81a7..c9e44f1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferenceInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo;
/**
* Default implementation of <code>ReferenceInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -41,20 +40,21 @@ public class ReferenceInfoImpl implements ReferenceInfo {
private List verifyTransformsInfoProfiles;
/**
- * Sets the transforms profile used for verifying the transforms contained
- * in the signature.
- *
+ * Sets the transforms profile used for verifying the transforms contained in
+ * the signature.
+ *
* @param verifyTransformsInfoProfiles The profiles containing the transforms
- * allowed in the signature.
+ * allowed in the signature.
*/
public void setVerifyTransformsInfoProfiles(List verifyTransformsInfoProfiles) {
this.verifyTransformsInfoProfiles =
- verifyTransformsInfoProfiles != null
- ? Collections.unmodifiableList(
- new ArrayList(verifyTransformsInfoProfiles))
- : null;
+ verifyTransformsInfoProfiles != null
+ ? Collections.unmodifiableList(
+ new ArrayList(verifyTransformsInfoProfiles))
+ : null;
}
+ @Override
public List getVerifyTransformsInfoProfiles() {
return verifyTransformsInfoProfiles;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java
index d4cbab0..02e8634 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResult;
@@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResultInfo;
/**
* Default implementation of <code>ReferencesCheckResult</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -41,30 +40,31 @@ public class ReferencesCheckResultImpl implements ReferencesCheckResult {
/**
* Sets the check code.
- *
- * @param code A numerical representation of the result of the reference
- * check.
+ *
+ * @param code A numerical representation of the result of the reference check.
*/
public void setCode(int code) {
this.code = code;
}
-
+
+ @Override
public int getCode() {
return code;
}
/**
* Sets additional information about the reference check.
- *
- * @param manifestRefsCheckResultInfo Additional information about the
- * reference check.
+ *
+ * @param manifestRefsCheckResultInfo Additional information about the reference
+ * check.
*/
public void setInfo(ReferencesCheckResultInfo manifestRefsCheckResultInfo) {
this.info = manifestRefsCheckResultInfo;
}
-
+
+ @Override
public ReferencesCheckResultInfo getInfo() {
return info;
- }
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java
index a696988..a9073ed 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/ReferencesCheckResultInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.NodeList;
@@ -30,39 +29,42 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResultInfo;
/**
* Default implementation of <code>ReferencesCheckResultInfo</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ReferencesCheckResultInfoImpl
- implements ReferencesCheckResultInfo {
+ implements ReferencesCheckResultInfo {
/** Additional information about the references check. */
private NodeList anyOtherInfo;
/** The indexes of the failed references. */
private int[] failedReferences = new int[0];
-
+
/**
* Sets additional information about the references check.
+ *
* @param anyOtherInfo Additional information about the references check.
*/
public void setAnyOtherInfo(NodeList anyOtherInfo) {
this.anyOtherInfo = anyOtherInfo;
}
-
+
+ @Override
public NodeList getAnyOtherInfo() {
return anyOtherInfo;
}
/**
* Sets the indexes of the failed references.
- *
+ *
* @param failedReferences The indexes of the failed references.
*/
public void setFailedReferences(int[] failedReferences) {
this.failedReferences = failedReferences;
}
+ @Override
public int[] getFailedReferences() {
return failedReferences;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
index 2525a2f..0831aec 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SPSSFactoryImpl.java
@@ -80,491 +80,577 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
/**
* Default implementation of <code>SPSSFactory</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SPSSFactoryImpl extends SPSSFactory {
- public CreateXMLSignatureRequest createCreateXMLSignatureRequest(String keyIdentifier, List singleSignatureInfos) {
- CreateXMLSignatureRequestImpl createXMLSignatureRequest = new CreateXMLSignatureRequestImpl();
- createXMLSignatureRequest.setKeyIdentifier(keyIdentifier);
- createXMLSignatureRequest.setSingleSignatureInfos(singleSignatureInfos);
- return createXMLSignatureRequest;
- }
-
- public CreateCMSSignatureRequest createCreateCMSSignatureRequest(String keyIdentifier, List singleSignatureInfos) {
- CreateCMSSignatureRequestImpl createCMSSignatureRequest = new CreateCMSSignatureRequestImpl();
- createCMSSignatureRequest.setKeyIdentifier(keyIdentifier);
- createCMSSignatureRequest.setSingleSignatureInfos(singleSignatureInfos);
- return createCMSSignatureRequest;
-
- }
-
- public CreateCMSSignatureResponse createCreateCMSSignatureResponse(List responseElements) {
- CreateCMSSignatureResponseImpl createCMSSignatureResponse = new CreateCMSSignatureResponseImpl();
- createCMSSignatureResponse.setResponseElements(responseElements);
- return createCMSSignatureResponse;
- }
-
- public CMSSignatureResponse createCMSSignatureResponse(String base64value) {
- CMSSignatureResponseImpl cmsSignatureResponse = new CMSSignatureResponseImpl();
- cmsSignatureResponse.setCMSSignature(base64value);
-
- return cmsSignatureResponse;
- }
-
- public SingleSignatureInfo createSingleSignatureInfo(List dataObjectInfos, CreateSignatureInfo createSignatureInfo,
- boolean securityLayerConform) {
- SingleSignatureInfoImpl singleSignatureInfo = new SingleSignatureInfoImpl();
- singleSignatureInfo.setDataObjectInfos(dataObjectInfos);
- singleSignatureInfo.setCreateSignatureInfo(createSignatureInfo);
- singleSignatureInfo.setSecurityLayerConform(securityLayerConform);
- return singleSignatureInfo;
- }
-
- public at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS(
- at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo, boolean securityLayerConform, boolean isPAdESConform) {
- SingleSignatureInfoCMSImpl singleSignatureInfo = new SingleSignatureInfoCMSImpl();
- singleSignatureInfo.setDataObjectInfo(dataObjectInfo);
- singleSignatureInfo.setSecurityLayerConform(securityLayerConform);
- singleSignatureInfo.setPAdESConform(isPAdESConform);
- return singleSignatureInfo;
- }
-
- public DataObjectInfo createDataObjectInfo(String structure, boolean childOfManifest, Content dataObject,
- CreateTransformsInfoProfile createTransformsInfoProfile) {
- DataObjectInfoImpl dataObjectInfo = new DataObjectInfoImpl();
- dataObjectInfo.setStructure(structure);
- dataObjectInfo.setChildOfManifest(childOfManifest);
- dataObjectInfo.setDataObject(dataObject);
- dataObjectInfo.setCreateTransformsInfoProfile(createTransformsInfoProfile);
- return dataObjectInfo;
- }
-
- public at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo createDataObjectInfo(String structure,
- CMSDataObject dataObject) {
- DataObjectInfoCMSImpl dataObjectInfo = new DataObjectInfoCMSImpl();
- dataObjectInfo.setStructure(structure);
- dataObjectInfo.setDataObject(dataObject);
- return dataObjectInfo;
- }
-
- public CreateTransformsInfoProfile createCreateTransformsInfoProfile(String profileID) {
-
- CreateTransformsInfoProfileIDImpl createTransformsInfoProfile = new CreateTransformsInfoProfileIDImpl();
- createTransformsInfoProfile.setCreateTransformsInfoProfileID(profileID);
- return createTransformsInfoProfile;
- }
-
- public CreateTransformsInfoProfile createCreateTransformsInfoProfile(CreateTransformsInfo transformsInfo,
- List supplements) {
- CreateTransformsInfoProfileExplicitImpl createTransformsInfoProfile = new CreateTransformsInfoProfileExplicitImpl();
- createTransformsInfoProfile.setCreateTransformsInfo(transformsInfo);
- createTransformsInfoProfile.setSupplements(supplements);
- return createTransformsInfoProfile;
- }
-
- public CreateTransformsInfo createCreateTransformsInfo(List transforms, MetaInfo finalDataMetaInfo) {
- CreateTransformsInfoImpl createTransformsInfo = new CreateTransformsInfoImpl();
-
- createTransformsInfo.setTransforms(transforms);
- createTransformsInfo.setFinalDataMetaInfo(finalDataMetaInfo);
- return createTransformsInfo;
- }
-
- public CreateSignatureInfo createCreateSignatureInfo(Content createSignatureEnvironment,
- CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile) {
- CreateSignatureInfoImpl createSignatureInfo = new CreateSignatureInfoImpl();
- createSignatureInfo.setCreateSignatureEnvironment(createSignatureEnvironment);
- createSignatureInfo.setCreateSignatureEnvironmentProfile(createSignatureEnvironmentProfile);
- return createSignatureInfo;
- }
-
- public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(
- CreateSignatureLocation createSignatureLocation, List supplements) {
- CreateSignatureEnvironmentProfileExplicitImpl createSignatureEnvironmentProfile = new CreateSignatureEnvironmentProfileExplicitImpl();
- createSignatureEnvironmentProfile.setCreateSignatureLocation(createSignatureLocation);
- createSignatureEnvironmentProfile.setSupplements(supplements);
- return createSignatureEnvironmentProfile;
- }
-
- public CreateSignatureLocation createCreateSignatureLocation(String signatureLocationXPath,
- int signatureLocationIndex, Map namespaceDeclarations) {
- CreateSignatureLocationImpl createSignatureLocation = new CreateSignatureLocationImpl();
- createSignatureLocation.setIndex(signatureLocationIndex);
- createSignatureLocation.setNamespaceDeclarations(namespaceDeclarations);
- createSignatureLocation.setXPathExpression(signatureLocationXPath);
- return createSignatureLocation;
- }
-
- public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(String profileID) {
- CreateSignatureEnvironmentProfileIDImpl createSignatureEnvironmentProfile = new CreateSignatureEnvironmentProfileIDImpl();
- createSignatureEnvironmentProfile.setCreateSignatureEnvironmentProfileID(profileID);
- return createSignatureEnvironmentProfile;
- }
-
- public CreateXMLSignatureResponse createCreateXMLSignatureResponse(List responseElements) {
- CreateXMLSignatureResponseImpl createXMLSignatureResponse = new CreateXMLSignatureResponseImpl();
- createXMLSignatureResponse.setResponseElements(responseElements);
- return createXMLSignatureResponse;
- }
-
- public SignatureEnvironmentResponse createSignatureEnvironmentResponse(Element signatureEnvironment) {
- SignatureEnvironmentResponseImpl signatureEnvironmentResponse = new SignatureEnvironmentResponseImpl();
- signatureEnvironmentResponse.setSignatureEnvironment(signatureEnvironment);
- return signatureEnvironmentResponse;
- }
-
- public ErrorResponse createErrorResponse(int code, String info) {
- ErrorResponseImpl errorResponse = new ErrorResponseImpl();
- errorResponse.setErrorCode(code);
- errorResponse.setInfo(info);
- return errorResponse;
- }
-
- public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime,
- InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf) {
- return this.createVerifyCMSSignatureRequest(signatories, dateTime, cmsSignature, dataObject, trustProfileID, pdf, false);
- }
-
- public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime,
- InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf, boolean extended) {
- VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new VerifyCMSSignatureRequestImpl();
- verifyCMSSignatureRequest.setDateTime(dateTime);
- verifyCMSSignatureRequest.setCMSSignature(cmsSignature);
- verifyCMSSignatureRequest.setDataObject(dataObject);
- verifyCMSSignatureRequest.setTrustProfileId(trustProfileID);
- verifyCMSSignatureRequest.setSignatories(signatories);
- verifyCMSSignatureRequest.setPDF(pdf);
- verifyCMSSignatureRequest.setExtended(extended);
- return verifyCMSSignatureRequest;
- }
-
- public CMSDataObject createCMSDataObject(MetaInfo metaInfo, CMSContent content, BigDecimal excludeByteRangeFrom,
- BigDecimal excludeByteRangeTo) {
-
- CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl();
- cmsDataObject.setMetaInfo(metaInfo);
- cmsDataObject.setContent(content);
- cmsDataObject.setExcludeByteRangeFrom(excludeByteRangeFrom);
- cmsDataObject.setExcludeByteRangeTo(excludeByteRangeTo);
-
- return cmsDataObject;
- }
-
- public CMSContent createCMSContent(InputStream binaryContent) {
- CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl();
-
- cmsContent.setBinaryContent(binaryContent);
- return cmsContent;
- }
-
- public CMSContent createCMSContent(String referenceURI) {
- CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl();
-
- cmsContent.setReference(referenceURI);
- return cmsContent;
- }
-
- public CMSDataObject createCMSDataObject(MetaInfo metaInfo, String referenceURI) {
- CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl();
- CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl();
- cmsDataObject.setMetaInfo(metaInfo);
- cmsContent.setReference(referenceURI);
- return cmsDataObject;
- }
-
- public VerifyCMSSignatureResponse createVerifyCMSSignatureResponse(List responseElements) {
- VerifyCMSSinatureResponseImpl verifyCMSSignatureResponse = new VerifyCMSSinatureResponseImpl();
- verifyCMSSignatureResponse.setResponseElements(responseElements);
- return verifyCMSSignatureResponse;
- }
-
- public VerifyCMSSignatureResponseElement createVerifyCMSSignatureResponseElement(SignerInfo signerInfo,
- CheckResult signatureCheck, CheckResult certificateCheck, List adesResult,
- ExtendedCertificateCheckResult extendedCertificateCheckResult, String usedAlgorithm, Boolean coversFullDocument,
- int[] byteRangeOfSignature) {
- VerifyCMSSignatureResponseElementImpl verifyCMSSignatureResponseElement = new VerifyCMSSignatureResponseElementImpl();
- verifyCMSSignatureResponseElement.setSignerInfo(signerInfo);
- verifyCMSSignatureResponseElement.setSignatureCheck(signatureCheck);
- verifyCMSSignatureResponseElement.setCertificateCheck(certificateCheck);
- verifyCMSSignatureResponseElement.setAdESFormResults(adesResult);
- verifyCMSSignatureResponseElement.setExtendedCertificateCheck(extendedCertificateCheckResult);
- verifyCMSSignatureResponseElement.setSignatureAlgorithm(usedAlgorithm);
- verifyCMSSignatureResponseElement.setCoversFullDocument(coversFullDocument);
- verifyCMSSignatureResponseElement.setByteRangeOfSignature(byteRangeOfSignature);
- return verifyCMSSignatureResponseElement;
- }
-
- public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime,
- VerifySignatureInfo verifySignatureInfo, List supplementProfiles,
- SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData, String trustProfileID) {
- return this.createVerifyXMLSignatureRequest(dateTime, verifySignatureInfo, supplementProfiles,
- signatureManifestParams, returnHashInputData, trustProfileID, false);
- }
-
- public VerifySignatureInfo createVerifySignatureInfo(Content verifySignatureEnvironment,
- VerifySignatureLocation verifySignatureLocation) {
- VerifySignatureInfoImpl verifySignatureInfo = new VerifySignatureInfoImpl();
- verifySignatureInfo.setVerifySignatureEnvironment(verifySignatureEnvironment);
- verifySignatureInfo.setVerifySignatureLocation(verifySignatureLocation);
- return verifySignatureInfo;
- }
-
- public VerifySignatureLocation createVerifySignatureLocation(String xPathExpression, Map namespaceDeclarations) {
- VerifySignatureLocationImpl verifySignatureLocation = new VerifySignatureLocationImpl();
- verifySignatureLocation.setXPathExpression(xPathExpression);
- verifySignatureLocation.setNamespaceDeclarations(namespaceDeclarations);
- return verifySignatureLocation;
- }
-
- public SupplementProfile createSupplementProfile(String profileID) {
- SupplementProfileIDImpl supplementProfileID = new SupplementProfileIDImpl();
- supplementProfileID.setSupplementProfileID(profileID);
- return supplementProfileID;
- }
-
- public SupplementProfile createSupplementProfile(XMLDataObjectAssociation supplementProfile) {
- SupplementProfileExplicitImpl supplementProfileExplicit = new SupplementProfileExplicitImpl();
- supplementProfileExplicit.setSupplementProfile(supplementProfile);
- return supplementProfileExplicit;
- }
-
- public SignatureManifestCheckParams createSignatureManifestCheckParams(List referenceInfos,
- boolean returnReferenceInputData) {
- SignatureManifestCheckParamsImpl signatureManifestCheckParams = new SignatureManifestCheckParamsImpl();
- signatureManifestCheckParams.setReferenceInfos(referenceInfos);
- signatureManifestCheckParams.setReturnReferenceInputData(returnReferenceInputData);
- return signatureManifestCheckParams;
- }
-
- public ReferenceInfo createReferenceInfo(List verifyTransformsInfoProfiles) {
- ReferenceInfoImpl referenceInfo = new ReferenceInfoImpl();
- referenceInfo.setVerifyTransformsInfoProfiles(verifyTransformsInfoProfiles);
- return referenceInfo;
- }
-
- public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(List transforms, List transformParameters) {
- VerifyTransformsInfoProfileExplicitImpl verifyTransformsInfoProfile = new VerifyTransformsInfoProfileExplicitImpl();
-
- verifyTransformsInfoProfile.setTransforms(transforms);
- verifyTransformsInfoProfile.setTransformParameters(transformParameters);
-
- return verifyTransformsInfoProfile;
- }
-
- public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(String profileID) {
- VerifyTransformsInfoProfileIDImpl verifyTransformsInfoProfile = new VerifyTransformsInfoProfileIDImpl();
- verifyTransformsInfoProfile.setVerifyTransformsInfoProfileID(profileID);
- return verifyTransformsInfoProfile;
- }
-
- public TransformParameter createTransformParameter(String URI, String digestMethod, byte[] digestValue) {
- TransformPatameterHashImpl transformParameter = new TransformPatameterHashImpl();
- transformParameter.setURI(URI);
- transformParameter.setDigestMethod(digestMethod);
- transformParameter.setDigestValue(digestValue);
- return transformParameter;
- }
-
- public TransformParameter createTransformParameter(String URI, InputStream binaryData) {
- TransformParameterBinaryImpl transformParameter = new TransformParameterBinaryImpl();
- transformParameter.setURI(URI);
- transformParameter.setBinaryContent(binaryData);
- return transformParameter;
- }
-
- public TransformParameter createTransformParameter(String URI) {
- TransformParameterURIImpl transformParameter = new TransformParameterURIImpl();
- transformParameter.setURI(URI);
- return transformParameter;
- }
-
- public VerifyXMLSignatureResponse createVerifyXMLSignatureResponse(SignerInfo signerInfo, List hashInputDatas,
- List referenceInputDatas, ReferencesCheckResult signatureCheck,
- ReferencesCheckResult signatureManifestCheck, List xmlDsigManifestChecks, CheckResult certificateCheck,
- List adesFormResults, ExtendedCertificateCheckResult extCheckResult, String signatureAlgorithm) {
- VerifyXMLSignatureResponseImpl verifyXMLSignatureResponse = new VerifyXMLSignatureResponseImpl();
- verifyXMLSignatureResponse.setSignerInfo(signerInfo);
- verifyXMLSignatureResponse.setHashInputDatas(hashInputDatas);
- verifyXMLSignatureResponse.setReferenceInputDatas(referenceInputDatas);
- verifyXMLSignatureResponse.setSignatureAlgorithm(signatureAlgorithm);
- verifyXMLSignatureResponse.setSignatureCheck(signatureCheck);
- verifyXMLSignatureResponse.setSignatureManifestCheck(signatureManifestCheck);
- verifyXMLSignatureResponse.setXMLDsigManifestChecks(xmlDsigManifestChecks);
- verifyXMLSignatureResponse.setCertificateCheck(certificateCheck);
- verifyXMLSignatureResponse.setAdESFormResults(adesFormResults);
- verifyXMLSignatureResponse.setExtendedCertificateCheck(extCheckResult);
- return verifyXMLSignatureResponse;
- }
-
- public ReferencesCheckResult createReferencesCheckResult(int code, ReferencesCheckResultInfo info) {
- ReferencesCheckResultImpl referencesCheckResult = new ReferencesCheckResultImpl();
- referencesCheckResult.setCode(code);
- referencesCheckResult.setInfo(info);
- return referencesCheckResult;
- }
-
- public ReferencesCheckResultInfo createReferencesCheckResultInfo(NodeList anyOtherInfo, int[] failedReferences) {
- ReferencesCheckResultInfoImpl referencesCheckResultInfo = new ReferencesCheckResultInfoImpl();
- referencesCheckResultInfo.setAnyOtherInfo(anyOtherInfo);
- referencesCheckResultInfo.setFailedReferences(failedReferences);
- return referencesCheckResultInfo;
- }
-
- public ManifestRefsCheckResult createManifestRefsCheckResult(int code, ManifestRefsCheckResultInfo info) {
- ManifestRefsCheckResultImpl manifestRefsCheckResult = new ManifestRefsCheckResultImpl();
- manifestRefsCheckResult.setCode(code);
- manifestRefsCheckResult.setInfo(info);
- return manifestRefsCheckResult;
- }
-
- public ManifestRefsCheckResultInfo createManifestRefsCheckResultInfo(NodeList anyOtherInfo, int[] failedReferences,
- int referringSigReference) {
- ManifestRefsCheckResultInfoImpl manifestRefsCheckResultInfo = new ManifestRefsCheckResultInfoImpl();
- manifestRefsCheckResultInfo.setAnyOtherInfo(anyOtherInfo);
- manifestRefsCheckResultInfo.setReferringSignatureReference(referringSigReference);
- manifestRefsCheckResultInfo.setFailedReferences(failedReferences);
- return manifestRefsCheckResultInfo;
- }
-
- public Content createContent(InputStream binaryData, String referenceURI) {
- ContentBinaryImpl content = new ContentBinaryImpl();
- content.setBinaryContent(binaryData);
- content.setReference(referenceURI);
- return content;
- }
-
- public Content createContent(String locationReferenceURI, String referenceURI) {
- ContentLocRefImpl content = new ContentLocRefImpl();
- content.setLocationReferenceURI(locationReferenceURI);
- content.setReference(referenceURI);
- return content;
- }
-
- public Content createContent(String referenceURI) {
- ContentReferenceImpl content = new ContentReferenceImpl();
- content.setReference(referenceURI);
- return content;
- }
-
- public Content createContent(NodeList xmlData, String referenceURI) {
- ContentXMLImpl content = new ContentXMLImpl();
- content.setXMLContent(xmlData);
- content.setReference(referenceURI);
- return content;
- }
-
- public XMLDataObjectAssociation createXMLDataObjectAssociation(MetaInfo metaInfo, Content xmlContent) {
- XMLDataObjectAssociationImpl xmlDataObjectAssociation = new XMLDataObjectAssociationImpl();
- xmlDataObjectAssociation.setMetaInfo(metaInfo);
- xmlDataObjectAssociation.setContent(xmlContent);
- return xmlDataObjectAssociation;
- }
-
- public MetaInfo createMetaInfo(String mimeType, String description, NodeList otherInfo, String type) {
- MetaInfoImpl metaInfo = new MetaInfoImpl();
- metaInfo.setMimeType(mimeType);
- metaInfo.setDescription(description);
- metaInfo.setAnyElements(otherInfo);
- metaInfo.setType(type);
- return metaInfo;
- }
-
- public Transform createCanonicalizationTransform(String algorithmURI) {
- CanonicalizationTransformImpl transform = new CanonicalizationTransformImpl(algorithmURI);
- return transform;
- }
-
- public Transform createExclusiveCanonicalizationTransform(String algorithmURI, List inclusiveNamespacePrefixes) {
- ExclusiveCanonicalizationTransformImpl transform = new ExclusiveCanonicalizationTransformImpl(algorithmURI);
- transform.setInclusiveNamespacePrefixes(inclusiveNamespacePrefixes);
- return transform;
- }
-
- public Transform createBase64Transform() {
- Base64TransformImpl transform = new Base64TransformImpl();
- return transform;
- }
-
- public Transform createEnvelopedSignatureTransform() {
- EnvelopedSignatureTransformImpl transform = new EnvelopedSignatureTransformImpl();
- return transform;
- }
-
- public Transform createXSLTTransform(Element styleSheet) {
- XSLTransformImpl transform = new XSLTransformImpl();
- transform.setStylesheet(styleSheet);
- return transform;
- }
-
- public Transform createXPathTransform(String xPathExpression, Map namespaceDeclarations) {
- XPathTransformImpl transform = new XPathTransformImpl();
- transform.setXPathExpression(xPathExpression);
- transform.setNamespaceDelcarations(namespaceDeclarations);
- return transform;
- }
-
- public Transform createXPathFilter2Transform(List xPathFilters) {
- XPathFilter2TransformImpl transform = new XPathFilter2TransformImpl();
- transform.setFilters(xPathFilters);
- return transform;
- }
-
- public XPathFilter createXPathFilter(String filterType, String xPathExpression, Map namespaceDeclarations) {
- XPathFilterImpl xPathFilter = new XPathFilterImpl();
- xPathFilter.setFilterType(filterType);
- xPathFilter.setXPathExpression(xPathExpression);
- xPathFilter.setNamespaceDelcarations(namespaceDeclarations);
- return xPathFilter;
- }
-
- public CheckResult createCheckResult(int code, NodeList info) {
- CheckResultImpl checkResult = new CheckResultImpl();
- checkResult.setCode(code);
- checkResult.setInfo(info);
- return checkResult;
- }
-
- public SignerInfo createSignerInfo(X509Certificate signerCertificate, boolean qualifiedCertificate,
- boolean qcSourceTSL, boolean publicAuthority, String publicAuthorityID, boolean sscd, boolean sscdSourceTSL,
- String issuerCountryCode, Date signingTime, TslInfos tslInfos) {
- SignerInfoImpl signerInfo = new SignerInfoImpl();
- signerInfo.setSignerCertificate(signerCertificate);
- signerInfo.setQualifiedCertificate(qualifiedCertificate);
- signerInfo.setQCSourceTSL(qcSourceTSL);
- signerInfo.setPublicAuthority(publicAuthority);
- signerInfo.setPublicAuhtorityID(publicAuthorityID);
- signerInfo.setSSCD(sscd);
- signerInfo.setSSCDSourceTSL(sscdSourceTSL);
- signerInfo.setIssuerCountryCode(issuerCountryCode);
- signerInfo.setSigningTime(signingTime);
- signerInfo.setTslInfos(tslInfos);
- return signerInfo;
- }
-
- public X509IssuerSerial createX509IssuerSerial(String issuerName, BigInteger serialNumber) {
- X509IssuerSerialImpl x509IssuerSerial = new X509IssuerSerialImpl();
- x509IssuerSerial.setX509IssuerName(issuerName);
- x509IssuerSerial.setX509SerialNumber(serialNumber);
- return x509IssuerSerial;
- }
-
- @Override
- public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime,
- VerifySignatureInfo verifySignatureInfo, List supplementProfiles,
- SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData, String trustProfileID,
- boolean extendedValidation) {
- VerifyXMLSignatureRequestImpl verifyXMLSignatureRequest = new VerifyXMLSignatureRequestImpl();
- verifyXMLSignatureRequest.setDateTime(dateTime);
- verifyXMLSignatureRequest.setSignatureInfo(verifySignatureInfo);
- verifyXMLSignatureRequest.setSupplementProfiles(supplementProfiles);
- verifyXMLSignatureRequest.setSignatureManifestCheckParams(signatureManifestParams);
- verifyXMLSignatureRequest.setReturnHashInputData(returnHashInputData);
- verifyXMLSignatureRequest.setTrustProfileId(trustProfileID);
- verifyXMLSignatureRequest.setExtendedValidation(extendedValidation);
- return verifyXMLSignatureRequest;
- }
+ @Override
+ public CreateXMLSignatureRequest createCreateXMLSignatureRequest(String keyIdentifier,
+ List singleSignatureInfos) {
+ final CreateXMLSignatureRequestImpl createXMLSignatureRequest = new CreateXMLSignatureRequestImpl();
+ createXMLSignatureRequest.setKeyIdentifier(keyIdentifier);
+ createXMLSignatureRequest.setSingleSignatureInfos(singleSignatureInfos);
+ return createXMLSignatureRequest;
+ }
+
+ @Override
+ public CreateCMSSignatureRequest createCreateCMSSignatureRequest(String keyIdentifier,
+ List singleSignatureInfos) {
+ final CreateCMSSignatureRequestImpl createCMSSignatureRequest = new CreateCMSSignatureRequestImpl();
+ createCMSSignatureRequest.setKeyIdentifier(keyIdentifier);
+ createCMSSignatureRequest.setSingleSignatureInfos(singleSignatureInfos);
+ return createCMSSignatureRequest;
+
+ }
+
+ @Override
+ public CreateCMSSignatureResponse createCreateCMSSignatureResponse(List responseElements) {
+ final CreateCMSSignatureResponseImpl createCMSSignatureResponse = new CreateCMSSignatureResponseImpl();
+ createCMSSignatureResponse.setResponseElements(responseElements);
+ return createCMSSignatureResponse;
+ }
+
+ @Override
+ public CMSSignatureResponse createCMSSignatureResponse(String base64value) {
+ final CMSSignatureResponseImpl cmsSignatureResponse = new CMSSignatureResponseImpl();
+ cmsSignatureResponse.setCMSSignature(base64value);
+
+ return cmsSignatureResponse;
+ }
+
+ @Override
+ public SingleSignatureInfo createSingleSignatureInfo(List dataObjectInfos,
+ CreateSignatureInfo createSignatureInfo,
+ boolean securityLayerConform) {
+ final SingleSignatureInfoImpl singleSignatureInfo = new SingleSignatureInfoImpl();
+ singleSignatureInfo.setDataObjectInfos(dataObjectInfos);
+ singleSignatureInfo.setCreateSignatureInfo(createSignatureInfo);
+ singleSignatureInfo.setSecurityLayerConform(securityLayerConform);
+ return singleSignatureInfo;
+ }
+
+ @Override
+ public at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo createSingleSignatureInfoCMS(
+ at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo dataObjectInfo, boolean securityLayerConform,
+ boolean isPAdESConform) {
+ final SingleSignatureInfoCMSImpl singleSignatureInfo = new SingleSignatureInfoCMSImpl();
+ singleSignatureInfo.setDataObjectInfo(dataObjectInfo);
+ singleSignatureInfo.setSecurityLayerConform(securityLayerConform);
+ singleSignatureInfo.setPAdESConform(isPAdESConform);
+ return singleSignatureInfo;
+ }
+
+ @Override
+ public DataObjectInfo createDataObjectInfo(String structure, boolean childOfManifest, Content dataObject,
+ CreateTransformsInfoProfile createTransformsInfoProfile) {
+ final DataObjectInfoImpl dataObjectInfo = new DataObjectInfoImpl();
+ dataObjectInfo.setStructure(structure);
+ dataObjectInfo.setChildOfManifest(childOfManifest);
+ dataObjectInfo.setDataObject(dataObject);
+ dataObjectInfo.setCreateTransformsInfoProfile(createTransformsInfoProfile);
+ return dataObjectInfo;
+ }
+
+ @Override
+ public at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo createDataObjectInfo(String structure,
+ CMSDataObject dataObject) {
+ final DataObjectInfoCMSImpl dataObjectInfo = new DataObjectInfoCMSImpl();
+ dataObjectInfo.setStructure(structure);
+ dataObjectInfo.setDataObject(dataObject);
+ return dataObjectInfo;
+ }
+
+ @Override
+ public CreateTransformsInfoProfile createCreateTransformsInfoProfile(String profileID) {
+
+ final CreateTransformsInfoProfileIDImpl createTransformsInfoProfile =
+ new CreateTransformsInfoProfileIDImpl();
+ createTransformsInfoProfile.setCreateTransformsInfoProfileID(profileID);
+ return createTransformsInfoProfile;
+ }
+
+ @Override
+ public CreateTransformsInfoProfile createCreateTransformsInfoProfile(CreateTransformsInfo transformsInfo,
+ List supplements) {
+ final CreateTransformsInfoProfileExplicitImpl createTransformsInfoProfile =
+ new CreateTransformsInfoProfileExplicitImpl();
+ createTransformsInfoProfile.setCreateTransformsInfo(transformsInfo);
+ createTransformsInfoProfile.setSupplements(supplements);
+ return createTransformsInfoProfile;
+ }
+
+ @Override
+ public CreateTransformsInfo createCreateTransformsInfo(List transforms, MetaInfo finalDataMetaInfo) {
+ final CreateTransformsInfoImpl createTransformsInfo = new CreateTransformsInfoImpl();
+
+ createTransformsInfo.setTransforms(transforms);
+ createTransformsInfo.setFinalDataMetaInfo(finalDataMetaInfo);
+ return createTransformsInfo;
+ }
+
+ @Override
+ public CreateSignatureInfo createCreateSignatureInfo(Content createSignatureEnvironment,
+ CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile) {
+ final CreateSignatureInfoImpl createSignatureInfo = new CreateSignatureInfoImpl();
+ createSignatureInfo.setCreateSignatureEnvironment(createSignatureEnvironment);
+ createSignatureInfo.setCreateSignatureEnvironmentProfile(createSignatureEnvironmentProfile);
+ return createSignatureInfo;
+ }
+
+ @Override
+ public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(
+ CreateSignatureLocation createSignatureLocation, List supplements) {
+ final CreateSignatureEnvironmentProfileExplicitImpl createSignatureEnvironmentProfile =
+ new CreateSignatureEnvironmentProfileExplicitImpl();
+ createSignatureEnvironmentProfile.setCreateSignatureLocation(createSignatureLocation);
+ createSignatureEnvironmentProfile.setSupplements(supplements);
+ return createSignatureEnvironmentProfile;
+ }
+
+ @Override
+ public CreateSignatureLocation createCreateSignatureLocation(String signatureLocationXPath,
+ int signatureLocationIndex, Map namespaceDeclarations) {
+ final CreateSignatureLocationImpl createSignatureLocation = new CreateSignatureLocationImpl();
+ createSignatureLocation.setIndex(signatureLocationIndex);
+ createSignatureLocation.setNamespaceDeclarations(namespaceDeclarations);
+ createSignatureLocation.setXPathExpression(signatureLocationXPath);
+ return createSignatureLocation;
+ }
+
+ @Override
+ public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile(String profileID) {
+ final CreateSignatureEnvironmentProfileIDImpl createSignatureEnvironmentProfile =
+ new CreateSignatureEnvironmentProfileIDImpl();
+ createSignatureEnvironmentProfile.setCreateSignatureEnvironmentProfileID(profileID);
+ return createSignatureEnvironmentProfile;
+ }
+
+ @Override
+ public CreateXMLSignatureResponse createCreateXMLSignatureResponse(List responseElements) {
+ final CreateXMLSignatureResponseImpl createXMLSignatureResponse = new CreateXMLSignatureResponseImpl();
+ createXMLSignatureResponse.setResponseElements(responseElements);
+ return createXMLSignatureResponse;
+ }
+
+ @Override
+ public SignatureEnvironmentResponse createSignatureEnvironmentResponse(Element signatureEnvironment) {
+ final SignatureEnvironmentResponseImpl signatureEnvironmentResponse =
+ new SignatureEnvironmentResponseImpl();
+ signatureEnvironmentResponse.setSignatureEnvironment(signatureEnvironment);
+ return signatureEnvironmentResponse;
+ }
+
+ @Override
+ public ErrorResponse createErrorResponse(int code, String info) {
+ final ErrorResponseImpl errorResponse = new ErrorResponseImpl();
+ errorResponse.setErrorCode(code);
+ errorResponse.setInfo(info);
+ return errorResponse;
+ }
+
+ @Override
+ public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime,
+ InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf) {
+ return this.createVerifyCMSSignatureRequest(signatories, dateTime, cmsSignature, dataObject,
+ trustProfileID, pdf, false);
+ }
+
+ @Override
+ public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest(int[] signatories, Date dateTime,
+ InputStream cmsSignature, CMSDataObject dataObject, String trustProfileID, boolean pdf,
+ boolean extended) {
+ final VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new VerifyCMSSignatureRequestImpl();
+ verifyCMSSignatureRequest.setDateTime(dateTime);
+ verifyCMSSignatureRequest.setCMSSignature(cmsSignature);
+ verifyCMSSignatureRequest.setDataObject(dataObject);
+ verifyCMSSignatureRequest.setTrustProfileId(trustProfileID);
+ verifyCMSSignatureRequest.setSignatories(signatories);
+ verifyCMSSignatureRequest.setPDF(pdf);
+ verifyCMSSignatureRequest.setExtended(extended);
+ return verifyCMSSignatureRequest;
+ }
+
+ @Override
+ public CMSDataObject createCMSDataObject(MetaInfo metaInfo, CMSContent content,
+ BigDecimal excludeByteRangeFrom,
+ BigDecimal excludeByteRangeTo) {
+
+ final CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl();
+ cmsDataObject.setMetaInfo(metaInfo);
+ cmsDataObject.setContent(content);
+ cmsDataObject.setExcludeByteRangeFrom(excludeByteRangeFrom);
+ cmsDataObject.setExcludeByteRangeTo(excludeByteRangeTo);
+
+ return cmsDataObject;
+ }
+
+ @Override
+ public CMSContent createCMSContent(InputStream binaryContent) {
+ final CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl();
+
+ cmsContent.setBinaryContent(binaryContent);
+ return cmsContent;
+ }
+
+ @Override
+ public CMSContent createCMSContent(String referenceURI) {
+ final CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl();
+
+ cmsContent.setReference(referenceURI);
+ return cmsContent;
+ }
+
+ public CMSDataObject createCMSDataObject(MetaInfo metaInfo, String referenceURI) {
+ final CMSDataObjectImpl cmsDataObject = new CMSDataObjectImpl();
+ final CMSContentReferenceImpl cmsContent = new CMSContentReferenceImpl();
+ cmsDataObject.setMetaInfo(metaInfo);
+ cmsContent.setReference(referenceURI);
+ return cmsDataObject;
+ }
+
+ @Override
+ public VerifyCMSSignatureResponse createVerifyCMSSignatureResponse(List responseElements) {
+ final VerifyCMSSinatureResponseImpl verifyCMSSignatureResponse = new VerifyCMSSinatureResponseImpl();
+ verifyCMSSignatureResponse.setResponseElements(responseElements);
+ return verifyCMSSignatureResponse;
+ }
+
+ @Override
+ public VerifyCMSSignatureResponseElement createVerifyCMSSignatureResponseElement(SignerInfo signerInfo,
+ CheckResult signatureCheck, CheckResult certificateCheck, List adesResult,
+ ExtendedCertificateCheckResult extendedCertificateCheckResult, String usedAlgorithm,
+ Boolean coversFullDocument,
+ int[] byteRangeOfSignature) {
+ final VerifyCMSSignatureResponseElementImpl verifyCMSSignatureResponseElement =
+ new VerifyCMSSignatureResponseElementImpl();
+ verifyCMSSignatureResponseElement.setSignerInfo(signerInfo);
+ verifyCMSSignatureResponseElement.setSignatureCheck(signatureCheck);
+ verifyCMSSignatureResponseElement.setCertificateCheck(certificateCheck);
+ verifyCMSSignatureResponseElement.setAdESFormResults(adesResult);
+ verifyCMSSignatureResponseElement.setExtendedCertificateCheck(extendedCertificateCheckResult);
+ verifyCMSSignatureResponseElement.setSignatureAlgorithm(usedAlgorithm);
+ verifyCMSSignatureResponseElement.setCoversFullDocument(coversFullDocument);
+ verifyCMSSignatureResponseElement.setByteRangeOfSignature(byteRangeOfSignature);
+ return verifyCMSSignatureResponseElement;
+ }
+
+ @Override
+ public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime,
+ VerifySignatureInfo verifySignatureInfo, List supplementProfiles,
+ SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData,
+ String trustProfileID) {
+ return this.createVerifyXMLSignatureRequest(dateTime, verifySignatureInfo, supplementProfiles,
+ signatureManifestParams, returnHashInputData, trustProfileID, false);
+ }
+
+ @Override
+ public VerifySignatureInfo createVerifySignatureInfo(Content verifySignatureEnvironment,
+ VerifySignatureLocation verifySignatureLocation) {
+ final VerifySignatureInfoImpl verifySignatureInfo = new VerifySignatureInfoImpl();
+ verifySignatureInfo.setVerifySignatureEnvironment(verifySignatureEnvironment);
+ verifySignatureInfo.setVerifySignatureLocation(verifySignatureLocation);
+ return verifySignatureInfo;
+ }
+
+ @Override
+ public VerifySignatureLocation createVerifySignatureLocation(String xPathExpression,
+ Map namespaceDeclarations) {
+ final VerifySignatureLocationImpl verifySignatureLocation = new VerifySignatureLocationImpl();
+ verifySignatureLocation.setXPathExpression(xPathExpression);
+ verifySignatureLocation.setNamespaceDeclarations(namespaceDeclarations);
+ return verifySignatureLocation;
+ }
+
+ @Override
+ public SupplementProfile createSupplementProfile(String profileID) {
+ final SupplementProfileIDImpl supplementProfileID = new SupplementProfileIDImpl();
+ supplementProfileID.setSupplementProfileID(profileID);
+ return supplementProfileID;
+ }
+
+ @Override
+ public SupplementProfile createSupplementProfile(XMLDataObjectAssociation supplementProfile) {
+ final SupplementProfileExplicitImpl supplementProfileExplicit = new SupplementProfileExplicitImpl();
+ supplementProfileExplicit.setSupplementProfile(supplementProfile);
+ return supplementProfileExplicit;
+ }
+
+ @Override
+ public SignatureManifestCheckParams createSignatureManifestCheckParams(List referenceInfos,
+ boolean returnReferenceInputData) {
+ final SignatureManifestCheckParamsImpl signatureManifestCheckParams =
+ new SignatureManifestCheckParamsImpl();
+ signatureManifestCheckParams.setReferenceInfos(referenceInfos);
+ signatureManifestCheckParams.setReturnReferenceInputData(returnReferenceInputData);
+ return signatureManifestCheckParams;
+ }
+
+ @Override
+ public ReferenceInfo createReferenceInfo(List verifyTransformsInfoProfiles) {
+ final ReferenceInfoImpl referenceInfo = new ReferenceInfoImpl();
+ referenceInfo.setVerifyTransformsInfoProfiles(verifyTransformsInfoProfiles);
+ return referenceInfo;
+ }
+
+ @Override
+ public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(List transforms,
+ List transformParameters) {
+ final VerifyTransformsInfoProfileExplicitImpl verifyTransformsInfoProfile =
+ new VerifyTransformsInfoProfileExplicitImpl();
+
+ verifyTransformsInfoProfile.setTransforms(transforms);
+ verifyTransformsInfoProfile.setTransformParameters(transformParameters);
+
+ return verifyTransformsInfoProfile;
+ }
+
+ @Override
+ public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile(String profileID) {
+ final VerifyTransformsInfoProfileIDImpl verifyTransformsInfoProfile =
+ new VerifyTransformsInfoProfileIDImpl();
+ verifyTransformsInfoProfile.setVerifyTransformsInfoProfileID(profileID);
+ return verifyTransformsInfoProfile;
+ }
+
+ @Override
+ public TransformParameter createTransformParameter(String URI, String digestMethod, byte[] digestValue) {
+ final TransformPatameterHashImpl transformParameter = new TransformPatameterHashImpl();
+ transformParameter.setURI(URI);
+ transformParameter.setDigestMethod(digestMethod);
+ transformParameter.setDigestValue(digestValue);
+ return transformParameter;
+ }
+
+ @Override
+ public TransformParameter createTransformParameter(String URI, InputStream binaryData) {
+ final TransformParameterBinaryImpl transformParameter = new TransformParameterBinaryImpl();
+ transformParameter.setURI(URI);
+ transformParameter.setBinaryContent(binaryData);
+ return transformParameter;
+ }
+
+ @Override
+ public TransformParameter createTransformParameter(String URI) {
+ final TransformParameterURIImpl transformParameter = new TransformParameterURIImpl();
+ transformParameter.setURI(URI);
+ return transformParameter;
+ }
+
+ @Override
+ public VerifyXMLSignatureResponse createVerifyXMLSignatureResponse(SignerInfo signerInfo,
+ List hashInputDatas,
+ List referenceInputDatas, ReferencesCheckResult signatureCheck,
+ ReferencesCheckResult signatureManifestCheck, List xmlDsigManifestChecks, CheckResult certificateCheck,
+ List adesFormResults, ExtendedCertificateCheckResult extCheckResult, String signatureAlgorithm) {
+ final VerifyXMLSignatureResponseImpl verifyXMLSignatureResponse = new VerifyXMLSignatureResponseImpl();
+ verifyXMLSignatureResponse.setSignerInfo(signerInfo);
+ verifyXMLSignatureResponse.setHashInputDatas(hashInputDatas);
+ verifyXMLSignatureResponse.setReferenceInputDatas(referenceInputDatas);
+ verifyXMLSignatureResponse.setSignatureAlgorithm(signatureAlgorithm);
+ verifyXMLSignatureResponse.setSignatureCheck(signatureCheck);
+ verifyXMLSignatureResponse.setSignatureManifestCheck(signatureManifestCheck);
+ verifyXMLSignatureResponse.setXMLDsigManifestChecks(xmlDsigManifestChecks);
+ verifyXMLSignatureResponse.setCertificateCheck(certificateCheck);
+ verifyXMLSignatureResponse.setAdESFormResults(adesFormResults);
+ verifyXMLSignatureResponse.setExtendedCertificateCheck(extCheckResult);
+ return verifyXMLSignatureResponse;
+ }
+
+ @Override
+ public ReferencesCheckResult createReferencesCheckResult(int code, ReferencesCheckResultInfo info) {
+ final ReferencesCheckResultImpl referencesCheckResult = new ReferencesCheckResultImpl();
+ referencesCheckResult.setCode(code);
+ referencesCheckResult.setInfo(info);
+ return referencesCheckResult;
+ }
+
+ @Override
+ public ReferencesCheckResultInfo createReferencesCheckResultInfo(NodeList anyOtherInfo,
+ int[] failedReferences) {
+ final ReferencesCheckResultInfoImpl referencesCheckResultInfo = new ReferencesCheckResultInfoImpl();
+ referencesCheckResultInfo.setAnyOtherInfo(anyOtherInfo);
+ referencesCheckResultInfo.setFailedReferences(failedReferences);
+ return referencesCheckResultInfo;
+ }
+
+ @Override
+ public ManifestRefsCheckResult createManifestRefsCheckResult(int code, ManifestRefsCheckResultInfo info) {
+ final ManifestRefsCheckResultImpl manifestRefsCheckResult = new ManifestRefsCheckResultImpl();
+ manifestRefsCheckResult.setCode(code);
+ manifestRefsCheckResult.setInfo(info);
+ return manifestRefsCheckResult;
+ }
+
+ @Override
+ public ManifestRefsCheckResultInfo createManifestRefsCheckResultInfo(NodeList anyOtherInfo,
+ int[] failedReferences,
+ int referringSigReference) {
+ final ManifestRefsCheckResultInfoImpl manifestRefsCheckResultInfo = new ManifestRefsCheckResultInfoImpl();
+ manifestRefsCheckResultInfo.setAnyOtherInfo(anyOtherInfo);
+ manifestRefsCheckResultInfo.setReferringSignatureReference(referringSigReference);
+ manifestRefsCheckResultInfo.setFailedReferences(failedReferences);
+ return manifestRefsCheckResultInfo;
+ }
+
+ @Override
+ public Content createContent(InputStream binaryData, String referenceURI) {
+ final ContentBinaryImpl content = new ContentBinaryImpl();
+ content.setBinaryContent(binaryData);
+ content.setReference(referenceURI);
+ return content;
+ }
+
+ @Override
+ public Content createContent(String locationReferenceURI, String referenceURI) {
+ final ContentLocRefImpl content = new ContentLocRefImpl();
+ content.setLocationReferenceURI(locationReferenceURI);
+ content.setReference(referenceURI);
+ return content;
+ }
+
+ @Override
+ public Content createContent(String referenceURI) {
+ final ContentReferenceImpl content = new ContentReferenceImpl();
+ content.setReference(referenceURI);
+ return content;
+ }
+
+ @Override
+ public Content createContent(NodeList xmlData, String referenceURI) {
+ final ContentXMLImpl content = new ContentXMLImpl();
+ content.setXMLContent(xmlData);
+ content.setReference(referenceURI);
+ return content;
+ }
+
+ @Override
+ public XMLDataObjectAssociation createXMLDataObjectAssociation(MetaInfo metaInfo, Content xmlContent) {
+ final XMLDataObjectAssociationImpl xmlDataObjectAssociation = new XMLDataObjectAssociationImpl();
+ xmlDataObjectAssociation.setMetaInfo(metaInfo);
+ xmlDataObjectAssociation.setContent(xmlContent);
+ return xmlDataObjectAssociation;
+ }
+
+ @Override
+ public MetaInfo createMetaInfo(String mimeType, String description, NodeList otherInfo, String type) {
+ final MetaInfoImpl metaInfo = new MetaInfoImpl();
+ metaInfo.setMimeType(mimeType);
+ metaInfo.setDescription(description);
+ metaInfo.setAnyElements(otherInfo);
+ metaInfo.setType(type);
+ return metaInfo;
+ }
+
+ @Override
+ public Transform createCanonicalizationTransform(String algorithmURI) {
+ final CanonicalizationTransformImpl transform = new CanonicalizationTransformImpl(algorithmURI);
+ return transform;
+ }
+
+ @Override
+ public Transform createExclusiveCanonicalizationTransform(String algorithmURI,
+ List inclusiveNamespacePrefixes) {
+ final ExclusiveCanonicalizationTransformImpl transform = new ExclusiveCanonicalizationTransformImpl(
+ algorithmURI);
+ transform.setInclusiveNamespacePrefixes(inclusiveNamespacePrefixes);
+ return transform;
+ }
+
+ @Override
+ public Transform createBase64Transform() {
+ final Base64TransformImpl transform = new Base64TransformImpl();
+ return transform;
+ }
+
+ @Override
+ public Transform createEnvelopedSignatureTransform() {
+ final EnvelopedSignatureTransformImpl transform = new EnvelopedSignatureTransformImpl();
+ return transform;
+ }
+
+ @Override
+ public Transform createXSLTTransform(Element styleSheet) {
+ final XSLTransformImpl transform = new XSLTransformImpl();
+ transform.setStylesheet(styleSheet);
+ return transform;
+ }
+
+ @Override
+ public Transform createXPathTransform(String xPathExpression, Map namespaceDeclarations) {
+ final XPathTransformImpl transform = new XPathTransformImpl();
+ transform.setXPathExpression(xPathExpression);
+ transform.setNamespaceDelcarations(namespaceDeclarations);
+ return transform;
+ }
+
+ @Override
+ public Transform createXPathFilter2Transform(List xPathFilters) {
+ final XPathFilter2TransformImpl transform = new XPathFilter2TransformImpl();
+ transform.setFilters(xPathFilters);
+ return transform;
+ }
+
+ @Override
+ public XPathFilter createXPathFilter(String filterType, String xPathExpression, Map namespaceDeclarations) {
+ final XPathFilterImpl xPathFilter = new XPathFilterImpl();
+ xPathFilter.setFilterType(filterType);
+ xPathFilter.setXPathExpression(xPathExpression);
+ xPathFilter.setNamespaceDelcarations(namespaceDeclarations);
+ return xPathFilter;
+ }
+
+ @Override
+ public CheckResult createCheckResult(int code, NodeList info) {
+ final CheckResultImpl checkResult = new CheckResultImpl();
+ checkResult.setCode(code);
+ checkResult.setInfo(info);
+ return checkResult;
+ }
+
+ @Override
+ public SignerInfo createSignerInfo(X509Certificate signerCertificate, boolean qualifiedCertificate,
+ boolean qcSourceTSL, boolean publicAuthority, String publicAuthorityID, boolean sscd,
+ boolean sscdSourceTSL,
+ String issuerCountryCode, Date signingTime, TslInfos tslInfos) {
+ final SignerInfoImpl signerInfo = new SignerInfoImpl();
+ signerInfo.setSignerCertificate(signerCertificate);
+ signerInfo.setQualifiedCertificate(qualifiedCertificate);
+ signerInfo.setQCSourceTSL(qcSourceTSL);
+ signerInfo.setPublicAuthority(publicAuthority);
+ signerInfo.setPublicAuhtorityID(publicAuthorityID);
+ signerInfo.setSSCD(sscd);
+ signerInfo.setSSCDSourceTSL(sscdSourceTSL);
+ signerInfo.setIssuerCountryCode(issuerCountryCode);
+ signerInfo.setSigningTime(signingTime);
+ signerInfo.setTslInfos(tslInfos);
+ return signerInfo;
+ }
+
+ @Override
+ public X509IssuerSerial createX509IssuerSerial(String issuerName, BigInteger serialNumber) {
+ final X509IssuerSerialImpl x509IssuerSerial = new X509IssuerSerialImpl();
+ x509IssuerSerial.setX509IssuerName(issuerName);
+ x509IssuerSerial.setX509SerialNumber(serialNumber);
+ return x509IssuerSerial;
+ }
+
+ @Override
+ public VerifyXMLSignatureRequest createVerifyXMLSignatureRequest(Date dateTime,
+ VerifySignatureInfo verifySignatureInfo, List supplementProfiles,
+ SignatureManifestCheckParams signatureManifestParams, boolean returnHashInputData,
+ String trustProfileID,
+ boolean extendedValidation) {
+ final VerifyXMLSignatureRequestImpl verifyXMLSignatureRequest = new VerifyXMLSignatureRequestImpl();
+ verifyXMLSignatureRequest.setDateTime(dateTime);
+ verifyXMLSignatureRequest.setSignatureInfo(verifySignatureInfo);
+ verifyXMLSignatureRequest.setSupplementProfiles(supplementProfiles);
+ verifyXMLSignatureRequest.setSignatureManifestCheckParams(signatureManifestParams);
+ verifyXMLSignatureRequest.setReturnHashInputData(returnHashInputData);
+ verifyXMLSignatureRequest.setTrustProfileId(trustProfileID);
+ verifyXMLSignatureRequest.setExtendedValidation(extendedValidation);
+ return verifyXMLSignatureRequest;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java
index 4b50d89..1fc3cdc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureEnvironmentResponseImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.Element;
@@ -30,34 +29,36 @@ import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse;
/**
* Default implementation of <code>SignatureEnvironmentResponse</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class SignatureEnvironmentResponseImpl
- implements SignatureEnvironmentResponse {
+ implements SignatureEnvironmentResponse {
/** The signature environment containing the XML signature. */
private Element signatureEnvironment;
- /**
+ /**
* Sets the XML structure which contains the signature.
- *
+ *
* @param signatureEnvironment A general XML structure containing the signature.
*/
public void setSignatureEnvironment(Element signatureEnvironment) {
this.signatureEnvironment = signatureEnvironment;
}
+ @Override
public Element getSignatureEnvironment() {
return signatureEnvironment;
}
/**
* Gets the type of <code>CreateXMLSignatureResponseElement</code>.
- *
+ *
* @return SIGNATURE_ENVIRONMENT_RESPONSE
*/
+ @Override
public int getResponseType() {
return SIGNATURE_ENVIRONMENT_RESPONSE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java
index 40e87e7..4d4fb64 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignatureManifestCheckParamsImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,12 +31,12 @@ import at.gv.egovernment.moa.spss.api.xmlverify.SignatureManifestCheckParams;
/**
* Default implementation of <code>SignatureManifestCheckParams</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class SignatureManifestCheckParamsImpl
- implements SignatureManifestCheckParams {
+ implements SignatureManifestCheckParams {
/** Referential information. */
private List referenceInfos;
@@ -46,29 +45,31 @@ public class SignatureManifestCheckParamsImpl
/**
* Sets the referantial information.
- *
+ *
* @param referenceInfos The referential information.
*/
public void setReferenceInfos(List referenceInfos) {
this.referenceInfos =
- referenceInfos != null
- ? Collections.unmodifiableList(new ArrayList(referenceInfos))
- : null;
+ referenceInfos != null
+ ? Collections.unmodifiableList(new ArrayList(referenceInfos))
+ : null;
}
+ @Override
public List getReferenceInfos() {
return referenceInfos;
}
-
+
/**
* Sets whether to return signature source data.
- *
+ *
* @param returnReferenceInputData Whether to return signature source data.
*/
public void setReturnReferenceInputData(boolean returnReferenceInputData) {
this.returnReferenceInputData = returnReferenceInputData;
}
+ @Override
public boolean getReturnReferenceInputData() {
return returnReferenceInputData;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java
index 57a60a6..988ae00 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SignerInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.security.cert.X509Certificate;
@@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos;
/**
* Default implementation of <code>SignerInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -40,145 +39,161 @@ public class SignerInfoImpl implements SignerInfo {
/** The signer certificate. */
private X509Certificate signerCertificate;
- /** Determines, whether <code>signerCertificate</code> is a qualified
- * certificate. */
+ /**
+ * Determines, whether <code>signerCertificate</code> is a qualified
+ * certificate.
+ */
private boolean qualifiedCertificate;
- /** Determines, whether <code>signerCertificate</code> is from a public
- * authority. */
+ /**
+ * Determines, whether <code>signerCertificate</code> is from a public
+ * authority.
+ */
private boolean publicAuthority;
/** The public authority ID of the <code>signerCertificate</code>. */
private String publicAuthorityID;
/** Determines, whether the signature is based on an SSCD */
private boolean sscd;
-
+
/** Determines, if the SSCD check bases upon on TSL */
private boolean sscdSourceTSL;
-
+
/** Determines, if the QC check bases upon on TSL */
private boolean qcSourceTSL;
-
+
/** The certificate issuer country code */
private String issuerCountryCode;
- private Date signingTime;
- private TslInfos tslInfos;
+ private Date signingTime;
+ private TslInfos tslInfos;
/**
- * Sets the signer certificate.
- *
- * @param signerCertificate The signer certificate.
- */
+ * Sets the signer certificate.
+ *
+ * @param signerCertificate The signer certificate.
+ */
public void setSignerCertificate(X509Certificate signerCertificate) {
this.signerCertificate = signerCertificate;
}
+ @Override
public X509Certificate getSignerCertificate() {
return signerCertificate;
}
/**
* Sets, whether the certificate contained in this object is qualified or not.
- *
- * @param qualifiedCertificate Is <code>true</code>, if the certificate is
- * qualified, otherwise <code>false</code>.
+ *
+ * @param qualifiedCertificate Is <code>true</code>, if the certificate is
+ * qualified, otherwise <code>false</code>.
*/
public void setQualifiedCertificate(boolean qualifiedCertificate) {
this.qualifiedCertificate = qualifiedCertificate;
}
+ @Override
public boolean isQualifiedCertificate() {
return qualifiedCertificate;
}
/**
* Sets, whether the signature is based on an SSCS or not.
- *
- * @param sscd Is <code>true</code>, if the signature is
- * based on an SSCD, otherwise <code>false</code>.
+ *
+ * @param sscd Is <code>true</code>, if the signature is based on an SSCD,
+ * otherwise <code>false</code>.
*/
public void setSSCD(boolean sscd) {
this.sscd = sscd;
}
+
+ @Override
public boolean isSSCD() {
- return sscd;
+ return sscd;
}
-
+
public void setSSCDSourceTSL(boolean sscdSourceTSL) {
- this.sscdSourceTSL = sscdSourceTSL;
+ this.sscdSourceTSL = sscdSourceTSL;
}
-
+
+ @Override
public String getSSCDSource() {
- if (sscdSourceTSL)
- return "TSL";
- else
- return "Certificate";
+ if (sscdSourceTSL) {
+ return "TSL";
+ } else {
+ return "Certificate";
+ }
}
- public Date getSigningTime() {
- return signingTime;
- }
+ @Override
+ public Date getSigningTime() {
+ return signingTime;
+ }
- public void setSigningTime(Date signingTime) {
- this.signingTime = signingTime;
- }
+ public void setSigningTime(Date signingTime) {
+ this.signingTime = signingTime;
+ }
- public void setQCSourceTSL(boolean qcSourceTSL) {
- this.qcSourceTSL = qcSourceTSL;
+ public void setQCSourceTSL(boolean qcSourceTSL) {
+ this.qcSourceTSL = qcSourceTSL;
}
-
+
+ @Override
public String getQCSource() {
- if (this.qcSourceTSL)
- return "TSL";
- else
- return "Certificate";
+ if (this.qcSourceTSL) {
+ return "TSL";
+ } else {
+ return "Certificate";
+ }
}
-
+
public void setIssuerCountryCode(String issuerCountryCode) {
- this.issuerCountryCode = issuerCountryCode;
+ this.issuerCountryCode = issuerCountryCode;
}
- public String getIssuerCountryCode() {
- return issuerCountryCode;
- }
-
+
+ @Override
+ public String getIssuerCountryCode() {
+ return issuerCountryCode;
+ }
+
/**
- * Sets, whether the certificate contained in this object is an
- * e-government certificate or not.
- *
- * @param publicAuthority Is <code>true</code>, if the certificate is
- * public authority certificate, otherwise <code>false</code>.
+ * Sets, whether the certificate contained in this object is an e-government
+ * certificate or not.
+ *
+ * @param publicAuthority Is <code>true</code>, if the certificate is public
+ * authority certificate, otherwise <code>false</code>.
*/
public void setPublicAuthority(boolean publicAuthority) {
this.publicAuthority = publicAuthority;
}
+ @Override
public boolean isPublicAuthority() {
return publicAuthority;
}
/**
* Sets the public authority ID of the signer certificate.
- *
+ *
* @param publicAuhtorityID The public authority ID of the signer certificate.
*/
public void setPublicAuhtorityID(String publicAuhtorityID) {
this.publicAuthorityID = publicAuhtorityID;
}
+ @Override
public String getPublicAuhtorityID() {
return publicAuthorityID;
}
@Override
public TslInfos getTslInfos() {
- return this.tslInfos;
-
- }
+ return this.tslInfos;
+ }
public void setTslInfos(TslInfos tslInfos) {
- this.tslInfos = tslInfos;
-
+ this.tslInfos = tslInfos;
+
}
-
- }
+
+}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
index c8558dc..bbe3ea5 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoCMSImpl.java
@@ -21,13 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
import at.gv.egovernment.moa.spss.api.cmssign.DataObjectInfo;
import at.gv.egovernment.moa.spss.api.cmssign.SingleSignatureInfo;
@@ -38,7 +33,6 @@ public class SingleSignatureInfoCMSImpl implements SingleSignatureInfo {
private DataObjectInfo dataObjectInfo = null;
-
private boolean securityLayerConform = true;
private boolean padesConform = false;
@@ -46,22 +40,25 @@ public class SingleSignatureInfoCMSImpl implements SingleSignatureInfo {
this.dataObjectInfo = dataObjectInfo;
}
+ @Override
public DataObjectInfo getDataObjectInfo() {
return dataObjectInfo;
}
+ @Override
public boolean isPAdESConform() {
- return padesConform;
+ return padesConform;
}
public void setPAdESConform(boolean padesConform) {
- this.padesConform = padesConform;
+ this.padesConform = padesConform;
}
-public void setSecurityLayerConform(boolean securityLayerConform) {
+ public void setSecurityLayerConform(boolean securityLayerConform) {
this.securityLayerConform = securityLayerConform;
}
+ @Override
public boolean isSecurityLayerConform() {
return securityLayerConform;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java
index 3d43068..1fc20a0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SingleSignatureInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -45,11 +44,12 @@ public class SingleSignatureInfoImpl implements SingleSignatureInfo {
public void setDataObjectInfos(List dataObjectInfos) {
this.dataObjectInfos =
- dataObjectInfos != null
- ? Collections.unmodifiableList(new ArrayList(dataObjectInfos))
- : null;
+ dataObjectInfos != null
+ ? Collections.unmodifiableList(new ArrayList(dataObjectInfos))
+ : null;
}
+ @Override
public List getDataObjectInfos() {
return dataObjectInfos;
}
@@ -58,6 +58,7 @@ public class SingleSignatureInfoImpl implements SingleSignatureInfo {
this.createSignatureInfo = createSignatureInfo;
}
+ @Override
public CreateSignatureInfo getCreateSignatureInfo() {
return createSignatureInfo;
}
@@ -66,6 +67,7 @@ public class SingleSignatureInfoImpl implements SingleSignatureInfo {
this.securityLayerConform = securityLayerConform;
}
+ @Override
public boolean isSecurityLayerConform() {
return securityLayerConform;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java
index 7f80388..82a1a0d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileExplicitImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
@@ -29,7 +28,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfileExplicit;
/**
* Default implementation of <code>SupplementProfileExplicit</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -40,22 +39,24 @@ public class SupplementProfileExplicitImpl implements SupplementProfileExplicit
/**
* Sets the supplemental information for verifying a signature.
- *
+ *
* @param supplement The supplemental information for verifying a signature.
*/
public void setSupplementProfile(XMLDataObjectAssociation supplement) {
this.supplement = supplement;
}
-
+
+ @Override
public XMLDataObjectAssociation getSupplementProfile() {
return supplement;
}
/**
* Gets the type of <code>SupplementProfile</code>.
- *
+ *
* @return EXPLICIT_SUPPLEMENTPROFILE
*/
+ @Override
public int getSupplementProfileType() {
return EXPLICIT_SUPPLEMENTPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java
index e73ce60..7e64c93 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/SupplementProfileIDImpl.java
@@ -21,39 +21,40 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.SupplementProfileID;
/**
* Default implementation of <code>SupplementProfileID</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class SupplementProfileIDImpl implements SupplementProfileID {
/** The profile ID. */
private String profileID;
-
+
/**
* Sets the <code>SupplementProfile</code> profile ID.
- *
+ *
* @param profileID The profile ID.
*/
public void setSupplementProfileID(String profileID) {
this.profileID = profileID;
}
+ @Override
public String getSupplementProfileID() {
return profileID;
}
/**
* Gets the type of <code>SupplementProfile</code>.
- *
+ *
* @return ID_SUPPLEMENTPROFILE
*/
+ @Override
public int getSupplementProfileType() {
return ID_SUPPLEMENTPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java
index 6fa813f..cf3bfc7 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TSLConfigurationImpl.java
@@ -21,99 +21,101 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
-import iaik.xml.crypto.utils.URI;
-
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import at.gv.egovernment.moa.spss.api.common.TSLConfiguration;
+import iaik.xml.crypto.utils.URI;
/**
* Default implementation of <code>TSLConfiguration</code>.
- *
+ *
* @author kstranacher
*/
public class TSLConfigurationImpl implements TSLConfiguration {
-
-
- /** The EU TSL URL. */
- private String euTSLUrl;
-
- /** update period in milliseconds */
- private long updateSchedulePeriod;
-
- /** Time of the first update */
- private Date updateScheduleStartTime;
-
- /** Working directory */
- private String workingDirectory;
-
- /** Working directory */
- private URI workingDirectoryAsURI;
-
- private List<java.net.URI> qualifierForQC = new ArrayList<java.net.URI>();
- private List<java.net.URI> qualifierForSSCD = new ArrayList<java.net.URI>();
-
+ /** The EU TSL URL. */
+ private String euTSLUrl;
+
+ /** update period in milliseconds */
+ private long updateSchedulePeriod;
+
+ /** Time of the first update */
+ private Date updateScheduleStartTime;
+
+ /** Working directory */
+ private String workingDirectory;
+
+ /** Working directory */
+ private URI workingDirectoryAsURI;
+
+ private final List<java.net.URI> qualifierForQC = new ArrayList<>();
+ private final List<java.net.URI> qualifierForSSCD = new ArrayList<>();
+
+ @Override
public String getEuTSLUrl() {
- return this.euTSLUrl;
+ return this.euTSLUrl;
}
+ @Override
public long getUpdateSchedulePeriod() {
- return this.updateSchedulePeriod;
+ return this.updateSchedulePeriod;
}
+ @Override
public Date getUpdateScheduleStartTime() {
- return this.updateScheduleStartTime;
+ return this.updateScheduleStartTime;
}
+ @Override
public String getWorkingDirectory() {
- return this.workingDirectory;
+ return this.workingDirectory;
}
-
+
+ @Override
public URI getWorkingDirectoryAsURI() {
- return this.workingDirectoryAsURI;
+ return this.workingDirectoryAsURI;
}
- public void setEuTSLUrl(String euTSLUrl) {
- this.euTSLUrl = euTSLUrl;
- }
-
- public void setUpdateSchedulePeriod(long updateSchedulePeriod) {
- this.updateSchedulePeriod = updateSchedulePeriod;
- }
-
- public void setUpdateScheduleStartTime(Date updateScheduleStartTime) {
- this.updateScheduleStartTime = updateScheduleStartTime;
- }
-
- public void setWorkingDirectory(String workingDirectory) {
- this.workingDirectory = workingDirectory;
- }
-
- public void setWorkingDirectoryURI(URI workingDirectoryAsURI) {
- this.workingDirectoryAsURI = workingDirectoryAsURI;
- }
-
- public List<java.net.URI> getQualifierForQC() {
- return qualifierForQC;
- }
-
- public List<java.net.URI> getQualifierForSSCD() {
- return qualifierForSSCD;
- }
-
- public void addQualifierForQC(java.net.URI qualifier) {
- qualifierForQC.add(qualifier);
- }
-
- public void addQualifierForSSCD(java.net.URI qualifier) {
- qualifierForSSCD.add(qualifier);
- }
-
+ public void setEuTSLUrl(String euTSLUrl) {
+ this.euTSLUrl = euTSLUrl;
+ }
+
+ public void setUpdateSchedulePeriod(long updateSchedulePeriod) {
+ this.updateSchedulePeriod = updateSchedulePeriod;
+ }
+
+ public void setUpdateScheduleStartTime(Date updateScheduleStartTime) {
+ this.updateScheduleStartTime = updateScheduleStartTime;
+ }
+
+ public void setWorkingDirectory(String workingDirectory) {
+ this.workingDirectory = workingDirectory;
+ }
+
+ public void setWorkingDirectoryURI(URI workingDirectoryAsURI) {
+ this.workingDirectoryAsURI = workingDirectoryAsURI;
+ }
+
+ @Override
+ public List<java.net.URI> getQualifierForQC() {
+ return qualifierForQC;
+ }
+
+ @Override
+ public List<java.net.URI> getQualifierForSSCD() {
+ return qualifierForSSCD;
+ }
+
+ public void addQualifierForQC(java.net.URI qualifier) {
+ qualifierForQC.add(qualifier);
+ }
+
+ public void addQualifierForSSCD(java.net.URI qualifier) {
+ qualifierForSSCD.add(qualifier);
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java
index 37a05f9..c72a445 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.Transform;
@@ -36,13 +35,14 @@ public class TransformImpl implements Transform {
/**
* Sets the URI identifying the transformation algorithm.
- *
+ *
* @param algorithmURI The URI identifying the transformation algorithm.
*/
public void setAlgorithmURI(String algorithmURI) {
this.algorithmURI = algorithmURI;
}
+ @Override
public String getAlgorithmURI() {
return algorithmURI;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java
index 691f3a9..915aff3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterBinaryImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.io.InputStream;
@@ -30,35 +29,37 @@ import at.gv.egovernment.moa.spss.api.xmlverify.TransformParameterBinary;
/**
* Default implementation of <code>TransformParameterBinary</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class TransformParameterBinaryImpl
- extends TransformParameterImpl
- implements TransformParameterBinary {
-
+ extends TransformParameterImpl
+ implements TransformParameterBinary {
+
/** The binary content as a stream. */
private InputStream binaryContent;
/**
* Sets the binary content as a stream.
- *
+ *
* @param binaryContent The binary content as a stream.
*/
public void setBinaryContent(InputStream binaryContent) {
this.binaryContent = binaryContent;
}
+ @Override
public InputStream getBinaryContent() {
return binaryContent;
}
/**
* Gets the <code>TransformParameter</code> type.
- *
+ *
* @return BINARY_TRANSFORMPARAMETER
*/
+ @Override
public int getTransformParameterType() {
return BINARY_TRANSFORMPARAMETER;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java
index 1399c6e..1837d0f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterImpl.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
/**
* Default base implementation of <code>TransformParameter</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -36,6 +35,7 @@ public abstract class TransformParameterImpl {
/**
* Sets the URI identifying the <code>TransformParameter</code>.
+ *
* @param uri The URI identifying the <code>TransformParameter</code>.
*/
public void setURI(String uri) {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java
index 77810be..2671623 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformParameterURIImpl.java
@@ -21,26 +21,26 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.TransformParameterURI;
/**
* Default implementation of <code>TransformParameterURI</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class TransformParameterURIImpl
- extends TransformParameterImpl
- implements TransformParameterURI {
+ extends TransformParameterImpl
+ implements TransformParameterURI {
/**
* Gets the type of <code>TransformParameter</code>.
- *
+ *
* @return URI_TRANSFORMPARAMETER
*/
+ @Override
public int getTransformParameterType() {
return URI_TRANSFORMPARAMETER;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java
index 7fcd72c..79fd640 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TransformPatameterHashImpl.java
@@ -21,20 +21,19 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.TransformParameterHash;
/**
* Default implementation of <code>TransformParameterHash</code>
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class TransformPatameterHashImpl
- extends TransformParameterImpl
- implements TransformParameterHash {
+ extends TransformParameterImpl
+ implements TransformParameterHash {
/** The method used to calculate the digest value. */
private String digestMethod;
@@ -43,34 +42,38 @@ public class TransformPatameterHashImpl
/**
* Sets method used to calculate the digest value.
+ *
* @param digestMethod The method used to calculate the digest value.
*/
public void setDigestMethod(String digestMethod) {
this.digestMethod = digestMethod;
}
+ @Override
public String getDigestMethod() {
return digestMethod;
}
/**
* Sets the digest value.
- *
+ *
* @param digestValue The digest value.
*/
public void setDigestValue(byte[] digestValue) {
this.digestValue = digestValue;
}
-
+
+ @Override
public byte[] getDigestValue() {
return digestValue;
}
/**
* Gets the type of <code>TransformParameter</code>.
- *
+ *
* @return HASH_TRANSFORMPARAMETER
*/
+ @Override
public int getTransformParameterType() {
return HASH_TRANSFORMPARAMETER;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java
index fad42e6..26905c2 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/TslInfosImpl.java
@@ -8,55 +8,55 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos;
public class TslInfosImpl implements TslInfos {
- private String tslServiceTypeIdentifier;
- private String tslServiceTypeStatus;
- private List<String> tslServiceQualifier = new ArrayList<String>();
- private List<String> tslAdditionalServiceInformation = new ArrayList<String>();
- private String tslCountry;
-
- public TslInfosImpl(String country, String tslServiceTypeStatus, String tslServiceTypeIdentifier,
- List<URI> tslCertificateQualifier, List<String> additionalServiceInformation) {
- this.tslCountry = country;
- this.tslServiceTypeStatus = tslServiceTypeStatus;
- this.tslServiceTypeIdentifier = tslServiceTypeIdentifier;
-
- if (tslCertificateQualifier != null) {
- for (URI el : tslCertificateQualifier)
- this.tslServiceQualifier.add(el.toString());
-
- }
-
- if (additionalServiceInformation != null)
- this.tslAdditionalServiceInformation.addAll(additionalServiceInformation);
-
- }
-
-
- @Override
- public String getTslIssuerCountry() {
- return tslCountry;
- }
-
- @Override
- public String getServiceTypeStatus() {
- return tslServiceTypeStatus;
- }
-
- @Override
- public String getServiceTypeIdentifier() {
- return tslServiceTypeIdentifier;
- }
-
- @Override
- public List<String> getQualifiers() {
- return tslServiceQualifier;
- }
-
-
- @Override
- public List<String> getAdditionalServiceInformation() {
- return this.tslAdditionalServiceInformation;
-
- }
+ private final String tslServiceTypeIdentifier;
+ private final String tslServiceTypeStatus;
+ private final List<String> tslServiceQualifier = new ArrayList<>();
+ private final List<String> tslAdditionalServiceInformation = new ArrayList<>();
+ private final String tslCountry;
+
+ public TslInfosImpl(String country, String tslServiceTypeStatus, String tslServiceTypeIdentifier,
+ List<URI> tslCertificateQualifier, List<String> additionalServiceInformation) {
+ this.tslCountry = country;
+ this.tslServiceTypeStatus = tslServiceTypeStatus;
+ this.tslServiceTypeIdentifier = tslServiceTypeIdentifier;
+
+ if (tslCertificateQualifier != null) {
+ for (final URI el : tslCertificateQualifier) {
+ this.tslServiceQualifier.add(el.toString());
+ }
+
+ }
+
+ if (additionalServiceInformation != null) {
+ this.tslAdditionalServiceInformation.addAll(additionalServiceInformation);
+ }
+
+ }
+
+ @Override
+ public String getTslIssuerCountry() {
+ return tslCountry;
+ }
+
+ @Override
+ public String getServiceTypeStatus() {
+ return tslServiceTypeStatus;
+ }
+
+ @Override
+ public String getServiceTypeIdentifier() {
+ return tslServiceTypeIdentifier;
+ }
+
+ @Override
+ public List<String> getQualifiers() {
+ return tslServiceQualifier;
+ }
+
+ @Override
+ public List<String> getAdditionalServiceInformation() {
+ return this.tslAdditionalServiceInformation;
+
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java
index e16717d..f041835 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureRequestImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.io.InputStream;
@@ -32,12 +31,12 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
/**
* Default implementation of <code>VerifyCMSSignatureRequest</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class VerifyCMSSignatureRequestImpl
- implements VerifyCMSSignatureRequest {
+ implements VerifyCMSSignatureRequest {
/** The indexes of the signatories whose signature should be verified. */
private int[] signatories;
@@ -49,39 +48,42 @@ public class VerifyCMSSignatureRequestImpl
private InputStream cmsSignature;
/** The date for which to verify the signature. */
private Date dateTime;
-
+
private boolean pdf = false;
private boolean extended = false;
/**
* Sets the indexes of the signatories whose signature should be verified.
- *
- * @param signatories The indexes of the signatories whose signature should be
- * verified.
+ *
+ * @param signatories The indexes of the signatories whose signature should be
+ * verified.
*/
public void setSignatories(int[] signatories) {
this.signatories = signatories;
}
+ @Override
public int[] getSignatories() {
return signatories;
}
/**
* Sets the date for which to verify the signature.
- *
+ *
* @param dateTime The date for which to verify the signature.
*/
public void setDateTime(Date dateTime) {
this.dateTime = dateTime;
}
+ @Override
public Date getDateTime() {
return dateTime;
}
/**
* Sets the CMS signature to verify.
+ *
* @param signature The CMS signature to verify.
*/
public void setCMSSignature(InputStream signature) {
@@ -89,48 +91,55 @@ public class VerifyCMSSignatureRequestImpl
}
+ @Override
public InputStream getCMSSignature() {
return cmsSignature;
}
/**
* Sets the data object necessary for signature verification.
+ *
* @param dataObject The data object necessary for signature verification.
*/
public void setDataObject(CMSDataObject dataObject) {
this.dataObject = dataObject;
}
+ @Override
public CMSDataObject getDataObject() {
return dataObject;
}
/**
* Sets the profile ID of trusted certificates.
+ *
* @param trustProfileId The profile ID of trusted certificates.
*/
public void setTrustProfileId(String trustProfileId) {
this.trustProfileId = trustProfileId;
}
+ @Override
public String getTrustProfileId() {
return trustProfileId;
}
public void setPDF(boolean value) {
- this.pdf = value;
+ this.pdf = value;
}
-
+
+ @Override
public boolean isPDF() {
- return this.pdf;
+ return this.pdf;
}
-public synchronized boolean isExtended() {
- return extended;
-}
+ @Override
+ public synchronized boolean isExtended() {
+ return extended;
+ }
-public synchronized void setExtended(boolean extended) {
- this.extended = extended;
-}
+ public synchronized void setExtended(boolean extended) {
+ this.extended = extended;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java
index 3ea504b..f9e8e4d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSignatureResponseElementImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.List;
@@ -33,12 +32,12 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo;
/**
* Default implementation of <code>VerifyCMSSignatureResponseElement</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class VerifyCMSSignatureResponseElementImpl
- implements VerifyCMSSignatureResponseElement {
+ implements VerifyCMSSignatureResponseElement {
/** Information about the signer certificate. */
private SignerInfo signerInfo;
@@ -46,101 +45,102 @@ public class VerifyCMSSignatureResponseElementImpl
private CheckResult signatureCheck;
/** Information about the certificate check. */
private CheckResult certificateCheck;
-
+
private ExtendedCertificateCheckResult extendedResult;
-
+
private List adesResults = null;
-
+
private String usedAlgorithm = null;
-
+
private Boolean coversFullDocument = null;
-
+
private int[] byteRangeOfSignature = null;
-
+
/**
* Sets a SignerInfo element according to CMS.
- *
+ *
* @param signerInfo The SignerInfo element according to CMS.
*/
public void setSignerInfo(SignerInfo signerInfo) {
this.signerInfo = signerInfo;
}
+ @Override
public SignerInfo getSignerInfo() {
return signerInfo;
}
/**
* Sets a result of the signature verification.
- *
+ *
* @param signatureCheck The result of the signature verification.
*/
public void setSignatureCheck(CheckResult signatureCheck) {
this.signatureCheck = signatureCheck;
}
+ @Override
public CheckResult getSignatureCheck() {
return signatureCheck;
}
/**
* Sets a result of the certificate verification.
- *
+ *
* @param certificateCheck The result of the certificate verification.
*/
public void setCertificateCheck(CheckResult certificateCheck) {
this.certificateCheck = certificateCheck;
}
+ @Override
public CheckResult getCertificateCheck() {
return certificateCheck;
}
public void setAdESFormResults(List adesResults) {
- this.adesResults = adesResults;
+ this.adesResults = adesResults;
}
-
+
+ @Override
public List getAdESFormResults() {
- return adesResults;
+ return adesResults;
}
public void setExtendedCertificateCheck(ExtendedCertificateCheckResult r) {
- this.extendedResult = r;
- }
-
- @Override
- public ExtendedCertificateCheckResult getExtendedCertificateCheck() {
- return extendedResult;
- }
-
- @Override
- public String getSignatureAlgorithm() {
- return usedAlgorithm;
- }
-
- public void setSignatureAlgorithm(String usedAlgorithm) {
- this.usedAlgorithm = usedAlgorithm;
- }
-
- @Override
- public Boolean getCoversFullDocument() {
- return coversFullDocument;
- }
-
- public void setCoversFullDocument(Boolean coversFullDocument) {
- this.coversFullDocument = coversFullDocument;
- }
-
- @Override
- public int[] getByteRangeOfSignature() {
- return byteRangeOfSignature;
- }
-
- public void setByteRangeOfSignature(int[] byteRangeOfSignature) {
- this.byteRangeOfSignature = byteRangeOfSignature;
- }
-
-
-
-
+ this.extendedResult = r;
+ }
+
+ @Override
+ public ExtendedCertificateCheckResult getExtendedCertificateCheck() {
+ return extendedResult;
+ }
+
+ @Override
+ public String getSignatureAlgorithm() {
+ return usedAlgorithm;
+ }
+
+ public void setSignatureAlgorithm(String usedAlgorithm) {
+ this.usedAlgorithm = usedAlgorithm;
+ }
+
+ @Override
+ public Boolean getCoversFullDocument() {
+ return coversFullDocument;
+ }
+
+ public void setCoversFullDocument(Boolean coversFullDocument) {
+ this.coversFullDocument = coversFullDocument;
+ }
+
+ @Override
+ public int[] getByteRangeOfSignature() {
+ return byteRangeOfSignature;
+ }
+
+ public void setByteRangeOfSignature(int[] byteRangeOfSignature) {
+ this.byteRangeOfSignature = byteRangeOfSignature;
+ }
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java
index 44fb474..c7fd29f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyCMSSinatureResponseImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,28 +31,29 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
/**
* Default implementation of <code>VerifyCMSSignatureResponse</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class VerifyCMSSinatureResponseImpl
- implements VerifyCMSSignatureResponse {
+ implements VerifyCMSSignatureResponse {
/** The elements contained in the response. */
private List responseElements;
/**
* Sets the elements contained in the response.
- *
+ *
* @param responseElements The elements contained in the response.
*/
public void setResponseElements(List responseElements) {
this.responseElements =
- responseElements != null
- ? Collections.unmodifiableList(new ArrayList(responseElements))
- : null;
+ responseElements != null
+ ? Collections.unmodifiableList(new ArrayList(responseElements))
+ : null;
}
+ @Override
public List getResponseElements() {
return responseElements;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java
index d022ae4..f8ab10d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureInfoImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.Content;
@@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
/**
* Default implementation of <code>VerifySignatureInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -42,28 +41,29 @@ public class VerifySignatureInfoImpl implements VerifySignatureInfo {
/**
* Sets the location of the signature to be verified.
- *
- * @param verifySignatureLocation The location of the signature to be
- * verified.
+ *
+ * @param verifySignatureLocation The location of the signature to be verified.
*/
public void setVerifySignatureLocation(VerifySignatureLocation verifySignatureLocation) {
this.verifySignatureLocation = verifySignatureLocation;
}
+ @Override
public VerifySignatureLocation getVerifySignatureLocation() {
return verifySignatureLocation;
}
/**
* Sets the signature environment containing the signature to be verified.
- *
- * @param verifySignatureEnvironment The signature environment containing the
- * signature to be verified.
+ *
+ * @param verifySignatureEnvironment The signature environment containing the
+ * signature to be verified.
*/
public void setVerifySignatureEnvironment(Content verifySignatureEnvironment) {
this.verifySignatureEnvironment = verifySignatureEnvironment;
}
+ @Override
public Content getVerifySignatureEnvironment() {
return verifySignatureEnvironment;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java
index 8e183bb..7f3b381 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifySignatureLocationImpl.java
@@ -21,19 +21,18 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifySignatureLocation;
/**
* Default implementation of <code>VerifySignatureLocation</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class VerifySignatureLocationImpl
- extends ElementSelectorImpl
- implements VerifySignatureLocation {
+ extends ElementSelectorImpl
+ implements VerifySignatureLocation {
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java
index 25b5c39..d1eebca 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsDataImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,7 +31,7 @@ import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo;
/**
* Default implementation of <codeReferenceInfo</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -42,18 +41,19 @@ public class VerifyTransformsDataImpl implements ReferenceInfo {
/**
* Sets the information about the transformations contained in the signature.
- *
+ *
* @param verifyTransformsInfoProfiles The profiles containing transformation
- * information.
+ * information.
*/
public void setVerifyTransformsInfoProfiles(List verifyTransformsInfoProfiles) {
this.verifyTransformsInfoProfiles =
- verifyTransformsInfoProfiles != null
- ? Collections.unmodifiableList(
- new ArrayList(verifyTransformsInfoProfiles))
- : null;
+ verifyTransformsInfoProfiles != null
+ ? Collections.unmodifiableList(
+ new ArrayList(verifyTransformsInfoProfiles))
+ : null;
}
+ @Override
public List getVerifyTransformsInfoProfiles() {
return verifyTransformsInfoProfiles;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java
index 2ce5f39..0e1e46e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileExplicitImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -32,12 +31,12 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfileExpli
/**
* Default implementation of <code>VerifyTransformsInfoProfileExplicit</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class VerifyTransformsInfoProfileExplicitImpl
- implements VerifyTransformsInfoProfileExplicit {
+ implements VerifyTransformsInfoProfileExplicit {
/** The transforms contained in this profile. */
private List transforms;
@@ -46,38 +45,41 @@ public class VerifyTransformsInfoProfileExplicitImpl
/**
* Sets the transforms contained in this profile.
- *
+ *
* @param transforms The transforms contained in this profile.
*/
public void setTransforms(List transforms) {
this.transforms =
- transforms != null
- ? Collections.unmodifiableList(new ArrayList(transforms))
- : null;
+ transforms != null
+ ? Collections.unmodifiableList(new ArrayList(transforms))
+ : null;
}
+ @Override
public List getTransforms() {
return transforms;
}
/**
* Sets additional information for the transforms.
- *
+ *
* @param transformParameters Additional information for the transforms.
*/
public void setTransformParameters(List transformParameters) {
this.transformParameters = new ArrayList(transformParameters);
}
+ @Override
public List getTransformParameters() {
return transformParameters;
}
/**
* Gets the type of <code>VerifyTransformsInfoProfile</code>.
- *
+ *
* @return EXPLICIT_VERIFYTRANSFORMSINFOPROFILE
*/
+ @Override
public int getVerifyTransformsInfoProfileType() {
return EXPLICIT_VERIFYTRANSFORMSINFOPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java
index a545535..56fc9e2 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyTransformsInfoProfileIDImpl.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyTransformsInfoProfileID;
/**
* Default implementation of <code>VerifyTransformsInfoProfileID</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -39,22 +38,24 @@ public class VerifyTransformsInfoProfileIDImpl implements VerifyTransformsInfoPr
/**
* Sets the profile ID.
- *
+ *
* @param profileID The profile ID.
*/
public void setVerifyTransformsInfoProfileID(String profileID) {
this.verifyTransformsInfoProfileID = profileID;
}
+ @Override
public String getVerifyTransformsInfoProfileID() {
return verifyTransformsInfoProfileID;
}
/**
* Gets the type of <code>VerifyTransformsInfoProfile</code>.
- *
+ *
* @return ID_VERIFYTRANSFORMSINFOPROFILE
*/
+ @Override
public int getVerifyTransformsInfoProfileType() {
return ID_VERIFYTRANSFORMSINFOPROFILE;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java
index 91d1917..b5094b4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureRequestImpl.java
@@ -34,118 +34,120 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
/**
* Default implementation of <code>VerifyXMLSignatureRequest</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class VerifyXMLSignatureRequestImpl implements VerifyXMLSignatureRequest {
- /** Date and time for signature verification. */
- private Date dateTime;
- /** The signature to be verified. */
- private VerifySignatureInfo verifySignatureInfo;
- /** Supplemental information about the singature. */
- private List supplementProfiles;
- /** Additional parameters for checking the signature manifest. */
- private SignatureManifestCheckParams signatureManifestCheckParams;
- /** Whether to return the hash input data. */
- private boolean returnHashInputData;
- private boolean extendedValidation;
- /**
- * The profile ID of the trust profile containing the trusted certificates.
- */
- private String trustProfileId;
-
- /**
- * Sets the date and time for signature verification.
- *
- * @param dateTime
- * The date and time for signature verification.
- */
- public void setDateTime(Date dateTime) {
- this.dateTime = dateTime;
- }
-
- public Date getDateTime() {
- return dateTime;
- }
-
- /**
- * Sets the signature to be verified.
- *
- * @param signatureInfo
- * The signature to be verified.
- */
- public void setSignatureInfo(VerifySignatureInfo signatureInfo) {
- this.verifySignatureInfo = signatureInfo;
- }
-
- public VerifySignatureInfo getSignatureInfo() {
- return verifySignatureInfo;
- }
-
- /**
- * Sets supplemental information about the singature.
- *
- * @param supplementProfiles
- */
- public void setSupplementProfiles(List supplementProfiles) {
- this.supplementProfiles = supplementProfiles != null
- ? Collections.unmodifiableList(new ArrayList(supplementProfiles)) : null;
- }
-
- public List getSupplementProfiles() {
- return supplementProfiles;
- }
-
- /**
- * Sets supplemental information about the singature.
- *
- * @param params
- * Supplemental information about the singature.
- */
- public void setSignatureManifestCheckParams(SignatureManifestCheckParams params) {
- this.signatureManifestCheckParams = params;
- }
-
- public SignatureManifestCheckParams getSignatureManifestCheckParams() {
- return signatureManifestCheckParams;
- }
-
- /**
- * Sets whether to return hash input data.
- *
- * @param returnSignedData
- * Whether to return hash input data.
- */
- public void setReturnHashInputData(boolean returnSignedData) {
- this.returnHashInputData = returnSignedData;
- }
-
- public boolean getReturnHashInputData() {
- return returnHashInputData;
- }
-
- /**
- * Sets the profile ID of trusted certificates.
- *
- * @param trustProfileId
- * The profile ID of trusted certificates.
- */
- public void setTrustProfileId(String trustProfileId) {
- this.trustProfileId = trustProfileId;
- }
-
- public String getTrustProfileId() {
- return trustProfileId;
- }
-
- public synchronized void setExtendedValidation(boolean extendedValidation) {
- this.extendedValidation = extendedValidation;
- }
-
- @Override
- public boolean getExtendedValidaiton() {
- return extendedValidation;
- }
+ /** Date and time for signature verification. */
+ private Date dateTime;
+ /** The signature to be verified. */
+ private VerifySignatureInfo verifySignatureInfo;
+ /** Supplemental information about the singature. */
+ private List supplementProfiles;
+ /** Additional parameters for checking the signature manifest. */
+ private SignatureManifestCheckParams signatureManifestCheckParams;
+ /** Whether to return the hash input data. */
+ private boolean returnHashInputData;
+ private boolean extendedValidation;
+ /**
+ * The profile ID of the trust profile containing the trusted certificates.
+ */
+ private String trustProfileId;
+
+ /**
+ * Sets the date and time for signature verification.
+ *
+ * @param dateTime The date and time for signature verification.
+ */
+ public void setDateTime(Date dateTime) {
+ this.dateTime = dateTime;
+ }
+
+ @Override
+ public Date getDateTime() {
+ return dateTime;
+ }
+
+ /**
+ * Sets the signature to be verified.
+ *
+ * @param signatureInfo The signature to be verified.
+ */
+ public void setSignatureInfo(VerifySignatureInfo signatureInfo) {
+ this.verifySignatureInfo = signatureInfo;
+ }
+
+ @Override
+ public VerifySignatureInfo getSignatureInfo() {
+ return verifySignatureInfo;
+ }
+
+ /**
+ * Sets supplemental information about the singature.
+ *
+ * @param supplementProfiles
+ */
+ public void setSupplementProfiles(List supplementProfiles) {
+ this.supplementProfiles = supplementProfiles != null
+ ? Collections.unmodifiableList(new ArrayList(supplementProfiles))
+ : null;
+ }
+
+ @Override
+ public List getSupplementProfiles() {
+ return supplementProfiles;
+ }
+
+ /**
+ * Sets supplemental information about the singature.
+ *
+ * @param params Supplemental information about the singature.
+ */
+ public void setSignatureManifestCheckParams(SignatureManifestCheckParams params) {
+ this.signatureManifestCheckParams = params;
+ }
+
+ @Override
+ public SignatureManifestCheckParams getSignatureManifestCheckParams() {
+ return signatureManifestCheckParams;
+ }
+
+ /**
+ * Sets whether to return hash input data.
+ *
+ * @param returnSignedData Whether to return hash input data.
+ */
+ public void setReturnHashInputData(boolean returnSignedData) {
+ this.returnHashInputData = returnSignedData;
+ }
+
+ @Override
+ public boolean getReturnHashInputData() {
+ return returnHashInputData;
+ }
+
+ /**
+ * Sets the profile ID of trusted certificates.
+ *
+ * @param trustProfileId The profile ID of trusted certificates.
+ */
+ public void setTrustProfileId(String trustProfileId) {
+ this.trustProfileId = trustProfileId;
+ }
+
+ @Override
+ public String getTrustProfileId() {
+ return trustProfileId;
+ }
+
+ public synchronized void setExtendedValidation(boolean extendedValidation) {
+ this.extendedValidation = extendedValidation;
+ }
+
+ @Override
+ public boolean getExtendedValidaiton() {
+ return extendedValidation;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java
index 0047d44..85af8d4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/VerifyXMLSignatureResponseImpl.java
@@ -39,165 +39,168 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
*/
public class VerifyXMLSignatureResponseImpl implements VerifyXMLSignatureResponse {
- /** Information about the signer certificate. */
- private SignerInfo signerInfo;
-
- private ExtendedCertificateCheckResult extendedResult;
-
- /**
- * The hash input data objects. The list consists of
- * {@link at.gv.egovernment.moa.spss.api.common.InputData}s.
- */
- private List hashInputDatas = new ArrayList();
-
- /**
- * The reference input data objects. The list consists of
- * {@link at.gv.egovernment.moa.spss.api.common.InputData}s.
- */
- private List referenceInputDatas = new ArrayList();
-
- /**
- * The list of form validation results
- */
- private List adesFormResults = new ArrayList();
-
- /** Information about the signature check. */
- private ReferencesCheckResult signatureCheck;
- /** Information about the signature manifest check. */
- private ReferencesCheckResult signatureManifestCheck;
- /** Information about the XMLDsig manifest check. */
- private List xmlDsigManifestChecks = new ArrayList();
- /** Information about the certificate check. */
- private CheckResult certificateCheck;
-
- private String signatureAlgorithm = null;
-
- /**
- * Sets information about the signer certificate.
- *
- * @param signerInfo
- * Information about the signer certificate.
- */
- public void setSignerInfo(SignerInfo signerInfo) {
- this.signerInfo = signerInfo;
- }
-
- public SignerInfo getSignerInfo() {
- return signerInfo;
- }
-
- /**
- * Sets data signed by the signatory.
- *
- * @param hashInputDatas
- * The signed datas.
- */
- public void setHashInputDatas(List hashInputDatas) {
- this.hashInputDatas = hashInputDatas != null ? Collections.unmodifiableList(new ArrayList(hashInputDatas))
- : null;
- }
-
- public List getHashInputDatas() {
- return hashInputDatas;
- }
-
- /**
- * Sets the source data elements.
- *
- * @param referenceInputDatas
- * The source data elements.
- */
- public void setReferenceInputDatas(List referenceInputDatas) {
- this.referenceInputDatas = referenceInputDatas != null
- ? Collections.unmodifiableList(new ArrayList(referenceInputDatas)) : null;
- }
-
- public List getReferenceInputDatas() {
- return referenceInputDatas;
- }
-
- /**
- * Sets the result of the signature verification.
- *
- * @param signatureCheck
- * The result of the signature verification.
- */
- public void setSignatureCheck(ReferencesCheckResult signatureCheck) {
- this.signatureCheck = signatureCheck;
- }
-
- public ReferencesCheckResult getSignatureCheck() {
- return signatureCheck;
- }
-
- /**
- * Sets the result of the signature manifest verification.
- *
- * @param signatureManifestCheck
- * The result of the signature manifest verification.
- */
- public void setSignatureManifestCheck(ReferencesCheckResult signatureManifestCheck) {
- this.signatureManifestCheck = signatureManifestCheck;
- }
-
- public ReferencesCheckResult getSignatureManifestCheck() {
- return signatureManifestCheck;
- }
-
- /**
- * Sets the result of the certification verification.
- *
- * @param certificateCheck
- * The result of the certificate verification.
- */
- public void setCertificateCheck(CheckResult certificateCheck) {
- this.certificateCheck = certificateCheck;
- }
-
- public CheckResult getCertificateCheck() {
- return certificateCheck;
- }
-
- /**
- * Sets the XMLDSigManifestChecks.
- *
- * @param xmlDsigManifestChecks
- * The XMLDSigManifestChecks.
- */
- public void setXMLDsigManifestChecks(List xmlDsigManifestChecks) {
- this.xmlDsigManifestChecks = xmlDsigManifestChecks != null
- ? Collections.unmodifiableList(new ArrayList(xmlDsigManifestChecks)) : null;
- }
-
- public List getXMLDsigManifestChecks() {
- return xmlDsigManifestChecks;
- }
-
- public void setAdESFormResults(List adesFormResults) {
- this.adesFormResults = adesFormResults;
- }
-
- @Override
- public List getAdESFormResults() {
- return this.adesFormResults;
- }
-
- public void setExtendedCertificateCheck(ExtendedCertificateCheckResult r) {
- this.extendedResult = r;
- }
-
- @Override
- public ExtendedCertificateCheckResult getExtendedCertificateCheck() {
- return extendedResult;
- }
-
- public String getSignatureAlgorithm() {
- return signatureAlgorithm;
- }
-
- public void setSignatureAlgorithm(String signatureAlgorithm) {
- this.signatureAlgorithm = signatureAlgorithm;
- }
-
-
+ /** Information about the signer certificate. */
+ private SignerInfo signerInfo;
+
+ private ExtendedCertificateCheckResult extendedResult;
+
+ /**
+ * The hash input data objects. The list consists of
+ * {@link at.gv.egovernment.moa.spss.api.common.InputData}s.
+ */
+ private List hashInputDatas = new ArrayList();
+
+ /**
+ * The reference input data objects. The list consists of
+ * {@link at.gv.egovernment.moa.spss.api.common.InputData}s.
+ */
+ private List referenceInputDatas = new ArrayList();
+
+ /**
+ * The list of form validation results
+ */
+ private List adesFormResults = new ArrayList();
+
+ /** Information about the signature check. */
+ private ReferencesCheckResult signatureCheck;
+ /** Information about the signature manifest check. */
+ private ReferencesCheckResult signatureManifestCheck;
+ /** Information about the XMLDsig manifest check. */
+ private List xmlDsigManifestChecks = new ArrayList();
+ /** Information about the certificate check. */
+ private CheckResult certificateCheck;
+
+ private String signatureAlgorithm = null;
+
+ /**
+ * Sets information about the signer certificate.
+ *
+ * @param signerInfo Information about the signer certificate.
+ */
+ public void setSignerInfo(SignerInfo signerInfo) {
+ this.signerInfo = signerInfo;
+ }
+
+ @Override
+ public SignerInfo getSignerInfo() {
+ return signerInfo;
+ }
+
+ /**
+ * Sets data signed by the signatory.
+ *
+ * @param hashInputDatas The signed datas.
+ */
+ public void setHashInputDatas(List hashInputDatas) {
+ this.hashInputDatas = hashInputDatas != null ? Collections.unmodifiableList(new ArrayList(hashInputDatas))
+ : null;
+ }
+
+ @Override
+ public List getHashInputDatas() {
+ return hashInputDatas;
+ }
+
+ /**
+ * Sets the source data elements.
+ *
+ * @param referenceInputDatas The source data elements.
+ */
+ public void setReferenceInputDatas(List referenceInputDatas) {
+ this.referenceInputDatas = referenceInputDatas != null
+ ? Collections.unmodifiableList(new ArrayList(referenceInputDatas))
+ : null;
+ }
+
+ @Override
+ public List getReferenceInputDatas() {
+ return referenceInputDatas;
+ }
+
+ /**
+ * Sets the result of the signature verification.
+ *
+ * @param signatureCheck The result of the signature verification.
+ */
+ public void setSignatureCheck(ReferencesCheckResult signatureCheck) {
+ this.signatureCheck = signatureCheck;
+ }
+
+ @Override
+ public ReferencesCheckResult getSignatureCheck() {
+ return signatureCheck;
+ }
+
+ /**
+ * Sets the result of the signature manifest verification.
+ *
+ * @param signatureManifestCheck The result of the signature manifest
+ * verification.
+ */
+ public void setSignatureManifestCheck(ReferencesCheckResult signatureManifestCheck) {
+ this.signatureManifestCheck = signatureManifestCheck;
+ }
+
+ @Override
+ public ReferencesCheckResult getSignatureManifestCheck() {
+ return signatureManifestCheck;
+ }
+
+ /**
+ * Sets the result of the certification verification.
+ *
+ * @param certificateCheck The result of the certificate verification.
+ */
+ public void setCertificateCheck(CheckResult certificateCheck) {
+ this.certificateCheck = certificateCheck;
+ }
+
+ @Override
+ public CheckResult getCertificateCheck() {
+ return certificateCheck;
+ }
+
+ /**
+ * Sets the XMLDSigManifestChecks.
+ *
+ * @param xmlDsigManifestChecks The XMLDSigManifestChecks.
+ */
+ public void setXMLDsigManifestChecks(List xmlDsigManifestChecks) {
+ this.xmlDsigManifestChecks = xmlDsigManifestChecks != null
+ ? Collections.unmodifiableList(new ArrayList(xmlDsigManifestChecks))
+ : null;
+ }
+
+ @Override
+ public List getXMLDsigManifestChecks() {
+ return xmlDsigManifestChecks;
+ }
+
+ public void setAdESFormResults(List adesFormResults) {
+ this.adesFormResults = adesFormResults;
+ }
+
+ @Override
+ public List getAdESFormResults() {
+ return this.adesFormResults;
+ }
+
+ public void setExtendedCertificateCheck(ExtendedCertificateCheckResult r) {
+ this.extendedResult = r;
+ }
+
+ @Override
+ public ExtendedCertificateCheckResult getExtendedCertificateCheck() {
+ return extendedResult;
+ }
+
+ @Override
+ public String getSignatureAlgorithm() {
+ return signatureAlgorithm;
+ }
+
+ public void setSignatureAlgorithm(String signatureAlgorithm) {
+ this.signatureAlgorithm = signatureAlgorithm;
+ }
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java
index aff7e10..ac2886c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/X509IssuerSerialImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.math.BigInteger;
@@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.X509IssuerSerial;
/**
* Default implementation of <code>X509IssuerSerial</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -42,26 +41,28 @@ public class X509IssuerSerialImpl implements X509IssuerSerial {
/**
* Sets the issuer distinguished name.
- *
+ *
* @param x509IssuerName The issuer distinguished name.
*/
public void setX509IssuerName(String x509IssuerName) {
this.x509IssuerName = x509IssuerName;
}
+ @Override
public String getX509IssuerName() {
return x509IssuerName;
}
/**
* Sets the certificate serial number.
- *
+ *
* @param x509SerialNumber The issuer serial number.
*/
public void setX509SerialNumber(BigInteger x509SerialNumber) {
this.x509SerialNumber = x509SerialNumber;
}
+ @Override
public BigInteger getX509SerialNumber() {
return x509SerialNumber;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java
index dabf29d..7769e5a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XMLDataObjectAssociationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import at.gv.egovernment.moa.spss.api.common.Content;
@@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
/**
* Default implementation of <code>XMLDataObjectAssociation</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -43,25 +42,28 @@ public class XMLDataObjectAssociationImpl implements XMLDataObjectAssociation {
/**
* Sets meta information about the <code>Content</code> object.
+ *
* @param metaInfo Meta information about the <code>Content</code> object.
*/
public void setMetaInfo(MetaInfo metaInfo) {
this.metaInfo = metaInfo;
}
+ @Override
public MetaInfo getMetaInfo() {
return metaInfo;
}
/**
* Sets the actual data contained in this object.
- *
+ *
* @param content The actual data contained in this object.
*/
public void setContent(Content content) {
this.content = content;
}
+ @Override
public Content getContent() {
return content;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java
index 175de3a..9eb4df1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilter2TransformImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.ArrayList;
@@ -31,17 +30,17 @@ import at.gv.egovernment.moa.spss.api.common.XPathFilter2Transform;
/**
* Default implementation of <code>XPathFilter2Transform</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class XPathFilter2TransformImpl
- extends TransformImpl
- implements XPathFilter2Transform {
-
+ extends TransformImpl
+ implements XPathFilter2Transform {
+
/** The XPath filters. */
private List filters;
-
+
/**
* Create a new <code>XPathFilter2TransformImpl</code> object.
*/
@@ -50,16 +49,16 @@ public class XPathFilter2TransformImpl
}
/**
- * Sets the XPath filters contained in this
- * <code>XPathFilter2Transform</code>.
- *
- * @param filters The XPath filters contained in this
- * <code>XPathFilter2Transform</code>.
- */
+ * Sets the XPath filters contained in this <code>XPathFilter2Transform</code>.
+ *
+ * @param filters The XPath filters contained in this
+ * <code>XPathFilter2Transform</code>.
+ */
public void setFilters(List filters) {
this.filters = new ArrayList(filters);
}
+ @Override
public List getFilters() {
return filters;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java
index 6615e9f..800270f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathFilterImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.HashMap;
@@ -31,7 +30,7 @@ import at.gv.egovernment.moa.spss.api.common.XPathFilter;
/**
* Default implementation of <code>XPathFilter</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -40,47 +39,51 @@ public class XPathFilterImpl implements XPathFilter {
private String filterType;
/** The XPath expression of the filter. */
private String xPathExpression;
- /** The namespace prefix to URI mapping to while evaluating the XPath
- * expression. */
+ /**
+ * The namespace prefix to URI mapping to while evaluating the XPath expression.
+ */
private Map namespaceDeclarations = new HashMap();
/**
* Sets the type of filter.
- *
+ *
* @param filterType The type of filter.
*/
public void setFilterType(String filterType) {
this.filterType = filterType;
}
+ @Override
public String getFilterType() {
return filterType;
}
/**
* Sets the XPath expression of the filter.
- *
+ *
* @param xPathExpression The XPath expression of the filter.
*/
public void setXPathExpression(String xPathExpression) {
this.xPathExpression = xPathExpression;
}
+ @Override
public String getXPathExpression() {
return xPathExpression;
}
/**
- * Sets the namespace prefix to URI mapping to while evaluating the XPath
+ * Sets the namespace prefix to URI mapping to while evaluating the XPath
* expression.
- *
- * @param namespaceDeclarations The namespace prefix to URI mapping to while
- * evaluating the XPath expression.
+ *
+ * @param namespaceDeclarations The namespace prefix to URI mapping to while
+ * evaluating the XPath expression.
*/
public void setNamespaceDelcarations(Map namespaceDeclarations) {
this.namespaceDeclarations = namespaceDeclarations;
}
+ @Override
public Map getNamespaceDeclarations() {
return namespaceDeclarations;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java
index f626a95..92f7170 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XPathTransformImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import java.util.HashMap;
@@ -31,18 +30,19 @@ import at.gv.egovernment.moa.spss.api.common.XPathTransform;
/**
* Default implementation of <code>XPathTransform</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class XPathTransformImpl
- extends TransformImpl
- implements XPathTransform {
-
+ extends TransformImpl
+ implements XPathTransform {
+
/** The XPath expression to evaluate. */
private String xPathExpression;
- /** The namespace prefix to URI mapping to while evaluating the XPath
- * expression. */
+ /**
+ * The namespace prefix to URI mapping to while evaluating the XPath expression.
+ */
private Map namespaceDeclarations = new HashMap();
/**
@@ -54,28 +54,30 @@ public class XPathTransformImpl
/**
* Sets the XPath expression to evaluate.
- *
+ *
* @param xPathExpression The XPath expression to evaluate.
*/
public void setXPathExpression(String xPathExpression) {
this.xPathExpression = xPathExpression;
}
+ @Override
public String getXPathExpression() {
return xPathExpression;
}
/**
- * Sets the namespace prefix to URI mapping to while evaluating the XPath
+ * Sets the namespace prefix to URI mapping to while evaluating the XPath
* expression.
- *
- * @param namespaceDeclarations The namespace prefix to URI mapping to while
- * evaluating the XPath expression.
+ *
+ * @param namespaceDeclarations The namespace prefix to URI mapping to while
+ * evaluating the XPath expression.
*/
public void setNamespaceDelcarations(Map namespaceDeclarations) {
this.namespaceDeclarations = namespaceDeclarations;
}
+ @Override
public Map getNamespaceDeclarations() {
return namespaceDeclarations;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java
index 3fd4cc1..5995c73 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/impl/XSLTransformImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.impl;
import org.w3c.dom.Element;
@@ -30,14 +29,14 @@ import at.gv.egovernment.moa.spss.api.common.XSLTTransform;
/**
* Default implementation of <code>XSLTTransform</code>.
- *
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
public class XSLTransformImpl extends TransformImpl implements XSLTTransform {
/** The XSLT stylesheet to apply. */
private Element styleSheet;
-
+
/**
* Create a new <code>XSLTransformImpl</code> object.
*/
@@ -47,13 +46,14 @@ public class XSLTransformImpl extends TransformImpl implements XSLTTransform {
/**
* Sets the XSLT stylesheet to apply.
- *
+ *
* @param styleSheet The XSLT stylesheet to apply.
*/
public void setStylesheet(Element styleSheet) {
this.styleSheet = styleSheet;
}
+ @Override
public Element getStylesheet() {
return styleSheet;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
index a4c4d29..579fb51 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureRequestParser.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.io.InputStream;
@@ -49,7 +48,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* A parser to parse <code>CreateCMSSignatureRequest</code> DOM trees into
* <code>CreateCMSSignatureRequest</code> API objects.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -60,12 +59,12 @@ public class CreateCMSSignatureRequestParser {
//
private static final String MOA = Constants.MOA_PREFIX + ":";
private static final String KEY_IDENTIFIER_XPATH =
- "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "KeyIdentifier";
+ "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "KeyIdentifier";
private static final String SINGLE_SIGNATURE_INFO_XPATH =
- "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "SingleSignatureInfo";
+ "/" + MOA + "CreateCMSSignatureRequest/" + MOA + "SingleSignatureInfo";
private static final String DATA_OBJECT_INFO_XPATH = MOA + "DataObjectInfo";
private static final String DATA_OBJECT_XPATH = MOA + "DataObject";
-
+
private static final String SL_CONFORM_ATTR_NAME = "SecurityLayerConformity";
private static final String IS_PADES_SIGNATURE_ATTR_NAME = "PAdESConformity";
@@ -74,11 +73,9 @@ public class CreateCMSSignatureRequestParser {
private static final String BASE64_CONTENT_XPATH = MOA + "Base64Content";
private static final String EXCLUDEBYTERANGE_FROM_XPATH = MOA + "ExcludedByteRange/" + MOA + "From";
private static final String EXCLUDEBYTERANGE_TO_XPATH = MOA + "ExcludedByteRange/" + MOA + "To";
-
-
/** The factory to create API objects. */
- private SPSSFactory factory;
+ private final SPSSFactory factory;
/**
* Create a new <code>CreateCMSSignatureRequestParser</code>.
@@ -88,44 +85,43 @@ public class CreateCMSSignatureRequestParser {
}
/**
- * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined
- * by the MOA schema.
- *
+ * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
* @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema for this
- * method to succeed.
- * @return A <code>CreateCMSSignatureRequest</code> API object containing
- * the data from the DOM element.
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>CreateCMSSignatureRequest</code> API object containing the
+ * data from the DOM element.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public CreateCMSSignatureRequest parse(Element requestElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- List singleSignatureInfos = parseSingleSignatureInfos(requestElem);
- String keyIdentifier =
- XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
+ final List singleSignatureInfos = parseSingleSignatureInfos(requestElem);
+ final String keyIdentifier =
+ XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
return factory.createCreateCMSSignatureRequest(
- keyIdentifier,
- singleSignatureInfos);
+ keyIdentifier,
+ singleSignatureInfos);
}
/**
- * Parse all <code>SingleSignatureInfo</code> elements of the
+ * Parse all <code>SingleSignatureInfo</code> elements of the
* <code>CreateCMSSignatureRequest</code>.
- *
+ *
* @param requestElem The <code>CreateCMSSignatureRequest</code> to parse.
- * @return A <code>List</code> of <code>SingleSignatureInfo</code> API
- * objects.
- * @throws MOAApplicationException An error occurred parsing on of the
- * <code>SingleSignatureInfo</code> elements.
+ * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects.
+ * @throws MOAApplicationException An error occurred parsing on of the
+ * <code>SingleSignatureInfo</code> elements.
*/
private List parseSingleSignatureInfos(Element requestElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- List singleSignatureInfos = new ArrayList();
- NodeIterator sigInfoElems =
- XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
+ final List singleSignatureInfos = new ArrayList();
+ final NodeIterator sigInfoElems =
+ XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
Element sigInfoElem;
while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) {
@@ -137,132 +133,130 @@ public class CreateCMSSignatureRequestParser {
/**
* Parse a <code>SingleSignatureInfo</code> DOM element.
- *
- * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to
- * parse.
- * @return A <code>SingleSignatureInfo</code> API object containing the
- * information of <code>sigInfoElem</code>.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>SingleSignatureInfo</code>.
+ *
+ * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse.
+ * @return A <code>SingleSignatureInfo</code> API object containing the
+ * information of <code>sigInfoElem</code>.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>SingleSignatureInfo</code>.
*/
private SingleSignatureInfo parseSingleSignatureInfo(Element sigInfoElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- DataObjectInfo dataObjectInfo = parseDataObjectInfo(sigInfoElem);
+ final DataObjectInfo dataObjectInfo = parseDataObjectInfo(sigInfoElem);
boolean securityLayerConform;
boolean isPAdESSignature = false;
if (sigInfoElem.hasAttribute(SL_CONFORM_ATTR_NAME)) {
securityLayerConform =
- BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME));
+ BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME));
} else {
securityLayerConform = true;
}
if (sigInfoElem.hasAttribute(IS_PADES_SIGNATURE_ATTR_NAME)) {
- isPAdESSignature = BoolUtils.valueOf(sigInfoElem.getAttribute(IS_PADES_SIGNATURE_ATTR_NAME));
+ isPAdESSignature = BoolUtils.valueOf(sigInfoElem.getAttribute(IS_PADES_SIGNATURE_ATTR_NAME));
}
-
+
return factory.createSingleSignatureInfoCMS(
- dataObjectInfo,
- securityLayerConform,
- isPAdESSignature);
+ dataObjectInfo,
+ securityLayerConform,
+ isPAdESSignature);
}
/**
* Parse the <code>DataObjectInfo</code> DOM elements contained in the given
* <code>SingleSignatureInfo</code> DOM element.
- *
- * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element
- * whose <code>DataObjectInfo</code>s to parse.
+ *
+ * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element whose
+ * <code>DataObjectInfo</code>s to parse.
* @return A <code>List</code> of <code>DataObjectInfo</code> API objects
- * containing the data from the <code>DataObjectInfo</code> DOM elements.
+ * containing the data from the <code>DataObjectInfo</code> DOM
+ * elements.
* @throws MOAApplicationException An error occurred parsing one of the
- * <code>DataObjectInfo</code>s.
+ * <code>DataObjectInfo</code>s.
*/
private DataObjectInfo parseDataObjectInfo(Element sigInfoElem)
- throws MOAApplicationException {
-
- Element dataObjInfoElem = (Element)XPathUtils.selectSingleNode(sigInfoElem, DATA_OBJECT_INFO_XPATH);
-
- String structure = dataObjInfoElem.getAttribute("Structure");
- Element dataObjectElem =
- (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH);
-
- CMSDataObject dataObject = parseDataObject(dataObjectElem);
-
- return factory.createDataObjectInfo(
- structure,
- dataObject);
-
- }
-
-
+ throws MOAApplicationException {
+
+ final Element dataObjInfoElem = (Element) XPathUtils.selectSingleNode(sigInfoElem,
+ DATA_OBJECT_INFO_XPATH);
+
+ final String structure = dataObjInfoElem.getAttribute("Structure");
+ final Element dataObjectElem =
+ (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH);
-
+ final CMSDataObject dataObject = parseDataObject(dataObjectElem);
+
+ return factory.createDataObjectInfo(
+ structure,
+ dataObject);
+
+ }
/**
- * Parse a the <code>DataObject</code> DOM element contained in a given
+ * Parse a the <code>DataObject</code> DOM element contained in a given
* <code>CreateCMSSignatureRequest</code> DOM element.
- *
- * @param requestElem The DataObject DOM element of the <code>VerifyCMSSignatureRequest</code>
- * to parse.
- * @return The <code>CMSDataObject</code> API object containing the data
- * from the <code>DataObject</code> DOM element.
+ *
+ * @param requestElem The DataObject DOM element of the
+ * <code>VerifyCMSSignatureRequest</code> to parse.
+ * @return The <code>CMSDataObject</code> API object containing the data from
+ * the <code>DataObject</code> DOM element.
*/
private CMSDataObject parseDataObject(Element dataObjectElem) {
if (dataObjectElem != null) {
- Element metaInfoElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH);
+ final Element metaInfoElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH);
MetaInfo metaInfo = null;
- Element contentElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH);
- CMSContent content = parseContent(contentElem);
+ final Element contentElem = (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH);
+ final CMSContent content = parseContent(contentElem);
if (metaInfoElem != null) {
metaInfo = RequestParserUtils.parseMetaInfo(metaInfoElem);
}
- String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_FROM_XPATH, null);
- String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_TO_XPATH, null);
-
+ final String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem,
+ EXCLUDEBYTERANGE_FROM_XPATH, null);
+ final String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem,
+ EXCLUDEBYTERANGE_TO_XPATH, null);
+
BigDecimal excludeByteRangeFrom = null;
BigDecimal excludeByteRangeTo = null;
-
- if (excludeByteRangeFromStr != null)
- excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr);
- if (excludeByteRangeToStr != null)
- excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr);
-
+
+ if (excludeByteRangeFromStr != null) {
+ excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr);
+ }
+ if (excludeByteRangeToStr != null) {
+ excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr);
+ }
+
return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo);
- }
- else {
+ } else {
return null;
}
}
-
-
- /**
- * Parse the content contained in a <code>CMSContentBaseType</code> kind of
- * DOM element.
- *
- * @param contentElem The <code>CMSContentBaseType</code> kind of element to
- * parse.
- * @return A <code>CMSDataObject</code> API object containing the data
- * from the given DOM element.
- */
- private CMSContent parseContent(Element contentElem) {
- Element base64ContentElem =
+ /**
+ * Parse the content contained in a <code>CMSContentBaseType</code> kind of DOM
+ * element.
+ *
+ * @param contentElem The <code>CMSContentBaseType</code> kind of element to
+ * parse.
+ * @return A <code>CMSDataObject</code> API object containing the data from the
+ * given DOM element.
+ */
+ private CMSContent parseContent(Element contentElem) {
+ final Element base64ContentElem =
(Element) XPathUtils.selectSingleNode(contentElem, BASE64_CONTENT_XPATH);
- if (base64ContentElem != null) {
- String base64Str = DOMUtils.getText(base64ContentElem);
- InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true);
- return factory.createCMSContent(binaryContent);
- } else {
- return factory.createCMSContent(
+ if (base64ContentElem != null) {
+ final String base64Str = DOMUtils.getText(base64ContentElem);
+ final InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true);
+ return factory.createCMSContent(binaryContent);
+ } else {
+ return factory.createCMSContent(
contentElem.getAttribute("Reference"));
- }
- }
+ }
+ }
} \ No newline at end of file
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java
index 7ce0871..12b408b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateCMSSignatureResponseBuilder.java
@@ -21,14 +21,10 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
-import java.io.IOException;
import java.util.Iterator;
-import javax.xml.transform.TransformerException;
-
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -37,76 +33,71 @@ import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponseElement;
import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
-import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse;
import at.gv.egovernment.moaspss.util.Constants;
-import at.gv.egovernment.moaspss.util.DOMUtils;
/**
- * Convert a <code>CreateCMSSignatureResponse</code> API object into its
- * XML representation, according to the MOA XML schema.
- *
+ * Convert a <code>CreateCMSSignatureResponse</code> API object into its XML
+ * representation, according to the MOA XML schema.
+ *
* @version $Id$
*/
public class CreateCMSSignatureResponseBuilder {
private static final String MOA_NS_URI = Constants.MOA_NS_URI;
/** The XML document containing the response element. */
- private Document responseDoc;
+ private final Document responseDoc;
/** The response <code>CreateCMSSignatureResponse</code> DOM element. */
- private Element responseElem;
+ private final Element responseElem;
/**
* Create a new <code>CreateCMSSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException An error occurred setting up the resulting
- * XML document.
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
*/
public CreateCMSSignatureResponseBuilder() throws MOASystemException {
responseDoc =
- ResponseBuilderUtils.createResponse("CreateCMSSignatureResponse");
+ ResponseBuilderUtils.createResponse("CreateCMSSignatureResponse");
responseElem = responseDoc.getDocumentElement();
}
/**
- * Build a document containing a <code>CreateCMSSignatureResponse</code>
- * DOM element being the XML representation of the given
+ * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
* <code>CreateCMSSignatureResponse</code> API object.
- *
- * @param response The <code>CreateCMSSignatureResponse</code> to convert
- * to XML.
- * @return A document containing the <code>CreateCMSSignatureResponse</code>
- * DOM element.
+ *
+ * @param response The <code>CreateCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM
+ * element.
*/
public Document build(CreateCMSSignatureResponse response) {
Iterator iter;
-
-
-
for (iter = response.getResponseElements().iterator(); iter.hasNext();) {
-
- Object responseObj = iter.next();
-
- if (responseObj instanceof ErrorResponse) {
- ErrorResponse errorResponse = (ErrorResponse) responseObj;
- addErrorResponse(errorResponse);
-
- } else if (responseObj instanceof CreateCMSSignatureResponseElement) {
- CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) responseObj;
- addCMSSignature(cmsSignatureResponse);
-
- }
-
+
+ final Object responseObj = iter.next();
+
+ if (responseObj instanceof ErrorResponse) {
+ final ErrorResponse errorResponse = (ErrorResponse) responseObj;
+ addErrorResponse(errorResponse);
+
+ } else if (responseObj instanceof CreateCMSSignatureResponseElement) {
+ final CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) responseObj;
+ addCMSSignature(cmsSignatureResponse);
+
+ }
+
// CreateCMSSignatureResponseElement responseElement =
// (CreateCMSSignatureResponseElement) iter.next();
-//
+//
// switch (responseElement.getResponseType()) {
// case CreateCMSSignatureResponseElement.CMS_SIGNATURE :
-//
+//
// break;
//
// case CreateCMSSignatureResponseElement.ERROR_RESPONSE :
-//
+//
// break;
// }
@@ -115,37 +106,35 @@ public class CreateCMSSignatureResponseBuilder {
return responseDoc;
}
-
-
/**
* Add a <code>CMSSignature</code> element to the response.
- *
+ *
* @param cmsSignatureResponse The content to put under the
- * <code>CMSSignature</code> element.
+ * <code>CMSSignature</code> element.
*/
private void addCMSSignature(CMSSignatureResponse cmsSignatureResponse) {
- String base64Value = cmsSignatureResponse.getCMSSignature();
-
- Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "CMSSignature");
- cmsSignature.setTextContent(base64Value);
-
- responseElem.appendChild(cmsSignature);
-
-}
-
+ final String base64Value = cmsSignatureResponse.getCMSSignature();
+
+ final Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "CMSSignature");
+ cmsSignature.setTextContent(base64Value);
+
+ responseElem.appendChild(cmsSignature);
+
+ }
+
/**
* Add a <code>ErrorResponse</code> element to the response.
- *
+ *
* @param errorResponse The API object containing the information to put into
- * the <code>ErrorResponse</code> DOM element.
+ * the <code>ErrorResponse</code> DOM element.
*/
private void addErrorResponse(ErrorResponse errorResponse) {
- Element errorElem =
- responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
- Element errorCodeElem =
- responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
- Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
- String errorCodeStr = Integer.toString(errorResponse.getErrorCode());
+ final Element errorElem =
+ responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
+ final Element errorCodeElem =
+ responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
+ final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
+ final String errorCodeStr = Integer.toString(errorResponse.getErrorCode());
errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr));
errorElem.appendChild(errorCodeElem);
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java
index d677f88..8898aaf 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureRequestParser.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.util.ArrayList;
@@ -47,7 +46,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* A parser to parse <code>CreateXMLSignatureRequest</code> DOM trees into
* <code>CreateXMLSignatureRequest</code> API objects.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -58,25 +57,25 @@ public class CreateXMLSignatureRequestParser {
//
private static final String MOA = Constants.MOA_PREFIX + ":";
private static final String KEY_IDENTIFIER_XPATH =
- "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "KeyIdentifier";
+ "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "KeyIdentifier";
private static final String SINGLE_SIGNATURE_INFO_XPATH =
- "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "SingleSignatureInfo";
+ "/" + MOA + "CreateXMLSignatureRequest/" + MOA + "SingleSignatureInfo";
private static final String DATA_OBJECT_INFO_XPATH = MOA + "DataObjectInfo";
private static final String DATA_OBJECT_XPATH = MOA + "DataObject";
private static final String CREATE_SIGNATURE_INFO_XPATH =
- MOA + "CreateSignatureInfo";
+ MOA + "CreateSignatureInfo";
private static final String CREATE_TRANSFORMS_INFO_PROFILE_XPATH =
- (MOA + "CreateTransformsInfoProfile | ")
- + (MOA + "CreateTransformsInfoProfileID");
+ MOA + "CreateTransformsInfoProfile | "
+ + MOA + "CreateTransformsInfoProfileID";
private static final String CREATE_SIGNATURE_ENVIRONMENT_XPATH =
- MOA + "CreateSignatureEnvironment";
+ MOA + "CreateSignatureEnvironment";
private static final String CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH =
- (MOA + "CreateSignatureEnvironmentProfile | ")
- + (MOA + "CreateSignatureEnvironmentProfileID");
+ MOA + "CreateSignatureEnvironmentProfile | "
+ + MOA + "CreateSignatureEnvironmentProfileID";
private static final String SL_CONFORM_ATTR_NAME = "SecurityLayerConformity";
-
+
/** The factory to create API objects. */
- private SPSSFactory factory;
+ private final SPSSFactory factory;
/**
* Create a new <code>CreateXMLSignatureRequestParser</code>.
@@ -86,44 +85,43 @@ public class CreateXMLSignatureRequestParser {
}
/**
- * Parse a <code>CreateXMLSignatureRequest</code> DOM element, as defined
- * by the MOA schema.
- *
+ * Parse a <code>CreateXMLSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
* @param requestElem The <code>CreateXMLSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema for this
- * method to succeed.
- * @return A <code>CreateXMLSignatureRequest</code> API object containing
- * the data from the DOM element.
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>CreateXMLSignatureRequest</code> API object containing the
+ * data from the DOM element.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public CreateXMLSignatureRequest parse(Element requestElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- List singleSignatureInfos = parseSingleSignatureInfos(requestElem);
- String keyIdentifier =
- XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
+ final List singleSignatureInfos = parseSingleSignatureInfos(requestElem);
+ final String keyIdentifier =
+ XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
return factory.createCreateXMLSignatureRequest(
- keyIdentifier,
- singleSignatureInfos);
+ keyIdentifier,
+ singleSignatureInfos);
}
/**
- * Parse all <code>SingleSignatureInfo</code> elements of the
+ * Parse all <code>SingleSignatureInfo</code> elements of the
* <code>CreateXMLSignatureRequest</code>.
- *
+ *
* @param requestElem The <code>CreateXMLSignatureRequest</code> to parse.
- * @return A <code>List</code> of <code>SingleSignatureInfo</code> API
- * objects.
- * @throws MOAApplicationException An error occurred parsing on of the
- * <code>SingleSignatureInfo</code> elements.
+ * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects.
+ * @throws MOAApplicationException An error occurred parsing on of the
+ * <code>SingleSignatureInfo</code> elements.
*/
private List parseSingleSignatureInfos(Element requestElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- List singleSignatureInfos = new ArrayList();
- NodeIterator sigInfoElems =
- XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
+ final List singleSignatureInfos = new ArrayList();
+ final NodeIterator sigInfoElems =
+ XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
Element sigInfoElem;
while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) {
@@ -135,52 +133,52 @@ public class CreateXMLSignatureRequestParser {
/**
* Parse a <code>SingleSignatureInfo</code> DOM element.
- *
- * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to
- * parse.
- * @return A <code>SingleSignatureInfo</code> API object containing the
- * information of <code>sigInfoElem</code>.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>SingleSignatureInfo</code>.
+ *
+ * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse.
+ * @return A <code>SingleSignatureInfo</code> API object containing the
+ * information of <code>sigInfoElem</code>.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>SingleSignatureInfo</code>.
*/
private SingleSignatureInfo parseSingleSignatureInfo(Element sigInfoElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- List dataObjectInfos = parseDataObjectInfos(sigInfoElem);
- CreateSignatureInfo createSignatureInfo =
- parseCreateSignatureInfo(sigInfoElem);
+ final List dataObjectInfos = parseDataObjectInfos(sigInfoElem);
+ final CreateSignatureInfo createSignatureInfo =
+ parseCreateSignatureInfo(sigInfoElem);
boolean securityLayerConform;
if (sigInfoElem.hasAttribute(SL_CONFORM_ATTR_NAME)) {
securityLayerConform =
- BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME));
+ BoolUtils.valueOf(sigInfoElem.getAttribute(SL_CONFORM_ATTR_NAME));
} else {
securityLayerConform = true;
}
return factory.createSingleSignatureInfo(
- dataObjectInfos,
- createSignatureInfo,
- securityLayerConform);
+ dataObjectInfos,
+ createSignatureInfo,
+ securityLayerConform);
}
/**
* Parse the <code>DataObjectInfo</code> DOM elements contained in the given
* <code>SingleSignatureInfo</code> DOM element.
- *
- * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element
- * whose <code>DataObjectInfo</code>s to parse.
+ *
+ * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element whose
+ * <code>DataObjectInfo</code>s to parse.
* @return A <code>List</code> of <code>DataObjectInfo</code> API objects
- * containing the data from the <code>DataObjectInfo</code> DOM elements.
+ * containing the data from the <code>DataObjectInfo</code> DOM
+ * elements.
* @throws MOAApplicationException An error occurred parsing one of the
- * <code>DataObjectInfo</code>s.
+ * <code>DataObjectInfo</code>s.
*/
private List parseDataObjectInfos(Element sigInfoElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- List dataObjectInfos = new ArrayList();
- NodeIterator dataObjInfoElems =
- XPathUtils.selectNodeIterator(sigInfoElem, DATA_OBJECT_INFO_XPATH);
+ final List dataObjectInfos = new ArrayList();
+ final NodeIterator dataObjInfoElems =
+ XPathUtils.selectNodeIterator(sigInfoElem, DATA_OBJECT_INFO_XPATH);
Element dataObjInfoElem;
while ((dataObjInfoElem = (Element) dataObjInfoElems.nextNode()) != null) {
@@ -191,91 +189,91 @@ public class CreateXMLSignatureRequestParser {
/**
* Parse a <code>DataObjectInfo</code> DOM element.
- *
- * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element to
- * parse.
- * @return A <code>DataObjectInfo</code> API element containing the data
- * from <code>dataObjInfoElem</code>.
+ *
+ * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element to parse.
+ * @return A <code>DataObjectInfo</code> API element containing the data from
+ * <code>dataObjInfoElem</code>.
* @throws MOAApplicationException An error occurred parsing the
- * <code>DataObjectInfo</code>.
+ * <code>DataObjectInfo</code>.
*/
private DataObjectInfo parseDataObjectInfo(Element dataObjInfoElem)
- throws MOAApplicationException {
-
- String structure = dataObjInfoElem.getAttribute("Structure");
- Element dataObjectElem =
- (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH);
- Content dataObject = RequestParserUtils.parseContent(dataObjectElem);
- CreateTransformsInfoProfile createTransformsInfoProfile =
- parseCreateTransformsInfoProfile(dataObjInfoElem);
+ throws MOAApplicationException {
+
+ final String structure = dataObjInfoElem.getAttribute("Structure");
+ final Element dataObjectElem =
+ (Element) XPathUtils.selectSingleNode(dataObjInfoElem, DATA_OBJECT_XPATH);
+ final Content dataObject = RequestParserUtils.parseContent(dataObjectElem);
+ final CreateTransformsInfoProfile createTransformsInfoProfile =
+ parseCreateTransformsInfoProfile(dataObjInfoElem);
boolean childOfManifest;
if (dataObjInfoElem.hasAttribute("ChildOfManifest")) {
childOfManifest =
- BoolUtils.valueOf(dataObjInfoElem.getAttribute("ChildOfManifest"));
+ BoolUtils.valueOf(dataObjInfoElem.getAttribute("ChildOfManifest"));
} else {
childOfManifest = false;
}
return factory.createDataObjectInfo(
- structure,
- childOfManifest,
- dataObject,
- createTransformsInfoProfile);
+ structure,
+ childOfManifest,
+ dataObject,
+ createTransformsInfoProfile);
}
/**
* Parse a <code>CreateTransformsInfoProfile</code> DOM element.
- *
- * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element
- * containing the <code>CreateTransformsInfoProfile</code>.
+ *
+ * @param dataObjInfoElem The <code>DataObjectInfo</code> DOM element containing
+ * the <code>CreateTransformsInfoProfile</code>.
* @return The <code>CreateTransformsInfoProfile</code> API object containing
- * the profile found in <code>dataObjInfoElem</code>.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>CreateTransformsInfoProfile</code>.
+ * the profile found in <code>dataObjInfoElem</code>.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>CreateTransformsInfoProfile</code>.
*/
private CreateTransformsInfoProfile parseCreateTransformsInfoProfile(Element dataObjInfoElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- Element profileElem =
- (Element) XPathUtils.selectSingleNode(
- dataObjInfoElem,
- CREATE_TRANSFORMS_INFO_PROFILE_XPATH);
+ final Element profileElem =
+ (Element) XPathUtils.selectSingleNode(
+ dataObjInfoElem,
+ CREATE_TRANSFORMS_INFO_PROFILE_XPATH);
if ("CreateTransformsInfoProfile".equals(profileElem.getLocalName())) {
- ProfileParser profileParser = new ProfileParser();
+ final ProfileParser profileParser = new ProfileParser();
return profileParser.parseCreateTransformsInfoProfile(profileElem);
} else {
- String profileID = DOMUtils.getText(profileElem);
+ final String profileID = DOMUtils.getText(profileElem);
return factory.createCreateTransformsInfoProfile(profileID);
}
}
/**
- * Parse the <code>CreateSignatureInfo</code> DOM element contained in
- * a <code>SingleSignatureInfo</code>.
- *
+ * Parse the <code>CreateSignatureInfo</code> DOM element contained in a
+ * <code>SingleSignatureInfo</code>.
+ *
* @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element
- * containing the <code>CreateSignatureInfo</code> to be parsed.
- * @return A <code>CreateSignatureInfo</code> API object containing the
- * data from the <code>CreateSignatureInfo</code> DOM element, or
- * <code>null</code>, if none was found.
+ * containing the <code>CreateSignatureInfo</code> to be
+ * parsed.
+ * @return A <code>CreateSignatureInfo</code> API object containing the data
+ * from the <code>CreateSignatureInfo</code> DOM element, or
+ * <code>null</code>, if none was found.
*/
private CreateSignatureInfo parseCreateSignatureInfo(Element sigInfoElem) {
- Element createInfoElem =
- (Element) XPathUtils.selectSingleNode(
- sigInfoElem,
- CREATE_SIGNATURE_INFO_XPATH);
+ final Element createInfoElem =
+ (Element) XPathUtils.selectSingleNode(
+ sigInfoElem,
+ CREATE_SIGNATURE_INFO_XPATH);
if (createInfoElem != null) {
- Element environmentElem =
- (Element) XPathUtils.selectSingleNode(
- createInfoElem,
- CREATE_SIGNATURE_ENVIRONMENT_XPATH);
- Content environment = RequestParserUtils.parseContent(environmentElem);
- CreateSignatureEnvironmentProfile environmentProfile =
- parseCreateSignatureEnvironmentProfile(createInfoElem);
+ final Element environmentElem =
+ (Element) XPathUtils.selectSingleNode(
+ createInfoElem,
+ CREATE_SIGNATURE_ENVIRONMENT_XPATH);
+ final Content environment = RequestParserUtils.parseContent(environmentElem);
+ final CreateSignatureEnvironmentProfile environmentProfile =
+ parseCreateSignatureEnvironmentProfile(createInfoElem);
return factory.createCreateSignatureInfo(environment, environmentProfile);
} else {
@@ -284,26 +282,25 @@ public class CreateXMLSignatureRequestParser {
}
/**
- * Parse the <code>CreateSignatureEnvironmentProfile</code> contained in
- * the given <code>CreateSignatureInfo</code> DOM element.
- *
- * @param createInfoElem <code>CreateSignatureInfo</code> DOM element to
- * parse.
- * @return The <code>CreateSignatureEnvironmentProfile</code> contained
- * in the given <code>CreateSignatureInfo</code> DOM element..
+ * Parse the <code>CreateSignatureEnvironmentProfile</code> contained in the
+ * given <code>CreateSignatureInfo</code> DOM element.
+ *
+ * @param createInfoElem <code>CreateSignatureInfo</code> DOM element to parse.
+ * @return The <code>CreateSignatureEnvironmentProfile</code> contained in the
+ * given <code>CreateSignatureInfo</code> DOM element..
*/
private CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile(Element createInfoElem) {
- Element profileElem =
- (Element) XPathUtils.selectSingleNode(
- createInfoElem,
- CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH);
+ final Element profileElem =
+ (Element) XPathUtils.selectSingleNode(
+ createInfoElem,
+ CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH);
if ("CreateSignatureEnvironmentProfile"
- .equals(profileElem.getLocalName())) {
- ProfileParser profileParser = new ProfileParser();
+ .equals(profileElem.getLocalName())) {
+ final ProfileParser profileParser = new ProfileParser();
return profileParser.parseCreateSignatureEnvironmentProfile(profileElem);
} else {
- String profileID = DOMUtils.getText(profileElem);
+ final String profileID = DOMUtils.getText(profileElem);
return factory.createCreateSignatureEnvironmentProfile(profileID);
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java
index 3c93fce..d6af889 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/CreateXMLSignatureResponseBuilder.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.util.Iterator;
@@ -38,9 +37,9 @@ import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse;
import at.gv.egovernment.moaspss.util.Constants;
/**
- * Convert a <code>CreateXMLSignatureResponse</code> API object into its
- * XML representation, according to the MOA XML schema.
- *
+ * Convert a <code>CreateXMLSignatureResponse</code> API object into its XML
+ * representation, according to the MOA XML schema.
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -48,48 +47,48 @@ public class CreateXMLSignatureResponseBuilder {
private static final String MOA_NS_URI = Constants.MOA_NS_URI;
/** The XML document containing the response element. */
- private Document responseDoc;
+ private final Document responseDoc;
/** The response <code>CreateXMLSignatureResponse</code> DOM element. */
- private Element responseElem;
+ private final Element responseElem;
/**
* Create a new <code>CreateXMLSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException An error occurred setting up the resulting
- * XML document.
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
*/
public CreateXMLSignatureResponseBuilder() throws MOASystemException {
responseDoc =
- ResponseBuilderUtils.createResponse("CreateXMLSignatureResponse");
+ ResponseBuilderUtils.createResponse("CreateXMLSignatureResponse");
responseElem = responseDoc.getDocumentElement();
}
/**
- * Build a document containing a <code>CreateXMLSignatureResponse</code>
- * DOM element being the XML representation of the given
+ * Build a document containing a <code>CreateXMLSignatureResponse</code> DOM
+ * element being the XML representation of the given
* <code>CreateXMLSignatureResponse</code> API object.
- *
- * @param response The <code>CreateXMLSignatureResponse</code> to convert
- * to XML.
- * @return A document containing the <code>CreateXMLSignatureResponse</code>
- * DOM element.
+ *
+ * @param response The <code>CreateXMLSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>CreateXMLSignatureResponse</code> DOM
+ * element.
*/
public Document build(CreateXMLSignatureResponse response) {
Iterator iter;
for (iter = response.getResponseElements().iterator(); iter.hasNext();) {
- CreateXMLSignatureResponseElement responseElement =
- (CreateXMLSignatureResponseElement) iter.next();
+ final CreateXMLSignatureResponseElement responseElement =
+ (CreateXMLSignatureResponseElement) iter.next();
switch (responseElement.getResponseType()) {
- case CreateXMLSignatureResponseElement.SIGNATURE_ENVIRONMENT_RESPONSE :
- SignatureEnvironmentResponse envResponse =
- (SignatureEnvironmentResponse) responseElement;
+ case CreateXMLSignatureResponseElement.SIGNATURE_ENVIRONMENT_RESPONSE:
+ final SignatureEnvironmentResponse envResponse =
+ (SignatureEnvironmentResponse) responseElement;
addSignatureEnvironment(envResponse);
break;
- case CreateXMLSignatureResponseElement.ERROR_RESPONSE :
- ErrorResponse errorResponse = (ErrorResponse) responseElement;
+ case CreateXMLSignatureResponseElement.ERROR_RESPONSE:
+ final ErrorResponse errorResponse = (ErrorResponse) responseElement;
addErrorResponse(errorResponse);
break;
}
@@ -101,35 +100,36 @@ public class CreateXMLSignatureResponseBuilder {
/**
* Add a <code>SignatureEnvironment</code> element to the response.
- *
+ *
* @param envResponse The content to put under the
- * <code>SignatureEnvironment</code> element. This should either be a
- * <code>dsig:Signature</code> element (in case of a detached signature) or
- * the signature environment containing the signature (in case of
- * an enveloping signature).
+ * <code>SignatureEnvironment</code> element. This should
+ * either be a <code>dsig:Signature</code> element (in case
+ * of a detached signature) or the signature environment
+ * containing the signature (in case of an enveloping
+ * signature).
*/
private void addSignatureEnvironment(SignatureEnvironmentResponse envResponse) {
- Element content = envResponse.getSignatureEnvironment();
- Node importedSignature = responseDoc.importNode(content, true);
- Element signatureEnvironment =
- responseDoc.createElementNS(MOA_NS_URI, "SignatureEnvironment");
+ final Element content = envResponse.getSignatureEnvironment();
+ final Node importedSignature = responseDoc.importNode(content, true);
+ final Element signatureEnvironment =
+ responseDoc.createElementNS(MOA_NS_URI, "SignatureEnvironment");
signatureEnvironment.appendChild(importedSignature);
responseElem.appendChild(signatureEnvironment);
}
/**
* Add a <code>ErrorResponse</code> element to the response.
- *
+ *
* @param errorResponse The API object containing the information to put into
- * the <code>ErrorResponse</code> DOM element.
+ * the <code>ErrorResponse</code> DOM element.
*/
private void addErrorResponse(ErrorResponse errorResponse) {
- Element errorElem =
- responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
- Element errorCodeElem =
- responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
- Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
- String errorCodeStr = Integer.toString(errorResponse.getErrorCode());
+ final Element errorElem =
+ responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
+ final Element errorCodeElem =
+ responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
+ final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
+ final String errorCodeStr = Integer.toString(errorResponse.getErrorCode());
errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr));
errorElem.appendChild(errorCodeElem);
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java
index 6b34922..b8cb361 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ProfileParser.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.io.IOException;
@@ -52,85 +51,86 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* Parse the various profile elements contained in the MOA web service requests
* and given as separate files in the MOA configuration.
- *
+ *
* The profiles parsed must be schema valid according to the MOA XML schema.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ProfileParser {
-
+
//
// XPath expressions to select parts of the profiles
//
private static final String MOA = Constants.MOA_PREFIX + ":";
private static final String DSIG = Constants.DSIG_PREFIX + ":";
private static final String CREATE_TRANSFORMS_XPATH =
- MOA + "CreateTransformsInfo/" + DSIG + "Transforms";
+ MOA + "CreateTransformsInfo/" + DSIG + "Transforms";
private static final String FINAL_DATA_META_INFO_XPATH =
- MOA + "CreateTransformsInfo/" + MOA + "FinalDataMetaInfo";
+ MOA + "CreateTransformsInfo/" + MOA + "FinalDataMetaInfo";
private static final String CREATE_SIGNATURE_LOCATION_XPATH =
- MOA + "CreateSignatureLocation";
+ MOA + "CreateSignatureLocation";
private static final String SUPPLEMENT_XPATH = MOA + "Supplement";
private static final String VERIFY_TRANSFORMS_XPATH = DSIG + "Transforms";
private static final String TRANSFORM_PARAMETER_XPATH =
- MOA + "TransformParameter";
+ MOA + "TransformParameter";
private static final String TRANSFORM_PARAMETER_CONTENT_XPATH =
- MOA + "Base64Content | " + MOA + "Hash";
+ MOA + "Base64Content | " + MOA + "Hash";
private static final String DIGEST_METHOD_XPATH = DSIG + "DigestMethod";
private static final String DIGEST_VALUE_XPATH = DSIG + "DigestValue";
/** The factory used to create API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/**
* Parse a <code>CreateTransformsInfoProfile</code> DOM element.
- *
- * @param profileElem The <code>CreateTransformsInfoProfile</code> element
- * to parse.
+ *
+ * @param profileElem The <code>CreateTransformsInfoProfile</code> element to
+ * parse.
* @return The <code>CreateTransformsInfoProfile</code> API object containing
- * the data from the <code>profileElem</code>.
- * @throws MOAApplicationException An error occurred parsing the DOM element.
+ * the data from the <code>profileElem</code>.
+ * @throws MOAApplicationException An error occurred parsing the DOM element.
*/
public CreateTransformsInfoProfile parseCreateTransformsInfoProfile(Element profileElem)
- throws MOAApplicationException {
- CreateTransformsInfo createTransformsInfo =
- parseCreateTransformsInfo(profileElem);
- List supplements = parseSupplements(profileElem);
+ throws MOAApplicationException {
+ final CreateTransformsInfo createTransformsInfo =
+ parseCreateTransformsInfo(profileElem);
+ final List supplements = parseSupplements(profileElem);
return factory.createCreateTransformsInfoProfile(
- createTransformsInfo,
- supplements);
+ createTransformsInfo,
+ supplements);
}
/**
- * Parse the <code>CreateTransformsInfo</code> DOM element contained in a
+ * Parse the <code>CreateTransformsInfo</code> DOM element contained in a
* <code>CreateTransformsInfoProfile</code>.
- *
- * @param profileElem The <code>CreateTransformsInfoProfile</code> DOM
- * element containing the <code>CreateTransformsInfo</code>.
- * @return The <code>CreateTransformsInfo</code> API object containinig the
- * data from the <code>CreateTransformsInfo</code> DOM element.
+ *
+ * @param profileElem The <code>CreateTransformsInfoProfile</code> DOM element
+ * containing the <code>CreateTransformsInfo</code>.
+ * @return The <code>CreateTransformsInfo</code> API object containinig the data
+ * from the <code>CreateTransformsInfo</code> DOM element.
* @throws MOAApplicationException An error occurred parsing the
- * <code>CreateTransformsInfo</code> DOM element.
+ * <code>CreateTransformsInfo</code> DOM
+ * element.
*/
private CreateTransformsInfo parseCreateTransformsInfo(Element profileElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- Element transformsElem =
- (Element) XPathUtils.selectSingleNode(
- profileElem,
- CREATE_TRANSFORMS_XPATH);
- Element metaInfoElem =
- (Element) XPathUtils.selectSingleNode(
- profileElem,
- FINAL_DATA_META_INFO_XPATH);
+ final Element transformsElem =
+ (Element) XPathUtils.selectSingleNode(
+ profileElem,
+ CREATE_TRANSFORMS_XPATH);
+ final Element metaInfoElem =
+ (Element) XPathUtils.selectSingleNode(
+ profileElem,
+ FINAL_DATA_META_INFO_XPATH);
MetaInfo finalDataMetaInfo;
List transforms;
- // parse the dsig:Transforms
+ // parse the dsig:Transforms
if (transformsElem != null) {
- TransformParser transformsParser = new TransformParser();
+ final TransformParser transformsParser = new TransformParser();
transforms = transformsParser.parseTransforms(transformsElem);
} else {
transforms = null;
@@ -144,65 +144,66 @@ public class ProfileParser {
/**
* Parse a <code>CreateSignatureEnvironmentProfile</code> DOM element.
- *
- * @param profileElem The <code>CreateSignatureEnvironmentProfile</code>
- * DOM element to parse.
+ *
+ * @param profileElem The <code>CreateSignatureEnvironmentProfile</code> DOM
+ * element to parse.
* @return The <code>CreateSignatureEnvironmentProfile</code> API object
- * containing the data from the <code>profileElem</code>.
+ * containing the data from the <code>profileElem</code>.
*/
public CreateSignatureEnvironmentProfile parseCreateSignatureEnvironmentProfile(Element profileElem) {
- CreateSignatureLocation createSignatureLocation =
- parseCreateSignatureLocation(profileElem);
- List supplements = parseSupplements(profileElem);
+ final CreateSignatureLocation createSignatureLocation =
+ parseCreateSignatureLocation(profileElem);
+ final List supplements = parseSupplements(profileElem);
return factory.createCreateSignatureEnvironmentProfile(
- createSignatureLocation,
- supplements);
+ createSignatureLocation,
+ supplements);
}
/**
- * Parse a <code>CreateSignatureLocation</code> DOM element contained in
- * a <code>CreateSignatureEnvironmentProfile</code>.
- *
+ * Parse a <code>CreateSignatureLocation</code> DOM element contained in a
+ * <code>CreateSignatureEnvironmentProfile</code>.
+ *
* @param profileElem The <code>CreateSignatureEnvironmentProfile</code> DOM
- * element containing the <code>CreateSignatureLocation</code>.
- * @return The <code>CreateSignatureLocation</code> API object containing
- * the data from the <code>CreateSignatureLocation</code> DOM element.
+ * element containing the
+ * <code>CreateSignatureLocation</code>.
+ * @return The <code>CreateSignatureLocation</code> API object containing the
+ * data from the <code>CreateSignatureLocation</code> DOM element.
*/
private CreateSignatureLocation parseCreateSignatureLocation(Element profileElem) {
- Element locationElem =
- (Element) XPathUtils.selectSingleNode(
- profileElem,
- CREATE_SIGNATURE_LOCATION_XPATH);
- String xPathExpression = DOMUtils.getText(locationElem);
- Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem);
- String indexStr = locationElem.getAttribute("Index");
- int index = Integer.parseInt(indexStr);
+ final Element locationElem =
+ (Element) XPathUtils.selectSingleNode(
+ profileElem,
+ CREATE_SIGNATURE_LOCATION_XPATH);
+ final String xPathExpression = DOMUtils.getText(locationElem);
+ final Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem);
+ final String indexStr = locationElem.getAttribute("Index");
+ final int index = Integer.parseInt(indexStr);
return factory.createCreateSignatureLocation(
- xPathExpression,
- index,
- namespaceDeclarations);
+ xPathExpression,
+ index,
+ namespaceDeclarations);
}
/**
- * Parse all <code>Supplement</code> DOM elements contained in a given
- * parent DOM element.
- *
+ * Parse all <code>Supplement</code> DOM elements contained in a given parent
+ * DOM element.
+ *
* @param supplementsParentElem The DOM element being the parent of the
- * <code>Supplement</code>s.
- * @return A <code>List</code> of <code>Supplement</code> API objects
- * containing the data from the <code>Supplement</code> DOM elements.
+ * <code>Supplement</code>s.
+ * @return A <code>List</code> of <code>Supplement</code> API objects containing
+ * the data from the <code>Supplement</code> DOM elements.
*/
private List parseSupplements(Element supplementsParentElem) {
- List supplements = new ArrayList();
- NodeIterator supplementElems =
- XPathUtils.selectNodeIterator(supplementsParentElem, SUPPLEMENT_XPATH);
+ final List supplements = new ArrayList();
+ final NodeIterator supplementElems =
+ XPathUtils.selectNodeIterator(supplementsParentElem, SUPPLEMENT_XPATH);
Element supplementElem;
while ((supplementElem = (Element) supplementElems.nextNode()) != null) {
- XMLDataObjectAssociation supplement =
- RequestParserUtils.parseXMLDataObjectAssociation(supplementElem);
+ final XMLDataObjectAssociation supplement =
+ RequestParserUtils.parseXMLDataObjectAssociation(supplementElem);
supplements.add(supplement);
}
return supplements;
@@ -210,44 +211,44 @@ public class ProfileParser {
/**
* Parse a <code>SupplementProfile</code> DOM element.
- *
+ *
* @param profileElem The <code>SupplementProfile</code> DOM element to parse.
- * @return The <code>SupplementProfile</code> API object containing the
- * data from the <code>SupplementProfile</code> DOM element.
+ * @return The <code>SupplementProfile</code> API object containing the data
+ * from the <code>SupplementProfile</code> DOM element.
*/
public SupplementProfile parseSupplementProfile(Element profileElem) {
- XMLDataObjectAssociation supplementProfile =
- RequestParserUtils.parseXMLDataObjectAssociation(profileElem);
+ final XMLDataObjectAssociation supplementProfile =
+ RequestParserUtils.parseXMLDataObjectAssociation(profileElem);
return factory.createSupplementProfile(supplementProfile);
}
/**
- * Parse a <code>VerifyTransformsInfoProfile</code> DOM element.
- *
- * @param profileElem The <code>VerifyTransformsInfoProfile</code> DOM
- * element to parse.
- * @return A <code>VerifyTransformsInfoProfile</code> API object containing
- * the information from the <code>VerifyTransformsInfoProfile</code> DOM
- * element.
+ * Parse a <code>VerifyTransformsInfoProfile</code> DOM element.
+ *
+ * @param profileElem The <code>VerifyTransformsInfoProfile</code> DOM element
+ * to parse.
+ * @return A <code>VerifyTransformsInfoProfile</code> API object containing the
+ * information from the <code>VerifyTransformsInfoProfile</code> DOM
+ * element.
* @throws MOAApplicationException An error occurred parsing the
- * <code>VerifyTransformsInfoProfile</code>.
+ * <code>VerifyTransformsInfoProfile</code>.
*/
public VerifyTransformsInfoProfile parseVerifyTransformsInfoProfile(Element profileElem)
- throws MOAApplicationException {
- Element transformsElem =
- (Element) XPathUtils.selectSingleNode(
- profileElem,
- VERIFY_TRANSFORMS_XPATH);
+ throws MOAApplicationException {
+ final Element transformsElem =
+ (Element) XPathUtils.selectSingleNode(
+ profileElem,
+ VERIFY_TRANSFORMS_XPATH);
List transforms = null;
- NodeIterator paramElems =
- XPathUtils.selectNodeIterator(profileElem, TRANSFORM_PARAMETER_XPATH);
+ final NodeIterator paramElems =
+ XPathUtils.selectNodeIterator(profileElem, TRANSFORM_PARAMETER_XPATH);
Element paramElem;
- List transformParameters = new ArrayList();
+ final List transformParameters = new ArrayList();
// parse the dsig:Transforms
if (transformsElem != null) {
- TransformParser transformsParser = new TransformParser();
+ final TransformParser transformsParser = new TransformParser();
transforms = transformsParser.parseTransforms(transformsElem);
}
@@ -257,51 +258,50 @@ public class ProfileParser {
}
return factory.createVerifyTransformsInfoProfile(
- transforms,
- transformParameters);
+ transforms,
+ transformParameters);
}
/**
* Parse a <code>TransformParameter</code> DOM element.
- *
- * @param paramElem The <code>TransformParameter</code> DOM element to
- * parse.
+ *
+ * @param paramElem The <code>TransformParameter</code> DOM element to parse.
* @return The <code>TransformParameter</code> API object containing the
- * information from the <code>TransformParameter</code> DOM element.
+ * information from the <code>TransformParameter</code> DOM element.
* @throws MOAApplicationException An error occurred parsing the
- * <code>TransformParameter</code> DOM element.
+ * <code>TransformParameter</code> DOM element.
*/
- private TransformParameter parseTransformParameter(Element paramElem)
- throws MOAApplicationException {
- String uri = paramElem.getAttribute("URI");
- Element contentElem =
- (Element) XPathUtils.selectSingleNode(
- paramElem,
- TRANSFORM_PARAMETER_CONTENT_XPATH);
+ private TransformParameter parseTransformParameter(Element paramElem)
+ throws MOAApplicationException {
+ final String uri = paramElem.getAttribute("URI");
+ final Element contentElem =
+ (Element) XPathUtils.selectSingleNode(
+ paramElem,
+ TRANSFORM_PARAMETER_CONTENT_XPATH);
if (contentElem == null) {
return factory.createTransformParameter(uri);
} else if ("Base64Content".equals(contentElem.getLocalName())) {
- String base64Str = DOMUtils.getText(contentElem);
- InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true);
+ final String base64Str = DOMUtils.getText(contentElem);
+ final InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true);
return factory.createTransformParameter(uri, binaryContent);
} else { // "Hash".equals(contentElem.getLocalName())
- String digestMethodStr =
- XPathUtils.getElementValue(contentElem, DIGEST_METHOD_XPATH, "");
- String digestValueStr =
- XPathUtils.getElementValue(contentElem, DIGEST_VALUE_XPATH, "");
+ final String digestMethodStr =
+ XPathUtils.getElementValue(contentElem, DIGEST_METHOD_XPATH, "");
+ final String digestValueStr =
+ XPathUtils.getElementValue(contentElem, DIGEST_VALUE_XPATH, "");
byte[] digestValue = null;
try {
digestValue = Base64Utils.decode(digestValueStr, true);
- } catch (IOException e) {
- throw new MOAApplicationException("2270", null);
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2270", null);
}
return factory.createTransformParameter(
- uri,
- digestMethodStr,
- digestValue);
+ uri,
+ digestMethodStr,
+ digestValue);
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java
index 99a64d9..173ecbf 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/RequestParserUtils.java
@@ -42,165 +42,163 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* Utility methods for parsing XML requests definied in the MOA XML schema.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class RequestParserUtils {
- //
- // XPath expressions for parsing parts of a request
- //
- private static final String MOA = Constants.MOA_PREFIX + ":";
- private static final String REFERENCE_ATTR_NAME = "Reference";
- private static final String MIME_TYPE_XPATH = MOA + "MimeType";
- private static final String DESCRIPTION_XPATH = MOA + "Description";
- private static final String TYPE_XPATH = MOA + "Type";
- private static final String XML_ASSOC_CONTENT_XPATH = MOA + "Content";
- private static final String CONTENT_XPATH = MOA + "Base64Content | " + MOA + "XMLContent |" + MOA + "LocRefContent";
- private static final String ANY_OTHER_XPATH = "*[namespace-uri() != \"" + Constants.MOA_NS_URI + "\"]";
-
- /**
- * Parse a <code>XMLDataObjectAssociationType</code> kind of DOM element.
- *
- * @param assocElem
- * The <code>XMLDataObjectAssociationType</code> kind of DOM
- * elmeent to parse.
- * @return The <code>XMLDataObjectAssociation</code> API object containing
- * the data from the <code>XMLDataObjectAssociationType</code> DOM
- * element.
- */
- public static XMLDataObjectAssociation parseXMLDataObjectAssociation(Element assocElem) {
- SPSSFactory factory = SPSSFactory.getInstance();
- MetaInfo metaInfo = parseMetaInfo(assocElem);
- Element contentElem = (Element) XPathUtils.selectSingleNode(assocElem, XML_ASSOC_CONTENT_XPATH);
- Content content = parseContent(contentElem);
-
- return factory.createXMLDataObjectAssociation(metaInfo, content);
- }
-
- /**
- * Parse a <code>MetaInfoType</code> kind of DOM element.
- *
- * @param metaInfoElem
- * The <code>MetaInfoType</code> kind of DOM element.
- * @return The <code>MetaInfo</code> API object containing the data from the
- * <code>metaInfoElem</code>.
- */
- public static MetaInfo parseMetaInfo(Element metaInfoElem) {
- SPSSFactory factory = SPSSFactory.getInstance();
- String mimeType = XPathUtils.getElementValue(metaInfoElem, MIME_TYPE_XPATH, null);
- String description = XPathUtils.getElementValue(metaInfoElem, DESCRIPTION_XPATH, null);
- NodeList anyOther = XPathUtils.selectNodeList(metaInfoElem, ANY_OTHER_XPATH);
- String type = XPathUtils.getElementValue(metaInfoElem, TYPE_XPATH, null);
-
- return factory.createMetaInfo(mimeType, description, anyOther, type);
- }
-
- /**
- * Parse a <code>ContentOptionalRefType</code> or
- * <code>ContentRequiredRefType</code> kind of DOM element.
- *
- * @param contentParentElem
- * The DOM element being the parent of the content element.
- * @return The <code>Content</code> API object containing the data from the
- * given DOM element.
- */
- public static Content parseContent(Element contentParentElem) {
- SPSSFactory factory = SPSSFactory.getInstance();
- String referenceURI = contentParentElem.hasAttribute(REFERENCE_ATTR_NAME)
- ? contentParentElem.getAttribute(REFERENCE_ATTR_NAME) : null;
- Element contentElem = (Element) XPathUtils.selectSingleNode(contentParentElem, CONTENT_XPATH);
-
- if (contentElem == null) {
- return factory.createContent(referenceURI);
- }
-
- if ("Base64Content".equals(contentElem.getLocalName())) {
- String base64String = DOMUtils.getText(contentElem);
- return factory.createContent(Base64Utils.decodeToStream(base64String, true), referenceURI);
- } else if ("LocRefContent".equals(contentElem.getLocalName())) {
- String locationReferenceURI = DOMUtils.getText(contentElem);
- return factory.createContent(locationReferenceURI, referenceURI);
- } else { // "XMLContent".equals(contentElem.getLocalName())
- return factory.createContent(contentElem.getChildNodes(), referenceURI);
- }
- }
-
- /**
- * Get the signing time from a Verfiy(CMS|XML)SignatureRequest.
- *
- * @param requestElem
- * A <code>Verify(CMS|XML)SignatureRequest</code> DOM element.
- * @param dateTimeXPath
- * The XPath to lookup the <code>DateTime</code> element within
- * the request.
- * @return Date The date and time corresponding to the <code>DateTime</code>
- * element in the request. If no <code>DateTime</code> element
- * exists in the request, <code>null</code> is returned.
- * @throws MOAApplicationException
- * An error occurred during a parsing the <code>DateTime</code>
- * element or creating the return value.
- */
- public static Date parseDateTime(Element requestElem, String dateTimeXPath) throws MOAApplicationException {
-
- Element dateTimeElem;
- String dateTimeText;
-
- // select the DateTime element
- dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, dateTimeXPath);
-
- // parse a date from the element value
- if (dateTimeElem != null) {
- dateTimeText = DOMUtils.getText(dateTimeElem);
- try {
- return DateTimeUtils.parseDateTime(dateTimeText);
- } catch (ParseException e) {
- throw new MOAApplicationException("1104", new Object[] { dateTimeText });
- }
- } else {
- return null;
- }
- }
-
- /**
- * Get the signing time from a Verfiy(CMS|XML)SignatureRequest.
- *
- * @param requestElem
- * A <code>Verify(CMS|XML)SignatureRequest</code> DOM element.
- * @param dateTimeXPath
- * The XPath to lookup the <code>DateTime</code> element within
- * the request.
- * @return Date The date and time corresponding to the <code>DateTime</code>
- * element in the request. If no <code>DateTime</code> element
- * exists in the request, <code>null</code> is returned.
- * @throws MOAApplicationException
- * An error occurred during a parsing the <code>DateTime</code>
- * element or creating the return value.
- */
- public static boolean parseExtendedValidation(Element requestElem, String extendedValidationXPath,
- boolean defaultValue) throws MOAApplicationException {
-
- Element dateTimeElem;
- String dateTimeText;
-
- // select the DateTime element
- dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, extendedValidationXPath);
-
- // parse a date from the element value
- if (dateTimeElem != null) {
- dateTimeText = DOMUtils.getText(dateTimeElem);
- String xsdBoolean = dateTimeText.trim();
- if ("".equals(xsdBoolean))
- return defaultValue;
- if("true".equalsIgnoreCase(xsdBoolean) ||
- "1".equalsIgnoreCase(xsdBoolean)) {
- return true;
- } else {
- return false;
- }
- } else {
- return defaultValue;
- }
- }
+ //
+ // XPath expressions for parsing parts of a request
+ //
+ private static final String MOA = Constants.MOA_PREFIX + ":";
+ private static final String REFERENCE_ATTR_NAME = "Reference";
+ private static final String MIME_TYPE_XPATH = MOA + "MimeType";
+ private static final String DESCRIPTION_XPATH = MOA + "Description";
+ private static final String TYPE_XPATH = MOA + "Type";
+ private static final String XML_ASSOC_CONTENT_XPATH = MOA + "Content";
+ private static final String CONTENT_XPATH = MOA + "Base64Content | " + MOA + "XMLContent |" + MOA
+ + "LocRefContent";
+ private static final String ANY_OTHER_XPATH = "*[namespace-uri() != \"" + Constants.MOA_NS_URI + "\"]";
+
+ /**
+ * Parse a <code>XMLDataObjectAssociationType</code> kind of DOM element.
+ *
+ * @param assocElem The <code>XMLDataObjectAssociationType</code> kind of DOM
+ * elmeent to parse.
+ * @return The <code>XMLDataObjectAssociation</code> API object containing the
+ * data from the <code>XMLDataObjectAssociationType</code> DOM element.
+ */
+ public static XMLDataObjectAssociation parseXMLDataObjectAssociation(Element assocElem) {
+ final SPSSFactory factory = SPSSFactory.getInstance();
+ final MetaInfo metaInfo = parseMetaInfo(assocElem);
+ final Element contentElem = (Element) XPathUtils.selectSingleNode(assocElem, XML_ASSOC_CONTENT_XPATH);
+ final Content content = parseContent(contentElem);
+
+ return factory.createXMLDataObjectAssociation(metaInfo, content);
+ }
+
+ /**
+ * Parse a <code>MetaInfoType</code> kind of DOM element.
+ *
+ * @param metaInfoElem The <code>MetaInfoType</code> kind of DOM element.
+ * @return The <code>MetaInfo</code> API object containing the data from the
+ * <code>metaInfoElem</code>.
+ */
+ public static MetaInfo parseMetaInfo(Element metaInfoElem) {
+ final SPSSFactory factory = SPSSFactory.getInstance();
+ final String mimeType = XPathUtils.getElementValue(metaInfoElem, MIME_TYPE_XPATH, null);
+ final String description = XPathUtils.getElementValue(metaInfoElem, DESCRIPTION_XPATH, null);
+ final NodeList anyOther = XPathUtils.selectNodeList(metaInfoElem, ANY_OTHER_XPATH);
+ final String type = XPathUtils.getElementValue(metaInfoElem, TYPE_XPATH, null);
+
+ return factory.createMetaInfo(mimeType, description, anyOther, type);
+ }
+
+ /**
+ * Parse a <code>ContentOptionalRefType</code> or
+ * <code>ContentRequiredRefType</code> kind of DOM element.
+ *
+ * @param contentParentElem The DOM element being the parent of the content
+ * element.
+ * @return The <code>Content</code> API object containing the data from the
+ * given DOM element.
+ */
+ public static Content parseContent(Element contentParentElem) {
+ final SPSSFactory factory = SPSSFactory.getInstance();
+ final String referenceURI = contentParentElem.hasAttribute(REFERENCE_ATTR_NAME)
+ ? contentParentElem.getAttribute(REFERENCE_ATTR_NAME)
+ : null;
+ final Element contentElem = (Element) XPathUtils.selectSingleNode(contentParentElem, CONTENT_XPATH);
+
+ if (contentElem == null) {
+ return factory.createContent(referenceURI);
+ }
+
+ if ("Base64Content".equals(contentElem.getLocalName())) {
+ final String base64String = DOMUtils.getText(contentElem);
+ return factory.createContent(Base64Utils.decodeToStream(base64String, true), referenceURI);
+ } else if ("LocRefContent".equals(contentElem.getLocalName())) {
+ final String locationReferenceURI = DOMUtils.getText(contentElem);
+ return factory.createContent(locationReferenceURI, referenceURI);
+ } else { // "XMLContent".equals(contentElem.getLocalName())
+ return factory.createContent(contentElem.getChildNodes(), referenceURI);
+ }
+ }
+
+ /**
+ * Get the signing time from a Verfiy(CMS|XML)SignatureRequest.
+ *
+ * @param requestElem A <code>Verify(CMS|XML)SignatureRequest</code> DOM
+ * element.
+ * @param dateTimeXPath The XPath to lookup the <code>DateTime</code> element
+ * within the request.
+ * @return Date The date and time corresponding to the <code>DateTime</code>
+ * element in the request. If no <code>DateTime</code> element exists in
+ * the request, <code>null</code> is returned.
+ * @throws MOAApplicationException An error occurred during a parsing the
+ * <code>DateTime</code> element or creating the
+ * return value.
+ */
+ public static Date parseDateTime(Element requestElem, String dateTimeXPath) throws MOAApplicationException {
+
+ Element dateTimeElem;
+ String dateTimeText;
+
+ // select the DateTime element
+ dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, dateTimeXPath);
+
+ // parse a date from the element value
+ if (dateTimeElem != null) {
+ dateTimeText = DOMUtils.getText(dateTimeElem);
+ try {
+ return DateTimeUtils.parseDateTime(dateTimeText);
+ } catch (final ParseException e) {
+ throw new MOAApplicationException("1104", new Object[] { dateTimeText });
+ }
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Get the signing time from a Verfiy(CMS|XML)SignatureRequest.
+ *
+ * @param requestElem A <code>Verify(CMS|XML)SignatureRequest</code> DOM
+ * element.
+ * @param dateTimeXPath The XPath to lookup the <code>DateTime</code> element
+ * within the request.
+ * @return Date The date and time corresponding to the <code>DateTime</code>
+ * element in the request. If no <code>DateTime</code> element exists in
+ * the request, <code>null</code> is returned.
+ * @throws MOAApplicationException An error occurred during a parsing the
+ * <code>DateTime</code> element or creating the
+ * return value.
+ */
+ public static boolean parseExtendedValidation(Element requestElem, String extendedValidationXPath,
+ boolean defaultValue) throws MOAApplicationException {
+
+ Element dateTimeElem;
+ String dateTimeText;
+
+ // select the DateTime element
+ dateTimeElem = (Element) XPathUtils.selectSingleNode(requestElem, extendedValidationXPath);
+
+ // parse a date from the element value
+ if (dateTimeElem != null) {
+ dateTimeText = DOMUtils.getText(dateTimeElem);
+ final String xsdBoolean = dateTimeText.trim();
+ if ("".equals(xsdBoolean)) {
+ return defaultValue;
+ }
+ if ("true".equalsIgnoreCase(xsdBoolean) ||
+ "1".equalsIgnoreCase(xsdBoolean)) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return defaultValue;
+ }
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java
index a7113fd..dff1fcc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/ResponseBuilderUtils.java
@@ -21,16 +21,14 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.io.IOException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
-import java.text.SimpleDateFormat;
+import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
-import java.util.Calendar;
import java.util.TimeZone;
import javax.xml.bind.DatatypeConverter;
@@ -44,8 +42,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
-import iaik.utils.RFC2253NameParser;
-import iaik.utils.RFC2253NameParserException;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult;
@@ -53,10 +49,12 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos;
import at.gv.egovernment.moaspss.util.Base64Utils;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.MiscUtil;
+import iaik.utils.RFC2253NameParser;
+import iaik.utils.RFC2253NameParserException;
/**
* Utility methods used by the verious <code>ResponseBuilder</code> classes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -71,35 +69,35 @@ public class ResponseBuilderUtils {
/**
* Add an DOM element with a specific name as child to a root element
- *
+ *
* @param elementName Name of the DOM element
- * @param response Full document with namespace information
+ * @param response Full document with namespace information
* @param rootElement Root element
* @return new child DOM element
*/
public static Element addChildElement(String elementName, Document response,
- Element rootElement) {
- Element childElement = response.createElementNS(MOA_NS_URI, elementName);
- rootElement.appendChild(childElement);
- return childElement;
-
+ Element rootElement) {
+ final Element childElement = response.createElementNS(MOA_NS_URI, elementName);
+ rootElement.appendChild(childElement);
+ return childElement;
+
}
-
+
/**
* Create a response element with all the namespaces set.
- *
+ *
* @param responseName The name of the response root element.
* @return A DOM document containing the response root element and predefined
- * MOA, DSIG and XML namespace declarations.
+ * MOA, DSIG and XML namespace declarations.
* @throws MOASystemException An error building the response document.
*/
public static Document createResponse(String responseName)
- throws MOASystemException {
+ throws MOASystemException {
try {
- DocumentBuilder docBuilder =
- DocumentBuilderFactory.newInstance().newDocumentBuilder();
- DOMImplementation impl = docBuilder.getDOMImplementation();
+ final DocumentBuilder docBuilder =
+ DocumentBuilderFactory.newInstance().newDocumentBuilder();
+ final DOMImplementation impl = docBuilder.getDOMImplementation();
Document response;
Element root;
String attrValue;
@@ -113,159 +111,170 @@ public class ResponseBuilderUtils {
root.setAttributeNS(XMLNS_NS_URI, attrValue, DSIG_NS_URI);
return response;
- } catch (ParserConfigurationException e) {
+ } catch (final ParserConfigurationException e) {
throw new MOASystemException("2200", null, e);
}
}
/**
* Add a <code>SignerInfo</code> element to the response.
- *
- * @param response The response document, in order to create new elements in
- * it.
- * @param root The root element into which the <code>SignerInfo</code> element
- * will be inserted.
- * @param cert The signer certificate to add.
- * @param isQualified Indicates, whether <code>cert</code> is a qualified
- * certificate.
- * @param isPublicAuthority Indicates, whether <code>cert</code> is
- * certificate owned by a public authority.
+ *
+ * @param response The response document, in order to create new
+ * elements in it.
+ * @param root The root element into which the
+ * <code>SignerInfo</code> element will be inserted.
+ * @param cert The signer certificate to add.
+ * @param isQualified Indicates, whether <code>cert</code> is a qualified
+ * certificate.
+ * @param isPublicAuthority Indicates, whether <code>cert</code> is certificate
+ * owned by a public authority.
* @param publicAuthorityID Information about the public authority owning
- * <code>cert</code>. Must not be <code>null</code>, if
- * <code>isPublicAuthority ! = null</code>.
+ * <code>cert</code>. Must not be <code>null</code>, if
+ * <code>isPublicAuthority ! = null</code>.
* @throws MOAApplicationException An error occurred reading data from the
- * certificate.
+ * certificate.
*/
public static void addSignerInfo(
- Document response,
- Element root,
- X509Certificate cert,
- boolean isQualified,
- String qcSource,
- boolean isPublicAuthority,
- String publicAuthorityID,
- boolean isSSCD,
- String sscdSource,
- String issuerCountryCode,
- TslInfos tslInfos)
- throws MOAApplicationException {
-
- Element signerInfoElem = response.createElementNS(MOA_NS_URI, "SignerInfo");
- Element x509DataElem =
- response.createElementNS(DSIG_NS_URI, DSIG + "X509Data");
- Element x509IssuerSerialElem =
- response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerSerial");
- Element x509IssuerElem =
- response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerName");
- String issuer = cert.getIssuerDN().getName();
- Element x509SerialNumberElem =
- response.createElementNS(DSIG_NS_URI, DSIG + "X509SerialNumber");
- String serialNumber = cert.getSerialNumber().toString();
- Element x509SubjectNameElem =
- response.createElementNS(DSIG_NS_URI, DSIG + "X509SubjectName");
- Element x509CertificateElem =
- response.createElementNS(DSIG_NS_URI, DSIG + "X509Certificate");
- Element qualifiedCertificateElem =
- isQualified
- ? response.createElementNS(MOA_NS_URI, "QualifiedCertificate")
- : null;
- Element sscdElem =
- isSSCD
- ? response.createElementNS(MOA_NS_URI, "SecureSignatureCreationDevice")
- : null;
+ Document response,
+ Element root,
+ X509Certificate cert,
+ boolean isQualified,
+ String qcSource,
+ boolean isPublicAuthority,
+ String publicAuthorityID,
+ boolean isSSCD,
+ String sscdSource,
+ String issuerCountryCode,
+ TslInfos tslInfos)
+ throws MOAApplicationException {
+
+ final Element signerInfoElem = response.createElementNS(MOA_NS_URI, "SignerInfo");
+ final Element x509DataElem =
+ response.createElementNS(DSIG_NS_URI, DSIG + "X509Data");
+ final Element x509IssuerSerialElem =
+ response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerSerial");
+ final Element x509IssuerElem =
+ response.createElementNS(DSIG_NS_URI, DSIG + "X509IssuerName");
+ final String issuer = cert.getIssuerDN().getName();
+ final Element x509SerialNumberElem =
+ response.createElementNS(DSIG_NS_URI, DSIG + "X509SerialNumber");
+ final String serialNumber = cert.getSerialNumber().toString();
+ final Element x509SubjectNameElem =
+ response.createElementNS(DSIG_NS_URI, DSIG + "X509SubjectName");
+ final Element x509CertificateElem =
+ response.createElementNS(DSIG_NS_URI, DSIG + "X509Certificate");
+ final Element qualifiedCertificateElem =
+ isQualified
+ ? response.createElementNS(MOA_NS_URI, "QualifiedCertificate")
+ : null;
+ final Element sscdElem =
+ isSSCD
+ ? response.createElementNS(MOA_NS_URI, "SecureSignatureCreationDevice")
+ : null;
Element issuerCountryCodeElem = null;
if (issuerCountryCode != null) {
- issuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "IssuerCountryCode");
- issuerCountryCodeElem.setTextContent(issuerCountryCode);
+ issuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "IssuerCountryCode");
+ issuerCountryCodeElem.setTextContent(issuerCountryCode);
}
-
- //add TSL infos
+
+ // add TSL infos
Element tslInfoElement = null;
if (tslInfos != null) {
- tslInfoElement = response.createElementNS(MOA_NS_URI, "TSLInformation");
-
- //append TSL issuer country-code
- if (MiscUtil.isNotEmpty(tslInfos.getTslIssuerCountry())); {
- Element tslIssuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "TSLIssuerCountryCode");
- tslIssuerCountryCodeElem.setTextContent(tslInfos.getTslIssuerCountry());
- tslInfoElement.appendChild(tslIssuerCountryCodeElem);
-
- }
-
- //append Service-Type Status
- if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeStatus())); {
- Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeStatus");
- tslServiceInfo.setTextContent(tslInfos.getServiceTypeStatus());
- tslInfoElement.appendChild(tslServiceInfo);
-
- }
-
- //append Service-Type Identifier
- if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeIdentifier())); {
- Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeIdentifier");
- tslServiceInfo.setTextContent(tslInfos.getServiceTypeIdentifier());
- tslInfoElement.appendChild(tslServiceInfo);
-
- }
-
- //append qualifiers
- if (tslInfos.getQualifiers() != null && tslInfos.getQualifiers().size() > 0) {
- Element tslQualifiers = response.createElementNS(MOA_NS_URI, "Qualifiers");
-
- for (String el : tslInfos.getQualifiers()) {
- Element tslQualifier = response.createElementNS(MOA_NS_URI, "Qualifier");
- tslQualifier.setTextContent(el);
- tslQualifiers.appendChild(tslQualifier);
-
- }
-
- tslInfoElement.appendChild(tslQualifiers);
-
- }
-
- //append additional service information
- if (tslInfos.getAdditionalServiceInformation() != null
- && tslInfos.getAdditionalServiceInformation().size() > 0) {
- Element tslAdditionalServiceInformations = response.createElementNS(MOA_NS_URI, "AdditionalServiceInformations");
-
- for (String el : tslInfos.getAdditionalServiceInformation()) {
- Element tslAdditionalServiceInformation = response.createElementNS(MOA_NS_URI, "AdditionalServiceInformation");
- tslAdditionalServiceInformation.setTextContent(el);
- tslAdditionalServiceInformations.appendChild(tslAdditionalServiceInformation);
-
- }
- tslInfoElement.appendChild(tslAdditionalServiceInformations);
-
- }
+ tslInfoElement = response.createElementNS(MOA_NS_URI, "TSLInformation");
+
+ // append TSL issuer country-code
+ if (MiscUtil.isNotEmpty(tslInfos.getTslIssuerCountry())) {
+ ;
+ }
+ {
+ final Element tslIssuerCountryCodeElem = response.createElementNS(MOA_NS_URI, "TSLIssuerCountryCode");
+ tslIssuerCountryCodeElem.setTextContent(tslInfos.getTslIssuerCountry());
+ tslInfoElement.appendChild(tslIssuerCountryCodeElem);
+
+ }
+
+ // append Service-Type Status
+ if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeStatus())) {
+ ;
+ }
+ {
+ final Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeStatus");
+ tslServiceInfo.setTextContent(tslInfos.getServiceTypeStatus());
+ tslInfoElement.appendChild(tslServiceInfo);
+
+ }
+
+ // append Service-Type Identifier
+ if (MiscUtil.isNotEmpty(tslInfos.getServiceTypeIdentifier())) {
+ ;
+ }
+ {
+ final Element tslServiceInfo = response.createElementNS(MOA_NS_URI, "ServiceTypeIdentifier");
+ tslServiceInfo.setTextContent(tslInfos.getServiceTypeIdentifier());
+ tslInfoElement.appendChild(tslServiceInfo);
+
+ }
+
+ // append qualifiers
+ if (tslInfos.getQualifiers() != null && tslInfos.getQualifiers().size() > 0) {
+ final Element tslQualifiers = response.createElementNS(MOA_NS_URI, "Qualifiers");
+
+ for (final String el : tslInfos.getQualifiers()) {
+ final Element tslQualifier = response.createElementNS(MOA_NS_URI, "Qualifier");
+ tslQualifier.setTextContent(el);
+ tslQualifiers.appendChild(tslQualifier);
+
+ }
+
+ tslInfoElement.appendChild(tslQualifiers);
+
+ }
+
+ // append additional service information
+ if (tslInfos.getAdditionalServiceInformation() != null
+ && tslInfos.getAdditionalServiceInformation().size() > 0) {
+ final Element tslAdditionalServiceInformations = response.createElementNS(MOA_NS_URI,
+ "AdditionalServiceInformations");
+
+ for (final String el : tslInfos.getAdditionalServiceInformation()) {
+ final Element tslAdditionalServiceInformation = response.createElementNS(MOA_NS_URI,
+ "AdditionalServiceInformation");
+ tslAdditionalServiceInformation.setTextContent(el);
+ tslAdditionalServiceInformations.appendChild(tslAdditionalServiceInformation);
+
+ }
+ tslInfoElement.appendChild(tslAdditionalServiceInformations);
+
+ }
}
-
- Element publicAuthorityElem =
- isPublicAuthority
- ? response.createElementNS(MOA_NS_URI, "PublicAuthority")
- : null;
- Element codeElem =
- publicAuthorityID != null
- ? response.createElementNS(MOA_NS_URI, "Code")
- : null;
+
+ final Element publicAuthorityElem =
+ isPublicAuthority
+ ? response.createElementNS(MOA_NS_URI, "PublicAuthority")
+ : null;
+ final Element codeElem =
+ publicAuthorityID != null
+ ? response.createElementNS(MOA_NS_URI, "Code")
+ : null;
// fill in text
x509IssuerElem.appendChild(response.createTextNode(issuer));
x509SerialNumberElem.appendChild(response.createTextNode(serialNumber));
try {
- RFC2253NameParser parser =
- new RFC2253NameParser(cert.getSubjectDN().getName());
- String subjectRfc2253 = parser.parse().getRFC2253String();
+ final RFC2253NameParser parser =
+ new RFC2253NameParser(cert.getSubjectDN().getName());
+ final String subjectRfc2253 = parser.parse().getRFC2253String();
x509SubjectNameElem.appendChild(response.createTextNode(subjectRfc2253));
- } catch (RFC2253NameParserException e) {
+ } catch (final RFC2253NameParserException e) {
x509SubjectNameElem.appendChild(
- response.createTextNode(cert.getSubjectDN().getName()));
+ response.createTextNode(cert.getSubjectDN().getName()));
}
try {
x509CertificateElem.appendChild(
- response.createTextNode(Base64Utils.encode(cert.getEncoded())));
- } catch (CertificateEncodingException e) {
+ response.createTextNode(Base64Utils.encode(cert.getEncoded())));
+ } catch (final CertificateEncodingException e) {
throw new MOAApplicationException("2245", null, e);
- } catch (IOException e) {
+ } catch (final IOException e) {
throw new MOAApplicationException("2245", null, e);
}
@@ -276,10 +285,11 @@ public class ResponseBuilderUtils {
x509DataElem.appendChild(x509IssuerSerialElem);
x509DataElem.appendChild(x509CertificateElem);
if (isQualified) {
- if (qcSource.compareToIgnoreCase("TSL") == 0)
- qualifiedCertificateElem.setAttributeNS(MOA_NS_URI, "Source", qcSource);
-
- x509DataElem.appendChild(qualifiedCertificateElem);
+ if (qcSource.compareToIgnoreCase("TSL") == 0) {
+ qualifiedCertificateElem.setAttributeNS(MOA_NS_URI, "Source", qcSource);
+ }
+
+ x509DataElem.appendChild(qualifiedCertificateElem);
}
if (isPublicAuthority) {
x509DataElem.appendChild(publicAuthorityElem);
@@ -289,16 +299,18 @@ public class ResponseBuilderUtils {
}
}
if (isSSCD) {
- sscdElem.setAttributeNS(MOA_NS_URI, "Source", sscdSource);
- x509DataElem.appendChild(sscdElem);
- }
- if (issuerCountryCodeElem != null)
- x509DataElem.appendChild(issuerCountryCodeElem);
-
- //add TSL infos to X509Date if TSL infos exists
- if (tslInfoElement != null)
- x509DataElem.appendChild(tslInfoElement);
-
+ sscdElem.setAttributeNS(MOA_NS_URI, "Source", sscdSource);
+ x509DataElem.appendChild(sscdElem);
+ }
+ if (issuerCountryCodeElem != null) {
+ x509DataElem.appendChild(issuerCountryCodeElem);
+ }
+
+ // add TSL infos to X509Date if TSL infos exists
+ if (tslInfoElement != null) {
+ x509DataElem.appendChild(tslInfoElement);
+ }
+
signerInfoElem.appendChild(x509DataElem);
root.appendChild(signerInfoElem);
}
@@ -306,24 +318,24 @@ public class ResponseBuilderUtils {
/**
* Add an element containing <code>Code</code> and <code>Info</code>
* subelements.
- *
- * @param response The response document, in order to create new elements in
- * it.
- * @param root The root element into which to insert the newly created
- * element.
+ *
+ * @param response The response document, in order to create new elements in
+ * it.
+ * @param root The root element into which to insert the newly created
+ * element.
* @param elementName The name of the newly created element.
- * @param code The content of the <code>Code</code> subelement.
- * @param info The content of the <code>Info</code> subelement.
+ * @param code The content of the <code>Code</code> subelement.
+ * @param info The content of the <code>Info</code> subelement.
*/
public static void addCodeInfoElement(
- Document response,
- Element root,
- String elementName,
- int code,
- NodeList info) {
-
- Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName);
- Element codeElem = response.createElementNS(MOA_NS_URI, "Code");
+ Document response,
+ Element root,
+ String elementName,
+ int code,
+ NodeList info) {
+
+ final Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName);
+ final Element codeElem = response.createElementNS(MOA_NS_URI, "Code");
Element infoElem;
int i;
@@ -339,34 +351,34 @@ public class ResponseBuilderUtils {
}
root.appendChild(codeInfoElem);
}
-
+
/**
* Add an element containing <code>Code</code> and <code>Info</code>
* subelements.
- *
- * @param response The response document, in order to create new elements in
- * it.
- * @param root The root element into which to insert the newly created
- * element.
+ *
+ * @param response The response document, in order to create new elements in
+ * it.
+ * @param root The root element into which to insert the newly created
+ * element.
* @param elementName The name of the newly created element.
- * @param code The content of the <code>Code</code> subelement.
- * @param info The content of the <code>Info</code> subelement.
+ * @param code The content of the <code>Code</code> subelement.
+ * @param info The content of the <code>Info</code> subelement.
*/
public static void addCodeInfoElement(
- Document response,
- Element root,
- String elementName,
- int code,
- String info) {
-
- Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName);
- Element codeElem = response.createElementNS(MOA_NS_URI, "Code");
+ Document response,
+ Element root,
+ String elementName,
+ int code,
+ String info) {
+
+ final Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName);
+ final Element codeElem = response.createElementNS(MOA_NS_URI, "Code");
Element infoElem;
- int i;
+ final int i;
codeElem.appendChild(response.createTextNode(Integer.toString(code)));
codeInfoElem.appendChild(codeElem);
-
+
if (info != null) {
infoElem = response.createElementNS(MOA_NS_URI, "Info");
infoElem.appendChild(response.createTextNode(info));
@@ -376,137 +388,138 @@ public class ResponseBuilderUtils {
}
public static void addSigningTime(Document response,
- Element root,
- Date signingTime) {
- if(signingTime != null) {
- Element extElem = response.createElementNS(MOA_NS_URI, "SigningTime");
- TimeZone tz = TimeZone.getTimeZone("UTC");
- Calendar calendar = new GregorianCalendar();
+ Element root,
+ Date signingTime) {
+ if (signingTime != null) {
+ final Element extElem = response.createElementNS(MOA_NS_URI, "SigningTime");
+ final TimeZone tz = TimeZone.getTimeZone("UTC");
+ final Calendar calendar = new GregorianCalendar();
calendar.setTimeZone(tz);
calendar.setTime(signingTime);
- String date = DatatypeConverter.printDateTime(calendar);
+ final String date = DatatypeConverter.printDateTime(calendar);
extElem.appendChild(response.createTextNode(date));
root.appendChild(extElem);
}
}
public static void addSignatureAlgorithm(Document response,
- Element root,
- String algorithm) {
- if(algorithm != null) {
- Element extElem = response.createElementNS(MOA_NS_URI, "SignatureAlgorithm");
- extElem.appendChild(response.createTextNode(algorithm));
- root.appendChild(extElem);
- }
+ Element root,
+ String algorithm) {
+ if (algorithm != null) {
+ final Element extElem = response.createElementNS(MOA_NS_URI, "SignatureAlgorithm");
+ extElem.appendChild(response.createTextNode(algorithm));
+ root.appendChild(extElem);
+ }
}
-
+
public static void addSignatureCoversFullPDF(Document response,
- Element root,
- Boolean coversFull) {
- if( coversFull != null) {
- Element extElem = response.createElementNS(MOA_NS_URI, "SignatureCoversFullPDF");
- extElem.appendChild(response.createTextNode(String.valueOf(coversFull)));
- root.appendChild(extElem);
- }
+ Element root,
+ Boolean coversFull) {
+ if (coversFull != null) {
+ final Element extElem = response.createElementNS(MOA_NS_URI, "SignatureCoversFullPDF");
+ extElem.appendChild(response.createTextNode(String.valueOf(coversFull)));
+ root.appendChild(extElem);
+ }
}
-
+
public static void addSignatureByteRange(Document response,
- Element root,
- int[] byteRange) {
- if(byteRange != null) {
- String byteRangeTextual = StringUtils.EMPTY;
- for (int el : byteRange)
- byteRangeTextual += "," + String.valueOf(el);
-
- Element extElem = response.createElementNS(MOA_NS_URI, "SignatureByteRange");
- extElem.appendChild(response.createTextNode(byteRangeTextual.substring(1)));
- root.appendChild(extElem);
- }
+ Element root,
+ int[] byteRange) {
+ if (byteRange != null) {
+ String byteRangeTextual = StringUtils.EMPTY;
+ for (final int el : byteRange) {
+ byteRangeTextual += "," + String.valueOf(el);
+ }
+
+ final Element extElem = response.createElementNS(MOA_NS_URI, "SignatureByteRange");
+ extElem.appendChild(response.createTextNode(byteRangeTextual.substring(1)));
+ root.appendChild(extElem);
+ }
}
-
+
public static Element createAndAddChildElement(Document response, Element root, String name) {
- Element element = response.createElementNS(MOA_NS_URI, name);
- root.appendChild(element);
- return element;
-
+ final Element element = response.createElementNS(MOA_NS_URI, name);
+ root.appendChild(element);
+ return element;
+
}
-
+
public static void addHashAlgorithm(Document response,
- Element root,
- String algorithm) {
- if(algorithm != null) {
- Element extElem = response.createElementNS(MOA_NS_URI, "HashAlgorithm");
- extElem.appendChild(response.createTextNode(algorithm));
- root.appendChild(extElem);
- }
-}
-
+ Element root,
+ String algorithm) {
+ if (algorithm != null) {
+ final Element extElem = response.createElementNS(MOA_NS_URI, "HashAlgorithm");
+ extElem.appendChild(response.createTextNode(algorithm));
+ root.appendChild(extElem);
+ }
+ }
+
public static void addExtendendResult(Document response,
- Element root,
- ExtendedCertificateCheckResult result) {
- Element extElem = response.createElementNS(MOA_NS_URI, "ExtendedCertificateCheck");
-
- Element extMajorElem = response.createElementNS(MOA_NS_URI, "Major");
-
- Element codeMajorCodeElem = response.createElementNS(MOA_NS_URI, "Code");
- Element codeMajorNameElem = response.createElementNS(MOA_NS_URI, "Name");
- codeMajorCodeElem.appendChild(response.createTextNode(Integer.toString(
- result.getMajorCode())));
- codeMajorNameElem.appendChild(response.createTextNode(result.getMajorInfo()));
-
- extMajorElem.appendChild(codeMajorCodeElem);
- extMajorElem.appendChild(codeMajorNameElem);
-
- extElem.appendChild(extMajorElem);
-
- if(result.getMinorCode() >= 0) {
- Element extMinorElem = response.createElementNS(MOA_NS_URI, "Minor");
- Element codeMinorCodeElem = response.createElementNS(MOA_NS_URI, "Code");
- Element codeMinorNameElem = response.createElementNS(MOA_NS_URI, "Name");
- codeMinorCodeElem.appendChild(response.createTextNode(Integer.toString(
- result.getMinorCode())));
- codeMinorNameElem.appendChild(response.createTextNode(result.getMinorInfo()));
-
- extMinorElem.appendChild(codeMinorCodeElem);
- extMinorElem.appendChild(codeMinorNameElem);
-
- extElem.appendChild(extMinorElem);
- }
-
- root.appendChild(extElem);
+ Element root,
+ ExtendedCertificateCheckResult result) {
+ final Element extElem = response.createElementNS(MOA_NS_URI, "ExtendedCertificateCheck");
+
+ final Element extMajorElem = response.createElementNS(MOA_NS_URI, "Major");
+
+ final Element codeMajorCodeElem = response.createElementNS(MOA_NS_URI, "Code");
+ final Element codeMajorNameElem = response.createElementNS(MOA_NS_URI, "Name");
+ codeMajorCodeElem.appendChild(response.createTextNode(Integer.toString(
+ result.getMajorCode())));
+ codeMajorNameElem.appendChild(response.createTextNode(result.getMajorInfo()));
+
+ extMajorElem.appendChild(codeMajorCodeElem);
+ extMajorElem.appendChild(codeMajorNameElem);
+
+ extElem.appendChild(extMajorElem);
+
+ if (result.getMinorCode() >= 0) {
+ final Element extMinorElem = response.createElementNS(MOA_NS_URI, "Minor");
+ final Element codeMinorCodeElem = response.createElementNS(MOA_NS_URI, "Code");
+ final Element codeMinorNameElem = response.createElementNS(MOA_NS_URI, "Name");
+ codeMinorCodeElem.appendChild(response.createTextNode(Integer.toString(
+ result.getMinorCode())));
+ codeMinorNameElem.appendChild(response.createTextNode(result.getMinorInfo()));
+
+ extMinorElem.appendChild(codeMinorCodeElem);
+ extMinorElem.appendChild(codeMinorNameElem);
+
+ extElem.appendChild(extMinorElem);
+ }
+
+ root.appendChild(extElem);
}
-
+
/**
* Add an element containing <code>Code</code> and <code>Info</code>
* subelements.
- *
- * @param response The response document, in order to create new elements in
- * it.
- * @param root The root element into which to insert the newly created
- * element.
+ *
+ * @param response The response document, in order to create new elements in
+ * it.
+ * @param root The root element into which to insert the newly created
+ * element.
* @param elementName The name of the newly created element.
- * @param code The content of the <code>Code</code> subelement.
- * @param info The content of the <code>Info</code> subelement.
+ * @param code The content of the <code>Code</code> subelement.
+ * @param info The content of the <code>Info</code> subelement.
*/
public static void addFormCheckElement(
- Document response,
- Element root,
- String elementName,
- int code,
- String name) {
-
- Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName);
- Element codeElem = response.createElementNS(MOA_NS_URI, "Code");
+ Document response,
+ Element root,
+ String elementName,
+ int code,
+ String name) {
+
+ final Element codeInfoElem = response.createElementNS(MOA_NS_URI, elementName);
+ final Element codeElem = response.createElementNS(MOA_NS_URI, "Code");
Element infoElem;
-
+
codeElem.appendChild(response.createTextNode(Integer.toString(code)));
codeInfoElem.appendChild(codeElem);
-
+
infoElem = response.createElementNS(MOA_NS_URI, "Name");
infoElem.appendChild(response.createTextNode(name));
codeInfoElem.appendChild(infoElem);
-
+
root.appendChild(codeInfoElem);
}
-
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java
index 6dc4803..7a246d6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/TransformParser.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.util.ArrayList;
@@ -48,9 +47,9 @@ import at.gv.egovernment.moaspss.util.DOMUtils;
import at.gv.egovernment.moaspss.util.XPathUtils;
/**
- * A parser to parse XMLDsig <code>Transform</code> DOM elements into their
- * MOA SPSS API representation.
- *
+ * A parser to parse XMLDsig <code>Transform</code> DOM elements into their MOA
+ * SPSS API representation.
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -60,39 +59,38 @@ public class TransformParser {
//
private static final String DSIG = Constants.DSIG_PREFIX + ":";
private static final String DSIG_FILTER2 =
- Constants.DSIG_FILTER2_PREFIX + ":";
+ Constants.DSIG_FILTER2_PREFIX + ":";
private static final String XSLT = Constants.XSLT_PREFIX + ":";
private static final String EC = Constants.DSIG_EC_PREFIX + ":";
private static final String TRANSFORM_XPATH = DSIG + "Transform";
private static final String XPATH_XPATH = DSIG + "XPath";
private static final String XSLT_ELEMENT_XPATH = XSLT + "stylesheet";
private static final String XPATH2_XPATH =
- (DSIG_FILTER2 + "XPath[@Filter=\"intersect\"] | ")
- + (DSIG_FILTER2 + "XPath[@Filter=\"subtract\"] | ")
- + (DSIG_FILTER2 + "XPath[@Filter=\"union\"]");
+ DSIG_FILTER2 + "XPath[@Filter=\"intersect\"] | "
+ + DSIG_FILTER2 + "XPath[@Filter=\"subtract\"] | "
+ + DSIG_FILTER2 + "XPath[@Filter=\"union\"]";
private static final String INCLUSIVE_NAMESPACES_XPATH =
- EC + "InclusiveNamespaces";
+ EC + "InclusiveNamespaces";
/**
* The <code>SPSSFactory</code> to use for creating new API objects.
*/
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/**
* Parse an XMLDsig <code>Transforms</code> DOM element.
- *
+ *
* @param transformsElem The <code>Transforms</code> DOM element to parse.
- * @return A <code>List</code> of <code>Transform</code> API objects
- * containing the data from the individual <code>Transform</code> DOM
- * elements.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>Transforms</code> DOM element.
+ * @return A <code>List</code> of <code>Transform</code> API objects containing
+ * the data from the individual <code>Transform</code> DOM elements.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>Transforms</code> DOM element.
*/
public List parseTransforms(Element transformsElem)
- throws MOAApplicationException {
- List transforms = new ArrayList();
- NodeIterator transformElems =
- XPathUtils.selectNodeIterator(transformsElem, TRANSFORM_XPATH);
+ throws MOAApplicationException {
+ final List transforms = new ArrayList();
+ final NodeIterator transformElems =
+ XPathUtils.selectNodeIterator(transformsElem, TRANSFORM_XPATH);
Element transformElem;
Transform transform;
@@ -106,34 +104,31 @@ public class TransformParser {
/**
* Parse an XMLDsig <code>Transform</code> DOM element.
- *
+ *
* @param transformElem <code>Transform</code> DOM element to parse.
- * @return The <code>Transform</code> API object containing the data
- * from the <code>Transform</code> DOM element.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>Transform</code> DOM element.
+ * @return The <code>Transform</code> API object containing the data from the
+ * <code>Transform</code> DOM element.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>Transform</code> DOM element.
*/
public Transform parseTransform(Element transformElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- String algorithmUri = transformElem.getAttribute("Algorithm");
+ final String algorithmUri = transformElem.getAttribute("Algorithm");
if (CanonicalizationTransform.CANONICAL_XML.equals(algorithmUri)
- || CanonicalizationTransform.CANONICAL_XML_WITH_COMMENTS.equals(
- algorithmUri)) {
+ || CanonicalizationTransform.CANONICAL_XML_WITH_COMMENTS.equals(
+ algorithmUri)) {
return factory.createCanonicalizationTransform(algorithmUri);
- } else if (
- ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals(
+ } else if (ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML.equals(
algorithmUri)
- || ExclusiveCanonicalizationTransform
- .EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS
- .equals(
- algorithmUri)) {
+ || ExclusiveCanonicalizationTransform.EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS
+ .equals(
+ algorithmUri)) {
return parseExclusiveC14nTransform(algorithmUri, transformElem);
} else if (Base64Transform.BASE64_DECODING.equals(algorithmUri)) {
return factory.createBase64Transform();
- } else if (
- EnvelopedSignatureTransform.ENVELOPED_SIGNATURE.equals(algorithmUri)) {
+ } else if (EnvelopedSignatureTransform.ENVELOPED_SIGNATURE.equals(algorithmUri)) {
return factory.createEnvelopedSignatureTransform();
} else if (XPathTransform.XPATH.equals(algorithmUri)) {
return parseXPathTransform(transformElem);
@@ -148,49 +143,47 @@ public class TransformParser {
/**
* Parse an exclusive canonicalization type of transform.
- *
- * @param algorithmUri The algorithm URI of the canonicalization algorithm.
+ *
+ * @param algorithmUri The algorithm URI of the canonicalization algorithm.
* @param transformElem The <code>Transform</code> DOM element to parse.
* @return An <code>ExclusiveCanonicalizationTransform</code> API object
- * containing the data from the <code>transformElem</code>.
+ * containing the data from the <code>transformElem</code>.
*/
private Transform parseExclusiveC14nTransform(
- String algorithmUri,
- Element transformElem)
- {
+ String algorithmUri,
+ Element transformElem) {
- Element inclusiveNamespacesElem =
- (Element) XPathUtils.selectSingleNode(
- transformElem,
- INCLUSIVE_NAMESPACES_XPATH);
+ final Element inclusiveNamespacesElem =
+ (Element) XPathUtils.selectSingleNode(
+ transformElem,
+ INCLUSIVE_NAMESPACES_XPATH);
- List inclusiveNamespaces = new ArrayList();
- if (inclusiveNamespacesElem != null)
- {
- StringTokenizer tokenizer = new StringTokenizer(inclusiveNamespacesElem.getAttribute("PrefixList"));
- while (tokenizer.hasMoreTokens())
- {
+ final List inclusiveNamespaces = new ArrayList();
+ if (inclusiveNamespacesElem != null) {
+ final StringTokenizer tokenizer = new StringTokenizer(inclusiveNamespacesElem.getAttribute(
+ "PrefixList"));
+ while (tokenizer.hasMoreTokens()) {
inclusiveNamespaces.add(tokenizer.nextToken());
}
}
return factory.createExclusiveCanonicalizationTransform(
- algorithmUri,
- inclusiveNamespaces);
+ algorithmUri,
+ inclusiveNamespaces);
}
/**
* Parse an <code>XPath</code> type of <code>Transform</code>.
- *
+ *
* @param transformElem The <code>Transform</code> DOM element to parse.
* @return The <code>Transform</code> API object representation of the
- * <code>Transform</code> DOM element.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>Transform</code> DOM element.
+ * <code>Transform</code> DOM element.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>Transform</code> DOM element.
*/
private Transform parseXPathTransform(Element transformElem)
- throws MOAApplicationException {
- Element xPathElem =
- (Element) XPathUtils.selectSingleNode(transformElem, XPATH_XPATH);
+ throws MOAApplicationException {
+ final Element xPathElem =
+ (Element) XPathUtils.selectSingleNode(transformElem, XPATH_XPATH);
Map nsDecls;
if (xPathElem == null) {
@@ -205,22 +198,22 @@ public class TransformParser {
/**
* Parse an <code>XPathFilter2</code> type of <code>Transform</code>.
- *
+ *
* @param transformElem The <code>Transform</code> DOM element to parse.
* @return The <code>Transform</code> API object representation of the
- * <code>Transform</code> DOM element.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>Transform</code> DOM element.
+ * <code>Transform</code> DOM element.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>Transform</code> DOM element.
*/
private Transform parseXPathFilter2Transform(Element transformElem)
- throws MOAApplicationException {
- List filters = new ArrayList();
- NodeIterator iter =
- XPathUtils.selectNodeIterator(transformElem, XPATH2_XPATH);
+ throws MOAApplicationException {
+ final List filters = new ArrayList();
+ final NodeIterator iter =
+ XPathUtils.selectNodeIterator(transformElem, XPATH2_XPATH);
Element filterElem;
while ((filterElem = (Element) iter.nextNode()) != null) {
- String filterAttr = filterElem.getAttribute("Filter");
+ final String filterAttr = filterElem.getAttribute("Filter");
String filterType;
String expression;
Map nsDecls;
@@ -247,17 +240,17 @@ public class TransformParser {
/**
* Parse an <code>XSLT</code> type of <code>Transform</code>.
- *
+ *
* @param transformElem The <code>Transform</code> DOM element to parse.
* @return The <code>Transform</code> API object representation of the
- * <code>Transform</code> DOM element.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>Transform</code> DOM element.
+ * <code>Transform</code> DOM element.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>Transform</code> DOM element.
*/
private Transform parseXSLTTransform(Element transformElem)
- throws MOAApplicationException {
- Element xsltElem =
- (Element) XPathUtils.selectSingleNode(transformElem, XSLT_ELEMENT_XPATH);
+ throws MOAApplicationException {
+ final Element xsltElem =
+ (Element) XPathUtils.selectSingleNode(transformElem, XSLT_ELEMENT_XPATH);
if (xsltElem == null) {
throw new MOAApplicationException("2215", null);
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java
index cb07b34..bcab978 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureRequestParser.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.io.InputStream;
@@ -39,7 +38,6 @@ import at.gv.egovernment.moa.spss.api.cmsverify.CMSContent;
import at.gv.egovernment.moa.spss.api.cmsverify.CMSDataObject;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
import at.gv.egovernment.moa.spss.api.common.MetaInfo;
-import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.Base64Utils;
import at.gv.egovernment.moaspss.util.CollectionUtils;
import at.gv.egovernment.moaspss.util.Constants;
@@ -49,7 +47,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* A parser to parse <code>VerifyCMSSignatureRequest</code> DOM trees into
* <code>VerifyCMSSignatureRequest</code> API objects.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -63,7 +61,7 @@ public class VerifyCMSSignatureRequestParser {
private static final String EXTENDED_VALIDATION_XPATH = MOA + "ExtendedValidation";
private static final String CMS_SIGNATURE_XPATH = MOA + "CMSSignature";
private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature";
-
+
private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
private static final String DATA_OBJECT_XPATH = MOA + "DataObject";
private static final String META_INFO_XPATH = MOA + "MetaInfo";
@@ -72,110 +70,109 @@ public class VerifyCMSSignatureRequestParser {
private static final String EXCLUDEBYTERANGE_FROM_XPATH = MOA + "ExcludedByteRange/" + MOA + "From";
private static final String EXCLUDEBYTERANGE_TO_XPATH = MOA + "ExcludedByteRange/" + MOA + "To";
-
/** The <code>SPSSFactory</code> for creating new API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/**
- * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined
- * by the MOA schema.
- *
+ * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
* @param requestElem The <code>VerifyCMSSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema for this
- * method to succeed.
- * @return A <code>VerifyCMSSignatureRequest</code> API objects containing
- * the data from the DOM element.
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>VerifyCMSSignatureRequest</code> API objects containing the
+ * data from the DOM element.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public VerifyCMSSignatureRequest parsePDF(Element requestElem)
- throws MOAApplicationException {
-
- int[] signatories = parseSignatories(requestElem);
- Date dateTime =
- RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
- boolean extendedValidation =
- RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
-
- String cmsSignatureStr =
- XPathUtils.getElementValue(requestElem, PDF_SIGNATURE_XPATH, "");
- CMSDataObject dataObject = parseDataObject(requestElem);
- String trustProfileID =
- XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
- //Logger.info("CMSSignature: " + cmsSignatureStr);
- InputStream cmsSignature =
- Base64Utils.decodeToStream(cmsSignatureStr, true);
+ throws MOAApplicationException {
+
+ final int[] signatories = parseSignatories(requestElem);
+ final Date dateTime =
+ RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
+ final boolean extendedValidation =
+ RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
+
+ final String cmsSignatureStr =
+ XPathUtils.getElementValue(requestElem, PDF_SIGNATURE_XPATH, "");
+ final CMSDataObject dataObject = parseDataObject(requestElem);
+ final String trustProfileID =
+ XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
+ // Logger.info("CMSSignature: " + cmsSignatureStr);
+ final InputStream cmsSignature =
+ Base64Utils.decodeToStream(cmsSignatureStr, true);
return factory.createVerifyCMSSignatureRequest(
- signatories,
- dateTime,
- cmsSignature,
- dataObject,
- trustProfileID,
- true,
- extendedValidation);
+ signatories,
+ dateTime,
+ cmsSignature,
+ dataObject,
+ trustProfileID,
+ true,
+ extendedValidation);
}
-
+
/**
- * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined
- * by the MOA schema.
- *
+ * Parse a <code>VerifyCMSSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
* @param requestElem The <code>VerifyCMSSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema for this
- * method to succeed.
- * @return A <code>VerifyCMSSignatureRequest</code> API objects containing
- * the data from the DOM element.
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>VerifyCMSSignatureRequest</code> API objects containing the
+ * data from the DOM element.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public VerifyCMSSignatureRequest parse(Element requestElem)
- throws MOAApplicationException {
-
- int[] signatories = parseSignatories(requestElem);
- Date dateTime =
- RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
- boolean extendedValidation =
- RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
-
- String cmsSignatureStr =
- XPathUtils.getElementValue(requestElem, CMS_SIGNATURE_XPATH, "");
- CMSDataObject dataObject = parseDataObject(requestElem);
- String trustProfileID =
- XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
- InputStream cmsSignature =
- Base64Utils.decodeToStream(cmsSignatureStr, true);
+ throws MOAApplicationException {
+
+ final int[] signatories = parseSignatories(requestElem);
+ final Date dateTime =
+ RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
+ final boolean extendedValidation =
+ RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
+
+ final String cmsSignatureStr =
+ XPathUtils.getElementValue(requestElem, CMS_SIGNATURE_XPATH, "");
+ final CMSDataObject dataObject = parseDataObject(requestElem);
+ final String trustProfileID =
+ XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
+ final InputStream cmsSignature =
+ Base64Utils.decodeToStream(cmsSignatureStr, true);
return factory.createVerifyCMSSignatureRequest(
- signatories,
- dateTime,
- cmsSignature,
- dataObject,
- trustProfileID,
- false,
- extendedValidation);
+ signatories,
+ dateTime,
+ cmsSignature,
+ dataObject,
+ trustProfileID,
+ false,
+ extendedValidation);
}
/**
- * Parse the <code>Signatories</code> attribute contained in the
+ * Parse the <code>Signatories</code> attribute contained in the
* <code>VerifyCMSSignatureRequest</code> DOM element.
- *
+ *
* @param requestElem The <code>VerifyCMSSignatureRequest</code> DOM element.
- * @return The signatories contained in the given
- * <code>VerifyCMSSignatureRequest</code> DOM element.
+ * @return The signatories contained in the given
+ * <code>VerifyCMSSignatureRequest</code> DOM element.
*/
private int[] parseSignatories(Element requestElem) {
- String signatoriesStr = requestElem.getAttribute("Signatories");
+ final String signatoriesStr = requestElem.getAttribute("Signatories");
if ("all".equals(signatoriesStr)) {
return VerifyCMSSignatureRequest.ALL_SIGNATORIES;
} else {
- StringTokenizer tokenizer = new StringTokenizer(signatoriesStr);
- List signatoriesList = new ArrayList();
+ final StringTokenizer tokenizer = new StringTokenizer(signatoriesStr);
+ final List signatoriesList = new ArrayList();
int[] signatories;
// put the signatories into a List
while (tokenizer.hasMoreTokens()) {
try {
signatoriesList.add(new Integer(tokenizer.nextToken()));
- } catch (NumberFormatException e) {
+ } catch (final NumberFormatException e) {
// this cannot occur if the request has been validated
}
}
@@ -188,44 +185,47 @@ public class VerifyCMSSignatureRequestParser {
}
/**
- * Parse a the <code>DataObject</code> DOM element contained in a given
+ * Parse a the <code>DataObject</code> DOM element contained in a given
* <code>VerifyCMSSignatureRequest</code> DOM element.
- *
- * @param requestElem The <code>VerifyCMSSignatureRequest</code> DOM element
- * to parse.
- * @return The <code>CMSDataObject</code> API object containing the data
- * from the <code>DataObject</code> DOM element.
+ *
+ * @param requestElem The <code>VerifyCMSSignatureRequest</code> DOM element to
+ * parse.
+ * @return The <code>CMSDataObject</code> API object containing the data from
+ * the <code>DataObject</code> DOM element.
*/
private CMSDataObject parseDataObject(Element requestElem) {
- Element dataObjectElem =
- (Element) XPathUtils.selectSingleNode(requestElem, DATA_OBJECT_XPATH);
+ final Element dataObjectElem =
+ (Element) XPathUtils.selectSingleNode(requestElem, DATA_OBJECT_XPATH);
if (dataObjectElem != null) {
- Element metaInfoElem =
- (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH);
+ final Element metaInfoElem =
+ (Element) XPathUtils.selectSingleNode(dataObjectElem, META_INFO_XPATH);
MetaInfo metaInfo = null;
- Element contentElem =
- (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH);
- CMSContent content = parseContent(contentElem);
+ final Element contentElem =
+ (Element) XPathUtils.selectSingleNode(dataObjectElem, CONTENT_XPATH);
+ final CMSContent content = parseContent(contentElem);
if (metaInfoElem != null) {
metaInfo = RequestParserUtils.parseMetaInfo(metaInfoElem);
}
- String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_FROM_XPATH, null);
- String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem, EXCLUDEBYTERANGE_TO_XPATH, null);
-
+ final String excludeByteRangeFromStr = XPathUtils.getElementValue(dataObjectElem,
+ EXCLUDEBYTERANGE_FROM_XPATH, null);
+ final String excludeByteRangeToStr = XPathUtils.getElementValue(dataObjectElem,
+ EXCLUDEBYTERANGE_TO_XPATH, null);
+
BigDecimal excludeByteRangeFrom = null;
BigDecimal excludeByteRangeTo = null;
-
- if (excludeByteRangeFromStr != null)
- excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr);
- if (excludeByteRangeToStr != null)
- excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr);
+
+ if (excludeByteRangeFromStr != null) {
+ excludeByteRangeFrom = new BigDecimal(excludeByteRangeFromStr);
+ }
+ if (excludeByteRangeToStr != null) {
+ excludeByteRangeTo = new BigDecimal(excludeByteRangeToStr);
+ }
return factory.createCMSDataObject(metaInfo, content, excludeByteRangeFrom, excludeByteRangeTo);
-
-
+
} else {
return null;
}
@@ -233,25 +233,25 @@ public class VerifyCMSSignatureRequestParser {
}
/**
- * Parse the content contained in a <code>CMSContentBaseType</code> kind of
- * DOM element.
- *
+ * Parse the content contained in a <code>CMSContentBaseType</code> kind of DOM
+ * element.
+ *
* @param contentElem The <code>CMSContentBaseType</code> kind of element to
- * parse.
- * @return A <code>CMSDataObject</code> API object containing the data
- * from the given DOM element.
+ * parse.
+ * @return A <code>CMSDataObject</code> API object containing the data from the
+ * given DOM element.
*/
private CMSContent parseContent(Element contentElem) {
- Element base64ContentElem =
- (Element) XPathUtils.selectSingleNode(contentElem, BASE64_CONTENT_XPATH);
+ final Element base64ContentElem =
+ (Element) XPathUtils.selectSingleNode(contentElem, BASE64_CONTENT_XPATH);
if (base64ContentElem != null) {
- String base64Str = DOMUtils.getText(base64ContentElem);
- InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true);
+ final String base64Str = DOMUtils.getText(base64ContentElem);
+ final InputStream binaryContent = Base64Utils.decodeToStream(base64Str, true);
return factory.createCMSContent(binaryContent);
} else {
return factory.createCMSContent(
- contentElem.getAttribute("Reference"));
+ contentElem.getAttribute("Reference"));
}
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java
index de39948..265d0f3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyCMSSignatureResponseBuilder.java
@@ -21,13 +21,10 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.util.Iterator;
-import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
-import at.gv.egovernment.moaspss.util.Constants;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -38,137 +35,138 @@ import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElemen
import at.gv.egovernment.moa.spss.api.common.CheckResult;
import at.gv.egovernment.moa.spss.api.common.SignerInfo;
import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
+import at.gv.egovernment.moaspss.util.Constants;
/**
- * Convert a <code>VerifyCMSSignatureResponse</code> API object into its
- * XML representation, according to the MOA XML schema.
- *
+ * Convert a <code>VerifyCMSSignatureResponse</code> API object into its XML
+ * representation, according to the MOA XML schema.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class VerifyCMSSignatureResponseBuilder {
/** The XML document containing the response element. */
- private Document responseDoc;
+ private final Document responseDoc;
/** The response <code>VerifyCMSSignatureResponse</code> DOM element. */
- private Element responseElem;
+ private final Element responseElem;
private boolean includeSigningTime = false;
/**
* Create a new <code>VerifyCMSSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException An error occurred setting up the resulting
- * XML document.
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
*/
public VerifyCMSSignatureResponseBuilder() throws MOASystemException {
responseDoc =
- ResponseBuilderUtils.createResponse("VerifyCMSSignatureResponse");
+ ResponseBuilderUtils.createResponse("VerifyCMSSignatureResponse");
responseElem = responseDoc.getDocumentElement();
}
- public VerifyCMSSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime) throws MOASystemException {
- this.responseDoc = responseDoc;
- responseElem = responseDoc.createElementNS(Constants.MOA_NS_URI, name);
- this.includeSigningTime = includeSigningTime;
- }
+ public VerifyCMSSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime)
+ throws MOASystemException {
+ this.responseDoc = responseDoc;
+ responseElem = responseDoc.createElementNS(Constants.MOA_NS_URI, name);
+ this.includeSigningTime = includeSigningTime;
+ }
+
+ public Element buildElement(VerifyCMSSignatureResponse response) throws MOAApplicationException {
+ this.build(response);
+ return responseElem;
+ }
- public Element buildElement(VerifyCMSSignatureResponse response) throws MOAApplicationException {
- this.build(response);
- return responseElem;
- }
-
/**
- * Build a document containing a <code>VerifyCMSSignatureResponse</code>
- * DOM element being the XML representation of the given
+ * Build a document containing a <code>VerifyCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
* <code>VerifyCMSSignatureResponse</code> API object.
- *
- * @param response The <code>VerifyCMSSignatureResponse</code> to convert
- * to XML.
- * @return A document containing the <code>VerifyCMSSignatureResponse</code>
- * DOM element.
+ *
+ * @param response The <code>VerifyCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>VerifyCMSSignatureResponse</code> DOM
+ * element.
* @throws MOAApplicationException An error occurred building the response.
*/
public Document build(VerifyCMSSignatureResponse response)
- throws MOAApplicationException {
+ throws MOAApplicationException {
Iterator iter;
for (iter = response.getResponseElements().iterator(); iter.hasNext();) {
- VerifyCMSSignatureResponseElement responseElement =
- (VerifyCMSSignatureResponseElement) iter.next();
+ final VerifyCMSSignatureResponseElement responseElement =
+ (VerifyCMSSignatureResponseElement) iter.next();
addResponseElement(responseElement);
}
-
+
return responseDoc;
}
/**
* Add an element to the response.
- *
+ *
* @param responseElement The element to add to the response.
* @throws MOAApplicationException An error occurred adding the element.
*/
private void addResponseElement(VerifyCMSSignatureResponseElement responseElement)
- throws MOAApplicationException {
+ throws MOAApplicationException {
+
+ final SignerInfo signerInfo = responseElement.getSignerInfo();
+ final CheckResult signatureCheck = responseElement.getSignatureCheck();
+ final CheckResult certCheck = responseElement.getCertificateCheck();
- SignerInfo signerInfo = responseElement.getSignerInfo();
- CheckResult signatureCheck = responseElement.getSignatureCheck();
- CheckResult certCheck = responseElement.getCertificateCheck();
-
ResponseBuilderUtils.addSignerInfo(
- responseDoc,
- responseElem,
- signerInfo.getSignerCertificate(),
- signerInfo.isQualifiedCertificate(),
- signerInfo.getQCSource(),
- signerInfo.isPublicAuthority(),
- signerInfo.getPublicAuhtorityID(),
- signerInfo.isSSCD(),
- signerInfo.getSSCDSource(),
- signerInfo.getIssuerCountryCode(),
- signerInfo.getTslInfos());
-
- if(this.includeSigningTime) {
+ responseDoc,
+ responseElem,
+ signerInfo.getSignerCertificate(),
+ signerInfo.isQualifiedCertificate(),
+ signerInfo.getQCSource(),
+ signerInfo.isPublicAuthority(),
+ signerInfo.getPublicAuhtorityID(),
+ signerInfo.isSSCD(),
+ signerInfo.getSSCDSource(),
+ signerInfo.getIssuerCountryCode(),
+ signerInfo.getTslInfos());
+
+ if (this.includeSigningTime) {
ResponseBuilderUtils.addSigningTime(responseDoc,
- responseElem, signerInfo.getSigningTime());
+ responseElem, signerInfo.getSigningTime());
}
ResponseBuilderUtils.addSignatureAlgorithm(responseDoc,
- responseElem,
- responseElement.getSignatureAlgorithm());
-
-
+ responseElem,
+ responseElement.getSignatureAlgorithm());
+
ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- responseElem,
- "SignatureCheck",
- signatureCheck.getCode(),
- signatureCheck.getInfo());
+ responseDoc,
+ responseElem,
+ "SignatureCheck",
+ signatureCheck.getCode(),
+ signatureCheck.getInfo());
ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- responseElem,
- "CertificateCheck",
- certCheck.getCode(),
- certCheck.getInfo());
-
+ responseDoc,
+ responseElem,
+ "CertificateCheck",
+ certCheck.getCode(),
+ certCheck.getInfo());
if (responseElement.getAdESFormResults() != null) {
- Iterator formIterator = responseElement.getAdESFormResults().iterator();
-
- while (formIterator.hasNext()) {
- AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
- // add the CertificateCheck
- ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
- adESFormResult.getCode().intValue(), adESFormResult.getName());
-
- }
- }
-
- if(responseElement.getExtendedCertificateCheck() != null) {
- ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement.getExtendedCertificateCheck());
- }
-
+ final Iterator formIterator = responseElement.getAdESFormResults().iterator();
+
+ while (formIterator.hasNext()) {
+ final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
+ // add the CertificateCheck
+ ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
+ adESFormResult.getCode().intValue(), adESFormResult.getName());
+
+ }
+ }
+
+ if (responseElement.getExtendedCertificateCheck() != null) {
+ ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement
+ .getExtendedCertificateCheck());
+ }
+
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java
index 499f514..b9b7d26 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyPDFSignatureResponseBuilder.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlbind;
import java.util.Iterator;
@@ -39,145 +38,144 @@ import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
import at.gv.egovernment.moaspss.logging.Logger;
/**
- * Convert a <code>VerifyCMSSignatureResponse</code> API object into its
- * XML representation, according to the MOA XML schema.
- *
+ * Convert a <code>VerifyCMSSignatureResponse</code> API object into its XML
+ * representation, according to the MOA XML schema.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class VerifyPDFSignatureResponseBuilder {
/** The XML document containing the response element. */
- private Document responseDoc;
+ private final Document responseDoc;
/** The response <code>VerifyCMSSignatureResponse</code> DOM element. */
- private Element responseRootElem;
+ private final Element responseRootElem;
/**
* Create a new <code>VerifyCMSSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException An error occurred setting up the resulting
- * XML document.
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
*/
public VerifyPDFSignatureResponseBuilder() throws MOASystemException {
responseDoc =
- ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse");
+ ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse");
responseRootElem = responseDoc.getDocumentElement();
}
-
+
/**
- * Build a document containing a <code>VerifyCMSSignatureResponse</code>
- * DOM element being the XML representation of the given
+ * Build a document containing a <code>VerifyCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
* <code>VerifyCMSSignatureResponse</code> API object.
- *
- * @param response The <code>VerifyCMSSignatureResponse</code> to convert
- * to XML.
- * @return A document containing the <code>VerifyCMSSignatureResponse</code>
- * DOM element.
+ *
+ * @param response The <code>VerifyCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>VerifyCMSSignatureResponse</code> DOM
+ * element.
* @throws MOAApplicationException An error occurred building the response.
*/
public Document build(VerifyCMSSignatureResponse response)
- throws MOAApplicationException {
+ throws MOAApplicationException {
Iterator iter;
-
for (iter = response.getResponseElements().iterator(); iter.hasNext();) {
- VerifyCMSSignatureResponseElement responseElement =
- (VerifyCMSSignatureResponseElement) iter.next();
- Element signatureResult = ResponseBuilderUtils.addChildElement("SignatureResult", responseDoc, responseRootElem);
+ final VerifyCMSSignatureResponseElement responseElement =
+ (VerifyCMSSignatureResponseElement) iter.next();
+ final Element signatureResult = ResponseBuilderUtils.addChildElement("SignatureResult", responseDoc,
+ responseRootElem);
addResponseElement(responseElement, signatureResult);
-
+
}
-
+
return responseDoc;
}
/**
* Add an element to the response.
- *
+ *
* @param responseElement The element to add to the response.
- * @param signatureResult
+ * @param signatureResult
* @throws MOAApplicationException An error occurred adding the element.
*/
private void addResponseElement(VerifyCMSSignatureResponseElement responseElement, Element responseElem)
- throws MOAApplicationException {
+ throws MOAApplicationException {
+
+ final SignerInfo signerInfo = responseElement.getSignerInfo();
+ final CheckResult signatureCheck = responseElement.getSignatureCheck();
+ final CheckResult certCheck = responseElement.getCertificateCheck();
- SignerInfo signerInfo = responseElement.getSignerInfo();
- CheckResult signatureCheck = responseElement.getSignatureCheck();
- CheckResult certCheck = responseElement.getCertificateCheck();
-
if (signerInfo != null) {
- ResponseBuilderUtils.addSignerInfo(
- responseDoc,
- responseElem,
- signerInfo.getSignerCertificate(),
- signerInfo.isQualifiedCertificate(),
- signerInfo.getQCSource(),
- signerInfo.isPublicAuthority(),
- signerInfo.getPublicAuhtorityID(),
- signerInfo.isSSCD(),
- signerInfo.getSSCDSource(),
- signerInfo.getIssuerCountryCode(),
- signerInfo.getTslInfos());
-
- ResponseBuilderUtils.addSigningTime(responseDoc,
- responseElem,
- signerInfo.getSigningTime());
-
-
+ ResponseBuilderUtils.addSignerInfo(
+ responseDoc,
+ responseElem,
+ signerInfo.getSignerCertificate(),
+ signerInfo.isQualifiedCertificate(),
+ signerInfo.getQCSource(),
+ signerInfo.isPublicAuthority(),
+ signerInfo.getPublicAuhtorityID(),
+ signerInfo.isSSCD(),
+ signerInfo.getSSCDSource(),
+ signerInfo.getIssuerCountryCode(),
+ signerInfo.getTslInfos());
+
+ ResponseBuilderUtils.addSigningTime(responseDoc,
+ responseElem,
+ signerInfo.getSigningTime());
+
} else {
- Logger.info("Find signature result with no 'SignerInfo'. Maybe a signature verification Failed");
-
+ Logger.info("Find signature result with no 'SignerInfo'. Maybe a signature verification Failed");
+
}
ResponseBuilderUtils.addSignatureAlgorithm(responseDoc,
- responseElem,
- responseElement.getSignatureAlgorithm());
-
+ responseElem,
+ responseElement.getSignatureAlgorithm());
+
ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- responseElem,
- "SignatureCheck",
- signatureCheck.getCode(),
- signatureCheck.getInfo());
+ responseDoc,
+ responseElem,
+ "SignatureCheck",
+ signatureCheck.getCode(),
+ signatureCheck.getInfo());
ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- responseElem,
- "CertificateCheck",
- certCheck.getCode(),
- certCheck.getInfo());
-
+ responseDoc,
+ responseElem,
+ "CertificateCheck",
+ certCheck.getCode(),
+ certCheck.getInfo());
if (responseElement.getAdESFormResults() != null) {
- Iterator formIterator = responseElement.getAdESFormResults().iterator();
-
- while (formIterator.hasNext()) {
- AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
- // add the CertificateCheck
- ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
- adESFormResult.getCode().intValue(), adESFormResult.getName());
-
- }
- }
-
- if(responseElement.getExtendedCertificateCheck() != null) {
- ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement.getExtendedCertificateCheck());
- }
-
-
- //add additional PDF signature properteis
- if (responseElement.getCoversFullDocument() != null ||
- responseElement.getByteRangeOfSignature() != null) {
- Element pdfSigProps = ResponseBuilderUtils.createAndAddChildElement(responseDoc, responseElem, "SignatureProperties");
- ResponseBuilderUtils.addSignatureCoversFullPDF(responseDoc,
- pdfSigProps,
- responseElement.getCoversFullDocument());
- ResponseBuilderUtils.addSignatureByteRange(responseDoc,
- pdfSigProps,
- responseElement.getByteRangeOfSignature());
+ final Iterator formIterator = responseElement.getAdESFormResults().iterator();
+
+ while (formIterator.hasNext()) {
+ final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
+ // add the CertificateCheck
+ ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
+ adESFormResult.getCode().intValue(), adESFormResult.getName());
+
+ }
+ }
+
+ if (responseElement.getExtendedCertificateCheck() != null) {
+ ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, responseElement
+ .getExtendedCertificateCheck());
+ }
+
+ // add additional PDF signature properteis
+ if (responseElement.getCoversFullDocument() != null ||
+ responseElement.getByteRangeOfSignature() != null) {
+ final Element pdfSigProps = ResponseBuilderUtils.createAndAddChildElement(responseDoc, responseElem,
+ "SignatureProperties");
+ ResponseBuilderUtils.addSignatureCoversFullPDF(responseDoc,
+ pdfSigProps,
+ responseElement.getCoversFullDocument());
+ ResponseBuilderUtils.addSignatureByteRange(responseDoc,
+ pdfSigProps,
+ responseElement.getByteRangeOfSignature());
}
-
+
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java
index f1bb1d7..1360c5f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureRequestParser.java
@@ -51,236 +51,230 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
*/
public class VerifyXMLSignatureRequestParser {
- //
- // XPath expressions for parsing parts of the request
- //
- private static final String MOA = Constants.MOA_PREFIX + ":";
- private static final String DATE_TIME_XPATH = MOA + "DateTime";
- private static final String EXTENDED_VALIDATION_XPATH = MOA + "ExtendedValidation";
- private static final String RETURN_HASH_INPUT_DATA_XPATH = MOA + "ReturnHashInputData";
- private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
- private static final String VERIFY_SIGNATURE_ENVIRONMENT_XPATH = MOA + "VerifySignatureInfo/" + MOA
- + "VerifySignatureEnvironment";
- private static final String VERIFY_SIGNATURE_LOCATION_XPATH = MOA + "VerifySignatureInfo/" + MOA
- + "VerifySignatureLocation";
- private static final String SUPPLEMENT_PROFILE_XPATH = MOA + "SupplementProfile | " + MOA + "SupplementProfileID";
- private static final String SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH = MOA + "SignatureManifestCheckParams";
- private static final String VERIFY_TRANSFORMS_INFO_PROFILE_XPATH = (MOA + "VerifyTransformsInfoProfile | ")
- + (MOA + "VerifyTransformsInfoProfileID");
- private static final String REFERENCE_INFO_XPATH = MOA + "ReferenceInfo";
-
- /** The <code>SPSSFactory</code> for creating new API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
-
- /**
- * Parse a <code>VerifyXMLSignatureRequest</code> DOM element, as defined
- * by the MOA schema.
- *
+ //
+ // XPath expressions for parsing parts of the request
+ //
+ private static final String MOA = Constants.MOA_PREFIX + ":";
+ private static final String DATE_TIME_XPATH = MOA + "DateTime";
+ private static final String EXTENDED_VALIDATION_XPATH = MOA + "ExtendedValidation";
+ private static final String RETURN_HASH_INPUT_DATA_XPATH = MOA + "ReturnHashInputData";
+ private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
+ private static final String VERIFY_SIGNATURE_ENVIRONMENT_XPATH = MOA + "VerifySignatureInfo/" + MOA
+ + "VerifySignatureEnvironment";
+ private static final String VERIFY_SIGNATURE_LOCATION_XPATH = MOA + "VerifySignatureInfo/" + MOA
+ + "VerifySignatureLocation";
+ private static final String SUPPLEMENT_PROFILE_XPATH = MOA + "SupplementProfile | " + MOA
+ + "SupplementProfileID";
+ private static final String SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH = MOA + "SignatureManifestCheckParams";
+ private static final String VERIFY_TRANSFORMS_INFO_PROFILE_XPATH = MOA + "VerifyTransformsInfoProfile | "
+ + MOA + "VerifyTransformsInfoProfileID";
+ private static final String REFERENCE_INFO_XPATH = MOA + "ReferenceInfo";
+
+ /** The <code>SPSSFactory</code> for creating new API objects. */
+ private final SPSSFactory factory = SPSSFactory.getInstance();
+
+ /**
+ * Parse a <code>VerifyXMLSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
* @param requestElem The <code>VerifyXMLSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema for this
- * method to succeed.
- * @return A <code>VerifyXMLSignatureRequest</code> API object containing
- * the data from the DOM element.
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>VerifyXMLSignatureRequest</code> API object containing the
+ * data from the DOM element.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public VerifyXMLSignatureRequest parse(Element requestElem)
- throws MOAApplicationException {
-
- Date dateTime =
- RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
-
- boolean extendedValidation =
- RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
-
- VerifySignatureInfo verifySignatureInfo =
- parseVerifySignatureInfo(requestElem);
- List supplementProfiles = parseSupplementProfiles(requestElem);
- SignatureManifestCheckParams signatureManifestCheckParams =
- parseSignatureManifestCheckParams(requestElem);
- boolean returnHashInputData =
- XPathUtils.selectSingleNode(requestElem, RETURN_HASH_INPUT_DATA_XPATH)
- != null;
- String trustProfileID =
- XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
+ throws MOAApplicationException {
+
+ final Date dateTime =
+ RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
+
+ final boolean extendedValidation =
+ RequestParserUtils.parseExtendedValidation(requestElem, EXTENDED_VALIDATION_XPATH, false);
+
+ final VerifySignatureInfo verifySignatureInfo =
+ parseVerifySignatureInfo(requestElem);
+ final List supplementProfiles = parseSupplementProfiles(requestElem);
+ final SignatureManifestCheckParams signatureManifestCheckParams =
+ parseSignatureManifestCheckParams(requestElem);
+ final boolean returnHashInputData =
+ XPathUtils.selectSingleNode(requestElem, RETURN_HASH_INPUT_DATA_XPATH) != null;
+ final String trustProfileID =
+ XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
return factory.createVerifyXMLSignatureRequest(
- dateTime,
- verifySignatureInfo,
- supplementProfiles,
- signatureManifestCheckParams,
- returnHashInputData,
- trustProfileID,
- extendedValidation);
+ dateTime,
+ verifySignatureInfo,
+ supplementProfiles,
+ signatureManifestCheckParams,
+ returnHashInputData,
+ trustProfileID,
+ extendedValidation);
}
- /**
- * Parse the <code>VerifySignatureInfo</code> DOM element contained in the
- * <code>VerifyXMLSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyXMLSignatureRequest</code> DOM element
- * containing the <code>VerifySignatureInfo</code> DOM element.
- * @return The <code>VerifySignatureInfo</code> API object containing the
- * data from the DOM element.
- */
- private VerifySignatureInfo parseVerifySignatureInfo(Element requestElem) {
- Element verifySignatureEnvironmentElem = (Element) XPathUtils.selectSingleNode(requestElem,
- VERIFY_SIGNATURE_ENVIRONMENT_XPATH);
- Content verifySignatureEnvironment = RequestParserUtils.parseContent(verifySignatureEnvironmentElem);
- VerifySignatureLocation verifySignatureLocation = parseVerifySignatureLocation(requestElem);
-
- return factory.createVerifySignatureInfo(verifySignatureEnvironment, verifySignatureLocation);
- }
-
- /**
- * Parse the <code>VerifySignatureLocation</code> DOM element contained in
- * the given <code>VerifyXMLSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyXMLSignatureRequst</code> DOM element.
- * @return The <code>VerifySignatureLocation</code> API object containing
- * the data from the DOM element.
- */
- private VerifySignatureLocation parseVerifySignatureLocation(Element requestElem) {
- Element locationElem = (Element) XPathUtils.selectSingleNode(requestElem, VERIFY_SIGNATURE_LOCATION_XPATH);
- String xPathExpression = DOMUtils.getText(locationElem);
- Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem);
-
- return factory.createVerifySignatureLocation(xPathExpression, namespaceDeclarations);
- }
-
- /**
- * Parse the supplement profiles contained in the given
- * <code>VerifyXMLSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyXMLSignatureRequest</code> DOM element.
- * @return A <code>List</code> of <code>SupplementProfile</code> API objects
- * containing the data from the <code>SupplementProfile</code> DOM
- * elements.
- */
- private List parseSupplementProfiles(Element requestElem) {
- List supplementProfiles = new ArrayList();
- NodeIterator profileElems = XPathUtils.selectNodeIterator(requestElem, SUPPLEMENT_PROFILE_XPATH);
- Element profileElem;
-
- while ((profileElem = (Element) profileElems.nextNode()) != null) {
- SupplementProfile profile;
-
- if ("SupplementProfile".equals(profileElem.getLocalName())) {
- ProfileParser profileParser = new ProfileParser();
- profile = profileParser.parseSupplementProfile(profileElem);
- } else {
- String profileID = DOMUtils.getText(profileElem);
- profile = factory.createSupplementProfile(profileID);
- }
- supplementProfiles.add(profile);
- }
- return supplementProfiles;
- }
-
- /**
- * Parse the <code>SignatureManifestCheckParams</code> DOM element contained
- * in the given <code>VerifyXMLSignatureRequest</code> DOM element.
- *
- * @param requestElem
- * The <code>VerifyXMLSignatureRequest</code> DOM element.
- * @return The <code>SignatureManifestCheckParams</code> API object
- * containing the data from the
- * <code>SignatureManifestCheckParams</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the
- * <code>SignatureManifestCheckParams</code> DOM element.
- */
- private SignatureManifestCheckParams parseSignatureManifestCheckParams(Element requestElem)
- throws MOAApplicationException {
- Element paramsElem = (Element) XPathUtils.selectSingleNode(requestElem, SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH);
-
- if (paramsElem != null) {
- String returnReferenceInputDataStr = paramsElem.getAttribute("ReturnReferenceInputData");
- boolean returnReferencInputData = BoolUtils.valueOf(returnReferenceInputDataStr);
- List referenceInfos = parseReferenceInfos(paramsElem);
-
- return factory.createSignatureManifestCheckParams(referenceInfos, returnReferencInputData);
- } else {
- return null;
- }
- }
-
- /**
- * Parse the <code>ReferenceInfo</code> DOM elements contained in a
- * <code>SignatureManifestCheckParams</code> DOM element.
- *
- * @param paramsElem
- * The <code>SignatureManifestCheckParams</code> DOM element
- * containing the <code>ReferenceInfo</code> DOM elements.
- * @return A <code>List</code> of <code>RefernceInfo</code> API objects
- * containing the data from the <code>ReferenceInfo</code> DOM
- * elements.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>ReferenceInfo</code> DOM
- * elements.
- */
- private List parseReferenceInfos(Element paramsElem) throws MOAApplicationException {
-
- List referenceInfos = new ArrayList();
- NodeIterator refInfoElems = XPathUtils.selectNodeIterator(paramsElem, REFERENCE_INFO_XPATH);
- Element refInfoElem;
-
- while ((refInfoElem = (Element) refInfoElems.nextNode()) != null) {
- ReferenceInfo referenceInfo = parseReferenceInfo(refInfoElem);
-
- referenceInfos.add(referenceInfo);
- }
-
- return referenceInfos;
- }
-
- /**
- * Parse a <code>ReferenceInfo</code> DOM element.
- *
- * @param refInfoElem
- * The <code>ReferenceInfo</code> DOM element to parse.
- * @return The <code>ReferenceInfo</code> API object containing the data
- * from the given <code>ReferenceInfo</code> DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the <code>ReferenceInfo</code> DOM
- * element.
- */
- private ReferenceInfo parseReferenceInfo(Element refInfoElem) throws MOAApplicationException {
- List profiles = parseVerifyTransformsInfoProfiles(refInfoElem);
- return factory.createReferenceInfo(profiles);
- }
-
- /**
- * Parse the <code>VerifyTransformsInfoProfile</code> DOM elements contained
- * in a <code>ReferenceInfo</code> DOM element.
- *
- * @param refInfoElem
- * <code>ReferenceInfo</code> DOM element containing the
- * <code>VerifyTransformsInfoProfile</code> DOM elements.
- * @return A <code>List</code> of <code>VerifyTransformsInfoProfile</code>
- * API objects containing the profile data.
- * @throws MOAApplicationException
- * An error occurred building the
- * <code>VerifyTransformsInfoProfile</code>s.
- */
- private List parseVerifyTransformsInfoProfiles(Element refInfoElem) throws MOAApplicationException {
-
- List profiles = new ArrayList();
- NodeIterator profileElems = XPathUtils.selectNodeIterator(refInfoElem, VERIFY_TRANSFORMS_INFO_PROFILE_XPATH);
- Element profileElem;
-
- while ((profileElem = (Element) profileElems.nextNode()) != null) {
- if ("VerifyTransformsInfoProfile".equals(profileElem.getLocalName())) {
- ProfileParser profileParser = new ProfileParser();
- profiles.add(profileParser.parseVerifyTransformsInfoProfile(profileElem));
- } else {
- String profileID = DOMUtils.getText(profileElem);
- profiles.add(factory.createVerifyTransformsInfoProfile(profileID));
- }
- }
- return profiles;
- }
+ /**
+ * Parse the <code>VerifySignatureInfo</code> DOM element contained in the
+ * <code>VerifyXMLSignatureRequest</code> DOM element.
+ *
+ * @param requestElem The <code>VerifyXMLSignatureRequest</code> DOM element
+ * containing the <code>VerifySignatureInfo</code> DOM
+ * element.
+ * @return The <code>VerifySignatureInfo</code> API object containing the data
+ * from the DOM element.
+ */
+ private VerifySignatureInfo parseVerifySignatureInfo(Element requestElem) {
+ final Element verifySignatureEnvironmentElem = (Element) XPathUtils.selectSingleNode(requestElem,
+ VERIFY_SIGNATURE_ENVIRONMENT_XPATH);
+ final Content verifySignatureEnvironment = RequestParserUtils.parseContent(
+ verifySignatureEnvironmentElem);
+ final VerifySignatureLocation verifySignatureLocation = parseVerifySignatureLocation(requestElem);
+
+ return factory.createVerifySignatureInfo(verifySignatureEnvironment, verifySignatureLocation);
+ }
+
+ /**
+ * Parse the <code>VerifySignatureLocation</code> DOM element contained in the
+ * given <code>VerifyXMLSignatureRequest</code> DOM element.
+ *
+ * @param requestElem The <code>VerifyXMLSignatureRequst</code> DOM element.
+ * @return The <code>VerifySignatureLocation</code> API object containing the
+ * data from the DOM element.
+ */
+ private VerifySignatureLocation parseVerifySignatureLocation(Element requestElem) {
+ final Element locationElem = (Element) XPathUtils.selectSingleNode(requestElem,
+ VERIFY_SIGNATURE_LOCATION_XPATH);
+ final String xPathExpression = DOMUtils.getText(locationElem);
+ final Map namespaceDeclarations = DOMUtils.getNamespaceDeclarations(locationElem);
+
+ return factory.createVerifySignatureLocation(xPathExpression, namespaceDeclarations);
+ }
+
+ /**
+ * Parse the supplement profiles contained in the given
+ * <code>VerifyXMLSignatureRequest</code> DOM element.
+ *
+ * @param requestElem The <code>VerifyXMLSignatureRequest</code> DOM element.
+ * @return A <code>List</code> of <code>SupplementProfile</code> API objects
+ * containing the data from the <code>SupplementProfile</code> DOM
+ * elements.
+ */
+ private List parseSupplementProfiles(Element requestElem) {
+ final List supplementProfiles = new ArrayList();
+ final NodeIterator profileElems = XPathUtils.selectNodeIterator(requestElem, SUPPLEMENT_PROFILE_XPATH);
+ Element profileElem;
+
+ while ((profileElem = (Element) profileElems.nextNode()) != null) {
+ SupplementProfile profile;
+
+ if ("SupplementProfile".equals(profileElem.getLocalName())) {
+ final ProfileParser profileParser = new ProfileParser();
+ profile = profileParser.parseSupplementProfile(profileElem);
+ } else {
+ final String profileID = DOMUtils.getText(profileElem);
+ profile = factory.createSupplementProfile(profileID);
+ }
+ supplementProfiles.add(profile);
+ }
+ return supplementProfiles;
+ }
+
+ /**
+ * Parse the <code>SignatureManifestCheckParams</code> DOM element contained in
+ * the given <code>VerifyXMLSignatureRequest</code> DOM element.
+ *
+ * @param requestElem The <code>VerifyXMLSignatureRequest</code> DOM element.
+ * @return The <code>SignatureManifestCheckParams</code> API object containing
+ * the data from the <code>SignatureManifestCheckParams</code> DOM
+ * element.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>SignatureManifestCheckParams</code> DOM
+ * element.
+ */
+ private SignatureManifestCheckParams parseSignatureManifestCheckParams(Element requestElem)
+ throws MOAApplicationException {
+ final Element paramsElem = (Element) XPathUtils.selectSingleNode(requestElem,
+ SIGNATURE_MANIFEST_CHECK_PARAMS_XPATH);
+
+ if (paramsElem != null) {
+ final String returnReferenceInputDataStr = paramsElem.getAttribute("ReturnReferenceInputData");
+ final boolean returnReferencInputData = BoolUtils.valueOf(returnReferenceInputDataStr);
+ final List referenceInfos = parseReferenceInfos(paramsElem);
+
+ return factory.createSignatureManifestCheckParams(referenceInfos, returnReferencInputData);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Parse the <code>ReferenceInfo</code> DOM elements contained in a
+ * <code>SignatureManifestCheckParams</code> DOM element.
+ *
+ * @param paramsElem The <code>SignatureManifestCheckParams</code> DOM element
+ * containing the <code>ReferenceInfo</code> DOM elements.
+ * @return A <code>List</code> of <code>RefernceInfo</code> API objects
+ * containing the data from the <code>ReferenceInfo</code> DOM elements.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>ReferenceInfo</code> DOM elements.
+ */
+ private List parseReferenceInfos(Element paramsElem) throws MOAApplicationException {
+
+ final List referenceInfos = new ArrayList();
+ final NodeIterator refInfoElems = XPathUtils.selectNodeIterator(paramsElem, REFERENCE_INFO_XPATH);
+ Element refInfoElem;
+
+ while ((refInfoElem = (Element) refInfoElems.nextNode()) != null) {
+ final ReferenceInfo referenceInfo = parseReferenceInfo(refInfoElem);
+
+ referenceInfos.add(referenceInfo);
+ }
+
+ return referenceInfos;
+ }
+
+ /**
+ * Parse a <code>ReferenceInfo</code> DOM element.
+ *
+ * @param refInfoElem The <code>ReferenceInfo</code> DOM element to parse.
+ * @return The <code>ReferenceInfo</code> API object containing the data from
+ * the given <code>ReferenceInfo</code> DOM element.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>ReferenceInfo</code> DOM element.
+ */
+ private ReferenceInfo parseReferenceInfo(Element refInfoElem) throws MOAApplicationException {
+ final List profiles = parseVerifyTransformsInfoProfiles(refInfoElem);
+ return factory.createReferenceInfo(profiles);
+ }
+
+ /**
+ * Parse the <code>VerifyTransformsInfoProfile</code> DOM elements contained in
+ * a <code>ReferenceInfo</code> DOM element.
+ *
+ * @param refInfoElem <code>ReferenceInfo</code> DOM element containing the
+ * <code>VerifyTransformsInfoProfile</code> DOM elements.
+ * @return A <code>List</code> of <code>VerifyTransformsInfoProfile</code> API
+ * objects containing the profile data.
+ * @throws MOAApplicationException An error occurred building the
+ * <code>VerifyTransformsInfoProfile</code>s.
+ */
+ private List parseVerifyTransformsInfoProfiles(Element refInfoElem) throws MOAApplicationException {
+
+ final List profiles = new ArrayList();
+ final NodeIterator profileElems = XPathUtils.selectNodeIterator(refInfoElem,
+ VERIFY_TRANSFORMS_INFO_PROFILE_XPATH);
+ Element profileElem;
+
+ while ((profileElem = (Element) profileElems.nextNode()) != null) {
+ if ("VerifyTransformsInfoProfile".equals(profileElem.getLocalName())) {
+ final ProfileParser profileParser = new ProfileParser();
+ profiles.add(profileParser.parseVerifyTransformsInfoProfile(profileElem));
+ } else {
+ final String profileID = DOMUtils.getText(profileElem);
+ profiles.add(factory.createVerifyTransformsInfoProfile(profileID));
+ }
+ }
+ return profiles;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java
index 0b73442..48206c9 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlbind/VerifyXMLSignatureResponseBuilder.java
@@ -32,10 +32,6 @@ import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
-import at.gv.egovernment.moaspss.logging.Logger;
-import at.gv.egovernment.moaspss.util.Base64Utils;
-import at.gv.egovernment.moaspss.util.Constants;
-import at.gv.egovernment.moaspss.util.MiscUtil;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.common.Content;
@@ -46,319 +42,315 @@ import at.gv.egovernment.moa.spss.api.xmlverify.AdESFormResults;
import at.gv.egovernment.moa.spss.api.xmlverify.ManifestRefsCheckResult;
import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResult;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
+import at.gv.egovernment.moaspss.util.Base64Utils;
+import at.gv.egovernment.moaspss.util.Constants;
+import at.gv.egovernment.moaspss.util.MiscUtil;
/**
* Convert a <code>VerifyXMLSignatureResponse</code> API object into its XML
* representation, according to the MOA XML schema.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class VerifyXMLSignatureResponseBuilder {
- private static final String MOA_NS_URI = Constants.MOA_NS_URI;
-
- /** The XML document containing the response element. */
- private Document responseDoc;
- /** The response <code>VerifyXMLSignatureResponse</code> DOM element. */
- private Element responseElem;
-
- private boolean includeSigningTime = false;
- /**
- * Create a new <code>VerifyXMLSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException
- * An error occurred setting up the resulting XML document.
- */
- public VerifyXMLSignatureResponseBuilder() throws MOASystemException {
- responseDoc = ResponseBuilderUtils.createResponse("VerifyXMLSignatureResponse");
- responseElem = responseDoc.getDocumentElement();
- }
-
- public VerifyXMLSignatureResponseBuilder(boolean includeSigningTime) throws MOASystemException {
- responseDoc = ResponseBuilderUtils.createResponse("VerifyXMLSignatureResponse");
- responseElem = responseDoc.getDocumentElement();
- this.includeSigningTime = includeSigningTime;
- }
-
- public VerifyXMLSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime) throws MOASystemException {
- this.responseDoc = responseDoc;
- responseElem = responseDoc.createElementNS(MOA_NS_URI, name);
- this.includeSigningTime = includeSigningTime;
- }
-
- public Element buildElement(VerifyXMLSignatureResponse response) throws MOAApplicationException {
- this.build(response);
- return responseElem;
- }
-
- /**
- * Build a document containing a <code>VerifyXMLSignatureResponse</code> DOM
- * element being the XML representation of the given
- * <code>VerifyXMLSignatureResponse</code> API object.
- *
- * @param response
- * The <code>VerifyXMLSignatureResponse</code> to convert to XML.
- * @return A document containing the <code>VerifyXMLSignatureResponse</code>
- * DOM element.
- * @throws MOAApplicationException
- * An error occurred building the response.
- */
- public Document build(VerifyXMLSignatureResponse response) throws MOAApplicationException {
-
- Iterator iter;
- List responseData;
-
- // add the SignerInfo
- ResponseBuilderUtils.addSignerInfo(responseDoc, responseElem, response.getSignerInfo().getSignerCertificate(),
- response.getSignerInfo().isQualifiedCertificate(), response.getSignerInfo().getQCSource(),
- response.getSignerInfo().isPublicAuthority(), response.getSignerInfo().getPublicAuhtorityID(),
- response.getSignerInfo().isSSCD(), response.getSignerInfo().getSSCDSource(),
- response.getSignerInfo().getIssuerCountryCode(),
- response.getSignerInfo().getTslInfos());
-
- if(this.includeSigningTime) {
- ResponseBuilderUtils.addSigningTime(responseDoc,
- responseElem, response.getSignerInfo().getSigningTime());
- }
-
- // add HashInputData elements
- responseData = response.getHashInputDatas();
- if (responseData != null && !responseData.isEmpty()) {
- for (iter = responseData.iterator(); iter.hasNext();) {
- InputData inputData = (InputData) iter.next();
- addContent("HashInputData", inputData);
- }
- }
-
- // add ReferenceInputData elements
- responseData = response.getReferenceInputDatas();
- if (responseData != null && !responseData.isEmpty()) {
- for (iter = responseData.iterator(); iter.hasNext();) {
- InputData inputData = (InputData) iter.next();
- addContent("ReferenceInputData", inputData);
- }
- }
-
- //add hash algorithm
- ResponseBuilderUtils.addSignatureAlgorithm(responseDoc, responseElem, response.getSignatureAlgorithm());
-
- // add the SignatureCheck
- addReferencesCheckResult("SignatureCheck", response.getSignatureCheck());
-
- // add the SignatureManifestCheck
- if (response.getSignatureManifestCheck() != null) {
- addReferencesCheckResult("SignatureManifestCheck", response.getSignatureManifestCheck());
- }
-
- // add the XMLDsigManifestChecks
- responseData = response.getXMLDsigManifestChecks();
- if (responseData != null && !responseData.isEmpty()) {
- for (iter = responseData.iterator(); iter.hasNext();) {
- ManifestRefsCheckResult checkResult = (ManifestRefsCheckResult) iter.next();
- addManifestRefsCheckResult("XMLDSIGManifestCheck", checkResult);
- }
- }
-
- // add the CertificateCheck
- ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, "CertificateCheck",
- response.getCertificateCheck().getCode(), response.getCertificateCheck().getInfo());
-
- if (response.getAdESFormResults() != null) {
-
- Iterator formIterator = response.getAdESFormResults().iterator();
-
- while (formIterator.hasNext()) {
- AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
- // add the CertificateCheck
- ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
- adESFormResult.getCode().intValue(), adESFormResult.getName());
-
- }
- }
-
- if(response.getExtendedCertificateCheck() != null) {
- ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, response.getExtendedCertificateCheck());
- }
-
- return responseDoc;
- }
-
- /**
- * Add an element of type <code>ContentBaseType</code> to the response.
- *
- * @param elementName
- * The name of the element.
- *
- * @param inputData
- * The <code>InputData</code> to add. Based on the type of
- *
- * the <code>InputData</code>, either a
- * <code>Base64Content</code> element or a
- * <code>XMLContent</code> subelement will be added. An <code>
- * InputDataBinaryImpl</code> will be added as a <code>Base64Content</code>
- * child element. An<code>InputDataXMLImpl</code> will be added
- * as <code>
- * XMLContent</code> child element.
- *
- * @throws MOAApplicationException
- * An error occurred adding the content.
- */
- private void addContent(String elementName, InputData inputData) throws MOAApplicationException {
-
- Element contentElem = responseDoc.createElementNS(MOA_NS_URI, elementName);
-
- contentElem.setAttributeNS(null, "PartOf", inputData.getPartOf());
- if (inputData.getReferringReferenceNumber() != InputData.REFERER_NONE_)
- contentElem.setAttributeNS(null, "ReferringSigReference",
- Integer.toString(inputData.getReferringReferenceNumber()));
-
- if (MiscUtil.isNotEmpty(inputData.getHashAlgorithm())) {
- contentElem.setAttribute("HashAlgorithm", inputData.getHashAlgorithm());
-
- }
-
- switch (inputData.getContentType()) {
- case Content.XML_CONTENT:
- ContentXML contentXml = (ContentXML) inputData;
- NodeList nodes = contentXml.getXMLContent();
- Element xmlElem;
- int i;
-
- xmlElem = responseDoc.createElementNS(MOA_NS_URI, "XMLContent");
- // xmlElem.setAttributeNS(XML_NS_URI, "xml:space", "preserve");
- xmlElem.setAttribute("xml:space", "preserve");
-
- for (i = 0; i < nodes.getLength(); i++) {
- xmlElem.appendChild(responseDoc.importNode(nodes.item(i), true));
- }
- contentElem.appendChild(xmlElem);
- responseElem.appendChild(contentElem);
- break;
- case Content.BINARY_CONTENT:
- Element binaryElem = responseDoc.createElementNS(MOA_NS_URI, "Base64Content");
- ContentBinary contentBinary = (ContentBinary) inputData;
- String base64Str;
-
- try {
- base64Str = Base64Utils.encode(contentBinary.getBinaryContent());
- } catch (IOException e) {
- throw new MOAApplicationException("2200", null, e);
- }
- binaryElem.appendChild(responseDoc.createTextNode(base64Str));
- contentElem.appendChild(binaryElem);
- responseElem.appendChild(contentElem);
- break;
- }
-
- }
-
- /**
- * Add a <code>ReferencesCheckResult</code> to the response.
- *
- * @param elementName
- * The DOM element name to use.
- * @param checkResult
- * The <code>ReferencesCheckResult</code> to add.
- */
- private void addReferencesCheckResult(String elementName, ReferencesCheckResult checkResult) {
-
- NodeList info = null;
-
- if (checkResult.getInfo() != null) {
- DocumentFragment fragment = responseDoc.createDocumentFragment();
- NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo();
- int[] failedReferences = checkResult.getInfo().getFailedReferences();
-
- if (anyOtherInfo != null) {
- addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo());
- }
-
- if (failedReferences != null) {
- addFailedReferences(fragment, failedReferences);
- }
-
- info = fragment.getChildNodes();
- }
-
- ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(), info);
-
- }
-
- /**
- * Add a <code>ManifestRefsCheckResult</code> to the response.
- *
- * @param elementName
- * The DOM element name to use.
- * @param checkResult
- * The <code>ManifestRefsCheckResult</code> to add.
- */
- private void addManifestRefsCheckResult(String elementName, ManifestRefsCheckResult checkResult) {
-
- DocumentFragment fragment = responseDoc.createDocumentFragment();
- NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo();
- int[] failedReferences = checkResult.getInfo().getFailedReferences();
- Element referringSigRefElem;
- String referringSigRefStr;
-
- // add any other elements
- if (anyOtherInfo != null) {
- addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo());
- }
-
- // add the failed references
- if (failedReferences != null) {
- addFailedReferences(fragment, failedReferences);
- }
-
- // add the ReferringSigReference
- referringSigRefElem = responseDoc.createElementNS(MOA_NS_URI, "ReferringSigReference");
- referringSigRefStr = Integer.toString(checkResult.getInfo().getReferringSignatureReference());
- referringSigRefElem.appendChild(responseDoc.createTextNode(referringSigRefStr));
- fragment.appendChild(referringSigRefElem);
-
- // add XMLDSIGManifestCheckResult to the response
- ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(),
- fragment.getChildNodes());
- }
-
- /**
- * Add arbitrary XML content to a DOM <code>DocumentFragment</code>.
- *
- * @param fragment
- * The fragment to add the XML content to.
- * @param anyOtherInfo
- * The XML content to add.
- */
- private void addAnyOtherInfo(DocumentFragment fragment, NodeList anyOtherInfo) {
-
- int i;
-
- for (i = 0; i < anyOtherInfo.getLength(); i++) {
- fragment.appendChild(responseDoc.importNode(anyOtherInfo.item(i), true));
- }
- }
-
- /**
- * Add the failed references as <code>FailedReference</code> DOM elements to
- * the fragment.
- *
- * @param fragment
- * The DOM document fragment to add the
- * <code>FailedReference</code> elements to.
- * @param failedReferences
- * The indexes of the failed references.
- */
- private void addFailedReferences(DocumentFragment fragment, int[] failedReferences) {
- Element failedReferenceElem;
- int i;
-
- for (i = 0; i < failedReferences.length; i++) {
- failedReferenceElem = responseDoc.createElementNS(MOA_NS_URI, "FailedReference");
- failedReferenceElem.appendChild(responseDoc.createTextNode(Integer.toString(failedReferences[i])));
- fragment.appendChild(failedReferenceElem);
- }
- }
+ private static final String MOA_NS_URI = Constants.MOA_NS_URI;
+
+ /** The XML document containing the response element. */
+ private final Document responseDoc;
+ /** The response <code>VerifyXMLSignatureResponse</code> DOM element. */
+ private final Element responseElem;
+
+ private boolean includeSigningTime = false;
+
+ /**
+ * Create a new <code>VerifyXMLSignatureResponseBuilder</code>:
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
+ */
+ public VerifyXMLSignatureResponseBuilder() throws MOASystemException {
+ responseDoc = ResponseBuilderUtils.createResponse("VerifyXMLSignatureResponse");
+ responseElem = responseDoc.getDocumentElement();
+ }
+
+ public VerifyXMLSignatureResponseBuilder(boolean includeSigningTime) throws MOASystemException {
+ responseDoc = ResponseBuilderUtils.createResponse("VerifyXMLSignatureResponse");
+ responseElem = responseDoc.getDocumentElement();
+ this.includeSigningTime = includeSigningTime;
+ }
+
+ public VerifyXMLSignatureResponseBuilder(Document responseDoc, String name, boolean includeSigningTime)
+ throws MOASystemException {
+ this.responseDoc = responseDoc;
+ responseElem = responseDoc.createElementNS(MOA_NS_URI, name);
+ this.includeSigningTime = includeSigningTime;
+ }
+
+ public Element buildElement(VerifyXMLSignatureResponse response) throws MOAApplicationException {
+ this.build(response);
+ return responseElem;
+ }
+
+ /**
+ * Build a document containing a <code>VerifyXMLSignatureResponse</code> DOM
+ * element being the XML representation of the given
+ * <code>VerifyXMLSignatureResponse</code> API object.
+ *
+ * @param response The <code>VerifyXMLSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>VerifyXMLSignatureResponse</code> DOM
+ * element.
+ * @throws MOAApplicationException An error occurred building the response.
+ */
+ public Document build(VerifyXMLSignatureResponse response) throws MOAApplicationException {
+
+ Iterator iter;
+ List responseData;
+
+ // add the SignerInfo
+ ResponseBuilderUtils.addSignerInfo(responseDoc, responseElem, response.getSignerInfo()
+ .getSignerCertificate(),
+ response.getSignerInfo().isQualifiedCertificate(), response.getSignerInfo().getQCSource(),
+ response.getSignerInfo().isPublicAuthority(), response.getSignerInfo().getPublicAuhtorityID(),
+ response.getSignerInfo().isSSCD(), response.getSignerInfo().getSSCDSource(),
+ response.getSignerInfo().getIssuerCountryCode(),
+ response.getSignerInfo().getTslInfos());
+
+ if (this.includeSigningTime) {
+ ResponseBuilderUtils.addSigningTime(responseDoc,
+ responseElem, response.getSignerInfo().getSigningTime());
+ }
+
+ // add HashInputData elements
+ responseData = response.getHashInputDatas();
+ if (responseData != null && !responseData.isEmpty()) {
+ for (iter = responseData.iterator(); iter.hasNext();) {
+ final InputData inputData = (InputData) iter.next();
+ addContent("HashInputData", inputData);
+ }
+ }
+
+ // add ReferenceInputData elements
+ responseData = response.getReferenceInputDatas();
+ if (responseData != null && !responseData.isEmpty()) {
+ for (iter = responseData.iterator(); iter.hasNext();) {
+ final InputData inputData = (InputData) iter.next();
+ addContent("ReferenceInputData", inputData);
+ }
+ }
+
+ // add hash algorithm
+ ResponseBuilderUtils.addSignatureAlgorithm(responseDoc, responseElem, response.getSignatureAlgorithm());
+
+ // add the SignatureCheck
+ addReferencesCheckResult("SignatureCheck", response.getSignatureCheck());
+
+ // add the SignatureManifestCheck
+ if (response.getSignatureManifestCheck() != null) {
+ addReferencesCheckResult("SignatureManifestCheck", response.getSignatureManifestCheck());
+ }
+
+ // add the XMLDsigManifestChecks
+ responseData = response.getXMLDsigManifestChecks();
+ if (responseData != null && !responseData.isEmpty()) {
+ for (iter = responseData.iterator(); iter.hasNext();) {
+ final ManifestRefsCheckResult checkResult = (ManifestRefsCheckResult) iter.next();
+ addManifestRefsCheckResult("XMLDSIGManifestCheck", checkResult);
+ }
+ }
+
+ // add the CertificateCheck
+ ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, "CertificateCheck",
+ response.getCertificateCheck().getCode(), response.getCertificateCheck().getInfo());
+
+ if (response.getAdESFormResults() != null) {
+
+ final Iterator formIterator = response.getAdESFormResults().iterator();
+
+ while (formIterator.hasNext()) {
+ final AdESFormResults adESFormResult = (AdESFormResults) formIterator.next();
+ // add the CertificateCheck
+ ResponseBuilderUtils.addFormCheckElement(responseDoc, responseElem, "FormCheckResult",
+ adESFormResult.getCode().intValue(), adESFormResult.getName());
+
+ }
+ }
+
+ if (response.getExtendedCertificateCheck() != null) {
+ ResponseBuilderUtils.addExtendendResult(responseDoc, responseElem, response
+ .getExtendedCertificateCheck());
+ }
+
+ return responseDoc;
+ }
+
+ /**
+ * Add an element of type <code>ContentBaseType</code> to the response.
+ *
+ * @param elementName The name of the element.
+ *
+ * @param inputData The <code>InputData</code> to add. Based on the type of
+ *
+ * the <code>InputData</code>, either a
+ * <code>Base64Content</code> element or a
+ * <code>XMLContent</code> subelement will be added. An
+ * <code>
+ * InputDataBinaryImpl</code> will be added as a <code>Base64Content</code>
+ * child element. An<code>InputDataXMLImpl</code> will be
+ * added as <code>
+ * XMLContent</code> child element.
+ *
+ * @throws MOAApplicationException An error occurred adding the content.
+ */
+ private void addContent(String elementName, InputData inputData) throws MOAApplicationException {
+
+ final Element contentElem = responseDoc.createElementNS(MOA_NS_URI, elementName);
+
+ contentElem.setAttributeNS(null, "PartOf", inputData.getPartOf());
+ if (inputData.getReferringReferenceNumber() != InputData.REFERER_NONE_) {
+ contentElem.setAttributeNS(null, "ReferringSigReference",
+ Integer.toString(inputData.getReferringReferenceNumber()));
+ }
+
+ if (MiscUtil.isNotEmpty(inputData.getHashAlgorithm())) {
+ contentElem.setAttribute("HashAlgorithm", inputData.getHashAlgorithm());
+
+ }
+
+ switch (inputData.getContentType()) {
+ case Content.XML_CONTENT:
+ final ContentXML contentXml = (ContentXML) inputData;
+ final NodeList nodes = contentXml.getXMLContent();
+ Element xmlElem;
+ int i;
+
+ xmlElem = responseDoc.createElementNS(MOA_NS_URI, "XMLContent");
+ // xmlElem.setAttributeNS(XML_NS_URI, "xml:space", "preserve");
+ xmlElem.setAttribute("xml:space", "preserve");
+
+ for (i = 0; i < nodes.getLength(); i++) {
+ xmlElem.appendChild(responseDoc.importNode(nodes.item(i), true));
+ }
+ contentElem.appendChild(xmlElem);
+ responseElem.appendChild(contentElem);
+ break;
+ case Content.BINARY_CONTENT:
+ final Element binaryElem = responseDoc.createElementNS(MOA_NS_URI, "Base64Content");
+ final ContentBinary contentBinary = (ContentBinary) inputData;
+ String base64Str;
+
+ try {
+ base64Str = Base64Utils.encode(contentBinary.getBinaryContent());
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2200", null, e);
+ }
+ binaryElem.appendChild(responseDoc.createTextNode(base64Str));
+ contentElem.appendChild(binaryElem);
+ responseElem.appendChild(contentElem);
+ break;
+ }
+
+ }
+
+ /**
+ * Add a <code>ReferencesCheckResult</code> to the response.
+ *
+ * @param elementName The DOM element name to use.
+ * @param checkResult The <code>ReferencesCheckResult</code> to add.
+ */
+ private void addReferencesCheckResult(String elementName, ReferencesCheckResult checkResult) {
+
+ NodeList info = null;
+
+ if (checkResult.getInfo() != null) {
+ final DocumentFragment fragment = responseDoc.createDocumentFragment();
+ final NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo();
+ final int[] failedReferences = checkResult.getInfo().getFailedReferences();
+
+ if (anyOtherInfo != null) {
+ addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo());
+ }
+
+ if (failedReferences != null) {
+ addFailedReferences(fragment, failedReferences);
+ }
+
+ info = fragment.getChildNodes();
+ }
+
+ ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(),
+ info);
+
+ }
+
+ /**
+ * Add a <code>ManifestRefsCheckResult</code> to the response.
+ *
+ * @param elementName The DOM element name to use.
+ * @param checkResult The <code>ManifestRefsCheckResult</code> to add.
+ */
+ private void addManifestRefsCheckResult(String elementName, ManifestRefsCheckResult checkResult) {
+
+ final DocumentFragment fragment = responseDoc.createDocumentFragment();
+ final NodeList anyOtherInfo = checkResult.getInfo().getAnyOtherInfo();
+ final int[] failedReferences = checkResult.getInfo().getFailedReferences();
+ Element referringSigRefElem;
+ String referringSigRefStr;
+
+ // add any other elements
+ if (anyOtherInfo != null) {
+ addAnyOtherInfo(fragment, checkResult.getInfo().getAnyOtherInfo());
+ }
+
+ // add the failed references
+ if (failedReferences != null) {
+ addFailedReferences(fragment, failedReferences);
+ }
+
+ // add the ReferringSigReference
+ referringSigRefElem = responseDoc.createElementNS(MOA_NS_URI, "ReferringSigReference");
+ referringSigRefStr = Integer.toString(checkResult.getInfo().getReferringSignatureReference());
+ referringSigRefElem.appendChild(responseDoc.createTextNode(referringSigRefStr));
+ fragment.appendChild(referringSigRefElem);
+
+ // add XMLDSIGManifestCheckResult to the response
+ ResponseBuilderUtils.addCodeInfoElement(responseDoc, responseElem, elementName, checkResult.getCode(),
+ fragment.getChildNodes());
+ }
+
+ /**
+ * Add arbitrary XML content to a DOM <code>DocumentFragment</code>.
+ *
+ * @param fragment The fragment to add the XML content to.
+ * @param anyOtherInfo The XML content to add.
+ */
+ private void addAnyOtherInfo(DocumentFragment fragment, NodeList anyOtherInfo) {
+
+ int i;
+
+ for (i = 0; i < anyOtherInfo.getLength(); i++) {
+ fragment.appendChild(responseDoc.importNode(anyOtherInfo.item(i), true));
+ }
+ }
+
+ /**
+ * Add the failed references as <code>FailedReference</code> DOM elements to the
+ * fragment.
+ *
+ * @param fragment The DOM document fragment to add the
+ * <code>FailedReference</code> elements to.
+ * @param failedReferences The indexes of the failed references.
+ */
+ private void addFailedReferences(DocumentFragment fragment, int[] failedReferences) {
+ Element failedReferenceElem;
+ int i;
+
+ for (i = 0; i < failedReferences.length; i++) {
+ failedReferenceElem = responseDoc.createElementNS(MOA_NS_URI, "FailedReference");
+ failedReferenceElem.appendChild(responseDoc.createTextNode(Integer.toString(failedReferences[i])));
+ fragment.appendChild(failedReferenceElem);
+ }
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java
index 4b40b9c..3b98dc4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfile.java
@@ -21,13 +21,12 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
/**
- * Base class for signature environment profile data used in XML signature
+ * Base class for signature environment profile data used in XML signature
* creation.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -35,20 +34,20 @@ public interface CreateSignatureEnvironmentProfile {
/**
* Indicates that the profile data is given explicitly.
*/
- public static int EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE = 0;
+ int EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE = 0;
/**
- * Indicates that the profile data is stored in the configuration and resolved
+ * Indicates that the profile data is stored in the configuration and resolved
* using an ID.
*/
- public static int ID_CREATESIGNATUREENVIRONMENTPROFILE = 1;
-
+ int ID_CREATESIGNATUREENVIRONMENTPROFILE = 1;
+
/**
* Gets the type of this object.
- *
- * @return The type of <code>CreateSignatureEnvironmentProfile</code> denoted
- * by this object. Either
- * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code> or
- * <code>ID_CREATESIGNATUREENVIRONMENTPROFILE</code>.
+ *
+ * @return The type of <code>CreateSignatureEnvironmentProfile</code> denoted by
+ * this object. Either
+ * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code> or
+ * <code>ID_CREATESIGNATUREENVIRONMENTPROFILE</code>.
*/
- public int getCreateSignatureEnvironmentProfileType();
+ int getCreateSignatureEnvironmentProfileType();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java
index 0bce94c..5f761f1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileExplicit.java
@@ -21,34 +21,33 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import java.util.List;
/**
- * A <code>CreateSignatureEnvironmentProfile</code> containing the profile
- * data explicitly.
- *
+ * A <code>CreateSignatureEnvironmentProfile</code> containing the profile data
+ * explicitly.
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface CreateSignatureEnvironmentProfileExplicit
- extends CreateSignatureEnvironmentProfile {
-
+ extends CreateSignatureEnvironmentProfile {
+
/**
* Gets the location and index of where to insert the signature into the
* signature environment.
- *
- * @return The location and index of the signature in the signature
- * environment.
+ *
+ * @return The location and index of the signature in the signature environment.
*/
- public CreateSignatureLocation getCreateSignatureLocation();
+ CreateSignatureLocation getCreateSignatureLocation();
+
/**
* Gets the supplemental information.
- *
+ *
* @return The supplemental information.
*/
- public List getSupplements();
+ List getSupplements();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java
index 73e4f52..8066d37 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureEnvironmentProfileID.java
@@ -21,24 +21,23 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
/**
* A <code>CreateSignatureEnvironmentProfile</code> containing a profile ID
* pointing to locally stored profile data.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface CreateSignatureEnvironmentProfileID
- extends CreateSignatureEnvironmentProfile {
+ extends CreateSignatureEnvironmentProfile {
/**
* Gets the profile ID.
- *
+ *
* @return The profile ID.
*/
- public String getCreateSignatureEnvironmentProfileID();
-
+ String getCreateSignatureEnvironmentProfileID();
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java
index 9363408..e26ca1e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureInfo.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import at.gv.egovernment.moa.spss.api.common.Content;
/**
* Encapsulates a signature object used during signature creation.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -39,11 +38,12 @@ public interface CreateSignatureInfo {
*
* @return The XML structure where the signature will be inserted.
*/
- public Content getCreateSignatureEnvironment();
+ Content getCreateSignatureEnvironment();
+
/**
* Gets the supplemental data for the signature environment.
*
* @return The supplemental data for the signature envoronment.
*/
- public CreateSignatureEnvironmentProfile getCreateSignatureEnvironmentProfile();
+ CreateSignatureEnvironmentProfile getCreateSignatureEnvironmentProfile();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java
index 9a0b798..39a85b4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateSignatureLocation.java
@@ -21,18 +21,17 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import at.gv.egovernment.moa.spss.api.common.ElementSelector;
/**
* Specifies where to insert the newly created signature.
- *
+ *
* An XPath expression is used to select the signature parent element. An
- * additional index specifies the node index after which to insert the
- * signature into the parent element.
- *
+ * additional index specifies the node index after which to insert the signature
+ * into the parent element.
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -40,8 +39,8 @@ public interface CreateSignatureLocation extends ElementSelector {
/**
* Gets the node index, after which the signature will be inserted into the
* parent elemen.
- *
+ *
* @return The index of the node after which the signature will be inserted.
*/
- public int getIndex();
+ int getIndex();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java
index fbb0000..1793365 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfo.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import java.util.List;
@@ -30,7 +29,7 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo;
/**
* Encapsulates information used for the transformation of the data object.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -38,14 +37,15 @@ import at.gv.egovernment.moa.spss.api.common.MetaInfo;
public interface CreateTransformsInfo {
/**
* Gets the XMLDSig transforms.
- *
+ *
* @return A <code>List</code> of <code>Transform</code> objects.
*/
- public List getTransforms();
+ List getTransforms();
+
/**
* Gets meta information about the data resulting from the transformation.
- *
+ *
* @return Meta information about the resulting data.
*/
- public MetaInfo getFinalDataMetaInfo();
+ MetaInfo getFinalDataMetaInfo();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java
index 5babdae..9832972 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfile.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
/**
* Base class for transformation informations used in signature creation.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -35,18 +34,18 @@ public interface CreateTransformsInfoProfile {
/**
* Indicates transformation information given explicitly.
*/
- public static final int EXPLICIT_CREATETRANSFORMSINFOPROFILE = 0;
+ int EXPLICIT_CREATETRANSFORMSINFOPROFILE = 0;
/**
* Indicates transformation information given as an ID.
*/
- public static final int ID_CREATETRANSFORMSINFOPROFILE = 1;
-
+ int ID_CREATETRANSFORMSINFOPROFILE = 1;
+
/**
* Gets the type of profile information this object contains.
- *
+ *
* @return The type of transformation information, either
- * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code> or
- * <code>ID_CREATETRANSFORMSINFOPROFILE</code>.
+ * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code> or
+ * <code>ID_CREATETRANSFORMSINFOPROFILE</code>.
*/
- public int getCreateTransformsInfoProfileType();
+ int getCreateTransformsInfoProfileType();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java
index 9aae8cb..39580d6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileExplicit.java
@@ -21,30 +21,30 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import java.util.List;
/**
* Encapsulates explicit transformation informations.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
*/
public interface CreateTransformsInfoProfileExplicit
- extends CreateTransformsInfoProfile {
+ extends CreateTransformsInfoProfile {
/**
* Gets the transformation information of the data object.
- *
+ *
* @return Transformation information of the data object.
*/
- public CreateTransformsInfo getCreateTransformsInfo();
+ CreateTransformsInfo getCreateTransformsInfo();
+
/**
* Gets the supplemental information.
- *
+ *
* @return The supplemental information.
*/
- public List getSupplements();
+ List getSupplements();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java
index 69c3629..fc9d869 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateTransformsInfoProfileID.java
@@ -21,22 +21,21 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
/**
* Encapsulates transformation information given via an identifier.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
*/
public interface CreateTransformsInfoProfileID
- extends CreateTransformsInfoProfile {
+ extends CreateTransformsInfoProfile {
/**
* Gets the ID of the transformation.
- *
+ *
* @return The transformation profile ID.
*/
- public String getCreateTransformsInfoProfileID();
+ String getCreateTransformsInfoProfileID();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java
index 351b16e..0f8c8a2 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureRequest.java
@@ -21,15 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import java.util.List;
-
/**
* Object that encapsulates a request to create an XML Signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -37,14 +35,15 @@ import java.util.List;
public interface CreateXMLSignatureRequest {
/**
* Gets the identifier for the keys to be used for the signature.
- *
+ *
* @return The identifier for the keys to be used.
*/
- public String getKeyIdentifier();
+ String getKeyIdentifier();
+
/**
- * Gets the information of the singleSignatureInfo elements.
- *
+ * Gets the information of the singleSignatureInfo elements.
+ *
* @return The information of singleSignatureInfo elements.
*/
- public List getSingleSignatureInfos();
+ List getSingleSignatureInfos();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java
index c1b1c30..1b59d7d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponse.java
@@ -21,15 +21,14 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import java.util.List;
/**
- * Object that encapsulates the response on to a
+ * Object that encapsulates the response on to a
* <code>CreateXMLSignatureRequest</code> to create an XML signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -37,8 +36,8 @@ import java.util.List;
public interface CreateXMLSignatureResponse {
/**
* Gets the response elements.
- *
+ *
* @return The response elements.
*/
- public List getResponseElements();
+ List getResponseElements();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java
index b9bd334..fe6cbbb 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/CreateXMLSignatureResponseElement.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
/**
- * Base class for <code>SignatureEnvironmentResponse</code> and
- * <code>ErrorResponse</code> elements in a
+ * Base class for <code>SignatureEnvironmentResponse</code> and
+ * <code>ErrorResponse</code> elements in a
* <code>CreateXMLSignatureResponse</code>.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -37,17 +36,18 @@ public interface CreateXMLSignatureResponseElement {
/**
* Indicates that this object contains a <code>SignatureEnvironment</code>.
*/
- public static final int SIGNATURE_ENVIRONMENT_RESPONSE = 0;
+ int SIGNATURE_ENVIRONMENT_RESPONSE = 0;
/**
* Indicates that this objet contains an <code>ErrorResponse</code>.
*/
- public static final int ERROR_RESPONSE = 1;
-
+ int ERROR_RESPONSE = 1;
+
/**
* Gets the type of response object.
- *
- * @return The type of response object, either
- * <code>SIGNATURE_ENVIRONMENT_RESPONSE</code> or <code>ERROR_RESPONSE</code>.
+ *
+ * @return The type of response object, either
+ * <code>SIGNATURE_ENVIRONMENT_RESPONSE</code> or
+ * <code>ERROR_RESPONSE</code>.
*/
- public int getResponseType();
+ int getResponseType();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java
index 620e3b3..053ff00 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/DataObjectInfo.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import at.gv.egovernment.moa.spss.api.common.Content;
/**
* Encapsulates information required to create a single signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -37,36 +36,39 @@ public interface DataObjectInfo {
/**
* Indicates that a detached signature will be created.
*/
- public static final String STRUCTURE_DETACHED = "detached";
+ String STRUCTURE_DETACHED = "detached";
/**
* Indicates that an enveloping signature will be created.
*/
- public static final String STRUCTURE_ENVELOPING = "enveloping";
+ String STRUCTURE_ENVELOPING = "enveloping";
/**
* Gets the structure of the signature.
- *
+ *
* @return The structure of the signature.
*/
- public String getStructure();
+ String getStructure();
+
/**
- * Checks whether a refercence will be placed in the signature itself or
- * in the manifest.
- *
+ * Checks whether a refercence will be placed in the signature itself or in the
+ * manifest.
+ *
* @return <code>true</code> if a reference will be placed in the manifest,
- * <code>false</code> if it will be placed in the signature.
+ * <code>false</code> if it will be placed in the signature.
*/
- public boolean isChildOfManifest();
+ boolean isChildOfManifest();
+
/**
* Gets information related to a single data object.
- *
+ *
* @return Information related to a single data object.
*/
- public Content getDataObject();
+ Content getDataObject();
+
/**
* Gets information for the transformation of the data object.
- *
+ *
* @return The transformation information.
*/
- public CreateTransformsInfoProfile getCreateTransformsInfoProfile();
+ CreateTransformsInfoProfile getCreateTransformsInfoProfile();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java
index 6dfa843..d1b838d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/ErrorResponse.java
@@ -21,13 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
-
/**
* Object containing detailed error information.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -35,14 +33,15 @@ package at.gv.egovernment.moa.spss.api.xmlsign;
public interface ErrorResponse extends CreateXMLSignatureResponseElement {
/**
* Gets the error code.
- *
+ *
* @return The error code.
*/
- public int getErrorCode();
+ int getErrorCode();
+
/**
* Gets verbose error information.
- *
+ *
* @return Verbose error information.
*/
- public String getInfo();
+ String getInfo();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java
index 47c4ce7..ecf57ce 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SignatureEnvironmentResponse.java
@@ -21,24 +21,23 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import org.w3c.dom.Element;
/**
* Contains the signature if the signature creation was successful.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
*/
public interface SignatureEnvironmentResponse
- extends CreateXMLSignatureResponseElement {
- /**
+ extends CreateXMLSignatureResponseElement {
+ /**
* Gets the XML structure which contains the signature.
- *
+ *
* @return A general XML structure containing the signature.
*/
- public Element getSignatureEnvironment();
+ Element getSignatureEnvironment();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java
index 3355739..7b94bc0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlsign/SingleSignatureInfo.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlsign;
import java.util.List;
/**
* Encapsulates data to create a single signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,21 +35,23 @@ import java.util.List;
public interface SingleSignatureInfo {
/**
* Gets the dataObjectInfo information.
- *
+ *
* @return The dataObjectInfo information.
*/
- public List getDataObjectInfos();
+ List getDataObjectInfos();
+
/**
* Gets the signature object.
- *
+ *
* @return The signature object used during signature creation.
*/
- public CreateSignatureInfo getCreateSignatureInfo();
+ CreateSignatureInfo getCreateSignatureInfo();
+
/**
* Check whether a Security Layer conform signature manifest will be created.
- *
- * @return <code>true</code>, if a Security Layer conform signature manifest
- * will be created, <code>false</code> otherwise.
+ *
+ * @return <code>true</code>, if a Security Layer conform signature manifest
+ * will be created, <code>false</code> otherwise.
*/
- public boolean isSecurityLayerConform();
+ boolean isSecurityLayerConform();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java
index e12c39b..2730c18 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/AdESFormResults.java
@@ -1,7 +1,9 @@
package at.gv.egovernment.moa.spss.api.xmlverify;
public interface AdESFormResults {
- public Integer getCode();
- public String getInfo();
- public String getName();
+ Integer getCode();
+
+ String getInfo();
+
+ String getName();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java
index 8ff4617..6e5aeda 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResult.java
@@ -21,13 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
-
/**
* Contains the results of manifest checks according to XMLDsig.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -35,14 +33,15 @@ package at.gv.egovernment.moa.spss.api.xmlverify;
public interface ManifestRefsCheckResult {
/**
* Gets the check code.
- *
+ *
* @return A numerical representation of the result of the manifest check.
*/
- public int getCode();
+ int getCode();
+
/**
* Gets the reference to the manifest.
- *
+ *
* @return The reference to the manifest.
*/
- public ManifestRefsCheckResultInfo getInfo();
+ ManifestRefsCheckResultInfo getInfo();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java
index 4b0a4fb..f8973b2 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ManifestRefsCheckResultInfo.java
@@ -21,23 +21,21 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
-
/**
* Encapsulates information referring to the manifest of the check.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
*/
public interface ManifestRefsCheckResultInfo extends ReferencesCheckResultInfo {
/**
- * Gets the position of the signature reference containing the
- * reference to the manifest being described by this object.
- *
+ * Gets the position of the signature reference containing the reference to the
+ * manifest being described by this object.
+ *
* @return The position of the signature reference.
*/
- public int getReferringSignatureReference();
+ int getReferringSignatureReference();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java
index 95a2b92..40bfe48 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferenceInfo.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import java.util.List;
/**
* Contains transformation parameters which are locally available.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,8 +35,8 @@ import java.util.List;
public interface ReferenceInfo {
/**
* Gets the transformation info.
- *
+ *
* @return The transformation info.
*/
- public List getVerifyTransformsInfoProfiles();
+ List getVerifyTransformsInfoProfiles();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java
index dd1f482..bf41109 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResult.java
@@ -21,27 +21,27 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
/**
- * Contains information about the verification status of references contained
- * in the signature.
- *
+ * Contains information about the verification status of references contained in
+ * the signature.
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface ReferencesCheckResult {
/**
* Gets the check code.
- *
+ *
* @return A numerical representation of the result of the reference check.
*/
- public int getCode();
+ int getCode();
+
/**
* Gets the additional information about the result.
- *
+ *
* @return Additional information about the result.
*/
- public ReferencesCheckResultInfo getInfo();
+ ReferencesCheckResultInfo getInfo();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java
index fc87c98..2a2511e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/ReferencesCheckResultInfo.java
@@ -21,29 +21,29 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import org.w3c.dom.NodeList;
/**
* Additional information contained in a <code>ReferencesCheckResult</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public interface ReferencesCheckResultInfo {
/**
* Gets the additional info of the failed <code>dsig:reference</code> element.
- *
+ *
* @return The info elements.
*/
- public NodeList getAnyOtherInfo();
+ NodeList getAnyOtherInfo();
+
/**
* Gets the positions of the failed signature references containing the
* references to the manifests being described by this object.
- *
- * @return The positions of the failed signature references.
+ *
+ * @return The positions of the failed signature references.
*/
- public int[] getFailedReferences();
+ int[] getFailedReferences();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java
index 524d4b8..d1e621e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SignatureManifestCheckParams.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import java.util.List;
/**
* Contains parameters used to check the signature manifest.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,15 +35,16 @@ import java.util.List;
public interface SignatureManifestCheckParams {
/**
* Gets the referential information.
- *
+ *
* @return The referential information.
*/
- public List getReferenceInfos();
+ List getReferenceInfos();
+
/**
* Gets information on whether signature source data should be returned.
- *
+ *
* @return <code>true</code>, if signature source data should be returned,
- * otherwise <code>false</code>.
+ * otherwise <code>false</code>.
*/
- public boolean getReturnReferenceInputData();
+ boolean getReturnReferenceInputData();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java
index 934e7c6..a906195 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfile.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
/**
* Base class for supplementary information.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -35,18 +34,19 @@ public interface SupplementProfile {
/**
* Indicates that this object contains explicit supplementary information.
*/
- public static final int EXPLICIT_SUPPLEMENTPROFILE = 0;
+ int EXPLICIT_SUPPLEMENTPROFILE = 0;
/**
* Indicates that this object contains a profile id where supplementary
* information can be found.
*/
- public static final int ID_SUPPLEMENTPROFILE = 1;
+ int ID_SUPPLEMENTPROFILE = 1;
/**
* Gets the type of supplementary information contained in this object.
- *
+ *
* @return The type of supplementary information contained in this object,
- * either <code>EXPLICIT_SUPPLEMENT</code> or <code>ID_SUPPLEMENT</code>.
+ * either <code>EXPLICIT_SUPPLEMENT</code> or
+ * <code>ID_SUPPLEMENT</code>.
*/
- public int getSupplementProfileType();
+ int getSupplementProfileType();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java
index d01abec..e0da05d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileExplicit.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
/**
* Encapsulates explicit supplementary information.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,8 +35,8 @@ import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
public interface SupplementProfileExplicit extends SupplementProfile {
/**
* Gets the supplemental object.
- *
+ *
* @return The supplemental object.
*/
- public XMLDataObjectAssociation getSupplementProfile();
+ XMLDataObjectAssociation getSupplementProfile();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java
index beeb2f0..b890c3a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/SupplementProfileID.java
@@ -21,22 +21,20 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
/**
* Encapsulates supplementary information stored in a profile.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
*/
public interface SupplementProfileID extends SupplementProfile {
/**
- * Gets the id of the profile where the supplementary information can be
- * found.
- *
+ * Gets the id of the profile where the supplementary information can be found.
+ *
* @return The profile id.
*/
- public String getSupplementProfileID();
+ String getSupplementProfileID();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java
index 7ecd1b8..6eeb759 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameter.java
@@ -21,44 +21,44 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
/**
- * Object encapsulating transform parameters either as a URI, binary or
- * hashed.
- *
+ * Object encapsulating transform parameters either as a URI, binary or hashed.
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
*/
public interface TransformParameter {
/**
- * Indicates that this object contains a transform parameter given as
- * a URI.
+ * Indicates that this object contains a transform parameter given as a URI.
*/
- public static final int URI_TRANSFORMPARAMETER = 0;
+ int URI_TRANSFORMPARAMETER = 0;
/**
* Indicates that this object contains binary transform parameter.
*/
- public static final int BINARY_TRANSFORMPARAMETER = 1;
+ int BINARY_TRANSFORMPARAMETER = 1;
/**
* Indicatest that this object contains a binary hash of the transform
* parameter.
*/
- public static final int HASH_TRANSFORMPARAMETER = 2;
-
+ int HASH_TRANSFORMPARAMETER = 2;
+
/**
* Gets the type of transform parameter contained in this object.
- *
- * @return The type of transform parameter, being one of
- * <code>URI_TRANSFORMPARAMETER</code>, <code>BINARY_TRANSFORMPARAMETER</code>
- * or <code>HASH_TRANSFORMPARAMETER</code>.
+ *
+ * @return The type of transform parameter, being one of
+ * <code>URI_TRANSFORMPARAMETER</code>,
+ * <code>BINARY_TRANSFORMPARAMETER</code> or
+ * <code>HASH_TRANSFORMPARAMETER</code>.
*/
- public int getTransformParameterType();
+ int getTransformParameterType();
+
/**
* Gets the transform parameter URI.
- *
+ *
* @return The transform parameter URI.
*/
- public String getURI();}
+ String getURI();
+}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java
index 388c5d0..afd3a89 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterBinary.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import java.io.InputStream;
/**
* Encapsulates a binary transform parameter.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,10 +35,10 @@ import java.io.InputStream;
public interface TransformParameterBinary extends TransformParameter {
/**
* Gets the binary transform parameter.
- *
- * @return An <code>InputStream</code> from which the binary content can
- * be read.
+ *
+ * @return An <code>InputStream</code> from which the binary content can be
+ * read.
*/
- public InputStream getBinaryContent();
+ InputStream getBinaryContent();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java
index 2ff6f39..11ad51e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterHash.java
@@ -21,13 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
-
/**
* Contains a hash of the transform parameter.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -35,16 +33,16 @@ package at.gv.egovernment.moa.spss.api.xmlverify;
public interface TransformParameterHash extends TransformParameter {
/**
* Gets the method used for calculating the digest value.
- *
+ *
* @return The digest method.
*/
- public String getDigestMethod();
+ String getDigestMethod();
+
/**
* Gets the binary hash of the transform parameter.
- *
+ *
* @return A binary representation of the hash.
*/
- public byte[] getDigestValue();
-
+ byte[] getDigestValue();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java
index bc73e95..743ecb1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/TransformParameterURI.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
/**
* Encapsulates a transform parameter given as a URI.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java
index 5d6e0eb..f910747 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureInfo.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import at.gv.egovernment.moa.spss.api.common.Content;
/**
* Encapsulates a signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,16 +35,17 @@ import at.gv.egovernment.moa.spss.api.common.Content;
public interface VerifySignatureInfo {
/**
* Gets the content of the <code>VerifySignatureEnvironment</code> element.
- *
- * @return A <code>MOAElement</code> containing the
- * <code>VerifySignatureEnvironment</code> in a DOM-like structure.
+ *
+ * @return A <code>MOAElement</code> containing the
+ * <code>VerifySignatureEnvironment</code> in a DOM-like structure.
*/
- public Content getVerifySignatureEnvironment();
+ Content getVerifySignatureEnvironment();
+
/**
* Gets the location of the signature.
- *
+ *
* @return The location of the signature within the signature environment.
- */
- public VerifySignatureLocation getVerifySignatureLocation();
+ */
+ VerifySignatureLocation getVerifySignatureLocation();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java
index 56a2567..8cd1d4a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifySignatureLocation.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import at.gv.egovernment.moa.spss.api.common.ElementSelector;
/**
* Specifies where to find the signature to be verified.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java
index a55d55e..8a821d6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfile.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
/**
* Object for explicitly specifying a transformation path.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -35,18 +34,18 @@ public interface VerifyTransformsInfoProfile {
/**
* Indicates that this object contains the transformation path explicitly.
*/
- public static final int EXPLICIT_VERIFYTRANSFORMSINFOPROFILE = 0;
+ int EXPLICIT_VERIFYTRANSFORMSINFOPROFILE = 0;
/**
* Indicatest that this object contains a transformation info id.
*/
- public static final int ID_VERIFYTRANSFORMSINFOPROFILE = 1;
-
+ int ID_VERIFYTRANSFORMSINFOPROFILE = 1;
+
/**
* Gets the type of transformation information contained in this object.
- *
- * @return The type of transformation information, either
- * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code> or
- * <code>ID_VERIFYTRANSFORMSINFOPROFILE</code>.
+ *
+ * @return The type of transformation information, either
+ * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code> or
+ * <code>ID_VERIFYTRANSFORMSINFOPROFILE</code>.
*/
- public int getVerifyTransformsInfoProfileType();
+ int getVerifyTransformsInfoProfileType();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java
index cc29ace..bd91a28 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileExplicit.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import java.util.List;
/**
* Encapsulates explicit transformation information.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -36,14 +35,15 @@ import java.util.List;
public interface VerifyTransformsInfoProfileExplicit extends VerifyTransformsInfoProfile {
/**
* Gets the XMLDSig transforms element.
- *
+ *
* @return The <code>List</code> of <code>Transform</code>s.
*/
- public List getTransforms();
+ List getTransforms();
+
/**
* Gets the transformation parameters.
- *
+ *
* @return The transformation parameters.
*/
- public List getTransformParameters();
+ List getTransformParameters();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java
index eeb28da..ef083ba 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyTransformsInfoProfileID.java
@@ -21,12 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
/**
* Encapsulates transformation info id for signature verification.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -34,9 +33,9 @@ package at.gv.egovernment.moa.spss.api.xmlverify;
public interface VerifyTransformsInfoProfileID extends VerifyTransformsInfoProfile {
/**
* Gets the identifier referencing the transformation info.
- *
+ *
* @return The identifier referencing the transformation info.
*/
- public String getVerifyTransformsInfoProfileID();
+ String getVerifyTransformsInfoProfileID();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java
index c4a0fd1..666164a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureRequest.java
@@ -21,67 +21,70 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import java.util.Date;
import java.util.List;
-
/**
* Object that encapsulates a request to verify an XML signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
*/
public interface VerifyXMLSignatureRequest {
/**
- * Gets the date and time for which the signature verification has to
- * be performed.
- *
- * @return Date and time for which the signature verification has
- * to be performed.
+ * Gets the date and time for which the signature verification has to be
+ * performed.
+ *
+ * @return Date and time for which the signature verification has to be
+ * performed.
*/
- public Date getDateTime();
+ Date getDateTime();
+
/**
* Gets the signature to be verified.
- *
+ *
* @return The signature to be verified.
*/
- public VerifySignatureInfo getSignatureInfo();
+ VerifySignatureInfo getSignatureInfo();
+
/**
* Gets the supplemental information.
- *
+ *
* @return The supplemental information.
- */
- public List getSupplementProfiles();
+ */
+ List getSupplementProfiles();
+
/**
* Gets parameters for Security Layer signature verification.
- *
+ *
* @return Parameters for Security Layer signature verification.
*/
- public SignatureManifestCheckParams getSignatureManifestCheckParams();
+ SignatureManifestCheckParams getSignatureManifestCheckParams();
+
/**
* Checks, whether actually signed data shall be returned.
- *
- * @return <code>true</code>, if signed data will be returned,
- * otherwise <code>false</code>.
+ *
+ * @return <code>true</code>, if signed data will be returned, otherwise
+ * <code>false</code>.
*/
- public boolean getReturnHashInputData();
+ boolean getReturnHashInputData();
+
/**
* Gets the profile id of the set of trusted certificates to be used for
* signature verification.
- *
+ *
* @return The id of the trusted certificates.
*/
- public String getTrustProfileId();
-
+ String getTrustProfileId();
+
/**
* Should perform extended validation
- *
- * @return <code>true</code>, if signed data will be returned,
- * otherwise <code>false</code>.
+ *
+ * @return <code>true</code>, if signed data will be returned, otherwise
+ * <code>false</code>.
*/
- public boolean getExtendedValidaiton();
+ boolean getExtendedValidaiton();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java
index 0f42903..33fcf24 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/api/xmlverify/VerifyXMLSignatureResponse.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.api.xmlverify;
import java.util.List;
@@ -33,7 +32,7 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo;
/**
* Object that encapsulates the response on a request to verify an XML
* signature.
- *
+ *
* @author Patrick Peck
* @author Stephan Grill
* @version $Id$
@@ -41,57 +40,63 @@ import at.gv.egovernment.moa.spss.api.common.SignerInfo;
public interface VerifyXMLSignatureResponse {
/**
* Gets a <code>SignerInfo</code> element according to XMLDSig.
- *
+ *
* @return A <code>SignerInfo</code> element according to XMLDSig.
*/
- public SignerInfo getSignerInfo();
+ SignerInfo getSignerInfo();
+
/**
* Gets datas signed by the signatory.
- *
+ *
* @return The signed datas.
*/
- public List getHashInputDatas();
+ List getHashInputDatas();
+
/**
* Gets source datas elements.
- *
+ *
* @return The source datas elements.
*/
- public List getReferenceInputDatas();
+ List getReferenceInputDatas();
+
/**
- * Gets the result of the signature verification.
- *
- * @return The result of the signature verification.
- */
- public ReferencesCheckResult getSignatureCheck();
+ * Gets the result of the signature verification.
+ *
+ * @return The result of the signature verification.
+ */
+ ReferencesCheckResult getSignatureCheck();
+
/**
* Gets the result of the signature manifest verification.
- *
+ *
* @return The result of the signature manifest verification.
*/
- public ReferencesCheckResult getSignatureManifestCheck();
+ ReferencesCheckResult getSignatureManifestCheck();
+
/**
* Gets XMLDSigManifestCheck elements.
- *
+ *
* @return The XMLDSigManifestCheck elements.
*/
- public List getXMLDsigManifestChecks();
+ List getXMLDsigManifestChecks();
+
/**
* Gets the result of the certification verification.
- *
+ *
* @return The result of the certificate verification.
*/
- public CheckResult getCertificateCheck();
-
+ CheckResult getCertificateCheck();
+
/**
* Gets AdES Form results
- *
+ *
* This might be null!
- *
+ *
* @return The result of the AdES Form validation
*/
- public List getAdESFormResults();
-
- public ExtendedCertificateCheckResult getExtendedCertificateCheck();
-
- public String getSignatureAlgorithm();
+ List getAdESFormResults();
+
+ ExtendedCertificateCheckResult getExtendedCertificateCheck();
+
+ String getSignatureAlgorithm();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java
index b2389a4..bf11240 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/CRLDistributionPoint.java
@@ -23,10 +23,6 @@
package at.gv.egovernment.moa.spss.server.config;
-import iaik.asn1.structures.Name;
-import iaik.pki.revocation.RevocationSourceTypes;
-import iaik.utils.RFC2253NameParserException;
-
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
@@ -34,144 +30,151 @@ import java.util.StringTokenizer;
import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.asn1.structures.Name;
+import iaik.pki.revocation.RevocationSourceTypes;
+import iaik.utils.RFC2253NameParserException;
/**
* A class representing a CRL distribution point.
- *
+ *
* @author Sven Aigner
* @author Patrick Peck
* @version $Id$
*/
-public class CRLDistributionPoint extends DistributionPoint implements iaik.pki.revocation.CRLDistributionPoint {
-
- private static Map RC_MAPPING = new HashMap();
-
- static {
-
- // create the mapping between reason code strings and their integer
- // values
- RC_MAPPING.put("unused", new Integer(iaik.asn1.structures.DistributionPoint.unused));
- RC_MAPPING.put("keyCompromise", new Integer(iaik.asn1.structures.DistributionPoint.keyCompromise));
- RC_MAPPING.put("cACompromise", new Integer(iaik.asn1.structures.DistributionPoint.cACompromise));
- RC_MAPPING.put("affiliationChanged", new Integer(iaik.asn1.structures.DistributionPoint.affiliationChanged));
- RC_MAPPING.put("superseded", new Integer(iaik.asn1.structures.DistributionPoint.superseded));
- RC_MAPPING.put("cessationOfOperation",
- new Integer(iaik.asn1.structures.DistributionPoint.cessationOfOperation));
- RC_MAPPING.put("certificateHold", new Integer(iaik.asn1.structures.DistributionPoint.certificateHold));
- RC_MAPPING.put("privilegeWithdrawn", new Integer(iaik.asn1.structures.DistributionPoint.privilegeWithdrawn));
- RC_MAPPING.put("aACompromise", new Integer(iaik.asn1.structures.DistributionPoint.aACompromise));
- }
-
- /**
- * The name of the CA issuing the CRL referred to by this DP.
- */
- private String issuerName_;
-
- /**
- * The reason codes applicable for the distribution point.
- */
- private int reasonCodes;
-
- /**
- * Create a <code>CRLDistributionPoint</code>.
- *
- * @param issuerName
- * The name of the CA issuing the CRL referred to by this DP.
- *
- * @param uri
- * The URI of the distribution point.
- *
- * @param reasonCodeStr
- * A list of reason codes (a space-separated enumeration).
- */
- public CRLDistributionPoint(String issuerName, String uri, String reasonCodeStr) {
- super(uri);
- issuerName_ = issuerName;
- this.reasonCodes = extractReasonCodes(reasonCodeStr);
- }
-
- /**
- * @see DistributionPoint#getType()
- */
- public String getType() {
- return RevocationSourceTypes.CRL;
- }
-
- /**
- * Convert a list of reason codes provided as a <code>String</code> to a
- * binary representation.
- *
- * @param reasonCodeStr
- * A <code>String</code> containing a blank-separated, textual
- * representation of reason codes.
- * @return int A binary representation of reason codes.
- * @see iaik.asn1.structures.DistributionPoint
- */
- private int extractReasonCodes(String reasonCodeStr) {
- int codes = 0;
- StringTokenizer tokenizer = new StringTokenizer(reasonCodeStr);
- String token;
- Integer reasonCode;
-
- while (tokenizer.hasMoreTokens()) {
- token = tokenizer.nextToken();
- reasonCode = (Integer) RC_MAPPING.get(token);
- if (reasonCode != null) {
- codes |= reasonCode.intValue();
- } else {
- MessageProvider msg = MessageProvider.getInstance();
- Logger.warn(new LogMsg(msg.getMessage("config.07", new Object[] { token })));
- }
- }
-
- // If reasonCodeStr is empty, set all possible reason codes
- if (codes == 0)
- codes = iaik.asn1.structures.DistributionPoint.unused | iaik.asn1.structures.DistributionPoint.keyCompromise
- | iaik.asn1.structures.DistributionPoint.cACompromise
- | iaik.asn1.structures.DistributionPoint.affiliationChanged
- | iaik.asn1.structures.DistributionPoint.superseded
- | iaik.asn1.structures.DistributionPoint.cessationOfOperation
- | iaik.asn1.structures.DistributionPoint.certificateHold
- | iaik.asn1.structures.DistributionPoint.privilegeWithdrawn
- | iaik.asn1.structures.DistributionPoint.aACompromise;
-
- return codes;
- }
-
- /**
- * Return a binary representation of the reason codes of this distribution
- * point.
- *
- * @return The binary representation of the reason codes.
- */
- public int getReasonCodes() {
- return reasonCodes;
- }
-
- /**
- * Return a <code>String</code> representation of this distribution point.
- *
- * @return The <code>String</code> representation of this distribution
- * point.
- * @see java.lang.Object#toString()
- */
- public String toString() {
- return "(DistributionPoint - " + ("URI<" + getUri()) + ("> REASONCODES<" + getReasonCodes() + ">)");
- }
-
- /**
- * @see iaik.pki.revocation.CRLDistributionPoint#getIssuerName()
- */
- public String getIssuerName() {
- return issuerName_;
- }
-
- @Override
- public Name getIssuerDN() {
- try {
- return new Name(this.issuerName_);
- } catch (RFC2253NameParserException e) {
- throw new RuntimeException(e);
- }
- }
+public class CRLDistributionPoint extends DistributionPoint implements
+ iaik.pki.revocation.CRLDistributionPoint {
+
+ private static Map RC_MAPPING = new HashMap();
+
+ static {
+
+ // create the mapping between reason code strings and their integer
+ // values
+ RC_MAPPING.put("unused", new Integer(iaik.asn1.structures.DistributionPoint.unused));
+ RC_MAPPING.put("keyCompromise", new Integer(iaik.asn1.structures.DistributionPoint.keyCompromise));
+ RC_MAPPING.put("cACompromise", new Integer(iaik.asn1.structures.DistributionPoint.cACompromise));
+ RC_MAPPING.put("affiliationChanged", new Integer(
+ iaik.asn1.structures.DistributionPoint.affiliationChanged));
+ RC_MAPPING.put("superseded", new Integer(iaik.asn1.structures.DistributionPoint.superseded));
+ RC_MAPPING.put("cessationOfOperation",
+ new Integer(iaik.asn1.structures.DistributionPoint.cessationOfOperation));
+ RC_MAPPING.put("certificateHold", new Integer(iaik.asn1.structures.DistributionPoint.certificateHold));
+ RC_MAPPING.put("privilegeWithdrawn", new Integer(
+ iaik.asn1.structures.DistributionPoint.privilegeWithdrawn));
+ RC_MAPPING.put("aACompromise", new Integer(iaik.asn1.structures.DistributionPoint.aACompromise));
+ }
+
+ /**
+ * The name of the CA issuing the CRL referred to by this DP.
+ */
+ private final String issuerName_;
+
+ /**
+ * The reason codes applicable for the distribution point.
+ */
+ private final int reasonCodes;
+
+ /**
+ * Create a <code>CRLDistributionPoint</code>.
+ *
+ * @param issuerName The name of the CA issuing the CRL referred to by this
+ * DP.
+ *
+ * @param uri The URI of the distribution point.
+ *
+ * @param reasonCodeStr A list of reason codes (a space-separated enumeration).
+ */
+ public CRLDistributionPoint(String issuerName, String uri, String reasonCodeStr) {
+ super(uri);
+ issuerName_ = issuerName;
+ this.reasonCodes = extractReasonCodes(reasonCodeStr);
+ }
+
+ /**
+ * @see DistributionPoint#getType()
+ */
+ @Override
+ public String getType() {
+ return RevocationSourceTypes.CRL;
+ }
+
+ /**
+ * Convert a list of reason codes provided as a <code>String</code> to a binary
+ * representation.
+ *
+ * @param reasonCodeStr A <code>String</code> containing a blank-separated,
+ * textual representation of reason codes.
+ * @return int A binary representation of reason codes.
+ * @see iaik.asn1.structures.DistributionPoint
+ */
+ private int extractReasonCodes(String reasonCodeStr) {
+ int codes = 0;
+ final StringTokenizer tokenizer = new StringTokenizer(reasonCodeStr);
+ String token;
+ Integer reasonCode;
+
+ while (tokenizer.hasMoreTokens()) {
+ token = tokenizer.nextToken();
+ reasonCode = (Integer) RC_MAPPING.get(token);
+ if (reasonCode != null) {
+ codes |= reasonCode.intValue();
+ } else {
+ final MessageProvider msg = MessageProvider.getInstance();
+ Logger.warn(new LogMsg(msg.getMessage("config.07", new Object[] { token })));
+ }
+ }
+
+ // If reasonCodeStr is empty, set all possible reason codes
+ if (codes == 0) {
+ codes = iaik.asn1.structures.DistributionPoint.unused
+ | iaik.asn1.structures.DistributionPoint.keyCompromise
+ | iaik.asn1.structures.DistributionPoint.cACompromise
+ | iaik.asn1.structures.DistributionPoint.affiliationChanged
+ | iaik.asn1.structures.DistributionPoint.superseded
+ | iaik.asn1.structures.DistributionPoint.cessationOfOperation
+ | iaik.asn1.structures.DistributionPoint.certificateHold
+ | iaik.asn1.structures.DistributionPoint.privilegeWithdrawn
+ | iaik.asn1.structures.DistributionPoint.aACompromise;
+ }
+
+ return codes;
+ }
+
+ /**
+ * Return a binary representation of the reason codes of this distribution
+ * point.
+ *
+ * @return The binary representation of the reason codes.
+ */
+ @Override
+ public int getReasonCodes() {
+ return reasonCodes;
+ }
+
+ /**
+ * Return a <code>String</code> representation of this distribution point.
+ *
+ * @return The <code>String</code> representation of this distribution point.
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ return "(DistributionPoint - " + "URI<" + getUri() + "> REASONCODES<" + getReasonCodes() + ">)";
+ }
+
+ /**
+ * @see iaik.pki.revocation.CRLDistributionPoint#getIssuerName()
+ */
+ public String getIssuerName() {
+ return issuerName_;
+ }
+
+ @Override
+ public Name getIssuerDN() {
+ try {
+ return new Name(this.issuerName_);
+ } catch (final RFC2253NameParserException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java
index 6546e88..13f1de9 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationException.java
@@ -21,27 +21,26 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
import at.gv.egovernment.moa.spss.MOASystemException;
/**
* Exception signalling an error in the configuration.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ConfigurationException extends MOASystemException {
/**
- *
- */
- private static final long serialVersionUID = -1934466124930228755L;
+ *
+ */
+ private static final long serialVersionUID = -1934466124930228755L;
-/**
+ /**
* Create a <code>ConfigurationException</code>.
- *
+ *
* @see at.gv.egovernment.moa.spss.MOAException#MOAException(String, Object[])
*/
public ConfigurationException(String messageId, Object[] parameters) {
@@ -50,12 +49,14 @@ public class ConfigurationException extends MOASystemException {
/**
* Create a <code>ConfigurationException</code>.
- * @see at.gv.egovernment.moa.spss.MOAException#MOAException(String, Object[], Throwable)
+ *
+ * @see at.gv.egovernment.moa.spss.MOAException#MOAException(String, Object[],
+ * Throwable)
*/
public ConfigurationException(
- String messageId,
- Object[] parameters,
- Throwable wrapped) {
+ String messageId,
+ Object[] parameters,
+ Throwable wrapped) {
super(messageId, parameters, wrapped);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java
index 3c00232..41b0c29 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java
@@ -20,22 +20,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
-import iaik.asn1.structures.Name;
-//import iaik.ixsil.exceptions.URIException;
-//import iaik.ixsil.util.URI;
-import iaik.pki.pathvalidation.ChainingModes;
-import iaik.pki.revocation.RevocationSourceTypes;
-import iaik.server.modules.xml.BlackListEntry;
-import iaik.server.modules.xml.ExternalReferenceChecker;
-import iaik.server.modules.xml.WhiteListEntry;
-import iaik.utils.RFC2253NameParser;
-import iaik.utils.RFC2253NameParserException;
-import iaik.xml.crypto.utils.URI;
-import iaik.xml.crypto.utils.URIException;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -70,14 +56,25 @@ import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.DOMUtils;
-import at.gv.egovernment.moaspss.util.FileUtils;
import at.gv.egovernment.moaspss.util.MiscUtil;
import at.gv.egovernment.moaspss.util.StringUtils;
import at.gv.egovernment.moaspss.util.XPathUtils;
+import iaik.asn1.structures.Name;
+//import iaik.ixsil.exceptions.URIException;
+//import iaik.ixsil.util.URI;
+import iaik.pki.pathvalidation.ChainingModes;
+import iaik.pki.revocation.RevocationSourceTypes;
+import iaik.server.modules.xml.BlackListEntry;
+import iaik.server.modules.xml.ExternalReferenceChecker;
+import iaik.server.modules.xml.WhiteListEntry;
+import iaik.utils.RFC2253NameParser;
+import iaik.utils.RFC2253NameParserException;
+import iaik.xml.crypto.utils.URI;
+import iaik.xml.crypto.utils.URIException;
/**
* A class that builds configuration data from a DOM based representation.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -102,271 +99,274 @@ public class ConfigurationPartsBuilder {
//
private static final String ROOT = "/" + CONF + "MOAConfiguration/";
-
+
private static final String PDFAS_CONFIGURATION_XPATH =
- ROOT + CONF + "Common/" + CONF + "PDFASConfig";
-
+ ROOT + CONF + "Common/" + CONF + "PDFASConfig";
+
private static final String FORMRESULT_CONFIGURATION_XPATH =
- ROOT + CONF + "Common/" + CONF + "AdESFormResult";
-
+ ROOT + CONF + "Common/" + CONF + "AdESFormResult";
+
private static final String DIGEST_METHOD_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "XMLDSig/"
- + CONF + "DigestMethodAlgorithm";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "XMLDSig/"
+ + CONF + "DigestMethodAlgorithm";
private static final String XADES_VERSION_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "XAdES/"
- + CONF + "Version";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "XAdES/"
+ + CONF + "Version";
private static final String C14N_ALGORITHM_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "XMLDSig/"
- + CONF + "CanonicalizationAlgorithm";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "XMLDSig/"
+ + CONF + "CanonicalizationAlgorithm";
private static final String HARDWARE_CRYPTO_MODULE_XPATH =
- ROOT + CONF + "Common/"
- + CONF + "HardwareCryptoModule";
+ ROOT + CONF + "Common/"
+ + CONF + "HardwareCryptoModule";
private static final String PERMIT_EXTERNAL_URIS_XPATH =
- ROOT + CONF + "Common/"
- + CONF + "PermitExternalUris";
+ ROOT + CONF + "Common/"
+ + CONF + "PermitExternalUris";
private static final String BLACK_LIST_URIS_XPATH =
- ROOT + CONF + "Common/"
- + CONF + "PermitExternalUris/"
- + CONF + "BlackListUri";
+ ROOT + CONF + "Common/"
+ + CONF + "PermitExternalUris/"
+ + CONF + "BlackListUri";
private static final String FORBID_EXTERNAL_URIS_XPATH =
- ROOT + CONF + "Common/"
- + CONF + "ForbidExternalUris";
+ ROOT + CONF + "Common/"
+ + CONF + "ForbidExternalUris";
private static final String WHITE_LIST_URIS_XPATH =
- ROOT + CONF + "Common/"
- + CONF + "ForbidExternalUris/"
- + CONF + "WhiteListUri";
-
+ ROOT + CONF + "Common/"
+ + CONF + "ForbidExternalUris/"
+ + CONF + "WhiteListUri";
+
private static final String HARDWARE_KEY_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "KeyModules/"
- + CONF + "HardwareKeyModule";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "KeyModules/"
+ + CONF + "HardwareKeyModule";
private static final String SOFTWARE_KEY_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "KeyModules/"
- + CONF + "SoftwareKeyModule";
- private static final String KEYGROUP_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "KeyGroup";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "KeyModules/"
+ + CONF + "SoftwareKeyModule";
+ private static final String KEYGROUP_XPATH =
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "KeyGroup";
private static final String KEYGROUP_MAPPING_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "KeyGroupMapping";
- private static final String ISSUER_XPATH =
- DSIG + "X509IssuerName";
- private static final String SERIAL_XPATH =
- DSIG + "X509SerialNumber";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "KeyGroupMapping";
+ private static final String ISSUER_XPATH =
+ DSIG + "X509IssuerName";
+ private static final String SERIAL_XPATH =
+ DSIG + "X509SerialNumber";
private static final String CERTSTORE_LOCATION_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "PathConstruction/"
- + CONF + "CertificateStore/"
- + CONF + "DirectoryStore/"
- + CONF + "Location";
- private static final String AUTO_ADD_CERTIFICATES_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "PathConstruction/"
- + CONF + "AutoAddCertificates";
-
- private static final String AUTO_ADD_EE_CERTIFICATES_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "PathConstruction/"
- + CONF + "AutoAddEECertificates";
-
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "PathConstruction/"
+ + CONF + "CertificateStore/"
+ + CONF + "DirectoryStore/"
+ + CONF + "Location";
+ private static final String AUTO_ADD_CERTIFICATES_XPATH_ =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "PathConstruction/"
+ + CONF + "AutoAddCertificates";
+
+ private static final String AUTO_ADD_EE_CERTIFICATES_XPATH_ =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "PathConstruction/"
+ + CONF + "AutoAddEECertificates";
+
private static final String USE_AUTHORITY_INFO_ACCESS_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "PathConstruction/"
- + CONF + "UseAuthorityInformationAccess";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "PathConstruction/"
+ + CONF + "UseAuthorityInformationAccess";
private static final String CHAINING_MODES_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "PathValidation/"
- + CONF + "ChainingMode";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "PathValidation/"
+ + CONF + "ChainingMode";
private static final String CHAINING_MODES_DEFAULT_XPATH =
- CHAINING_MODES_XPATH + "/"
- + CONF + "DefaultMode";
+ CHAINING_MODES_XPATH + "/"
+ + CONF + "DefaultMode";
private static final String TRUST_ANCHOR_XPATH =
- CHAINING_MODES_XPATH + "/"
- + CONF + "TrustAnchor";
+ CHAINING_MODES_XPATH + "/"
+ + CONF + "TrustAnchor";
private static final String TRUST_PROFILE_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "PathValidation/"
- + CONF + "TrustProfile";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "PathValidation/"
+ + CONF + "TrustProfile";
private static final String DISTRIBUTION_POINTS_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "DistributionPoint";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "DistributionPoint";
private static final String CRL_RETENTION_INTERVALS_CA_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "CrlRetentionIntervals/"
- + CONF + "CA";
- private static final String ENABLE_REVOCATION_CHECKING_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "EnableChecking";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "CrlRetentionIntervals/"
+ + CONF + "CA";
+ private static final String ENABLE_REVOCATION_CHECKING_XPATH_ =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "EnableChecking";
private static final String MAX_REVOCATION_AGE_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "MaxRevocationAge";
- private static final String REVOCATION_SERVICEORDER_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "ServiceOrder/"
- + CONF + "Service";
- private static final String ENABLE_ARCHIVING_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "Archiving/"
- + CONF + "EnableArchiving";
- private static final String CRL_ARCHIVE_DURATION_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "Archiving/"
- + CONF + "ArchiveDuration";
- private static final String ACHIVE_JDBC_URL_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "Archiving/"
- + CONF + "Archive/"
- + CONF + "DatabaseArchive/"
- + CONF + "JDBCURL";
- private static final String ACHIVE_JDBC_DRIVER_CLASS_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "RevocationChecking/"
- + CONF + "Archiving/"
- + CONF + "Archive/"
- + CONF + "DatabaseArchive/"
- + CONF + "JDBCDriverClassName";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "MaxRevocationAge";
+ private static final String REVOCATION_SERVICEORDER_XPATH_ =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "ServiceOrder/"
+ + CONF + "Service";
+ private static final String ENABLE_ARCHIVING_XPATH =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "Archiving/"
+ + CONF + "EnableArchiving";
+ private static final String CRL_ARCHIVE_DURATION_XPATH =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "Archiving/"
+ + CONF + "ArchiveDuration";
+ private static final String ACHIVE_JDBC_URL_ =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "Archiving/"
+ + CONF + "Archive/"
+ + CONF + "DatabaseArchive/"
+ + CONF + "JDBCURL";
+ private static final String ACHIVE_JDBC_DRIVER_CLASS_ =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "RevocationChecking/"
+ + CONF + "Archiving/"
+ + CONF + "Archive/"
+ + CONF + "DatabaseArchive/"
+ + CONF + "JDBCDriverClassName";
private static final String CREATE_TRANSFORMS_INFO_PROFILE_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "CreateTransformsInfoProfile";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "CreateTransformsInfoProfile";
private static final String CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH =
- ROOT + CONF + "SignatureCreation/"
- + CONF + "CreateSignatureEnvironmentProfile";
+ ROOT + CONF + "SignatureCreation/"
+ + CONF + "CreateSignatureEnvironmentProfile";
private static final String VERIFY_TRANSFORMS_INFO_PROFILE_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "VerifyTransformsInfoProfile";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "VerifyTransformsInfoProfile";
private static final String SUPPLEMENT_PROFILE_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "SupplementProfile";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "SupplementProfile";
private static final String PERMIT_FILE_URIS_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "PermitFileURIs";
-
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "PermitFileURIs";
+
private static final String CONNECTION_TIMEOUT_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "ConnectionTimeout";
-
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "ConnectionTimeout";
+
private static final String READ_TIMEOUT_XPATH_ =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "ReadTimeout";
-
- private static final String TSL_CONFIGURATION_XPATH =
- ROOT + CONF + "SignatureVerification/"
- + CONF + "CertificateValidation/"
- + CONF + "TSLConfiguration/";
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "ReadTimeout";
+
+ private static final String TSL_CONFIGURATION_XPATH =
+ ROOT + CONF + "SignatureVerification/"
+ + CONF + "CertificateValidation/"
+ + CONF + "TSLConfiguration/";
//
- // default values for configuration parameters
+ // default values for configuration parameters
//
/** The accepted canonicalization algorithm URIs, as an array */
private static final String[] ACCEPTED_C14N_ALGORITHMS_ARRAY =
- {
- Constants.C14N_URI,
- Constants.C14N_WITH_COMMENTS_URI,
- Constants.EXC_C14N_URI,
- Constants.EXC_C14N_WITH_COMMENTS_URI };
+ {
+ Constants.C14N_URI,
+ Constants.C14N_WITH_COMMENTS_URI,
+ Constants.EXC_C14N_URI,
+ Constants.EXC_C14N_WITH_COMMENTS_URI };
/** The accepted canonicalization algorithm URIs, as a Set */
private static final Set ACCEPTED_C14N_ALGORITHMS =
- new HashSet(Arrays.asList(ACCEPTED_C14N_ALGORITHMS_ARRAY));
+ new HashSet(Arrays.asList(ACCEPTED_C14N_ALGORITHMS_ARRAY));
/** Default canonicalization algorithm, if none/illegal has been configured */
private static final String C14N_ALGORITHM_DEFAULT = Constants.C14N_URI;
/** The accepted digest method algorithm URIs, as an array */
private static final String[] ACCEPTED_DIGEST_ALGORITHMS_ARRAY =
- { Constants.SHA1_URI,
- Constants.SHA256_URI,
- Constants.SHA384_URI,
- Constants.SHA512_URI};
+ { Constants.SHA1_URI,
+ Constants.SHA256_URI,
+ Constants.SHA384_URI,
+ Constants.SHA512_URI };
/** The accepted digest method algorithm URIs, as a Set */
private static final Set ACCEPTED_DIGEST_ALGORITHMS =
- new HashSet(Arrays.asList(ACCEPTED_DIGEST_ALGORITHMS_ARRAY));
-
-
- /** Default digest algorithm URI, if none/illegal has been configured (for XAdES 1.1.1) */
+ new HashSet(Arrays.asList(ACCEPTED_DIGEST_ALGORITHMS_ARRAY));
+
+ /**
+ * Default digest algorithm URI, if none/illegal has been configured (for XAdES
+ * 1.1.1)
+ */
private static final String DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1 = Constants.SHA1_URI;
-
- /** Default digest algorithm URI, if none/illegal has been configured (for XAdES 1.4.2) */
+
+ /**
+ * Default digest algorithm URI, if none/illegal has been configured (for XAdES
+ * 1.4.2)
+ */
private static final String DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2 = Constants.SHA256_URI;
-
+
/** The root element of the MOA configuration */
- private Element configElem;
-
+ private final Element configElem;
+
/**
* The directory containing the underlying configuration file.
*/
- private File configRoot_;
+ private final File configRoot_;
/** Whether any warnings were encountered building the configuration. */
- private List warnings = new ArrayList();
+ private final List warnings = new ArrayList();
/**
* Create a new <code>ConfigurationPartsBuilder</code>.
- *
+ *
* @param configElem The root element of the MOA configuration.
- *
+ *
* @param configRoot The directory containing the underlying configuration file.
*/
- public ConfigurationPartsBuilder(Element configElem, File configRoot)
- {
+ public ConfigurationPartsBuilder(Element configElem, File configRoot) {
this.configElem = configElem;
configRoot_ = configRoot;
}
/**
- * Returns the root element of the MOA configuration.
- *
+ * Returns the root element of the MOA configuration.
+ *
* @return The root element of the MOA configuration.
*/
public Element getConfigElem() {
return configElem;
}
-
- /**
+
+ /**
* Returns the directory containing the underlying configuration file.
- *
+ *
* @return the directory containing the underlying configuration file.
*/
- public File getConfigRoot()
- {
+ public File getConfigRoot() {
return configRoot_;
}
/**
* Returns the warnings encountered during building the configuration.
- *
- * @return A <code>List</code> of <code>String</code>s, containing the
- * warning messages.
+ *
+ * @return A <code>List</code> of <code>String</code>s, containing the warning
+ * messages.
*/
public List getWarnings() {
return warnings;
@@ -374,124 +374,114 @@ public class ConfigurationPartsBuilder {
/**
* Returns the digest method algorithm name.
- *
+ *
* @return The digest method algorithm name from the configuration.
*/
- public String getDigestMethodAlgorithmName()
- {
+ public String getDigestMethodAlgorithmName() {
String digestMethod = getElementValue(getConfigElem(), DIGEST_METHOD_XPATH, null);
-
- if (digestMethod == null || !ACCEPTED_DIGEST_ALGORITHMS.contains(digestMethod))
- {
- String xadesVersion = this.getXAdESVersion();
- if (xadesVersion == null) {
- info(
- "config.23",
- new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1 });
- digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1;
- }
- else {
- info(
- "config.23",
- new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2 });
- digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2;
- }
-
-
+
+ if (digestMethod == null || !ACCEPTED_DIGEST_ALGORITHMS.contains(digestMethod)) {
+ final String xadesVersion = this.getXAdESVersion();
+ if (xadesVersion == null) {
+ info(
+ "config.23",
+ new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1 });
+ digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_1_1;
+ } else {
+ info(
+ "config.23",
+ new Object[] { "DigestMethodAlgorithm", DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2 });
+ digestMethod = DIGEST_ALGORITHM_DEFAULT_XADES_1_4_2;
+ }
+
}
return digestMethod;
}
-
+
/**
* Returns the digest method algorithm name.
- *
+ *
* @return The digest method algorithm name from the configuration.
*/
- public String getXAdESVersion()
- {
- String xadesVersion = getElementValue(getConfigElem(), XADES_VERSION_XPATH, null);
-
+ public String getXAdESVersion() {
+ final String xadesVersion = getElementValue(getConfigElem(), XADES_VERSION_XPATH, null);
+
return xadesVersion;
}
-
+
/**
* Returns the digest method algorithm name.
- *
+ *
* @return The digest method algorithm name from the configuration.
*/
- public String getPDFASConfiguration()
- {
- String pdfasConfiguration = getElementValue(getConfigElem(), PDFAS_CONFIGURATION_XPATH, null);
-
+ public String getPDFASConfiguration() {
+ final String pdfasConfiguration = getElementValue(getConfigElem(), PDFAS_CONFIGURATION_XPATH, null);
+
return pdfasConfiguration;
}
-
+
/**
* Returns the digest method algorithm name.
- *
+ *
* @return The digest method algorithm name from the configuration.
*/
- public int getConnectionTimeout()
- {
- String connectionTimeout = getElementValue(getConfigElem(), CONNECTION_TIMEOUT_XPATH_, "30");
+ public int getConnectionTimeout() {
+ final String connectionTimeout = getElementValue(getConfigElem(), CONNECTION_TIMEOUT_XPATH_, "30");
int defaultConnectionTimeout = 30;
-
- if(connectionTimeout != null) {
- try {
- defaultConnectionTimeout = Integer.parseInt(connectionTimeout);
- } catch(NumberFormatException e) {
- Logger.warn("Configuration value " + CONNECTION_TIMEOUT_XPATH_ + " should be a number defaulting to 30");
- }
+
+ if (connectionTimeout != null) {
+ try {
+ defaultConnectionTimeout = Integer.parseInt(connectionTimeout);
+ } catch (final NumberFormatException e) {
+ Logger.warn("Configuration value " + CONNECTION_TIMEOUT_XPATH_
+ + " should be a number defaulting to 30");
+ }
}
-
- if(defaultConnectionTimeout < 0) {
- defaultConnectionTimeout = 30;
+
+ if (defaultConnectionTimeout < 0) {
+ defaultConnectionTimeout = 30;
}
-
+
return defaultConnectionTimeout * 1000;
}
-
- public int getReadTimeout()
- {
- String connectionTimeout = getElementValue(getConfigElem(), READ_TIMEOUT_XPATH_, "30");
+
+ public int getReadTimeout() {
+ final String connectionTimeout = getElementValue(getConfigElem(), READ_TIMEOUT_XPATH_, "30");
int defaultConnectionTimeout = 30;
-
- if(connectionTimeout != null) {
- try {
- defaultConnectionTimeout = Integer.parseInt(connectionTimeout);
- } catch(NumberFormatException e) {
- Logger.warn("Configuration value " + READ_TIMEOUT_XPATH_ + " should be a number defaulting to 30");
- }
+
+ if (connectionTimeout != null) {
+ try {
+ defaultConnectionTimeout = Integer.parseInt(connectionTimeout);
+ } catch (final NumberFormatException e) {
+ Logger.warn("Configuration value " + READ_TIMEOUT_XPATH_ + " should be a number defaulting to 30");
+ }
}
-
- if(defaultConnectionTimeout < 0) {
- defaultConnectionTimeout = 30;
+
+ if (defaultConnectionTimeout < 0) {
+ defaultConnectionTimeout = 30;
}
-
+
return defaultConnectionTimeout * 1000;
}
-
- public boolean getAdesFormResult()
- {
- String enableArchiving = getElementValue(getConfigElem(), FORMRESULT_CONFIGURATION_XPATH, null);
- return Boolean.valueOf(enableArchiving).booleanValue();
+
+ public boolean getAdesFormResult() {
+ final String enableArchiving = getElementValue(getConfigElem(), FORMRESULT_CONFIGURATION_XPATH, null);
+ return Boolean.valueOf(enableArchiving).booleanValue();
}
-
+
/**
* Returns the canonicalization algorithm name.
- *
+ *
* @return The canonicalization algorithm name from the configuration.
*/
- public String getCanonicalizationAlgorithmName()
- {
+ public String getCanonicalizationAlgorithmName() {
String c14nAlgorithm = getElementValue(getConfigElem(), C14N_ALGORITHM_XPATH, null);
- if (c14nAlgorithm == null || !ACCEPTED_C14N_ALGORITHMS.contains(c14nAlgorithm))
- {
+ if (c14nAlgorithm == null || !ACCEPTED_C14N_ALGORITHMS.contains(c14nAlgorithm)) {
info(
- "config.23",
- new Object[] { "CanonicalizationAlgorithm", C14N_ALGORITHM_DEFAULT });
+ "config.23",
+ new Object[] { "CanonicalizationAlgorithm", C14N_ALGORITHM_DEFAULT });
c14nAlgorithm = C14N_ALGORITHM_DEFAULT;
}
@@ -500,189 +490,172 @@ public class ConfigurationPartsBuilder {
/**
* Build the configured hardware crypto modules.
- *
+ *
* @return The hardware crypto modules from the configuration.
*/
- public List buildHardwareCryptoModules()
- {
- List modules = new ArrayList();
- NodeIterator modIter = XPathUtils.selectNodeIterator(
- getConfigElem(),
- HARDWARE_CRYPTO_MODULE_XPATH);
+ public List buildHardwareCryptoModules() {
+ final List modules = new ArrayList();
+ final NodeIterator modIter = XPathUtils.selectNodeIterator(
+ getConfigElem(),
+ HARDWARE_CRYPTO_MODULE_XPATH);
Element modElem;
while ((modElem = (Element) modIter.nextNode()) != null) {
- String name = getElementValue(modElem, CONF + "Name", null);
- String slotId = getElementValue(modElem, CONF + "SlotId", null);
- String userPIN = getElementValue(modElem, CONF + "UserPIN", null);
- HardwareCryptoModule module = new HardwareCryptoModule(name, slotId, userPIN);
+ final String name = getElementValue(modElem, CONF + "Name", null);
+ final String slotId = getElementValue(modElem, CONF + "SlotId", null);
+ final String userPIN = getElementValue(modElem, CONF + "UserPIN", null);
+ final HardwareCryptoModule module = new HardwareCryptoModule(name, slotId, userPIN);
modules.add(module);
}
return modules;
}
-
+
/**
- *
+ *
* @return
*/
public boolean allowExternalUris() {
- Element permitExtUris = (Element)XPathUtils.selectSingleNode(getConfigElem(), PERMIT_EXTERNAL_URIS_XPATH);
-
- // if PermitExternalUris element does not exist - don't allow external uris
- if (permitExtUris == null) {
- // set permitExtUris for iaik-moa
- ExternalReferenceChecker.setPermitExternalURLs(false);
- return false;
- }
- else {
- // set permitExtUris for iaik-moa
- ExternalReferenceChecker.setPermitExternalURLs(true);
- return true;
- }
+ final Element permitExtUris = (Element) XPathUtils.selectSingleNode(getConfigElem(),
+ PERMIT_EXTERNAL_URIS_XPATH);
+
+ // if PermitExternalUris element does not exist - don't allow external uris
+ if (permitExtUris == null) {
+ // set permitExtUris for iaik-moa
+ ExternalReferenceChecker.setPermitExternalURLs(false);
+ return false;
+ } else {
+ // set permitExtUris for iaik-moa
+ ExternalReferenceChecker.setPermitExternalURLs(true);
+ return true;
+ }
}
-
-
+
/**
- *
+ *
* @return
*/
public List buildPermitExternalUris() {
-
- info("config.33", null);
-
- List blacklist = new ArrayList();
- List blackListIaikMoa = new ArrayList();
-
- NodeIterator permitExtIter = XPathUtils.selectNodeIterator(
- getConfigElem(),
- BLACK_LIST_URIS_XPATH);
-
- Element permitExtElem = null;
- while ((permitExtElem = (Element) permitExtIter.nextNode()) != null) {
- String host = getElementValue(permitExtElem, CONF + "IP", null);
- String port = getElementValue(permitExtElem, CONF + "Port", null);
-
- BlackListEntry entry =null;
- if (port == null) {
- entry = new BlackListEntry(host, -1);
- info("config.34", new Object[]{host});
- }
- else {
- entry = new BlackListEntry(host, new Integer(port).intValue());
- info("config.34", new Object[]{host + ":" + port});
- }
-
- // add entry to iaik-moa blacklist
- blackListIaikMoa.add(entry);
-
-
- String array[] = new String[2];
- array[0] = host;
- array[1] = port;
- blacklist.add(array);
-
- }
-
-
- // set blacklist for iaik-moa
- ExternalReferenceChecker.setBlacklist(blackListIaikMoa);
-
-
- if(blacklist.isEmpty()) // no blacklisted uris given
- info("config.36", null);
-
-
- return blacklist;
+
+ info("config.33", null);
+
+ final List blacklist = new ArrayList();
+ final List blackListIaikMoa = new ArrayList();
+
+ final NodeIterator permitExtIter = XPathUtils.selectNodeIterator(
+ getConfigElem(),
+ BLACK_LIST_URIS_XPATH);
+
+ Element permitExtElem = null;
+ while ((permitExtElem = (Element) permitExtIter.nextNode()) != null) {
+ final String host = getElementValue(permitExtElem, CONF + "IP", null);
+ final String port = getElementValue(permitExtElem, CONF + "Port", null);
+
+ BlackListEntry entry = null;
+ if (port == null) {
+ entry = new BlackListEntry(host, -1);
+ info("config.34", new Object[] { host });
+ } else {
+ entry = new BlackListEntry(host, new Integer(port).intValue());
+ info("config.34", new Object[] { host + ":" + port });
+ }
+
+ // add entry to iaik-moa blacklist
+ blackListIaikMoa.add(entry);
+
+ final String array[] = new String[2];
+ array[0] = host;
+ array[1] = port;
+ blacklist.add(array);
+
+ }
+
+ // set blacklist for iaik-moa
+ ExternalReferenceChecker.setBlacklist(blackListIaikMoa);
+
+ if (blacklist.isEmpty()) {
+ info("config.36", null);
+ }
+
+ return blacklist;
}
-
+
/**
- *
+ *
* @return
*/
public List buildForbidExternalUris() {
-
- //info("config.47", null);
-
- List whitelist = new ArrayList();
- List whiteListIaikMoa = new ArrayList();
-
- NodeIterator forbidExtIter = XPathUtils.selectNodeIterator(
- getConfigElem(),
- WHITE_LIST_URIS_XPATH);
-
- Element permitExtElem = null;
- while ((permitExtElem = (Element) forbidExtIter.nextNode()) != null) {
- String host = getElementValue(permitExtElem, CONF + "IP", null);
- String port = getElementValue(permitExtElem, CONF + "Port", null);
-
- // WhiteListeEntry
- WhiteListEntry entry =null;
- if (port == null) {
- entry = new WhiteListEntry(host, -1);
- info("config.49", new Object[]{host});
+
+ // info("config.47", null);
+
+ final List whitelist = new ArrayList();
+ final List whiteListIaikMoa = new ArrayList();
+
+ final NodeIterator forbidExtIter = XPathUtils.selectNodeIterator(
+ getConfigElem(),
+ WHITE_LIST_URIS_XPATH);
+
+ Element permitExtElem = null;
+ while ((permitExtElem = (Element) forbidExtIter.nextNode()) != null) {
+ final String host = getElementValue(permitExtElem, CONF + "IP", null);
+ final String port = getElementValue(permitExtElem, CONF + "Port", null);
+
+ // WhiteListeEntry
+ WhiteListEntry entry = null;
+ if (port == null) {
+ entry = new WhiteListEntry(host, -1);
+ info("config.49", new Object[] { host });
+ } else {
+ entry = new WhiteListEntry(host, new Integer(port).intValue());
+ info("config.49", new Object[] { host + ":" + port });
}
- else {
- entry = new WhiteListEntry(host, new Integer(port).intValue());
- info("config.49", new Object[]{host + ":" + port});
- }
-
- // add entry to iaik-moa whitelist
- whiteListIaikMoa.add(entry);
-
-
- String array[] = new String[2];
- array[0] = host;
- array[1] = port;
- whitelist.add(array);
-
- }
-
-
- // set whitelist for iaik-moa
- ExternalReferenceChecker.setWhitelist(whiteListIaikMoa);
-
-
- if(whitelist.isEmpty()) // no whitelisted uris given
- info("config.48", null);
-
-
- return whitelist;
+
+ // add entry to iaik-moa whitelist
+ whiteListIaikMoa.add(entry);
+
+ final String array[] = new String[2];
+ array[0] = host;
+ array[1] = port;
+ whitelist.add(array);
+
+ }
+
+ // set whitelist for iaik-moa
+ ExternalReferenceChecker.setWhitelist(whiteListIaikMoa);
+
+ if (whitelist.isEmpty()) {
+ info("config.48", null);
+ }
+
+ return whitelist;
}
-
-
/**
- * Build the configured hardware keys.
- *
- * @param keyModules The keyModules that the configuration already knows about. To
- * prevent multiple key modules with the same ID.
+ * Build the configured hardware keys.
+ *
+ * @param keyModules The keyModules that the configuration already knows about.
+ * To prevent multiple key modules with the same ID.
* @return The hardware keys contained in the configuration.
*/
- public List buildHardwareKeyModules(List keyModules)
- {
- Set existingIds = toIdSet(keyModules);
- List hardwareKeys = new ArrayList();
- NodeIterator hkIter =
- XPathUtils.selectNodeIterator(getConfigElem(), HARDWARE_KEY_XPATH);
+ public List buildHardwareKeyModules(List keyModules) {
+ final Set existingIds = toIdSet(keyModules);
+ final List hardwareKeys = new ArrayList();
+ final NodeIterator hkIter =
+ XPathUtils.selectNodeIterator(getConfigElem(), HARDWARE_KEY_XPATH);
Element keyElem;
- while ((keyElem = (Element) hkIter.nextNode()) != null)
- {
- String id = getElementValue(keyElem, CONF + "Id", null);
- String name = getElementValue(keyElem, CONF + "Name", null);
- String slotId = getElementValue(keyElem, CONF + "SlotId", null);
- String userPIN = getElementValue(keyElem, CONF + "UserPIN", null);
+ while ((keyElem = (Element) hkIter.nextNode()) != null) {
+ final String id = getElementValue(keyElem, CONF + "Id", null);
+ final String name = getElementValue(keyElem, CONF + "Name", null);
+ final String slotId = getElementValue(keyElem, CONF + "SlotId", null);
+ final String userPIN = getElementValue(keyElem, CONF + "UserPIN", null);
- if (existingIds.contains(id))
- {
+ if (existingIds.contains(id)) {
warn(
- "config.04",
- new Object[] { "Hardware- oder SoftwareKeyModule", id });
- }
- else
- {
- KeyModule key = new HardwareKeyModule(id, name, slotId, userPIN);
+ "config.04",
+ new Object[] { "Hardware- oder SoftwareKeyModule", id });
+ } else {
+ final KeyModule key = new HardwareKeyModule(id, name, slotId, userPIN);
hardwareKeys.add(key);
existingIds.add(id);
}
@@ -694,34 +667,29 @@ public class ConfigurationPartsBuilder {
/**
* Build the configured software keys.
- *
- * @param keyModules The keyModules that the configuration already knows about. To
- * prevent multiple key modules with the same ID.
+ *
+ * @param keyModules The keyModules that the configuration already knows about.
+ * To prevent multiple key modules with the same ID.
*
* @return The software keys contained in the configuration.
*/
- public List buildSoftwareKeyModules(List keyModules)
- {
- Set existingIds = toIdSet(keyModules);
- List softwareKeys = new ArrayList();
- NodeIterator skIter =
- XPathUtils.selectNodeIterator(getConfigElem(), SOFTWARE_KEY_XPATH);
+ public List buildSoftwareKeyModules(List keyModules) {
+ final Set existingIds = toIdSet(keyModules);
+ final List softwareKeys = new ArrayList();
+ final NodeIterator skIter =
+ XPathUtils.selectNodeIterator(getConfigElem(), SOFTWARE_KEY_XPATH);
Element keyElem;
- while ((keyElem = (Element) skIter.nextNode()) != null)
- {
- String id = getElementValue(keyElem, CONF + "Id", null);
- String fileName = getElementValue(keyElem, CONF + "FileName", null);
- String passWord = getElementValue(keyElem, CONF + "Password", null);
+ while ((keyElem = (Element) skIter.nextNode()) != null) {
+ final String id = getElementValue(keyElem, CONF + "Id", null);
+ final String fileName = getElementValue(keyElem, CONF + "FileName", null);
+ final String passWord = getElementValue(keyElem, CONF + "Password", null);
- if (existingIds.contains(id))
- {
+ if (existingIds.contains(id)) {
warn(
- "config.04",
- new Object[] { "Hardware- oder SoftwareKeyModule", id });
- }
- else
- {
+ "config.04",
+ new Object[] { "Hardware- oder SoftwareKeyModule", id });
+ } else {
File keyFile;
KeyModule key;
@@ -733,7 +701,7 @@ public class ConfigurationPartsBuilder {
// check for existence
if (!keyFile.exists() || keyFile.isDirectory()) {
- warn("config.25", new Object[] { id, keyFile.getAbsolutePath()});
+ warn("config.25", new Object[] { id, keyFile.getAbsolutePath() });
} else {
// create a new key module
key = new SoftwareKeyModule(id, keyFile.getAbsolutePath(), passWord);
@@ -748,39 +716,36 @@ public class ConfigurationPartsBuilder {
/**
* Build the key group configuration.
- *
- * @param keyModules The <code>KeyModule</code>s that the configuration
- * knows about. Used to check for errors in the configuration.
+ *
+ * @param keyModules The <code>KeyModule</code>s that the configuration knows
+ * about. Used to check for errors in the configuration.
* @return The mapping between key group IDs and key groups.
*/
- public Map buildKeyGroups(List keyModules)
- {
- Set keyModuleIds = toIdSet(keyModules);
- Map keyGroups = new HashMap();
+ public Map buildKeyGroups(List keyModules) {
+ final Set keyModuleIds = toIdSet(keyModules);
+ final Map keyGroups = new HashMap();
NodeIterator kgIter;
Element keyGroupElem;
// select all KeyGroup elements and build the KeyGroup objects from them
kgIter = XPathUtils.selectNodeIterator(getConfigElem(), KEYGROUP_XPATH);
- while ((keyGroupElem = (Element) kgIter.nextNode()) != null)
- {
+ while ((keyGroupElem = (Element) kgIter.nextNode()) != null) {
String keyGroupId = getElementValue(keyGroupElem, CONF + "Id", null);
- //switch all keyGroupIds to lower case, only
- if (MiscUtil.isNotEmpty(keyGroupId))
- keyGroupId = keyGroupId.trim().toLowerCase();
-
- String keyGroupDigestMethodAlgorithm = getElementValue(keyGroupElem, CONF + "DigestMethodAlgorithm", null);
- Set keyGroupEntries =
- buildKeyGroupEntries(keyGroupId, keyModuleIds, keyGroupElem);
- KeyGroup keyGroup = new KeyGroup(keyGroupId, keyGroupEntries, keyGroupDigestMethodAlgorithm);
+ // switch all keyGroupIds to lower case, only
+ if (MiscUtil.isNotEmpty(keyGroupId)) {
+ keyGroupId = keyGroupId.trim().toLowerCase();
+ }
- if (keyGroups.containsKey(keyGroupId))
- {
+ final String keyGroupDigestMethodAlgorithm = getElementValue(keyGroupElem, CONF
+ + "DigestMethodAlgorithm", null);
+ final Set keyGroupEntries =
+ buildKeyGroupEntries(keyGroupId, keyModuleIds, keyGroupElem);
+ final KeyGroup keyGroup = new KeyGroup(keyGroupId, keyGroupEntries, keyGroupDigestMethodAlgorithm);
+
+ if (keyGroups.containsKey(keyGroupId)) {
warn("config.04", new Object[] { "KeyGroup", keyGroupId });
- }
- else
- {
+ } else {
keyGroups.put(keyGroup.getId(), keyGroup);
}
}
@@ -790,17 +755,16 @@ public class ConfigurationPartsBuilder {
/**
* Return the set of IDs contained in the given <code>KeyModule</code>s.
- *
- * @param keyModules The <code>KeyModule</code>s from which to extract the
- * IDs.
+ *
+ * @param keyModules The <code>KeyModule</code>s from which to extract the IDs.
* @return The IDs from the given <code>KeyModule</code>s.
*/
private Set toIdSet(List keyModules) {
- Set ids = new HashSet();
+ final Set ids = new HashSet();
Iterator iter;
for (iter = keyModules.iterator(); iter.hasNext();) {
- KeyModule keyModule = (KeyModule) iter.next();
+ final KeyModule keyModule = (KeyModule) iter.next();
ids.add(keyModule.getId());
}
@@ -809,35 +773,36 @@ public class ConfigurationPartsBuilder {
/**
* Build the key entries belonging to a key group.
- *
- * @param keyGroupId The ID of the key group we are building here. Passed
- * for logging purposes.
+ *
+ * @param keyGroupId The ID of the key group we are building here. Passed for
+ * logging purposes.
* @param keyModuleIds The IDs of the <code>HardwareKeyModule</code>s and
- * <code>SoftwareKeyModule</code>s that exist in the configuration.
+ * <code>SoftwareKeyModule</code>s that exist in the
+ * configuration.
* @param keyGroupElem The <code>KeyGroup</code> DOM element to parse.
* @return A <code>Set</code> of <code>KeyGroupEntry</code> objects.
*/
private Set buildKeyGroupEntries(
- String keyGroupId,
- Set keyModuleIds,
- Element keyGroupElem) {
+ String keyGroupId,
+ Set keyModuleIds,
+ Element keyGroupElem) {
- Set entries = new HashSet();
+ final Set entries = new HashSet();
NodeIterator keyEntryIter;
Element keyEntryElem;
// select all Key elements and put them into the Map
keyEntryIter = XPathUtils.selectNodeIterator(keyGroupElem, CONF + "Key");
- while ((keyEntryElem = (Element) keyEntryIter.nextNode()) != null)
- {
- String keyModuleId = getElementValue(keyEntryElem, CONF + "KeyModuleId", "");
- Element keyCertElem = (Element) XPathUtils.selectSingleNode(keyEntryElem, CONF + "KeyCertIssuerSerial");
- IssuerAndSerial issuerSerial = buildIssuerAndSerial(keyCertElem);
+ while ((keyEntryElem = (Element) keyEntryIter.nextNode()) != null) {
+ final String keyModuleId = getElementValue(keyEntryElem, CONF + "KeyModuleId", "");
+ final Element keyCertElem = (Element) XPathUtils.selectSingleNode(keyEntryElem, CONF
+ + "KeyCertIssuerSerial");
+ final IssuerAndSerial issuerSerial = buildIssuerAndSerial(keyCertElem);
if (!keyModuleIds.contains(keyModuleId)) {
warn("config.26", new Object[] { keyGroupId, keyModuleId });
} else if (issuerSerial != null) {
- KeyGroupEntry entry = new KeyGroupEntry(keyModuleId, issuerSerial);
+ final KeyGroupEntry entry = new KeyGroupEntry(keyModuleId, issuerSerial);
entries.add(entry);
}
}
@@ -846,34 +811,31 @@ public class ConfigurationPartsBuilder {
/**
* Build the key group mapping.
- *
+ *
* @param keyGroups The available key groups.
* @param anonymous The <code>IssuerAndSerial</code> to be used for key group
- * mappings not protected by a certificate.
+ * mappings not protected by a certificate.
* @return The key group mapping.
*/
public Map buildKeyGroupMappings(Map keyGroups, IssuerAndSerial anonymous) {
- Map mappings = new HashMap();
+ final Map mappings = new HashMap();
NodeIterator mappingIter;
Element mappingElem;
// select all KeyGroupMapping elements
mappingIter =
- XPathUtils.selectNodeIterator(getConfigElem(), KEYGROUP_MAPPING_XPATH);
+ XPathUtils.selectNodeIterator(getConfigElem(), KEYGROUP_MAPPING_XPATH);
// build the mapping for each KeyGroupMapping element
- while ((mappingElem = (Element) mappingIter.nextNode()) != null)
- {
- Element issuerSerialElem = (Element) XPathUtils.selectSingleNode(mappingElem, CONF + "CustomerId");
+ while ((mappingElem = (Element) mappingIter.nextNode()) != null) {
+ final Element issuerSerialElem = (Element) XPathUtils.selectSingleNode(mappingElem, CONF
+ + "CustomerId");
// build the IssuerAndSerial who has access to the key groups
IssuerAndSerial issuerAndSerial;
- if (issuerSerialElem != null)
- {
+ if (issuerSerialElem != null) {
issuerAndSerial = buildIssuerAndSerial(issuerSerialElem);
- }
- else
- {
+ } else {
// IssuerSerial element: the keygroup is generally available
issuerAndSerial = anonymous;
}
@@ -884,8 +846,7 @@ public class ConfigurationPartsBuilder {
NodeIterator keyGroupIter;
Element keyGroupElem;
- if (groups == null)
- {
+ if (groups == null) {
// no mapping exist -> build one
groups = new HashMap();
mappings.put(issuerAndSerial, groups);
@@ -893,16 +854,13 @@ public class ConfigurationPartsBuilder {
// select the available key groups and add them to the mapping
keyGroupIter = XPathUtils.selectNodeIterator(mappingElem, CONF + "KeyGroupId");
- while ((keyGroupElem = (Element) keyGroupIter.nextNode()) != null)
- {
- String keyGroupId = getElementValue(keyGroupElem, ".", null);
- KeyGroup keyGroup = (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase());
-
- if (keyGroup != null)
- {
+ while ((keyGroupElem = (Element) keyGroupIter.nextNode()) != null) {
+ final String keyGroupId = getElementValue(keyGroupElem, ".", null);
+ final KeyGroup keyGroup = (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase());
+
+ if (keyGroup != null) {
groups.put(keyGroupId, keyGroup);
- } else
- {
+ } else {
warn("config.00", new Object[] { keyGroupId });
}
}
@@ -914,15 +872,14 @@ public class ConfigurationPartsBuilder {
/**
* Returns the default chaining mode from the configuration.
- *
+ *
* @return The default chaining mode.
*/
- public String getDefaultChainingMode()
- {
- String defaultChaining = getElementValue(
- getConfigElem(),
- CHAINING_MODES_DEFAULT_XPATH,
- CM_PKIX);
+ public String getDefaultChainingMode() {
+ final String defaultChaining = getElementValue(
+ getConfigElem(),
+ CHAINING_MODES_DEFAULT_XPATH,
+ CM_PKIX);
return translateChainingMode(defaultChaining);
@@ -930,23 +887,20 @@ public class ConfigurationPartsBuilder {
/**
* Build the chaining modes for all configured trust anchors.
- *
+ *
* @return The mapping from trust anchors to chaining modes.
*/
- public Map buildChainingModes()
- {
- Map chainingModes = new HashMap();
- NodeIterator trustIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_ANCHOR_XPATH);
+ public Map buildChainingModes() {
+ final Map chainingModes = new HashMap();
+ final NodeIterator trustIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_ANCHOR_XPATH);
Element trustAnchorElem;
- while ((trustAnchorElem = (Element) trustIter.nextNode()) != null)
- {
- IssuerAndSerial issuerAndSerial = buildIssuerAndSerial(
- (Element)XPathUtils.selectSingleNode(trustAnchorElem, CONF + "Identification"));
- String mode = getElementValue(trustAnchorElem, CONF + "Mode", null);
+ while ((trustAnchorElem = (Element) trustIter.nextNode()) != null) {
+ final IssuerAndSerial issuerAndSerial = buildIssuerAndSerial(
+ (Element) XPathUtils.selectSingleNode(trustAnchorElem, CONF + "Identification"));
+ final String mode = getElementValue(trustAnchorElem, CONF + "Mode", null);
- if (issuerAndSerial != null)
- {
+ if (issuerAndSerial != null) {
chainingModes.put(issuerAndSerial, translateChainingMode(mode));
}
}
@@ -956,26 +910,26 @@ public class ConfigurationPartsBuilder {
/**
* Build an <code>IssuerAndSerial</code> from the DOM representation.
- *
+ *
* @param root The root element (being of type <code>dsig:
* X509IssuerSerialType</code>.
* @return The issuer and serial number contained in the <code>root</code>
- * element or <code>null</code> if could not be built for any reason.
+ * element or <code>null</code> if could not be built for any reason.
*/
private IssuerAndSerial buildIssuerAndSerial(Element root) {
- String issuer = getElementValue(root, ISSUER_XPATH, null);
- String serial = getElementValue(root, SERIAL_XPATH, null);
+ final String issuer = getElementValue(root, ISSUER_XPATH, null);
+ final String serial = getElementValue(root, SERIAL_XPATH, null);
if (issuer != null && serial != null) {
try {
- RFC2253NameParser nameParser = new RFC2253NameParser(issuer);
- Principal issuerDN = nameParser.parse();
+ final RFC2253NameParser nameParser = new RFC2253NameParser(issuer);
+ final Principal issuerDN = nameParser.parse();
return new IssuerAndSerial(issuerDN, new BigInteger(serial));
- } catch (RFC2253NameParserException e) {
+ } catch (final RFC2253NameParserException e) {
warn("config.16", new Object[] { issuer, serial }, e);
return null;
- } catch (NumberFormatException e) {
+ } catch (final NumberFormatException e) {
warn("config.16", new Object[] { issuer, serial }, e);
return null;
}
@@ -986,10 +940,10 @@ public class ConfigurationPartsBuilder {
/**
* Translate the chaining mode from the configuration file to one used in the
* IAIK MOA API.
- *
+ *
* @param chainingMode The chaining mode from the configuration.
* @return The chaining mode as provided by the <code>ChainingModes</code>
- * interface.
+ * interface.
* @see iaik.pki.pathvalidation.ChainingModes
*/
private String translateChainingMode(String chainingMode) {
@@ -1004,55 +958,50 @@ public class ConfigurationPartsBuilder {
/**
* Build the distribution points mapping.
- *
+ *
* @return The mapping from certificate authorities to distribution points.
*/
- public Map buildDistributionPoints()
- {
- Map dPs = new HashMap();
+ public Map buildDistributionPoints() {
+ final Map dPs = new HashMap();
NodeIterator dPIter;
Element dPElem;
- // select all DistributionPoint elements
+ // select all DistributionPoint elements
dPIter = XPathUtils.selectNodeIterator(getConfigElem(), DISTRIBUTION_POINTS_XPATH);
- // build the mapping of CA name to distribution points
+ // build the mapping of CA name to distribution points
while ((dPElem = (Element) dPIter.nextNode()) != null) {
- String caIssuerDNText = getElementValue(dPElem, CONF + "CAIssuerDN", "");
- RFC2253NameParser nameParser = new RFC2253NameParser(caIssuerDNText);
- NodeIterator cRLDPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "CRLDP");
- NodeIterator oCSPDPPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "OCSPDP");
+ final String caIssuerDNText = getElementValue(dPElem, CONF + "CAIssuerDN", "");
+ final RFC2253NameParser nameParser = new RFC2253NameParser(caIssuerDNText);
+ final NodeIterator cRLDPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "CRLDP");
+ final NodeIterator oCSPDPPIter = XPathUtils.selectNodeIterator(dPElem, CONF + "OCSPDP");
- try
- {
- String caIssuerDN = nameParser.parse().getName();
+ try {
+ final String caIssuerDN = nameParser.parse().getName();
- // check, if a mapping exists or make a new mapping
+ // check, if a mapping exists or make a new mapping
Set dPsForCA = (Set) dPs.get(caIssuerDN);
- if (dPsForCA == null)
- {
+ if (dPsForCA == null) {
dPsForCA = new HashSet();
dPs.put(caIssuerDN, dPsForCA);
}
// add the CRL distribution points of this CA to the set
Element cRLDPElem;
- while ((cRLDPElem = (Element) cRLDPIter.nextNode()) != null)
- {
- CRLDistributionPoint cRLDP = (CRLDistributionPoint) buildDistributionPoint(cRLDPElem, caIssuerDN);
+ while ((cRLDPElem = (Element) cRLDPIter.nextNode()) != null) {
+ final CRLDistributionPoint cRLDP = (CRLDistributionPoint) buildDistributionPoint(cRLDPElem,
+ caIssuerDN);
dPsForCA.add(cRLDP);
}
// add the OCSP distribution points of this CA to the set
Element oCSPPElem;
- while ((oCSPPElem = (Element) oCSPDPPIter.nextNode()) != null)
- {
- OCSPDistributionPoint oCSPDP = (OCSPDistributionPoint) buildDistributionPoint(oCSPPElem, null);
+ while ((oCSPPElem = (Element) oCSPDPPIter.nextNode()) != null) {
+ final OCSPDistributionPoint oCSPDP = (OCSPDistributionPoint) buildDistributionPoint(oCSPPElem,
+ null);
dPsForCA.add(oCSPDP);
}
-}
- catch (RFC2253NameParserException e)
- {
+ } catch (final RFC2253NameParserException e) {
warn("config.13", new Object[] { caIssuerDNText }, e);
}
@@ -1063,143 +1012,126 @@ public class ConfigurationPartsBuilder {
/**
* Build a distribution point from the DOM representation.
- *
- * @param dpElem The root element of the distribution point.
- *
- * @param issuerName The name of the CA issuing the CRL referred to by this DP, or <code>null</code>
- * if this DP refers to an OCSP responder.
- *
+ *
+ * @param dpElem The root element of the distribution point.
+ *
+ * @param issuerName The name of the CA issuing the CRL referred to by this DP,
+ * or <code>null</code> if this DP refers to an OCSP
+ * responder.
+ *
* @return The distribution point.
*/
- private DistributionPoint buildDistributionPoint(Element dpElem, String issuerName)
- {
- String uri = getElementValue(dpElem, CONF + "Location", null);
-
- if ("CRLDP".equals(dpElem.getLocalName()))
- {
- NodeIterator reasonCodesIter = XPathUtils.selectNodeIterator(dpElem, CONF + "ReasonCode");
+ private DistributionPoint buildDistributionPoint(Element dpElem, String issuerName) {
+ final String uri = getElementValue(dpElem, CONF + "Location", null);
+
+ if ("CRLDP".equals(dpElem.getLocalName())) {
+ final NodeIterator reasonCodesIter = XPathUtils.selectNodeIterator(dpElem, CONF + "ReasonCode");
Element reasonCodeElem;
- StringBuffer reasonCodesSB = new StringBuffer();
- while ((reasonCodeElem = (Element)reasonCodesIter.nextNode()) != null)
- {
- if (reasonCodesSB.length() > 0) reasonCodesSB.append(" ");
+ final StringBuffer reasonCodesSB = new StringBuffer();
+ while ((reasonCodeElem = (Element) reasonCodesIter.nextNode()) != null) {
+ if (reasonCodesSB.length() > 0) {
+ reasonCodesSB.append(" ");
+ }
reasonCodesSB.append(getElementValue(reasonCodeElem, ".", "").trim());
}
return new CRLDistributionPoint(issuerName, uri, reasonCodesSB.toString());
- }
- else
- {
+ } else {
return new OCSPDistributionPoint(uri);
}
}
/**
* Return the CRL archive duration.
- *
- * @return The value of the CRL archive duration setting from the configuration, or <code>0</code> if
- * no value is set in the configuration.
+ *
+ * @return The value of the CRL archive duration setting from the configuration,
+ * or <code>0</code> if no value is set in the configuration.
*/
- public int getRevocationArchiveDuration()
- {
- String archiveDuration = getElementValue(getConfigElem(), CRL_ARCHIVE_DURATION_XPATH, null);
- try
- {
+ public int getRevocationArchiveDuration() {
+ final String archiveDuration = getElementValue(getConfigElem(), CRL_ARCHIVE_DURATION_XPATH, null);
+ try {
return Integer.parseInt(archiveDuration);
- }
- catch (NumberFormatException e)
- {
+ } catch (final NumberFormatException e) {
warn("config.01", null);
return 365;
}
}
/**
- * Build the <code>CreateTransformsInfoProfile</code>s.
- *
+ * Build the <code>CreateTransformsInfoProfile</code>s.
+ *
* @return The mapping from profile ID to profile.
*/
- public Map buildCreateTransformsInfoProfiles()
- {
+ public Map buildCreateTransformsInfoProfiles() {
return loadProfiles(CREATE_TRANSFORMS_INFO_PROFILE_XPATH, "CreateTransformsInfoProfile");
}
/**
* Build the <code>CreateSignatureEnvironmentProfile</code>s.
- *
+ *
* @return The mapping from profile ID to profile.
*/
- public Map buildCreateSignatureEnvironmentProfiles()
- {
+ public Map buildCreateSignatureEnvironmentProfiles() {
return loadProfiles(CREATE_SIGNATURE_ENVIRONMENT_PROFILE_XPATH, "CreateSignatureEnvironmentProfile");
}
/**
* Build the <code>VerifyTransformsInfoProfile</code>s.
- *
+ *
* @return The mapping from profile ID to profile.
*/
- public Map buildVerifyTransformsInfoProfiles()
- {
+ public Map buildVerifyTransformsInfoProfiles() {
return loadProfiles(VERIFY_TRANSFORMS_INFO_PROFILE_XPATH, "VerifyTransformsInfoProfile");
}
/**
* Build the <code>SupplementProfile</code>s.
- *
+ *
* @return The mapping from profile ID to profile.
*/
- public Map buildSupplementProfiles()
- {
+ public Map buildSupplementProfiles() {
return loadProfiles(SUPPLEMENT_PROFILE_XPATH, "SupplementProfile");
}
/**
* Load a profile mapping.
- *
- * @param xpath The XPath to select the profiles from the configuration.
- *
+ *
+ * @param xpath The XPath to select the profiles from the configuration.
+ *
* @param profileRoot The name of the profile root element.
- *
+ *
* @return Map The profile ID to profile mapping.
*/
- private Map loadProfiles(String xpath, String profileRoot)
- {
- Map profiles = new HashMap();
- NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), xpath);
+ private Map loadProfiles(String xpath, String profileRoot) {
+ final Map profiles = new HashMap();
+ final NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), xpath);
Element profileElem;
- while ((profileElem = (Element) profileIter.nextNode()) != null)
- {
- String id = getElementValue(profileElem, CONF + "Id", null);
- String fileName = getElementValue(profileElem, CONF + "Location", null);
+ while ((profileElem = (Element) profileIter.nextNode()) != null) {
+ final String id = getElementValue(profileElem, CONF + "Id", null);
+ final String fileName = getElementValue(profileElem, CONF + "Location", null);
- if (profiles.containsKey(id))
- {
+ if (profiles.containsKey(id)) {
warn("config.04", new Object[] { profileRoot, id });
- }
- else
- {
- try
- {
+ } else {
+ try {
File profileFile = new File(fileName);
// make profileFile absolute
- if (!profileFile.isAbsolute()) profileFile = new File(configRoot_, fileName);
+ if (!profileFile.isAbsolute()) {
+ profileFile = new File(configRoot_, fileName);
+ }
// load the profile
- info("config.22", new Object[] { profileRoot, id, profileFile.getAbsoluteFile()});
- Element profile = loadProfile(profileFile);
+ info("config.22", new Object[] { profileRoot, id, profileFile.getAbsoluteFile() });
+ final Element profile = loadProfile(profileFile);
- if (Constants.MOA_NS_URI.equals(profile.getNamespaceURI()) &&
- profile.getLocalName().equals(profileRoot))
- {
+ if (Constants.MOA_NS_URI.equals(profile.getNamespaceURI()) &&
+ profile.getLocalName().equals(profileRoot)) {
profiles.put(id, profile);
- }
- else
- {
+ } else {
warn("config.02", new Object[] { profileRoot, id, fileName });
}
- } catch (ConfigurationException e) {
+ } catch (final ConfigurationException e) {
warn("config.03", new Object[] { profileRoot, id });
}
}
@@ -1210,8 +1142,9 @@ public class ConfigurationPartsBuilder {
/**
* Load a profile from a file.
- *
- * @param root The absolute directory path of the main configuration file.
+ *
+ * @param root The absolute directory path of the main configuration
+ * file.
* @param profileFile The file containing the profile.
* @return The profile in its DOM representation.
* @throws ConfigurationException An error occurred loading the profile.
@@ -1222,7 +1155,7 @@ public class ConfigurationPartsBuilder {
try {
profile = parseXml(new FileInputStream(profileFile));
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new ConfigurationException("config.12", null, e);
}
@@ -1231,146 +1164,136 @@ public class ConfigurationPartsBuilder {
/**
* Build the trust profile mapping.
- *
+ *
* @return The profile ID to profile mapping.
*/
-
- public Map buildTrustProfiles()
- {
- Map trustProfiles = new HashMap();
- NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_PROFILE_XPATH);
+
+ public Map buildTrustProfiles() {
+ final Map trustProfiles = new HashMap();
+ final NodeIterator profileIter = XPathUtils.selectNodeIterator(getConfigElem(), TRUST_PROFILE_XPATH);
Element profileElem;
- while ((profileElem = (Element) profileIter.nextNode()) != null) {
- //load basic TrustProfile information
-
- //check TrustProfileId
- String id = getElementValue(profileElem, CONF + "Id", null);
- if (MiscUtil.isEmpty(id)) {
- warn("config.52", new Object[]{"Id des TrustProfiles ist leer."});
- continue;
-
- }
- //cast profileId to lowercase (changed in 3.0.1)
- id = id.trim().toLowerCase();
- if (trustProfiles.containsKey(id)) {
- warn("config.04", new Object[] { "TrustProfile", id });
+ while ((profileElem = (Element) profileIter.nextNode()) != null) {
+ // load basic TrustProfile information
+
+ // check TrustProfileId
+ String id = getElementValue(profileElem, CONF + "Id", null);
+ if (MiscUtil.isEmpty(id)) {
+ warn("config.52", new Object[] { "Id des TrustProfiles ist leer." });
+ continue;
+
+ }
+ // cast profileId to lowercase (changed in 3.0.1)
+ id = id.trim().toLowerCase();
+ if (trustProfiles.containsKey(id)) {
+ warn("config.04", new Object[] { "TrustProfile", id });
+ continue;
+ }
+
+ // check location of TrustAnchor directory
+ final String trustAnchorsLocStr = getElementValue(profileElem, CONF + "TrustAnchorsLocation", null);
+ URI trustAnchorsLocURI = null;
+ try {
+ trustAnchorsLocURI = new URI(trustAnchorsLocStr);
+ if (!trustAnchorsLocURI.isAbsolute()) { // make it absolute to the config file
+ trustAnchorsLocURI = new URI(configRoot_.toURL() + trustAnchorsLocStr);
+ }
+ } catch (final URIException e) {
+ warn("config.14", new Object[] { "uri", id, trustAnchorsLocStr }, e);
+ continue;
+ } catch (final MalformedURLException e) {
+ warn("config.15", new Object[] { id }, e);
+ continue;
+ }
+ final File profileDir = new File(trustAnchorsLocURI.getPath());
+ if (!profileDir.exists() || !profileDir.isDirectory()) {
+ warn("config.27", new Object[] { "uri", id });
+ continue;
+ }
+
+ // check signerCertsLocation URL
+ String signerCertsLocStr = getElementValue(profileElem, CONF + "SignerCertsLocation", null);
+ URI signerCertsLocURI = null;
+ if (signerCertsLocStr != null && !"".equals(signerCertsLocStr)) {
+ try {
+ signerCertsLocURI = new URI(signerCertsLocStr);
+ if (!signerCertsLocURI.isAbsolute()) {
+ signerCertsLocURI = new URI(configRoot_.toURL() + signerCertsLocStr);
+ }
+
+ final File signerCertsDir = new File(signerCertsLocURI.getPath());
+ if (!signerCertsDir.exists() || !signerCertsDir.isDirectory()) {
+ warn("config.27", new Object[] { "signerCertsUri", id });
continue;
- }
-
- //check location of TrustAnchor directory
- String trustAnchorsLocStr = getElementValue(profileElem, CONF + "TrustAnchorsLocation", null);
- URI trustAnchorsLocURI = null;
- try
- {
- trustAnchorsLocURI = new URI(trustAnchorsLocStr);
- if (!trustAnchorsLocURI.isAbsolute()) { // make it absolute to the config file
- trustAnchorsLocURI = new URI(configRoot_.toURL() + trustAnchorsLocStr);
}
- }
- catch (URIException e) {
- warn("config.14", new Object[] { "uri", id, trustAnchorsLocStr }, e);
- continue;
- }
- catch (MalformedURLException e)
- {
- warn("config.15", new Object[] {id}, e);
+ } catch (final URIException e) {
+ warn("config.14", new Object[] { "signerCertsUri", id, trustAnchorsLocStr }, e);
continue;
- }
- File profileDir = new File(trustAnchorsLocURI.getPath());
- if (!profileDir.exists() || !profileDir.isDirectory()) {
- warn("config.27", new Object[] { "uri", id });
+ } catch (final MalformedURLException e) {
+ warn("config.15", new Object[] { id }, e);
continue;
}
+ }
+ signerCertsLocStr = signerCertsLocURI != null ? signerCertsLocURI.toString() : null;
+
+ // check if TSL support is enabled
+ final Element eutslElem = (Element) XPathUtils.selectSingleNode(profileElem, CONF + "EUTSL");
+ boolean tslEnabled = false;
+ if (eutslElem != null) {
+ tslEnabled = true;
+ }
+
+ // load TSL configuration
+ final String countries = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "CountrySelection",
+ null);
+ final String allowedTspStatus = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF
+ + "AllowedTSPStatus", null);
+ final String allowedTspServiceTypes = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF
+ + "AllowedTSPServiceTypes", null);
+
+ // create profile configuration
+ final TrustProfile profile = new TrustProfile(id, trustAnchorsLocURI.toString(), signerCertsLocStr,
+ tslEnabled, countries, allowedTspStatus, allowedTspServiceTypes);
+ trustProfiles.put(id, profile);
- //check signerCertsLocation URL
- String signerCertsLocStr = getElementValue(profileElem, CONF + "SignerCertsLocation", null);
- URI signerCertsLocURI = null;
- if (signerCertsLocStr != null && !"".equals(signerCertsLocStr))
- {
- try
- {
- signerCertsLocURI = new URI(signerCertsLocStr);
- if (!signerCertsLocURI.isAbsolute()) signerCertsLocURI = new URI(configRoot_.toURL() + signerCertsLocStr);
-
- File signerCertsDir = new File(signerCertsLocURI.getPath());
- if (!signerCertsDir.exists() || !signerCertsDir.isDirectory()) {
- warn("config.27", new Object[] { "signerCertsUri", id });
- continue;
- }
- }
- catch (URIException e) {
- warn("config.14", new Object[] { "signerCertsUri", id, trustAnchorsLocStr }, e);
- continue;
- }
- catch (MalformedURLException e) {
- warn("config.15", new Object[] {id}, e);
- continue;
- }
- }
- signerCertsLocStr = (signerCertsLocURI != null) ? signerCertsLocURI.toString() : null;
-
-
- //check if TSL support is enabled
- Element eutslElem = (Element) XPathUtils.selectSingleNode(profileElem, CONF + "EUTSL");
- boolean tslEnabled = false;
- if (eutslElem != null) //EUTSL element found --> TSL enabled
- tslEnabled = true;
-
- //load TSL configuration
- String countries = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "CountrySelection", null);
- String allowedTspStatus = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "AllowedTSPStatus", null);
- String allowedTspServiceTypes = getElementValue(profileElem, CONF + "EUTSL" + "/" + CONF + "AllowedTSPServiceTypes", null);
-
-
- //create profile configuration
- TrustProfile profile = new TrustProfile(id, trustAnchorsLocURI.toString(), signerCertsLocStr,
- tslEnabled, countries, allowedTspStatus, allowedTspServiceTypes);
- trustProfiles.put(id, profile);
-
}
return trustProfiles;
}
-
+
/**
* Returns the location of the certificate store.
- *
+ *
* @return the location of the certificate store.
*/
- public String getCertStoreLocation()
- {
- String certStoreLocStr = getElementValue(getConfigElem(), CERTSTORE_LOCATION_XPATH, null);
+ public String getCertStoreLocation() {
+ final String certStoreLocStr = getElementValue(getConfigElem(), CERTSTORE_LOCATION_XPATH, null);
File certStoreLocFile;
-
- // No value specified in configuration file: Set it to a reasonable (absolute) default
- if (certStoreLocStr == null)
- return new File(configRoot_, "certstore").getAbsolutePath();
-
+
+ // No value specified in configuration file: Set it to a reasonable (absolute)
+ // default
+ if (certStoreLocStr == null) {
+ return new File(configRoot_, "certstore").getAbsolutePath();
+ }
+
// Make cert store location an absolute value
certStoreLocFile = new File(certStoreLocStr);
- if (!certStoreLocFile.isAbsolute())
- {
+ if (!certStoreLocFile.isAbsolute()) {
certStoreLocFile = new File(configRoot_, certStoreLocStr);
}
-
+
// Check if cert store location exists, eventually try to create it
- if (!certStoreLocFile.isDirectory())
- {
+ if (!certStoreLocFile.isDirectory()) {
boolean created = false;
- try
- {
+ try {
created = certStoreLocFile.mkdirs();
- }
- finally
- {
- if (!created)
- {
+ } finally {
+ if (!created) {
warn("config.32", new Object[] { certStoreLocFile.getAbsolutePath() });
}
}
}
-
+
return certStoreLocFile.getAbsolutePath();
}
@@ -1380,437 +1303,429 @@ public class ConfigurationPartsBuilder {
/**
* Parse a configuration XML file.
- *
+ *
* @param inputStream The stream from which to read the XML data.
* @return The DOM representation of the XML data.
* @throws ParserConfigurationException XML parser not configured properly.
- * @throws SAXException An error parsing the XML file.
- * @throws IOException An error reading the stream.
+ * @throws SAXException An error parsing the XML file.
+ * @throws IOException An error reading the stream.
*/
private static Element parseXml(InputStream inputStream)
- throws ParserConfigurationException, SAXException, IOException {
+ throws ParserConfigurationException, SAXException, IOException {
return DOMUtils
- .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null)
- .getDocumentElement();
+ .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null)
+ .getDocumentElement();
}
/**
* Return the value of an element located by an XPath.
- *
- * @param root The root element from which to evaluate the <code>xpath</code>.
+ *
+ * @param root The root element from which to evaluate the <code>xpath</code>.
* @param xpath The XPath pointing to the element.
- * @param def The default value, if no element can be found with the given
- * <code>xpath</code>.
+ * @param def The default value, if no element can be found with the given
+ * <code>xpath</code>.
* @return The element value or <code>def</code>, if the element cannot be
- * found.
+ * found.
*/
private String getElementValue(Element root, String xpath, String def) {
- Element elem = (Element) XPathUtils.selectSingleNode(root, xpath);
+ final Element elem = (Element) XPathUtils.selectSingleNode(root, xpath);
return elem != null ? DOMUtils.getText(elem) : def;
}
/**
* Return the value of an attribute located by an XPath.
- *
- * @param root The root element from which to evaluate the <code>xpath</code>.
+ *
+ * @param root The root element from which to evaluate the <code>xpath</code>.
* @param xpath The XPath pointing to the attribute.
- * @param def The default value, if no attribute can be found with the given
- * <code>xpath</code>.
+ * @param def The default value, if no attribute can be found with the given
+ * <code>xpath</code>.
* @return The element value or <code>def</code>, if the attribute cannot be
- * found.
+ * found.
*/
private String getAttributeValue(Element root, String xpath, String def) {
- Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath);
+ final Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath);
return attr != null ? attr.getValue() : def;
}
/**
* Log an info message.
- *
- * @param messageId The message ID.
+ *
+ * @param messageId The message ID.
* @param parameters Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private static void info(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
Logger.info(new LogMsg(msg.getMessage(messageId, parameters)));
}
/**
* Log a warning.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
+ * @param args Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void warn(String messageId, Object[] args) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
Logger.warn(new LogMsg(txt));
warnings.add(txt);
}
-
+
/**
* Log a warning.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
+ * @param args Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void debug(String messageId, Object[] args) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
Logger.debug(new LogMsg(txt));
-
+
}
-
/**
* Log a debug message.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
+ * @param args Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void debug(String message) {
Logger.debug(new LogMsg(message));
}
-
+
/**
* Log a warning.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
- * @param t An exception being the cause of the warning.
+ * @param args Additional parameters for the message.
+ * @param t An exception being the cause of the warning.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void warn(String messageId, Object[] args, Throwable t) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
- Logger.warn(new LogMsg(txt), t);
+ Logger.warn(new LogMsg(txt), t);
warnings.add(txt);
}
/**
* Log an error.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
+ * @param args Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void error(String messageId, Object[] args) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
Logger.error(new LogMsg(txt));
warnings.add(txt);
}
-
+
/**
* Log an error.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
- * @param t An exception being the cause of the warning.
+ * @param args Additional parameters for the message.
+ * @param t An exception being the cause of the warning.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void error(String messageId, Object[] args, Throwable t) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
- Logger.error(new LogMsg(txt), t);
+ Logger.error(new LogMsg(txt), t);
warnings.add(txt);
}
-
+
/**
* Returns whether revocation information should be archived.
- *
+ *
* @return whether revocation information should be archived.
*/
- public boolean getEnableRevocationArchiving()
- {
- String enableArchiving = getElementValue(getConfigElem(), ENABLE_ARCHIVING_XPATH, null);
+ public boolean getEnableRevocationArchiving() {
+ final String enableArchiving = getElementValue(getConfigElem(), ENABLE_ARCHIVING_XPATH, null);
return Boolean.valueOf(enableArchiving).booleanValue();
}
/**
* Returns the JDBC URL for the revocation archive database.
- *
- * @return the JDBC URL for the revocation archive database, or <code>null</code, if the corresponding
- * parameter is not set in the configuration.
+ *
+ * @return the JDBC URL for the revocation archive database, or
+ * <code>null</code, if the corresponding parameter is not set in the
+ * configuration.
*/
- public String getRevocationArchiveJDBCURL()
- {
- String jDBCURL = getElementValue(getConfigElem(), ACHIVE_JDBC_URL_, null);
+ public String getRevocationArchiveJDBCURL() {
+ final String jDBCURL = getElementValue(getConfigElem(), ACHIVE_JDBC_URL_, null);
return jDBCURL;
}
/**
* Returns the JDBC driver class name for the revocation archive database.
- *
- * @return the JDBC driver class name for the revocation archive database, or <code>null</code,
- * if the corresponding parameter is not set in the configuration.
+ *
+ * @return the JDBC driver class name for the revocation archive database, or
+ * <code>null</code, if the corresponding parameter is not set in the
+ * configuration.
*/
- public String getRevocationArchiveJDBCDriverClass()
- {
- String jDBCDriverClass = getElementValue(getConfigElem(), ACHIVE_JDBC_DRIVER_CLASS_, null);
+ public String getRevocationArchiveJDBCDriverClass() {
+ final String jDBCDriverClass = getElementValue(getConfigElem(), ACHIVE_JDBC_DRIVER_CLASS_, null);
return jDBCDriverClass;
}
/**
* Returns whether revocation information should be archived.
*/
- public boolean getEnableRevocationChecking()
- {
- String enableChecking = getElementValue(getConfigElem(), ENABLE_REVOCATION_CHECKING_XPATH_, null);
+ public boolean getEnableRevocationChecking() {
+ final String enableChecking = getElementValue(getConfigElem(), ENABLE_REVOCATION_CHECKING_XPATH_, null);
return Boolean.valueOf(enableChecking).booleanValue();
}
/**
- * Returns the maximum age of a revocation information for considering it
- * still as valid.
- *
- * @return the maximum age of a revocation information for considering it
- * still as valid.
+ * Returns the maximum age of a revocation information for considering it still
+ * as valid.
+ *
+ * @return the maximum age of a revocation information for considering it still
+ * as valid.
*/
- public long getMaxRevocationAge()
- {
- String maxRevocationAge = getElementValue(getConfigElem(), MAX_REVOCATION_AGE_XPATH_, null);
- if (maxRevocationAge == null) return 0;
+ public long getMaxRevocationAge() {
+ final String maxRevocationAge = getElementValue(getConfigElem(), MAX_REVOCATION_AGE_XPATH_, null);
+ if (maxRevocationAge == null) {
+ return 0;
+ }
return Long.valueOf(maxRevocationAge).longValue();
}
/**
* Returns the service order for revocation checking.
- *
+ *
* @return the service order for revocation checking. Valid array entries are
- * {@link RevocationSourceTypes#OCSP} and {@link RevocationSourceTypes#CRL}.
- * An empty array will be returned if no service order is specified in the
- * configuration.
+ * {@link RevocationSourceTypes#OCSP} and
+ * {@link RevocationSourceTypes#CRL}. An empty array will be returned if
+ * no service order is specified in the configuration.
*/
- public String[] getServiceOrder()
- {
- ArrayList list = new ArrayList();
- NodeIterator serviceIter = XPathUtils.selectNodeIterator(getConfigElem(), REVOCATION_SERVICEORDER_XPATH_);
+ public String[] getServiceOrder() {
+ final ArrayList list = new ArrayList();
+ final NodeIterator serviceIter = XPathUtils.selectNodeIterator(getConfigElem(),
+ REVOCATION_SERVICEORDER_XPATH_);
Element currentServiceNode;
- while ((currentServiceNode = (Element)serviceIter.nextNode()) != null)
- {
+ while ((currentServiceNode = (Element) serviceIter.nextNode()) != null) {
list.add(getElementValue(currentServiceNode, ".", null));
}
- Object[] serviceOrder = list.toArray();
- String[] returnValue = new String[serviceOrder.length];
- for (int i = 0; i < serviceOrder.length; i++)
- {
- if (((String)serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.CRL)) {
+ final Object[] serviceOrder = list.toArray();
+ final String[] returnValue = new String[serviceOrder.length];
+ for (int i = 0; i < serviceOrder.length; i++) {
+ if (((String) serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.CRL)) {
returnValue[i] = RevocationSourceTypes.CRL;
- } else if (((String)serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.OCSP)) {
+ } else if (((String) serviceOrder[i]).equalsIgnoreCase(RevocationSourceTypes.OCSP)) {
returnValue[i] = RevocationSourceTypes.OCSP;
}
-
+
}
return returnValue;
}
/**
- * Returns whether the certificate extension Authority Info Access should
- * be used during certificate path construction.
- *
- * @return whether the certificate extension Authority Info Access should
- * be used during certificate path construction.
+ * Returns whether the certificate extension Authority Info Access should be
+ * used during certificate path construction.
+ *
+ * @return whether the certificate extension Authority Info Access should be
+ * used during certificate path construction.
*/
- public boolean getUseAuthorityInfoAccess()
- {
- String useAIA = getElementValue(getConfigElem(), USE_AUTHORITY_INFO_ACCESS_XPATH_, null);
+ public boolean getUseAuthorityInfoAccess() {
+ final String useAIA = getElementValue(getConfigElem(), USE_AUTHORITY_INFO_ACCESS_XPATH_, null);
return Boolean.valueOf(useAIA).booleanValue();
}
/**
- * Returns whether certificates found during certificate path construction
+ * Returns whether certificates found during certificate path construction
* should be added to the certificate store.
- *
- * @return whether certificates found during certificate path construction
+ *
+ * @return whether certificates found during certificate path construction
* should be added to the certificate store.
*/
- public boolean getAutoAddCertificates()
- {
- String autoAdd = getElementValue(getConfigElem(), AUTO_ADD_CERTIFICATES_XPATH_, null);
+ public boolean getAutoAddCertificates() {
+ final String autoAdd = getElementValue(getConfigElem(), AUTO_ADD_CERTIFICATES_XPATH_, null);
return Boolean.valueOf(autoAdd).booleanValue();
}
-
-
+
public boolean getAutoEEAddCertificates() {
- String autoAdd = getElementValue(getConfigElem(), AUTO_ADD_EE_CERTIFICATES_XPATH_, null);
- if (autoAdd != null)
- return Boolean.valueOf(autoAdd).booleanValue();
- else
- return false;
-
- }
-
+ final String autoAdd = getElementValue(getConfigElem(), AUTO_ADD_EE_CERTIFICATES_XPATH_, null);
+ if (autoAdd != null) {
+ return Boolean.valueOf(autoAdd).booleanValue();
+ } else {
+ return false;
+ }
+
+ }
+
/**
- * Returns whether file URIs are permitted
+ * Returns whether file URIs are permitted
+ *
* @return whether file URIs are permitted
*/
- public boolean getPermitFileURIs()
- {
- String permitFileURIs = getElementValue(getConfigElem(), PERMIT_FILE_URIS_XPATH, "false");
+ public boolean getPermitFileURIs() {
+ final String permitFileURIs = getElementValue(getConfigElem(), PERMIT_FILE_URIS_XPATH, "false");
return Boolean.valueOf(permitFileURIs).booleanValue();
}
-
+
/**
* Returns the TSL configuration from the config file
+ *
* @return
*/
public TSLConfiguration getTSLConfiguration() {
- TSLConfigurationImpl tslconfiguration = new TSLConfigurationImpl();
-
-
- String euTSLUrl = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "EUTSLUrl", null);
- if (StringUtils.isEmpty(euTSLUrl)) {
- euTSLUrl = TSLConfiguration.DEFAULT_EU_TSL_URL;
- debug("config.39", new Object[] { "EUTSL", euTSLUrl });
- }
-
- String updateSchedulePeriod = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "UpdateSchedule/" + CONF + "Period" , null);
-
- if (StringUtils.isEmpty(updateSchedulePeriod)) {
- updateSchedulePeriod = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_PERIOD;
- debug("config.39", new Object[] { "UpdateSchedule/Period", updateSchedulePeriod });
- }
-
- String updateScheduleStartTime = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "UpdateSchedule/" + CONF + "StartTime", null);
- if (StringUtils.isEmpty(updateScheduleStartTime)) {
- updateScheduleStartTime = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_STARTTIME;
- debug("config.39", new Object[] { "UpdateSchedule/StartTime", updateScheduleStartTime });
-
- }
-
- String workingDirectoryStr = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "WorkingDirectory", null);
- if (StringUtils.isEmpty(workingDirectoryStr)) {
- workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR;
- debug("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr });
- }
-
- String qcQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "Evaluation/" + CONF + "QCQualifier", null);
- if (MiscUtil.isEmpty(qcQualifier))
- info("config.39", new Object[] { "Evaluation/QCQualifier", " EMPTY" });
-
- else {
- String[] qcQualList = qcQualifier.split(",");
- for (String el : qcQualList) {
- try {
- tslconfiguration.addQualifierForQC(new java.net.URI(el.trim()));
- //info("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() });
-
- } catch (URISyntaxException e) {
- warn("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() }, e);
-
- }
-
- }
- }
-
- String sscdQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "Evaluation/" + CONF + "SSCDQualifier", null);
- if (MiscUtil.isEmpty(qcQualifier))
- info("config.39", new Object[] { "Evaluation/SSCDQualifier", " EMPTY" });
-
- else {
- String[] sscdQualList = sscdQualifier.split(",");
- for (String el : sscdQualList) {
- try {
- tslconfiguration.addQualifierForSSCD(new java.net.URI(el.trim()));
- //info("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() });
-
- } catch (URISyntaxException e) {
- warn("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() }, e);
-
- }
-
- }
- }
-
- // convert update schedule starting time to Date object
- Calendar Cal = DatatypeConverter.parseDateTime(updateScheduleStartTime);
- Date updateScheduleStartTimeDate = Cal.getTime();
-
- // convert working directory
- URI workingDirectoryURI = null;
- try
- {
- workingDirectoryURI = new URI(workingDirectoryStr);
- if (!workingDirectoryURI.isAbsolute()) { // make it absolute to the config file
- workingDirectoryURI = new URI(configRoot_.toURL() + workingDirectoryStr);
+ final TSLConfigurationImpl tslconfiguration = new TSLConfigurationImpl();
+
+ String euTSLUrl = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "EUTSLUrl", null);
+ if (StringUtils.isEmpty(euTSLUrl)) {
+ euTSLUrl = TSLConfiguration.DEFAULT_EU_TSL_URL;
+ debug("config.39", new Object[] { "EUTSL", euTSLUrl });
+ }
+
+ String updateSchedulePeriod = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF
+ + "UpdateSchedule/" + CONF + "Period", null);
+
+ if (StringUtils.isEmpty(updateSchedulePeriod)) {
+ updateSchedulePeriod = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_PERIOD;
+ debug("config.39", new Object[] { "UpdateSchedule/Period", updateSchedulePeriod });
+ }
+
+ String updateScheduleStartTime = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF
+ + "UpdateSchedule/" + CONF + "StartTime", null);
+ if (StringUtils.isEmpty(updateScheduleStartTime)) {
+ updateScheduleStartTime = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_STARTTIME;
+ debug("config.39", new Object[] { "UpdateSchedule/StartTime", updateScheduleStartTime });
+
+ }
+
+ String workingDirectoryStr = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF
+ + "WorkingDirectory", null);
+ if (StringUtils.isEmpty(workingDirectoryStr)) {
+ workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR;
+ debug("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr });
+ }
+
+ final String qcQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "Evaluation/"
+ + CONF + "QCQualifier", null);
+ if (MiscUtil.isEmpty(qcQualifier)) {
+ info("config.39", new Object[] { "Evaluation/QCQualifier", " EMPTY" });
+ } else {
+ final String[] qcQualList = qcQualifier.split(",");
+ for (final String el : qcQualList) {
+ try {
+ tslconfiguration.addQualifierForQC(new java.net.URI(el.trim()));
+ // info("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() });
+
+ } catch (final URISyntaxException e) {
+ warn("config.39", new Object[] { "Evaluation/QCQualifier", el.trim() }, e);
+
}
+
}
- catch (URIException e) {
- warn("config.37", new Object[] { workingDirectoryStr }, e);
- workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR;
- warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr });
- }
- catch (MalformedURLException e)
- {
- warn("config.37", new Object[] { workingDirectoryStr }, e);
- workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR;
- warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr });
- }
+ }
+
+ final String sscdQualifier = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF
+ + "Evaluation/" + CONF + "SSCDQualifier", null);
+ if (MiscUtil.isEmpty(qcQualifier)) {
+ info("config.39", new Object[] { "Evaluation/SSCDQualifier", " EMPTY" });
+ } else {
+ final String[] sscdQualList = sscdQualifier.split(",");
+ for (final String el : sscdQualList) {
+ try {
+ tslconfiguration.addQualifierForSSCD(new java.net.URI(el.trim()));
+ // info("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() });
+
+ } catch (final URISyntaxException e) {
+ warn("config.39", new Object[] { "Evaluation/SSCDQualifier", el.trim() }, e);
+
+ }
- File tslWorkingDir = new File(workingDirectoryURI.getPath());
- if (!tslWorkingDir.exists()) {
- tslWorkingDir.mkdir();
}
- if (!tslWorkingDir.isDirectory()) {
- error("config.38", new Object[] { workingDirectoryStr });
- return null;
+ }
+
+ // convert update schedule starting time to Date object
+ final Calendar Cal = DatatypeConverter.parseDateTime(updateScheduleStartTime);
+ final Date updateScheduleStartTimeDate = Cal.getTime();
+
+ // convert working directory
+ URI workingDirectoryURI = null;
+ try {
+ workingDirectoryURI = new URI(workingDirectoryStr);
+ if (!workingDirectoryURI.isAbsolute()) { // make it absolute to the config file
+ workingDirectoryURI = new URI(configRoot_.toURL() + workingDirectoryStr);
}
-
-
- debug("TSL Konfiguration - EUTSLUrl: " + euTSLUrl);
- debug("TSL Konfiguration - UpdateSchedule/Period: " + updateSchedulePeriod);
- debug("TSL Konfiguration - UpdateSchedule/StartTime: " + updateScheduleStartTime);
- debug("TSL Konfiguration - TSLWorkingDirectory: " + tslWorkingDir.getAbsolutePath());
-
-
- // set TSL configuration
- tslconfiguration.setEuTSLUrl(euTSLUrl);
- tslconfiguration.setUpdateSchedulePeriod(Long.valueOf(updateSchedulePeriod).longValue());
- tslconfiguration.setUpdateScheduleStartTime(updateScheduleStartTimeDate);
- tslconfiguration.setWorkingDirectory(tslWorkingDir.getAbsolutePath());
- tslconfiguration.setWorkingDirectoryURI(workingDirectoryURI);
-
- return tslconfiguration;
+ } catch (final URIException e) {
+ warn("config.37", new Object[] { workingDirectoryStr }, e);
+ workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR;
+ warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr });
+ } catch (final MalformedURLException e) {
+ warn("config.37", new Object[] { workingDirectoryStr }, e);
+ workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR;
+ warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr });
+ }
+
+ final File tslWorkingDir = new File(workingDirectoryURI.getPath());
+ if (!tslWorkingDir.exists()) {
+ tslWorkingDir.mkdir();
+ }
+ if (!tslWorkingDir.isDirectory()) {
+ error("config.38", new Object[] { workingDirectoryStr });
+ return null;
+ }
+
+ debug("TSL Konfiguration - EUTSLUrl: " + euTSLUrl);
+ debug("TSL Konfiguration - UpdateSchedule/Period: " + updateSchedulePeriod);
+ debug("TSL Konfiguration - UpdateSchedule/StartTime: " + updateScheduleStartTime);
+ debug("TSL Konfiguration - TSLWorkingDirectory: " + tslWorkingDir.getAbsolutePath());
+
+ // set TSL configuration
+ tslconfiguration.setEuTSLUrl(euTSLUrl);
+ tslconfiguration.setUpdateSchedulePeriod(Long.valueOf(updateSchedulePeriod).longValue());
+ tslconfiguration.setUpdateScheduleStartTime(updateScheduleStartTimeDate);
+ tslconfiguration.setWorkingDirectory(tslWorkingDir.getAbsolutePath());
+ tslconfiguration.setWorkingDirectoryURI(workingDirectoryURI);
+
+ return tslconfiguration;
}
-
+
/**
* Returns a map of CRL retention intervals
+ *
* @return
*/
public Map getCrlRetentionIntervals() {
- Map map = new HashMap();
- NodeIterator modIter = XPathUtils.selectNodeIterator(
- getConfigElem(),
- CRL_RETENTION_INTERVALS_CA_XPATH);
-
- Element modElem;
- while ((modElem = (Element) modIter.nextNode()) != null) {
- String x509IssuerName = getElementValue(modElem, CONF + "X509IssuerName", null);
- String i = getElementValue(modElem, CONF + "Interval", null);
- Integer interval = new Integer(i);
- try {
- RFC2253NameParser parser = new RFC2253NameParser(x509IssuerName);
- Name name = parser.parse();
- map.put(name.getRFC2253String(), interval);
- } catch (RFC2253NameParserException e) {
- map.put(x509IssuerName, interval);
- }
+ final Map map = new HashMap();
+ final NodeIterator modIter = XPathUtils.selectNodeIterator(
+ getConfigElem(),
+ CRL_RETENTION_INTERVALS_CA_XPATH);
+
+ Element modElem;
+ while ((modElem = (Element) modIter.nextNode()) != null) {
+ final String x509IssuerName = getElementValue(modElem, CONF + "X509IssuerName", null);
+ final String i = getElementValue(modElem, CONF + "Interval", null);
+ final Integer interval = new Integer(i);
+ try {
+ final RFC2253NameParser parser = new RFC2253NameParser(x509IssuerName);
+ final Name name = parser.parse();
+ map.put(name.getRFC2253String(), interval);
+ } catch (final RFC2253NameParserException e) {
+ map.put(x509IssuerName, interval);
+ }
- }
+ }
- return map;
+ return map;
}
-
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java
index 34db547..330ba69 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java
@@ -21,14 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
-import iaik.asn1.structures.Name;
-import iaik.pki.revocation.RevocationSourceTypes;
-import iaik.utils.RFC2253NameParser;
-import iaik.utils.RFC2253NameParserException;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -41,7 +35,6 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
import org.w3c.dom.Element;
@@ -52,39 +45,45 @@ import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.DOMUtils;
import at.gv.egovernment.moaspss.util.MiscUtil;
+import iaik.asn1.structures.Name;
+import iaik.pki.revocation.RevocationSourceTypes;
+import iaik.utils.RFC2253NameParser;
+import iaik.utils.RFC2253NameParserException;
/**
* A class providing access to the MOA configuration data.
- *
- * <p>Configuration data is read from an XML file, whose location is given by
- * the <code>moa.spss.server.configuration</code> system property.</p>
- * <p>This class implements the Singleton pattern. The <code>reload()</code>
- * method can be used to update the configuration data. Therefore, it is not
- * guaranteed that consecutive calls to <code>getInstance()</code> will return
- * the same <code>ConfigurationProvider</code> all the time. During the
- * processing of a web service request, the current
- * <code>TransactionContext</code> should be used to obtain the
- * <code>ConfigurationProvider</code> local to that request.</p>
- *
+ *
+ * <p>
+ * Configuration data is read from an XML file, whose location is given by the
+ * <code>moa.spss.server.configuration</code> system property.
+ * </p>
+ * <p>
+ * This class implements the Singleton pattern. The <code>reload()</code> method
+ * can be used to update the configuration data. Therefore, it is not guaranteed
+ * that consecutive calls to <code>getInstance()</code> will return the same
+ * <code>ConfigurationProvider</code> all the time. During the processing of a
+ * web service request, the current <code>TransactionContext</code> should be
+ * used to obtain the <code>ConfigurationProvider</code> local to that request.
+ * </p>
+ *
* @author Patrick Peck
* @author Sven Aigner
* @version $Id$
*/
-public class ConfigurationProvider
-{
- /**
- * The name of the system property which contains the file name of the
+public class ConfigurationProvider {
+ /**
+ * The name of the system property which contains the file name of the
* configuration file.
*/
public static final String CONFIG_PROPERTY_NAME =
- "moa.spss.server.configuration";
+ "moa.spss.server.configuration";
- /**
+ /**
* A fake <code>IssuerAndSerial</code> object for storing KeyGroup information
* accessible by all clients.
*/
private static final IssuerAndSerial ANONYMOUS_ISSUER_SERIAL =
- new IssuerAndSerial(new Name(), new BigInteger("0"));
+ new IssuerAndSerial(new Name(), new BigInteger("0"));
/** Singleton instance. <code>null</code>, if none has been created. */
private static ConfigurationProvider instance;
@@ -101,23 +100,23 @@ public class ConfigurationProvider
/** The default canonicalization algorithm name */
private String canonicalizationAlgorithmName;
-
+
/** The XAdES version used for signature creation */
private String xadesVersion;
-
+
/** PDF AS Configuration */
private String pdfAsConfiguration;
-
+
private int connectionTimeout;
private int readTimeout;
-
- /**
- * A <code>List</code> of <code>HardwareCryptoModule</code> objects for
+
+ /**
+ * A <code>List</code> of <code>HardwareCryptoModule</code> objects for
* configuring hardware modules.
*/
private List hardwareCryptoModules;
- /**
+ /**
* A <code>List</code> of <code>HardwareKey</code> objects containing the
* configuration data for hardware keys.
*/
@@ -144,29 +143,29 @@ public class ConfigurationProvider
/** The default chaining mode. */
private String defaultChainingMode;
- /**
+ /**
* A <code>Map</code> which contains the <code>IssuerAndSerial</code> to
* chaining mode (a <code>String</code>) mapping.
*/
private Map chainingModes;
/**
- * A <code>Map</code> which contains the CAIssuerDN (a <code>String</code>)
- * to distribution points (a <code>Set</code> of
- * <code>DistributionPoint</code>s) mapping.
+ * A <code>Map</code> which contains the CAIssuerDN (a <code>String</code>) to
+ * distribution points (a <code>Set</code> of <code>DistributionPoint</code>s)
+ * mapping.
*/
private Map distributionPoints;
- /**
- * The CRL archive duration.
+ /**
+ * The CRL archive duration.
*/
private int cRLArchiveDuration;
-
+
/**
* Indicates whether revocation information should be archived.
*/
private boolean enableRevocationArchiving_;
-
+
/**
* The location of the certificate store.
*/
@@ -180,29 +179,29 @@ public class ConfigurationProvider
private Map createSignatureEnvironmentProfiles;
/**
- * A <code>Map</code> which contains a mapping from
- * CreateTransformsInfoProfile Ids (<code>String</code>) to
- * CreateTransformsInfoProfile elements (an <code>Element</code>).
+ * A <code>Map</code> which contains a mapping from CreateTransformsInfoProfile
+ * Ids (<code>String</code>) to CreateTransformsInfoProfile elements (an
+ * <code>Element</code>).
*/
private Map createTransformsInfoProfiles;
/**
- * A <code>Map</code> which contains a mapping from
- * VerifyTransformsInfoProfile Ids (<code>String</code>) to
- * VerifyTransformsInfoProfile elements (an <code>Element</code>).
+ * A <code>Map</code> which contains a mapping from VerifyTransformsInfoProfile
+ * Ids (<code>String</code>) to VerifyTransformsInfoProfile elements (an
+ * <code>Element</code>).
*/
private Map verifyTransformsInfoProfiles;
/**
- * A <code>Map</code> which contains a mapping from
- * SupplementProfile Ids (<code>String</code>) to SupplementProfile elements
- * (an <code>Element</code>).
+ * A <code>Map</code> which contains a mapping from SupplementProfile Ids
+ * (<code>String</code>) to SupplementProfile elements (an
+ * <code>Element</code>).
*/
private Map supplementProfiles;
/**
- * A <code>Map</code> which contains a TrustProfile Id (a <code>String</code>
- * to trust profile (a <code>TrustProfile</code>) mapping.
+ * A <code>Map</code> which contains a TrustProfile Id (a <code>String</code> to
+ * trust profile (a <code>TrustProfile</code>) mapping.
*/
private Map trustProfiles;
@@ -222,7 +221,8 @@ public class ConfigurationProvider
private boolean enableRevocationChecking_;
/**
- * The maximum age of a revocation information for considering it still as valid.
+ * The maximum age of a revocation information for considering it still as
+ * valid.
*/
private long maxRevocationAge_;
@@ -232,63 +232,58 @@ public class ConfigurationProvider
private String[] serviceOrder_;
private boolean adesFormResults;
-
+
/**
- * Indicates whether certificates found during certificate path construction
+ * Indicates whether certificates found during certificate path construction
* should be added to the certificate store.
*/
private boolean autoAddCertificates_;
-
private boolean autoAddEECertificates_;
-
-
+
/**
- * Indicates whether the certificate extension Authority Info Access should
- * be used during certificate path construction.
+ * Indicates whether the certificate extension Authority Info Access should be
+ * used during certificate path construction.
*/
private boolean useAuthorityInfoAccess_;
/**
- * Indicates whether file URIs are allowed or not
+ * Indicates whether file URIs are allowed or not
*/
private boolean permitFileURIs;
-
+
/**
* Indicates the CRL retention intervals
*/
private Map crlRetentionIntervals;
-
+
/**
* Indicates wether external URIs are allowed or not
*/
private boolean allowExternalUris_;
-
+
/**
* A <code>List</code> of black listed URIs (host and port)
*/
private List blackListedUris_;
-
+
/**
* A <code>List</code> of white listed URIs (host and port)
*/
private List whiteListedUris_;
-
+
/**
* A <code>TSLConfiguration</code> that represents the global TSL configuration
*/
private TSLConfiguration tslconfiguration_;
-
-
-
/**
* Return the single instance of configuration data.
- *
+ *
* @return MOAConfigurationProvider The current configuration data.
* @throws ConfigurationException Failure to load the configuration data.
*/
public static synchronized ConfigurationProvider getInstance()
- throws ConfigurationException {
+ throws ConfigurationException {
if (instance == null) {
reload();
@@ -298,21 +293,21 @@ public class ConfigurationProvider
/**
* Reload the configuration data and set it if successful.
- *
+ *
* @return MOAConfigurationProvider The loaded configuration data.
* @throws ConfigurationException Failure to load the configuration data.
*/
public static synchronized ConfigurationProvider reload()
- throws ConfigurationException {
+ throws ConfigurationException {
String fileName = System.getProperty(CONFIG_PROPERTY_NAME);
if (fileName == null) {
// find out where we are running and use the configuration provided
// under WEB-INF/conf/moa-spss/MOA-SPSSConfiguration
- URL url = ConfigurationProvider.class.getResource("/");
+ final URL url = ConfigurationProvider.class.getResource("/");
fileName =
- new File(url.getPath()).getParent()
- + "/conf/moa-spss/MOA-SPSSConfiguration.xml";
+ new File(url.getPath()).getParent()
+ + "/conf/moa-spss/MOA-SPSSConfiguration.xml";
info("config.05", new Object[] { CONFIG_PROPERTY_NAME });
}
@@ -322,7 +317,7 @@ public class ConfigurationProvider
/**
* Constructor for ConfigurationProvider.
- *
+ *
* @param fileName The name of the configuration file.
* @throws ConfigurationException An error occurred loading the configuration.
*/
@@ -331,12 +326,11 @@ public class ConfigurationProvider
}
/**
- * Load the configuration data from XML file with the given name and build
- * the internal data structures representing the MOA configuration.
- *
+ * Load the configuration data from XML file with the given name and build the
+ * internal data structures representing the MOA configuration.
+ *
* @param fileName The name of the XML file to load.
- * @throws ConfigurationException The MOA configuration could not be
- * read/built.
+ * @throws ConfigurationException The MOA configuration could not be read/built.
*/
private void load(String fileName) throws ConfigurationException {
FileInputStream stream = null;
@@ -345,16 +339,15 @@ public class ConfigurationProvider
Element configElem;
ConfigurationPartsBuilder builder;
List allKeyModules;
-
// load the main config file
try {
configFile = new File(fileName);
configRoot = new File(configFile.getParent());
- info("config.21", new Object[] { configFile.getAbsoluteFile()});
+ info("config.21", new Object[] { configFile.getAbsoluteFile() });
stream = new FileInputStream(fileName);
configElem = DOMUtils.parseXmlValidating(new FileInputStream(fileName));
- } catch (Throwable t) {
+ } catch (final Throwable t) {
throw new ConfigurationException("config.10", null, t);
}
@@ -362,30 +355,29 @@ public class ConfigurationProvider
try {
builder = new ConfigurationPartsBuilder(configElem, configRoot);
- //build TSL configuration
+ // build TSL configuration
tslconfiguration_ = builder.getTSLConfiguration();
-
- //build TrustProfile configuration
- trustProfiles = builder.buildTrustProfiles();
-
- //check TSL configuration
+
+ // build TrustProfile configuration
+ trustProfiles = builder.buildTrustProfiles();
+
+ // check TSL configuration
checkTSLConfiguration();
-
-
+
digestMethodAlgorithmName = builder.getDigestMethodAlgorithmName();
canonicalizationAlgorithmName =
- builder.getCanonicalizationAlgorithmName();
+ builder.getCanonicalizationAlgorithmName();
hardwareCryptoModules = builder.buildHardwareCryptoModules();
hardwareKeyModules =
- builder.buildHardwareKeyModules(Collections.EMPTY_LIST);
+ builder.buildHardwareKeyModules(Collections.EMPTY_LIST);
softwareKeyModules =
- builder.buildSoftwareKeyModules(hardwareKeyModules);
+ builder.buildSoftwareKeyModules(hardwareKeyModules);
allKeyModules = new ArrayList(hardwareKeyModules);
allKeyModules.addAll(softwareKeyModules);
keyGroups = builder.buildKeyGroups(allKeyModules);
keyGroupMappings =
- builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL);
-
+ builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL);
+
connectionTimeout = builder.getConnectionTimeout();
readTimeout = builder.getReadTimeout();
pdfAsConfiguration = builder.getPDFASConfiguration();
@@ -396,9 +388,9 @@ public class ConfigurationProvider
useAuthorityInfoAccess_ = builder.getUseAuthorityInfoAccess();
autoAddCertificates_ = builder.getAutoAddCertificates();
autoAddEECertificates_ = builder.getAutoEEAddCertificates();
- //trustProfiles = builder.buildTrustProfiles(tslconfiguration_.getWorkingDirectory());
-
-
+ // trustProfiles =
+ // builder.buildTrustProfiles(tslconfiguration_.getWorkingDirectory());
+
distributionPoints = builder.buildDistributionPoints();
enableRevocationChecking_ = builder.getEnableRevocationChecking();
maxRevocationAge_ = builder.getMaxRevocationAge();
@@ -407,12 +399,10 @@ public class ConfigurationProvider
cRLArchiveDuration = builder.getRevocationArchiveDuration();
revocationArchiveJDBCURL_ = builder.getRevocationArchiveJDBCURL();
revocationArchiveJDBCDriverClass_ = builder.getRevocationArchiveJDBCDriverClass();
-
-
- //TODO!!!!
+
+ // TODO!!!!
certStoreLocation_ = builder.getCertStoreLocation();
-
-
+
createTransformsInfoProfiles = builder.buildCreateTransformsInfoProfiles();
createSignatureEnvironmentProfiles = builder.buildCreateSignatureEnvironmentProfiles();
verifyTransformsInfoProfiles = builder.buildVerifyTransformsInfoProfiles();
@@ -421,41 +411,37 @@ public class ConfigurationProvider
permitFileURIs = builder.getPermitFileURIs();
crlRetentionIntervals = builder.getCrlRetentionIntervals();
- allowExternalUris_= builder.allowExternalUris();
-
- if (allowExternalUris_) {
- blackListedUris_ = builder.buildPermitExternalUris();
- whiteListedUris_ = null;
- }
- else {
- info("config.35", null);
- blackListedUris_ = null;
- whiteListedUris_ = builder.buildForbidExternalUris();
+ allowExternalUris_ = builder.allowExternalUris();
+
+ if (allowExternalUris_) {
+ blackListedUris_ = builder.buildPermitExternalUris();
+ whiteListedUris_ = null;
+ } else {
+ info("config.35", null);
+ blackListedUris_ = null;
+ whiteListedUris_ = builder.buildForbidExternalUris();
}
-
-
-
+
// Set set = crlRetentionIntervals.entrySet();
// Iterator i = set.iterator();
// while(i.hasNext()){
// Map.Entry me = (Map.Entry)i.next();
// System.out.println("Key: " + me.getKey() + " - Value: " + me.getValue() );
// }
-
-
- } catch (Throwable t) {
+
+ } catch (final Throwable t) {
throw new ConfigurationException("config.11", null, t);
} finally {
try {
if (stream != null) {
stream.close();
}
- } catch (IOException e) {
+ } catch (final IOException e) {
// don't complain about this
}
}
}
-
+
// private boolean checkTSLenableTrustprofilesExist()throws ConfigurationException {
// boolean bTSLEnabledTPExist = false;
// Iterator it = trustProfiles.entrySet().iterator();
@@ -465,78 +451,75 @@ public class ConfigurationProvider
// if (tp.isTSLEnabled())
// bTSLEnabledTPExist = bTSLEnabledTPExist || true;
// }
-//
+//
// return bTSLEnabledTPExist;
-//
+//
// }
-
- private void checkTSLConfiguration() throws ConfigurationException {
- boolean bTSLEnabledTPExist = false;
- Iterator it = trustProfiles.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pairs = (Map.Entry)it.next();
- TrustProfile tp = (TrustProfile) pairs.getValue();
- if (tp.isTSLEnabled())
- bTSLEnabledTPExist = bTSLEnabledTPExist || true;
- }
-
- if (!bTSLEnabledTPExist) {
- // if no trustprofile has TSL support enabled, delete TSL configuration
- tslconfiguration_ = null;
- return;
- }
-
- if (bTSLEnabledTPExist && (tslconfiguration_ == null)) {
- error("config.40", null);
- throw new ConfigurationException("config.40", null);
- }
-
- File workingDir = new File(tslconfiguration_.getWorkingDirectory());
- File eu_trust = new File(workingDir.getAbsolutePath() + "/trust/eu");
- if (!eu_trust.exists()) {
- error("config.51", new Object[] {"Verzeichnis \"trust/eu\" existiert nicht"});
- throw new ConfigurationException("config.51", new Object[] {"Verzeichnis \"trust/eu\" existiert nicht"});
- }
- else {
- File[] eutrustFiles = eu_trust.listFiles();
- if (eutrustFiles == null) {
- error("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"});
- throw new ConfigurationException("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"});
- }
- else {
- if (eutrustFiles.length == 0) {
- error("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"});
- throw new ConfigurationException("config.51", new Object[] {"Verzeichnis \"trust/eu\" ist leer"});
- }
- }
-
- }
-
- File hashcache = new File(tslconfiguration_.getWorkingDirectory(), "hashcache");
- if (!hashcache.exists()) {
- hashcache.mkdir();
+
+ private void checkTSLConfiguration() throws ConfigurationException {
+ boolean bTSLEnabledTPExist = false;
+ final Iterator it = trustProfiles.entrySet().iterator();
+ while (it.hasNext()) {
+ final Map.Entry pairs = (Map.Entry) it.next();
+ final TrustProfile tp = (TrustProfile) pairs.getValue();
+ if (tp.isTSLEnabled()) {
+ bTSLEnabledTPExist = bTSLEnabledTPExist || true;
}
- if (!hashcache.isDirectory()) {
- error("config.38", new Object[] { hashcache.getAbsolutePath() });
- return;
+ }
+
+ if (!bTSLEnabledTPExist) {
+ // if no trustprofile has TSL support enabled, delete TSL configuration
+ tslconfiguration_ = null;
+ return;
+ }
+
+ if (bTSLEnabledTPExist && tslconfiguration_ == null) {
+ error("config.40", null);
+ throw new ConfigurationException("config.40", null);
+ }
+
+ final File workingDir = new File(tslconfiguration_.getWorkingDirectory());
+ final File eu_trust = new File(workingDir.getAbsolutePath() + "/trust/eu");
+ if (!eu_trust.exists()) {
+ error("config.51", new Object[] { "Verzeichnis \"trust/eu\" existiert nicht" });
+ throw new ConfigurationException("config.51", new Object[] {
+ "Verzeichnis \"trust/eu\" existiert nicht" });
+ } else {
+ final File[] eutrustFiles = eu_trust.listFiles();
+ if (eutrustFiles == null) {
+ error("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" });
+ throw new ConfigurationException("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" });
+ } else {
+ if (eutrustFiles.length == 0) {
+ error("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" });
+ throw new ConfigurationException("config.51", new Object[] { "Verzeichnis \"trust/eu\" ist leer" });
+ }
}
+ }
+
+ final File hashcache = new File(tslconfiguration_.getWorkingDirectory(), "hashcache");
+ if (!hashcache.exists()) {
+ hashcache.mkdir();
+ }
+ if (!hashcache.isDirectory()) {
+ error("config.38", new Object[] { hashcache.getAbsolutePath() });
+ return;
+ }
+
// System.setProperty("iaik.xml.crypto.tsl.BinaryHashCache.DIR", hashcache.getAbsolutePath());
// String hashcachedir = System.getProperty("iaik.xml.crypto.tsl.BinaryHashCache.DIR");
// System.out.println("Hashcache: " + hashcachedir);
+ Logger.debug("TSL Konfiguration - Hashcache: " + hashcache.getAbsolutePath());
- Logger.debug("TSL Konfiguration - Hashcache: " + hashcache.getAbsolutePath());
-
-
}
-
/**
* Returns the warnings encountered during building the configuration.
- *
- * @return A <code>List</code> of <code>String</code>s, containing the
- * warning messages.
+ *
+ * @return A <code>List</code> of <code>String</code>s, containing the warning
+ * messages.
*/
public List getWarnings() {
return warnings;
@@ -544,57 +527,58 @@ public class ConfigurationProvider
/**
* Return the name of the digest algorithm used during signature creation.
- *
- * @return The digest method algorithm name, or an empty <code>String</code>,
- * if none has been configured.
+ *
+ * @return The digest method algorithm name, or an empty <code>String</code>, if
+ * none has been configured.
*/
public String getDigestMethodAlgorithmName() {
return digestMethodAlgorithmName;
}
-
+
/**
* Return the XAdES version used for signature creation.
- *
- * @return The XAdES version used for signature creation, or an empty <code>String</code>,
- * if none has been configured.
+ *
+ * @return The XAdES version used for signature creation, or an empty
+ * <code>String</code>, if none has been configured.
*/
public String getXAdESVersion() {
return xadesVersion;
}
-
+
public String getPDFASConfiguration() {
- return pdfAsConfiguration;
+ return pdfAsConfiguration;
}
-
+
public int getConnectionTimeout() {
- return this.connectionTimeout;
+ return this.connectionTimeout;
}
-
+
public int getReadTimeout() {
- return this.readTimeout;
+ return this.readTimeout;
}
-
+
public boolean getAdesFormResults() {
- return this.adesFormResults;
+ return this.adesFormResults;
}
-
+
public boolean getAllowExternalUris() {
- return this.allowExternalUris_;
+ return this.allowExternalUris_;
}
-
+
public List getBlackListedUris() {
- return this.blackListedUris_;
+ return this.blackListedUris_;
}
+
public List getWhiteListedUris() {
- return this.whiteListedUris_;
+ return this.whiteListedUris_;
}
-
+
/**
* Return the name of the canonicalization algorithm used during signature
* creation.
- *
- * @return The canonicalization algorithm name, or an empty
- * <code>String</code> if none has been configured.
+ *
+ * @return The canonicalization algorithm name, or an empty <code>String</code>
+ * if none has been configured.
*/
public String getCanonicalizationAlgorithmName() {
return canonicalizationAlgorithmName;
@@ -602,9 +586,9 @@ public class ConfigurationProvider
/**
* Return the configured hardware crypto modules.
- *
+ *
* @return A <code>List</code> of <code>HardwareCryptoModule</code> objects
- * containing the hardware crypto module configurations.
+ * containing the hardware crypto module configurations.
*/
public List getHardwareCryptoModules() {
return hardwareCryptoModules;
@@ -612,9 +596,9 @@ public class ConfigurationProvider
/**
* Return the hardware key modules configuration.
- *
+ *
* @return A <code>List</code> of <code>HardwareKeyModule</code> objects
- * containing the configuration of the hardware key modules.
+ * containing the configuration of the hardware key modules.
*/
public List getHardwareKeyModules() {
return hardwareKeyModules;
@@ -622,9 +606,9 @@ public class ConfigurationProvider
/**
* Return the software key module configuration.
- *
+ *
* @return A <code>List</code> of <code>SoftwareKeyModule</code> objects
- * containing the configuration of the software key modules.
+ * containing the configuration of the software key modules.
*/
public List getSoftwareKeyModules() {
return softwareKeyModules;
@@ -632,38 +616,38 @@ public class ConfigurationProvider
/**
* Return the key group mapping.
- *
- * @return A mapping from key group ID (a <code>String</code>) to
- * <code>KeyGroup</code> mapping.
+ *
+ * @return A mapping from key group ID (a <code>String</code>) to
+ * <code>KeyGroup</code> mapping.
*/
public Map getKeyGroups() {
return keyGroups;
}
-
+
public KeyGroup getKeyGroup(String keyGroupId) {
- if (MiscUtil.isNotEmpty(keyGroupId))
- return (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase());
-
- else
- return null;
+ if (MiscUtil.isNotEmpty(keyGroupId)) {
+ return (KeyGroup) keyGroups.get(keyGroupId.trim().toLowerCase());
+ } else {
+ return null;
+ }
}
/**
* Return the set of <code>KeyGroupEntry</code>s of a given key group, which a
* client (identified by an issuer/serial pair) may access.
- *
- * @param issuer The issuer of the client certificate.
- * @param serial The serial number of the client certificate.
+ *
+ * @param issuer The issuer of the client certificate.
+ * @param serial The serial number of the client certificate.
* @param keyGroupId The ID of the key group.
* @return A <code>Set</code> of all the <code>KeyGroupEntry</code>s in the
- * given key group, if the user may access them. Returns <code>null</code>, if
- * the user may not access the given key group or if the key group does not
- * exist.
+ * given key group, if the user may access them. Returns
+ * <code>null</code>, if the user may not access the given key group or
+ * if the key group does not exist.
*/
public Set getKeyGroupEntries(
- Principal issuer,
- BigInteger serial,
- String keyGroupId) {
+ Principal issuer,
+ BigInteger serial,
+ String keyGroupId) {
IssuerAndSerial issuerAndSerial;
Map mapping;
@@ -676,118 +660,115 @@ public class ConfigurationProvider
// System.out.println("Issuer: " + issuer);
// System.out.println("serial: " + serial);
-//
+//
// Iterator entries = keyGroupMappings.entrySet().iterator();
// while (entries.hasNext()) {
// Entry thisEntry = (Entry) entries.next();
// System.out.println("Entry: " + thisEntry.getKey());
// System.out.println("Value: " + thisEntry.getValue());
// }
-
+
mapping = (Map) keyGroupMappings.get(issuerAndSerial);
if (mapping != null) {
- KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId);
+ final KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId);
if (keyGroup != null) {
return keyGroup.getKeyGroupEntries();
}
}
-
+
// If no key group is available for a client identified by a certificate,
// try to find a key group in the anonymous key group mapping
- if (issuer != null || serial != null)
- {
+ if (issuer != null || serial != null) {
mapping = (Map) keyGroupMappings.get(ANONYMOUS_ISSUER_SERIAL);
- if (mapping != null)
- {
- KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId);
- if (keyGroup != null) return keyGroup.getKeyGroupEntries();
+ if (mapping != null) {
+ final KeyGroup keyGroup = (KeyGroup) mapping.get(keyGroupId);
+ if (keyGroup != null) {
+ return keyGroup.getKeyGroupEntries();
+ }
}
}
-
+
return null;
}
/**
* Return the chaining mode for a given trust anchor.
- *
+ *
* @param trustAnchor The trust anchor for which the chaining mode should be
- * returned.
- * @return The chaining mode for the given trust anchor. If the trust anchor
- * has not been configured separately, the system default will be returned.
+ * returned.
+ * @return The chaining mode for the given trust anchor. If the trust anchor has
+ * not been configured separately, the system default will be returned.
*/
public String getChainingMode(X509Certificate trustAnchor) {
- Principal issuer = trustAnchor.getIssuerDN();
- BigInteger serial = trustAnchor.getSerialNumber();
- IssuerAndSerial issuerAndSerial = new IssuerAndSerial(issuer, serial);
+ final Principal issuer = trustAnchor.getIssuerDN();
+ final BigInteger serial = trustAnchor.getSerialNumber();
+ final IssuerAndSerial issuerAndSerial = new IssuerAndSerial(issuer, serial);
- String mode = (String) chainingModes.get(issuerAndSerial);
+ final String mode = (String) chainingModes.get(issuerAndSerial);
return mode != null ? mode : defaultChainingMode;
}
/**
* Return the distribution points for a given CA.
- *
+ *
* @param cert The certificate for which the distribution points should be
* looked up. The issuer information is used to perform the lookup.
- *
- * @return A <code>Set</code> of <code>DistributionPoint</code> objects. The
- * set will be empty, if no distribution points have been configured
- * for this certificate.
+ *
+ * @return A <code>Set</code> of <code>DistributionPoint</code> objects. The set
+ * will be empty, if no distribution points have been configured for
+ * this certificate.
*/
- public Set getDistributionPoints(X509Certificate cert)
- {
+ public Set getDistributionPoints(X509Certificate cert) {
try {
- RFC2253NameParser nameParser =
- new RFC2253NameParser(cert.getIssuerDN().toString());
- String caIssuerDN = nameParser.parse().getName();
- Set dps = (Set) distributionPoints.get(caIssuerDN);
+ final RFC2253NameParser nameParser =
+ new RFC2253NameParser(cert.getIssuerDN().toString());
+ final String caIssuerDN = nameParser.parse().getName();
+ final Set dps = (Set) distributionPoints.get(caIssuerDN);
if (dps == null) {
return Collections.EMPTY_SET;
}
return dps;
- } catch (RFC2253NameParserException e) {
+ } catch (final RFC2253NameParserException e) {
return Collections.EMPTY_SET;
}
}
/**
* Return the CRL archive duration.
- *
+ *
* @return The duration of how long to keep CRL archive entries (measured in
- * days).
+ * days).
*/
public int getCRLArchiveDuration() {
return cRLArchiveDuration;
}
-
+
/**
* Returns whether revocation information should be archived.
- *
+ *
* @return whether revocation information should be archived.
*/
- public boolean getEnableRevocationArchiving()
- {
+ public boolean getEnableRevocationArchiving() {
return enableRevocationArchiving_;
}
-
+
/**
* Returns the location of the certificate store.
- *
+ *
* @return the location of the certificate store.
*/
- public String getCertStoreLocation()
- {
+ public String getCertStoreLocation() {
return certStoreLocation_;
}
/**
* Return a <code>CreateTransformsInfoProfile</code> with the given ID.
- *
+ *
* @param id The <code>CreateTransformsInfoProfile</code> ID.
- * @return The <code>CreateTransformsInfoProfile</code> with the given
- * ID or <code>null</code>, if none exists.
+ * @return The <code>CreateTransformsInfoProfile</code> with the given ID or
+ * <code>null</code>, if none exists.
*/
public Element getCreateTransformsInfoProfile(String id) {
return (Element) createTransformsInfoProfiles.get(id);
@@ -795,10 +776,10 @@ public class ConfigurationProvider
/**
* Return a <code>CreateSignatureEnvironmentProfile</code> with the given ID.
- *
+ *
* @param id The <code>CreateSignatureEnvironmentProfile</code> ID.
- * @return The <code>CreateSignatureEnvironmentProfile</code> with the given
- * ID or <code>null</code>, if none exists.
+ * @return The <code>CreateSignatureEnvironmentProfile</code> with the given ID
+ * or <code>null</code>, if none exists.
*/
public Element getCreateSignatureEnvironmentProfile(String id) {
return (Element) createSignatureEnvironmentProfiles.get(id);
@@ -806,10 +787,10 @@ public class ConfigurationProvider
/**
* Return a <code>VerifyTransformsInfoProfile</code> with the given ID.
- *
+ *
* @param id The <code>VerifyTransformsInfoProfile</code> ID.
* @return The <code>VerifyTransformsInfoProfile</code> with the given ID or
- * <code>null</code>, if none exists.
+ * <code>null</code>, if none exists.
*/
public Element getVerifyTransformsInfoProfile(String id) {
return (Element) verifyTransformsInfoProfiles.get(id);
@@ -817,10 +798,10 @@ public class ConfigurationProvider
/**
* Return a <code>SupplementProfile</code> with the given ID.
- *
+ *
* @param id The <code>SupplementProfile</code> ID.
* @return The <code>SupplementProfile</code> with the given ID or
- * <code>null</code>, if none exists.
+ * <code>null</code>, if none exists.
*/
public Element getSupplementProfile(String id) {
return (Element) supplementProfiles.get(id);
@@ -828,63 +809,64 @@ public class ConfigurationProvider
/**
* Return a <code>TrustProfile</code> with the given ID.
- *
+ *
* @param id The <code>TrustProfile</code> ID.
- * @return The <code>TrustProfile</code> with the given ID or
- * <code>null</code>, if none exists.
+ * @return The <code>TrustProfile</code> with the given ID or <code>null</code>,
+ * if none exists.
*/
public TrustProfile getTrustProfile(String id) {
- if (MiscUtil.isNotEmpty(id)) {
- id = id.trim().toLowerCase();
- return (TrustProfile) trustProfiles.get(id);
-
- }
-
- return null;
+ if (MiscUtil.isNotEmpty(id)) {
+ id = id.trim().toLowerCase();
+ return (TrustProfile) trustProfiles.get(id);
+
+ }
+
+ return null;
}
-
+
/**
* Returns a map of <code>TrustProfiles</code>
+ *
* @return
*/
public Map getTrustProfiles() {
- return trustProfiles;
+ return trustProfiles;
}
/**
* Log a warning.
- *
- * @param messageId The message ID.
+ *
+ * @param messageId The message ID.
* @param parameters Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private static void info(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
Logger.info(new LogMsg(msg.getMessage(messageId, parameters)));
}
-
+
/**
* Log a debug message.
- *
- * @param messageId The message ID.
+ *
+ * @param messageId The message ID.
* @param parameters Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private static void debug(String message) {
Logger.debug(message);
}
-
- /**
+
+ /**
* Log a warning.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
+ * @param args Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void warn(String messageId, Object[] args) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
Logger.warn(new LogMsg(txt));
warnings.add(txt);
@@ -892,133 +874,126 @@ public class ConfigurationProvider
/**
* Log an error.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
+ * @param args Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void error(String messageId, Object[] args) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
Logger.warn(new LogMsg(txt));
// warnings.add(txt);
}
-
+
/**
* Returns the JDBC URL for the revocation archive database.
- *
+ *
* @return the JDBC URL for the revocation archive database.
*/
- public String getRevocationArchiveJDBCURL()
- {
+ public String getRevocationArchiveJDBCURL() {
return revocationArchiveJDBCURL_;
}
/**
* Returns the JDBC driver class name for the revocation archive database.
- *
+ *
* @return the JDBC driver class name for the revocation archive database.
*/
- public String getRevocationArchiveJDBCDriverClass()
- {
+ public String getRevocationArchiveJDBCDriverClass() {
return revocationArchiveJDBCDriverClass_;
}
/**
* Returns whether revocation checking should be done.
- *
+ *
* @return whether revocation checking should be done.
*/
- public boolean getEnableRevocationChecking()
- {
+ public boolean getEnableRevocationChecking() {
return enableRevocationChecking_;
}
/**
- * Returns the maximum age of a revocation information for considering it
- * still as valid.
- *
- * @return the maximum age of a revocation information for considering it
- * still as valid.
+ * Returns the maximum age of a revocation information for considering it still
+ * as valid.
+ *
+ * @return the maximum age of a revocation information for considering it still
+ * as valid.
*/
- public long getMaxRevocationAge()
- {
+ public long getMaxRevocationAge() {
return maxRevocationAge_;
}
/**
* Returns the service order for revocation checking.
- *
+ *
* @return the service order for revocation checking. Valid array entries are
- * {@link RevocationSourceTypes#OCSP} and {@link RevocationSourceTypes#CRL}.
+ * {@link RevocationSourceTypes#OCSP} and
+ * {@link RevocationSourceTypes#CRL}.
*/
- public String[] getServiceOrder()
- {
+ public String[] getServiceOrder() {
return serviceOrder_;
}
/**
- * Returns whether certificates found during certificate path construction
+ * Returns whether certificates found during certificate path construction
* should be added to the certificate store.
- *
- * @return whether certificates found during certificate path construction
+ *
+ * @return whether certificates found during certificate path construction
* should be added to the certificate store.
*/
- public boolean getAutoAddCertificates()
- {
+ public boolean getAutoAddCertificates() {
return autoAddCertificates_;
}
/**
- * Returns whether EE certificates found during certificate path construction
+ * Returns whether EE certificates found during certificate path construction
* should be added to the certificate store.
- *
- * @return whether certificates found during certificate path construction
+ *
+ * @return whether certificates found during certificate path construction
* should be added to the certificate store.
*/
- public boolean getAutoAddEECertificates()
- {
+ public boolean getAutoAddEECertificates() {
return autoAddEECertificates_;
}
-
+
/**
- * Returns whether the certificate extension Authority Info Access should
- * be used during certificate path construction.
- *
- * @return whether the certificate extension Authority Info Access should
- * be used during certificate path construction.
+ * Returns whether the certificate extension Authority Info Access should be
+ * used during certificate path construction.
+ *
+ * @return whether the certificate extension Authority Info Access should be
+ * used during certificate path construction.
*/
- public boolean getUseAuthorityInfoAccess()
- {
+ public boolean getUseAuthorityInfoAccess() {
return useAuthorityInfoAccess_;
}
-
+
/**
* Returns whether the file URIs are permitted or not
+ *
* @return whether the file URIs are permitted or not
*/
- public boolean getPermitFileURIs()
- {
- return permitFileURIs;
+ public boolean getPermitFileURIs() {
+ return permitFileURIs;
}
-
+
/**
* Returns the map of retention intervals
+ *
* @return The map of retention intervals
*/
public Map getCrlRetentionIntervals() {
- return crlRetentionIntervals;
+ return crlRetentionIntervals;
}
-
+
/**
* Returns the global TSL configuration
+ *
* @return The global TSL configuration
*/
public TSLConfiguration getTSLConfiguration() {
- return tslconfiguration_;
+ return tslconfiguration_;
}
-
-
} \ No newline at end of file
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java
index a2e5b93..bf911df 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/DistributionPoint.java
@@ -21,42 +21,40 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
/**
* Abstract base class for distribution points.
- *
+ *
* @author Gregor Karlinger
* @version $Id$
- * */
-public abstract class DistributionPoint implements iaik.pki.revocation.DistributionPoint
-{
- /**
- * The distribution point URI.
+ */
+public abstract class DistributionPoint implements iaik.pki.revocation.DistributionPoint {
+ /**
+ * The distribution point URI.
*/
- private String uri_;
+ private final String uri_;
/**
* Create a <code>DistributionPoint</code> with a URI.
- *
+ *
* @param uri The URI of the distribution point.
*/
- public DistributionPoint(String uri)
- {
+ public DistributionPoint(String uri) {
uri_ = uri;
}
-
+
/**
* @see iaik.pki.revocation.DistributionPoint#getType()
*/
+ @Override
public abstract String getType();
/**
* @see iaik.pki.revocation.DistributionPoint#getUri()
*/
- public String getUri()
- {
+ @Override
+ public String getUri() {
return uri_;
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java
index c0487f6..99ca1c3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareCryptoModule.java
@@ -21,40 +21,38 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
/**
* Contains configuration data for a hardware crypto module.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class HardwareCryptoModule {
/** The name of the module. */
- private String name;
+ private final String name;
/** The slod ID of the module. */
- private String slotID;
+ private final String slotID;
/** The user PIN of the module. */
- private String userPIN;
-
+ private final String userPIN;
+
/**
* Create a new <code>HardwareCryptoModule</code>.
- *
- * @param name The name of this <code>HardwareCryptoModule</code>.
- * @param slotID The slot ID of this <code>HardwareCryptoModule</code>.
- * @param userPIN The user PIN to access this
- * <code>HardwareCryptoModule</code>.
+ *
+ * @param name The name of this <code>HardwareCryptoModule</code>.
+ * @param slotID The slot ID of this <code>HardwareCryptoModule</code>.
+ * @param userPIN The user PIN to access this <code>HardwareCryptoModule</code>.
*/
public HardwareCryptoModule(String name, String slotID, String userPIN) {
this.name = name;
this.slotID = slotID;
this.userPIN = userPIN;
}
-
+
/**
* Returns the name of this <code>HardwareCryptoModule</code>.
- *
+ *
* @return The name of this <code>HardwareCryptoModule</code>.
*/
public String getName() {
@@ -63,22 +61,20 @@ public class HardwareCryptoModule {
/**
* Returns the slot ID of this <code>HardwareCryptoModule</code>.
- *
+ *
* @return The slot ID.
*/
public String getSlotID() {
return slotID;
}
-
/**
* Returns the user PIN of this <code>HardwareCryptoModule</code>.
- *
+ *
* @return The user PIN used to access the module.
*/
public String getUserPIN() {
return userPIN;
}
-
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java
index 18fd085..5fa408c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/HardwareKeyModule.java
@@ -21,60 +21,59 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
/**
* A class that contains information about a hardware key module.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class HardwareKeyModule extends KeyModule {
/** The name of the module. */
- private String name;
+ private final String name;
/** The slod ID of the module. */
- private String slotID;
+ private final String slotID;
/** The user PIN of the module. */
- private String userPIN;
-
+ private final String userPIN;
+
/**
* Create a new <code>HardwareKey</code>.
- *
- * @param id The key module ID.
- * @param name The name of the key.
- * @param slotID The slot ID of the key within the hardware module. May be
- * <code>null</code>.
+ *
+ * @param id The key module ID.
+ * @param name The name of the key.
+ * @param slotID The slot ID of the key within the hardware module. May be
+ * <code>null</code>.
* @param userPIN The user PIN to access the key.
*/
public HardwareKeyModule(String id, String name, String slotID, String userPIN) {
super(id);
this.name = name;
this.slotID = slotID;
- this.userPIN = userPIN;
+ this.userPIN = userPIN;
}
-
+
/**
* Return the name of this <code>HardwareKey</code>.
- *
+ *
* @return The name of this <code>HardwareKey</code>.
*/
public String getName() {
return name;
}
-
+
/**
* Return the slot ID of this <code>HardwareKey</code>.
- *
+ *
* @return The slot ID of this <code>HardwareKey</code>.
*/
public String getSlotID() {
return slotID;
}
-
+
/**
* Return the user PIN to access this <code>HardwareKey</code>.
- *
+ *
* @return The user PIN to access this <code>HardwareKey</code>.
*/
public String getUserPIN() {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java
index 38a3ae9..03827f2 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/IssuerAndSerial.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
import java.math.BigInteger;
@@ -34,25 +33,25 @@ import iaik.utils.RFC2253NameParserException;
/**
* A class containing the issuer and serial number of a certificate, which can
* be used to uniquely identify the certificate.
- *
+ *
* The issuer is contained as an RFC2253 encoded <code>String</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class IssuerAndSerial {
/** The issuer distinguished name. */
- private String issuerDN;
+ private final String issuerDN;
/** The certificate serial number. */
- private BigInteger serial;
+ private final BigInteger serial;
/**
* Create an <code>IssuerAndSerial</code> object.
- *
+ *
* The name of the issuer is converted to RFC2253. If it cannot be parsed, the
- * DN contained in the <code>issuer</code> is set.
- *
+ * DN contained in the <code>issuer</code> is set.
+ *
* @param issuer The isser of a certificate.
* @param serial The serial number of the certificate.
*/
@@ -60,28 +59,28 @@ public class IssuerAndSerial {
String issuerDN = null;
if (issuer instanceof Name) {
try {
- issuerDN = ((Name)issuer).getRFC2253String();
- } catch (RFC2253NameParserException e) {
+ issuerDN = ((Name) issuer).getRFC2253String();
+ } catch (final RFC2253NameParserException e) {
// do nothing
}
}
if (issuerDN == null) {
- RFC2253NameParser parser = new RFC2253NameParser(issuer.getName());
+ final RFC2253NameParser parser = new RFC2253NameParser(issuer.getName());
try {
- issuerDN = ((Name)parser.parse()).getRFC2253String();
- } catch (RFC2253NameParserException e) {
+ issuerDN = parser.parse().getRFC2253String();
+ } catch (final RFC2253NameParserException e) {
issuerDN = issuer.getName();
}
}
this.serial = serial;
this.issuerDN = issuerDN;
}
-
+
/**
* Create an <code>IssuerAndSerial</code> object.
- *
+ *
* @param issuerDN The issuer distinguished name. Should be an RFC2253 name.
- * @param serial The serial number of the certificate.
+ * @param serial The serial number of the certificate.
*/
public IssuerAndSerial(String issuerDN, BigInteger serial) {
this.issuerDN = issuerDN;
@@ -90,7 +89,7 @@ public class IssuerAndSerial {
/**
* Return the issuer DN in RFC2253 format.
- *
+ *
* @return The issuer part of this object.
*/
public String getIssuerDN() {
@@ -99,7 +98,7 @@ public class IssuerAndSerial {
/**
* Return the serial number.
- *
+ *
* @return The serial number of this object.
*/
public BigInteger getSerial() {
@@ -108,28 +107,31 @@ public class IssuerAndSerial {
/**
* Compare this <code>IssuerAndSerial</code> to another object.
- *
+ *
* @param other The object to compare this <code>IssuerAndSerial</code> to.
* @return <code>true</code>, if <code>other</code> is an
- * <code>IssuerAndSerial</code> object and the <code>issuer</code> and
- * <code>serial</code> fields are both equal. <code>false</code> otherwise.
+ * <code>IssuerAndSerial</code> object and the <code>issuer</code> and
+ * <code>serial</code> fields are both equal. <code>false</code>
+ * otherwise.
* @see java.lang.Object#equals(java.lang.Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof IssuerAndSerial) {
- IssuerAndSerial ias = (IssuerAndSerial) other;
+ final IssuerAndSerial ias = (IssuerAndSerial) other;
return getIssuerDN().equals(ias.getIssuerDN())
- && getSerial().equals(ias.getSerial());
+ && getSerial().equals(ias.getSerial());
}
return false;
}
/**
* Return the hash code of this <code>IssuerAndSerial</code>.
- *
+ *
* @return The hash code of this <code>IssuerAndSerial</code>.
* @see java.lang.Object#hashCode()
*/
+ @Override
public int hashCode() {
return issuerDN.hashCode() ^ serial.hashCode();
}
@@ -137,13 +139,14 @@ public class IssuerAndSerial {
/**
* Return a <code>String</code> representation of this
* <code>IssuerAndSerial</code> object.
- *
+ *
* @return The <code>String</code> representation.
* @see java.lang.Object#toString()
*/
+ @Override
public String toString() {
- return ("(IssuerAndSerial - Issuer<" + getIssuerDN())
- + ("> Serial<" + serial.toString() + ">)");
+ return "(IssuerAndSerial - Issuer<" + getIssuerDN()
+ + "> Serial<" + serial.toString() + ">)";
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java
index c2490f9..faeaf82 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroup.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
import java.util.Iterator;
@@ -29,7 +28,7 @@ import java.util.Set;
/**
* A collection of <code>KeyGroupEntry</code>s with its own ID.
- *
+ *
* @author Sven Aigner
* @author Patrick Peck
* @version $Id$
@@ -37,59 +36,62 @@ import java.util.Set;
public class KeyGroup {
/** The keys belonging to this key group. */
- private Set keyGroupEntries;
+ private final Set keyGroupEntries;
/** The key group ID. */
- private String id;
+ private final String id;
/** The digest method algorithm for the key group */
- private String digestMethodAlgorithm;
+ private final String digestMethodAlgorithm;
/**
* Create a <code>KeyGroup</code>.
- *
- * @param id The ID of this <code>KeyGroup</code>.
- * @param keyGroupEntries The keys belonging to this <code>KeyGroup</code>.
+ *
+ * @param id The ID of this <code>KeyGroup</code>.
+ * @param keyGroupEntries The keys belonging to this
+ * <code>KeyGroup</code>.
* @param digestMethodAlgorithm The signature algorithm used for this key group
*/
public KeyGroup(String id, Set keyGroupEntries, String digestMethodAlgorithm) {
this.id = id;
this.keyGroupEntries = keyGroupEntries;
- this.digestMethodAlgorithm = digestMethodAlgorithm;
+ this.digestMethodAlgorithm = digestMethodAlgorithm;
}
/**
* Return the <code>KeyEntry</code>s contained in this <code>KeyGroup</code>.
- *
+ *
* @return The <code>KeyEntry</code>s contained in this <code>KeyGroup</code>.
*/
public Set getKeyGroupEntries() {
return keyGroupEntries;
}
-
+
/**
* Returnd the digest method algorithm used for this key group
+ *
* @return The digest method signature algorithm used for this key group
*/
public String getDigestMethodAlgorithm() {
- return digestMethodAlgorithm;
+ return digestMethodAlgorithm;
}
/**
* Return the ID of this <code>KeyGroup</code>.
- *
+ *
* @return The <code>KeyGroup</code> ID.
*/
public String getId() {
return id;
}
- /**
+ /**
* Return a <code>String</code> representation of this <code>KeyGroup</code>.
- *
+ *
* @return The <code>String</code> representation.
* @see java.lang.Object#toString()
*/
+ @Override
public String toString() {
- StringBuffer sb = new StringBuffer();
+ final StringBuffer sb = new StringBuffer();
Iterator i;
if (getKeyGroupEntries() != null) {
@@ -99,7 +101,8 @@ public class KeyGroup {
sb.append(" " + i.next());
}
}
- return "(KeyGroup - ID:" + id + " " + sb.toString() + ")" + "DigestMethodAlgorithm: " + digestMethodAlgorithm;
+ return "(KeyGroup - ID:" + id + " " + sb.toString() + ")" + "DigestMethodAlgorithm: "
+ + digestMethodAlgorithm;
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java
index fcedfb0..d73b755 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyGroupEntry.java
@@ -21,31 +21,30 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
import java.math.BigInteger;
/**
* A class containing information about an entry in a key group.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class KeyGroupEntry {
/** The module ID of the key. */
- private String moduleID;
+ private final String moduleID;
/** The issuer DN of the certificate identifying the key. */
- private String issuerDN;
+ private final String issuerDN;
/** The serial number of the certificate identifying the key. */
- private BigInteger serialNumber;
+ private final BigInteger serialNumber;
/**
* Create a new <code>KeyGroupEntry</code>.
- *
- * @param moduleID The key module ID to which this entry belongs to.
- * @param issuerAndSerial The issuer and serial number which uniquely
- * identifies a certificate within the key module.
+ *
+ * @param moduleID The key module ID to which this entry belongs to.
+ * @param issuerAndSerial The issuer and serial number which uniquely identifies
+ * a certificate within the key module.
*/
public KeyGroupEntry(String moduleID, IssuerAndSerial issuerAndSerial) {
this.moduleID = moduleID;
@@ -55,25 +54,24 @@ public class KeyGroupEntry {
/**
* Create a new <code>KeyGroupEntry</code>.
- *
- * @param moduleID The key module ID to which this entry belongs to.
- * @param issuerDN The isser DN of the certificate within the key module.
+ *
+ * @param moduleID The key module ID to which this entry belongs to.
+ * @param issuerDN The isser DN of the certificate within the key module.
* @param serialNumber The serial number of the certificate within the key
- * module.
+ * module.
*/
public KeyGroupEntry(
- String moduleID,
- String issuerDN,
- BigInteger serialNumber) {
+ String moduleID,
+ String issuerDN,
+ BigInteger serialNumber) {
this.moduleID = moduleID;
this.issuerDN = issuerDN;
this.serialNumber = serialNumber;
}
/**
- * Return the key module ID to which this <code>KeyGroupEntry</code> belongs
- * to.
- *
+ * Return the key module ID to which this <code>KeyGroupEntry</code> belongs to.
+ *
* @return The key module ID.
*/
public String getModuleID() {
@@ -83,7 +81,7 @@ public class KeyGroupEntry {
/**
* Return the issuer DN of this <code>KeyGroupEntry</code> for identifying the
* certificate within the key module.
- *
+ *
* @return The issuer DN of the certificate.
*/
public String getIssuerDN() {
@@ -93,7 +91,7 @@ public class KeyGroupEntry {
/**
* Return the serial number of this <code>KeyGroupEntry</code> for identifying
* the certificate within the key module.
- *
+ *
* @return The serial number of the certificate.
*/
public BigInteger getSerialNumber() {
@@ -105,26 +103,28 @@ public class KeyGroupEntry {
*
* @param other The <code>KeyGroupEntry</code> to compare to.
* @return <code>true</code>, if module ID, isser DN and serial number of
- * <code>other</code> match the ones contained in this object, otherwise
- * <code>false</code>.
+ * <code>other</code> match the ones contained in this object, otherwise
+ * <code>false</code>.
* @see java.lang.Object#equals(Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof KeyGroupEntry) {
- KeyGroupEntry entry = (KeyGroupEntry) other;
+ final KeyGroupEntry entry = (KeyGroupEntry) other;
return getModuleID().equals(entry.getModuleID())
- && getIssuerDN().equals(entry.getIssuerDN())
- && getSerialNumber().equals(entry.getSerialNumber());
+ && getIssuerDN().equals(entry.getIssuerDN())
+ && getSerialNumber().equals(entry.getSerialNumber());
}
return false;
}
-
+
/**
* @see java.lang.Object#hashCode()
*/
+ @Override
public int hashCode() {
return getModuleID().hashCode()
- ^ getIssuerDN().hashCode()
- ^ getSerialNumber().hashCode();
+ ^ getIssuerDN().hashCode()
+ ^ getSerialNumber().hashCode();
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java
index 45d8d7e..6a665d6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/KeyModule.java
@@ -21,23 +21,22 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
/**
* A class that contains information about a key module.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class KeyModule {
/** The key module ID. */
- private String id;
+ private final String id;
/**
* Create a <code>Key</code> object.
- *
+ *
* @param id The key module ID.
*/
public KeyModule(String id) {
@@ -46,7 +45,7 @@ public class KeyModule {
/**
* Return the key ID.
- *
+ *
* @return The key ID.
*/
public String getId() {
@@ -55,10 +54,11 @@ public class KeyModule {
/**
* Return a <code>String</code> representation of this <code>Key</code>.
- *
+ *
* @return The <code>String</code> representation.
* @see java.lang.Object#toString()
*/
+ @Override
public String toString() {
return "(Key - Id<" + id + ">)";
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java
index 2e91c6b..97ced05 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/OCSPDistributionPoint.java
@@ -21,36 +21,33 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
import iaik.pki.revocation.RevocationSourceTypes;
/**
* A class representing a CRL distribution point.
- *
+ *
* @author Gregor Karlinger
* @version $Id$
*/
-public class OCSPDistributionPoint
- extends DistributionPoint
- implements iaik.pki.revocation.DistributionPoint
-{
+public class OCSPDistributionPoint
+ extends DistributionPoint
+ implements iaik.pki.revocation.DistributionPoint {
/**
* Create a <code>OCSPDistributionPoint</code> with a URI.
- *
+ *
* @param uri The URI of the ocsp distribution point.
*/
- public OCSPDistributionPoint(String uri)
- {
+ public OCSPDistributionPoint(String uri) {
super(uri);
}
/**
* @see iaik.pki.revocation.DistributionPoint#getType()
*/
- public String getType()
- {
+ @Override
+ public String getType() {
return RevocationSourceTypes.OCSP;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java
index 0ed83bb..3c038cf 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/SoftwareKeyModule.java
@@ -21,25 +21,24 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
/**
* A class containing information about a software key, stored in PKCS12 format.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SoftwareKeyModule extends KeyModule {
/** The name of the file containing the keys. */
- private String fileName;
+ private final String fileName;
/** The password for accessing the file. */
- private String passWord;
-
+ private final String passWord;
+
/**
* Create a new <code>SoftwareKey</code>.
- *
- * @param id The key ID.
+ *
+ * @param id The key ID.
* @param fileName The name of the PKCS12 keystore file containing the key.
* @param passWord The password to access the keystore file.
*/
@@ -48,25 +47,24 @@ public class SoftwareKeyModule extends KeyModule {
this.fileName = fileName;
this.passWord = passWord;
}
-
+
/**
* Return the name of the PKCS12 keystore file containing this
* <code>SoftwareKey</code>.
- *
+ *
* @return The name of the PKCS12 keystore file.
*/
public String getFileName() {
return fileName;
}
-
+
/**
* Return the password to access the keystore file.
- *
+ *
* @return The password to access the keystore file.
*/
public String getPassWord() {
return passWord;
}
-
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java
index 0063c7f..94155d6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/config/TrustProfile.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.config;
import java.net.URI;
@@ -35,129 +34,139 @@ import java.util.regex.PatternSyntaxException;
import at.gv.egovernment.moa.sig.tsl.TslConstants;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.MiscUtil;
-import iaik.x509.X509Certificate;
/**
* Information about a trust profile.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class TrustProfile {
/** The ID of the trust profile. */
- private String id;
+ private final String id;
/** The URI giving the location of the trust profile. */
- private String uri;
+ private final String uri;
/** The URI giving the location of the allowed signer certificates. */
- private String signerCertsUri;
-
- /** Defines if Trustprofile makes use of EU TSL*/
- private boolean tslEnabled;
- /** The countries given */
- private List<String> countries = new ArrayList<String>();
-
- private List<URI> allowedTspStatus = new ArrayList<URI>();
- private List<Pattern> allowedTspServiceTypes = new ArrayList<Pattern>();
-
-
+ private final String signerCertsUri;
+
+ /** Defines if Trustprofile makes use of EU TSL */
+ private final boolean tslEnabled;
+ /** The countries given */
+ private final List<String> countries = new ArrayList<>();
+
+ private final List<URI> allowedTspStatus = new ArrayList<>();
+ private final List<Pattern> allowedTspServiceTypes = new ArrayList<>();
+
/**
* Create a <code>TrustProfile</code>.
- *
- * @param id The ID of the <code>TrustProfile</code> to create.
- * @param uri The URI of the <code>TrustProfile</code> to create.
- * @param signerCertsUri The URI of the location of the allowed signer
- * certificates of the <code>TrustProfile</code> to create.
- * @param allowedTspServiceTypes
- * @param allowedTspStatus
+ *
+ * @param id The ID of the <code>TrustProfile</code> to
+ * create.
+ * @param uri The URI of the <code>TrustProfile</code> to
+ * create.
+ * @param signerCertsUri The URI of the location of the allowed signer
+ * certificates of the <code>TrustProfile</code>
+ * to create.
+ * @param allowedTspServiceTypes
+ * @param allowedTspStatus
*/
- public TrustProfile(String id, String uri, String signerCertsUri,
- boolean tslEnabled, String countries, String allowedTspStatus, String allowedTspServiceTypes) {
+ public TrustProfile(String id, String uri, String signerCertsUri,
+ boolean tslEnabled, String countries, String allowedTspStatus, String allowedTspServiceTypes) {
this.id = id;
this.uri = uri;
this.signerCertsUri = signerCertsUri;
-
- //TSL configuration parameters
+
+ // TSL configuration parameters
this.tslEnabled = tslEnabled;
- if (tslEnabled) {
- setCountries(countries);
- if (!this.countries.isEmpty())
- Logger.info("TrustProfile "+ id + " allows " + Arrays.toString(this.countries.toArray()) + " TSL countries");
- else
- Logger.info("TrustProfile "+ id + " allows " + "ALL" + " TSL countries");
-
- setAllowedTspStatus(allowedTspStatus);
- Logger.info("TrustProfile "+ id + " allows " + Arrays.toString(this.allowedTspStatus.toArray()) + " TSP status identifier");
-
- setAllowedTspServiceTypes(allowedTspServiceTypes);
- Logger.info("TrustProfile "+ id + " allows " + Arrays.toString(this.allowedTspServiceTypes.toArray()) + " TSL service-type identifier");
-
- }
+ if (tslEnabled) {
+ setCountries(countries);
+ if (!this.countries.isEmpty()) {
+ Logger.info("TrustProfile " + id + " allows " + Arrays.toString(this.countries.toArray())
+ + " TSL countries");
+ } else {
+ Logger.info("TrustProfile " + id + " allows " + "ALL" + " TSL countries");
+ }
+
+ setAllowedTspStatus(allowedTspStatus);
+ Logger.info("TrustProfile " + id + " allows " + Arrays.toString(this.allowedTspStatus.toArray())
+ + " TSP status identifier");
+
+ setAllowedTspServiceTypes(allowedTspServiceTypes);
+ Logger.info("TrustProfile " + id + " allows " + Arrays.toString(this.allowedTspServiceTypes.toArray())
+ + " TSL service-type identifier");
+
+ }
}
private void setCountries(String countries) {
- if (MiscUtil.isNotEmpty(countries)) {
- String[] ccArray = countries.split(",");
- for (String el : ccArray)
- this.countries.add(el.trim());
-
- }
+ if (MiscUtil.isNotEmpty(countries)) {
+ final String[] ccArray = countries.split(",");
+ for (final String el : ccArray) {
+ this.countries.add(el.trim());
+ }
+
+ }
}
-
+
private void setAllowedTspStatus(String allowedTspStatus) {
- if (MiscUtil.isNotEmpty(allowedTspStatus)) {
- String[] ccArray = allowedTspStatus.split(",");
- for (String el : ccArray) {
- try {
- this.allowedTspStatus.add(new URI(el.trim()));
-
- } catch (URISyntaxException e) {
- Logger.warn("TrustProfile: " + this.id + " contains a non-valid TSP Status identifier (" + el + ")");
-
- }
-
- }
-
- } else {
- Logger.debug("Use default set of TSP Status identifier");
- this.allowedTspStatus.addAll(
- Arrays.asList(
- TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.granted),
- TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.recognisedatnationallevel),
- TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.accredited),
- TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.undersupervision)));
-
- }
-
+ if (MiscUtil.isNotEmpty(allowedTspStatus)) {
+ final String[] ccArray = allowedTspStatus.split(",");
+ for (final String el : ccArray) {
+ try {
+ this.allowedTspStatus.add(new URI(el.trim()));
+
+ } catch (final URISyntaxException e) {
+ Logger.warn("TrustProfile: " + this.id + " contains a non-valid TSP Status identifier (" + el
+ + ")");
+
+ }
+
+ }
+
+ } else {
+ Logger.debug("Use default set of TSP Status identifier");
+ this.allowedTspStatus.addAll(
+ Arrays.asList(
+ TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.granted),
+ TslConstants.SERVICE_STATUS_SORT_TO_URI.get(
+ TslConstants.SERVICE_STATUS_SHORT.recognisedatnationallevel),
+ TslConstants.SERVICE_STATUS_SORT_TO_URI.get(TslConstants.SERVICE_STATUS_SHORT.accredited),
+ TslConstants.SERVICE_STATUS_SORT_TO_URI.get(
+ TslConstants.SERVICE_STATUS_SHORT.undersupervision)));
+
+ }
+
}
-
+
private void setAllowedTspServiceTypes(String allowedTspServiceTypes) {
- if (MiscUtil.isNotEmpty(allowedTspServiceTypes)) {
- String[] ccArray = allowedTspServiceTypes.split(",");
- for (String el : ccArray) {
- try {
- this.allowedTspServiceTypes.add(Pattern.compile(el.trim()));
-
- } catch (PatternSyntaxException e) {
- Logger.warn("TrustProfile: " + this.id + " contains a non-valid TSP Service-Type identifier Regex pattern(" + el + ")");
-
- }
-
- }
-
- } else {
- Logger.debug("Use default set of TSP Service-Type identifier");
- this.allowedTspServiceTypes.addAll(
- Arrays.asList(
- Pattern.compile(TslConstants.DEFAULT_REGEX_PATTERN_ALLOW_ALL)));
-
- }
-
+ if (MiscUtil.isNotEmpty(allowedTspServiceTypes)) {
+ final String[] ccArray = allowedTspServiceTypes.split(",");
+ for (final String el : ccArray) {
+ try {
+ this.allowedTspServiceTypes.add(Pattern.compile(el.trim()));
+
+ } catch (final PatternSyntaxException e) {
+ Logger.warn("TrustProfile: " + this.id
+ + " contains a non-valid TSP Service-Type identifier Regex pattern(" + el + ")");
+
+ }
+
+ }
+
+ } else {
+ Logger.debug("Use default set of TSP Service-Type identifier");
+ this.allowedTspServiceTypes.addAll(
+ Arrays.asList(
+ Pattern.compile(TslConstants.DEFAULT_REGEX_PATTERN_ALLOW_ALL)));
+
+ }
+
}
-
+
/**
* Return the ID of this <code>TrustProfile</code>.
- *
+ *
* @return The <code>TrustProfile</code> ID.
*/
public String getId() {
@@ -166,49 +175,51 @@ public class TrustProfile {
/**
* Return the URI of this <code>TrustProfile</code>.
- *
+ *
* @return The URI of <code>TrustProfile</code>.
*/
public String getUri() {
return uri;
}
-
/**
- * Return the URI giving the location of the allowed signer certificates
- * of this <code>TrustProfile</code>.
- *
+ * Return the URI giving the location of the allowed signer certificates of this
+ * <code>TrustProfile</code>.
+ *
* @return The URI of <code>TrustProfile</code>.
*/
public String getSignerCertsUri() {
return signerCertsUri;
}
+
/**
* Returns if Trustprofile is TSL enabled
+ *
* @return
*/
public boolean isTSLEnabled() {
- return tslEnabled;
+ return tslEnabled;
}
+
/**
* Returns the given countries
+ *
* @return Given countries
*/
public List<String> getCountries() {
- if (!tslEnabled)
- return null;
- else
- return countries;
+ if (!tslEnabled) {
+ return null;
+ } else {
+ return countries;
+ }
}
public List<URI> getAllowedTspStatus() {
- return allowedTspStatus;
+ return allowedTspStatus;
}
public List<Pattern> getAllowedTspServiceTypes() {
- return allowedTspServiceTypes;
+ return allowedTspServiceTypes;
}
-
-
-
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java
index a465049..d660c7a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmssign/CMSSignatureCreationProfileImpl.java
@@ -21,17 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.cmssign;
-import iaik.server.modules.algorithms.SignatureAlgorithms;
-import iaik.server.modules.cmssign.CMSSignatureCreationProfile;
-import iaik.server.modules.keys.AlgorithmUnavailableException;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-import iaik.server.modules.keys.UnknownKeyException;
-
import java.util.List;
import java.util.Set;
@@ -39,61 +30,71 @@ import at.gv.egovernment.moa.spss.server.logging.TransactionId;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.server.modules.algorithms.SignatureAlgorithms;
+import iaik.server.modules.cmssign.CMSSignatureCreationProfile;
+import iaik.server.modules.keys.AlgorithmUnavailableException;
+import iaik.server.modules.keys.KeyEntryID;
+import iaik.server.modules.keys.KeyModule;
+import iaik.server.modules.keys.KeyModuleFactory;
+import iaik.server.modules.keys.UnknownKeyException;
/**
* An object providing auxiliary information for creating a CMS signature.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CMSSignatureCreationProfileImpl
- implements CMSSignatureCreationProfile {
+ implements CMSSignatureCreationProfile {
/** The set of keys available to the signing process. */
private Set keySet;
- /** The MIME type of the data to be signed*/
- private String mimeType;
- /** Whether the created signature is to be Security Layer conform. */
+ /** The MIME type of the data to be signed */
+ private final String mimeType;
+ /** Whether the created signature is to be Security Layer conform. */
private boolean securityLayerConform;
- /** Properties to be signed during signature creation. */
- private List signedProperties;
- /** Specifies whether the content data shall be included in the CMS SignedData or shall be not included. */
- private boolean includeData;
- /** Digest Method algorithm */
+ /** Properties to be signed during signature creation. */
+ private final List signedProperties;
+ /**
+ * Specifies whether the content data shall be included in the CMS SignedData or
+ * shall be not included.
+ */
+ private final boolean includeData;
+ /** Digest Method algorithm */
private String digestMethod;
- private boolean isPAdESConform;
-
-
+ private final boolean isPAdESConform;
+
/**
* Create a new <code>XMLSignatureCreationProfileImpl</code>.
- *
- * @param createProfileCount Provides external information about the
- * number of calls to the signature creation module, using the same request.
- * @param reservedIDs The set of IDs that must not be used while generating
- * new IDs.
+ *
+ * @param createProfileCount Provides external information about the number of
+ * calls to the signature creation module, using the
+ * same request.
+ * @param reservedIDs The set of IDs that must not be used while
+ * generating new IDs.
*/
public CMSSignatureCreationProfileImpl(
- Set keySet,
- String digestMethod,
- List signedProperties,
- boolean securityLayerConform,
- boolean includeData,
- String mimeType,
- boolean isPAdESConform) {
- this.keySet = keySet;
- this.signedProperties = signedProperties;
- this.securityLayerConform = securityLayerConform;
- this.includeData = includeData;
- this.mimeType = mimeType;
- this.digestMethod = digestMethod;
- this.isPAdESConform = isPAdESConform;
+ Set keySet,
+ String digestMethod,
+ List signedProperties,
+ boolean securityLayerConform,
+ boolean includeData,
+ String mimeType,
+ boolean isPAdESConform) {
+ this.keySet = keySet;
+ this.signedProperties = signedProperties;
+ this.securityLayerConform = securityLayerConform;
+ this.includeData = includeData;
+ this.mimeType = mimeType;
+ this.digestMethod = digestMethod;
+ this.isPAdESConform = isPAdESConform;
}
-
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getKeySet()
*/
+ @Override
public Set getKeySet() {
return keySet;
}
@@ -101,119 +102,116 @@ public class CMSSignatureCreationProfileImpl
/**
* Set the set of <code>KeyEntryID</code>s which may be used for signature
* creation.
- *
+ *
* @param keySet The set of <code>KeyEntryID</code>s to set.
*/
public void setKeySet(Set keySet) {
this.keySet = keySet;
}
-
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureAlgorithmName(KeyEntryID)
*/
+ @Override
public String getSignatureAlgorithmName(KeyEntryID selectedKeyID)
- throws AlgorithmUnavailableException {
+ throws AlgorithmUnavailableException {
-
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- TransactionId tid = new TransactionId(context.getTransactionID());
- KeyModule module = KeyModuleFactory.getInstance(tid);
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final TransactionId tid = new TransactionId(context.getTransactionID());
+ final KeyModule module = KeyModuleFactory.getInstance(tid);
Set algorithms;
try {
algorithms = module.getSupportedSignatureAlgorithms(selectedKeyID);
- } catch (UnknownKeyException e) {
+ } catch (final UnknownKeyException e) {
throw new AlgorithmUnavailableException(
- "Unknown key entry: " + selectedKeyID,
- e,
- null);
+ "Unknown key entry: " + selectedKeyID,
+ e,
+ null);
}
-
- if (digestMethod.compareTo("SHA-1") == 0) {
- Logger.warn("SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)");
-
- if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) {
- return SignatureAlgorithms.SHA1_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) {
- return SignatureAlgorithms.ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
-
- } else if (digestMethod.compareTo("SHA-256") == 0) {
- if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) {
- return SignatureAlgorithms.SHA256_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) {
- return SignatureAlgorithms.SHA256_WITH_ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
- } else if (digestMethod.compareTo("SHA-384") == 0) {
- if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) {
- return SignatureAlgorithms.SHA384_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) {
- return SignatureAlgorithms.SHA384_WITH_ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
- } else if (digestMethod.compareTo("SHA-512") == 0) {
- if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) {
- return SignatureAlgorithms.SHA512_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) {
- return SignatureAlgorithms.SHA512_WITH_ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
- }
- else {
- throw new AlgorithmUnavailableException(
- "No signature algorithm found for digest algorithm '" + digestMethod,
- null,
- null);
- }
-
- }
+ if (digestMethod.compareTo("SHA-1") == 0) {
+ Logger.warn(
+ "SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)");
+
+ if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) {
+ return SignatureAlgorithms.SHA1_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) {
+ return SignatureAlgorithms.ECDSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+
+ } else if (digestMethod.compareTo("SHA-256") == 0) {
+ if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) {
+ return SignatureAlgorithms.SHA256_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) {
+ return SignatureAlgorithms.SHA256_WITH_ECDSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+ } else if (digestMethod.compareTo("SHA-384") == 0) {
+ if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) {
+ return SignatureAlgorithms.SHA384_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) {
+ return SignatureAlgorithms.SHA384_WITH_ECDSA;
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+ } else if (digestMethod.compareTo("SHA-512") == 0) {
+ if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) {
+ return SignatureAlgorithms.SHA512_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) {
+ return SignatureAlgorithms.SHA512_WITH_ECDSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No signature algorithm found for digest algorithm '" + digestMethod,
+ null,
+ null);
+ }
+
+ }
-
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedProperties()
*/
+ @Override
public List getSignedProperties() {
return signedProperties;
}
@@ -221,38 +219,38 @@ public class CMSSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#isSecurityLayerConform()
*/
+ @Override
public boolean isSecurityLayerConform() {
return securityLayerConform;
}
/**
* Sets the security layer conformity.
- *
- * @param securityLayerConform <code>true</code>, if the created signature
- * is to be conform to the Security Layer specification.
+ *
+ * @param securityLayerConform <code>true</code>, if the created signature is to
+ * be conform to the Security Layer specification.
*/
public void setSecurityLayerConform(boolean securityLayerConform) {
this.securityLayerConform = securityLayerConform;
}
-
public void setDigestMethod(String digestMethod) {
- this.digestMethod = digestMethod;
+ this.digestMethod = digestMethod;
}
-
+ @Override
public String getMimeType() {
- return mimeType;
+ return mimeType;
}
+ @Override
public boolean includeData() {
- return this.includeData;
+ return this.includeData;
}
-
-@Override
-public boolean isPAdESConform() {
- return this.isPAdESConform;
-}
+ @Override
+ public boolean isPAdESConform() {
+ return this.isPAdESConform;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java
index ab807ae..2247090 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/CMSSignatureVerificationProfileImpl.java
@@ -24,40 +24,42 @@
package at.gv.egovernment.moa.spss.server.iaik.cmsverify;
import iaik.pki.PKIProfile;
+import iaik.server.modules.SignatureVerificationProfile;
import iaik.server.modules.cmsverify.CMSSignatureVerificationProfile;
/**
* An implementation of the <code>CMSSignatureVerificationProfile</code>
* interface.
- *
+ *
* @see iaik.server.modules.cmsverify.CMSSignatureVerificationProfile
* @author Patrick Peck
* @version $Id$
*/
public class CMSSignatureVerificationProfileImpl implements CMSSignatureVerificationProfile {
- /** The profile for validating the certificate. */
- private PKIProfile certificateValidationProfile;
+ /** The profile for validating the certificate. */
+ private PKIProfile certificateValidationProfile;
- /**
- * @see iaik.server.modules.cmsverify.CMSSignatureVerificationProfile#getCertificateValidationProfile()
- */
- public PKIProfile getCertificateValidationProfile() {
- return certificateValidationProfile;
- }
+ /**
+ * @see iaik.server.modules.cmsverify.CMSSignatureVerificationProfile#getCertificateValidationProfile()
+ */
+ @Override
+ public PKIProfile getCertificateValidationProfile() {
+ return certificateValidationProfile;
+ }
- /**
- * Sets the profile for validating the signer certificate.
- *
- * @param certificateValidationProfile
- * The certificate validation profile to set.
- */
- public void setCertificateValidationProfile(PKIProfile certificateValidationProfile) {
- this.certificateValidationProfile = certificateValidationProfile;
- }
+ /**
+ * Sets the profile for validating the signer certificate.
+ *
+ * @param certificateValidationProfile The certificate validation profile to
+ * set.
+ */
+ public void setCertificateValidationProfile(PKIProfile certificateValidationProfile) {
+ this.certificateValidationProfile = certificateValidationProfile;
+ }
- @Override
- public String getTargetLevel() {
- return CMSSignatureVerificationProfile.LEVEL_LTA;
- }
+ @Override
+ public String getTargetLevel() {
+ return SignatureVerificationProfile.LEVEL_LTA;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java
index 785c85b..18a9f9c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/cmsverify/PDFSignatureVerificationProfileImpl.java
@@ -3,6 +3,6 @@ package at.gv.egovernment.moa.spss.server.iaik.cmsverify;
import iaik.server.modules.pdfverify.PDFSignatureVerificationProfile;
public class PDFSignatureVerificationProfileImpl extends CMSSignatureVerificationProfileImpl
- implements PDFSignatureVerificationProfile {
+ implements PDFSignatureVerificationProfile {
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java
index 90e6793..1cd4b64 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractKeyModuleConfigurationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import iaik.server.modules.keys.KeyModuleConfiguration;
@@ -29,22 +28,22 @@ import iaik.server.modules.keys.KeyModuleConfiguration;
/**
* Base implementation class for the <code>KeyModuleConfiguration</code>
* interface and the interfaces derived from it.
- *
+ *
* @see iaik.server.modules.keys.KeyModuleConfiguration
* @author Patrick Peck
* @version $Id$
*/
public abstract class AbstractKeyModuleConfigurationImpl
- implements KeyModuleConfiguration {
+ implements KeyModuleConfiguration {
+
+ /** The module ID. */
+ private final String moduleID;
- /** The module ID. */
- private String moduleID;
-
/**
* Creata new <code>AbstractKeyModuleConfigurationImpl</code>.
- *
+ *
* @param moduleID The key module ID of this
- * <code>KeyModuleConfiguration</code>.
+ * <code>KeyModuleConfiguration</code>.
*/
public AbstractKeyModuleConfigurationImpl(String moduleID) {
this.moduleID = moduleID;
@@ -53,6 +52,7 @@ public abstract class AbstractKeyModuleConfigurationImpl
/**
* @see iaik.server.modules.keys.KeyModuleConfiguration#getModuleID()
*/
+ @Override
public String getModuleID() {
return moduleID;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java
index e2d828b..a9dfe2d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/AbstractObservableConfiguration.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import java.util.ArrayList;
@@ -34,18 +33,19 @@ import iaik.pki.store.observer.Observer;
/**
* A base class for observable configuration data.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public abstract class AbstractObservableConfiguration implements Observable {
/** The observers registered with this <code>Observable</code>. */
- private List observers = new ArrayList();
+ private final List observers = new ArrayList();
/**
* @see iaik.pki.store.observer.Observable#addObserver(iaik.pki.store.observer.Observer)
*/
+ @Override
public void addObserver(Observer observer) {
observers.add(observer);
}
@@ -53,6 +53,7 @@ public abstract class AbstractObservableConfiguration implements Observable {
/**
* @see iaik.pki.store.observer.Observable#removeObserver(iaik.pki.store.observer.Observer)
*/
+ @Override
public boolean removeObserver(Observer observer) {
return observers.remove(observer);
}
@@ -60,13 +61,14 @@ public abstract class AbstractObservableConfiguration implements Observable {
/**
* @see iaik.pki.store.observer.Observable#notify(iaik.pki.store.observer.NotificationData)
*/
+ @Override
public void notify(NotificationData data) {
Iterator iter = observers.iterator();
for (iter = observers.iterator(); iter.hasNext();) {
- Observer observer = (Observer) iter.next();
+ final Observer observer = (Observer) iter.next();
observer.notify(data);
}
}
-
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java
index 4a300a2..ff9927b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ArchiveConfigurationImpl.java
@@ -21,76 +21,68 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
-import iaik.pki.store.revocation.archive.ArchiveConfiguration;
-import iaik.pki.store.revocation.archive.ArchiveParameters;
-import iaik.pki.store.revocation.archive.ArchiveTypes;
-
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.Enumeration;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
+import iaik.pki.store.revocation.archive.ArchiveConfiguration;
+import iaik.pki.store.revocation.archive.ArchiveParameters;
+import iaik.pki.store.revocation.archive.ArchiveTypes;
/**
- * An implementation of the <code>ArchiveConfiguration</code> interface
- * using configuration data provided by the MOA configuration file.
- *
+ * An implementation of the <code>ArchiveConfiguration</code> interface using
+ * configuration data provided by the MOA configuration file.
+ *
* @see iaik.pki.store.revocation.archive.ArchiveConfiguration
* @author Patrick Peck
* @version $Id$
*/
public class ArchiveConfigurationImpl
- extends AbstractObservableConfiguration
- implements ArchiveConfiguration {
-
+ extends AbstractObservableConfiguration
+ implements ArchiveConfiguration {
+
/** The configuration parameters of the archive. */
- private ArchiveParameters archiveParameters;
+ private final ArchiveParameters archiveParameters;
/**
* Create a new <code>ArchiveConfigurationImpl</code>.
- *
- * @param config The MOA configuration from which the configuration data is being read.
+ *
+ * @param config The MOA configuration from which the configuration data is
+ * being read.
*/
- public ArchiveConfigurationImpl(ConfigurationProvider config)
- {
- String jdbcUrl = config.getRevocationArchiveJDBCURL();
+ public ArchiveConfigurationImpl(ConfigurationProvider config) {
+ final String jdbcUrl = config.getRevocationArchiveJDBCURL();
this.archiveParameters = new DataBaseArchiveParameterImpl(jdbcUrl);
-
- // Register JDBC driver class
- if (jdbcUrl != null)
- {
- String jdbcDriverClass = config.getRevocationArchiveJDBCDriverClass();
- try
- {
+
+ // Register JDBC driver class
+ if (jdbcUrl != null) {
+ final String jdbcDriverClass = config.getRevocationArchiveJDBCDriverClass();
+ try {
Class.forName(jdbcDriverClass);
- }
- catch (ClassNotFoundException e)
- {
+ } catch (final ClassNotFoundException e) {
// TODO 20030709 GK Improve exception handling
- throw new RuntimeException("JDBC driver class \"" + jdbcDriverClass + " could not be found.");
+ throw new RuntimeException("JDBC driver class \"" + jdbcDriverClass + " could not be found.");
}
-
- Enumeration regDrivers = DriverManager.getDrivers();
+
+ final Enumeration regDrivers = DriverManager.getDrivers();
boolean isRegistered = false;
- while (regDrivers.hasMoreElements())
- {
- Object currentDriver = regDrivers.nextElement();
- if (jdbcDriverClass.equals(currentDriver.getClass().getName())) isRegistered = true;
- }
- if (!isRegistered)
- {
- // Workaround for a driver which does not register itselve at invocation of Class.forName(drvname)
- try
- {
- DriverManager.registerDriver((Driver)Class.forName(jdbcDriverClass).newInstance());
+ while (regDrivers.hasMoreElements()) {
+ final Object currentDriver = regDrivers.nextElement();
+ if (jdbcDriverClass.equals(currentDriver.getClass().getName())) {
+ isRegistered = true;
}
- catch (Exception e)
- {
+ }
+ if (!isRegistered) {
+ // Workaround for a driver which does not register itselve at invocation of
+ // Class.forName(drvname)
+ try {
+ DriverManager.registerDriver((Driver) Class.forName(jdbcDriverClass).newInstance());
+ } catch (final Exception e) {
// TODO 20030709 GK Improve exception handling
- throw new RuntimeException("Registering JDBC driver \"" + jdbcDriverClass + " failed.");
+ throw new RuntimeException("Registering JDBC driver \"" + jdbcDriverClass + " failed.");
}
}
}
@@ -98,11 +90,13 @@ public class ArchiveConfigurationImpl
/**
* Return the type of archive.
- *
+ *
* This will always return <code>ArchiveTypes.DATABASE</code>.
+ *
* @return <code>ArchiveTypes.DATABASE</code>.
* @see iaik.pki.store.revocation.archive.ArchiveConfiguration#getType()
*/
+ @Override
public String getType() {
return ArchiveTypes.DATABASE;
}
@@ -110,10 +104,11 @@ public class ArchiveConfigurationImpl
/**
* Return the <code>ArchiveParameters</code> describing this
* <code>ArchiveConfiguration</code>.
- *
+ *
* @return The archive parameters.
* @see iaik.pki.store.revocation.archive.ArchiveConfiguration#getArchiveParameters()
*/
+ @Override
public ArchiveParameters getArchiveParameters() {
return archiveParameters;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java
index d752a63..d1b776b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CRLRetriever.java
@@ -23,13 +23,6 @@
package at.gv.egovernment.moa.spss.server.iaik.config;
-import iaik.logging.TransactionId;
-import iaik.pki.revocation.RevocationSourceTypes;
-import iaik.pki.store.revocation.RevocationInfoRetriever;
-import iaik.pki.store.revocation.RevocationSource;
-import iaik.pki.store.revocation.RevocationStoreException;
-import iaik.pki.ldap.Handler;
-
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
@@ -39,6 +32,12 @@ import java.util.Collection;
import java.util.Date;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.logging.TransactionId;
+import iaik.pki.ldap.Handler;
+import iaik.pki.revocation.RevocationSourceTypes;
+import iaik.pki.store.revocation.RevocationInfoRetriever;
+import iaik.pki.store.revocation.RevocationSource;
+import iaik.pki.store.revocation.RevocationStoreException;
/**
* A customized implementation of
@@ -47,55 +46,56 @@ import at.gv.egovernment.moaspss.logging.Logger;
* {@link iaik.pki.store.revocation.CRLRetriever} to overcome a classloader
* problem in connection with the {@link java.net.URL} class in a Tomcat
* deployment environment.
- *
+ *
* @author Gregor Karlinger
* @version $$
*/
public class CRLRetriever implements RevocationInfoRetriever {
-
- private int connectTimeout = 5;
- private int readTimeout = 5;
-
-
- public void update(RevocationSource source, Collection supplementalRequestData, TransactionId tid)
- throws RevocationStoreException {
- if (source == null) {
- throw new NullPointerException("RevocationSource parameter mustn't be null.");
- }
- Logger.info("Downloading crl from " + source.getUri());
- if (!source.getType().equals(RevocationSourceTypes.CRL)) {
- throw new RevocationStoreException(source.getType() + " not supported", null, getClass().getName() + ":1");
- }
- try {
- URL crlUrl;
- try {
- crlUrl = new URL(source.getUri());
- } catch (MalformedURLException e) {
- // Workaround for classloader problem with deployment in Tomcat
- // 4.1
- URLStreamHandler handler = new Handler();
- crlUrl = new URL(null, source.getUri(), handler);
- }
- URLConnection con = crlUrl.openConnection();
- con.setConnectTimeout(connectTimeout);
- con.setReadTimeout(readTimeout);
- InputStream crlInputStream = con.getInputStream();
- source.readFrom(crlInputStream, tid);
- source.setDownloadTime(new Date());
- crlInputStream.close();
- } catch (Exception iox) {
- Logger.warn("Cannot retrieve crl", iox);
- throw new RevocationStoreException("Cannot retrieve CRL", iox, getClass().getName() + ":1");
- }
- }
- @Override
- public void setConnectTimeout(int arg0) {
- this.connectTimeout = arg0;
- }
+ private int connectTimeout = 5;
+ private int readTimeout = 5;
+
+ @Override
+ public void update(RevocationSource source, Collection supplementalRequestData, TransactionId tid)
+ throws RevocationStoreException {
+ if (source == null) {
+ throw new NullPointerException("RevocationSource parameter mustn't be null.");
+ }
+ Logger.info("Downloading crl from " + source.getUri());
+ if (!source.getType().equals(RevocationSourceTypes.CRL)) {
+ throw new RevocationStoreException(source.getType() + " not supported", null, getClass().getName()
+ + ":1");
+ }
+ try {
+ URL crlUrl;
+ try {
+ crlUrl = new URL(source.getUri());
+ } catch (final MalformedURLException e) {
+ // Workaround for classloader problem with deployment in Tomcat
+ // 4.1
+ final URLStreamHandler handler = new Handler();
+ crlUrl = new URL(null, source.getUri(), handler);
+ }
+ final URLConnection con = crlUrl.openConnection();
+ con.setConnectTimeout(connectTimeout);
+ con.setReadTimeout(readTimeout);
+ final InputStream crlInputStream = con.getInputStream();
+ source.readFrom(crlInputStream, tid);
+ source.setDownloadTime(new Date());
+ crlInputStream.close();
+ } catch (final Exception iox) {
+ Logger.warn("Cannot retrieve crl", iox);
+ throw new RevocationStoreException("Cannot retrieve CRL", iox, getClass().getName() + ":1");
+ }
+ }
+
+ @Override
+ public void setConnectTimeout(int arg0) {
+ this.connectTimeout = arg0;
+ }
- @Override
- public void setReadTimeout(int arg0) {
- this.readTimeout = arg0;
- }
+ @Override
+ public void setReadTimeout(int arg0) {
+ this.readTimeout = arg0;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java
index 43483a0..052a3c5 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/CertStoreConfigurationImpl.java
@@ -23,77 +23,71 @@
package at.gv.egovernment.moa.spss.server.iaik.config;
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import at.gv.egovernment.moa.sig.tsl.exception.TslException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
-import at.gv.egovernment.moa.spss.server.logging.IaikLog;
-import at.gv.egovernment.moa.spss.server.logging.TransactionId;
import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
-import iaik.logging.Log;
import iaik.pki.store.certstore.CertStoreConfiguration;
import iaik.pki.store.certstore.CertStoreParameters;
import iaik.pki.store.certstore.directory.DirectoryCertStoreParameters;
-import iaik.pki.store.certstore.directory.DirectoryStoreException;
-import iaik.pki.store.certstore.utils.DirectoryCertStoreConverter;
/**
* An implementation of the <code>CertStoreConfiguration</code> interface based
* on MOA configuration data.
- *
+ *
* @see iaik.pki.store.certstore.CertStoreConfiguration
* @author Patrick Peck
* @version $Id$
*/
-public class CertStoreConfigurationImpl extends AbstractObservableConfiguration implements CertStoreConfiguration {
+public class CertStoreConfigurationImpl extends AbstractObservableConfiguration implements
+ CertStoreConfiguration {
+
+ private static final Logger logger = LoggerFactory.getLogger(CertStoreConfigurationImpl.class);
+
+ /** The configuration parameters of the <code>CertStore</code>. */
+ private CertStoreParameters[] parameters;
+
+ /**
+ * Create a new <code>CertStoreConfigurationImpl</code>.
+ *
+ * @param config The MOA configuration from which the configuration data is
+ * being read.
+ */
+ public CertStoreConfigurationImpl(ConfigurationProvider config) {
+ final String certStoreRoot = config.getCertStoreLocation();
+
+ final DirectoryCertStoreParameters dirParameters = new DirectoryCertStoreParametersImpl(
+ "MOA Directory CertStore",
+ certStoreRoot, true, false);
- private static final Logger logger = LoggerFactory.getLogger(CertStoreConfigurationImpl.class);
+ if (TSLServiceFactory.isInitialized()) {
+ try {
+ final CertStoreParameters tslCertStore = TSLServiceFactory.getTSLServiceClient()
+ .getCertStoreWithTSLCertificates();
+ parameters = new CertStoreParameters[] { dirParameters, tslCertStore };
- /** The configuration parameters of the <code>CertStore</code>. */
- private CertStoreParameters[] parameters;
+ } catch (final TslException e) {
+ logger.warn("TSL based CertStore initialisation FAILED.", e);
+ logger.warn("Only Directory based CertStore is used ... ");
+ parameters = new CertStoreParameters[] { dirParameters };
+ }
- /**
- * Create a new <code>CertStoreConfigurationImpl</code>.
- *
- * @param config
- * The MOA configuration from which the configuration data is
- * being read.
- */
- public CertStoreConfigurationImpl(ConfigurationProvider config) {
- String certStoreRoot = config.getCertStoreLocation();
+ } else {
+ logger.info("Trust-Status List support is not active. Use only Directory based CertStore.");
+ parameters = new CertStoreParameters[] { dirParameters };
- DirectoryCertStoreParameters dirParameters = new DirectoryCertStoreParametersImpl("MOA Directory CertStore",
- certStoreRoot, true, false);
+ }
- if (TSLServiceFactory.isInitialized()) {
- try {
- CertStoreParameters tslCertStore = TSLServiceFactory.getTSLServiceClient().getCertStoreWithTSLCertificates();
- parameters = new CertStoreParameters[] { dirParameters, tslCertStore};
-
- } catch (TslException e) {
- logger.warn("TSL based CertStore initialisation FAILED.", e);
- logger.warn("Only Directory based CertStore is used ... ");
- parameters = new CertStoreParameters[] { dirParameters };
- }
-
- } else {
- logger.info("Trust-Status List support is not active. Use only Directory based CertStore.");
- parameters = new CertStoreParameters[] { dirParameters };
-
- }
-
- }
+ }
- /**
- * @see iaik.pki.store.certstore.CertStoreConfiguration#getParameters()
- */
- public CertStoreParameters[] getParameters() {
- return parameters;
- }
+ /**
+ * @see iaik.pki.store.certstore.CertStoreConfiguration#getParameters()
+ */
+ @Override
+ public CertStoreParameters[] getParameters() {
+ return parameters;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java
index dff78d6..891f078 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ConfigurationDataImpl.java
@@ -21,43 +21,41 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import iaik.logging.LoggerConfig;
-import iaik.pki.PKIConfiguration;
-import iaik.server.ConfigurationData;
-
+import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.config.HardwareCryptoModule;
import at.gv.egovernment.moa.spss.server.config.HardwareKeyModule;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.config.SoftwareKeyModule;
+import iaik.logging.LoggerConfig;
+import iaik.pki.PKIConfiguration;
+import iaik.server.ConfigurationData;
/**
- * An implementation of the <code>ConfigurationData</code> interface using
- * MOA configuration data.
- *
+ * An implementation of the <code>ConfigurationData</code> interface using MOA
+ * configuration data.
+ *
* @see iaik.server.ConfigurationData
* @author Patrick Peck
* @version $Id$
*/
public class ConfigurationDataImpl implements ConfigurationData {
/** PKI configuration data. */
- private PKIConfiguration pkiConfiguration;
+ private final PKIConfiguration pkiConfiguration;
/** Crypto modules configuration data. */
- private List cryptoModuleConfigurations;
+ private final List cryptoModuleConfigurations;
/** Key modules configuration data. */
- private List keyModuleConfigurations;
+ private final List keyModuleConfigurations;
/** Logging configuration data. */
- private LoggerConfig loggerConfig;
+ private final LoggerConfig loggerConfig;
/**
* Create a new <code>ConfigurationDataImpl</code>.
- *
+ *
* @param config The underlying MOA configuration data.
*/
public ConfigurationDataImpl(ConfigurationProvider config) {
@@ -69,54 +67,55 @@ public class ConfigurationDataImpl implements ConfigurationData {
/**
* Build the list of <code>CryptoModuleConfiguration</code>s.
- *
+ *
* @param config The underlying MOA configuration data.
- * @return The list of <code>CryptoModuleConfiguration</code>s configured in
- * the MOA configuration.
+ * @return The list of <code>CryptoModuleConfiguration</code>s configured in the
+ * MOA configuration.
*/
private List buildCryptoModuleConfigurations(ConfigurationProvider config) {
- List modules = new ArrayList();
- Iterator iter = config.getHardwareCryptoModules().iterator();
-
+ final List modules = new ArrayList();
+ final Iterator iter = config.getHardwareCryptoModules().iterator();
+
while (iter.hasNext()) {
- HardwareCryptoModule module = (HardwareCryptoModule) iter.next();
+ final HardwareCryptoModule module = (HardwareCryptoModule) iter.next();
modules.add(new HardwareCryptoModuleConfigurationImpl(module));
}
-
+
return modules;
}
-
+
/**
* Build the list of <code>KeyModuleConfiguration</code>s.
- *
+ *
* @param config The underlying MOA configuration data.
* @return The list of <code>KeyModuleConfiguration</code>s configured in the
- * MOA configuration.
+ * MOA configuration.
*/
private List buildKeyModuleConfigurations(ConfigurationProvider config) {
- List keys = new ArrayList();
+ final List keys = new ArrayList();
Iterator iter;
-
+
// add the hardware keys
iter = config.getHardwareKeyModules().iterator();
while (iter.hasNext()) {
- HardwareKeyModule key = (HardwareKeyModule) iter.next();
+ final HardwareKeyModule key = (HardwareKeyModule) iter.next();
keys.add(new HardwareKeyModuleConfigurationImpl(key));
}
-
+
// add the software keys
iter = config.getSoftwareKeyModules().iterator();
while (iter.hasNext()) {
- SoftwareKeyModule key = (SoftwareKeyModule) iter.next();
+ final SoftwareKeyModule key = (SoftwareKeyModule) iter.next();
keys.add(new SoftwareKeyModuleConfigurationImpl(key));
}
-
+
return keys;
}
/**
* @see iaik.server.ConfigurationData#getPKIConfiguration()
*/
+ @Override
public PKIConfiguration getPKIConfiguration() {
return pkiConfiguration;
}
@@ -124,6 +123,7 @@ public class ConfigurationDataImpl implements ConfigurationData {
/**
* @see iaik.server.ConfigurationData#getCryptoModuleConfigurations()
*/
+ @Override
public List getCryptoModuleConfigurations() {
return cryptoModuleConfigurations;
}
@@ -131,6 +131,7 @@ public class ConfigurationDataImpl implements ConfigurationData {
/**
* @see iaik.server.ConfigurationData#getKeyModuleConfigurations()
*/
+ @Override
public List getKeyModuleConfigurations() {
return keyModuleConfigurations;
}
@@ -138,6 +139,7 @@ public class ConfigurationDataImpl implements ConfigurationData {
/**
* @see iaik.server.ConfigurationData#getLoggerConfig()
*/
+ @Override
public LoggerConfig getLoggerConfig() {
return loggerConfig;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java
index f4658a2..22cceeb 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DataBaseArchiveParameterImpl.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import iaik.pki.store.revocation.archive.DataBaseArchiveParameters;
/**
* An implementation of the <code>DataBaseArchiveParameter</code> interface.
- *
+ *
* @see iaik.pki.store.revocation.archive.db.DataBaseArchiveParameter
* @author Patrick Peck
* @version $Id$
@@ -36,11 +35,11 @@ import iaik.pki.store.revocation.archive.DataBaseArchiveParameters;
public class DataBaseArchiveParameterImpl implements DataBaseArchiveParameters {
/** The JDBC URL for accessing the archive. */
- private String jDBCUrl;
+ private final String jDBCUrl;
/**
* Create a new <code>DataBaseArchiveParameterImpl</code>.
- *
+ *
* @param jDBCUrl The JDBC URL of the archive.
*/
public DataBaseArchiveParameterImpl(String jDBCUrl) {
@@ -50,6 +49,7 @@ public class DataBaseArchiveParameterImpl implements DataBaseArchiveParameters {
/**
* @see iaik.pki.store.revocation.archive.db.DataBaseArchiveParameter#getJDBCUrl()
*/
+ @Override
public String getJDBCUrl() {
return jDBCUrl;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java
index 39da9cf..e48c7e7 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/DirectoryCertStoreParametersImpl.java
@@ -21,50 +21,48 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import java.util.Collections;
import java.util.Set;
-import iaik.pki.store.certstore.CertStoreParameters;
import iaik.pki.store.certstore.CertStoreTypes;
import iaik.pki.store.certstore.directory.DirectoryCertStoreParameters;
/**
* An implementation of the <code>DirectoryCertStoreParameters</code> interface.
- *
+ *
* @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters
* @author Patrick Peck
* @version $Id$
*/
public class DirectoryCertStoreParametersImpl
- implements DirectoryCertStoreParameters {
+ implements DirectoryCertStoreParameters {
/** The root directory of the <code>CertStore</code>. */
- private String rootDirectory;
+ private final String rootDirectory;
/** Whether a new directory may be created. */
- private boolean createNew;
+ private final boolean createNew;
/** The <code>CertStore</code> ID. */
- private String id;
+ private final String id;
/** Whether the <code>CertStore</code> is read-only. */
- private boolean readOnly;
+ private final boolean readOnly;
/**
* Create a new <code>DirectoryCertStoreParameterImpl</code>.
- *
- * @param id The <code>CertStore</code> ID.
+ *
+ * @param id The <code>CertStore</code> ID.
* @param rootDirectory The root directory of the <code>CertStore</code>.
- * @param createNew Whether a new directory may be created.
- * @param readOnly Whether the <code>CertStore</code> is read-only.
+ * @param createNew Whether a new directory may be created.
+ * @param readOnly Whether the <code>CertStore</code> is read-only.
*/
public DirectoryCertStoreParametersImpl(
- String id,
- String rootDirectory,
- boolean createNew,
- boolean readOnly) {
-
- this.id = id;
+ String id,
+ String rootDirectory,
+ boolean createNew,
+ boolean readOnly) {
+
+ this.id = id;
this.rootDirectory = rootDirectory;
this.createNew = createNew;
this.readOnly = readOnly;
@@ -73,6 +71,7 @@ public class DirectoryCertStoreParametersImpl
/**
* @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#getRootDirectory()
*/
+ @Override
public String getRootDirectory() {
return rootDirectory;
}
@@ -80,6 +79,7 @@ public class DirectoryCertStoreParametersImpl
/**
* @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#createNew()
*/
+ @Override
public boolean createNew() {
return createNew;
}
@@ -87,6 +87,7 @@ public class DirectoryCertStoreParametersImpl
/**
* @see iaik.pki.store.certstore.CertStoreParameters#getId()
*/
+ @Override
public String getId() {
return id;
}
@@ -94,6 +95,7 @@ public class DirectoryCertStoreParametersImpl
/**
* @see iaik.pki.store.certstore.CertStoreParameters#isReadOnly()
*/
+ @Override
public boolean isReadOnly() {
return readOnly;
}
@@ -102,14 +104,15 @@ public class DirectoryCertStoreParametersImpl
* @return <code>CertStoreTypes.DIRECTORY</code>
* @see iaik.pki.store.certstore.CertStoreParameters#getType()
*/
+ @Override
public String getType() {
return CertStoreTypes.DIRECTORY;
}
-@Override
-public Set getVirtualStores() {
- // TODO AFITZEK IMPLEMENT THIS METHOD
- return Collections.EMPTY_SET;
-}
+ @Override
+ public Set getVirtualStores() {
+ // TODO AFITZEK IMPLEMENT THIS METHOD
+ return Collections.EMPTY_SET;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java
index c9904c5..6275e08 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareCryptoModuleConfigurationImpl.java
@@ -21,32 +21,30 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
-import iaik.server.modules.crypto.HardwareCryptoModuleConfiguration;
-
import at.gv.egovernment.moa.spss.server.config.HardwareCryptoModule;
+import iaik.server.modules.crypto.HardwareCryptoModuleConfiguration;
/**
* An implementation of the <code>HardwareCryptoModuleConfiguration</code>
* wrapping a <code>HardwareCryptoModule</code> from the MOA configuration.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class HardwareCryptoModuleConfigurationImpl
- implements HardwareCryptoModuleConfiguration {
-
- /** The wrapped <code>HardwareCryptoModule</code>. */
- private HardwareCryptoModule module;
-
+ implements HardwareCryptoModuleConfiguration {
+
+ /** The wrapped <code>HardwareCryptoModule</code>. */
+ private final HardwareCryptoModule module;
+
/**
* Create a new <code>HardwareCryptoModuleConfigurationImpl</code>.
- *
+ *
* @param module The <code>HardwareCryptoModule</code> from the underlying MOA
- * configuration.
- */
+ * configuration.
+ */
public HardwareCryptoModuleConfigurationImpl(HardwareCryptoModule module) {
this.module = module;
}
@@ -54,6 +52,7 @@ public class HardwareCryptoModuleConfigurationImpl
/**
* @see iaik.server.modules.crypto.HardwareCryptoModuleConfiguration#getModuleName()
*/
+ @Override
public String getModuleName() {
return module.getName();
}
@@ -61,6 +60,7 @@ public class HardwareCryptoModuleConfigurationImpl
/**
* @see iaik.server.modules.crypto.HardwareCryptoModuleConfiguration#getSlotID()
*/
+ @Override
public String getSlotID() {
return module.getSlotID();
}
@@ -68,6 +68,7 @@ public class HardwareCryptoModuleConfigurationImpl
/**
* @see iaik.server.modules.crypto.HardwareCryptoModuleConfiguration#getUserPIN()
*/
+ @Override
public char[] getUserPIN() {
return module.getUserPIN().toCharArray();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java
index 05f5633..9b37c60 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/HardwareKeyModuleConfigurationImpl.java
@@ -21,34 +21,32 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
-import iaik.server.modules.keys.HardwareKeyModuleConfiguration;
-
import at.gv.egovernment.moa.spss.server.config.HardwareKeyModule;
+import iaik.server.modules.keys.HardwareKeyModuleConfiguration;
/**
* An implementation of the <code>HardwareKeyModuleConfiguration</code>
* interface wrapping a <code>HardwareKeyModule</code> from the MOA
* configuration.
- *
+ *
* @see iaik.server.modules.keys.HardwareKeyModuleConfiguration
* @author Patrick Peck
* @version $Id$
*/
public class HardwareKeyModuleConfigurationImpl
- extends AbstractKeyModuleConfigurationImpl
- implements HardwareKeyModuleConfiguration {
+ extends AbstractKeyModuleConfigurationImpl
+ implements HardwareKeyModuleConfiguration {
/** The wrapped <code>HardwareKeyModule</code>. */
- private HardwareKeyModule keyModule;
+ private final HardwareKeyModule keyModule;
/**
* Create a new <code>HardwareKeyModuleConfigurationImpl</code>.
- *
- * @param keyModule The <code>HardwareKeyModule</code> from the underlying
- * MOA configuration.
+ *
+ * @param keyModule The <code>HardwareKeyModule</code> from the underlying MOA
+ * configuration.
*/
public HardwareKeyModuleConfigurationImpl(HardwareKeyModule keyModule) {
super(keyModule.getId());
@@ -58,6 +56,7 @@ public class HardwareKeyModuleConfigurationImpl
/**
* @see iaik.server.modules.keys.HardwareKeyModuleConfiguration#getModuleName()
*/
+ @Override
public String getModuleName() {
return keyModule.getName();
}
@@ -65,6 +64,7 @@ public class HardwareKeyModuleConfigurationImpl
/**
* @see iaik.server.modules.keys.HardwareKeyModuleConfiguration#getSlotID()
*/
+ @Override
public String getSlotID() {
return keyModule.getSlotID();
}
@@ -72,6 +72,7 @@ public class HardwareKeyModuleConfigurationImpl
/**
* @see iaik.server.modules.keys.HardwareKeyModuleConfiguration#getUserPIN()
*/
+ @Override
public char[] getUserPIN() {
return keyModule.getUserPIN().toCharArray();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java
index 00ea64d..8ca19e4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/IaikConfigurator.java
@@ -21,30 +21,18 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
-import iaik.cms.IaikCCProvider;
-import iaik.esi.sva.Configuration;
-import iaik.logging.LogFactory;
-import iaik.pki.store.revocation.RevocationFactory;
-import iaik.pki.store.revocation.RevocationSourceStore;
-import iaik.pki.store.truststore.TrustStoreFactory;
-import iaik.security.ec.provider.ECCelerate;
-import iaik.server.ConfigurationData;
-import iaik.server.Configurator;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-
-import java.security.Provider;
-import java.security.Security;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.slf4j.LoggerFactory;
+
import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.config.KeyGroup;
@@ -55,78 +43,103 @@ import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moa.spss.util.SecProviderUtils;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.logging.LogFactory;
+import iaik.pki.store.revocation.RevocationFactory;
+import iaik.pki.store.revocation.RevocationSourceStore;
+import iaik.pki.store.truststore.TrustStoreFactory;
+import iaik.server.ConfigurationData;
+import iaik.server.Configurator;
+import iaik.server.modules.keys.KeyEntryID;
+import iaik.server.modules.keys.KeyModule;
+import iaik.server.modules.keys.KeyModuleFactory;
/**
* A class responsible for configuring the IAIK MOA modules.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class IaikConfigurator {
+ private static final org.slf4j.Logger logger = LoggerFactory.getLogger(IaikConfigurator.class);
+
/** The warnings encountered during configuration. */
private List warnings = new ArrayList();
/**
* Configure the IAIK MOA subsystem.
- *
- *
+ *
+ *
* @param moaConfig The underlying MOA configuration.
* @return Returns the config data of the underlying MOA subsystem
- * @throws ConfigurationException An error occurred configuring the IAIK
- * MOA subsystem.
+ * @throws ConfigurationException An error occurred configuring the IAIK MOA
+ * subsystem.
*/
public ConfigurationData configure(ConfigurationProvider moaConfig)
- throws ConfigurationException {
- ConfigurationData configData = new ConfigurationDataImpl(moaConfig);
-
+ throws ConfigurationException {
+ final ConfigurationData configData = new ConfigurationDataImpl(moaConfig);
+
warnings = new ArrayList();
try {
- TransactionId transId = new TransactionId("IaikConfigurator");
-
- //iaik.esi.sva.Configuration config = new Configuration(IaikConfigurator.class.getResourceAsStream("/sva.config"));
-
- //SecProviderUtils.dumpSecProviders("Starting configuration");
-
+ final TransactionId transId = new TransactionId("IaikConfigurator");
+
+ // iaik.esi.sva.Configuration config = new
+ // Configuration(IaikConfigurator.class.getResourceAsStream("/sva.config"));
+
+ // SecProviderUtils.dumpSecProviders("Starting configuration");
+
LogFactory.configure(configData.getLoggerConfig());
-
+
try {
- iaik.pki.Configurator.initCommon(configData.getLoggerConfig(),
- transId);
- //SecProviderUtils.dumpSecProviders("initCommon");
- String certStoreRoot = moaConfig.getCertStoreLocation();
- CertStoreConverter.convert(certStoreRoot, transId);
+ iaik.pki.Configurator.initCommon(configData.getLoggerConfig(),
+ transId);
+ // SecProviderUtils.dumpSecProviders("initCommon");
+ final String certStoreRoot = moaConfig.getCertStoreLocation();
+ CertStoreConverter.convert(certStoreRoot, transId);
} finally {
- //Security.removeProvider(ECCelerate.getInstance().getName());
+ // Security.removeProvider(ECCelerate.getInstance().getName());
}
-
+
Configurator.init(configData, transId);
-
+
SecProviderUtils.dumpSecProviders("Fully configured!");
-
- // Set customized CRL retriever to overcome a classloader problem when MOA is deployed in Tomcat
- RevocationSourceStore rss = RevocationFactory.getInstance(transId).getRevocationSourceStore();
- //rss.setRetriever(new CRLRetriever(), RevocationSourceTypes.CRL);
- if ((moaConfig.getSoftwareKeyModules().size() > 0) || (moaConfig.getHardwareKeyModules().size() > 0)) {
+
+ // Set customized CRL retriever to overcome a classloader problem when MOA is
+ // deployed in Tomcat
+ final RevocationSourceStore rss = RevocationFactory.getInstance(transId).getRevocationSourceStore();
+ // rss.setRetriever(new CRLRetriever(), RevocationSourceTypes.CRL);
+ if (moaConfig.getSoftwareKeyModules().size() > 0 || moaConfig.getHardwareKeyModules().size() > 0) {
dumpKeyEntryIDs();
}
checkKeyGroupConfig(moaConfig);
TrustStoreFactory.reset();
-
+
return configData;
- } catch (iaik.server.ConfigurationException e) {
+ } catch (final iaik.server.ConfigurationException e) {
+ logException(e);
throw new ConfigurationException("config.08", null, e);
- } catch (Throwable t) {
+
+ } catch (final Throwable t) {
+ logException(t);
throw new ConfigurationException("config.08", null, t);
+
}
}
+ private void logException(Throwable e) {
+ final StringWriter out = new StringWriter();
+ final PrintWriter writer = new PrintWriter(out);
+ e.printStackTrace(writer);
+ logger.error("IAIK_Module error: {}", out.toString());
+
+ }
+
/**
* Return the warnings encountered during configuration.
- *
+ *
* @return The warnings.
- */
+ */
public List getWarnings() {
return warnings;
}
@@ -136,71 +149,71 @@ public class IaikConfigurator {
* <code>KeyModule</code>s to the log file.
*/
private void dumpKeyEntryIDs() {
- MessageProvider msg = MessageProvider.getInstance();
- KeyModule module = KeyModuleFactory.getInstance(new TransactionId("dump"));
- Set keyEntryIds = module.getPrivateKeyEntryIDs();
+ final MessageProvider msg = MessageProvider.getInstance();
+ final KeyModule module = KeyModuleFactory.getInstance(new TransactionId("dump"));
+ final Set keyEntryIds = module.getPrivateKeyEntryIDs();
Iterator iter;
for (iter = keyEntryIds.iterator(); iter.hasNext();) {
- KeyEntryID keyEntryId = (KeyEntryID) iter.next();
+ final KeyEntryID keyEntryId = (KeyEntryID) iter.next();
Logger.info(
- new LogMsg(msg.getMessage("config.19", new Object[] { keyEntryId })));
+ new LogMsg(msg.getMessage("config.19", new Object[] { keyEntryId })));
}
}
/**
- * Check that each key group entry in each key group can be resolved to a
+ * Check that each key group entry in each key group can be resolved to a
* KeyEntryID.
- *
+ *
* Logs a warning for each key group entry that cannot be resolved.
- *
+ *
* @param moaConfig The MOA configuration to check.
*/
private void checkKeyGroupConfig(ConfigurationProvider moaConfig) {
- Map keyGroups = moaConfig.getKeyGroups();
+ final Map keyGroups = moaConfig.getKeyGroups();
Iterator iter;
for (iter = keyGroups.values().iterator(); iter.hasNext();) {
- KeyGroup keyGroup = (KeyGroup) iter.next();
- Set keyGroupEntries = keyGroup.getKeyGroupEntries();
+ final KeyGroup keyGroup = (KeyGroup) iter.next();
+ final Set keyGroupEntries = keyGroup.getKeyGroupEntries();
Iterator kgIter;
for (kgIter = keyGroupEntries.iterator(); kgIter.hasNext();) {
- KeyGroupEntry entry = (KeyGroupEntry) kgIter.next();
+ final KeyGroupEntry entry = (KeyGroupEntry) kgIter.next();
if (!findKeyEntryID(entry)) {
warn(
- "config.31",
- new Object[] {
- keyGroup.getId(),
- entry.getModuleID(),
- entry.getIssuerDN(),
- entry.getSerialNumber()});
+ "config.31",
+ new Object[] {
+ keyGroup.getId(),
+ entry.getModuleID(),
+ entry.getIssuerDN(),
+ entry.getSerialNumber() });
}
}
}
}
/**
- * Find out that a certain KeyGroupEntry could be resolved to a KeyEntryID
- * by the Configurator.
+ * Find out that a certain KeyGroupEntry could be resolved to a KeyEntryID by
+ * the Configurator.
*
* @param keyGroupEntry The key group entry to find.
* @return <code>true</code>, if the <code>keyGroupEntry</code> could be
- * resolved to a <code>KeyEntryID</code>; otherwise <code>false</code>.
+ * resolved to a <code>KeyEntryID</code>; otherwise <code>false</code>.
*/
private boolean findKeyEntryID(KeyGroupEntry keyGroupEntry) {
- KeyModule module = KeyModuleFactory.getInstance(new TransactionId("check"));
- Set keyEntryIDs = module.getPrivateKeyEntryIDs();
+ final KeyModule module = KeyModuleFactory.getInstance(new TransactionId("check"));
+ final Set keyEntryIDs = module.getPrivateKeyEntryIDs();
Iterator iter;
for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
- KeyEntryID entry = (KeyEntryID) iter.next();
+ final KeyEntryID entry = (KeyEntryID) iter.next();
if (entry.getCertificateIssuer().equals(keyGroupEntry.getIssuerDN())
- && entry.getCertificateSerialNumber().equals(
- keyGroupEntry.getSerialNumber())
- && entry.getModuleID().equals(keyGroupEntry.getModuleID())) {
+ && entry.getCertificateSerialNumber().equals(
+ keyGroupEntry.getSerialNumber())
+ && entry.getModuleID().equals(keyGroupEntry.getModuleID())) {
return true;
}
}
@@ -210,14 +223,14 @@ public class IaikConfigurator {
/**
* Log a warning.
- *
+ *
* @param messageId The message ID.
- * @param args Additional parameters for the message.
+ * @param args Additional parameters for the message.
* @see at.gv.egovernment.moa.spss.server.util.MessageProvider
*/
private void warn(String messageId, Object[] args) {
- MessageProvider msg = MessageProvider.getInstance();
- String txt = msg.getMessage(messageId, args);
+ final MessageProvider msg = MessageProvider.getInstance();
+ final String txt = msg.getMessage(messageId, args);
Logger.warn(new LogMsg(txt));
warnings.add(txt);
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java
index 317fcca..7ba2122 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/LoggerConfigImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import java.util.Properties;
@@ -32,24 +31,27 @@ import iaik.logging.LoggerConfig;
/**
* Default implementation of the <code>LoggerConfig</code> interface.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class LoggerConfigImpl implements LoggerConfig {
-
+
/** The implementation of iaik.logging.LogFactory. */
- private static final String DEFAULT_IMPLEMENTATION =
- "at.gv.egovernment.moa.spss.server.logging.IaikLogFactory";
+ private static final String DEFAULT_IMPLEMENTATION =
+ "at.gv.egovernment.moa.spss.server.logging.IaikLogFactory";
+ @Override
public String getFactory() {
return DEFAULT_IMPLEMENTATION;
}
+ @Override
public Properties getProperties() throws LogConfigurationException {
return new Properties();
}
+ @Override
public String getNodeId() {
return LoggingContextManager.getInstance().getLoggingContext().getNodeID();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java
index 6341609..d54bcfd 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/PKIConfigurationImpl.java
@@ -23,93 +23,96 @@
package at.gv.egovernment.moa.spss.server.iaik.config;
+import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import iaik.pki.PKIConfiguration;
import iaik.pki.pathvalidation.ValidationConfiguration;
import iaik.pki.revocation.RevocationConfiguration;
import iaik.pki.store.certstore.CertStoreConfiguration;
import iaik.pki.store.revocation.archive.ArchiveConfiguration;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
/**
* An implementation of the <code>PKIConfiguration</code> interface using data
* from the MOA configuration.
- *
+ *
* @see iaik.pki.PKIConfiguration
* @author Patrick Peck
* @version $Id$
*/
public class PKIConfigurationImpl implements PKIConfiguration {
- /** The <code>CertStore</code> configuration. */
- private CertStoreConfiguration certStoreConfiguration;
- /** The revocation checking configuration. */
- private RevocationConfiguration revocationConfiguration;
- /** The revocation archive configuration. */
- private ArchiveConfiguration archiveConfiguration;
- /** The certificate validation configuration. */
- private ValidationConfiguration validationConfiguration;
- private int connectionTimeout;
- private int readTimeout;
+ /** The <code>CertStore</code> configuration. */
+ private final CertStoreConfiguration certStoreConfiguration;
+ /** The revocation checking configuration. */
+ private final RevocationConfiguration revocationConfiguration;
+ /** The revocation archive configuration. */
+ private ArchiveConfiguration archiveConfiguration;
+ /** The certificate validation configuration. */
+ private final ValidationConfiguration validationConfiguration;
+ private final int connectionTimeout;
+ private final int readTimeout;
- /**
- * Create a new <code>PKIConfigurationImpl</code>.
- *
- * @param config
- * The underlying MOA configuration which will be used to build
- * the configuration data contained in this object.
- */
- public PKIConfigurationImpl(ConfigurationProvider config) {
+ /**
+ * Create a new <code>PKIConfigurationImpl</code>.
+ *
+ * @param config The underlying MOA configuration which will be used to build
+ * the configuration data contained in this object.
+ */
+ public PKIConfigurationImpl(ConfigurationProvider config) {
- this.certStoreConfiguration = new CertStoreConfigurationImpl(config);
- this.revocationConfiguration = new RevocationConfigurationImpl(config);
+ this.certStoreConfiguration = new CertStoreConfigurationImpl(config);
+ this.revocationConfiguration = new RevocationConfigurationImpl(config);
- boolean archiveInfo = config.getEnableRevocationArchiving();
- if (archiveInfo) {
- this.archiveConfiguration = new ArchiveConfigurationImpl(config);
- } else {
- this.archiveConfiguration = null;
- }
+ final boolean archiveInfo = config.getEnableRevocationArchiving();
+ if (archiveInfo) {
+ this.archiveConfiguration = new ArchiveConfigurationImpl(config);
+ } else {
+ this.archiveConfiguration = null;
+ }
- this.validationConfiguration = new ValidationConfigurationImpl(config);
- this.connectionTimeout = config.getConnectionTimeout();
- this.readTimeout = config.getReadTimeout();
- }
+ this.validationConfiguration = new ValidationConfigurationImpl(config);
+ this.connectionTimeout = config.getConnectionTimeout();
+ this.readTimeout = config.getReadTimeout();
+ }
- /**
- * @see iaik.pki.PKIConfiguration#getCertStoreConfiguration()
- */
- public CertStoreConfiguration getCertStoreConfiguration() {
- return certStoreConfiguration;
- }
+ /**
+ * @see iaik.pki.PKIConfiguration#getCertStoreConfiguration()
+ */
+ @Override
+ public CertStoreConfiguration getCertStoreConfiguration() {
+ return certStoreConfiguration;
+ }
- /**
- * @see iaik.pki.PKIConfiguration#getRevocationConfiguration()
- */
- public RevocationConfiguration getRevocationConfiguration() {
- return revocationConfiguration;
- }
+ /**
+ * @see iaik.pki.PKIConfiguration#getRevocationConfiguration()
+ */
+ @Override
+ public RevocationConfiguration getRevocationConfiguration() {
+ return revocationConfiguration;
+ }
- /**
- * @see iaik.pki.PKIConfiguration#getArchiveConfiguration()
- */
- public ArchiveConfiguration getArchiveConfiguration() {
- return archiveConfiguration;
- }
+ /**
+ * @see iaik.pki.PKIConfiguration#getArchiveConfiguration()
+ */
+ @Override
+ public ArchiveConfiguration getArchiveConfiguration() {
+ return archiveConfiguration;
+ }
- /**
- * @see iaik.pki.PKIConfiguration#getValidationConfiguration()
- */
- public ValidationConfiguration getValidationConfiguration() {
- return validationConfiguration;
- }
+ /**
+ * @see iaik.pki.PKIConfiguration#getValidationConfiguration()
+ */
+ @Override
+ public ValidationConfiguration getValidationConfiguration() {
+ return validationConfiguration;
+ }
- @Override
- public int getConnectTimeout() {
- return this.connectionTimeout;
- }
+ @Override
+ public int getConnectTimeout() {
+ return this.connectionTimeout;
+ }
- @Override
- public int getReadTimeout() {
- return this.readTimeout;
- }
+ @Override
+ public int getReadTimeout() {
+ return this.readTimeout;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java
index 5df84c9..6aa20cf 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/RevocationConfigurationImpl.java
@@ -23,9 +23,6 @@
package at.gv.egovernment.moa.spss.server.iaik.config;
-import iaik.pki.revocation.RevocationConfiguration;
-import iaik.pki.revocation.dbcrl.config.DBCrlConfig;
-
import java.security.cert.X509Certificate;
import java.util.Collections;
import java.util.Date;
@@ -33,81 +30,85 @@ import java.util.Map;
import java.util.Set;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
+import iaik.pki.revocation.RevocationConfiguration;
+import iaik.pki.revocation.dbcrl.config.DBCrlConfig;
/**
* An implementation of the <code>RevocationConfiguration</code> interface using
* MOA configuration data.
- *
+ *
* @see iaik.pki.revocation.RevocationConfiguration
* @author Patrick Peck
* @version $Id$
*/
-public class RevocationConfigurationImpl extends AbstractObservableConfiguration implements RevocationConfiguration {
-
- /**
- * The <code>ConfigurationProvider</code> to read the configuration data
- * from.
- */
- private ConfigurationProvider config;
-
- /**
- * Create a new <code>RevocationConfigurationImpl</code>.
- *
- * @param config
- * The underlying MOA configuration containing the configuration
- * data.
- */
- public RevocationConfigurationImpl(ConfigurationProvider config) {
- this.config = config;
- }
-
- /**
- * @see iaik.pki.revocation.RevocationConfiguration#getAlternativeDistributionPoints
- */
- public Set getAlternativeDistributionPoints(X509Certificate cert, X509Certificate issuer, Date date) {
- return config.getDistributionPoints(cert);
- }
-
- /**
- * @see iaik.pki.revocation.RevocationConfiguration#archiveRevocationInfo(java.lang.String,
- * java.lang.String)
- */
- public boolean archiveRevocationInfo(String type, String uri) {
- return config.getEnableRevocationArchiving();
- }
-
- /**
- * @see iaik.pki.revocation.RevocationConfiguration#getCrlRetentionInterval(java.lang.String)
- */
- public Integer getCrlRetentionInterval(String issuername) {
- Map map = config.getCrlRetentionIntervals();
- Integer interval = (Integer) map.get(issuername);
-
- return interval;
- }
-
- @Override
- public DBCrlConfig getDataBaseCRLConfig() {
- // TODO AFITZEK IMPLEMENT THIS METHOD
- return null;
- }
-
- @Override
- public boolean getKeepRevocationInfo() {
- // TODO AFITZEK IMPLEMENT THIS METHOD
- return false;
- }
-
- @Override
- public Set getPositiveOCSPResponders() {
- // TODO AFITZEK IMPLEMENT THIS METHOD
- return Collections.EMPTY_SET;
- }
-
- @Override
- public boolean skipIndirectCRLCheckForAlternativeDistributionPoints() {
- // TODO AFITZEK IMPLEMENT THIS METHOD
- return false;
- }
+public class RevocationConfigurationImpl extends AbstractObservableConfiguration implements
+ RevocationConfiguration {
+
+ /**
+ * The <code>ConfigurationProvider</code> to read the configuration data from.
+ */
+ private final ConfigurationProvider config;
+
+ /**
+ * Create a new <code>RevocationConfigurationImpl</code>.
+ *
+ * @param config The underlying MOA configuration containing the configuration
+ * data.
+ */
+ public RevocationConfigurationImpl(ConfigurationProvider config) {
+ this.config = config;
+ }
+
+ /**
+ * @see iaik.pki.revocation.RevocationConfiguration#getAlternativeDistributionPoints
+ */
+ @Override
+ public Set getAlternativeDistributionPoints(X509Certificate cert, X509Certificate issuer, Date date) {
+ return config.getDistributionPoints(cert);
+ }
+
+ /**
+ * @see iaik.pki.revocation.RevocationConfiguration#archiveRevocationInfo(java.lang.String,
+ * java.lang.String)
+ */
+ @Override
+ public boolean archiveRevocationInfo(String type, String uri) {
+ return config.getEnableRevocationArchiving();
+ }
+
+ /**
+ * @see iaik.pki.revocation.RevocationConfiguration#getCrlRetentionInterval(java.lang.String)
+ */
+ @Override
+ public Integer getCrlRetentionInterval(String issuername) {
+ final Map map = config.getCrlRetentionIntervals();
+ final Integer interval = (Integer) map.get(issuername);
+
+ return interval;
+ }
+
+ @Override
+ public DBCrlConfig getDataBaseCRLConfig() {
+ // TODO AFITZEK IMPLEMENT THIS METHOD
+ return null;
+ }
+
+ @Override
+ public boolean getKeepRevocationInfo() {
+ // TODO AFITZEK IMPLEMENT THIS METHOD
+ return false;
+ }
+
+ @Override
+ public Set getPositiveOCSPResponders() {
+ // TODO AFITZEK IMPLEMENT THIS METHOD
+ return Collections.EMPTY_SET;
+ }
+
+ @Override
+ public boolean skipIndirectCRLCheckForAlternativeDistributionPoints() {
+ // TODO AFITZEK IMPLEMENT THIS METHOD
+ return false;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java
index 1aed76e..767b3f2 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/SoftwareKeyModuleConfigurationImpl.java
@@ -21,40 +21,39 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
-import iaik.server.modules.keys.ConfigurationException;
-import iaik.server.modules.keys.SoftwareKeyModuleConfiguration;
import at.gv.egovernment.moa.spss.server.config.SoftwareKeyModule;
import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.server.modules.keys.ConfigurationException;
+import iaik.server.modules.keys.SoftwareKeyModuleConfiguration;
/**
* An implementation of the <code>SoftwareKeyModuleConfiguration</code> wrapping
* a <code>SoftwareKeyModule</code> from the MOA configuration.
- *
+ *
* @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration
* @author Patrick Peck
* @version $Id$
*/
public class SoftwareKeyModuleConfigurationImpl
- extends AbstractKeyModuleConfigurationImpl
- implements SoftwareKeyModuleConfiguration {
+ extends AbstractKeyModuleConfigurationImpl
+ implements SoftwareKeyModuleConfiguration {
/** The wrapped <code>SoftwareKeyModule</code>. */
- private SoftwareKeyModule keyModule;
+ private final SoftwareKeyModule keyModule;
/**
* Create a new <code>SoftwareKeyModuleConfigurationImpl</code>.
- *
+ *
* @param keyModule The <code>SoftwareKeyModule</code> from the underlying MOA
- * configuration.
+ * configuration.
*/
public SoftwareKeyModuleConfigurationImpl(SoftwareKeyModule keyModule) {
super(keyModule.getId());
@@ -64,6 +63,7 @@ public class SoftwareKeyModuleConfigurationImpl
/**
* @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration#getKeyStoreTypeName()
*/
+ @Override
public String getKeyStoreTypeName() {
return KEY_STORE_TYPE_NAME_PKCS12;
}
@@ -71,17 +71,18 @@ public class SoftwareKeyModuleConfigurationImpl
/**
* @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration#getKeyStoreAsStream()
*/
+ @Override
public InputStream getKeyStoreAsStream() {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
try {
- String message =
- msg.getMessage("config.18", new Object[] { keyModule.getFileName()});
+ final String message =
+ msg.getMessage("config.18", new Object[] { keyModule.getFileName() });
Logger.info(new LogMsg(message));
return new FileInputStream(keyModule.getFileName());
- } catch (FileNotFoundException e) {
- String message =
- msg.getMessage("config.09", new Object[] { keyModule.getFileName()});
+ } catch (final FileNotFoundException e) {
+ final String message =
+ msg.getMessage("config.09", new Object[] { keyModule.getFileName() });
throw new ConfigurationException(message, e, null);
}
@@ -90,6 +91,7 @@ public class SoftwareKeyModuleConfigurationImpl
/**
* @see iaik.server.modules.keys.SoftwareKeyModuleConfiguration#getKeyStoreAuthenticationData()
*/
+ @Override
public char[] getKeyStoreAuthenticationData() {
return keyModule.getPassWord().toCharArray();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java
index 9e26fb8..50c3926 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/config/ValidationConfigurationImpl.java
@@ -21,35 +21,34 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.config;
import java.security.cert.X509Certificate;
import java.security.spec.AlgorithmParameterSpec;
-import iaik.pki.pathvalidation.ValidationConfiguration;
-
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
+import iaik.pki.pathvalidation.ValidationConfiguration;
/**
* An implementation of the <code>ValidationConfiguration</code> interface using
* MOA configuration data.
- *
+ *
* @see iaik.pki.pathvalidation.ValidationConfiguration
* @author Patrick Peck
* @version $Id$
*/
public class ValidationConfigurationImpl
- extends AbstractObservableConfiguration
- implements ValidationConfiguration {
+ extends AbstractObservableConfiguration
+ implements ValidationConfiguration {
- /** The <code>ConfigurationProvider</code> to read the configuration data
- * from. */
- private ConfigurationProvider config;
+ /**
+ * The <code>ConfigurationProvider</code> to read the configuration data from.
+ */
+ private final ConfigurationProvider config;
/**
* Create a new <code>ValidationConfigurationImpl</code>.
- *
+ *
* @param config The underlying MOA configuration data.
*/
public ValidationConfigurationImpl(ConfigurationProvider config) {
@@ -59,6 +58,7 @@ public class ValidationConfigurationImpl
/**
* @see iaik.pki.pathvalidation.ValidationConfiguration#getChainingMode(java.security.cert.X509Certificate)
*/
+ @Override
public String getChainingMode(X509Certificate cert) {
return config.getChainingMode(cert);
}
@@ -66,6 +66,7 @@ public class ValidationConfigurationImpl
/**
* @see iaik.pki.pathvalidation.ValidationConfiguration#getPublicKeyParamsAsSpec(java.security.cert.X509Certificate)
*/
+ @Override
public AlgorithmParameterSpec getPublicKeyParamsAsSpec(X509Certificate cert) {
return null;
}
@@ -73,6 +74,7 @@ public class ValidationConfigurationImpl
/**
* @see iaik.pki.pathvalidation.ValidationConfiguration#getPublicKeyParamsAsCert(java.security.cert.X509Certificate)
*/
+ @Override
public X509Certificate getPublicKeyParamsAsCert(X509Certificate cert) {
return null;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java
index 97eb6ef..0032dc6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/PKIProfileImpl.java
@@ -23,15 +23,8 @@
package at.gv.egovernment.moa.spss.server.iaik.pki;
-import iaik.pki.PKIProfile;
-import iaik.pki.pathvalidation.ValidationProfile;
-import iaik.pki.revocation.RevocationProfile;
-import iaik.pki.store.truststore.TrustStoreProfile;
-import iaik.pki.store.truststore.TrustStoreTypes;
-
import java.util.Arrays;
-import at.gv.egovernment.moa.sig.tsl.api.ITslService;
import at.gv.egovernment.moa.sig.tsl.exception.TslPKIException;
import at.gv.egovernment.moa.sig.tsl.pki.TslTrustStoreProfile;
import at.gv.egovernment.moa.sig.tsl.pki.chaining.ChainingTrustStoreProfile;
@@ -43,189 +36,195 @@ import at.gv.egovernment.moa.spss.server.iaik.pki.revocation.RevocationProfileIm
import at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore.TrustStoreProfileImpl;
import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.pki.PKIProfile;
+import iaik.pki.pathvalidation.ValidationProfile;
+import iaik.pki.revocation.RevocationProfile;
+import iaik.pki.store.truststore.TrustStoreProfile;
/**
* Implementation of the <code>PKIProfile</code> interface containing
* information needed for certificate path validation. It uses configuration
* data from the MOA configuration.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class PKIProfileImpl implements PKIProfile {
- /** Profile information for revocation checking. */
- private RevocationProfile revocationProfile;
- /** Profile information about the trust profile to use. */
- private TrustStoreProfile trustStoreProfile;
- /** Profile information about the certificate validation. */
- private ValidationProfile validationProfile;
- /**
- * The <code>ConfigurationProvider</code> to read the MOA configuration data
- * from.
- */
- private ConfigurationProvider config;
-
- /**
- * Create a new <code>PKIProfileImpl</code>.
- *
- * @param config
- * The MOA configuration providing configuration data about
- * certificate path validation.
- * @param trustProfileID
- * The trust profile ID denoting the location of the trust store.
- * @throws MOAApplicationException
- * An error occurred building the profile.
- */
- public PKIProfileImpl(ConfigurationProvider config, String trustProfileID) throws MOAApplicationException {
-
- this.config = config;
- setRevocationProfile(new RevocationProfileImpl(config));
- setValidationProfile(new ValidationProfileImpl(config));
-
- //generate TrustStoreProfile from TrustStore configuration
- internalTrustProfileBuilder(trustProfileID);
-
- }
-
-
- private void internalTrustProfileBuilder(String trustProfileId) throws MOAApplicationException {
- TrustProfile tp = (TrustProfile) config.getTrustProfile(trustProfileId);
- if (tp != null) {
- //build directory based trust store as default
-
-
- if (tp.isTSLEnabled()) {
- TslTrustStoreProfile tslTrustStore;
- try {
- if (!TSLServiceFactory.isInitialized()) {
- Logger.error("Can not build TrustProfile:" + trustProfileId
- + " Reason: TrustProfile needs TSL support but TSL client NOT initialized.");
- throw new TslPKIException("Trust Status-List service client is NOT initialized");
-
- }
-
- //build TSL truststore if enabled
- tslTrustStore = TSLServiceFactory.getTSLServiceClient().
- buildTrustStoreProfile(
- tp.getCountries(),
- tp.getAllowedTspStatus(),
- tp.getAllowedTspServiceTypes(),
- trustProfileId + "_TSL");
-
- //build Directory based TrustStore
- TrustStoreProfileImpl directoryTrustStore = new TrustStoreProfileImpl(trustProfileId + "_Directory", tp.getUri());
-
- //generate a virtual truststore that concatenates the TSL TrustStore and the directory TrustStore
- ChainingTrustStoreProfile chainedProfile = new ChainingTrustStoreProfile(
- Arrays.asList(tslTrustStore, directoryTrustStore),
- trustProfileId);
-
- //set this virtual truststore
- setTrustStoreProfile(chainedProfile);
-
- } catch (TslPKIException e) {
- Logger.error("Virtual TSL based TrustProfile generation FAILED.", e);
- throw new MOAApplicationException("2900", new Object[] { trustProfileId });
-
- }
-
- } else
- setTrustStoreProfile(new TrustStoreProfileImpl(trustProfileId, tp.getUri()));
-
- } else {
- throw new MOAApplicationException("2203", new Object[] { trustProfileId });
-
- }
-
- }
-
- /**
- * @see iaik.pki.PKIProfile#autoAddCertificates()
- */
- /*public boolean autoAddCertificates() {
- return useAuthorityInfoAccess() ? true : config.getAutoAddCertificates();
- }*/
-
- /**
- * @see iaik.pki.PKIProfile#getRevocationProfile()
- */
- public RevocationProfile getRevocationProfile() {
- return revocationProfile;
- }
-
- /**
- * Sets the <code>RevocationProfile</code>.
- *
- * @param revocationProfile
- * The <code>RevocationProfile</code> used for revocation
- * checking.
- */
- protected void setRevocationProfile(RevocationProfile revocationProfile) {
- this.revocationProfile = revocationProfile;
- }
-
- /**
- * @see iaik.pki.PKIProfile#getTrustStoreProfile()
- */
- public TrustStoreProfile getTrustStoreProfile() {
- return trustStoreProfile;
- }
-
- /**
- * Sets the <code>TrustStoreProfile</code>.
- *
- * @param trustStoreProfile
- * The <code>TrustStoreProfile</code>.
- */
- protected void setTrustStoreProfile(TrustStoreProfile trustStoreProfile) {
- this.trustStoreProfile = trustStoreProfile;
- }
-
- /**
- * @see iaik.pki.PKIProfile#getValidationProfile()
- */
- public ValidationProfile getValidationProfile() {
- return validationProfile;
- }
-
- /**
- * Sets the <code>ValidationProfile</code>.
- *
- * @param validationProfile
- * The <code>ValidationProfile</code> to set.
- */
- protected void setValidationProfile(ValidationProfile validationProfile) {
- this.validationProfile = validationProfile;
- }
-
- /**
- * @see iaik.pki.PKIProfile#useAuthorityInfoAccess()
- */
- public boolean useAuthorityInfoAccess() {
- return config.getUseAuthorityInfoAccess();
- }
-
- /**
- * @see iaik.pki.PKIProfile#autoAddCertificates()
- */
- @Override
- public int autoAddCertificates() {
- if(config.getAutoAddCertificates()) {
- if (config.getAutoAddEECertificates())
- return PKIProfile.AUTO_ADD_ENABLE;
- else
- return PKIProfile.AUTO_ADD_EE_DISABLE;
-
- } else
- return PKIProfile.AUTO_ADD_DISABLE;
-
- }
-
- @Override
- public TrustStoreProfile getIndirectRevocationTrustStoreProfile() {
- // TODO AFITZEK IMPLEMENT THIS METHOD
- return null;
- }
+ /** Profile information for revocation checking. */
+ private RevocationProfile revocationProfile;
+ /** Profile information about the trust profile to use. */
+ private TrustStoreProfile trustStoreProfile;
+ /** Profile information about the certificate validation. */
+ private ValidationProfile validationProfile;
+ /**
+ * The <code>ConfigurationProvider</code> to read the MOA configuration data
+ * from.
+ */
+ private final ConfigurationProvider config;
+
+ /**
+ * Create a new <code>PKIProfileImpl</code>.
+ *
+ * @param config The MOA configuration providing configuration data
+ * about certificate path validation.
+ * @param trustProfileID The trust profile ID denoting the location of the trust
+ * store.
+ * @throws MOAApplicationException An error occurred building the profile.
+ */
+ public PKIProfileImpl(ConfigurationProvider config, String trustProfileID) throws MOAApplicationException {
+
+ this.config = config;
+ setRevocationProfile(new RevocationProfileImpl(config));
+ setValidationProfile(new ValidationProfileImpl(config));
+
+ // generate TrustStoreProfile from TrustStore configuration
+ internalTrustProfileBuilder(trustProfileID);
+
+ }
+
+ private void internalTrustProfileBuilder(String trustProfileId) throws MOAApplicationException {
+ final TrustProfile tp = config.getTrustProfile(trustProfileId);
+ if (tp != null) {
+ // build directory based trust store as default
+
+ if (tp.isTSLEnabled()) {
+ TslTrustStoreProfile tslTrustStore;
+ try {
+ if (!TSLServiceFactory.isInitialized()) {
+ Logger.error("Can not build TrustProfile:" + trustProfileId
+ + " Reason: TrustProfile needs TSL support but TSL client NOT initialized.");
+ throw new TslPKIException("Trust Status-List service client is NOT initialized");
+
+ }
+
+ // build TSL truststore if enabled
+ tslTrustStore = TSLServiceFactory.getTSLServiceClient().buildTrustStoreProfile(
+ tp.getCountries(),
+ tp.getAllowedTspStatus(),
+ tp.getAllowedTspServiceTypes(),
+ trustProfileId + "_TSL");
+
+ // build Directory based TrustStore
+ final TrustStoreProfileImpl directoryTrustStore = new TrustStoreProfileImpl(trustProfileId
+ + "_Directory", tp.getUri());
+
+ // generate a virtual truststore that concatenates the TSL TrustStore and the
+ // directory TrustStore
+ final ChainingTrustStoreProfile chainedProfile = new ChainingTrustStoreProfile(
+ Arrays.asList(tslTrustStore, directoryTrustStore),
+ trustProfileId);
+
+ // set this virtual truststore
+ setTrustStoreProfile(chainedProfile);
+
+ } catch (final TslPKIException e) {
+ Logger.error("Virtual TSL based TrustProfile generation FAILED.", e);
+ throw new MOAApplicationException("2900", new Object[] { trustProfileId });
+
+ }
+
+ } else {
+ setTrustStoreProfile(new TrustStoreProfileImpl(trustProfileId, tp.getUri()));
+ }
+
+ } else {
+ throw new MOAApplicationException("2203", new Object[] { trustProfileId });
+
+ }
+
+ }
+
+ /**
+ * @see iaik.pki.PKIProfile#autoAddCertificates()
+ */
+ /*
+ * public boolean autoAddCertificates() { return useAuthorityInfoAccess() ? true
+ * : config.getAutoAddCertificates(); }
+ */
+
+ /**
+ * @see iaik.pki.PKIProfile#getRevocationProfile()
+ */
+ @Override
+ public RevocationProfile getRevocationProfile() {
+ return revocationProfile;
+ }
+
+ /**
+ * Sets the <code>RevocationProfile</code>.
+ *
+ * @param revocationProfile The <code>RevocationProfile</code> used for
+ * revocation checking.
+ */
+ protected void setRevocationProfile(RevocationProfile revocationProfile) {
+ this.revocationProfile = revocationProfile;
+ }
+
+ /**
+ * @see iaik.pki.PKIProfile#getTrustStoreProfile()
+ */
+ @Override
+ public TrustStoreProfile getTrustStoreProfile() {
+ return trustStoreProfile;
+ }
+
+ /**
+ * Sets the <code>TrustStoreProfile</code>.
+ *
+ * @param trustStoreProfile The <code>TrustStoreProfile</code>.
+ */
+ protected void setTrustStoreProfile(TrustStoreProfile trustStoreProfile) {
+ this.trustStoreProfile = trustStoreProfile;
+ }
+
+ /**
+ * @see iaik.pki.PKIProfile#getValidationProfile()
+ */
+ @Override
+ public ValidationProfile getValidationProfile() {
+ return validationProfile;
+ }
+
+ /**
+ * Sets the <code>ValidationProfile</code>.
+ *
+ * @param validationProfile The <code>ValidationProfile</code> to set.
+ */
+ protected void setValidationProfile(ValidationProfile validationProfile) {
+ this.validationProfile = validationProfile;
+ }
+
+ /**
+ * @see iaik.pki.PKIProfile#useAuthorityInfoAccess()
+ */
+ @Override
+ public boolean useAuthorityInfoAccess() {
+ return config.getUseAuthorityInfoAccess();
+ }
+
+ /**
+ * @see iaik.pki.PKIProfile#autoAddCertificates()
+ */
+ @Override
+ public int autoAddCertificates() {
+ if (config.getAutoAddCertificates()) {
+ if (config.getAutoAddEECertificates()) {
+ return PKIProfile.AUTO_ADD_ENABLE;
+ } else {
+ return PKIProfile.AUTO_ADD_EE_DISABLE;
+ }
+
+ } else {
+ return PKIProfile.AUTO_ADD_DISABLE;
+ }
+
+ }
+
+ @Override
+ public TrustStoreProfile getIndirectRevocationTrustStoreProfile() {
+ // TODO AFITZEK IMPLEMENT THIS METHOD
+ return null;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java
index 7e62d60..76e1ed0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/pathvalidation/ValidationProfileImpl.java
@@ -21,40 +21,39 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.pki.pathvalidation;
-import iaik.pki.pathvalidation.ValidationProfile;
-
import java.util.Collections;
import java.util.Set;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
+import iaik.pki.pathvalidation.ValidationProfile;
/**
* An implementation of the <code>ValidationProfile</code> interface providing
- * information about certificat path validation.
- *
+ * information about certificat path validation.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ValidationProfileImpl implements ValidationProfile {
- /** The <code>ConfigurationProvider</code> to read the configuration data
- * from. */
- private ConfigurationProvider config;
- private boolean initialAnyPolicyInhibit;
- private boolean initialExplicitPolicy;
- private boolean initialPolicyMappingInhibit;
- private Set initialPolicySet;
- private boolean nameConstraintsProcessing;
- private boolean policyProcessing;
+ /**
+ * The <code>ConfigurationProvider</code> to read the configuration data from.
+ */
+ private final ConfigurationProvider config;
+ private final boolean initialAnyPolicyInhibit;
+ private final boolean initialExplicitPolicy;
+ private final boolean initialPolicyMappingInhibit;
+ private final Set initialPolicySet;
+ private final boolean nameConstraintsProcessing;
+ private final boolean policyProcessing;
/**
* Create a new <code>ValidationProfileImpl</code> object.
- *
+ *
* This objects's fields are preset to the following values:
- *
+ *
* <ul>
* <li><code>initialAnyPolicyInhibit = true</code></li>
* <li><code>initialExplicitPoliy = true</code></li>
@@ -64,9 +63,9 @@ public class ValidationProfileImpl implements ValidationProfile {
* <li><code>nameConstraintsProcessing = false</code></li>
* <li><code>revocationChecking = false</code></li>
* </ul>
- *
- * @param config MOA configuration data for additional configuration
- * information (currently unused).
+ *
+ * @param config MOA configuration data for additional configuration information
+ * (currently unused).
*/
public ValidationProfileImpl(ConfigurationProvider config) {
this.config = config;
@@ -81,6 +80,7 @@ public class ValidationProfileImpl implements ValidationProfile {
/**
* @see iaik.pki.pathvalidation.ValidationProfile#getInitialAnyPolicyInhibit()
*/
+ @Override
public boolean getInitialAnyPolicyInhibit() {
return initialAnyPolicyInhibit;
}
@@ -88,6 +88,7 @@ public class ValidationProfileImpl implements ValidationProfile {
/**
* @see iaik.pki.pathvalidation.ValidationProfile#getInitialExplicitPolicy()
*/
+ @Override
public boolean getInitialExplicitPolicy() {
return initialExplicitPolicy;
}
@@ -95,6 +96,7 @@ public class ValidationProfileImpl implements ValidationProfile {
/**
* @see iaik.pki.pathvalidation.ValidationProfile#getInitialPolicyMappingInhibit()
*/
+ @Override
public boolean getInitialPolicyMappingInhibit() {
return initialPolicyMappingInhibit;
}
@@ -102,6 +104,7 @@ public class ValidationProfileImpl implements ValidationProfile {
/**
* @see iaik.pki.pathvalidation.ValidationProfile#getInitialPolicySet()
*/
+ @Override
public Set getInitialPolicySet() {
return initialPolicySet;
}
@@ -109,6 +112,7 @@ public class ValidationProfileImpl implements ValidationProfile {
/**
* @see iaik.pki.pathvalidation.ValidationProfile#getPolicyProcessing()
*/
+ @Override
public boolean getPolicyProcessing() {
return policyProcessing;
}
@@ -116,6 +120,7 @@ public class ValidationProfileImpl implements ValidationProfile {
/**
* @see iaik.pki.pathvalidation.ValidationProfile#getNameConstraintsProcessing()
*/
+ @Override
public boolean getNameConstraintsProcessing() {
return nameConstraintsProcessing;
}
@@ -123,8 +128,8 @@ public class ValidationProfileImpl implements ValidationProfile {
/**
* @see iaik.pki.pathvalidation.ValidationProfile#getRevocationChecking()
*/
- public boolean getRevocationChecking()
- {
+ @Override
+ public boolean getRevocationChecking() {
return config.getEnableRevocationChecking();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java
index 14627b2..5215131 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/revocation/RevocationProfileImpl.java
@@ -21,37 +21,37 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.pki.revocation;
import java.security.cert.X509Certificate;
+import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import iaik.pki.revocation.RevocationProfile;
import iaik.pki.revocation.RevocationSourceTypes;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
-
/**
* An implementation of the <code>RevocationProfile</code> interface providing
* information about revocation status checking, based on MOA configuration
* data.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class RevocationProfileImpl implements RevocationProfile {
/** The default service order. */
private static final String[] DEFAULT_SERVICE_ORDER =
- { RevocationSourceTypes.CRL, RevocationSourceTypes.OCSP };
- /** The <code>ConfigurationProvider</code> to read the MOA configuration data
- * from. */
- private ConfigurationProvider config;
+ { RevocationSourceTypes.CRL, RevocationSourceTypes.OCSP };
+ /**
+ * The <code>ConfigurationProvider</code> to read the MOA configuration data
+ * from.
+ */
+ private final ConfigurationProvider config;
/** The OCSP request hash algorithm. Currently only "SHA" is supported. */
private static final String oCSPRequestHashAlgorithm = "SHA";
/**
* Create a new <code>RevocationProfileImpl</code>.
- *
+ *
* @param config The MOA configuration data.
*/
public RevocationProfileImpl(ConfigurationProvider config) {
@@ -63,14 +63,15 @@ public class RevocationProfileImpl implements RevocationProfile {
/**
* @see iaik.pki.revocation.RevocationProfile#getMaxRevocationAge(String)
*/
- public long getMaxRevocationAge(String distributionPointUri)
- {
+ @Override
+ public long getMaxRevocationAge(String distributionPointUri) {
return config.getMaxRevocationAge();
}
/**
* @see iaik.pki.revocation.RevocationProfile#getOCSPRequestHashAlgorithm()
*/
+ @Override
public String getOCSPRequestHashAlgorithm() {
return oCSPRequestHashAlgorithm;
}
@@ -78,10 +79,12 @@ public class RevocationProfileImpl implements RevocationProfile {
/**
* @see iaik.pki.revocation.RevocationProfile#getPreferredServiceOrder(java.security.cert.X509Certificate)
*/
- public String[] getPreferredServiceOrder(X509Certificate cert)
- {
- String[] serviceOrder = config.getServiceOrder();
- if (serviceOrder == null || serviceOrder.length == 0) return DEFAULT_SERVICE_ORDER;
+ @Override
+ public String[] getPreferredServiceOrder(X509Certificate cert) {
+ final String[] serviceOrder = config.getServiceOrder();
+ if (serviceOrder == null || serviceOrder.length == 0) {
+ return DEFAULT_SERVICE_ORDER;
+ }
return serviceOrder;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java
index c9f4f28..9ef3764 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/pki/store/truststore/TrustStoreProfileImpl.java
@@ -21,89 +21,82 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
-import iaik.pki.store.truststore.TrustStoreProfile;
-import iaik.pki.store.truststore.TrustStoreTypes;
-import iaik.pki.store.observer.NotificationData;
-import iaik.pki.store.observer.Observer;
-
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.config.TrustProfile;
+import iaik.pki.store.observer.NotificationData;
+import iaik.pki.store.observer.Observer;
+import iaik.pki.store.truststore.TrustStoreProfile;
+import iaik.pki.store.truststore.TrustStoreTypes;
/**
* An implementation of the <code>TrustStoreProfile</code> interface, using data
* from the MOA configuration.
- *
- * @see iaik.pki.store.truststore.TrustStoreProfile
+ *
+ * @see iaik.pki.store.truststore.TrustStoreProfile
* @author Patrick Peck
* @version $Id$
*/
public class TrustStoreProfileImpl implements TrustStoreProfile {
/** The observers of this profile. */
- private List observers = new ArrayList();
-
+ private final List observers = new ArrayList();
+
/**
- * The trust profile identifier.
+ * The trust profile identifier.
*/
private String id_;
-
+
/** The type of the trust profile. */
private String type;
- /** The URI of the trust profile.*/
+ /** The URI of the trust profile. */
private String URI;
-
/**
* Create a new <code>TrustStoreProfileImpl</code>.
- *
- * @param config The MOA configuration data, from which trust store
- * configuration data is read.
+ *
+ * @param config The MOA configuration data, from which trust store
+ * configuration data is read.
* @param trustProfileId The trust profile id on which this
- * <code>TrustStoreProfile</code> is based.
- * @throws MOAApplicationException The <code>trustProfileId</code> could not
- * be found in the MOA configuration.
+ * <code>TrustStoreProfile</code> is based.
+ * @throws MOAApplicationException The <code>trustProfileId</code> could not be
+ * found in the MOA configuration.
*/
public TrustStoreProfileImpl(String trustProfileId, String trustProfileUri)
- throws MOAApplicationException {
- id_ = trustProfileId;
- setURI(trustProfileUri);
- setType(TrustStoreTypes.DIRECTORY);
-
+ throws MOAApplicationException {
+ id_ = trustProfileId;
+ setURI(trustProfileUri);
+ setType(TrustStoreTypes.DIRECTORY);
+
}
-
+
/**
* Create a new <code>TrustStoreProfileImpl</code>.
- *
- * @param config The MOA configuration data, from which trust store
- * configuration data is read.
+ *
+ * @param config The MOA configuration data, from which trust store
+ * configuration data is read.
* @param trustProfileId The trust profile id on which this
- * <code>TrustStoreProfile</code> is based.
- * @throws MOAApplicationException The <code>trustProfileId</code> could not
- * be found in the MOA configuration.
+ * <code>TrustStoreProfile</code> is based.
+ * @throws MOAApplicationException The <code>trustProfileId</code> could not be
+ * found in the MOA configuration.
*/
@Deprecated
public TrustStoreProfileImpl(
- ConfigurationProvider config,
- String trustProfileId)
- throws MOAApplicationException {
+ ConfigurationProvider config,
+ String trustProfileId)
+ throws MOAApplicationException {
- TrustProfile tp = (TrustProfile) config.getTrustProfile(trustProfileId);
- if (tp != null)
- {
+ final TrustProfile tp = config.getTrustProfile(trustProfileId);
+ if (tp != null) {
id_ = trustProfileId;
setURI(tp.getUri());
setType(TrustStoreTypes.DIRECTORY);
- }
- else
- {
+ } else {
throw new MOAApplicationException("2203", new Object[] { trustProfileId });
}
}
@@ -111,14 +104,15 @@ public class TrustStoreProfileImpl implements TrustStoreProfile {
/**
* @see iaik.pki.store.truststore.TrustStoreProfile#getType()
*/
+ @Override
public String getType() {
return type;
}
/**
* Sets the the trust store type.
- *
- * @param type The trust store type to set.
+ *
+ * @param type The trust store type to set.
*/
protected void setType(String type) {
this.type = type;
@@ -127,13 +121,14 @@ public class TrustStoreProfileImpl implements TrustStoreProfile {
/**
* @see iaik.pki.store.truststore.TrustStoreProfile#getURI()
*/
+ @Override
public String getURI() {
return URI;
}
/**
* Sets the trust store URI.
- *
+ *
* @param URI The trust store URI to set.
*/
protected void setURI(String URI) {
@@ -162,8 +157,8 @@ public class TrustStoreProfileImpl implements TrustStoreProfile {
* @see iaik.pki.store.observer.Observable#notify(iaik.pki.store.observer.NotificationData)
*/
public void notify(NotificationData notificationData) {
- for (Iterator iter = observers.iterator(); iter.hasNext();) {
- Observer observer = (Observer) iter.next();
+ for (final Object observer2 : observers) {
+ final Observer observer = (Observer) observer2;
observer.notify(notificationData);
}
}
@@ -171,8 +166,8 @@ public class TrustStoreProfileImpl implements TrustStoreProfile {
/**
* @see iaik.pki.store.truststore.TrustStoreProfile#getId()
*/
- public String getId()
- {
+ @Override
+ public String getId() {
return id_;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java
index cc12861..1bba712 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/Base64TransformationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import iaik.server.modules.xml.Base64Transformation;
@@ -29,39 +28,39 @@ import iaik.server.modules.xml.Base64Transformation;
/**
* An implementation of the <code>Base64Transformation</code>
* <code>Transformation</code> type.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class Base64TransformationImpl
- extends TransformationImpl
- implements Base64Transformation {
-
+ extends TransformationImpl
+ implements Base64Transformation {
+
/**
* Create a new <code>Base64TransformationImpl</code>.
- *
+ *
* @see java.lang.Object#Object()
- */
+ */
public Base64TransformationImpl() {
setAlgorithmURI(Base64Transformation.BASE64_DECODING);
}
/**
* Compare this <code>Base64Transformation</code> to another.
- *
- * @param other The object to compare this<code>Base64Transformation</code>
- * to.
+ *
+ * @param other The object to compare this<code>Base64Transformation</code> to.
* @return <code>true</code>, if <code>other</code> is a
- * <code>Base64Transformation</code> and the algorithm URIs match, otherwise
- * <code>false</code>.
+ * <code>Base64Transformation</code> and the algorithm URIs match,
+ * otherwise <code>false</code>.
* @see java.lang.Object#equals(Object)
- */
+ */
+ @Override
public boolean equals(Object other) {
if (other instanceof Base64Transformation) {
- Base64Transformation transform = (Base64Transformation) other;
+ final Base64Transformation transform = (Base64Transformation) other;
return getAlgorithmURI().equals(transform.getAlgorithmURI());
}
return false;
}
-
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java
index 4d627d7..e498842 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteArrayDataObjectImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import java.io.ByteArrayInputStream;
@@ -31,22 +30,21 @@ import iaik.server.modules.xml.BinaryDataObject;
/**
* A <code>BinaryDataObject</code> encapsulating Base64 data.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ByteArrayDataObjectImpl
- extends DataObjectImpl
- implements BinaryDataObject {
+ extends DataObjectImpl
+ implements BinaryDataObject {
/** The binary data contained in this <code>BinaryDataObject</code>. */
private byte[] bytes;
/**
* Create a new <code>ByteArrayDataObjectImpl</code>.
- *
- * @param bytes The binary data contained in this
- * <code>BinaryDataObject</code>.
+ *
+ * @param bytes The binary data contained in this <code>BinaryDataObject</code>.
*/
public ByteArrayDataObjectImpl(byte[] bytes) {
setBytes(bytes);
@@ -54,23 +52,22 @@ public class ByteArrayDataObjectImpl
/**
* Set the Base64 data.
- *
- * @param bytes The binary data contained in this
- * <code>BinaryDataObject</code>.
+ *
+ * @param bytes The binary data contained in this <code>BinaryDataObject</code>.
*/
public void setBytes(byte[] bytes) {
this.bytes = bytes;
}
/**
- * Return the binary data encoded in the Base64 <code>String</code> as a
- * stream.
- *
+ * Return the binary data encoded in the Base64 <code>String</code> as a stream.
+ *
* @return The binary data contained in this object, as a
- * <code>InputStream</code>. Repeated calls to this function will return a
- * new stream to the Base64 data.
+ * <code>InputStream</code>. Repeated calls to this function will return
+ * a new stream to the Base64 data.
* @see iaik.server.modules.xml.BinaryDataObject#getInputStream()
*/
+ @Override
public InputStream getInputStream() {
return new ByteArrayInputStream(bytes);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java
index b982c8e..af8ee66 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ByteStreamDataObjectImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import java.io.InputStream;
@@ -29,21 +28,21 @@ import java.io.InputStream;
import iaik.server.modules.xml.BinaryDataObject;
/**
- * A <code>BinaryDataObject</code> encapsulating binary data from a stream.
- *
+ * A <code>BinaryDataObject</code> encapsulating binary data from a stream.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ByteStreamDataObjectImpl
- extends DataObjectImpl
- implements BinaryDataObject {
+ extends DataObjectImpl
+ implements BinaryDataObject {
/** The <code>InputStream</code> containing the binary data. */
private InputStream inputStream;
/**
* Create a new <code>ByteStreamDataObjectImpl</code>.
- *
+ *
* @param inputStream The stream from which to read the binary data.
*/
public ByteStreamDataObjectImpl(InputStream inputStream) {
@@ -52,7 +51,7 @@ public class ByteStreamDataObjectImpl
/**
* Set the input stream from which to read the binary data.
- *
+ *
* @param inputStream The input stream from which to read the binary data.
*/
public void setInputStream(InputStream inputStream) {
@@ -61,11 +60,12 @@ public class ByteStreamDataObjectImpl
/**
* Return the binary data from this object as a stream.
- *
+ *
* @return The stream containing the binary data. Calling this function
- * repeatedly will always return the same <code>InputStream</code>.
+ * repeatedly will always return the same <code>InputStream</code>.
* @see iaik.server.modules.xml.BinaryDataObject#getInputStream()
*/
+ @Override
public InputStream getInputStream() {
return inputStream;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java
index 0c3a8da..1e2a651 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/CanonicalizationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import iaik.server.modules.xml.Canonicalization;
@@ -29,36 +28,36 @@ import iaik.server.modules.xml.Canonicalization;
/**
* An implementation of the <code>CanonicalizationTransform</code>
* <code>Transformation</code> type.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CanonicalizationImpl
- extends TransformationImpl
- implements Canonicalization {
-
+ extends TransformationImpl
+ implements Canonicalization {
+
/**
* Create a new <code>CanonicalizationTransformImpl</code> object.
- *
+ *
* @param algorithmURI The canonicalization algorithm URI.
- */
+ */
public CanonicalizationImpl(String algorithmURI) {
setAlgorithmURI(algorithmURI);
}
-
+
/**
* Compare this object to another <code>Canonicalization</code>.
- *
- * @param other The object to compare this
- * <code>Canonicalization</code> to.
+ *
+ * @param other The object to compare this <code>Canonicalization</code> to.
* @return <code>true</code>, if <code>other</code> is a
- * <code>Canonicalization</code> and the algorithm URIs match, otherwise
- * <code>false</code>.
+ * <code>Canonicalization</code> and the algorithm URIs match, otherwise
+ * <code>false</code>.
* @see java.lang.Object#equals(Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof Canonicalization) {
- Canonicalization c14n = (Canonicalization) other;
+ final Canonicalization c14n = (Canonicalization) other;
return getAlgorithmURI().equals(c14n.getAlgorithmURI());
}
return false;
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java
index 702caaf..ac36875 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/DataObjectImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import iaik.server.modules.xml.DataObject;
@@ -29,12 +28,12 @@ import iaik.server.modules.xml.DataObject;
/**
* Abstract base implementation for the classes derived from
* <code>DataObject</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public abstract class DataObjectImpl implements DataObject {
-
+
/** The MIME type of the data object. */
private String mimeType;
/** The refernce ID. */
@@ -43,33 +42,35 @@ public abstract class DataObjectImpl implements DataObject {
private String typeURI;
/** The URI identifying the data. */
private String URI;
-
+
/**
* @see iaik.server.modules.xml.DataObject#getMimeType()
*/
+ @Override
public String getMimeType() {
return mimeType;
}
/**
* Set the mime type.
- *
+ *
* @param mimeType The mime type to set.
*/
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
-
+
/**
* @see iaik.server.modules.xml.DataObject#getReferenceID()
*/
+ @Override
public String getReferenceID() {
return referenceID;
}
-
+
/**
* Set the reference ID.
- *
+ *
* @param referenceID The reference ID.
*/
public void setReferenceID(String referenceID) {
@@ -79,13 +80,14 @@ public abstract class DataObjectImpl implements DataObject {
/**
* @see iaik.server.modules.xml.DataObject#getTypeURI()
*/
+ @Override
public String getTypeURI() {
return typeURI;
}
/**
* Set the type URI.
- *
+ *
* @param typeURI The type URI.
*/
public void setTypeURI(String typeURI) {
@@ -95,13 +97,14 @@ public abstract class DataObjectImpl implements DataObject {
/**
* @see iaik.server.modules.xml.DataObject#getURI()
*/
+ @Override
public String getURI() {
return URI;
}
-
+
/**
* Set the URI.
- *
+ *
* @param URI The URI.
*/
public void setURI(String URI) {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java
index d582594..2c9f0e3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/EnvelopedSignatureTransformationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import iaik.server.modules.xml.EnvelopedSignatureTransformation;
@@ -29,13 +28,13 @@ import iaik.server.modules.xml.EnvelopedSignatureTransformation;
/**
* An implementation of the <code>EnvelopedSignatureTransformation</code>
* <code>Transformation</code> type.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class EnvelopedSignatureTransformationImpl
- extends TransformationImpl
- implements EnvelopedSignatureTransformation {
+ extends TransformationImpl
+ implements EnvelopedSignatureTransformation {
/**
* Create a new <code>EnvelopedSignatureTransformationImpl</code>.
@@ -46,18 +45,19 @@ public class EnvelopedSignatureTransformationImpl
/**
* Compare this object to another <code>EnvelopedSignatureTransformation</code>.
- *
- * @param other The object to compare this
- * <code>EnvelopedSignatureTransformation</code> to.
+ *
+ * @param other The object to compare this
+ * <code>EnvelopedSignatureTransformation</code> to.
* @return <code>true</code>, if <code>other</code> is a
- * <code>EnvelopedSignatureTransformation</code>, otherwise
- * <code>false</code>.
+ * <code>EnvelopedSignatureTransformation</code>, otherwise
+ * <code>false</code>.
* @see java.lang.Object#equals(Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof EnvelopedSignatureTransformation) {
- EnvelopedSignatureTransformation transform =
- (EnvelopedSignatureTransformation) other;
+ final EnvelopedSignatureTransformation transform =
+ (EnvelopedSignatureTransformation) other;
return getAlgorithmURI().equals(transform.getAlgorithmURI());
}
return false;
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java
index dfadf0c..ce98e7f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/ExclusiveCanonicalizationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import java.util.List;
@@ -29,38 +28,39 @@ import java.util.List;
import iaik.server.modules.xml.ExclusiveCanonicalization;
/**
- * An implementation of the <code>ExclusiveCanonicalization</code> type
- * of <code>Transformation</code>.
- *
+ * An implementation of the <code>ExclusiveCanonicalization</code> type of
+ * <code>Transformation</code>.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ExclusiveCanonicalizationImpl
- extends TransformationImpl
- implements ExclusiveCanonicalization {
+ extends TransformationImpl
+ implements ExclusiveCanonicalization {
/** The prefixes of the namespaces to treat according to canonical XML. */
private List inclusiveNamespacePrefixes;
/**
* Create a new <code>ExclusiveCanonicalizationImpl</code> object.
- *
- * @param algorithmURI The exclusive canonicalization algorithm URI.
+ *
+ * @param algorithmURI The exclusive canonicalization algorithm
+ * URI.
* @param inclusiveNamespacePrefixes The namespace prefixes to be processed
- * according to canonical XML.
+ * according to canonical XML.
*/
public ExclusiveCanonicalizationImpl(
- String algorithmURI,
- List inclusiveNamespacePrefixes) {
+ String algorithmURI,
+ List inclusiveNamespacePrefixes) {
setAlgorithmURI(algorithmURI);
setInclusiveNamespacePrefixes(inclusiveNamespacePrefixes);
}
/**
* Sets the namespace prefixes to be processed according to canonical XML.
- *
+ *
* @param inclusiveNamespacePrefixes The prefixes of the namespaces to treat
- * according to canonical XML.
+ * according to canonical XML.
*/
protected void setInclusiveNamespacePrefixes(List inclusiveNamespacePrefixes) {
this.inclusiveNamespacePrefixes = inclusiveNamespacePrefixes;
@@ -69,29 +69,32 @@ public class ExclusiveCanonicalizationImpl
/**
* @see iaik.server.modules.xml.ExclusiveCanonicalization#getInclusiveNamespacePrefixes()
*/
+ @Override
public List getInclusiveNamespacePrefixes() {
return inclusiveNamespacePrefixes;
}
/**
* Compare this object to another <code>CanonicalizationTransform</code>.
- *
- * @param other The object to compare this
- * <code>ExclusiveCanonicalization</code> to.
+ *
+ * @param other The object to compare this
+ * <code>ExclusiveCanonicalization</code> to.
* @return <code>true</code>, if <code>other</code> is a
- * <code>ExclusiveCanonicalization</code> and the algorithm URIs match,
- * otherwise <code>false</code>.
+ * <code>ExclusiveCanonicalization</code> and the algorithm URIs match,
+ * otherwise <code>false</code>.
* @see java.lang.Object#equals(Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof ExclusiveCanonicalization) {
- ExclusiveCanonicalization eC14n =
- (ExclusiveCanonicalization) other;
- boolean algURIEquals = getAlgorithmURI().equals(eC14n.getAlgorithmURI());
- boolean inclNSPrefs =
- (getInclusiveNamespacePrefixes() == null || getInclusiveNamespacePrefixes().isEmpty())
- ? eC14n.getInclusiveNamespacePrefixes() == null || eC14n.getInclusiveNamespacePrefixes().isEmpty()
- : getInclusiveNamespacePrefixes().equals(eC14n.getInclusiveNamespacePrefixes());
+ final ExclusiveCanonicalization eC14n =
+ (ExclusiveCanonicalization) other;
+ final boolean algURIEquals = getAlgorithmURI().equals(eC14n.getAlgorithmURI());
+ final boolean inclNSPrefs =
+ getInclusiveNamespacePrefixes() == null || getInclusiveNamespacePrefixes().isEmpty()
+ ? eC14n.getInclusiveNamespacePrefixes() == null || eC14n.getInclusiveNamespacePrefixes()
+ .isEmpty()
+ : getInclusiveNamespacePrefixes().equals(eC14n.getInclusiveNamespacePrefixes());
return algURIEquals && inclNSPrefs;
}
return false;
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java
index 9026d33..9f4e22d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/SigningTimeImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import java.util.Date;
@@ -30,18 +29,18 @@ import iaik.server.modules.xml.SigningTime;
/**
* An implementation of the <code>SigningTime</code> <code>Property</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SigningTimeImpl implements SigningTime {
-
+
/** The signing time. */
- private Date signingTime;
-
+ private final Date signingTime;
+
/**
* Create a new <code>SigningTimeImpl</code>.
- *
+ *
* @param signingTime The signing time.
*/
public SigningTimeImpl(Date signingTime) {
@@ -51,6 +50,7 @@ public class SigningTimeImpl implements SigningTime {
/**
* @see iaik.server.modules.xml.SigningTime#getSigningTime()
*/
+ @Override
public Date getSigningTime() {
return signingTime;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java
index 1595446..fa3401e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/TransformationImpl.java
@@ -21,14 +21,13 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import iaik.server.modules.xml.Transformation;
/**
* Base implementation class for <code>Transformation</code> derived classes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -36,32 +35,34 @@ public abstract class TransformationImpl implements Transformation {
/** The algorithm URI identifying the transformation algorithm. */
private String algorithmURI;
-
+
/**
* @see iaik.server.modules.xml.Transformation#getAlgorithmURI()
*/
+ @Override
public String getAlgorithmURI() {
return algorithmURI;
}
/**
* Sets the algorithm URI.
- *
+ *
* @param algorithmURI The algorithm URI to set.
*/
protected void setAlgorithmURI(String algorithmURI) {
this.algorithmURI = algorithmURI;
}
-
+
/**
* Returns the hash code of the algorithm URI. Should be overridden if a
* transformation distinguishes itself from others by more than just the
* algorithm URI.
- *
+ *
* @see java.lang.Object#hashCode()
*/
+ @Override
public int hashCode() {
return getAlgorithmURI().hashCode();
}
-
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java
index e8444b9..0688d0e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLDataObjectImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import org.w3c.dom.Element;
@@ -30,22 +29,21 @@ import iaik.server.modules.xml.XMLDataObject;
/**
* A <code>DataObject</code> containing a single DOM element.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLDataObjectImpl
- extends DataObjectImpl
- implements XMLDataObject {
-
- /** The XML data contained in this <code>XMLDataObject</code>. */
+ extends DataObjectImpl
+ implements XMLDataObject {
+
+ /** The XML data contained in this <code>XMLDataObject</code>. */
private Element element;
-
+
/**
* Create a new <code>XMLDataObjectImpl</code>.
- *
- * @param element The DOM element contained in this
- * <code>XMLDataObject</code>.
+ *
+ * @param element The DOM element contained in this <code>XMLDataObject</code>.
*/
public XMLDataObjectImpl(Element element) {
setElement(element);
@@ -54,13 +52,14 @@ public class XMLDataObjectImpl
/**
* @see iaik.server.modules.xml.XMLDataObject#getElement()
*/
+ @Override
public Element getElement() {
return element;
}
/**
* Set the DOM element contained in this <code>XMLDataObject</code>.
- *
+ *
* @param element The DOM element to set.
*/
public void setElement(Element element) {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java
index 2fb9df9..51f96f0 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLNodeListDataObjectImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import org.w3c.dom.NodeList;
@@ -30,22 +29,22 @@ import iaik.server.modules.xml.XMLNodeListDataObject;
/**
* A <code>DataObject</code> containing a list of DOM nodes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLNodeListDataObjectImpl
- extends DataObjectImpl
- implements XMLNodeListDataObject {
+ extends DataObjectImpl
+ implements XMLNodeListDataObject {
/** The nodes contained in this <code>XMLNodeListDataObject</code>. */
private NodeList nodeList;
/**
* Create a new <code>XMLNodeListDataObjectImpl</code>.
- *
+ *
* @param nodeList The list of DOM nodes contained in this
- * <code>XMLNodeListDataObject</code>.
+ * <code>XMLNodeListDataObject</code>.
*/
public XMLNodeListDataObjectImpl(NodeList nodeList) {
setNodeList(nodeList);
@@ -54,7 +53,7 @@ public class XMLNodeListDataObjectImpl
/**
* Set the list of DOM nodes contained in this
* <code>XMLNodeListDataObject</code>.
- *
+ *
* @param nodeList The list of DOM nodes to set.
*/
public void setNodeList(NodeList nodeList) {
@@ -64,6 +63,7 @@ public class XMLNodeListDataObjectImpl
/**
* @see iaik.server.modules.xml.XMLNodeListDataObject#getNodeList()
*/
+ @Override
public NodeList getNodeList() {
return nodeList;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java
index 0774726..1844780 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XMLSignatureImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import org.w3c.dom.Element;
@@ -29,28 +28,28 @@ import org.w3c.dom.Element;
import iaik.server.modules.xml.XMLSignature;
/**
- * An object containing an XMLDsig signature in the form of a
+ * An object containing an XMLDsig signature in the form of a
* <code>dsig:Signature</code> DOM element.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLSignatureImpl implements XMLSignature {
/** The signature DOM element. */
private Element element;
-
+
/**
* Create a new <code>XMLSignatureImpl</code>.
- *
+ *
* @param element The <code>dsig:Signature</code> DOM element.
*/
public XMLSignatureImpl(Element element) {
setElement(element);
}
-
+
/**
* Set the <code>dsig:Signature</code> DOM element.
- *
+ *
* @param element The <code>dsig:Signature</code> element to set.
*/
public void setElement(Element element) {
@@ -60,6 +59,7 @@ public class XMLSignatureImpl implements XMLSignature {
/**
* @see iaik.server.modules.xml.XMLSignature#getElement()
*/
+ @Override
public Element getElement() {
return element;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java
index d309302..a44196a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2FilterImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import java.util.Map;
@@ -31,7 +30,7 @@ import iaik.server.modules.xml.XPath2Transformation.XPath2Filter;
/**
* An object encapsulating an XPath-Filter2 expression.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -46,17 +45,18 @@ public class XPath2FilterImpl implements XPath2Filter {
/**
* Create a new <code>XPath2FilterImpl</code> object.
- *
- * @param filterType The type of filter. Must be one of the filter type
- * constants declared in <code>iaik.server.modules.xml.XPath2Transformation.XPath2Filter</code>
- * @param xPathExpression The XPath expression belonging to this filter.
+ *
+ * @param filterType The type of filter. Must be one of the filter
+ * type constants declared in
+ * <code>iaik.server.modules.xml.XPath2Transformation.XPath2Filter</code>
+ * @param xPathExpression The XPath expression belonging to this filter.
* @param namespaceDeclarations The namespace declarations visible for this
- * XPath2Filter.
+ * XPath2Filter.
*/
public XPath2FilterImpl(
- String filterType,
- String xPathExpression,
- Map namespaceDeclarations) {
+ String filterType,
+ String xPathExpression,
+ Map namespaceDeclarations) {
setFilterType(filterType);
setXPathExpression(xPathExpression);
@@ -66,13 +66,14 @@ public class XPath2FilterImpl implements XPath2Filter {
/**
* @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getFilterType()
*/
+ @Override
public String getFilterType() {
return filterType;
}
/**
* Set the filter type.
- *
+ *
* @param filterType The filter type to set.
*/
protected void setFilterType(String filterType) {
@@ -82,13 +83,14 @@ public class XPath2FilterImpl implements XPath2Filter {
/**
* @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getXPathExpression()
*/
+ @Override
public String getXPathExpression() {
return xPathExpression;
}
/**
* Set the XPath expression.
- *
+ *
* @param xPathExpression The XPath expression to set.
*/
protected void setXPathExpression(String xPathExpression) {
@@ -98,15 +100,16 @@ public class XPath2FilterImpl implements XPath2Filter {
/**
* @see iaik.server.modules.xml.XPath2Transformation.XPath2Filter#getNamespaceDeclarations()
*/
+ @Override
public Map getNamespaceDeclarations() {
return namespaceDeclarations;
}
/**
* Set the namespace declarations.
- *
- * @param namespaceDeclarations The mapping between namespace prefixes and
- * their associated URI.
+ *
+ * @param namespaceDeclarations The mapping between namespace prefixes and their
+ * associated URI.
*/
protected void setNamespaceDeclarations(Map namespaceDeclarations) {
this.namespaceDeclarations = namespaceDeclarations;
@@ -114,18 +117,19 @@ public class XPath2FilterImpl implements XPath2Filter {
/**
* Compare this object to another.
- *
+ *
* @param other The object to compare this <code>XPath2Filter</code> to.
* @return <code>true</code>, if <code>other</code> is a
- * <code>XPath2Filter</code> and the filter types match and the XPath
- * expressions match. Otherwise <code>false</code> is returned.
+ * <code>XPath2Filter</code> and the filter types match and the XPath
+ * expressions match. Otherwise <code>false</code> is returned.
* @see java.lang.Object#equals(java.lang.Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof XPath2Transformation.XPath2Filter) {
- XPath2Filter filter = (XPath2Transformation.XPath2Filter) other;
+ final XPath2Filter filter = (XPath2Transformation.XPath2Filter) other;
return getFilterType().equals(filter.getFilterType())
- && getXPathExpression().equals(filter.getXPathExpression());
+ && getXPathExpression().equals(filter.getXPathExpression());
}
return false;
}
@@ -133,6 +137,7 @@ public class XPath2FilterImpl implements XPath2Filter {
/**
* @see java.lang.Object#hashCode()
*/
+ @Override
public int hashCode() {
return getXPathExpression().hashCode() * 31 + getFilterType().hashCode();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java
index f483b18..b49bd64 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPath2TransformationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import java.util.ArrayList;
@@ -33,20 +32,20 @@ import iaik.server.modules.xml.XPath2Transformation;
/**
* An object encapsulating a <code>Transformation</code> containing several
* XPath-Filter2 expressions.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XPath2TransformationImpl
- extends TransformationImpl
- implements XPath2Transformation {
+ extends TransformationImpl
+ implements XPath2Transformation {
/** The filters contained in this <code>XPath2Transformation</code> */
- private List xPathFilters = new ArrayList();
+ private final List xPathFilters = new ArrayList();
/**
* Create a new <code>XPath2TransformationImpl</code>.
- *
+ *
* The list of XPath-Filter2 expression is initially empty.
*/
public XPath2TransformationImpl() {
@@ -56,13 +55,14 @@ public class XPath2TransformationImpl
/**
* @see iaik.server.modules.xml.XPath2Transformation#getXPathFilters()
*/
+ @Override
public List getXPathFilters() {
return xPathFilters;
}
/**
* Add an XPath-Filter2 expression to the list of filters.
- *
+ *
* @param filter The filter to add.
*/
public void addXPathFilter(XPath2Filter filter) {
@@ -71,18 +71,18 @@ public class XPath2TransformationImpl
/**
* Compare this <code>XPath2Transformation</code> to another.
- *
- * @param other The object to compare this
- * <code>XPath2Transformation</code> to.
+ *
+ * @param other The object to compare this <code>XPath2Transformation</code> to.
* @return <code>true</code>, if <code>other</code> is an
- * <code>XPath2Transformation</code> and <code>getXPathFilters()</code> equals
- * <code>other.getXPathFilters()</code>. Otherwise <code>false</code> is
- * returned.
+ * <code>XPath2Transformation</code> and <code>getXPathFilters()</code>
+ * equals <code>other.getXPathFilters()</code>. Otherwise
+ * <code>false</code> is returned.
* @see java.lang.Object#equals(Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof XPath2Transformation) {
- XPath2Transformation transform = (XPath2Transformation) other;
+ final XPath2Transformation transform = (XPath2Transformation) other;
return getXPathFilters().equals(transform.getXPathFilters());
}
@@ -92,8 +92,9 @@ public class XPath2TransformationImpl
/**
* @see java.lang.Object#hashCode()
*/
+ @Override
public int hashCode() {
- Iterator iter = getXPathFilters().iterator();
+ final Iterator iter = getXPathFilters().iterator();
int hashCode = 0;
while (iter.hasNext()) {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java
index 06cc319..65b33f4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XPathTransformationImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xml;
import java.util.Map;
@@ -30,13 +29,13 @@ import iaik.server.modules.xml.XPathTransformation;
/**
* A <code>Transformation</code> containing an XPath expression.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XPathTransformationImpl
- extends TransformationImpl
- implements XPathTransformation {
+ extends TransformationImpl
+ implements XPathTransformation {
/** The XPath expression. */
private String xPathExpression;
@@ -45,16 +44,16 @@ public class XPathTransformationImpl
/**
* Create a new <code>XPathTransformationImpl</code>.
- *
+ *
* The namespace declarations are initialized empty.
- *
- * @param xPathExpression The XPath expression this object will contain.
+ *
+ * @param xPathExpression The XPath expression this object will contain.
* @param namespaceDeclarations The namespace declarations visible for this
- * XPath.
+ * XPath.
*/
public XPathTransformationImpl(
- String xPathExpression,
- Map namespaceDeclarations) {
+ String xPathExpression,
+ Map namespaceDeclarations) {
setAlgorithmURI(XPathTransformation.XPATH);
setXPathExpression(xPathExpression);
@@ -63,7 +62,7 @@ public class XPathTransformationImpl
/**
* Set the XPath expression.
- *
+ *
* @param xPathExpression The XPath expression.
*/
protected void setXPathExpression(String xPathExpression) {
@@ -73,6 +72,7 @@ public class XPathTransformationImpl
/**
* @see iaik.server.modules.xml.XPathTransformation#getXPathExpression()
*/
+ @Override
public String getXPathExpression() {
return xPathExpression;
}
@@ -80,15 +80,16 @@ public class XPathTransformationImpl
/**
* @see iaik.server.modules.xml.XPathTransformation#getNamespaceDeclarations()
*/
+ @Override
public Map getNamespaceDeclarations() {
return namespaceDeclarations;
}
/**
* Set the namespace declarations.
- *
- * @param namespaceDeclarations The mapping between namespace prefixes and
- * their associated URI.
+ *
+ * @param namespaceDeclarations The mapping between namespace prefixes and their
+ * associated URI.
*/
protected void setNamespaceDeclarations(Map namespaceDeclarations) {
this.namespaceDeclarations = namespaceDeclarations;
@@ -96,17 +97,18 @@ public class XPathTransformationImpl
/**
* Compare this <code>XPathTransformation</code> to another.
- *
- * @param other The object to compare this
- * <code>XPathTransformation</code> to.
+ *
+ * @param other The object to compare this <code>XPathTransformation</code> to.
* @return <code>true</code>, if <code>other</code> is an
- * <code>XPathTransformation</code> and if this object contains the same XPath
- * expression as <code>other</code>. Otherwise <code>false</code> is returned.
+ * <code>XPathTransformation</code> and if this object contains the same
+ * XPath expression as <code>other</code>. Otherwise <code>false</code>
+ * is returned.
* @see java.lang.Object#equals(Object)
*/
+ @Override
public boolean equals(Object other) {
if (other instanceof XPathTransformation) {
- XPathTransformation transform = (XPathTransformation) other;
+ final XPathTransformation transform = (XPathTransformation) other;
return getXPathExpression().equals(transform.getXPathExpression());
}
return false;
@@ -115,6 +117,7 @@ public class XPathTransformationImpl
/**
* @see java.lang.Object#hashCode()
*/
+ @Override
public int hashCode() {
return getXPathExpression().hashCode();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java
index 9dc45fc..6c71f42 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xml/XSLTTransformationImpl.java
@@ -45,204 +45,194 @@ import at.gv.egovernment.moaspss.util.XPathException;
import at.gv.egovernment.moaspss.util.XPathUtils;
import iaik.server.modules.xml.MOAXSecProvider;
import iaik.server.modules.xml.XSLTTransformation;
-import iaik.xml.crypto.dsig.XMLSignatureFactory;
-import iaik.xml.filter.impl.dsig.CanonInputStream;
-import iaik.xml.filter.impl.dsig.Canonicalizer;
-import iaik.xml.filter.impl.dsig.Traverser;
/**
* A <code>Transformation</code> containing an XSLT transformation.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XSLTTransformationImpl extends TransformationImpl implements XSLTTransformation {
- /** The XSLT stylesheet. */
- private Element styleSheetElement;
- /**
- * The hash code of the canonicalized stylesheet. If calculated, this value
- * should be != 0.
- */
- private int hashCode;
-
- /**
- * Create a new <code>XSLTTransformationImpl</code> object.
- *
- * @param styleSheetElement
- * The XSLT stylesheet element.
- */
- public XSLTTransformationImpl(Element styleSheetElement) {
- setAlgorithmURI(XSLTTransformation.XSLT);
- setStyleSheetElement(styleSheetElement);
- }
-
- /**
- * Set the XSLT stylesheet element.
- *
- * @param styleSheetElement
- * The XSLT stylesheet element to set.
- */
- protected void setStyleSheetElement(Element styleSheetElement) {
- this.styleSheetElement = styleSheetElement;
- this.hashCode = 0;
- }
-
- /**
- * @see iaik.server.modules.xml.XSLTTransformation#getStylesheetElement()
- */
- public Element getStylesheetElement() {
- return styleSheetElement;
- }
-
- /**
- * Compare this <code>XSLTTransformation</code> to another.
- *
- * @param other
- * The object to compare this <code>XSLTTransformation</code> to.
- * @return <code>true</code>, if <code>other</code> is an
- * <code>XSLTTransformation</code> and if the canonicalized
- * representations of the stylesheets contained in <code>this</code>
- * and <code>other</code> match. Otherwise, <code>false</code> is
- * returned.
- * @see java.lang.Object#equals(Object)
- */
- public boolean equals(Object other) {
- if (other instanceof XSLTTransformation) {
- XSLTTransformation xslt = (XSLTTransformation) other;
-
- return compareElements(getStylesheetElement(), xslt.getStylesheetElement());
- }
- return false;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- if (hashCode == 0) {
- hashCode = calculateHashCode(getStylesheetElement());
- }
- return hashCode;
- }
-
- /**
- * Calculate the hash code for a DOM element by canonicalizing it.
- *
- * @param element
- * The DOM element for which the hash code is to be calculated.
- * @return int The hash code, or <code>0</code>, if it could not be
- * calculated.
- */
- private static int calculateHashCode(Element element) {
- try {
- InputStream is = canonicalize(element);
- byte[] buf = new byte[256];
- int hashCode = 1;
- int length;
- int i;
-
- while ((length = is.read(buf)) > 0) {
- for (i = 0; i < length; i++) {
- hashCode += buf[i] * 31 + i;
- }
- }
- is.close();
- return hashCode;
- } catch (IOException e) {
- return 0;
- } catch (NoSuchAlgorithmException e) {
- return 0;
- } catch (InvalidAlgorithmParameterException e) {
- return 0;
- } catch (TransformException e) {
- return 0;
- }
- }
-
- /**
- * Compare two DOM elements by canonicalizing their contents and comparing
- * the resulting byte stream.
- *
- * @param elem1
- * The 1st element to compare.
- * @param elem2
- * The 2nd element to compare.
- * @return boolean <code>true</code>, if the elements are considered equal
- * after canonicalization. Otherwise <code>false</code> is returned.
- */
- private static boolean compareElements(Element elem1, Element elem2) {
- try {
- InputStream is1 = canonicalize(elem1);
- InputStream is2 = canonicalize(elem2);
- return StreamUtils.compareStreams(is1, is2);
- } catch (IOException e) {
- return false;
- } catch (NoSuchAlgorithmException e) {
- return false;
- } catch (InvalidAlgorithmParameterException e) {
- return false;
- } catch (TransformException e) {
- return false;
- }
- }
-
- /**
- * Canonicalize a DOM element.
+ /** The XSLT stylesheet. */
+ private Element styleSheetElement;
+ /**
+ * The hash code of the canonicalized stylesheet. If calculated, this value
+ * should be != 0.
+ */
+ private int hashCode;
+
+ /**
+ * Create a new <code>XSLTTransformationImpl</code> object.
+ *
+ * @param styleSheetElement The XSLT stylesheet element.
+ */
+ public XSLTTransformationImpl(Element styleSheetElement) {
+ setAlgorithmURI(XSLTTransformation.XSLT);
+ setStyleSheetElement(styleSheetElement);
+ }
+
+ /**
+ * Set the XSLT stylesheet element.
+ *
+ * @param styleSheetElement The XSLT stylesheet element to set.
+ */
+ protected void setStyleSheetElement(Element styleSheetElement) {
+ this.styleSheetElement = styleSheetElement;
+ this.hashCode = 0;
+ }
+
+ /**
+ * @see iaik.server.modules.xml.XSLTTransformation#getStylesheetElement()
+ */
+ @Override
+ public Element getStylesheetElement() {
+ return styleSheetElement;
+ }
+
+ /**
+ * Compare this <code>XSLTTransformation</code> to another.
+ *
+ * @param other The object to compare this <code>XSLTTransformation</code> to.
+ * @return <code>true</code>, if <code>other</code> is an
+ * <code>XSLTTransformation</code> and if the canonicalized
+ * representations of the stylesheets contained in <code>this</code> and
+ * <code>other</code> match. Otherwise, <code>false</code> is returned.
+ * @see java.lang.Object#equals(Object)
+ */
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof XSLTTransformation) {
+ final XSLTTransformation xslt = (XSLTTransformation) other;
+
+ return compareElements(getStylesheetElement(), xslt.getStylesheetElement());
+ }
+ return false;
+ }
+
+ /**
+ * @see java.lang.Object#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ if (hashCode == 0) {
+ hashCode = calculateHashCode(getStylesheetElement());
+ }
+ return hashCode;
+ }
+
+ /**
+ * Calculate the hash code for a DOM element by canonicalizing it.
*
+ * @param element The DOM element for which the hash code is to be calculated.
+ * @return int The hash code, or <code>0</code>, if it could not be calculated.
+ */
+ private static int calculateHashCode(Element element) {
+ try {
+ final InputStream is = canonicalize(element);
+ final byte[] buf = new byte[256];
+ int hashCode = 1;
+ int length;
+ int i;
+
+ while ((length = is.read(buf)) > 0) {
+ for (i = 0; i < length; i++) {
+ hashCode += buf[i] * 31 + i;
+ }
+ }
+ is.close();
+ return hashCode;
+ } catch (final IOException e) {
+ return 0;
+ } catch (final NoSuchAlgorithmException e) {
+ return 0;
+ } catch (final InvalidAlgorithmParameterException e) {
+ return 0;
+ } catch (final TransformException e) {
+ return 0;
+ }
+ }
+
+ /**
+ * Compare two DOM elements by canonicalizing their contents and comparing the
+ * resulting byte stream.
+ *
+ * @param elem1 The 1st element to compare.
+ * @param elem2 The 2nd element to compare.
+ * @return boolean <code>true</code>, if the elements are considered equal after
+ * canonicalization. Otherwise <code>false</code> is returned.
+ */
+ private static boolean compareElements(Element elem1, Element elem2) {
+ try {
+ final InputStream is1 = canonicalize(elem1);
+ final InputStream is2 = canonicalize(elem2);
+ return StreamUtils.compareStreams(is1, is2);
+ } catch (final IOException e) {
+ return false;
+ } catch (final NoSuchAlgorithmException e) {
+ return false;
+ } catch (final InvalidAlgorithmParameterException e) {
+ return false;
+ } catch (final TransformException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Canonicalize a DOM element.
+ *
* @param element The element to canonicalize.
* @return InputStream A stream with the canonicalized data.
- * @throws InvalidAlgorithmParameterException
- * @throws IOException
- * @throws TransformException
- * @throws AlgorithmException An error occurred canonicalizing the element.
+ * @throws InvalidAlgorithmParameterException
+ * @throws IOException
+ * @throws TransformException
+ * @throws AlgorithmException An error occurred canonicalizing
+ * the element.
*/
private static InputStream canonicalize(Element element)
- throws NoSuchAlgorithmException, InvalidAlgorithmParameterException, IOException, TransformException {
- // CanonicalizationMethod canonicalizationMethod =
- // MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod(
- // CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec());
-
- //CanonicalizationAlgorithm c14n =
- // new CanonicalizationAlgorithmImplExclusiveCanonicalXML();
- //Traverser traverser = new Traverser(element, true, true);
- //Canonicalizer canonicalizer = new Canonicalizer(traverser, false, true, null);
-
- //return new CanonInputStream(canonicalizer);
-
- CanonicalizationMethod canonicalizationMethod =
- MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod(
- CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec());
-
- //CanonicalizationAlgorithm c14n =
- // new CanonicalizationAlgorithmImplExclusiveCanonicalXML();
- NodeList nodeList;
-
- try {
- nodeList = XPathUtils.selectNodeList(element,
- XPathUtils.ALL_NODES_XPATH);
- } catch (XPathException e) {
- nodeList = new NodeListAdapter(Collections.EMPTY_LIST);
- }
- //c14n.setInput(nodeList);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- canonicalizationMethod.transform(new
- NodeListToNodeSetDataAdapter(nodeList), null, baos);
- baos.close();
- return new ByteArrayInputStream(baos.toByteArray());
- /*
- NodeList nodeList;
-
+ throws NoSuchAlgorithmException, InvalidAlgorithmParameterException, IOException, TransformException {
+ // CanonicalizationMethod canonicalizationMethod =
+ // MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod(
+ // CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec());
+
+ // CanonicalizationAlgorithm c14n =
+ // new CanonicalizationAlgorithmImplExclusiveCanonicalXML();
+ // Traverser traverser = new Traverser(element, true, true);
+ // Canonicalizer canonicalizer = new Canonicalizer(traverser, false, true,
+ // null);
+
+ // return new CanonInputStream(canonicalizer);
+
+ final CanonicalizationMethod canonicalizationMethod =
+ MOAXSecProvider.getXMLSignatureFactory().newCanonicalizationMethod(
+ CanonicalizationMethod.EXCLUSIVE, new ExcC14NParameterSpec());
+
+ // CanonicalizationAlgorithm c14n =
+ // new CanonicalizationAlgorithmImplExclusiveCanonicalXML();
+ NodeList nodeList;
+
try {
- nodeList = XPathUtils.selectNodeList(element, XPathUtils.ALL_NODES_XPATH);
- } catch (XPathException e) {
+ nodeList = XPathUtils.selectNodeList(element,
+ XPathUtils.ALL_NODES_XPATH);
+ } catch (final XPathException e) {
nodeList = new NodeListAdapter(Collections.EMPTY_LIST);
}
- //c14n.setInput(nodeList);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ // c14n.setInput(nodeList);
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
canonicalizationMethod.transform(new NodeListToNodeSetDataAdapter(nodeList), null, baos);
baos.close();
- return new ByteArrayInputStream(baos.toByteArray());*/
+ return new ByteArrayInputStream(baos.toByteArray());
+ /*
+ * NodeList nodeList;
+ *
+ * try { nodeList = XPathUtils.selectNodeList(element,
+ * XPathUtils.ALL_NODES_XPATH); } catch (XPathException e) { nodeList = new
+ * NodeListAdapter(Collections.EMPTY_LIST); } //c14n.setInput(nodeList);
+ * ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ * canonicalizationMethod.transform(new NodeListToNodeSetDataAdapter(nodeList),
+ * null, baos); baos.close(); return new
+ * ByteArrayInputStream(baos.toByteArray());
+ */
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java
index 310f2dd..6eb565a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/DataObjectTreatmentImpl.java
@@ -21,19 +21,17 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xmlsign;
import java.util.List;
-import iaik.server.modules.xmlsign.DataObjectTreatment;
-
import at.gv.egovernment.moa.spss.server.util.IdGenerator;
+import iaik.server.modules.xmlsign.DataObjectTreatment;
/**
* An object encapsulating how to treat an associated <code>DataObject</code>
* when creating a signature.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -51,29 +49,30 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment {
/** Whether to include the associated data object in the manifest. */
private boolean referenceInManifest;
/** The object ID generator. */
- private IdGenerator objIdGen;
-
+ private final IdGenerator objIdGen;
+
/**
* Create a new <code>DataObjectTreatmentImpl</code>.
- *
+ *
* @param objIdGen The <code>IdGenerator</code> for unique object IDs.
*/
public DataObjectTreatmentImpl(IdGenerator objIdGen) {
this.objIdGen = objIdGen;
}
-
+
/**
* @see iaik.server.modules.xmlsign.DataObjectTreatment#getFinalContentType()
*/
+ @Override
public String getFinalContentType() {
return finalContentType;
}
/**
* Sets the final content type.
- *
+ *
* @param finalContentType The final content type to set (a MIME-type type of
- * <code>String</code>).
+ * <code>String</code>).
*/
public void setFinalContentType(String finalContentType) {
this.finalContentType = finalContentType;
@@ -82,13 +81,14 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment {
/**
* @see iaik.server.modules.xmlsign.DataObjectTreatment#getHashAlgorithmName()
*/
+ @Override
public String getHashAlgorithmName() {
return hashAlgorithmName;
}
/**
* Sets the hash algorithm name.
- *
+ *
* @param hashAlgorithmName The hash algorithm name to set.
*/
public void setHashAlgorithmName(String hashAlgorithmName) {
@@ -98,16 +98,18 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment {
/**
* @see iaik.server.modules.xmlsign.DataObjectTreatment#isIncludedInSignature()
*/
+ @Override
public boolean isIncludedInSignature() {
return includedInSignature;
}
/**
- * Sets whether the associated <code>DataObject</code> is to be included in
- * the signature.
- *
+ * Sets whether the associated <code>DataObject</code> is to be included in the
+ * signature.
+ *
* @param includedInSignature If <code>true</code>, the associated
- * <code>DataObject</code> will be included in the signature, otherwise not.
+ * <code>DataObject</code> will be included in the
+ * signature, otherwise not.
*/
public void setIncludedInSignature(boolean includedInSignature) {
this.includedInSignature = includedInSignature;
@@ -116,16 +118,18 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment {
/**
* @see iaik.server.modules.xmlsign.DataObjectTreatment#isReferenceInManifest()
*/
+ @Override
public boolean isReferenceInManifest() {
return referenceInManifest;
}
/**
- * Sets whether the associated <code>DataObject</code> is
- * to be included in the <code>dsig:Manifest</code>.
- *
+ * Sets whether the associated <code>DataObject</code> is to be included in the
+ * <code>dsig:Manifest</code>.
+ *
* @param referenceInManifest If <code>true</code>, the associated
- * <code>DataObject</code> will be included in the manifest, otherwise not.
+ * <code>DataObject</code> will be included in the
+ * manifest, otherwise not.
*/
public void setReferenceInManifest(boolean referenceInManifest) {
this.referenceInManifest = referenceInManifest;
@@ -134,13 +138,14 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment {
/**
* @see iaik.server.modules.xmlsign.DataObjectTreatment#getTransformationList()
*/
+ @Override
public List getTransformationList() {
return transformationList;
}
/**
* Set the list of transformations for the associated <code>DataObject</code>.
- *
+ *
* @param transformationList The transformations to set.
*/
public void setTransformationList(List transformationList) {
@@ -150,6 +155,7 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment {
/**
* @see iaik.server.modules.xmlsign.DataObjectTreatment#getTransformationSupplements()
*/
+ @Override
public List getTransformationSupplements() {
return transformationSupplements;
}
@@ -157,16 +163,17 @@ public class DataObjectTreatmentImpl implements DataObjectTreatment {
/**
* Sets the transformation supplements for the associated
* <code>DataObject</code>.
- *
+ *
* @param transformationSupplements The transformation supplements to set.
*/
public void setTransformationSupplements(List transformationSupplements) {
this.transformationSupplements = transformationSupplements;
}
-
+
/**
* @see iaik.server.modules.xmlsign.DataObjectTreatment#getDsigDataObjectID()
*/
+ @Override
public String getDsigDataObjectID() {
return objIdGen.uniqueId();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java
index 9d6e3d2..516e3d8 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureCreationProfileImpl.java
@@ -21,9 +21,16 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xmlsign;
+import java.util.List;
+import java.util.Set;
+
+import at.gv.egovernment.moa.spss.server.logging.TransactionId;
+import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
+import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
+import at.gv.egovernment.moa.spss.server.util.IdGenerator;
+import at.gv.egovernment.moaspss.logging.Logger;
import iaik.server.modules.algorithms.SignatureAlgorithms;
import iaik.server.modules.keys.AlgorithmUnavailableException;
import iaik.server.modules.keys.KeyEntryID;
@@ -34,23 +41,14 @@ import iaik.server.modules.xml.Canonicalization;
import iaik.server.modules.xmlsign.XMLSignatureCreationProfile;
import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation;
-import java.util.List;
-import java.util.Set;
-
-import at.gv.egovernment.moa.spss.server.logging.TransactionId;
-import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
-import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
-import at.gv.egovernment.moa.spss.server.util.IdGenerator;
-import at.gv.egovernment.moaspss.logging.Logger;
-
/**
* An object providing auxiliary information for creating an XML signature.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLSignatureCreationProfileImpl
- implements XMLSignatureCreationProfile {
+ implements XMLSignatureCreationProfile {
/** The transformations to apply to a data object. */
private List dataObjectTreatmentList;
@@ -58,7 +56,7 @@ public class XMLSignatureCreationProfileImpl
private Set keySet;
/** The type URI of the signature manifest. */
private String securityLayerManifestTypeURI;
- /** Whether the created signature is to be Security Layer conform. */
+ /** Whether the created signature is to be Security Layer conform. */
private boolean securityLayerConform;
/** Where to insert the signature into the signature environment. */
private XMLSignatureInsertionLocation signatureInsertionLocation;
@@ -66,55 +64,55 @@ public class XMLSignatureCreationProfileImpl
private String signatureStructureType;
/** The type of <code>Canonicalization</code> to use for the signed info. */
private Canonicalization signedInfoCanonicalization;
- /** Properties to be signed during signature creation. */
+ /** Properties to be signed during signature creation. */
private List signedProperties;
/** The ID generator for signature IDs. */
- private IdGenerator signatureIDGenerator;
+ private final IdGenerator signatureIDGenerator;
/** The ID generator for manifst IDs. */
- private IdGenerator manifestIDGenerator;
+ private final IdGenerator manifestIDGenerator;
/** The ID generator for XMLDsig manifest IDs. */
- private IdGenerator dsigManifestIDGenerator;
+ private final IdGenerator dsigManifestIDGenerator;
/** The ID generator for signed property IDs. */
- private IdGenerator propertyIDGenerator;
- /** The selected digest method algorithm if XAdES 1.4.2 is used */
- private String digestMethodXAdES142;
-
-
+ private final IdGenerator propertyIDGenerator;
+ /** The selected digest method algorithm if XAdES 1.4.2 is used */
+ private final String digestMethodXAdES142;
+
/**
* Create a new <code>XMLSignatureCreationProfileImpl</code>.
- *
- * @param createProfileCount Provides external information about the
- * number of calls to the signature creation module, using the same request.
- * @param reservedIDs The set of IDs that must not be used while generating
- * new IDs.
+ *
+ * @param createProfileCount Provides external information about the number of
+ * calls to the signature creation module, using the
+ * same request.
+ * @param reservedIDs The set of IDs that must not be used while
+ * generating new IDs.
*/
public XMLSignatureCreationProfileImpl(
- int createProfileCount,
- Set reservedIDs,
- String digestMethodXAdES142) {
+ int createProfileCount,
+ Set reservedIDs,
+ String digestMethodXAdES142) {
signatureIDGenerator =
- new IdGenerator("signature-" + createProfileCount, reservedIDs);
+ new IdGenerator("signature-" + createProfileCount, reservedIDs);
manifestIDGenerator =
- new IdGenerator("manifest-" + createProfileCount, reservedIDs);
+ new IdGenerator("manifest-" + createProfileCount, reservedIDs);
dsigManifestIDGenerator =
- new IdGenerator("dsig-manifest-" + createProfileCount, reservedIDs);
+ new IdGenerator("dsig-manifest-" + createProfileCount, reservedIDs);
propertyIDGenerator =
- new IdGenerator("etsi-signed-" + createProfileCount, reservedIDs);
+ new IdGenerator("etsi-signed-" + createProfileCount, reservedIDs);
this.digestMethodXAdES142 = digestMethodXAdES142;
}
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getDataObjectTreatmentList()
*/
+ @Override
public List getDataObjectTreatmentList() {
return dataObjectTreatmentList;
}
/**
* Sets the list of <code>DataObjectTreatment</code>s.
- *
- * @param dataObjectTreatmentList The <code>DataObjectTreatment</code>s to
- * set.
+ *
+ * @param dataObjectTreatmentList The <code>DataObjectTreatment</code>s to set.
*/
public void setDataObjectTreatmentList(List dataObjectTreatmentList) {
this.dataObjectTreatmentList = dataObjectTreatmentList;
@@ -123,6 +121,7 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getKeySet()
*/
+ @Override
public Set getKeySet() {
return keySet;
}
@@ -130,7 +129,7 @@ public class XMLSignatureCreationProfileImpl
/**
* Set the set of <code>KeyEntryID</code>s which may be used for signature
* creation.
- *
+ *
* @param keySet The set of <code>KeyEntryID</code>s to set.
*/
public void setKeySet(Set keySet) {
@@ -140,15 +139,15 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSecurityLayerManifestTypeURI()
*/
+ @Override
public String getSecurityLayerManifestTypeURI() {
return securityLayerManifestTypeURI;
}
/**
* Set the SecurityLayerManifestTypeURI.
- *
- * @param securityLayerManifestTypeURI The SecurityLayerManifestTypeURI to
- * set.
+ *
+ * @param securityLayerManifestTypeURI The SecurityLayerManifestTypeURI to set.
*/
public void setSecurityLayerManifestTypeURI(String securityLayerManifestTypeURI) {
this.securityLayerManifestTypeURI = securityLayerManifestTypeURI;
@@ -157,132 +156,131 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureAlgorithmName(KeyEntryID)
*/
+ @Override
public String getSignatureAlgorithmName(KeyEntryID selectedKeyID)
- throws AlgorithmUnavailableException {
+ throws AlgorithmUnavailableException {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- TransactionId tid = new TransactionId(context.getTransactionID());
- KeyModule module = KeyModuleFactory.getInstance(tid);
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final TransactionId tid = new TransactionId(context.getTransactionID());
+ final KeyModule module = KeyModuleFactory.getInstance(tid);
Set algorithms;
try {
algorithms = module.getSupportedSignatureAlgorithms(selectedKeyID);
- } catch (UnknownKeyException e) {
+ } catch (final UnknownKeyException e) {
throw new AlgorithmUnavailableException(
- "Unknown key entry: " + selectedKeyID,
- e,
- null);
+ "Unknown key entry: " + selectedKeyID,
+ e,
+ null);
}
-
+
if (digestMethodXAdES142 == null) {
- // XAdES 1.4.2 not enabled - legacy MOA
- if (algorithms.contains(SignatureAlgorithms.MD2_WITH_RSA)
- || algorithms.contains(SignatureAlgorithms.MD5_WITH_RSA)
- || algorithms.contains(SignatureAlgorithms.RIPEMD128_WITH_RSA)
- || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_RSA)
- || algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)
- || algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) {
-
- return SignatureAlgorithms.SHA1_WITH_RSA;
- } else if (
- algorithms.contains(SignatureAlgorithms.ECDSA)) {
- return SignatureAlgorithms.ECDSA;
- } else if (
- algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
+ // XAdES 1.4.2 not enabled - legacy MOA
+ if (algorithms.contains(SignatureAlgorithms.MD2_WITH_RSA)
+ || algorithms.contains(SignatureAlgorithms.MD5_WITH_RSA)
+ || algorithms.contains(SignatureAlgorithms.RIPEMD128_WITH_RSA)
+ || algorithms.contains(SignatureAlgorithms.RIPEMD160_WITH_RSA)
+ || algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)
+ || algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) {
+
+ return SignatureAlgorithms.SHA1_WITH_RSA;
+ } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) {
+ return SignatureAlgorithms.ECDSA;
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+ } else {
+ // XAdES 1.4.2 is enabled: select signature algorithm according to selected
+ // digest method
+ if (digestMethodXAdES142.compareTo("SHA-1") == 0) {
+ Logger.warn(
+ "XAdES version 1.4.2 is enabled, but SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)");
+
+ if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) {
+ return SignatureAlgorithms.SHA1_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) {
+ return SignatureAlgorithms.ECDSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
} else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
}
+
+ } else if (digestMethodXAdES142.compareTo("SHA-256") == 0) {
+ if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) {
+ return SignatureAlgorithms.SHA256_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) {
+ return SignatureAlgorithms.SHA256_WITH_ECDSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+ } else if (digestMethodXAdES142.compareTo("SHA-384") == 0) {
+ if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) {
+ return SignatureAlgorithms.SHA384_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) {
+ return SignatureAlgorithms.SHA384_WITH_ECDSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+ } else if (digestMethodXAdES142.compareTo("SHA-512") == 0) {
+ if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) {
+ return SignatureAlgorithms.SHA512_WITH_RSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) {
+ return SignatureAlgorithms.SHA512_WITH_ECDSA;
+
+ } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
+ return SignatureAlgorithms.DSA;
+
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No algorithm for key entry: " + selectedKeyID,
+ null,
+ null);
+ }
+ } else {
+ throw new AlgorithmUnavailableException(
+ "No signature algorithm found for digest algorithm '" + digestMethodXAdES142,
+ null,
+ null);
+ }
+
}
- else {
- // XAdES 1.4.2 is enabled: select signature algorithm according to selected digest method
- if (digestMethodXAdES142.compareTo("SHA-1") == 0) {
- Logger.warn("XAdES version 1.4.2 is enabled, but SHA-1 is configured as digest algorithm. Please revise a use of a more secure digest algorithm out of the SHA-2 family (e.g. SHA-256, SHA-384, SHA-512)");
-
- if (algorithms.contains(SignatureAlgorithms.SHA1_WITH_RSA)) {
- return SignatureAlgorithms.SHA1_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.ECDSA)) {
- return SignatureAlgorithms.ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
-
- } else if (digestMethodXAdES142.compareTo("SHA-256") == 0) {
- if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_RSA)) {
- return SignatureAlgorithms.SHA256_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.SHA256_WITH_ECDSA)) {
- return SignatureAlgorithms.SHA256_WITH_ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
- } else if (digestMethodXAdES142.compareTo("SHA-384") == 0) {
- if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_RSA)) {
- return SignatureAlgorithms.SHA384_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.SHA384_WITH_ECDSA)) {
- return SignatureAlgorithms.SHA384_WITH_ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
- } else if (digestMethodXAdES142.compareTo("SHA-512") == 0) {
- if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_RSA)) {
- return SignatureAlgorithms.SHA512_WITH_RSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.SHA512_WITH_ECDSA)) {
- return SignatureAlgorithms.SHA512_WITH_ECDSA;
-
- } else if (algorithms.contains(SignatureAlgorithms.DSA)) {
- return SignatureAlgorithms.DSA;
-
- } else {
- throw new AlgorithmUnavailableException(
- "No algorithm for key entry: " + selectedKeyID,
- null,
- null);
- }
- }
- else {
- throw new AlgorithmUnavailableException(
- "No signature algorithm found for digest algorithm '" + digestMethodXAdES142,
- null,
- null);
- }
-
- }
-
}
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureInsertionLocation()
*/
+ @Override
public XMLSignatureInsertionLocation getSignatureInsertionLocation() {
return signatureInsertionLocation;
}
@@ -290,7 +288,7 @@ public class XMLSignatureCreationProfileImpl
/**
* Set the location where the signature is to be inserted into the signature
* parent.
- *
+ *
* @param signatureInsertionLocation The location to set.
*/
public void setSignatureInsertionLocation(XMLSignatureInsertionLocation signatureInsertionLocation) {
@@ -300,12 +298,14 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureStructureType()
*/
+ @Override
public String getSignatureStructureType() {
return signatureStructureType;
}
/**
* Set the signature structure type.
+ *
* @param signatureStructureType The signature structure type to set.
*/
public void setSignatureStructureType(String signatureStructureType) {
@@ -315,13 +315,14 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedInfoCanonicalization()
*/
+ @Override
public Canonicalization getSignedInfoCanonicalization() {
return signedInfoCanonicalization;
}
/**
* Sets the canonicalization method to use for the SignedInfo object.
- *
+ *
* @param signedInfoCanonicalization The canonicalization method to set.
*/
public void setSignedInfoCanonicalization(Canonicalization signedInfoCanonicalization) {
@@ -331,13 +332,14 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedProperties()
*/
+ @Override
public List getSignedProperties() {
return signedProperties;
}
/**
* Set the signed properties.
- *
+ *
* @param signedProperties The signed properties to set.
*/
public void setSignedProperties(List signedProperties) {
@@ -347,15 +349,16 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#isSecurityLayerConform()
*/
+ @Override
public boolean isSecurityLayerConform() {
return securityLayerConform;
}
/**
* Sets the security layer conformity.
- *
- * @param securityLayerConform <code>true</code>, if the created signature
- * is to be conform to the Security Layer specification.
+ *
+ * @param securityLayerConform <code>true</code>, if the created signature is to
+ * be conform to the Security Layer specification.
*/
public void setSecurityLayerConform(boolean securityLayerConform) {
this.securityLayerConform = securityLayerConform;
@@ -364,6 +367,7 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignatureID()
*/
+ @Override
public String getSignatureID() {
return signatureIDGenerator.uniqueId();
}
@@ -371,6 +375,7 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSecurityLayerManifestID()
*/
+ @Override
public String getSecurityLayerManifestID() {
return manifestIDGenerator.uniqueId();
}
@@ -378,6 +383,7 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getDsigManifestID()
*/
+ @Override
public String getDsigManifestID() {
return dsigManifestIDGenerator.uniqueId();
}
@@ -385,13 +391,15 @@ public class XMLSignatureCreationProfileImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getSignedPropertiesID()
*/
+ @Override
public String getSignedPropertiesID() {
return propertyIDGenerator.uniqueId();
}
-
+
/**
* @see iaik.server.modules.xmlsign.XMLSignatureCreationProfile#getPermitFileURIs()
*/
+ @Override
public boolean getPermitFileURIs() {
return false;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java
index 90c1f49..a5290a7 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlsign/XMLSignatureInsertionLocationImpl.java
@@ -21,29 +21,28 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xmlsign;
import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation;
/**
- * An object giving the location of where the signature will be
- * inserted into the parent element.
- *
+ * An object giving the location of where the signature will be inserted into
+ * the parent element.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLSignatureInsertionLocationImpl
- implements XMLSignatureInsertionLocation {
+ implements XMLSignatureInsertionLocation {
/** Where to put the signature into the signature parent element. */
private int signatureChildIndex;
-
+
/**
* Create a new <code>XMLSignatureInsertLocationImpl</code>.
- *
+ *
* @param signatureChildIndex The position index at which to append the
- * signature to the parent element.
+ * signature to the parent element.
*/
public XMLSignatureInsertionLocationImpl(int signatureChildIndex) {
setSignatureChildIndex(signatureChildIndex);
@@ -52,6 +51,7 @@ public class XMLSignatureInsertionLocationImpl
/**
* @see iaik.server.modules.xmlsign.XMLSignatureInsertionLocation#getSignatureChildIndex()
*/
+ @Override
public int getSignatureChildIndex() {
return signatureChildIndex;
}
@@ -59,7 +59,7 @@ public class XMLSignatureInsertionLocationImpl
/**
* Sets the position index at which to append the signature to the parent
* element.
- *
+ *
* @param signatureChildIndex The position index to set.
*/
public void setSignatureChildIndex(int signatureChildIndex) {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java
index 0ad3d79..6e4883f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/iaik/xmlverify/XMLSignatureVerificationProfileImpl.java
@@ -21,22 +21,22 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.iaik.xmlverify;
import java.util.List;
import iaik.pki.PKIProfile;
+import iaik.server.modules.SignatureVerificationProfile;
import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile;
/**
* An object providing auxiliary information for verifying an XML signature.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLSignatureVerificationProfileImpl
- implements XMLSignatureVerificationProfile {
+ implements XMLSignatureVerificationProfile {
/** Whether to check the Security Layer manifest. */
private boolean checkSecurityLayerManifest;
@@ -52,18 +52,20 @@ public class XMLSignatureVerificationProfileImpl
private boolean includeReferenceInputData;
/** Whether the file URIs are permitted */
private boolean permitFileURIs;
+
/**
* @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#checkSecurityLayerManifest()
*/
+ @Override
public boolean checkSecurityLayerManifest() {
return checkSecurityLayerManifest;
}
/**
* Set whether to check the references in the Security Layer manifest.
- *
- * @param checkSecurityLayerManifest <code>true</code>, if the references
- * in the Security Layer manifest must be checked.
+ *
+ * @param checkSecurityLayerManifest <code>true</code>, if the references in the
+ * Security Layer manifest must be checked.
*/
public void setCheckSecurityLayerManifest(boolean checkSecurityLayerManifest) {
this.checkSecurityLayerManifest = checkSecurityLayerManifest;
@@ -72,15 +74,16 @@ public class XMLSignatureVerificationProfileImpl
/**
* @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#checkXMLDsigManifests()
*/
+ @Override
public boolean checkXMLDsigManifests() {
return checkXMLDsigManifests;
}
/**
* Sets whether to check the references of all XML Dsig manifests.
- *
- * @param checkXMLDSigManifests <code>true</code>, if the references in the
- * XML Dsig manifest must be checked.
+ *
+ * @param checkXMLDSigManifests <code>true</code>, if the references in the XML
+ * Dsig manifest must be checked.
*/
public void setCheckXMLDsigManifests(boolean checkXMLDSigManifests) {
this.checkXMLDsigManifests = checkXMLDSigManifests;
@@ -89,15 +92,16 @@ public class XMLSignatureVerificationProfileImpl
/**
* @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getCertificateValidationProfile()
*/
+ @Override
public PKIProfile getCertificateValidationProfile() {
return certificateValidationProfile;
}
/**
* Sets the profile for validating the signer certificate.
- *
+ *
* @param certificateValidationProfile The certificate validation profile to
- * set.
+ * set.
*/
public void setCertificateValidationProfile(PKIProfile certificateValidationProfile) {
this.certificateValidationProfile = certificateValidationProfile;
@@ -106,13 +110,14 @@ public class XMLSignatureVerificationProfileImpl
/**
* @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getTransformationSupplements()
*/
+ @Override
public List getTransformationSupplements() {
return transformationSupplements;
}
/**
* Sets the transformation supplements.
- *
+ *
* @param transformationSupplements The transformation supplements to set.
*/
public void setTransformationSupplements(List transformationSupplements) {
@@ -122,15 +127,16 @@ public class XMLSignatureVerificationProfileImpl
/**
* @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#includeHashInputData()
*/
+ @Override
public boolean includeHashInputData() {
return includeHashInputData;
}
/**
* Set whether to include the hash input data in the result.
- *
- * @param includeHashInputData If <code>true</code>, the hash input data
- * will be returned in the result.
+ *
+ * @param includeHashInputData If <code>true</code>, the hash input data will be
+ * returned in the result.
*/
public void setIncludeHashInputData(boolean includeHashInputData) {
this.includeHashInputData = includeHashInputData;
@@ -139,39 +145,40 @@ public class XMLSignatureVerificationProfileImpl
/**
* @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#includeReferenceInputData()
*/
+ @Override
public boolean includeReferenceInputData() {
return includeReferenceInputData;
}
/**
* Set whether to include the reference input data in the result.
- *
- * @param includeReferenceInputData If <code>true</code>, the reference
- * input data will be included in the result.
+ *
+ * @param includeReferenceInputData If <code>true</code>, the reference input
+ * data will be included in the result.
*/
public void setIncludeReferenceInputData(boolean includeReferenceInputData) {
this.includeReferenceInputData = includeReferenceInputData;
}
-
+
/**
- * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getPermitFileURIs()
+ * @see iaik.server.modules.xmlverify.XMLSignatureVerificationProfile#getPermitFileURIs()
*/
+ @Override
public boolean getPermitFileURIs() {
return permitFileURIs;
}
-
+
/**
* Set whether the file URIs are permitted or not
- *
+ *
* @param permitFileURIs whether the file URIs are permitted or not
*/
- public void setPermitFileURIs(boolean permitFileURIs)
- {
+ public void setPermitFileURIs(boolean permitFileURIs) {
this.permitFileURIs = permitFileURIs;
}
@Override
public String getTargetLevel() {
- return XMLSignatureVerificationProfile.LEVEL_LTA;
+ return SignatureVerificationProfile.LEVEL_LTA;
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java
index 8ab01d6..5726220 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ConfiguratorImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.init;
import at.gv.egovernment.moa.spss.MOAException;
@@ -29,10 +28,11 @@ import at.gv.egovernment.moa.spss.api.Configurator;
import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
+import iaik.server.ConfigurationData;
/**
* Default implementation of <code>Configurator</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -40,26 +40,45 @@ public class ConfiguratorImpl extends Configurator {
/** whether the configuration has been initialized */
private boolean initialized = false;
- public void init() throws MOAException {
+ StartupConfigurationHolder result;
+
+ @Override
+ public StartupConfigurationHolder getCurrentConfiguration() {
+ return result;
+
+ }
+
+ @Override
+ public StartupConfigurationHolder init() throws MOAException {
if (!initialized) {
- SystemInitializer.init();
+ result = SystemInitializer.init();
initialized = true;
+
}
+
+ return result;
+
}
- public void update() throws MOAException {
+ @Override
+ public StartupConfigurationHolder update() throws MOAException {
if (!initialized) {
- return;
+ return null;
}
-
+
try {
// reconfigure the system
- ConfigurationProvider config = ConfigurationProvider.reload();
- new IaikConfigurator().configure(config);
- } catch (MOAException e) {
+ final ConfigurationProvider config = ConfigurationProvider.reload();
+ final ConfigurationData iaikConfig = new IaikConfigurator().configure(config);
+ result = new StartupConfigurationHolder(config, iaikConfig);
+ return result;
+
+ } catch (final MOAException e) {
throw e;
- } catch (Throwable t) {
- throw new ConfigurationException("", null, t);
+
+ } catch (final Throwable t) {
+ throw new ConfigurationException("MOA-SPSS initialization FAILED with a generic error", null, t);
+
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java
index 692ee53..73a183f 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/ExternalInitializer.java
@@ -3,5 +3,5 @@ package at.gv.egovernment.moa.spss.server.init;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
public interface ExternalInitializer {
- public void initialize(ConfigurationProvider configurationProvider);
+ void initialize(ConfigurationProvider configurationProvider);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java
new file mode 100644
index 0000000..903b08b
--- /dev/null
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/StartupConfigurationHolder.java
@@ -0,0 +1,40 @@
+package at.gv.egovernment.moa.spss.server.init;
+
+import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
+import iaik.server.ConfigurationData;
+
+public class StartupConfigurationHolder {
+
+ private final ConfigurationProvider moaSpssConfig;
+ private final ConfigurationData iaikConfiguration;
+
+ /**
+ * Holder for IAIK and MOA-SPSS related configuration object.
+ *
+ * @param config MOA-SPSS specific configuration
+ * @param iaikConfig Internal IAIK module configuration
+ */
+ public StartupConfigurationHolder(ConfigurationProvider config, ConfigurationData iaikConfig) {
+ this.moaSpssConfig = config;
+ this.iaikConfiguration = iaikConfig;
+ }
+
+ /**
+ * Get MOA-SPSS configuration object from start-up process.
+ *
+ * @return MOA-SPSS configuration
+ */
+ public ConfigurationProvider getMoaSpssConfig() {
+ return moaSpssConfig;
+ }
+
+ /**
+ * Get configuration object for IAIK modules from start-up process.
+ *
+ * @return IAIK module configuration
+ */
+ public ConfigurationData getIaikConfiguration() {
+ return iaikConfiguration;
+ }
+
+}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java
index 6ef9c57..28231e6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java
@@ -21,13 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.init;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
-import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.ServiceLoader;
import java.util.Timer;
@@ -39,7 +37,6 @@ import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.api.common.TSLConfiguration;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
-import at.gv.egovernment.moa.spss.server.iaik.config.LoggerConfigImpl;
import at.gv.egovernment.moa.spss.server.service.RevocationArchiveCleaner;
import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
import at.gv.egovernment.moa.spss.tsl.timer.TSLUpdaterTimerTask;
@@ -51,11 +48,13 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.DOMUtils;
import iaik.asn1.ObjectID;
+import iaik.pkcs.pkcs12.PKCS12KeyStore;
+import iaik.server.ConfigurationData;
import iaik.utils.RFC2253NameParser;
/**
* MOA SP/SS web service initialization.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -66,37 +65,40 @@ public class SystemInitializer {
private static final String LOGGING_HIERARCHY = "moa.spss.server";
/** Whether XML schema grammars have been initialized. */
private static boolean grammarsInitialized = false;
-
+
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SystemInitializer.class);
- private static ServiceLoader<ExternalInitializer> initializerServices =
- ServiceLoader.load(ExternalInitializer.class);
-
-
+ private static ServiceLoader<ExternalInitializer> initializerServices =
+ ServiceLoader.load(ExternalInitializer.class);
+ private static ConfigurationData iaikConfiguration;
+ private static ConfigurationProvider config;
+
private static void runInitializer(ConfigurationProvider configurationProvider) {
- Iterator<ExternalInitializer> initializerIterator = initializerServices.iterator();
- logger.info("Running external initializers");
- while(initializerIterator.hasNext()) {
- ExternalInitializer externalInitializer = initializerIterator.next();
- externalInitializer.initialize(configurationProvider);
- }
+ final Iterator<ExternalInitializer> initializerIterator = initializerServices.iterator();
+ logger.info("Running external initializers");
+ while (initializerIterator.hasNext()) {
+ final ExternalInitializer externalInitializer = initializerIterator.next();
+ externalInitializer.initialize(configurationProvider);
+ }
}
-
+
/**
* Initialize the MOA SP/SS webservice.
+ *
+ * @return
*/
- public static void init() {
-
- logger.info("##############################################################################");
- logger.info("##############################################################################");
- logger.info("### ###");
- logger.info("### LOADING MOA-SPSS ###");
- logger.info("### ================ ###");
- logger.info("### ###");
- logger.info("##############################################################################");
- logger.info("##############################################################################");
-
- MessageProvider msg = MessageProvider.getInstance();
+ public static StartupConfigurationHolder init() {
+
+ logger.info("##############################################################################");
+ logger.info("##############################################################################");
+ logger.info("### ###");
+ logger.info("### LOADING MOA-SPSS ###");
+ logger.info("### ================ ###");
+ logger.info("### ###");
+ logger.info("##############################################################################");
+ logger.info("##############################################################################");
+
+ final MessageProvider msg = MessageProvider.getInstance();
Thread archiveCleaner;
@@ -105,98 +107,99 @@ public class SystemInitializer {
// set up a logging context for logging the startup
LoggingContextManager.getInstance().setLoggingContext(
- new LoggingContext("startup"));
-
+ new LoggingContext("startup"));
+
// AxisProperties.setProperty("enableNamespacePrefixOptimization","false");
// AxisProperties.setProperty("disablePrettyXML", "true");
// AxisProperties.setProperty("axis.doAutoTypes", "true");
-
- // initialize preparsed Xerces grammar pool for faster XML
+
+ // initialize preparsed Xerces grammar pool for faster XML
// parsing/validating
try {
if (!grammarsInitialized) {
- Class clazz = SystemInitializer.class;
+ final Class clazz = SystemInitializer.class;
// preparse XML schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.XML_SCHEMA_LOCATION),
- Constants.XML_NS_URI);
+ clazz.getResourceAsStream(Constants.XML_SCHEMA_LOCATION),
+ Constants.XML_NS_URI);
// preparse XMLDsig Filter2 schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION),
- Constants.DSIG_FILTER2_NS_URI);
+ clazz.getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION),
+ Constants.DSIG_FILTER2_NS_URI);
// preparse XMLDsig schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION),
- Constants.DSIG_NS_URI);
+ clazz.getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION),
+ Constants.DSIG_NS_URI);
// preparse MOA schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.MOA_SCHEMA_LOCATION),
- Constants.MOA_NS_URI);
+ clazz.getResourceAsStream(Constants.MOA_SCHEMA_LOCATION),
+ Constants.MOA_NS_URI);
grammarsInitialized = true;
}
- } catch (IOException e) {
+ } catch (final IOException e) {
Logger.warn(new LogMsg(msg.getMessage("init.04", null)), e);
}
-
+
// initialize configuration
try {
- Logger.info("Initialize MOA-SP/SS configuration ... ");
- ConfigurationProvider config = ConfigurationProvider.getInstance();
-
- //initialize TSL module
- TSLConfiguration moaSPTslConfig = config.getTSLConfiguration();
- if (moaSPTslConfig != null) {
- Logger.debug("Starting TSL-Service initialization ... ");
- TslConfigurationImpl tslConfig = new TslConfigurationImpl();
- tslConfig.setEuTslURL(moaSPTslConfig.getEuTSLUrl());
- tslConfig.setTslWorkingDirectory(moaSPTslConfig.getWorkingDirectory());
- tslConfig.setNetworkReadTimeout(config.getReadTimeout() / 1000);
-
- Logger.info(new LogMsg(msg.getMessage("config.41", null)));
- TSLServiceFactory.initialize(tslConfig);
- Logger.info("TSL-Service client initialization finished");
-
- //initialize TSL Update Task
- initTSLUpdateTask(moaSPTslConfig);
-
- }
+ Logger.info("Initialize MOA-SP/SS configuration ... ");
+ config = ConfigurationProvider.getInstance();
+
+ // initialize TSL module
+ final TSLConfiguration moaSPTslConfig = config.getTSLConfiguration();
+ if (moaSPTslConfig != null) {
+ Logger.debug("Starting TSL-Service initialization ... ");
+ final TslConfigurationImpl tslConfig = new TslConfigurationImpl();
+ tslConfig.setEuTslURL(moaSPTslConfig.getEuTSLUrl());
+ tslConfig.setTslWorkingDirectory(moaSPTslConfig.getWorkingDirectory());
+ tslConfig.setNetworkReadTimeout(config.getReadTimeout() / 1000);
+
+ Logger.info(new LogMsg(msg.getMessage("config.41", null)));
+ TSLServiceFactory.initialize(tslConfig);
+ Logger.info("TSL-Service client initialization finished");
+
+ // initialize TSL Update Task
+ initTSLUpdateTask(moaSPTslConfig);
+
+ }
+
+ Logger.info("Register additional RFC2253 Object identifier");
+ RFC2253NameParser.register(
+ "organizationIdentifier",
+ new ObjectID("2.5.4.97", "organizationIdentifier", (String) null, false));
+
+ Logger.info("Building IAIK-MOA configuration ... ");
+ iaikConfiguration = new IaikConfigurator().configure(config);
+
+ runInitializer(config);
- Logger.info("Register additional RFC2253 Object identifier");
- RFC2253NameParser.register(
- "organizationIdentifier",
- new ObjectID("2.5.4.97", "organizationIdentifier", (String) null, false));
-
-
- Logger.info("Building IAIK-MOA configuration ... ");
- new IaikConfigurator().configure(config);
-
-
- runInitializer(config);
- Logger.info(new LogMsg(msg.getMessage("init.01", null)));
-
- } catch (MOAException e) {
- Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
+ // set Fallback mode in IAIK KeyStore implementation to 'true' to fix problems default behavior of JVM
+ PKCS12KeyStore.setUseJKSFallBack(true);
+ Logger.info("Set fallback mode in: " + PKCS12KeyStore.class.getSimpleName()
+ + " to :" + PKCS12KeyStore.getUseJKSFallBack());
- } catch (Throwable e) {
- Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
- throw new RuntimeException(e);
-
- } finally {
- logger.info("Configuration initialized");
- }
-
-
-
+ Logger.info(new LogMsg(msg.getMessage("init.01", null)));
+
+ } catch (final MOAException e) {
+ Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
+ throw new RuntimeException(e);
+
+ } catch (final Throwable e) {
+ Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
+ throw new RuntimeException(e);
+
+ }
+
// CHANGE IXSIL to XSECT
// set IXSIL debug output
- //IXSILInit.setPrintDebugLog(
- // Logger.isDebugEnabled(IaikLog.IAIK_LOG_HIERARCHY));
- //Logger.info("Registering XSECT");
- //XSecProvider.addAsProvider(true);
-
+ // IXSILInit.setPrintDebugLog(
+ // Logger.isDebugEnabled(IaikLog.IAIK_LOG_HIERARCHY));
+ // Logger.info("Registering XSECT");
+ // XSecProvider.addAsProvider(true);
+
// start the archive cleanup thread
archiveCleaner =
- new Thread(new RevocationArchiveCleaner(ARCHIVE_CLEANUP_INTERVAL));
+ new Thread(new RevocationArchiveCleaner(ARCHIVE_CLEANUP_INTERVAL));
archiveCleaner.setName("RevocationArchiveCleaner");
archiveCleaner.setDaemon(true);
archiveCleaner.setPriority(Thread.MIN_PRIORITY);
@@ -207,42 +210,57 @@ public class SystemInitializer {
logger.info("==============================================================================");
logger.info("=== CONFIGURATION DONE ===");
logger.info("==============================================================================");
+
+ return new StartupConfigurationHolder(config, iaikConfiguration);
+
+ }
+
+ /**
+ * Get configuration object from IAIK modules.
+ *
+ * @return Configuration or <code>null</code> of it was not configurated yet
+ */
+ public static ConfigurationData getIaikConfiguration() {
+ return iaikConfiguration;
+
}
-
+
private static void initTSLUpdateTask(TSLConfiguration tslconfig) {
- MessageProvider msg = MessageProvider.getInstance();
- if (tslconfig != null) {
- // get start time and period from config
- long period = tslconfig.getUpdateSchedulePeriod();
- Date startConfig = tslconfig.getUpdateScheduleStartTime();
-
- // get hh:mm:ss from config date
- Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
- calendar.setTime(startConfig); // assigns calendar to given date
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- int min = calendar.get(Calendar.MINUTE);
- int sec = calendar.get(Calendar.SECOND);
-
- // create date with today and time from config
- Calendar cal = Calendar.getInstance();
- Date now = cal.getTime();
- cal.set(Calendar.HOUR_OF_DAY, hour);
- cal.set(Calendar.MINUTE, min);
- cal.set(Calendar.SECOND, sec);
-
- // proposed start time
- Date start = cal.getTime();
-
- // if start time has already passed today - add one day (86400000 milliseconds = 1 day)
- if (start.before(now))
- start = new Date(start.getTime() + 86400000);
-
- Logger.debug(new LogMsg(msg.getMessage("config.46", new String[]{start.toString(), "" + period})));
-
- // start TSL updater task
- Timer timer = new Timer("TSL_DB_Updater");
- timer.schedule(new TSLUpdaterTimerTask(), start, period);
+ final MessageProvider msg = MessageProvider.getInstance();
+ if (tslconfig != null) {
+ // get start time and period from config
+ final long period = tslconfig.getUpdateSchedulePeriod();
+ final Date startConfig = tslconfig.getUpdateScheduleStartTime();
+
+ // get hh:mm:ss from config date
+ final Calendar calendar = Calendar.getInstance(); // creates a new calendar instance
+ calendar.setTime(startConfig); // assigns calendar to given date
+ final int hour = calendar.get(Calendar.HOUR_OF_DAY);
+ final int min = calendar.get(Calendar.MINUTE);
+ final int sec = calendar.get(Calendar.SECOND);
+
+ // create date with today and time from config
+ final Calendar cal = Calendar.getInstance();
+ final Date now = cal.getTime();
+ cal.set(Calendar.HOUR_OF_DAY, hour);
+ cal.set(Calendar.MINUTE, min);
+ cal.set(Calendar.SECOND, sec);
+
+ // proposed start time
+ Date start = cal.getTime();
+
+ // if start time has already passed today - add one day (86400000 milliseconds =
+ // 1 day)
+ if (start.before(now)) {
+ start = new Date(start.getTime() + 86400000);
}
+
+ Logger.debug(new LogMsg(msg.getMessage("config.46", new String[] { start.toString(), "" + period })));
+
+ // start TSL updater task
+ final Timer timer = new Timer("TSL_DB_Updater");
+ timer.schedule(new TSLUpdaterTimerTask(), start, period);
+ }
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
index 4050ebc..2e7445e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureCreationInvoker.java
@@ -21,19 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
-import iaik.server.modules.algorithms.HashAlgorithms;
-import iaik.server.modules.cmssign.CMSSignature;
-import iaik.server.modules.cmssign.CMSSignatureCreationException;
-import iaik.server.modules.cmssign.CMSSignatureCreationModule;
-import iaik.server.modules.cmssign.CMSSignatureCreationModuleFactory;
-import iaik.server.modules.cmssign.CMSSignatureCreationProfile;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -76,38 +65,46 @@ import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.Constants;
+import iaik.server.modules.algorithms.HashAlgorithms;
+import iaik.server.modules.cmssign.CMSSignature;
+import iaik.server.modules.cmssign.CMSSignatureCreationException;
+import iaik.server.modules.cmssign.CMSSignatureCreationModule;
+import iaik.server.modules.cmssign.CMSSignatureCreationModuleFactory;
+import iaik.server.modules.cmssign.CMSSignatureCreationProfile;
+import iaik.server.modules.keys.KeyEntryID;
+import iaik.server.modules.keys.KeyModule;
+import iaik.server.modules.keys.KeyModuleFactory;
/**
* A class providing an API based interface to the
* <code>CMSSignatureCreationModule</code>.
- *
- * This class performs the invocation of the
+ *
+ * This class performs the invocation of the
* <code>iaik.server.modules.cmssign.CMSSignatureCreationModule</code> from a
* <code>CreateCMSSignatureRequest</code> given as an API object. The result of
* the invocation is integrated into a <code>CreateCMSSignatureResponse</code>
* and returned.
- *
+ *
* @version $Id$
*/
public class CMSSignatureCreationInvoker {
-
- private static Map HASH_ALGORITHM_MAPPING;
-
- static {
- HASH_ALGORITHM_MAPPING = new HashMap();
- HASH_ALGORITHM_MAPPING.put(Constants.SHA1_URI, HashAlgorithms.SHA1);
- HASH_ALGORITHM_MAPPING.put(Constants.SHA256_URI, HashAlgorithms.SHA256);
- HASH_ALGORITHM_MAPPING.put(Constants.SHA384_URI, HashAlgorithms.SHA384);
- HASH_ALGORITHM_MAPPING.put(Constants.SHA512_URI, HashAlgorithms.SHA512);
- }
-
+
+ private static Map HASH_ALGORITHM_MAPPING;
+
+ static {
+ HASH_ALGORITHM_MAPPING = new HashMap();
+ HASH_ALGORITHM_MAPPING.put(Constants.SHA1_URI, HashAlgorithms.SHA1);
+ HASH_ALGORITHM_MAPPING.put(Constants.SHA256_URI, HashAlgorithms.SHA256);
+ HASH_ALGORITHM_MAPPING.put(Constants.SHA384_URI, HashAlgorithms.SHA384);
+ HASH_ALGORITHM_MAPPING.put(Constants.SHA512_URI, HashAlgorithms.SHA512);
+ }
/** The single instance of this class. */
private static CMSSignatureCreationInvoker instance = null;
/**
* Get the only instance of this class.
- *
+ *
* @return The only instance of this class.
*/
public static synchronized CMSSignatureCreationInvoker getInstance() {
@@ -119,273 +116,271 @@ public class CMSSignatureCreationInvoker {
/**
* Create a new <code>CMSSignatureCreationInvoker</code>.
- *
+ *
* Protected to disallow multiple instances.
*/
protected CMSSignatureCreationInvoker() {
}
-
-
/**
* Process the <code>CreateCMSSignatureRequest<code> message and invoke the
* <code>XMLSignatureCreationModule</code> for every
* <code>SingleSignatureInfo</code> contained in the request.
- *
+ *
* @param request A <code>CreateCMSSignatureRequest<code> API object
* containing the information for creating the signature(s).
- * @param reserved A <code>Set</code> of reserved object IDs.
- *
- * @return A <code>CreateCMSSignatureResponse</code> API object containing
- * the created signature(s). The response contains either a
- * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code>
- * for each <code>SingleSignatureInfo</code> in the request.
- * @throws MOAException An error occurred during signature creation.
+ * &#64;param reserved A <code>Set</code> of reserved object IDs.
+ *
+ * @return A <code>CreateCMSSignatureResponse</code> API object containing the
+ * created signature(s). The response contains either a
+ * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code> for
+ * each <code>SingleSignatureInfo</code> in the request.
+ * @throws MOAException An error occurred during signature creation.
*/
public CreateCMSSignatureResponse createCMSSignature(
- CreateCMSSignatureRequest request,
- Set reserved)
- throws MOAException {
+ CreateCMSSignatureRequest request,
+ Set reserved)
+ throws MOAException {
+
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // LoggingContext loggingCtx =
+ // LoggingContextManager.getInstance().getLoggingContext();
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- //LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext();
+ final CreateCMSSignatureResponseBuilder responseBuilder = new CreateCMSSignatureResponseBuilder();
+ final CreateCMSSignatureResponse response = new CreateCMSSignatureResponseImpl();
- CreateCMSSignatureResponseBuilder responseBuilder = new CreateCMSSignatureResponseBuilder();
- CreateCMSSignatureResponse response = new CreateCMSSignatureResponseImpl();
+ boolean isSecurityLayerConform = false;
+ boolean isPAdESConformRequired = false;
+ String structure = null;
+ String mimetype = null;
- boolean isSecurityLayerConform = false;
- boolean isPAdESConformRequired = false;
- String structure = null;
- String mimetype = null;
-
- // select the SingleSignatureInfo elements
- Iterator singleSignatureInfoIter = request.getSingleSignatureInfos().iterator();
+ // select the SingleSignatureInfo elements
+ final Iterator singleSignatureInfoIter = request.getSingleSignatureInfos().iterator();
// iterate over all the SingleSignatureInfo elements in the request
- while (singleSignatureInfoIter.hasNext()) {
- SingleSignatureInfo singleSignatureInfo = (SingleSignatureInfo) singleSignatureInfoIter.next();
- isSecurityLayerConform = singleSignatureInfo.isSecurityLayerConform();
- isPAdESConformRequired = singleSignatureInfo.isPAdESConform();
-
- //PAdES conformity always requires SecurityLayer conformity, because certificates must be included
- if (isPAdESConformRequired && !isSecurityLayerConform) {
- isSecurityLayerConform = isPAdESConformRequired;
- Logger.debug("Set SecurityLayerConformity to 'true' because PAdES conformity is requested");
-
- }
-
-
- DataObjectInfo dataObjectInfo = singleSignatureInfo.getDataObjectInfo();
- structure = dataObjectInfo.getStructure();
-
- CMSDataObject dataobject = dataObjectInfo.getDataObject();
- MetaInfo metainfo = dataobject.getMetaInfo();
-
- /*TODO: do not set SigningTime in IAIK-MOA request or any other
- * API method/parameter when IAIK-MOA API is updated.
- * Maybe also update mimetype solution below
- */
- //does not set mimetype if PAdES conformity is requested
- if (!isPAdESConformRequired) {
- mimetype = metainfo.getMimeType();
-
- } else
- Logger.debug("PAdES conformity requested. Does not set mimetype into CAdES signature");
-
- CMSContent content = dataobject.getContent();
- InputStream contentIs = null;
- // build the content data
- switch (content.getContentType()) {
- case CMSContent.EXPLICIT_CONTENT :
- contentIs = ((CMSContentExcplicit) content).getBinaryContent();
- break;
- case CMSContent.REFERENCE_CONTENT :
- String reference = ((CMSContentReference) content).getReference();
- if (!"".equals(reference)) {
- ExternalURIResolver resolver = new ExternalURIResolver();
- contentIs = resolver.resolve(reference);
- } else {
- throw new MOAApplicationException("2301", null);
- }
- break;
- default : {
- throw new MOAApplicationException("2301", null);
- }
- }
-
- // create CMSSignatureCreationModuleFactory
- CMSSignatureCreationModule module = CMSSignatureCreationModuleFactory.getInstance();
-
- List signedProperties = null;
- boolean includeData = true;
- if (structure.compareTo("enveloping") == 0)
- includeData = true;
- if (structure.compareTo("detached") == 0)
- includeData = false;
-
- ConfigurationProvider config = context.getConfiguration();
-
- // get the key group id
- String keyGroupID = request.getKeyIdentifier();
- // set the key set
- Set keySet = buildKeySet(keyGroupID);
- if (keySet == null) {
- throw new MOAApplicationException("2231", null);
- } else if (keySet.size() == 0) {
- throw new MOAApplicationException("2232", null);
- }
-
- // get digest algorithm
- String digestAlgorithm = getDigestAlgorithm(config, keyGroupID);
-
- // create CMSSignatureCreation profile:
- CMSSignatureCreationProfile profile = new CMSSignatureCreationProfileImpl(
- keySet,
- digestAlgorithm,
- signedProperties,
- isSecurityLayerConform,
- includeData,
- mimetype,
- isPAdESConformRequired);
-
- // create CMSSignature from the CMSSignatureCreationModule
- // build the additionalSignedProperties
- List additionalSignedProperties = buildAdditionalSignedProperties();
- TransactionId tid = new TransactionId(context.getTransactionID());
- try {
- CMSSignature signature = module.createSignature(profile, additionalSignedProperties, tid);
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- // get CMS SignedData output stream from the CMSSignature and wrap it around out
- boolean base64 = true;
- OutputStream signedDataStream = signature.getSignature(out, base64);
-
- // now write the data to be signed to the signedDataStream
- // Stream based, this should have a better performance
- FilteredOutputStream filteredOuputStream = new FilteredOutputStream(
- signedDataStream, 4096, dataobject.getExcludeByteRangeFrom(),
- dataobject.getExcludeByteRangeTo());
-
- IOUtils.copyLarge(contentIs, filteredOuputStream);
- filteredOuputStream.flush();
-
- // finish SignedData processing by closing signedDataStream
- signedDataStream.close();
- String base64value = out.toString();
-
- responseBuilder.addCMSSignature(base64value);
-
-
- } catch (CMSSignatureCreationException e) {
- MOAException moaException = IaikExceptionMapper.getInstance().map(e);
-
- responseBuilder.addError(
- moaException.getMessageId(),
- moaException.getMessage());
- Logger.warn(moaException.getMessage(), e);
-
- }
- catch (IOException e) {
- throw new MOAApplicationException("2301", null, e);
- }
-
- }
-
+ while (singleSignatureInfoIter.hasNext()) {
+ final SingleSignatureInfo singleSignatureInfo = (SingleSignatureInfo) singleSignatureInfoIter.next();
+ isSecurityLayerConform = singleSignatureInfo.isSecurityLayerConform();
+ isPAdESConformRequired = singleSignatureInfo.isPAdESConform();
+
+ // PAdES conformity always requires SecurityLayer conformity, because
+ // certificates must be included
+ if (isPAdESConformRequired && !isSecurityLayerConform) {
+ isSecurityLayerConform = isPAdESConformRequired;
+ Logger.debug("Set SecurityLayerConformity to 'true' because PAdES conformity is requested");
+
+ }
+
+ final DataObjectInfo dataObjectInfo = singleSignatureInfo.getDataObjectInfo();
+ structure = dataObjectInfo.getStructure();
+
+ final CMSDataObject dataobject = dataObjectInfo.getDataObject();
+ final MetaInfo metainfo = dataobject.getMetaInfo();
+
+ /*
+ * TODO: do not set SigningTime in IAIK-MOA request or any other API
+ * method/parameter when IAIK-MOA API is updated. Maybe also update mimetype
+ * solution below
+ */
+ // does not set mimetype if PAdES conformity is requested
+ if (!isPAdESConformRequired) {
+ mimetype = metainfo.getMimeType();
+
+ } else {
+ Logger.debug("PAdES conformity requested. Does not set mimetype into CAdES signature");
+ }
+
+ final CMSContent content = dataobject.getContent();
+ InputStream contentIs = null;
+ // build the content data
+ switch (content.getContentType()) {
+ case CMSContent.EXPLICIT_CONTENT:
+ contentIs = ((CMSContentExcplicit) content).getBinaryContent();
+ break;
+ case CMSContent.REFERENCE_CONTENT:
+ final String reference = ((CMSContentReference) content).getReference();
+ if (!"".equals(reference)) {
+ final ExternalURIResolver resolver = new ExternalURIResolver();
+ contentIs = resolver.resolve(reference);
+ } else {
+ throw new MOAApplicationException("2301", null);
+ }
+ break;
+ default: {
+ throw new MOAApplicationException("2301", null);
+ }
+ }
+
+ // create CMSSignatureCreationModuleFactory
+ final CMSSignatureCreationModule module = CMSSignatureCreationModuleFactory.getInstance();
+
+ final List signedProperties = null;
+ boolean includeData = true;
+ if (structure.compareTo("enveloping") == 0) {
+ includeData = true;
+ }
+ if (structure.compareTo("detached") == 0) {
+ includeData = false;
+ }
+
+ final ConfigurationProvider config = context.getConfiguration();
+
+ // get the key group id
+ final String keyGroupID = request.getKeyIdentifier();
+ // set the key set
+ final Set keySet = buildKeySet(keyGroupID);
+ if (keySet == null) {
+ throw new MOAApplicationException("2231", null);
+ } else if (keySet.size() == 0) {
+ throw new MOAApplicationException("2232", null);
+ }
+
+ // get digest algorithm
+ final String digestAlgorithm = getDigestAlgorithm(config, keyGroupID);
+
+ // create CMSSignatureCreation profile:
+ final CMSSignatureCreationProfile profile = new CMSSignatureCreationProfileImpl(
+ keySet,
+ digestAlgorithm,
+ signedProperties,
+ isSecurityLayerConform,
+ includeData,
+ mimetype,
+ isPAdESConformRequired);
+
+ // create CMSSignature from the CMSSignatureCreationModule
+ // build the additionalSignedProperties
+ final List additionalSignedProperties = buildAdditionalSignedProperties();
+ final TransactionId tid = new TransactionId(context.getTransactionID());
+ try {
+ final CMSSignature signature = module.createSignature(profile, additionalSignedProperties, tid);
+ final ByteArrayOutputStream out = new ByteArrayOutputStream();
+ // get CMS SignedData output stream from the CMSSignature and wrap it around out
+ final boolean base64 = true;
+ final OutputStream signedDataStream = signature.getSignature(out, base64);
+
+ // now write the data to be signed to the signedDataStream
+ // Stream based, this should have a better performance
+ final FilteredOutputStream filteredOuputStream = new FilteredOutputStream(
+ signedDataStream, 4096, dataobject.getExcludeByteRangeFrom(),
+ dataobject.getExcludeByteRangeTo());
+
+ IOUtils.copyLarge(contentIs, filteredOuputStream);
+ filteredOuputStream.flush();
+
+ // finish SignedData processing by closing signedDataStream
+ signedDataStream.close();
+ final String base64value = out.toString();
+
+ responseBuilder.addCMSSignature(base64value);
+
+ } catch (final CMSSignatureCreationException e) {
+ final MOAException moaException = IaikExceptionMapper.getInstance().map(e);
+
+ responseBuilder.addError(
+ moaException.getMessageId(),
+ moaException.getMessage());
+ Logger.warn(moaException.getMessage(), e);
+
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2301", null, e);
+ }
+
+ }
return responseBuilder.getResponse();
}
-
+
private boolean inRange(BigDecimal counter, CMSDataObject dataobject) {
- BigDecimal from = dataobject.getExcludeByteRangeFrom();
- BigDecimal to = dataobject.getExcludeByteRangeTo();
-
- if ( (from == null) || (to == null))
- return false;
-
- int compare = counter.compareTo(from);
- if (compare == -1)
- return false;
- else {
- compare = counter.compareTo(to);
- if (compare == 1)
- return false;
- else
- return true;
- }
-
-
-
+ final BigDecimal from = dataobject.getExcludeByteRangeFrom();
+ final BigDecimal to = dataobject.getExcludeByteRangeTo();
+
+ if (from == null || to == null) {
+ return false;
+ }
+
+ int compare = counter.compareTo(from);
+ if (compare == -1) {
+ return false;
+ } else {
+ compare = counter.compareTo(to);
+ if (compare == 1) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
}
-
- private String getDigestAlgorithm(ConfigurationProvider config, String keyGroupID) throws MOASystemException {
- // get digest method on key group level (if configured)
- String configDigestMethodKG = config.getKeyGroup(keyGroupID).getDigestMethodAlgorithm();
- // get default digest method (if configured)
- String configDigestMethod = config.getDigestMethodAlgorithmName();
-
-
- String digestMethod = null;
- if (configDigestMethodKG != null) {
- // if KG specific digest method is configured
- digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG);
- if (digestMethod == null) {
- error(
- "config.17",
- new Object[] { configDigestMethodKG});
- throw new MOASystemException("2900", null);
- }
- Logger.debug("Digest algorithm: " + digestMethod + "(configured in KeyGroup)");
- }
- else {
- // else get default configured digest method
- digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod);
- if (digestMethod == null) {
- error(
- "config.17",
- new Object[] { configDigestMethod});
- throw new MOASystemException("2900", null);
- }
- Logger.debug("Digest algorithm: " + digestMethod + "(default)");
-
- }
- return digestMethod;
+ private String getDigestAlgorithm(ConfigurationProvider config, String keyGroupID)
+ throws MOASystemException {
+ // get digest method on key group level (if configured)
+ final String configDigestMethodKG = config.getKeyGroup(keyGroupID).getDigestMethodAlgorithm();
+ // get default digest method (if configured)
+ final String configDigestMethod = config.getDigestMethodAlgorithmName();
+
+ String digestMethod = null;
+ if (configDigestMethodKG != null) {
+ // if KG specific digest method is configured
+ digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG);
+ if (digestMethod == null) {
+ error(
+ "config.17",
+ new Object[] { configDigestMethodKG });
+ throw new MOASystemException("2900", null);
+ }
+ Logger.debug("Digest algorithm: " + digestMethod + "(configured in KeyGroup)");
+ } else {
+ // else get default configured digest method
+ digestMethod = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod);
+ if (digestMethod == null) {
+ error(
+ "config.17",
+ new Object[] { configDigestMethod });
+ throw new MOASystemException("2900", null);
+ }
+ Logger.debug("Digest algorithm: " + digestMethod + "(default)");
+
+ }
+ return digestMethod;
}
-
+
/**
* Utility function to issue an error message to the log.
- *
- * @param messageId The ID of the message to log.
+ *
+ * @param messageId The ID of the message to log.
* @param parameters Additional message parameters.
*/
private static void error(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
Logger.error(new LogMsg(msg.getMessage(messageId, parameters)));
}
-
+
/**
* Build the set of <code>KeyEntryID</code>s available to the given
* <code>keyGroupID</code>.
- *
+ *
* @param keyGroupID The keygroup ID for which the available keys should be
- * returned.
- * @return The <code>Set</code> of <code>KeyEntryID</code>s
- * identifying the available keys.
+ * returned.
+ * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the
+ * available keys.
*/
private Set buildKeySet(String keyGroupID) {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
Set keyGroupEntries;
// get the KeyGroup entries from the configuration
if (context.getClientCertificate() != null) {
- X509Certificate cert = context.getClientCertificate()[0];
- Principal issuer = cert.getIssuerDN();
- BigInteger serialNumber = cert.getSerialNumber();
+ final X509Certificate cert = context.getClientCertificate()[0];
+ final Principal issuer = cert.getIssuerDN();
+ final BigInteger serialNumber = cert.getSerialNumber();
keyGroupEntries =
- config.getKeyGroupEntries(issuer, serialNumber, keyGroupID);
+ config.getKeyGroupEntries(issuer, serialNumber, keyGroupID);
} else {
keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
}
@@ -396,23 +391,23 @@ public class CMSSignatureCreationInvoker {
} else if (keyGroupEntries.size() == 0) {
return Collections.EMPTY_SET;
} else {
- KeyModule module =
- KeyModuleFactory.getInstance(
- new TransactionId(context.getTransactionID()));
- Set keyEntryIDs = module.getPrivateKeyEntryIDs();
- Set keySet = new HashSet();
+ final KeyModule module =
+ KeyModuleFactory.getInstance(
+ new TransactionId(context.getTransactionID()));
+ final Set keyEntryIDs = module.getPrivateKeyEntryIDs();
+ final Set keySet = new HashSet();
Iterator iter;
// filter out the keys that do not exist in the IAIK configuration
// by walking through the key entries and checking if the exist in the
// keyGroupEntries
for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
- KeyGroupEntry entry =
- new KeyGroupEntry(
- entryID.getModuleID(),
- entryID.getCertificateIssuer(),
- entryID.getCertificateSerialNumber());
+ final KeyEntryID entryID = (KeyEntryID) iter.next();
+ final KeyGroupEntry entry =
+ new KeyGroupEntry(
+ entryID.getModuleID(),
+ entryID.getCertificateIssuer(),
+ entryID.getCertificateSerialNumber());
if (keyGroupEntries.contains(entry)) {
keySet.add(entryID);
}
@@ -423,18 +418,18 @@ public class CMSSignatureCreationInvoker {
/**
* Build the list of additional signed properties.
- *
+ *
* Based on the generic configuration setting
- * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a
- * constant <code>SigningTime</code> will be added to the properties.
- *
+ * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a constant
+ * <code>SigningTime</code> will be added to the properties.
+ *
* @return The <code>List</code> of additional signed properties.
*/
private List buildAdditionalSignedProperties() {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- List additionalSignedProperties = Collections.EMPTY_LIST;
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final List additionalSignedProperties = Collections.EMPTY_LIST;
return additionalSignedProperties;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
index 74fa9ab..e18f957 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationInvoker.java
@@ -28,7 +28,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
-import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -55,12 +54,8 @@ import at.gv.egovernment.moa.spss.util.QCSSCDResult;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.logging.LoggingContext;
import at.gv.egovernment.moaspss.logging.LoggingContextManager;
-import iaik.server.ConfigurationException;
-import iaik.server.modules.AdESConstants;
-import iaik.server.modules.AdESFormVerificationResult;
import iaik.server.modules.IAIKException;
import iaik.server.modules.IAIKRuntimeException;
-import iaik.server.modules.SignatureVerificationProfile;
import iaik.server.modules.cmsverify.CMSSignatureVerificationModule;
import iaik.server.modules.cmsverify.CMSSignatureVerificationModuleFactory;
import iaik.server.modules.cmsverify.CMSSignatureVerificationProfile;
@@ -75,449 +70,459 @@ import iaik.x509.X509Certificate;
/**
* A class providing an interface to the
* <code>CMSSignatureVerificationModule</code>.
- *
+ *
* This class performs the invocation of the
* <code>iaik.server.modules.cmsverify.CMSSignatureVerificationModule</code>
* from a <code>VerifyCMSSignatureRequest</code>. The result of the invocation
* is integrated into a <code>VerifyCMSSignatureResponse</code> returned.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CMSSignatureVerificationInvoker {
- /** The single instance of this class. */
- private static CMSSignatureVerificationInvoker instance = null;
-
- /**
- * Return the only instance of this class.
- *
- * @return The only instance of this class.
- */
- public static synchronized CMSSignatureVerificationInvoker getInstance() {
- if (instance == null) {
- instance = new CMSSignatureVerificationInvoker();
- }
- return instance;
- }
-
- /**
- * Create a new <code>CMSSignatureVerificationInvoker</code>.
- *
- * Protected to disallow multiple instances.
- */
- protected CMSSignatureVerificationInvoker() {
- }
-
- /**
- * Verify a CMS signature.
- *
- * @param request
- * The <code>VerifyCMSSignatureRequest</code> containing the CMS
- * signature, as well as additional data needed for verification.
- * @return Element A <code>VerifyCMSSignatureResponse</code> containing the
- * answer to the <code>VerifyCMSSignatureRequest</code>.
- * @throws MOAException
- * An error occurred while processing the request.
- */
- public VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request) throws MOAException {
-
- CMSSignatureVerificationProfileFactory profileFactory = new CMSSignatureVerificationProfileFactory(request);
- VerifyCMSSignatureResponseBuilder responseBuilder = new VerifyCMSSignatureResponseBuilder();
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext();
- InputStream signature;
- InputStream signedContent = null;
- Date signingTime;
- List results;
- int[] signatories;
- InputStream input;
- byte[] buf = new byte[2048];
-
- // get the signature
- signature = request.getCMSSignature();
-
- // get the actual trustprofile
- TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId());
-
- try {
- // get the signing time
- signingTime = request.getDateTime();
-
- // build the profile
- if (request.isPDF()) {
- PDFSignatureVerificationProfile profile = profileFactory.createPDFProfile();
- Logger.debug("Sending PDFSignatureVerificationProfile to IAIK-MOA");
-
- PDFSignatureVerificationModule module = iaik.server.modules.pdfverify.PDFSignatureVerificationModuleFactory
- .getInstance();
-
- module.setLog(new IaikLog(loggingCtx.getNodeID()));
- //Logger.info(" Available: " + signature.available());
- module.init(signature, profile, new TransactionId(context.getTransactionID()));
-
- // input = module.getInputStream();
-
- // while (input.read(buf) > 0);
- if(request.isExtended()) {
- Logger.info("Running extended validation");
- results = module.verifyPAdESSignature(signingTime);
- } else {
- Logger.info("Running not extended validation");
- results = module.verifySignature(signingTime);
- }
-
- //PAdES module had to be closed manually
- module.closeModule();
-
- } else {
- // get the signed content
- signedContent = getSignedContent(request);
- CMSSignatureVerificationProfile profile = profileFactory.createProfile();
- Logger.debug("Sending CMSSignatureVerificationProfile to IAIK-MOA");
-
- // verify the signature
- CMSSignatureVerificationModule module = CMSSignatureVerificationModuleFactory.getInstance();
-
- module.setLog(new IaikLog(loggingCtx.getNodeID()));
-
- module.init(signature, signedContent, profile, new TransactionId(context.getTransactionID()));
- input = module.getInputStream();
-
- while (input.read(buf) > 0)
- ;
-
- if(request.isExtended()) {
- Logger.info("Running extended validation");
- results = module.verifyCAdESSignature(signingTime);
- } else {
- Logger.info("Running not extended validation");
- results = module.verifySignature(signingTime);
- }
- // results = module.verifySignature(signingTime);
- }
-
- } catch (IAIKException e) {
- MOAException moaException = IaikExceptionMapper.getInstance().map(e);
- throw moaException;
- } catch (IAIKRuntimeException e) {
- MOAException moaException = IaikExceptionMapper.getInstance().map(e);
- throw moaException;
- } catch (IOException e) {
- throw new MOAApplicationException("2244", null, e);
- } catch (MOAException e) {
- throw e;
- } finally {
- try {
- if (signedContent != null)
- signedContent.close();
-
- if (signature != null)
- signature.close();
-
- } catch (Throwable t) {
- // Intentionally do nothing here
- }
- }
-
- QCSSCDResult qcsscdresult = new QCSSCDResult();
-
- // build the response: for each signatory add the result to the response
- signatories = request.getSignatories();
- if (signatories == VerifyCMSSignatureRequest.ALL_SIGNATORIES) {
- Iterator resultIter;
-
- for (resultIter = results.iterator(); resultIter.hasNext();) {
- Object resultObject = resultIter.next();
- if (!request.isPDF()) {
- handleCMSResult(resultObject, responseBuilder, trustProfile);
- } else {
- handlePDFResult(resultObject, responseBuilder, trustProfile);
- }
- }
- } else {
- int i;
-
- for (i = 0; i < signatories.length; i++) {
- int sigIndex = signatories[i] - 1;
-
- try {
- Object resultObject = results.get(signatories[i] - 1);
- if (!request.isPDF()) {
- handleCMSResult(resultObject, responseBuilder, trustProfile);
- } else {
- handlePDFResult(resultObject, responseBuilder, trustProfile);
- }
- } catch (IndexOutOfBoundsException e) {
- throw new MOAApplicationException("2249", new Object[] { new Integer(sigIndex) });
- }
- }
- }
-
- return responseBuilder.getResponse();
- }
-
- private void handleCMSResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder,
- TrustProfile trustProfile) throws MOAException {
- QCSSCDResult qcsscdresult = new QCSSCDResult();
-
- if(resultObject == null) {
- Logger.warn("Result Object is null!");
- return;
- }
-
- CMSSignatureVerificationResult cmsResult = null;
- List adesResults = null;
- boolean extendedVerification = false;
-
- ExtendedCertificateCheckResult extCheckResult = null;
- if (resultObject instanceof ExtendedCMSSignatureVerificationResult) {
- Logger.info("Got ExtendedCMSSignatureVerificationResult");
- extendedVerification = true;
- ExtendedCMSSignatureVerificationResult result = (ExtendedCMSSignatureVerificationResult) resultObject;
- cmsResult = result.getCMSSignatureVerificationResult();
- adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult());
-
-
- if (Logger.isDebugEnabled() && adesResults != null) {
- Iterator adesIterator = adesResults.iterator();
- while (adesIterator.hasNext())
- Logger.debug("ADES Formresults: " + adesIterator.next().toString());
-
- }
-
- try {
- //Logger.info("Extended Validation Report: " + result.getName());
- Logger.debug("Extended Validation Code: " + result.getResultCode().toString());
- Logger.debug("Extended Validation Info: " + result.getInfo());
-
- extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode());
-
- } catch (NullPointerException e) {
- Logger.info("No extendend validation result available.");
-
- }
- } else {
- Logger.debug("Got CMSSignatureVerificationResult");
- cmsResult = (CMSSignatureVerificationResult) resultObject;
-
- }
-
- String issuerCountryCode = null;
- // QC/SSCD check
-
- if(cmsResult.getCertificateValidationResult() != null) {
- List list = cmsResult.getCertificateValidationResult().getCertificateChain();
- if (list != null) {
- X509Certificate[] chain = new X509Certificate[list.size()];
-
- Iterator it = list.iterator();
- int i = 0;
- while (it.hasNext()) {
- chain[i] = (X509Certificate) it.next();
- i++;
- }
-
- qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile.isTSLEnabled(), ConfigurationProvider.getInstance());
-
- // get signer certificate issuer country code
- issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0));
- }
- }
-
- responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(),
- qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults, extCheckResult,
- qcsscdresult.getTslInfos(), extendedVerification);
- }
-
- private void handlePDFResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder,
- TrustProfile trustProfile) throws MOAException {
- QCSSCDResult qcsscdresult = new QCSSCDResult();
-
- if(resultObject == null) {
- Logger.warn("Result Object is null!");
- return;
- }
-
- PDFSignatureVerificationResult cmsResult = null;
- List adesResults = null;
- boolean extendedVerification = false;
- Boolean coversFullDoc = null;
- int[] sigByteRange = null;
-
- ExtendedCertificateCheckResult extCheckResult = null;
- if (resultObject instanceof ExtendedPDFSignatureVerificationResult) {
- Logger.info("Got ExtendedPDFSignatureVerificationResult");
- extendedVerification = true;
- ExtendedPDFSignatureVerificationResult result = (ExtendedPDFSignatureVerificationResult) resultObject;
- cmsResult = result.getPDFSignatureVerificationResult();
- adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult());
-
- if (Logger.isDebugEnabled() && adesResults != null) {
- Iterator adesIterator = adesResults.iterator();
- while (adesIterator.hasNext())
- Logger.debug("ADES Formresults: " + adesIterator.next().toString());
-
- }
-
-
- try {
- Logger.debug("Extended Validation Code: " + result.getResultCode().toString());
-
- if (result.getDetailedExtendedReport() != null)
- Logger.debug("Extended Validation Info: " + result.getDetailedExtendedReport().getMessage());
- else
- Logger.debug("Extended Validation Info: " + result.getInfo());
-
-
- Logger.debug("Full extended Validation Infos: " + result.getInfo());
- extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode());
-
- } catch (NullPointerException e) {
- Logger.info("No extendend validation result available.");
-
- }
-
- } else {
- Logger.debug("Got PDFSignatureVerificationResult");
- cmsResult = (PDFSignatureVerificationResult) resultObject;
- }
-
- if (MiscUtil.isNotEmpty(cmsResult.getError()))
- Logger.info("Signature validation stopped with an error: " + cmsResult.getError());
-
- String issuerCountryCode = null;
- // QC/SSCD check
-
- if (cmsResult.getCertificateValidationResult() != null) {
- List list = cmsResult.getCertificateValidationResult().getCertificateChain();
- if (list != null) {
- X509Certificate[] chain = new X509Certificate[list.size()];
-
- Iterator it = list.iterator();
- int i = 0;
- while (it.hasNext()) {
- chain[i] = (X509Certificate) it.next();
- i++;
- }
-
- qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile.isTSLEnabled(), ConfigurationProvider.getInstance());
-
- // get signer certificate issuer country code
- issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0));
-
- }
- }
-
- responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(),
- qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults,
- extCheckResult, qcsscdresult.getTslInfos(), extendedVerification);
- }
-
- /**
- * Get the signed content contained either in the request itself or given as
- * a reference to external data.
- *
- * @param request
- * The <code>VerifyCMSSignatureRequest</code> containing the
- * signed content (or the reference to the signed content).
- * @return InputStream A stream providing the signed content data, or
- * <code>null</code> if no signed content was provided with the
- * request.
- * @throws MOAApplicationException
- * An error occurred building the stream.
- */
- private InputStream getSignedContent(VerifyCMSSignatureRequest request) throws MOAApplicationException {
-
- InputStream is = null;
- CMSDataObject dataObj;
- CMSContent content;
-
- // select the Content element
- dataObj = request.getDataObject();
- if (dataObj == null) {
- return null;
- }
- content = dataObj.getContent();
-
- // build the content data
- switch (content.getContentType()) {
- case CMSContent.EXPLICIT_CONTENT:
- is = ((CMSContentExcplicit) content).getBinaryContent();
- is = excludeByteRange(is, request);
- return is;
- case CMSContent.REFERENCE_CONTENT:
- String reference = ((CMSContentReference) content).getReference();
- if (!"".equals(reference)) {
- ExternalURIResolver resolver = new ExternalURIResolver();
- is = resolver.resolve(reference);
- is = excludeByteRange(is, request);
- return is;
- } else {
- return null;
- }
- default:
- return null;
- }
-
- }
-
- private InputStream excludeByteRange(InputStream contentIs, VerifyCMSSignatureRequest request)
- throws MOAApplicationException {
-
- int byteRead;
-
- ByteArrayOutputStream contentOs = new ByteArrayOutputStream();
-
- CMSDataObject dataobject = request.getDataObject();
- BigDecimal from = dataobject.getExcludeByteRangeFrom();
- BigDecimal to = dataobject.getExcludeByteRangeTo();
-
- if ((from == null) || (to == null))
- return contentIs;
-
- BigDecimal counter = new BigDecimal("0");
- BigDecimal one = new BigDecimal("1");
-
- try {
- while ((byteRead = contentIs.read()) >= 0) {
-
- if (inRange(counter, dataobject)) {
- // if byte is in byte range, set byte to 0x00
- contentOs.write(0);
- } else
- contentOs.write(byteRead);
-
- counter = counter.add(one);
- }
-
- InputStream is = new ByteArrayInputStream(contentOs.toByteArray());
-
- return is;
-
- } catch (IOException e) {
- throw new MOAApplicationException("2301", null, e);
- }
-
- }
-
- private boolean inRange(BigDecimal counter, CMSDataObject dataobject) {
- BigDecimal from = dataobject.getExcludeByteRangeFrom();
- BigDecimal to = dataobject.getExcludeByteRangeTo();
-
- if ((from == null) || (to == null))
- return false;
-
- int compare = counter.compareTo(from);
- if (compare == -1)
- return false;
- else {
- compare = counter.compareTo(to);
- if (compare == 1)
- return false;
- else
- return true;
- }
-
- }
+ /** The single instance of this class. */
+ private static CMSSignatureVerificationInvoker instance = null;
+
+ /**
+ * Return the only instance of this class.
+ *
+ * @return The only instance of this class.
+ */
+ public static synchronized CMSSignatureVerificationInvoker getInstance() {
+ if (instance == null) {
+ instance = new CMSSignatureVerificationInvoker();
+ }
+ return instance;
+ }
+
+ /**
+ * Create a new <code>CMSSignatureVerificationInvoker</code>.
+ *
+ * Protected to disallow multiple instances.
+ */
+ protected CMSSignatureVerificationInvoker() {
+ }
+
+ /**
+ * Verify a CMS signature.
+ *
+ * @param request The <code>VerifyCMSSignatureRequest</code> containing the CMS
+ * signature, as well as additional data needed for verification.
+ * @return Element A <code>VerifyCMSSignatureResponse</code> containing the
+ * answer to the <code>VerifyCMSSignatureRequest</code>.
+ * @throws MOAException An error occurred while processing the request.
+ */
+ public VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request)
+ throws MOAException {
+
+ final CMSSignatureVerificationProfileFactory profileFactory = new CMSSignatureVerificationProfileFactory(
+ request);
+ final VerifyCMSSignatureResponseBuilder responseBuilder = new VerifyCMSSignatureResponseBuilder();
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext();
+ InputStream signature;
+ InputStream signedContent = null;
+ Date signingTime;
+ List results;
+ int[] signatories;
+ InputStream input;
+ final byte[] buf = new byte[2048];
+
+ // get the signature
+ signature = request.getCMSSignature();
+
+ // get the actual trustprofile
+ final TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId());
+
+ try {
+ // get the signing time
+ signingTime = request.getDateTime();
+
+ // build the profile
+ if (request.isPDF()) {
+ final PDFSignatureVerificationProfile profile = profileFactory.createPDFProfile();
+ Logger.debug("Sending PDFSignatureVerificationProfile to IAIK-MOA");
+
+ final PDFSignatureVerificationModule module =
+ iaik.server.modules.pdfverify.PDFSignatureVerificationModuleFactory
+ .getInstance();
+
+ module.setLog(new IaikLog(loggingCtx.getNodeID()));
+ // Logger.info(" Available: " + signature.available());
+ module.init(signature, profile, new TransactionId(context.getTransactionID()));
+
+ // input = module.getInputStream();
+
+ // while (input.read(buf) > 0);
+ if (request.isExtended()) {
+ Logger.info("Running extended validation");
+ results = module.verifyPAdESSignature(signingTime);
+ } else {
+ Logger.info("Running not extended validation");
+ results = module.verifySignature(signingTime);
+ }
+
+ // PAdES module had to be closed manually
+ module.closeModule();
+
+ } else {
+ // get the signed content
+ signedContent = getSignedContent(request);
+ final CMSSignatureVerificationProfile profile = profileFactory.createProfile();
+ Logger.debug("Sending CMSSignatureVerificationProfile to IAIK-MOA");
+
+ // verify the signature
+ final CMSSignatureVerificationModule module = CMSSignatureVerificationModuleFactory.getInstance();
+
+ module.setLog(new IaikLog(loggingCtx.getNodeID()));
+
+ module.init(signature, signedContent, profile, new TransactionId(context.getTransactionID()));
+ input = module.getInputStream();
+
+ while (input.read(buf) > 0) {
+ ;
+ }
+
+ if (request.isExtended()) {
+ Logger.info("Running extended validation");
+ results = module.verifyCAdESSignature(signingTime);
+ } else {
+ Logger.info("Running not extended validation");
+ results = module.verifySignature(signingTime);
+ }
+ // results = module.verifySignature(signingTime);
+ }
+
+ } catch (final IAIKException e) {
+ final MOAException moaException = IaikExceptionMapper.getInstance().map(e);
+ throw moaException;
+ } catch (final IAIKRuntimeException e) {
+ final MOAException moaException = IaikExceptionMapper.getInstance().map(e);
+ throw moaException;
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2244", null, e);
+ } catch (final MOAException e) {
+ throw e;
+ } finally {
+ try {
+ if (signedContent != null) {
+ signedContent.close();
+ }
+
+ if (signature != null) {
+ signature.close();
+ }
+
+ } catch (final Throwable t) {
+ // Intentionally do nothing here
+ }
+ }
+
+ final QCSSCDResult qcsscdresult = new QCSSCDResult();
+
+ // build the response: for each signatory add the result to the response
+ signatories = request.getSignatories();
+ if (signatories == VerifyCMSSignatureRequest.ALL_SIGNATORIES) {
+ Iterator resultIter;
+
+ for (resultIter = results.iterator(); resultIter.hasNext();) {
+ final Object resultObject = resultIter.next();
+ if (!request.isPDF()) {
+ handleCMSResult(resultObject, responseBuilder, trustProfile);
+ } else {
+ handlePDFResult(resultObject, responseBuilder, trustProfile);
+ }
+ }
+ } else {
+ int i;
+
+ for (i = 0; i < signatories.length; i++) {
+ final int sigIndex = signatories[i] - 1;
+
+ try {
+ final Object resultObject = results.get(signatories[i] - 1);
+ if (!request.isPDF()) {
+ handleCMSResult(resultObject, responseBuilder, trustProfile);
+ } else {
+ handlePDFResult(resultObject, responseBuilder, trustProfile);
+ }
+ } catch (final IndexOutOfBoundsException e) {
+ throw new MOAApplicationException("2249", new Object[] { new Integer(sigIndex) });
+ }
+ }
+ }
+
+ return responseBuilder.getResponse();
+ }
+
+ private void handleCMSResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder,
+ TrustProfile trustProfile) throws MOAException {
+ QCSSCDResult qcsscdresult = new QCSSCDResult();
+
+ if (resultObject == null) {
+ Logger.warn("Result Object is null!");
+ return;
+ }
+
+ CMSSignatureVerificationResult cmsResult = null;
+ List adesResults = null;
+ boolean extendedVerification = false;
+
+ ExtendedCertificateCheckResult extCheckResult = null;
+ if (resultObject instanceof ExtendedCMSSignatureVerificationResult) {
+ Logger.info("Got ExtendedCMSSignatureVerificationResult");
+ extendedVerification = true;
+ final ExtendedCMSSignatureVerificationResult result =
+ (ExtendedCMSSignatureVerificationResult) resultObject;
+ cmsResult = result.getCMSSignatureVerificationResult();
+ adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult());
+
+ if (Logger.isDebugEnabled() && adesResults != null) {
+ final Iterator adesIterator = adesResults.iterator();
+ while (adesIterator.hasNext()) {
+ Logger.debug("ADES Formresults: " + adesIterator.next().toString());
+ }
+
+ }
+
+ try {
+ // Logger.info("Extended Validation Report: " + result.getName());
+ Logger.debug("Extended Validation Code: " + result.getResultCode().toString());
+ Logger.debug("Extended Validation Info: " + result.getInfo());
+
+ extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode());
+
+ } catch (final NullPointerException e) {
+ Logger.info("No extendend validation result available.");
+
+ }
+ } else {
+ Logger.debug("Got CMSSignatureVerificationResult");
+ cmsResult = (CMSSignatureVerificationResult) resultObject;
+
+ }
+
+ String issuerCountryCode = null;
+ // QC/SSCD check
+
+ if (cmsResult.getCertificateValidationResult() != null) {
+ final List list = cmsResult.getCertificateValidationResult().getCertificateChain();
+ if (list != null) {
+ final X509Certificate[] chain = new X509Certificate[list.size()];
+
+ final Iterator it = list.iterator();
+ int i = 0;
+ while (it.hasNext()) {
+ chain[i] = (X509Certificate) it.next();
+ i++;
+ }
+
+ qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile
+ .isTSLEnabled(), ConfigurationProvider.getInstance());
+
+ // get signer certificate issuer country code
+ issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0));
+ }
+ }
+
+ responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(),
+ qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults, extCheckResult,
+ qcsscdresult.getTslInfos(), extendedVerification);
+ }
+
+ private void handlePDFResult(Object resultObject, VerifyCMSSignatureResponseBuilder responseBuilder,
+ TrustProfile trustProfile) throws MOAException {
+ QCSSCDResult qcsscdresult = new QCSSCDResult();
+
+ if (resultObject == null) {
+ Logger.warn("Result Object is null!");
+ return;
+ }
+
+ PDFSignatureVerificationResult cmsResult = null;
+ List adesResults = null;
+ boolean extendedVerification = false;
+ final Boolean coversFullDoc = null;
+ final int[] sigByteRange = null;
+
+ ExtendedCertificateCheckResult extCheckResult = null;
+ if (resultObject instanceof ExtendedPDFSignatureVerificationResult) {
+ Logger.info("Got ExtendedPDFSignatureVerificationResult");
+ extendedVerification = true;
+ final ExtendedPDFSignatureVerificationResult result =
+ (ExtendedPDFSignatureVerificationResult) resultObject;
+ cmsResult = result.getPDFSignatureVerificationResult();
+ adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult());
+
+ if (Logger.isDebugEnabled() && adesResults != null) {
+ final Iterator adesIterator = adesResults.iterator();
+ while (adesIterator.hasNext()) {
+ Logger.debug("ADES Formresults: " + adesIterator.next().toString());
+ }
+
+ }
+
+ try {
+ Logger.debug("Extended Validation Code: " + result.getResultCode().toString());
+
+ if (result.getDetailedExtendedReport() != null) {
+ Logger.debug("Extended Validation Info: " + result.getDetailedExtendedReport().getMessage());
+ } else {
+ Logger.debug("Extended Validation Info: " + result.getInfo());
+ }
+
+ Logger.debug("Full extended Validation Infos: " + result.getInfo());
+ extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode());
+
+ } catch (final NullPointerException e) {
+ Logger.info("No extendend validation result available.");
+
+ }
+
+ } else {
+ Logger.debug("Got PDFSignatureVerificationResult");
+ cmsResult = (PDFSignatureVerificationResult) resultObject;
+ }
+
+ if (MiscUtil.isNotEmpty(cmsResult.getError())) {
+ Logger.info("Signature validation stopped with an error: " + cmsResult.getError());
+ }
+
+ String issuerCountryCode = null;
+ // QC/SSCD check
+
+ if (cmsResult.getCertificateValidationResult() != null) {
+ final List list = cmsResult.getCertificateValidationResult().getCertificateChain();
+ if (list != null) {
+ final X509Certificate[] chain = new X509Certificate[list.size()];
+
+ final Iterator it = list.iterator();
+ int i = 0;
+ while (it.hasNext()) {
+ chain[i] = (X509Certificate) it.next();
+ i++;
+ }
+
+ qcsscdresult = CertificateUtils.checkQCSSCD(chain, cmsResult.getSigningTime(), trustProfile
+ .isTSLEnabled(), ConfigurationProvider.getInstance());
+
+ // get signer certificate issuer country code
+ issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0));
+
+ }
+ }
+
+ responseBuilder.addResult(cmsResult, trustProfile, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(),
+ qcsscdresult.isSSCD(), qcsscdresult.isSSCDSourceTSL(), issuerCountryCode, adesResults,
+ extCheckResult, qcsscdresult.getTslInfos(), extendedVerification);
+ }
+
+ /**
+ * Get the signed content contained either in the request itself or given as a
+ * reference to external data.
+ *
+ * @param request The <code>VerifyCMSSignatureRequest</code> containing the
+ * signed content (or the reference to the signed content).
+ * @return InputStream A stream providing the signed content data, or
+ * <code>null</code> if no signed content was provided with the request.
+ * @throws MOAApplicationException An error occurred building the stream.
+ */
+ private InputStream getSignedContent(VerifyCMSSignatureRequest request) throws MOAApplicationException {
+
+ InputStream is = null;
+ CMSDataObject dataObj;
+ CMSContent content;
+
+ // select the Content element
+ dataObj = request.getDataObject();
+ if (dataObj == null) {
+ return null;
+ }
+ content = dataObj.getContent();
+
+ // build the content data
+ switch (content.getContentType()) {
+ case CMSContent.EXPLICIT_CONTENT:
+ is = ((CMSContentExcplicit) content).getBinaryContent();
+ is = excludeByteRange(is, request);
+ return is;
+ case CMSContent.REFERENCE_CONTENT:
+ final String reference = ((CMSContentReference) content).getReference();
+ if (!"".equals(reference)) {
+ final ExternalURIResolver resolver = new ExternalURIResolver();
+ is = resolver.resolve(reference);
+ is = excludeByteRange(is, request);
+ return is;
+ } else {
+ return null;
+ }
+ default:
+ return null;
+ }
+
+ }
+
+ private InputStream excludeByteRange(InputStream contentIs, VerifyCMSSignatureRequest request)
+ throws MOAApplicationException {
+
+ int byteRead;
+
+ final ByteArrayOutputStream contentOs = new ByteArrayOutputStream();
+
+ final CMSDataObject dataobject = request.getDataObject();
+ final BigDecimal from = dataobject.getExcludeByteRangeFrom();
+ final BigDecimal to = dataobject.getExcludeByteRangeTo();
+
+ if (from == null || to == null) {
+ return contentIs;
+ }
+
+ BigDecimal counter = new BigDecimal("0");
+ final BigDecimal one = new BigDecimal("1");
+
+ try {
+ while ((byteRead = contentIs.read()) >= 0) {
+
+ if (inRange(counter, dataobject)) {
+ // if byte is in byte range, set byte to 0x00
+ contentOs.write(0);
+ } else {
+ contentOs.write(byteRead);
+ }
+
+ counter = counter.add(one);
+ }
+
+ final InputStream is = new ByteArrayInputStream(contentOs.toByteArray());
+
+ return is;
+
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2301", null, e);
+ }
+
+ }
+
+ private boolean inRange(BigDecimal counter, CMSDataObject dataobject) {
+ final BigDecimal from = dataobject.getExcludeByteRangeFrom();
+ final BigDecimal to = dataobject.getExcludeByteRangeTo();
+
+ if (from == null || to == null) {
+ return false;
+ }
+
+ int compare = counter.compareTo(from);
+ if (compare == -1) {
+ return false;
+ } else {
+ compare = counter.compareTo(to);
+ if (compare == 1) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java
index bd5db6d..5e343c4 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CMSSignatureVerificationProfileFactory.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import at.gv.egovernment.moa.spss.MOAException;
@@ -39,71 +38,71 @@ import iaik.server.modules.pdfverify.PDFSignatureVerificationProfile;
* A factory to create a <code>CMSSignatureVerificationProfile</code> from a
* <code>VerifyCMSSignatureRequest</code> and the current MOA configuration
* data.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CMSSignatureVerificationProfileFactory {
- /** The <code>VerifyCMSSignatureRequest</code> to draw profile data from. */
- private VerifyCMSSignatureRequest request;
+ /** The <code>VerifyCMSSignatureRequest</code> to draw profile data from. */
+ private final VerifyCMSSignatureRequest request;
/**
* Create a new <code>CMSSignatureVerificationProfileFactory</code>.
*
- * @param request The <code>VerifyCMSSignatureRequest</code> to draw profile
- * data from.
+ * @param request The <code>VerifyCMSSignatureRequest</code> to draw profile
+ * data from.
*/
public CMSSignatureVerificationProfileFactory(VerifyCMSSignatureRequest request) {
this.request = request;
}
/**
- * Create a <code>CMSSignatureVerificationProfile</code> from the given
- * request and the current MOA configuration.
- *
+ * Create a <code>CMSSignatureVerificationProfile</code> from the given request
+ * and the current MOA configuration.
+ *
* @return The <code>CMSSignatureVerificationProfile</code> for the
- * <code>request</code>, based on the current configuration.
+ * <code>request</code>, based on the current configuration.
* @throws MOAException An error occurred creating the profile.
*/
public PDFSignatureVerificationProfile createPDFProfile()
- throws MOAException {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- PDFSignatureVerificationProfileImpl profile =
- new PDFSignatureVerificationProfileImpl();
+ throws MOAException {
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final PDFSignatureVerificationProfileImpl profile =
+ new PDFSignatureVerificationProfileImpl();
String trustProfileID;
// set the certificate validation profile
trustProfileID = request.getTrustProfileId();
profile.setCertificateValidationProfile(
- new PKIProfileImpl(config, trustProfileID));
+ new PKIProfileImpl(config, trustProfileID));
return profile;
}
-
+
/**
- * Create a <code>CMSSignatureVerificationProfile</code> from the given
- * request and the current MOA configuration.
- *
+ * Create a <code>CMSSignatureVerificationProfile</code> from the given request
+ * and the current MOA configuration.
+ *
* @return The <code>CMSSignatureVerificationProfile</code> for the
- * <code>request</code>, based on the current configuration.
+ * <code>request</code>, based on the current configuration.
* @throws MOAException An error occurred creating the profile.
*/
public CMSSignatureVerificationProfile createProfile()
- throws MOAException {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- CMSSignatureVerificationProfileImpl profile =
- new CMSSignatureVerificationProfileImpl();
+ throws MOAException {
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final CMSSignatureVerificationProfileImpl profile =
+ new CMSSignatureVerificationProfileImpl();
String trustProfileID;
// set the certificate validation profile
trustProfileID = request.getTrustProfileId();
profile.setCertificateValidationProfile(
- new PKIProfileImpl(config, trustProfileID));
+ new PKIProfileImpl(config, trustProfileID));
return profile;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java
index aa52fe0..bc5d884 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateCMSSignatureResponseBuilder.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import java.util.ArrayList;
@@ -34,29 +33,33 @@ import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
/**
* A class to build a <code>CreateCMSSignatureResponse</code>.
- *
- * <p>The methods <code>addSignature()</code> and <code>addError()</code> may be
+ *
+ * <p>
+ * The methods <code>addSignature()</code> and <code>addError()</code> may be
* called in any combination to add <code>CMSignature</code> and
* <code>ErrorResponse</code> elements to the response. One of these functions
- * must be called at least once to produce a
- * <code>CreateCMSSignatureResponse</code>.</p>
- *
- * <p>The <code>getResponseElement()</code> method then returns the
- * <code>CreateXMLSignatureResponse</code> built so far.</p>
- *
+ * must be called at least once to produce a
+ * <code>CreateCMSSignatureResponse</code>.
+ * </p>
+ *
+ * <p>
+ * The <code>getResponseElement()</code> method then returns the
+ * <code>CreateXMLSignatureResponse</code> built so far.
+ * </p>
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CreateCMSSignatureResponseBuilder {
/** The <code>SPSSFactory</code> for creating API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/** The elements to add to the response. */
- private List responseElements = new ArrayList();
+ private final List responseElements = new ArrayList();
/**
* Get the <code>CreateCMSSignatureResponse</code> built so far.
- *
+ *
* @return The <code>CreateCMSSignatureResponse</code> built so far.
*/
public CreateCMSSignatureResponse getResponse() {
@@ -65,28 +68,29 @@ public class CreateCMSSignatureResponseBuilder {
/**
* Add a <code>SignatureEnvironment</code> element to the response.
- *
+ *
* @param signatureEnvironment The content to put under the
- * <code>SignatureEnvironment</code> element. This should either be a
- * <code>dsig:Signature</code> element (in case of a detached signature) or
- * the signature environment containing the signature (in case of
- * an enveloping signature).
+ * <code>SignatureEnvironment</code> element. This
+ * should either be a <code>dsig:Signature</code>
+ * element (in case of a detached signature) or the
+ * signature environment containing the signature
+ * (in case of an enveloping signature).
*/
public void addCMSSignature(String base64value) {
- CMSSignatureResponse responseElement =
- factory.createCMSSignatureResponse(base64value);
+ final CMSSignatureResponse responseElement =
+ factory.createCMSSignatureResponse(base64value);
responseElements.add(responseElement);
}
/**
* Add a <code>ErrorResponse</code> element to the response.
- *
+ *
* @param errorCode The error code.
- * @param info Additional information about the error.
+ * @param info Additional information about the error.
*/
public void addError(String errorCode, String info) {
- ErrorResponse errorResponse =
- factory.createErrorResponse(Integer.parseInt(errorCode), info);
+ final ErrorResponse errorResponse =
+ factory.createErrorResponse(Integer.parseInt(errorCode), info);
responseElements.add(errorResponse);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java
index 7a7161d..0a7e70d 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/CreateXMLSignatureResponseBuilder.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import java.util.ArrayList;
@@ -36,29 +35,33 @@ import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse;
/**
* A class to build a <code>CreateXMLSignatureResponse</code>.
- *
- * <p>The methods <code>addSignature()</code> and <code>addError()</code> may be
+ *
+ * <p>
+ * The methods <code>addSignature()</code> and <code>addError()</code> may be
* called in any combination to add <code>SignatureEnvironment</code> and
* <code>ErrorResponse</code> elements to the response. One of these functions
- * must be called at least once to produce a
- * <code>CreateXMLSignatureResponse</code>.</p>
- *
- * <p>The <code>getResponseElement()</code> method then returns the
- * <code>CreateXMLSignatureResponse</code> built so far.</p>
- *
+ * must be called at least once to produce a
+ * <code>CreateXMLSignatureResponse</code>.
+ * </p>
+ *
+ * <p>
+ * The <code>getResponseElement()</code> method then returns the
+ * <code>CreateXMLSignatureResponse</code> built so far.
+ * </p>
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CreateXMLSignatureResponseBuilder {
/** The <code>SPSSFactory</code> for creating API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/** The elements to add to the response. */
- private List responseElements = new ArrayList();
+ private final List responseElements = new ArrayList();
/**
* Get the <code>CreateXMLSignatureResponse</code> built so far.
- *
+ *
* @return The <code>CreateXMLSignatureResponse</code> built so far.
*/
public CreateXMLSignatureResponse getResponse() {
@@ -67,28 +70,29 @@ public class CreateXMLSignatureResponseBuilder {
/**
* Add a <code>SignatureEnvironment</code> element to the response.
- *
+ *
* @param signatureEnvironment The content to put under the
- * <code>SignatureEnvironment</code> element. This should either be a
- * <code>dsig:Signature</code> element (in case of a detached signature) or
- * the signature environment containing the signature (in case of
- * an enveloping signature).
+ * <code>SignatureEnvironment</code> element. This
+ * should either be a <code>dsig:Signature</code>
+ * element (in case of a detached signature) or the
+ * signature environment containing the signature
+ * (in case of an enveloping signature).
*/
public void addSignatureEnvironment(Element signatureEnvironment) {
- SignatureEnvironmentResponse responseElement =
- factory.createSignatureEnvironmentResponse(signatureEnvironment);
+ final SignatureEnvironmentResponse responseElement =
+ factory.createSignatureEnvironmentResponse(signatureEnvironment);
responseElements.add(responseElement);
}
/**
* Add a <code>ErrorResponse</code> element to the response.
- *
+ *
* @param errorCode The error code.
- * @param info Additional information about the error.
+ * @param info Additional information about the error.
*/
public void addError(String errorCode, String info) {
- ErrorResponse errorResponse =
- factory.createErrorResponse(Integer.parseInt(errorCode), info);
+ final ErrorResponse errorResponse =
+ factory.createErrorResponse(Integer.parseInt(errorCode), info);
responseElements.add(errorResponse);
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java
index 0740a73..b8d4df5 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/DataObjectFactory.java
@@ -21,10 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
-
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -84,8 +82,8 @@ import iaik.server.modules.xml.XMLDataObject;
import iaik.xml.crypto.utils.URIDereferencerImpl;
/**
- * A class to create <code>DataObject</code>s contained in different
- * locations of the MOA XML request format.
+ * A class to create <code>DataObject</code>s contained in different locations
+ * of the MOA XML request format.
*
* @author Patrick Peck
* @author Gregor Karlinger
@@ -94,15 +92,15 @@ import iaik.xml.crypto.utils.URIDereferencerImpl;
public class DataObjectFactory {
/**
- * XPATH for registering ID attributes of known schemas if
- * validating parsing fails.
+ * XPATH for registering ID attributes of known schemas if validating parsing
+ * fails.
*/
private static final String XPATH =
- "descendant-or-self::node()[" +
- "namespace-uri()='http://www.w3.org/2000/09/xmldsig#' " +
- "or namespace-uri()='http://reference.e-government.gv.at/namespace/persondata/20020228#' " +
- "or starts-with(namespace-uri(), 'http://uri.etsi.org/01903/')" +
- "]/attribute::Id";
+ "descendant-or-self::node()[" +
+ "namespace-uri()='http://www.w3.org/2000/09/xmldsig#' " +
+ "or namespace-uri()='http://reference.e-government.gv.at/namespace/persondata/20020228#' " +
+ "or starts-with(namespace-uri(), 'http://uri.etsi.org/01903/')" +
+ "]/attribute::Id";
/** The single instance of this class. */
private static DataObjectFactory instance = null;
@@ -128,26 +126,27 @@ public class DataObjectFactory {
}
/**
- * Return the signature environment, i.e., the root element of the
- * document, into which the signature will be inserted (if created) or which
- * contains the signature (if verified).
+ * Return the signature environment, i.e., the root element of the document,
+ * into which the signature will be inserted (if created) or which contains the
+ * signature (if verified).
*
- * @param content The <code>Content</code> object containing the signature
- * environment.
+ * @param content The <code>Content</code> object containing the signature
+ * environment.
* @param supplements Additional schema or DTD information.
- * @return The signature environment or <code>null</code>, if no
- * signature environment exists.
- * @throws MOASystemException A system error occurred building the signature
- * environment (see message for details).
+ * @return The signature environment or <code>null</code>, if no signature
+ * environment exists.
+ * @throws MOASystemException A system error occurred building the
+ * signature environment (see message for
+ * details).
* @throws MOAApplicationException An error occurred building the signature
- * environment (see message for details).
+ * environment (see message for details).
*/
public XMLDataObject createSignatureEnvironment(
- Content content,
- List supplements)
- throws MOASystemException, MOAApplicationException {
+ Content content,
+ List supplements)
+ throws MOASystemException, MOAApplicationException {
- String reference = content.getReference();
+ final String reference = content.getReference();
EntityResolver entityResolver;
byte[] contentBytes;
@@ -155,10 +154,10 @@ public class DataObjectFactory {
checkAllowContentAndReference(content, false);
// build the EntityResolver for validating parsing
- if ((supplements == null) || supplements.isEmpty()) {
+ if (supplements == null || supplements.isEmpty()) {
entityResolver = new MOASPSSEntityResolver();
} else {
- EntityResolverChain chain = new EntityResolverChain();
+ final EntityResolverChain chain = new EntityResolverChain();
chain.addEntityResolver(buildSupplementEntityResolver(supplements));
chain.addEntityResolver(new MOASPSSEntityResolver());
@@ -168,83 +167,70 @@ public class DataObjectFactory {
// convert the content into a byte array
try {
switch (content.getContentType()) {
- case Content.BINARY_CONTENT :
- {
- InputStream is = ((ContentBinary) content).getBinaryContent();
- contentBytes = StreamUtils.readStream(is);
- break;
- }
- case Content.LOCREF_CONTENT:
- {
- String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
- InputStream is = null;
- try
- {
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- is = context.ResolveURI(locRefURI);
- if (is == null) {
- ExternalURIResolver uriResolver = new ExternalURIResolver();
- is = uriResolver.resolve(locRefURI);
- }
- contentBytes = StreamUtils.readStream(is);
- }
- catch (MOAApplicationException e)
- {
- throw new MOAApplicationException("3203", new Object[]{reference, locRefURI}, e);
- }
- finally
- {
- closeInputStream(is);
+ case Content.BINARY_CONTENT: {
+ final InputStream is = ((ContentBinary) content).getBinaryContent();
+ contentBytes = StreamUtils.readStream(is);
+ break;
+ }
+ case Content.LOCREF_CONTENT: {
+ final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
+ InputStream is = null;
+ try {
+ final TransactionContext context = TransactionContextManager.getInstance()
+ .getTransactionContext();
+ is = context.ResolveURI(locRefURI);
+ if (is == null) {
+ final ExternalURIResolver uriResolver = new ExternalURIResolver();
+ is = uriResolver.resolve(locRefURI);
}
- break;
+ contentBytes = StreamUtils.readStream(is);
+ } catch (final MOAApplicationException e) {
+ throw new MOAApplicationException("3203", new Object[] { reference, locRefURI }, e);
+ } finally {
+ closeInputStream(is);
}
- case Content.REFERENCE_CONTENT :
- {
- ExternalURIResolver uriResolver = new ExternalURIResolver();
- InputStream is = null;
- try
- {
- is = uriResolver.resolve(reference);
- contentBytes = StreamUtils.readStream(is);
- }
- catch (Exception e)
- {
- throw e;
- }
- finally
- {
- closeInputStream(is);
- }
- break;
+ break;
+ }
+ case Content.REFERENCE_CONTENT: {
+ final ExternalURIResolver uriResolver = new ExternalURIResolver();
+ InputStream is = null;
+ try {
+ is = uriResolver.resolve(reference);
+ contentBytes = StreamUtils.readStream(is);
+ } catch (final Exception e) {
+ throw e;
+ } finally {
+ closeInputStream(is);
}
- case Content.XML_CONTENT :
- {
- Element element =
+ break;
+ }
+ case Content.XML_CONTENT: {
+ final Element element =
checkForSingleElement(((ContentXML) content).getXMLContent());
- contentBytes = DOMUtils.serializeNode(element, "UTF-8");
+ contentBytes = DOMUtils.serializeNode(element, "UTF-8");
- break;
- }
- default : {
+ break;
+ }
+ default: {
contentBytes = null; // this will not happen
}
}
- } catch (MOAApplicationException e) {
+ } catch (final MOAApplicationException e) {
throw e;
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new MOAApplicationException("2219", null);
}
if (Logger.isTraceEnabled()) {
// For logging in Debug-Mode: Mask baseid with xxx
- String logString = new String(contentBytes);
+ final String logString = new String(contentBytes);
// TODO use RegExp
- String startS = "<pr:Identification><pr:Value>";
- String endS = "</pr:Value><pr:Type>urn:publicid:gv.at:baseid</pr:Type>";
+ final String startS = "<pr:Identification><pr:Value>";
+ final String endS = "</pr:Value><pr:Type>urn:publicid:gv.at:baseid</pr:Type>";
String logWithMaskedBaseid = logString;
- int start = logString.indexOf(startS);
+ final int start = logString.indexOf(startS);
if (start > -1) {
- int end = logString.indexOf(endS);
+ final int end = logString.indexOf(endS);
if (end > -1) {
logWithMaskedBaseid = logString.substring(0, start);
logWithMaskedBaseid += startS;
@@ -257,37 +243,37 @@ public class DataObjectFactory {
Logger.trace(">>> parsing the following content: \n" + logWithMaskedBaseid);
}
try {
- ByteArrayInputStream is = new ByteArrayInputStream(contentBytes);
- Document doc =
- DOMUtils.parseDocument(
- is,
- true,
- Constants.ALL_SCHEMA_LOCATIONS,
- null,
- entityResolver,
- new MOAErrorHandler());
+ final ByteArrayInputStream is = new ByteArrayInputStream(contentBytes);
+ final Document doc =
+ DOMUtils.parseDocument(
+ is,
+ true,
+ Constants.ALL_SCHEMA_LOCATIONS,
+ null,
+ entityResolver,
+ new MOAErrorHandler());
Logger.trace("<<< parsed");
return new XMLDataObjectImpl(doc.getDocumentElement());
- } catch (Exception e) {
+ } catch (final Exception e) {
// never mind, we'll try non-validating
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
Logger.info(new LogMsg(msg.getMessage("invoker.00", null)));
Logger.info(new LogMsg(e.getMessage()));
}
// try to parse non-validating
try {
- ByteArrayInputStream is = new ByteArrayInputStream(contentBytes);
- Document doc = DOMUtils.parseDocument(is, false, null, null);
+ final ByteArrayInputStream is = new ByteArrayInputStream(contentBytes);
+ final Document doc = DOMUtils.parseDocument(is, false, null, null);
// Since the parse tree will not contain any post schema validation information,
// we need to register any attributes known to be of type xsd:Id manually.
- NodeList idAttributes = XPathUtils.selectNodeList(doc.getDocumentElement(), XPATH);
+ final NodeList idAttributes = XPathUtils.selectNodeList(doc.getDocumentElement(), XPATH);
for (int i = 0; i < idAttributes.getLength(); i++) {
- Node item = idAttributes.item(i);
+ final Node item = idAttributes.item(i);
if (item instanceof Attr) {
- Attr attr = (Attr) item;
- Element owner = attr.getOwnerElement();
+ final Attr attr = (Attr) item;
+ final Element owner = attr.getOwnerElement();
// Only available in DOM-Level 3 (Java 1.5):
// owner.setIdAttributeNode(attr, true);
if (doc instanceof CoreDocumentImpl) {
@@ -296,7 +282,7 @@ public class DataObjectFactory {
}
}
return new XMLDataObjectImpl(doc.getDocumentElement());
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new MOAApplicationException("2218", null);
}
}
@@ -305,68 +291,69 @@ public class DataObjectFactory {
* Create an <code>XMLDataObject</code> from the given signature environment.
*
* @param signatureEnvironment The signature environment contained in the
- * result.
- * @param uri The URI identifying the data. This must be either the empty
- * URI, an URI starting with <code>"#xpointer"</code>, <code>"#xmlns"</code>
- * or <code>"#element"</code>; or an URI starting with <code>"#"</code> and
- * followed by an element ID.
- * @param referenceID The reference ID to set for the data object.
+ * result.
+ * @param uri The URI identifying the data. This must be either
+ * the empty URI, an URI starting with
+ * <code>"#xpointer"</code>, <code>"#xmlns"</code>
+ * or <code>"#element"</code>; or an URI starting
+ * with <code>"#"</code> and followed by an element
+ * ID.
+ * @param referenceID The reference ID to set for the data object.
* @return A data object containing the signature environment.
*/
public DataObject createFromSignatureEnvironment(
- Element signatureEnvironment,
- String uri,
- String referenceID)
- throws MOAApplicationException {
+ Element signatureEnvironment,
+ String uri,
+ String referenceID)
+ throws MOAApplicationException {
DataObjectImpl dataObject = null;
if ("".equals(uri)) {
dataObject = new XMLDataObjectImpl(signatureEnvironment);
- } else if (
- uri.startsWith("#xpointer")
+ } else if (uri.startsWith("#xpointer")
|| uri.startsWith("#xmlns")
|| uri.startsWith("#element")) {
try {
- // CHANGE IXSIL to XSECT
- // maybe use URIDereferencerImpl or XPath ...??
- //XPointerReferenceResolver resolver = new XPointerReferenceResolver();
- URIDereferencerImpl uriDereferencer = new URIDereferencerImpl();
- URIReference uriReference = new URIReferenceImpl(uri, null, signatureEnvironment);
- Data returnedData = uriDereferencer.dereference(uriReference, null);
-
- if(returnedData instanceof NodeSetData) {
- NodeSetData nodeSetData = (NodeSetData)returnedData;
- Iterator nodesIterator = nodeSetData.iterator();
- List nodeList = new ArrayList();
-
- while(nodesIterator.hasNext()) {
- nodeList.add(nodesIterator.next());
- }
-
- NodeList nodes = new NodeListImplementation(nodeList);
- dataObject = new XMLNodeListDataObjectImpl(nodes);
- } else if(returnedData instanceof OctetStreamData) {
- OctetStreamData streamData = (OctetStreamData)returnedData;
- dataObject = new ByteStreamDataObjectImpl(streamData.getOctetStream());
+ // CHANGE IXSIL to XSECT
+ // maybe use URIDereferencerImpl or XPath ...??
+ // XPointerReferenceResolver resolver = new XPointerReferenceResolver();
+ final URIDereferencerImpl uriDereferencer = new URIDereferencerImpl();
+ final URIReference uriReference = new URIReferenceImpl(uri, null, signatureEnvironment);
+ final Data returnedData = uriDereferencer.dereference(uriReference, null);
+
+ if (returnedData instanceof NodeSetData) {
+ final NodeSetData nodeSetData = (NodeSetData) returnedData;
+ final Iterator nodesIterator = nodeSetData.iterator();
+ final List nodeList = new ArrayList();
+
+ while (nodesIterator.hasNext()) {
+ nodeList.add(nodesIterator.next());
+ }
+
+ final NodeList nodes = new NodeListImplementation(nodeList);
+ dataObject = new XMLNodeListDataObjectImpl(nodes);
+ } else if (returnedData instanceof OctetStreamData) {
+ final OctetStreamData streamData = (OctetStreamData) returnedData;
+ dataObject = new ByteStreamDataObjectImpl(streamData.getOctetStream());
} else {
- throw new MOAApplicationException("2237", new Object[] { uri });
+ throw new MOAApplicationException("2237", new Object[] { uri });
}
-
- //URI uriObj = new URI(uri);
- //NodeList nodes =
- // resolver.resolveForest(
- // uriObj,
- // signatureEnvironment.getOwnerDocument(),
- // null);
-
- } catch (Exception e) {
+
+ // URI uriObj = new URI(uri);
+ // NodeList nodes =
+ // resolver.resolveForest(
+ // uriObj,
+ // signatureEnvironment.getOwnerDocument(),
+ // null);
+
+ } catch (final Exception e) {
throw new MOAApplicationException("2237", new Object[] { uri });
}
} else if (uri.startsWith("#")) {
- String id = uri.substring(1);
- Element refElem =
- signatureEnvironment.getOwnerDocument().getElementById(id);
+ final String id = uri.substring(1);
+ final Element refElem =
+ signatureEnvironment.getOwnerDocument().getElementById(id);
if (refElem == null) {
throw new MOAApplicationException("2237", new Object[] { id });
@@ -385,87 +372,75 @@ public class DataObjectFactory {
* supplements.
*
* @param supplements The supplements, given as
- * <code>XMLDataObjectAssociation</code>s.
- * @return A <code>StreamEntityResolver</code> mapping the supplements by
- * their reference URI to an <code>InputStream</code> of their respective
- * content.
+ * <code>XMLDataObjectAssociation</code>s.
+ * @return A <code>StreamEntityResolver</code> mapping the supplements by their
+ * reference URI to an <code>InputStream</code> of their respective
+ * content.
*/
private static StreamEntityResolver buildSupplementEntityResolver(List supplements)
- throws MOAApplicationException
- {
- Map entities = new HashMap();
+ throws MOAApplicationException {
+ final Map entities = new HashMap();
Iterator iter;
for (iter = supplements.iterator(); iter.hasNext();) {
- XMLDataObjectAssociation supplement =
- (XMLDataObjectAssociation) iter.next();
- Content content = supplement.getContent();
- String reference = content.getReference();
+ final XMLDataObjectAssociation supplement =
+ (XMLDataObjectAssociation) iter.next();
+ final Content content = supplement.getContent();
+ final String reference = content.getReference();
switch (content.getContentType()) {
- case Content.BINARY_CONTENT :
- {
- entities.put(reference, ((ContentBinary) content).getBinaryContent());
- break;
+ case Content.BINARY_CONTENT: {
+ entities.put(reference, ((ContentBinary) content).getBinaryContent());
+ break;
+ }
+ case Content.LOCREF_CONTENT: {
+ final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
+
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ if (context.FindResolvedEntity(locRefURI) == null) {
+
+ final ExternalURIResolver uriResolver = new ExternalURIResolver();
+ InputStream uriStream = null;
+ byte[] contentBytes;
+ String contentType = null;
+ try {
+ uriStream = uriResolver.resolve(locRefURI);
+ contentBytes = StreamUtils.readStream(uriStream);
+ contentType = uriResolver.getContentType();
+ } catch (final Exception e) {
+ throw new MOAApplicationException("3202", new Object[] { reference, locRefURI }, e);
+ } finally {
+ closeInputStream(uriStream);
+ }
+ context.PutResolvedEntity(locRefURI, contentBytes, contentType);
}
- case Content.LOCREF_CONTENT:
- {
- String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
-
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- if (context.FindResolvedEntity(locRefURI)==null) {
-
- ExternalURIResolver uriResolver = new ExternalURIResolver();
- InputStream uriStream = null;
- byte[] contentBytes;
- String contentType = null;
- try
- {
- uriStream = uriResolver.resolve(locRefURI);
- contentBytes = StreamUtils.readStream(uriStream);
- contentType = uriResolver.getContentType();
- }
- catch (Exception e)
- {
- throw new MOAApplicationException("3202", new Object[]{reference, locRefURI}, e);
- }
- finally
- {
- closeInputStream(uriStream);
- }
- context.PutResolvedEntity(locRefURI, contentBytes, contentType);
- }
- InputStream contentIS = context.ResolveURI(locRefURI);
- entities.put(reference, contentIS);
- break;
+ final InputStream contentIS = context.ResolveURI(locRefURI);
+ entities.put(reference, contentIS);
+ break;
+ }
+ case Content.XML_CONTENT: {
+ // serialize the first element node that is found in the supplement
+ // and make it available as a stream
+ final NodeList nodes = ((ContentXML) content).getXMLContent();
+ int i = 0;
+
+ // find the first element node
+ while (i < nodes.getLength()
+ && nodes.item(i).getNodeType() != Node.ELEMENT_NODE) {
+ i++;
}
- case Content.XML_CONTENT :
- {
- // serialize the first element node that is found in the supplement
- // and make it available as a stream
- NodeList nodes = ((ContentXML) content).getXMLContent();
- int i = 0;
-
- // find the first element node
- while ((i < nodes.getLength())
- && (nodes.item(i).getNodeType() != Node.ELEMENT_NODE)) {
- i++;
- }
- // serialize the node
- if (i < nodes.getLength()) {
- try
- {
- byte[] serialized = DOMUtils.serializeNode(nodes.item(i), "UTF-8");
- entities.put(reference, new ByteArrayInputStream(serialized));
- }
- catch (Exception e)
- {
- throw new MOAApplicationException("2281", new Object[]{reference}, e);
- }
+ // serialize the node
+ if (i < nodes.getLength()) {
+ try {
+ final byte[] serialized = DOMUtils.serializeNode(nodes.item(i), "UTF-8");
+ entities.put(reference, new ByteArrayInputStream(serialized));
+ } catch (final Exception e) {
+ throw new MOAApplicationException("2281", new Object[] { reference }, e);
}
- break;
}
+ break;
+ }
}
}
@@ -475,82 +450,87 @@ public class DataObjectFactory {
/**
* Create a <code>DataObject</code> from a <code>Content</code> object.
*
- * @param content The <code>Content</code> object containing the data.
- * @param finalDataMetaInfo The meta information corresponding with <code>content</code>.
- * @param referenceID The reference ID to set in the resulting
- * <code>DataObject</code>. May be <code>null</code>.
+ * @param content The <code>Content</code> object containing
+ * the data.
+ * @param finalDataMetaInfo The meta information corresponding with
+ * <code>content</code>.
+ * @param referenceID The reference ID to set in the resulting
+ * <code>DataObject</code>. May be
+ * <code>null</code>.
* @param allowContentAndReference If <code>true</code>, then
- * <code>content</code> is allowed to contain both a <code>Reference</code>
- * attribute and content. Otherwise, either a <code>Reference</code>
- * attribute or content must be set.
- * @param binaryAsXml If <code>true</code>, a content child given as
- * <code>Base64Content</code> must contain XML data.
- * @param xmlAsNodeList If <code>true</code>, the children of a
- * <code>XMLContent</code> child element are returned as a
- * <code>XMLNodeListDataObject</code>. Otherwise, <code>XMLContent</code> may
- * only contain a single child node, which must be an element and which is
- * returned as an <code>XMLDataObject</code>.
- * @param referenceAsXml If <code>true</code>, then content loaded from the
- * URI given as the <code>Reference</code> attribute must be XML data.
- * If <code>false</code>, an attempt is made to parse the data as XML and
- * return an <code>XMLDataObject</code> but if this fails, a
- * <code>BinaryDataObject</code> is returned containing a byte stream to the
- * data.
+ * <code>content</code> is allowed to contain
+ * both a <code>Reference</code> attribute and
+ * content. Otherwise, either a
+ * <code>Reference</code> attribute or content
+ * must be set.
+ * @param binaryAsXml If <code>true</code>, a content child given
+ * as <code>Base64Content</code> must contain
+ * XML data.
+ * @param xmlAsNodeList If <code>true</code>, the children of a
+ * <code>XMLContent</code> child element are
+ * returned as a
+ * <code>XMLNodeListDataObject</code>.
+ * Otherwise, <code>XMLContent</code> may only
+ * contain a single child node, which must be an
+ * element and which is returned as an
+ * <code>XMLDataObject</code>.
+ * @param referenceAsXml If <code>true</code>, then content loaded
+ * from the URI given as the
+ * <code>Reference</code> attribute must be XML
+ * data. If <code>false</code>, an attempt is
+ * made to parse the data as XML and return an
+ * <code>XMLDataObject</code> but if this fails,
+ * a <code>BinaryDataObject</code> is returned
+ * containing a byte stream to the data.
* @return A <code>DataObject</code> representing the data in
- * <code>content</code>. If <code>base64AsXml==true</code> and
- * <code>xmlAsNodeList==false</code> and <code>referenceAsXml==true</code>,
- * then the result can safely be cast to an <code>XMLDataObject</code>.
- * @throws MOASystemException An error indicating an internal problem. See the
- * wrapped exception for details.
+ * <code>content</code>. If <code>base64AsXml==true</code> and
+ * <code>xmlAsNodeList==false</code> and
+ * <code>referenceAsXml==true</code>, then the result can safely be cast
+ * to an <code>XMLDataObject</code>.
+ * @throws MOASystemException An error indicating an internal problem. See
+ * the wrapped exception for details.
* @throws MOAApplicationException An error occurred handling the content
- * (probably while opening a reference or parsing the data). See the wrapped
- * exception for details.
+ * (probably while opening a reference or
+ * parsing the data). See the wrapped exception
+ * for details.
*/
public DataObject createFromContentOptionalRefType(
- Content content,
- MetaInfo finalDataMetaInfo,
- String referenceID,
- boolean allowContentAndReference,
- boolean binaryAsXml,
- boolean xmlAsNodeList,
- boolean referenceAsXml)
- throws MOASystemException, MOAApplicationException {
-
- String reference = content.getReference();
+ Content content,
+ MetaInfo finalDataMetaInfo,
+ String referenceID,
+ boolean allowContentAndReference,
+ boolean binaryAsXml,
+ boolean xmlAsNodeList,
+ boolean referenceAsXml)
+ throws MOASystemException, MOAApplicationException {
+
+ final String reference = content.getReference();
DataObjectImpl dataObject = null;
checkAllowContentAndReference(content, allowContentAndReference);
// ok, build the data object; use content first, if available
- switch (content.getContentType())
- {
- case Content.XML_CONTENT :
- {
- ContentXML contentXml = (ContentXML) content;
+ switch (content.getContentType()) {
+ case Content.XML_CONTENT: {
+ final ContentXML contentXml = (ContentXML) content;
dataObject = createFromXmlContent(contentXml, xmlAsNodeList);
break;
}
- case Content.BINARY_CONTENT :
- {
- ContentBinary contentBinary = (ContentBinary) content;
+ case Content.BINARY_CONTENT: {
+ final ContentBinary contentBinary = (ContentBinary) content;
dataObject = createFromBinaryContent(contentBinary, binaryAsXml, false);
break;
}
- case Content.LOCREF_CONTENT :
- {
- String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
- try
- {
+ case Content.LOCREF_CONTENT: {
+ final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
+ try {
dataObject = createFromURIImpl(locRefURI, referenceAsXml);
- }
- catch (MOAApplicationException e)
- {
- throw new MOAApplicationException("3201", new Object[]{reference, locRefURI}, e);
+ } catch (final MOAApplicationException e) {
+ throw new MOAApplicationException("3201", new Object[] { reference, locRefURI }, e);
}
break;
}
- case Content.REFERENCE_CONTENT :
- {
+ case Content.REFERENCE_CONTENT: {
dataObject = createFromURIImpl(reference, referenceAsXml);
break;
}
@@ -567,97 +547,91 @@ public class DataObjectFactory {
}
/**
- * Check, if content and reference URIs are allowed in the content an throw
- * an exception if an illegal combination of the two occurs.
+ * Check, if content and reference URIs are allowed in the content an throw an
+ * exception if an illegal combination of the two occurs.
*
- * @param content The <code>Content</code> to check.
- * @param allowContentAndReference Whether explicit content and a reference
- * are allowed at the same time.
- * @throws MOAApplicationException If <code>allowContentAndRefernece</code>
- * is <code>false</code> and both explicit content and reference are set,
- * an exception is thrown.
+ * @param content The <code>Content</code> to check.
+ * @param allowContentAndReference Whether explicit content and a reference are
+ * allowed at the same time.
+ * @throws MOAApplicationException If <code>allowContentAndRefernece</code> is
+ * <code>false</code> and both explicit content
+ * and reference are set, an exception is
+ * thrown.
*/
private static void checkAllowContentAndReference(
- Content content,
- boolean allowContentAndReference)
- throws MOAApplicationException {
- String reference = content.getReference();
+ Content content,
+ boolean allowContentAndReference)
+ throws MOAApplicationException {
+ final String reference = content.getReference();
// check for content and reference not being set
- if ((content.getContentType() == Content.REFERENCE_CONTENT)
- && (reference == null)) {
- String errorCode = allowContentAndReference ? "1111" : "1110";
+ if (content.getContentType() == Content.REFERENCE_CONTENT
+ && reference == null) {
+ final String errorCode = allowContentAndReference ? "1111" : "1110";
throw new MOAApplicationException(errorCode, null);
}
// if we only allow either content or reference being set at once, check
if (!allowContentAndReference
- && (content.getContentType() != Content.REFERENCE_CONTENT)
- && (reference != null)) {
+ && content.getContentType() != Content.REFERENCE_CONTENT
+ && reference != null) {
throw new MOAApplicationException("1110", null);
}
}
/**
- * Create a <code>DataObject</code> from a
- * <code>XMLDataObjectAssociation</code> object.
+ * Create a <code>DataObject</code> from a <code>XMLDataObjectAssociation</code>
+ * object.
*
- * @param xmlDataObjAssoc The <code>XMLDataObjectAssociation</code> object.
- * @param xmlContentAllowed Whether the content contained in the
- * <code>xmlDataObjAssoc</code> is allowed to be of type
- * <code>XML_CONTENT</code>.
+ * @param xmlDataObjAssoc The <code>XMLDataObjectAssociation</code>
+ * object.
+ * @param xmlContentAllowed Whether the content contained in the
+ * <code>xmlDataObjAssoc</code> is allowed to be
+ * of type <code>XML_CONTENT</code>.
* @param binaryContentRepeatable If binary content must be provided as a
- * <code>DataObject</code> that can be read multiple times.
+ * <code>DataObject</code> that can be read
+ * multiple times.
* @return A <code>DataObject</code> representing the data in
- * <code>xmlDataObjAssoc</code>.
- * @throws MOASystemException An error indicating an internal problem. See the
- * wrapped exception for details.
+ * <code>xmlDataObjAssoc</code>.
+ * @throws MOASystemException An error indicating an internal problem. See
+ * the wrapped exception for details.
* @throws MOAApplicationException An error occurred handling the content
- * (probably while parsing the data). See the wrapped exception for details.
+ * (probably while parsing the data). See the
+ * wrapped exception for details.
*/
public DataObject createFromXmlDataObjectAssociation(
- XMLDataObjectAssociation xmlDataObjAssoc,
- boolean xmlContentAllowed,
- boolean binaryContentRepeatable)
- throws MOASystemException, MOAApplicationException {
-
- Content content = xmlDataObjAssoc.getContent();
- MetaInfo metaInfo = xmlDataObjAssoc.getMetaInfo();
- String mimeType = metaInfo != null ? metaInfo.getMimeType() : null;
+ XMLDataObjectAssociation xmlDataObjAssoc,
+ boolean xmlContentAllowed,
+ boolean binaryContentRepeatable)
+ throws MOASystemException, MOAApplicationException {
+
+ final Content content = xmlDataObjAssoc.getContent();
+ final MetaInfo metaInfo = xmlDataObjAssoc.getMetaInfo();
+ final String mimeType = metaInfo != null ? metaInfo.getMimeType() : null;
DataObjectImpl dataObject = null;
- switch (content.getContentType())
- {
- case Content.XML_CONTENT :
- {
- if (xmlContentAllowed)
- {
+ switch (content.getContentType()) {
+ case Content.XML_CONTENT: {
+ if (xmlContentAllowed) {
dataObject = createFromXmlContent((ContentXML) content, true);
- }
- else
- {
+ } else {
throw new MOAApplicationException("2280", null);
}
break;
}
- case Content.BINARY_CONTENT :
- {
+ case Content.BINARY_CONTENT: {
dataObject = createFromBinaryContent(
- (ContentBinary) content,
- false,
- binaryContentRepeatable);
+ (ContentBinary) content,
+ false,
+ binaryContentRepeatable);
break;
}
- case Content.LOCREF_CONTENT :
- {
- String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
- try
- {
+ case Content.LOCREF_CONTENT: {
+ final String locRefURI = ((ContentLocRef) content).getLocationReferenceURI();
+ try {
dataObject = createFromURIImpl(locRefURI, false);
- }
- catch (MOAApplicationException e)
- {
- throw new MOAApplicationException("3201", new Object[]{content.getReference(), locRefURI}, e);
+ } catch (final MOAApplicationException e) {
+ throw new MOAApplicationException("3201", new Object[] { content.getReference(), locRefURI }, e);
}
break;
}
@@ -673,53 +647,49 @@ public class DataObjectFactory {
* object.
*
* @param transformParameter The <code>TransformParameter</code> object
- * containing the data.
- * @return A <code>DataObject</code> representing the data in
- * <code>root</code>.
- * @throws MOASystemException An error indicating an internal problem. See the
- * wrapped exception for details.
+ * containing the data.
+ * @return A <code>DataObject</code> representing the data in <code>root</code>.
+ * @throws MOASystemException An error indicating an internal problem. See
+ * the wrapped exception for details.
* @throws MOAApplicationException An error occurred handling the content
- * (probably while opening a reference or parsing the data). See the wrapped
- * exception for details.
+ * (probably while opening a reference or
+ * parsing the data). See the wrapped exception
+ * for details.
*/
public DataObject createFromTransformParameter(TransformParameter transformParameter)
- throws MOASystemException, MOAApplicationException {
+ throws MOASystemException, MOAApplicationException {
DataObjectImpl dataObject;
switch (transformParameter.getTransformParameterType()) {
- case TransformParameter.BINARY_TRANSFORMPARAMETER :
- TransformParameterBinary tpBinary =
- (TransformParameterBinary) transformParameter;
+ case TransformParameter.BINARY_TRANSFORMPARAMETER:
+ final TransformParameterBinary tpBinary =
+ (TransformParameterBinary) transformParameter;
try {
- //dataObject = new ByteArrayDataObjectImpl(Base64Utils.encode(tpBinary.getBinaryContent()));
+ // dataObject = new
+ // ByteArrayDataObjectImpl(Base64Utils.encode(tpBinary.getBinaryContent()));
dataObject =
- new ByteArrayDataObjectImpl(
- StreamUtils.readStream(tpBinary.getBinaryContent()));
- } catch (Exception e) {
+ new ByteArrayDataObjectImpl(
+ StreamUtils.readStream(tpBinary.getBinaryContent()));
+ } catch (final Exception e) {
return null;
}
- //dataObject = new ByteStreamDataObjectImpl(tpBinary.getBinaryContent());
+ // dataObject = new ByteStreamDataObjectImpl(tpBinary.getBinaryContent());
break;
- default :
+ default:
// resolve uri and build the content
- ExternalURIResolver resolver = new ExternalURIResolver();
- InputStream is = resolver.resolve(transformParameter.getURI());
+ final ExternalURIResolver resolver = new ExternalURIResolver();
+ final InputStream is = resolver.resolve(transformParameter.getURI());
ByteArrayInputStream bis;
- try
- {
+ try {
bis = new ByteArrayInputStream(StreamUtils.readStream(is));
- }
- catch (IOException e)
- {
- throw new MOAApplicationException("2238", new Object[] {transformParameter.getURI()}, e);
- }
- finally
- {
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2238", new Object[] { transformParameter.getURI() }, e);
+ } finally {
closeInputStream(is);
}
- String contentType = resolver.getContentType();
+ final String contentType = resolver.getContentType();
dataObject = new ByteStreamDataObjectImpl(bis);
dataObject.setMimeType(contentType);
break;
@@ -733,62 +703,65 @@ public class DataObjectFactory {
/**
* Create a <code>DataObject</code> from data located at the given URI.
*
- * @param uri The <code>URI</code> where the data is located. This method uses
- * an <code>ExternalURIResolver</code> to resolve URIs.
+ * @param uri The <code>URI</code> where the data is located. This method uses
+ * an <code>ExternalURIResolver</code> to resolve URIs.
* @param asXml If <code>true</code>, a <code>DataObject</code> is only
- * returned, if the content consists of XML data. If it does not consist of
- * XML data, an <code>MOAApplicationException</code> will be thrown. If this
- * parameter is <code>false</code> and the content consists of XML data, this
- * method will still attempt to parse it.
+ * returned, if the content consists of XML data. If it does not
+ * consist of XML data, an <code>MOAApplicationException</code>
+ * will be thrown. If this parameter is <code>false</code> and the
+ * content consists of XML data, this method will still attempt to
+ * parse it.
* @return The <code>DataObject</code> contained at the URI.
- * @throws MOASystemException A system error parsing the XML content.
+ * @throws MOASystemException A system error parsing the XML content.
* @throws MOAApplicationException An error occurred on opening, reading or
- * parsing the data behind the URI.
+ * parsing the data behind the URI.
*/
public DataObject createFromURI(String uri, boolean asXml)
- throws MOASystemException, MOAApplicationException {
+ throws MOASystemException, MOAApplicationException {
return createFromURIImpl(uri, asXml);
}
/**
* Create a <code>DataObject</code> from data located at the given URI.
*
- * @param uri The <code>URI</code> where the data is located. This method uses
- * an <code>ExternalURIResolver</code> to resolve URIs.
+ * @param uri The <code>URI</code> where the data is located. This method uses
+ * an <code>ExternalURIResolver</code> to resolve URIs.
* @param asXml If <code>true</code>, a <code>DataObject</code> is only
- * returned, if the content consists of XML data. If it does not consist of
- * XML data, an <code>MOAApplicationException</code> will be thrown. If this
- * parameter is <code>false</code> and the content type is detected as being
- * XML data, this method will still attemt to parse it.
+ * returned, if the content consists of XML data. If it does not
+ * consist of XML data, an <code>MOAApplicationException</code>
+ * will be thrown. If this parameter is <code>false</code> and the
+ * content type is detected as being XML data, this method will
+ * still attemt to parse it.
* @return The <code>DataObject</code> contained at the URI.
- * @throws MOASystemException A system error parsing the XML content.
+ * @throws MOASystemException A system error parsing the XML content.
* @throws MOAApplicationException An error occurred on opening, reading or
- * parsing the data behind the URI.
+ * parsing the data behind the URI.
*/
private DataObjectImpl createFromURIImpl(String uri, boolean asXml)
- throws MOASystemException, MOAApplicationException {
+ throws MOASystemException, MOAApplicationException {
Logger.trace(">>> resolving uri \"" + uri + "\"");
- ExternalURIResolver resolver = new ExternalURIResolver();
+ final ExternalURIResolver resolver = new ExternalURIResolver();
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
InputStream is = context.ResolveURI(uri);
String contentType = null;
boolean foundURI = false;
if (is == null) {
- is = resolver.resolve(uri);
- contentType = resolver.getContentType();
+ is = resolver.resolve(uri);
+ contentType = resolver.getContentType();
} else {
- foundURI = true;
- contentType = (String) context.FindResolvedEntity(uri).get(1);
- Logger.trace("found \"" + uri + "\" InputStream in preread Supplements!, do not read any more. Content=" + contentType);
+ foundURI = true;
+ contentType = (String) context.FindResolvedEntity(uri).get(1);
+ Logger.trace("found \"" + uri + "\" InputStream in preread Supplements!, do not read any more. Content="
+ + contentType);
}
DataObjectImpl dataObject;
// read the content
- if ((contentType != null) && contentTypeIsXml(contentType)) {
+ if (contentType != null && contentTypeIsXml(contentType)) {
Document doc;
if (asXml) {
@@ -798,15 +771,13 @@ public class DataObjectFactory {
is = resolver.resolve(uri);
doc = DOMUtils.parseDocument(is, false, null, null);
dataObject = new XMLDataObjectImpl(doc.getDocumentElement());
- } catch (ParserConfigurationException e) {
+ } catch (final ParserConfigurationException e) {
throw new MOASystemException("1106", null, e);
- } catch (SAXException e) {
+ } catch (final SAXException e) {
throw new MOAApplicationException("2209", null, e);
- } catch (IOException e) {
+ } catch (final IOException e) {
throw new MOAApplicationException("2210", null, e);
- }
- finally
- {
+ } finally {
closeInputStream(is);
}
} else {
@@ -816,22 +787,17 @@ public class DataObjectFactory {
doc = DOMUtils.parseDocument(is, false, null, null);
closeInputStream(is);
dataObject = new XMLDataObjectImpl(doc.getDocumentElement());
- } catch (Exception e) {
+ } catch (final Exception e) {
// this is the last chance: return the data as a byte stream
Logger.trace(">>> reading stream for \"" + uri + "\"");
is = resolver.resolve(uri);
ByteArrayInputStream bis;
- try
- {
+ try {
bis = new ByteArrayInputStream(StreamUtils.readStream(is));
dataObject = new ByteStreamDataObjectImpl(bis);
- }
- catch (IOException e1)
- {
+ } catch (final IOException e1) {
throw new MOAApplicationException("2210", new Object[] { uri }, e1);
- }
- finally
- {
+ } finally {
closeInputStream(is);
}
Logger.trace(">>> read stream for \"" + uri + "\"");
@@ -839,34 +805,26 @@ public class DataObjectFactory {
}
}
- else if (asXml)
- {
+ else if (asXml) {
// if we need XML data, we're in the wrong place here
closeInputStream(is);
throw new MOAApplicationException("2211", new Object[] { uri });
- }
- else
- {
+ } else {
// content is binary: make it available as a binary input stream
Logger.trace(">>> getting binary input for \"" + uri + "\"");
byte[] contentBytes;
ByteArrayInputStream bis;
- try
- {
- contentBytes = StreamUtils.readStream(is);
- bis = new ByteArrayInputStream(contentBytes);
- }
- catch (IOException e)
- {
+ try {
+ contentBytes = StreamUtils.readStream(is);
+ bis = new ByteArrayInputStream(contentBytes);
+ } catch (final IOException e) {
throw new MOAApplicationException("2210", null, e);
- }
- finally
- {
+ } finally {
closeInputStream(is);
}
- if (!foundURI) {
- context.PutResolvedEntity(uri, contentBytes, contentType);
- }
+ if (!foundURI) {
+ context.PutResolvedEntity(uri, contentBytes, contentType);
+ }
dataObject = new ByteStreamDataObjectImpl(bis);
Logger.trace("<<< got binary input for \"" + uri + "\"");
}
@@ -884,16 +842,12 @@ public class DataObjectFactory {
*
* @param is The input stream to be closed.
*/
- private static void closeInputStream(InputStream is)
- {
- try
- {
+ private static void closeInputStream(InputStream is) {
+ try {
if (is != null) {
is.close();
}
- }
- catch (Throwable t)
- {
+ } catch (final Throwable t) {
// Intentionally do nothing here
}
}
@@ -905,42 +859,43 @@ public class DataObjectFactory {
* <code>application/xml</code>.
*
* @param contentType The content MIME type.
- * @return boolean If <code>true</code>, the content type is XML, otherwise
- * not.
+ * @return boolean If <code>true</code>, the content type is XML, otherwise not.
*/
private static boolean contentTypeIsXml(String contentType) {
return contentType.startsWith("text/xml")
- || (contentType.startsWith("application/xml"));
+ || contentType.startsWith("application/xml");
}
/**
* Create a <code>DataObject</code> from a <code>ContentXML</code> object.
*
- * @param xmlContent The <code>ContentXML</code> object from
- * which the <code>DataObject</code> is to be built.
+ * @param xmlContent The <code>ContentXML</code> object from which the
+ * <code>DataObject</code> is to be built.
* @param xmlAsNodeList If <code>true</code>, the children of
- * <code>xmlContent</code> are returned as a
- * <code>XMLNodeListDataObject</code>. Otherwise,
- * <code>xmlContent</code> may only contain a single child node, which must be
- * an element and which is returned as an <code>XMLDataObject</code>.
+ * <code>xmlContent</code> are returned as a
+ * <code>XMLNodeListDataObject</code>. Otherwise,
+ * <code>xmlContent</code> may only contain a single child
+ * node, which must be an element and which is returned as
+ * an <code>XMLDataObject</code>.
* @return A <code>DataObject</code> representing the XML content in
- * <code>xmlContent</code>.
+ * <code>xmlContent</code>.
* @throws MOAApplicationException If <code>xmlAsNodeList</code> is
- * <code>false</code> and <code>xmlContent</code> does not have a single child
- * element.
+ * <code>false</code> and
+ * <code>xmlContent</code> does not have a
+ * single child element.
*/
private DataObjectImpl createFromXmlContent(
- ContentXML xmlContent,
- boolean xmlAsNodeList)
- throws MOAApplicationException {
+ ContentXML xmlContent,
+ boolean xmlAsNodeList)
+ throws MOAApplicationException {
DataObjectImpl dataObject;
if (xmlAsNodeList) {
dataObject = new XMLNodeListDataObjectImpl(xmlContent.getXMLContent());
} else {
- NodeList nodes = xmlContent.getXMLContent();
- Element element = checkForSingleElement(nodes);
+ final NodeList nodes = xmlContent.getXMLContent();
+ final Element element = checkForSingleElement(nodes);
// build the XMLDataObject
dataObject = new XMLDataObjectImpl(element);
@@ -955,10 +910,10 @@ public class DataObjectFactory {
* @param nodes The <code>NodeList</code> to check for a single element.
* @return The single element contained in <code>nodes</code>.
* @throws MOAApplicationException Thrown, if <code>nodes</code> does not
- * contain exactly 1 element node.
+ * contain exactly 1 element node.
*/
private Element checkForSingleElement(NodeList nodes)
- throws MOAApplicationException {
+ throws MOAApplicationException {
Element element = null;
int i;
@@ -986,26 +941,28 @@ public class DataObjectFactory {
* Create a <code>DataObject</code> from a <code>ContentBinary</code> object.
*
* @param binaryContent The <code>ContentBinary</code> object containing the
- * data.
- * @param asXml If <code>true</code>, <code>binaryContent</code> must
- * contain XML data. Otherwise, a <code>BinaryDataObject</code> will be
- * returned containing a byte stream to the decoded Base64 data.
- * @param repeatable If multiple calls to <code>getInputStream()</code> must
- * repeatedly return the content of the data object.
+ * data.
+ * @param asXml If <code>true</code>, <code>binaryContent</code> must
+ * contain XML data. Otherwise, a
+ * <code>BinaryDataObject</code> will be returned
+ * containing a byte stream to the decoded Base64 data.
+ * @param repeatable If multiple calls to <code>getInputStream()</code> must
+ * repeatedly return the content of the data object.
* @return A <code>DataObject</code> representing the content contained in
- * <code>binaryContent</code>.
- * @throws MOASystemException An error indicating an internal problem. See the
- * wrapped exception for details.
+ * <code>binaryContent</code>.
+ * @throws MOASystemException An error indicating an internal problem. See
+ * the wrapped exception for details.
* @throws MOAApplicationException An error occurred handling the content
- * (probably while parsing the data). See the wrapped exception for details.
+ * (probably while parsing the data). See the
+ * wrapped exception for details.
*/
private DataObjectImpl createFromBinaryContent(
- ContentBinary binaryContent,
- boolean asXml,
- boolean repeatable)
- throws MOASystemException, MOAApplicationException {
+ ContentBinary binaryContent,
+ boolean asXml,
+ boolean repeatable)
+ throws MOASystemException, MOAApplicationException {
- InputStream byteStream = binaryContent.getBinaryContent();
+ final InputStream byteStream = binaryContent.getBinaryContent();
DataObjectImpl dataObject;
if (asXml) {
@@ -1014,19 +971,19 @@ public class DataObjectFactory {
try {
doc = DOMUtils.parseDocument(byteStream, false, null, null);
dataObject = new XMLDataObjectImpl(doc.getDocumentElement());
- } catch (ParserConfigurationException e) {
+ } catch (final ParserConfigurationException e) {
throw new MOASystemException("1106", null, e);
- } catch (SAXException e) {
+ } catch (final SAXException e) {
throw new MOAApplicationException("2209", null, e);
- } catch (IOException e) {
+ } catch (final IOException e) {
throw new MOAApplicationException("2210", null, e);
}
} else {
if (repeatable) {
try {
dataObject =
- new ByteArrayDataObjectImpl(StreamUtils.readStream(byteStream));
- } catch (IOException e) {
+ new ByteArrayDataObjectImpl(StreamUtils.readStream(byteStream));
+ } catch (final IOException e) {
throw new MOAApplicationException("2210", null);
}
} else {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java
index 933d058..5668a36 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ExternalURIResolver.java
@@ -21,12 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
-import iaik.xml.crypto.utils.URI;
-import iaik.xml.crypto.utils.URIException;
-
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
@@ -38,10 +34,12 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
import at.gv.egovernment.moa.spss.util.ExternalURIVerifier;
+import iaik.xml.crypto.utils.URI;
+import iaik.xml.crypto.utils.URIException;
/**
* Resolve external URIs and provide them as a stream.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -52,14 +50,15 @@ public class ExternalURIResolver {
/**
* Return a stream to data at the given URI.
- *
- * This method will try to open an <code>URLConnection</code> to the given
- * URI. Access to the file system is disallowed.
- *
+ *
+ * This method will try to open an <code>URLConnection</code> to the given URI.
+ * Access to the file system is disallowed.
+ *
* @param uriStr The URI to resolve.
* @return InputStream The data contained at the URI.
* @throws MOAApplicationException An error occurred resolving the URI (e.g.,
- * the URI is syntactically incorrect or the stream could not be opened).
+ * the URI is syntactically incorrect or the
+ * stream could not be opened).
*/
public InputStream resolve(String uriStr) throws MOAApplicationException {
URI uri;
@@ -70,7 +69,7 @@ public class ExternalURIResolver {
// build the URI
try {
uri = new URI(uriStr);
- } catch (URIException e) {
+ } catch (final URIException e) {
throw new MOAApplicationException("2207", new Object[] { uriStr });
}
@@ -81,30 +80,30 @@ public class ExternalURIResolver {
// if we have local content (SOAP with attachments)
if ("formdata".equals(uri.getScheme())) {
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- if (context==null) {
- //no transaction
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ if (context == null) {
+ // no transaction
throw new MOAApplicationException("2282", new Object[] { uri });
} else {
- InputStream attachmentIs = context.getAttachmentInputStream(uri);
+ final InputStream attachmentIs = context.getAttachmentInputStream(uri);
if (attachmentIs != null) {
setContentType(context.getAttachmentContentType(uri.getPath()));
return attachmentIs;
} else {
- //maybe attachments provided but no suiting attachment found
+ // maybe attachments provided but no suiting attachment found
throw new MOAApplicationException("2282", new Object[] { uri });
}
- }
- }
-
+ }
+ }
+
// convert URI to URL
try {
// create the URL
url = new URL(uriStr);
- //System.out.println("ExternalURIResolver: " + url);
+ // System.out.println("ExternalURIResolver: " + url);
ExternalURIVerifier.verify(url.getHost(), url.getPort());
-
- } catch (MalformedURLException e) {
+
+ } catch (final MalformedURLException e) {
throw new MOAApplicationException("2214", new Object[] { uriStr });
}
@@ -112,7 +111,7 @@ public class ExternalURIResolver {
try {
connection = url.openConnection();
if ("http".equals(url.getProtocol())) {
- HttpURLConnection httpConnection = (HttpURLConnection) connection;
+ final HttpURLConnection httpConnection = (HttpURLConnection) connection;
// disallow redirects
httpConnection.setInstanceFollowRedirects(false);
@@ -121,33 +120,31 @@ public class ExternalURIResolver {
throw new MOAApplicationException("2208", new Object[] { uri });
}
} else if ("https".equals(url.getProtocol())) {
- /*
- * this doesn't work because of some interaction between the IAIK
- * JCE and Sun JSSE that results in an "Invalid AVA format" exception
+ /*
+ * this doesn't work because of some interaction between the IAIK JCE and Sun
+ * JSSE that results in an "Invalid AVA format" exception
*/
/*
- HttpsURLConnection httpsConnection = (HttpsURLConnection) connection;
- InputStream trustStore =
- getClass().getResourceAsStream(DEFAULT_TRUST_STORE);
- SSLSocketFactory factory =
- SSLUtils.getSSLSocketFactory("jks", trustStore, "changeit");
- httpsConnection.setSSLSocketFactory(factory);
- httpsConnection.connect();
- if (httpConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
- throw new MOAApplicationException("2208", new Object[] { uri });
- }
- */
+ * HttpsURLConnection httpsConnection = (HttpsURLConnection) connection;
+ * InputStream trustStore = getClass().getResourceAsStream(DEFAULT_TRUST_STORE);
+ * SSLSocketFactory factory = SSLUtils.getSSLSocketFactory("jks", trustStore,
+ * "changeit"); httpsConnection.setSSLSocketFactory(factory);
+ * httpsConnection.connect(); if (httpConnection.getResponseCode() !=
+ * HttpURLConnection.HTTP_OK) { throw new MOAApplicationException("2208", new
+ * Object[] { uri }); }
+ */
connection.connect();
} else {
connection.connect();
}
is = connection.getInputStream();
- } catch (IOException e) {
+ } catch (final IOException e) {
throw new MOAApplicationException("2208", new Object[] { uri }, e);
- } /*catch (GeneralSecurityException e) {
- throw new MOAApplicationException("2208", new Object[] { uri }, e);
- }*/
+ } /*
+ * catch (GeneralSecurityException e) { throw new
+ * MOAApplicationException("2208", new Object[] { uri }, e); }
+ */
// set the content type
setContentType(connection.getContentType());
@@ -157,7 +154,7 @@ public class ExternalURIResolver {
/**
* Set the content type of the data at the URI.
- *
+ *
* @param contentType The content type to set.
*/
protected void setContentType(String contentType) {
@@ -167,7 +164,7 @@ public class ExternalURIResolver {
/**
* Return the content type of the data detected at the URI from the previous
* call of <code>resolve()</code>.
- *
+ *
* @return String The content type.
*/
public String getContentType() {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java
index 6e8448b..8817937 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/IaikExceptionMapper.java
@@ -21,12 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
-import iaik.server.modules.IAIKException;
-import iaik.server.modules.IAIKRuntimeException;
-
import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Map;
@@ -34,12 +30,13 @@ import java.util.Map;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
-
+import iaik.server.modules.IAIKException;
+import iaik.server.modules.IAIKRuntimeException;
/**
* Map an exception from the <code>iaik</code> namespace to a
* <code>MOAException</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -47,57 +44,80 @@ public class IaikExceptionMapper {
/** The argument classes for <code>MOAException</code>s. */
private static final Class[] CONSTRUCTOR_ARGS =
- new Class[] { String.class, Object[].class, Throwable.class };
+ new Class[] { String.class, Object[].class, Throwable.class };
/** The exception mapping, as an array. */
private static final Object[][] MESSAGES =
- {
- { iaik.server.modules.IAIKException.class, "9900", MOASystemException.class },
- { iaik.server.modules.IAIKRuntimeException.class, "9901", MOASystemException.class },
- { iaik.server.modules.xmlsign.XMLSignatureCreationException.class, "2220", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.XMLSignatureCreationRuntimeException.class, "2220", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.InvalidKeyException.class, "2221", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.ManifestException.class, "2222", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.ReferenceException.class, "2223", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.HashUnavailableException.class, "2224", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.SignatureAlgorithmException.class, "2225", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.SignatureEmbeddingException.class, "2226", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.SignatureValueException.class, "2227", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.SignedPropertyException.class, "2228", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.SignerCertificateUnavailableException.class, "2229", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.SupplementException.class, "2230", MOAApplicationException.class },
- { iaik.server.modules.xmlsign.TransformationException.class, "2233", MOAApplicationException.class },
- { iaik.server.modules.cmsverify.CMSSignatureVerificationException.class, "2240", MOAApplicationException.class },
- { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2240", MOAApplicationException.class },
- { iaik.server.modules.cmsverify.AlgorithmNotSupportedException.class, "2241", MOAApplicationException.class },
- { iaik.server.modules.cmsverify.CMSSignatureParsingException.class, "2242", MOAApplicationException.class },
- { iaik.server.modules.cmsverify.SignerCertificateUnavailableException.class, "2243", MOAApplicationException.class },
- { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2247", MOAApplicationException.class },
- { iaik.server.modules.cmsverify.InitException.class, "2248", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.XMLSignatureVerificationException.class, "2240", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.XMLSignatureVerificationRuntimeException.class, "2240", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.AlgorithmNotSupportedException.class, "2241", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.ManifestException.class, "2262", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.PropertiesException.class, "2263", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.ReferenceException.class, "2264", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.HashUnavailableException.class, "2224", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.SignerCertificateUnavailableException.class, "2243", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.SupplementException.class, "2230", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.TransformationException.class, "2265", MOAApplicationException.class },
- { iaik.server.modules.xmlverify.TransformationParsingException.class, "2269", MOAApplicationException.class },
- { at.gv.egovernment.moa.sig.tsl.exception.TslException.class, "2290", MOAApplicationException.class },
- { iaik.server.modules.cmssign.CMSSignatureCreationException.class, "2300", MOAApplicationException.class } ,
-
-
- };
-
+ {
+ { iaik.server.modules.IAIKException.class, "9900", MOASystemException.class },
+ { iaik.server.modules.IAIKRuntimeException.class, "9901", MOASystemException.class },
+ { iaik.server.modules.xmlsign.XMLSignatureCreationException.class, "2220",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.XMLSignatureCreationRuntimeException.class, "2220",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.InvalidKeyException.class, "2221", MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.ManifestException.class, "2222", MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.ReferenceException.class, "2223", MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.HashUnavailableException.class, "2224",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.SignatureAlgorithmException.class, "2225",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.SignatureEmbeddingException.class, "2226",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.SignatureValueException.class, "2227",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.SignedPropertyException.class, "2228",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.SignerCertificateUnavailableException.class, "2229",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.SupplementException.class, "2230", MOAApplicationException.class },
+ { iaik.server.modules.xmlsign.TransformationException.class, "2233",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmsverify.CMSSignatureVerificationException.class, "2240",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2240",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmsverify.AlgorithmNotSupportedException.class, "2241",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmsverify.CMSSignatureParsingException.class, "2242",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmsverify.SignerCertificateUnavailableException.class, "2243",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmsverify.CMSSignatureVerificationRuntimeException.class, "2247",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmsverify.InitException.class, "2248", MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.XMLSignatureVerificationException.class, "2240",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.XMLSignatureVerificationRuntimeException.class, "2240",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.AlgorithmNotSupportedException.class, "2241",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.ManifestException.class, "2262", MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.PropertiesException.class, "2263", MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.ReferenceException.class, "2264", MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.HashUnavailableException.class, "2224",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.SignerCertificateUnavailableException.class, "2243",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.SupplementException.class, "2230", MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.TransformationException.class, "2265",
+ MOAApplicationException.class },
+ { iaik.server.modules.xmlverify.TransformationParsingException.class, "2269",
+ MOAApplicationException.class },
+ { at.gv.egovernment.moa.sig.tsl.exception.TslException.class, "2290",
+ MOAApplicationException.class },
+ { iaik.server.modules.cmssign.CMSSignatureCreationException.class, "2300",
+ MOAApplicationException.class },
+
+ };
+
/** The single instance of this class. */
private static IaikExceptionMapper instance;
/** The exception mapping, as a <code>Map</code> for fast lookup. */
- private Map messages = new HashMap();
+ private final Map messages = new HashMap();
/**
* Get the single instance of this class.
- *
+ *
* @return The single instance of this class.
*/
public static synchronized IaikExceptionMapper getInstance() {
@@ -109,7 +129,7 @@ public class IaikExceptionMapper {
/**
* Create a new <code>IaikExceptionMapper</code>.
- *
+ *
* Protected to disallow multple instances.
*/
protected IaikExceptionMapper() {
@@ -124,59 +144,63 @@ public class IaikExceptionMapper {
for (i = 0; i < MESSAGES.length; i++) {
registerMessage(
- (Class) MESSAGES[i][0],
- (String) MESSAGES[i][1],
- (Class) MESSAGES[i][2]);
+ (Class) MESSAGES[i][0],
+ (String) MESSAGES[i][1],
+ (Class) MESSAGES[i][2]);
}
}
/**
* Register a single <code>IAIKException</code> to message mapping.
- *
- * @param iaikExceptionClass An exception from the <code>iaik</code> package.
- * @param messageId The corresponding error message id.
- * @param moaExceptionClass The type of <code>MOAException</code> that the
- * <code>IAIKException</code> is mapped to (usually
- * <code>MOAApplicationException</code> or <code>MOASystemException</code>).
+ *
+ * @param iaikExceptionClass An exception from the <code>iaik</code> package.
+ * @param messageId The corresponding error message id.
+ * @param moaExceptionClass The type of <code>MOAException</code> that the
+ * <code>IAIKException</code> is mapped to (usually
+ * <code>MOAApplicationException</code> or
+ * <code>MOASystemException</code>).
*/
protected void registerMessage(
- Class iaikExceptionClass,
- String messageId,
- Class moaExceptionClass) {
+ Class iaikExceptionClass,
+ String messageId,
+ Class moaExceptionClass) {
messages.put(
- iaikExceptionClass,
- new ExceptionMappingInfo(messageId, moaExceptionClass));
+ iaikExceptionClass,
+ new ExceptionMappingInfo(messageId, moaExceptionClass));
}
/**
- * Map an <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code> to a <code>MOAException</code>.
- *
- * @param tslSearchException The <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code> to map.
- * @return A <code>MOAException</code> containing the message for the
- * given <code>IAIKException</code>.
+ * Map an <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code> to a
+ * <code>MOAException</code>.
+ *
+ * @param tslSearchException The
+ * <code>iaik.xml.crypto.tsl.ex.TSLSearchException</code>
+ * to map.
+ * @return A <code>MOAException</code> containing the message for the given
+ * <code>IAIKException</code>.
*/
public MOAException map(at.gv.egovernment.moa.sig.tsl.exception.TslException tslSearchException) {
return mapImpl(tslSearchException);
}
-
+
/**
* Map an <code>IAIKException</code> to a <code>MOAException</code>.
- *
- * @param iaikException The <code>IAIKException</code> to map.
- * @return A <code>MOAException</code> containing the message for the
- * given <code>IAIKException</code>.
+ *
+ * @param iaikException The <code>IAIKException</code> to map.
+ * @return A <code>MOAException</code> containing the message for the given
+ * <code>IAIKException</code>.
*/
public MOAException map(IAIKException iaikException) {
return mapImpl(iaikException);
}
-
+
/**
* Map an <code>IAIKRuntimeException</code> to a <code>MOAException</code>.
- *
- * @param iaikException The <code>IAIKException</code> to map.
- * @return A <code>MOAException</code> containing the message for the
- * given <code>IAIKRuntimeException</code>.
+ *
+ * @param iaikException The <code>IAIKException</code> to map.
+ * @return A <code>MOAException</code> containing the message for the given
+ * <code>IAIKRuntimeException</code>.
*/
public MOAException map(IAIKRuntimeException iaikException) {
return mapImpl(iaikException);
@@ -185,14 +209,14 @@ public class IaikExceptionMapper {
/**
* Map an <code>IAIKException</code> or <code>IAIKRuntimeException</code> to a
* <code>MOAException</code>.
- *
+ *
* @param iaikException The <code>IAIKException</code> or
- * <code>IAIKRuntimeException</code> to map.
- * @return A <code>MOAException</code> containing the message for the
- * given <code>IAIKRuntimeException</code>.
+ * <code>IAIKRuntimeException</code> to map.
+ * @return A <code>MOAException</code> containing the message for the given
+ * <code>IAIKRuntimeException</code>.
*/
private MOAException mapImpl(Exception iaikException) {
- MOAException moaException = createMoaException(iaikException);
+ final MOAException moaException = createMoaException(iaikException);
if (moaException == null) {
return new MOASystemException("9999", null, iaikException);
@@ -201,16 +225,16 @@ public class IaikExceptionMapper {
}
/**
- * Create a <code>MOAException</code> from a given <code>IAIKException</code>
- * by looking it up in the mapping.
- *
+ * Create a <code>MOAException</code> from a given <code>IAIKException</code> by
+ * looking it up in the mapping.
+ *
* @param iaikException The <code>IAIKException</code> to map.
- * @return A <code>MOAException</code> with an error code corresponding to
- * the given <code>IAIKException</code>. Returns <code>null</code>, if no
- * mapping could be found.
+ * @return A <code>MOAException</code> with an error code corresponding to the
+ * given <code>IAIKException</code>. Returns <code>null</code>, if no
+ * mapping could be found.
*/
protected MOAException createMoaException(Exception iaikException) {
- ExceptionMappingInfo info = lookupMessage(iaikException.getClass());
+ final ExceptionMappingInfo info = lookupMessage(iaikException.getClass());
Constructor constructor;
if (info == null) {
@@ -220,13 +244,13 @@ public class IaikExceptionMapper {
// instantiate the proper MOAException and return it
try {
constructor =
- info.getMoaExceptionClass().getConstructor(CONSTRUCTOR_ARGS);
+ info.getMoaExceptionClass().getConstructor(CONSTRUCTOR_ARGS);
return (MOAException) constructor.newInstance(
- new Object[] {
- info.getMessageId(),
- new Object[] { iaikException.getMessage()},
- iaikException });
- } catch (Exception e) {
+ new Object[] {
+ info.getMessageId(),
+ new Object[] { iaikException.getMessage() },
+ iaikException });
+ } catch (final Exception e) {
return null;
}
}
@@ -234,19 +258,19 @@ public class IaikExceptionMapper {
/**
* Recursively look up the message associated with an
* <code>IAIKException</code>.
- *
+ *
* This method walks up the exception inheritance hierarchy until it finds a
* mapping.
- *
+ *
* @param iaikExceptionClass The <code>IAIKException</code> to look up.
- * @return Information about the message id and
- * <code>MOAException</code> class that the <code>iaikExceptionClass</code>
- * maps to. If no mapping could be found, <code>null</code> is returned.
+ * @return Information about the message id and <code>MOAException</code> class
+ * that the <code>iaikExceptionClass</code> maps to. If no mapping could
+ * be found, <code>null</code> is returned.
*/
protected ExceptionMappingInfo lookupMessage(Class iaikExceptionClass) {
ExceptionMappingInfo info;
- // break if
+ // break if
if (iaikExceptionClass.equals(Exception.class)) {
return null;
}
@@ -264,21 +288,21 @@ public class IaikExceptionMapper {
/**
* A class containing a mapping from an error message ID to a
* <code>MOAException</code> class.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
class ExceptionMappingInfo {
/** The message ID. */
- private String messageId;
+ private final String messageId;
/** The <code>MOAException</code> class. */
- private Class moaExceptionClass;
+ private final Class moaExceptionClass;
/**
* Create a new <code>ExceptionMappingInfo</code>.
- *
- * @param messageId The message ID.
- * @param moaExceptionClass The <code>MOAException</code> class.
+ *
+ * @param messageId The message ID.
+ * @param moaExceptionClass The <code>MOAException</code> class.
*/
public ExceptionMappingInfo(String messageId, Class moaExceptionClass) {
this.messageId = messageId;
@@ -287,7 +311,7 @@ class ExceptionMappingInfo {
/**
* Return the message ID.
- *
+ *
* @return The message ID.
*/
public String getMessageId() {
@@ -296,7 +320,7 @@ class ExceptionMappingInfo {
/**
* Returns the <code>MOAException</code> class that the message ID maps to.
- *
+ *
* @return The <code>MOAException</code> class.
*/
public Class getMoaExceptionClass() {
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java
index 0128e6a..43c993b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/InvokerUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import org.w3c.dom.Element;
@@ -35,7 +34,7 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* Utility methods for invoking the IAIK MOA modules.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -43,44 +42,44 @@ public class InvokerUtils {
/**
* Select the signature parent element.
- *
- * @param root The root DOM element which contains the signature parent
- * element somewhere in its subtree.
- * @param location The <code>ElementSelector</code> containing the XPath
- * expression to select the signature parent element from the document.
- * It is also contains the namespace prefix to URI mapping.
+ *
+ * @param root The root DOM element which contains the signature parent
+ * element somewhere in its subtree.
+ * @param location The <code>ElementSelector</code> containing the XPath
+ * expression to select the signature parent element from the
+ * document. It is also contains the namespace prefix to URI
+ * mapping.
* @return Element The signature parent element.
* @throws MOAApplicationException An error occurred evaluating the
- * <code>location</code>.
+ * <code>location</code>.
*/
public static Element evaluateSignatureLocation(
- Element root,
- ElementSelector location)
- throws MOAApplicationException {
+ Element root,
+ ElementSelector location)
+ throws MOAApplicationException {
NodeList nodes;
try {
nodes =
- XPathUtils.selectNodeList(
- root,
- location.getNamespaceDeclarations(),
- location.getXPathExpression());
- } catch (XPathException e) {
+ XPathUtils.selectNodeList(
+ root,
+ location.getNamespaceDeclarations(),
+ location.getXPathExpression());
+ } catch (final XPathException e) {
throw new MOAApplicationException(
- "2212",
- new Object[] { location.getXPathExpression()},
- e);
+ "2212",
+ new Object[] { location.getXPathExpression() },
+ e);
}
if (nodes.getLength() != 1
- || !(nodes.item(0).getNodeType() == Node.ELEMENT_NODE)) {
+ || !(nodes.item(0).getNodeType() == Node.ELEMENT_NODE)) {
throw new MOAApplicationException(
- "2212",
- new Object[] { location.getXPathExpression()});
+ "2212",
+ new Object[] { location.getXPathExpression() });
}
return (Element) nodes.item(0);
}
-
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java
index c6eaa4f..474e74b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ProfileMapper.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import java.util.ArrayList;
@@ -48,7 +47,7 @@ import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
/**
* Map ProfileID objects to their explicit represantation.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -58,83 +57,79 @@ public class ProfileMapper {
private static ProfileParser profileParser = new ProfileParser();
/**
- * Map a <code>CreateTransformsInfoProfile</code> to a
+ * Map a <code>CreateTransformsInfoProfile</code> to a
* <code>CreateTransformsInfoProfileExplicit</code>.
- *
+ *
* @param profile The profile object to map.
- * @param config The MOA configuration to use for looking up the profile.
+ * @param config The MOA configuration to use for looking up the profile.
* @return <code>profile</code>, if the given profile is of type
- * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code>, otherwise the profile
- * that is looked up and parsed from the configuration.
+ * <code>EXPLICIT_CREATETRANSFORMSINFOPROFILE</code>, otherwise the
+ * profile that is looked up and parsed from the configuration.
* @throws MOAApplicationException An error occurred parsing the profile.
*/
public static CreateTransformsInfoProfileExplicit mapCreateTransformsInfoProfile(
- CreateTransformsInfoProfile profile,
- ConfigurationProvider config)
- throws MOAApplicationException {
+ CreateTransformsInfoProfile profile,
+ ConfigurationProvider config)
+ throws MOAApplicationException {
switch (profile.getCreateTransformsInfoProfileType()) {
- case CreateTransformsInfoProfile.EXPLICIT_CREATETRANSFORMSINFOPROFILE :
+ case CreateTransformsInfoProfile.EXPLICIT_CREATETRANSFORMSINFOPROFILE:
return (CreateTransformsInfoProfileExplicit) profile;
- case CreateTransformsInfoProfile.ID_CREATETRANSFORMSINFOPROFILE :
- CreateTransformsInfoProfileID profileIdObj =
- (CreateTransformsInfoProfileID) profile;
- String profileID = profileIdObj.getCreateTransformsInfoProfileID();
- Element profileElem = config.getCreateTransformsInfoProfile(profileID);
+ case CreateTransformsInfoProfile.ID_CREATETRANSFORMSINFOPROFILE:
+ final CreateTransformsInfoProfileID profileIdObj =
+ (CreateTransformsInfoProfileID) profile;
+ final String profileID = profileIdObj.getCreateTransformsInfoProfileID();
+ final Element profileElem = config.getCreateTransformsInfoProfile(profileID);
if (profileElem == null) {
throw new MOAApplicationException("2234", new Object[] { profileID });
}
- return (
- CreateTransformsInfoProfileExplicit) profileParser
+ return (CreateTransformsInfoProfileExplicit) profileParser
.parseCreateTransformsInfoProfile(
- profileElem);
+ profileElem);
}
return null; // this will not happen
}
/**
- * Map a <code>CreateSignatureEnvironmentProfile</code> to a
+ * Map a <code>CreateSignatureEnvironmentProfile</code> to a
* <code>CreateSignatureEnvironmentProfileExplicit</code>.
- *
+ *
* @param profile The profile object to map.
- * @param config The MOA configuration to use for looking up the profile.
+ * @param config The MOA configuration to use for looking up the profile.
* @return <code>profile</code>, if the given profile is of type
- * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code>, otherwise the
- * profile that is looked up and parsed from the configuration.
+ * <code>EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE</code>, otherwise
+ * the profile that is looked up and parsed from the configuration.
* @throws MOAApplicationException An error occurred parsing the profile.
*/
public static CreateSignatureEnvironmentProfileExplicit mapCreateSignatureEnvironmentProfile(
- CreateSignatureEnvironmentProfile profile,
- ConfigurationProvider config)
- throws MOAApplicationException {
+ CreateSignatureEnvironmentProfile profile,
+ ConfigurationProvider config)
+ throws MOAApplicationException {
switch (profile.getCreateSignatureEnvironmentProfileType()) {
- case CreateSignatureEnvironmentProfile
- .EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE :
+ case CreateSignatureEnvironmentProfile.EXPLICIT_CREATESIGNATUREENVIRONMENTPROFILE:
return (CreateSignatureEnvironmentProfileExplicit) profile;
- case CreateSignatureEnvironmentProfile
- .ID_CREATESIGNATUREENVIRONMENTPROFILE :
+ case CreateSignatureEnvironmentProfile.ID_CREATESIGNATUREENVIRONMENTPROFILE:
- CreateSignatureEnvironmentProfileID profileIdObj =
- (CreateSignatureEnvironmentProfileID) profile;
- String profileID =
- profileIdObj.getCreateSignatureEnvironmentProfileID();
- Element profileElem =
- config.getCreateSignatureEnvironmentProfile(profileID);
+ final CreateSignatureEnvironmentProfileID profileIdObj =
+ (CreateSignatureEnvironmentProfileID) profile;
+ final String profileID =
+ profileIdObj.getCreateSignatureEnvironmentProfileID();
+ final Element profileElem =
+ config.getCreateSignatureEnvironmentProfile(profileID);
if (profileElem == null) {
throw new MOAApplicationException("2236", new Object[] { profileID });
}
- return (
- CreateSignatureEnvironmentProfileExplicit) profileParser
+ return (CreateSignatureEnvironmentProfileExplicit) profileParser
.parseCreateSignatureEnvironmentProfile(
- profileElem);
+ profileElem);
}
return null;
@@ -142,25 +137,25 @@ public class ProfileMapper {
}
/**
- * Map a <code>List</code> of <code>SupplementProfile</code>s to their
- * explicit representation.
- *
+ * Map a <code>List</code> of <code>SupplementProfile</code>s to their explicit
+ * representation.
+ *
* @param profiles The profiles to map.
- * @param config The MOA configuration to use for looking up profiles.
+ * @param config The MOA configuration to use for looking up profiles.
* @return The mapped profiles.
* @throws MOAApplicationException An error occurred mapping one of the
- * profiles.
+ * profiles.
*/
public static List mapSupplementProfiles(
- List profiles,
- ConfigurationProvider config)
- throws MOAApplicationException {
+ List profiles,
+ ConfigurationProvider config)
+ throws MOAApplicationException {
- List mappedProfiles = new ArrayList();
+ final List mappedProfiles = new ArrayList();
Iterator iter;
for (iter = profiles.iterator(); iter.hasNext();) {
- SupplementProfile profile = (SupplementProfile) iter.next();
+ final SupplementProfile profile = (SupplementProfile) iter.next();
mappedProfiles.add(mapSupplementProfile(profile, config));
}
@@ -168,63 +163,62 @@ public class ProfileMapper {
}
/**
- * Map a <code>SupplementProfile</code> to a
+ * Map a <code>SupplementProfile</code> to a
* <code>SupplementProfileExplicit</code>.
- *
+ *
* @param profile The profile object to map.
- * @param config The MOA configuration to use for looking up the profile.
+ * @param config The MOA configuration to use for looking up the profile.
* @return <code>profile</code>, if the given profile is of type
- * <code>EXPLICIT_SUPPLEMENTPROFILE</code>, otherwise the
- * profile that is looked up and parsed from the configuration.
+ * <code>EXPLICIT_SUPPLEMENTPROFILE</code>, otherwise the profile that
+ * is looked up and parsed from the configuration.
* @throws MOAApplicationException An error occurred parsing the profile.
*/
public static SupplementProfileExplicit mapSupplementProfile(
- SupplementProfile profile,
- ConfigurationProvider config)
- throws MOAApplicationException {
+ SupplementProfile profile,
+ ConfigurationProvider config)
+ throws MOAApplicationException {
switch (profile.getSupplementProfileType()) {
- case SupplementProfile.EXPLICIT_SUPPLEMENTPROFILE :
+ case SupplementProfile.EXPLICIT_SUPPLEMENTPROFILE:
return (SupplementProfileExplicit) profile;
- case SupplementProfile.ID_SUPPLEMENTPROFILE :
- SupplementProfileID profileIdObj = (SupplementProfileID) profile;
- String profileID = profileIdObj.getSupplementProfileID();
- Element profileElem = config.getSupplementProfile(profileID);
+ case SupplementProfile.ID_SUPPLEMENTPROFILE:
+ final SupplementProfileID profileIdObj = (SupplementProfileID) profile;
+ final String profileID = profileIdObj.getSupplementProfileID();
+ final Element profileElem = config.getSupplementProfile(profileID);
if (profileElem == null) {
throw new MOAApplicationException("2267", new Object[] { profileID });
}
- return (
- SupplementProfileExplicit) profileParser.parseSupplementProfile(
- profileElem);
+ return (SupplementProfileExplicit) profileParser.parseSupplementProfile(
+ profileElem);
}
return null;
}
/**
- * Map a <code>List</code> of <code>VerifyTransformsInfoProfile</code>s to
- * their explicit representation.
- *
+ * Map a <code>List</code> of <code>VerifyTransformsInfoProfile</code>s to their
+ * explicit representation.
+ *
* @param profiles The profiles to map.
- * @param config The MOA configuration to use for looking up profiles.
+ * @param config The MOA configuration to use for looking up profiles.
* @return The mapped profiles.
* @throws MOAApplicationException An error occurred mapping one of the
- * profiles.
+ * profiles.
*/
public static List mapVerifyTransformsInfoProfiles(
- List profiles,
- ConfigurationProvider config)
- throws MOAApplicationException {
+ List profiles,
+ ConfigurationProvider config)
+ throws MOAApplicationException {
- List mappedProfiles = new ArrayList();
+ final List mappedProfiles = new ArrayList();
Iterator iter;
for (iter = profiles.iterator(); iter.hasNext();) {
- VerifyTransformsInfoProfile profile =
- (VerifyTransformsInfoProfile) iter.next();
+ final VerifyTransformsInfoProfile profile =
+ (VerifyTransformsInfoProfile) iter.next();
mappedProfiles.add(mapVerifyTransformsInfoProfile(profile, config));
}
@@ -232,40 +226,39 @@ public class ProfileMapper {
}
/**
- * Map a <code>VerifyTransformsInfoProfile</code> to a
+ * Map a <code>VerifyTransformsInfoProfile</code> to a
* <code>VerifyTransformsInfoProfileExplicit</code>.
- *
+ *
* @param profile The profile object to map.
- * @param config The MOA configuration to use for looking up the profile.
+ * @param config The MOA configuration to use for looking up the profile.
* @return <code>profile</code>, if the given profile is of type
- * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code>, otherwise the
- * profile that is looked up and parsed from the configuration.
+ * <code>EXPLICIT_VERIFYTRANSFORMSINFOPROFILE</code>, otherwise the
+ * profile that is looked up and parsed from the configuration.
* @throws MOAApplicationException An error occurred parsing the profile.
*/
public static VerifyTransformsInfoProfileExplicit mapVerifyTransformsInfoProfile(
- VerifyTransformsInfoProfile profile,
- ConfigurationProvider config)
- throws MOAApplicationException {
+ VerifyTransformsInfoProfile profile,
+ ConfigurationProvider config)
+ throws MOAApplicationException {
switch (profile.getVerifyTransformsInfoProfileType()) {
- case VerifyTransformsInfoProfile.EXPLICIT_VERIFYTRANSFORMSINFOPROFILE :
+ case VerifyTransformsInfoProfile.EXPLICIT_VERIFYTRANSFORMSINFOPROFILE:
return (VerifyTransformsInfoProfileExplicit) profile;
- case VerifyTransformsInfoProfile.ID_VERIFYTRANSFORMSINFOPROFILE :
- VerifyTransformsInfoProfileID profileIdObj =
- (VerifyTransformsInfoProfileID) profile;
- String profileID = profileIdObj.getVerifyTransformsInfoProfileID();
- Element profileElem =
- config.getVerifyTransformsInfoProfile(profileID);
-
+ case VerifyTransformsInfoProfile.ID_VERIFYTRANSFORMSINFOPROFILE:
+ final VerifyTransformsInfoProfileID profileIdObj =
+ (VerifyTransformsInfoProfileID) profile;
+ final String profileID = profileIdObj.getVerifyTransformsInfoProfileID();
+ final Element profileElem =
+ config.getVerifyTransformsInfoProfile(profileID);
+
if (profileElem == null) {
- throw new MOAApplicationException("2268", new Object[] { profileID });
+ throw new MOAApplicationException("2268", new Object[] { profileID });
}
- return (
- VerifyTransformsInfoProfileExplicit) profileParser
+ return (VerifyTransformsInfoProfileExplicit) profileParser
.parseVerifyTransformsInfoProfile(
- profileElem);
+ profileElem);
}
return null;
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java
index 330ffdd..0674103 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/ServiceContextUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
@@ -32,37 +31,38 @@ import at.gv.egovernment.moaspss.logging.LoggingContext;
import at.gv.egovernment.moaspss.logging.LoggingContextManager;
/**
- * A utility class for setting up and tearing down thread-local context
+ * A utility class for setting up and tearing down thread-local context
* information needed for calling the <code>Invoker</code> classes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class ServiceContextUtils {
-
+
/**
- * Set up the thread-local context information needed for calling the various
+ * Set up the thread-local context information needed for calling the various
* <code>Invoker</code> classes.
- *
- * @throws ConfigurationException An error occurred setting up the
- * configuration in the <code>TransactionContext</code>.
+ *
+ * @throws ConfigurationException An error occurred setting up the configuration
+ * in the <code>TransactionContext</code>.
*/
public static void setUpContexts() throws ConfigurationException {
- TransactionContextManager txMgr = TransactionContextManager.getInstance();
- LoggingContextManager logMgr = LoggingContextManager.getInstance();
- String transactionID = Thread.currentThread().getName();
-
+ final TransactionContextManager txMgr = TransactionContextManager.getInstance();
+ final LoggingContextManager logMgr = LoggingContextManager.getInstance();
+ final String transactionID = Thread.currentThread().getName();
+
if (txMgr.getTransactionContext() == null) {
- TransactionContext ctx = new TransactionContext(transactionID, null, ConfigurationProvider.getInstance());
+ final TransactionContext ctx = new TransactionContext(transactionID, null, ConfigurationProvider
+ .getInstance());
txMgr.setTransactionContext(ctx);
}
-
+
if (logMgr.getLoggingContext() == null) {
- LoggingContext ctx = new LoggingContext(transactionID);
+ final LoggingContext ctx = new LoggingContext(transactionID);
logMgr.setLoggingContext(ctx);
}
}
-
+
/**
* Tear down thread-local context information.
*/
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java
index b746333..ec4bdd9 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureCreationServiceImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import java.util.Collections;
@@ -33,9 +32,9 @@ import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
/**
- * An implementation of the <code>SignatureCreationService</code>, using
- * the <code>XMLSignatureCreationInvoker</code>.
- *
+ * An implementation of the <code>SignatureCreationService</code>, using the
+ * <code>XMLSignatureCreationInvoker</code>.
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -43,25 +42,26 @@ public class SignatureCreationServiceImpl extends SignatureCreationService {
/**
* Create an XML signature.
- *
+ *
* @param request The <code>CreateXMLSignatureRequest</code> containing
- * information about the signature(s) to create.
+ * information about the signature(s) to create.
* @return The created signature(s).
* @throws MOAException An error occurred creating the signature(s).
*/
+ @Override
public CreateXMLSignatureResponse createXMLSignature(CreateXMLSignatureRequest request)
- throws MOAException {
+ throws MOAException {
- XMLSignatureCreationInvoker invoker =
- XMLSignatureCreationInvoker.getInstance();
+ final XMLSignatureCreationInvoker invoker =
+ XMLSignatureCreationInvoker.getInstance();
CreateXMLSignatureResponse response;
try {
-
+
Configurator.getInstance().init();
ServiceContextUtils.setUpContexts();
response = invoker.createXMLSignature(request, Collections.EMPTY_SET);
-
+
return response;
} finally {
ServiceContextUtils.tearDownContexts();
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java
index 5b6033c..50b7c53 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/SignatureVerificationServiceImpl.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import at.gv.egovernment.moa.spss.MOAException;
@@ -33,36 +32,37 @@ import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;
/**
- * An implementation of the <code>SignatureVerificationService</code> using
- * the <code>XMLSignatureVerificationInvoker</code> and the
+ * An implementation of the <code>SignatureVerificationService</code> using the
+ * <code>XMLSignatureVerificationInvoker</code> and the
* <code>CMSSignatureVerificationInvoker</code>.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SignatureVerificationServiceImpl
- extends SignatureVerificationService {
+ extends SignatureVerificationService {
/**
* Verify a CMS signature.
- *
- * @param request The <code>VerifyCMSSignatureRequest</code> containing
- * information about the signature verification.
+ *
+ * @param request The <code>VerifyCMSSignatureRequest</code> containing
+ * information about the signature verification.
* @return The result of the signature verification.
* @throws MOAException An error occurred during signature verification.
*/
+ @Override
public VerifyCMSSignatureResponse verifyCMSSignature(VerifyCMSSignatureRequest request)
- throws MOAException {
+ throws MOAException {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
VerifyCMSSignatureResponse response;
try {
Configurator.getInstance().init();
ServiceContextUtils.setUpContexts();
response = invoker.verifyCMSSignature(request);
-
+
return response;
} finally {
ServiceContextUtils.tearDownContexts();
@@ -71,26 +71,26 @@ public class SignatureVerificationServiceImpl
/**
* Verify an XML signature.
- *
+ *
* @param request The <code>VerifyXMLSignatureRequest</code> containinig
- * information about the signature verification.
+ * information about the signature verification.
* @return The result of the signature verification.
* @throws MOAException An error occurred during signature verification.
*/
+ @Override
public VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request)
- throws MOAException {
+ throws MOAException {
- XMLSignatureVerificationInvoker invoker =
- XMLSignatureVerificationInvoker.getInstance();
+ final XMLSignatureVerificationInvoker invoker =
+ XMLSignatureVerificationInvoker.getInstance();
VerifyXMLSignatureResponse response;
try {
-
Configurator.getInstance().init();
ServiceContextUtils.setUpContexts();
response = invoker.verifyXMLSignature(request);
-
+
return response;
} finally {
ServiceContextUtils.tearDownContexts();
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java
index 7842f14..1eec502 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/TransformationFactory.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import java.util.ArrayList;
@@ -30,14 +29,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import iaik.server.modules.xml.Base64Transformation;
-import iaik.server.modules.xml.Canonicalization;
-import iaik.server.modules.xml.EnvelopedSignatureTransformation;
-import iaik.server.modules.xml.Transformation;
-import iaik.server.modules.xml.XPath2Transformation;
-import iaik.server.modules.xml.XPathTransformation;
-import iaik.server.modules.xml.XSLTTransformation;
-
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.common.ExclusiveCanonicalizationTransform;
import at.gv.egovernment.moa.spss.api.common.Transform;
@@ -53,41 +44,49 @@ import at.gv.egovernment.moa.spss.server.iaik.xml.XPath2FilterImpl;
import at.gv.egovernment.moa.spss.server.iaik.xml.XPath2TransformationImpl;
import at.gv.egovernment.moa.spss.server.iaik.xml.XPathTransformationImpl;
import at.gv.egovernment.moa.spss.server.iaik.xml.XSLTTransformationImpl;
+import iaik.server.modules.xml.Base64Transformation;
+import iaik.server.modules.xml.Canonicalization;
+import iaik.server.modules.xml.EnvelopedSignatureTransformation;
+import iaik.server.modules.xml.Transformation;
+import iaik.server.modules.xml.XPath2Transformation;
+import iaik.server.modules.xml.XPathTransformation;
+import iaik.server.modules.xml.XSLTTransformation;
/**
- * A factory to create <code>Transformation</code> objects from
+ * A factory to create <code>Transformation</code> objects from
* <code>Transform</code> objects.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class TransformationFactory {
-
/** The single instance of this class. */
private static TransformationFactory instance = null;
- /** Maps <code>XPathFilter</code> filter types to
- * <code>XPath2Transformation</code> filter types. */
+ /**
+ * Maps <code>XPathFilter</code> filter types to
+ * <code>XPath2Transformation</code> filter types.
+ */
private static Map FILTER_TYPE_MAPPING;
static {
FILTER_TYPE_MAPPING = new HashMap();
FILTER_TYPE_MAPPING.put(
- XPathFilter.INTERSECT_TYPE,
- XPath2Transformation.XPath2Filter.INTERSECTION);
+ XPathFilter.INTERSECT_TYPE,
+ XPath2Transformation.XPath2Filter.INTERSECTION);
FILTER_TYPE_MAPPING.put(
- XPathFilter.SUBTRACT_TYPE,
- XPath2Transformation.XPath2Filter.SUBTRACTION);
+ XPathFilter.SUBTRACT_TYPE,
+ XPath2Transformation.XPath2Filter.SUBTRACTION);
FILTER_TYPE_MAPPING.put(
- XPathFilter.UNION_TYPE,
- XPath2Transformation.XPath2Filter.UNION);
+ XPathFilter.UNION_TYPE,
+ XPath2Transformation.XPath2Filter.UNION);
}
/**
* Get the single instance of the factory.
- *
+ *
* @return TransformationFactory The single instance.
*/
public static synchronized TransformationFactory getInstance() {
@@ -99,37 +98,36 @@ public class TransformationFactory {
/**
* Create a new <code>TransformationFactory</code>.
- *
+ *
* Protected to disallow multiple instances.
*/
protected TransformationFactory() {
}
/**
- * Create a <code>Transformation</code> based on a
- * <code>Transform</code> object.
- *
- * @param transform The <code>Transform</code> object to extract
- * transformation data from.
- * @return The transformation contained in the <code>transform</code>
+ * Create a <code>Transformation</code> based on a <code>Transform</code>
* object.
+ *
+ * @param transform The <code>Transform</code> object to extract transformation
+ * data from.
+ * @return The transformation contained in the <code>transform</code> object.
* @throws MOAApplicationException An error occured creating the
- * <code>Transformation</code>. See exception message for details.
+ * <code>Transformation</code>. See exception
+ * message for details.
*/
public Transformation createTransformation(Transform transform)
- throws MOAApplicationException {
- String algorithmUri = transform.getAlgorithmURI();
+ throws MOAApplicationException {
+ final String algorithmUri = transform.getAlgorithmURI();
if (Canonicalization.CANONICAL_XML.equals(algorithmUri)
- || Canonicalization.CANONICAL_XML_WITH_COMMENTS.equals(algorithmUri)) {
+ || Canonicalization.CANONICAL_XML_WITH_COMMENTS.equals(algorithmUri)) {
return createC14nTransformation(algorithmUri);
- } else if (
- Canonicalization.EXCLUSIVE_CANONICAL_XML.equals(algorithmUri)
+ } else if (Canonicalization.EXCLUSIVE_CANONICAL_XML.equals(algorithmUri)
|| Canonicalization.EXCLUSIVE_CANONICAL_XML_WITH_COMMENTS.equals(
- algorithmUri)) {
+ algorithmUri)) {
return createExclusiveC14nTransformation(
- (ExclusiveCanonicalizationTransform) transform);
+ (ExclusiveCanonicalizationTransform) transform);
} else if (Base64Transformation.ALL.contains(algorithmUri)) {
return createBase64Transformation();
@@ -147,23 +145,24 @@ public class TransformationFactory {
}
/**
- * Create a <code>List</code> of <code>Transformation</code>s from a
+ * Create a <code>List</code> of <code>Transformation</code>s from a
* <code>List</code> of <code>Transform</code>s.
- *
- * @param transforms The <code>List</code> containing the
- * <code>Transform</code>s.
+ *
+ * @param transforms The <code>List</code> containing the
+ * <code>Transform</code>s.
* @return The <code>List</code> of <code>Transformation</code>s corresponding
- * to the <code>transforms</code>.
+ * to the <code>transforms</code>.
* @throws MOAApplicationException An error occurred building one of the
- * transformations. See exception message for details.
+ * transformations. See exception message for
+ * details.
*/
public List createTransformationList(List transforms)
- throws MOAApplicationException {
- List transformationList = new ArrayList();
+ throws MOAApplicationException {
+ final List transformationList = new ArrayList();
Iterator trIter;
for (trIter = transforms.iterator(); trIter.hasNext();) {
- Transform transform = (Transform) trIter.next();
+ final Transform transform = (Transform) trIter.next();
transformationList.add(createTransformation(transform));
}
@@ -172,7 +171,7 @@ public class TransformationFactory {
/**
* Create a <code>Canonicalization</code>.
- *
+ *
* @param algorithmUri The algorithm URI of the canonicalization.
* @return The <code>Canonicalization</code>.
*/
@@ -182,20 +181,20 @@ public class TransformationFactory {
/**
* Create a <code>ExclusiveCanonicalization</code>.
- *
- * @param transform The <code>ExclusiveCanonicalizationTransform</code>
- * containing the transformation data.
+ *
+ * @param transform The <code>ExclusiveCanonicalizationTransform</code>
+ * containing the transformation data.
* @return The <code>ExclusiveCanonicalization</code>.
*/
private Transformation createExclusiveC14nTransformation(ExclusiveCanonicalizationTransform transform) {
return new ExclusiveCanonicalizationImpl(
- transform.getAlgorithmURI(),
- transform.getInclusiveNamespacePrefixes());
+ transform.getAlgorithmURI(),
+ transform.getInclusiveNamespacePrefixes());
}
/**
* Create a <code>Base64Transformation</code>.
- *
+ *
* @return The <code></code>
*/
private Transformation createBase64Transformation() {
@@ -204,7 +203,7 @@ public class TransformationFactory {
/**
* Create an <code>EnvelopedSignatureTransformation</code>.
- *
+ *
* @return An <code>EnvelopedSignatureTransformation</code>.
*/
private Transformation createEnvelopedSignatureTransformation() {
@@ -213,47 +212,47 @@ public class TransformationFactory {
/**
* Create an <code>XPathTransformation</code>.
- *
- * @param transform The <code>Transform</code> object containing the
- * XPath transformation.
- * @return An <code>XPathTransformation</code> corresponding the
- * transformation given in <code>transform</code>.
- * @throws MOAApplicationException An error occurred creating the
- * <code>Transformation</code>.
+ *
+ * @param transform The <code>Transform</code> object containing the XPath
+ * transformation.
+ * @return An <code>XPathTransformation</code> corresponding the transformation
+ * given in <code>transform</code>.
+ * @throws MOAApplicationException An error occurred creating the
+ * <code>Transformation</code>.
*/
private Transformation createXPathTransformation(XPathTransform transform)
- throws MOAApplicationException {
+ throws MOAApplicationException {
return new XPathTransformationImpl(
- transform.getXPathExpression(),
- transform.getNamespaceDeclarations());
+ transform.getXPathExpression(),
+ transform.getNamespaceDeclarations());
}
/**
* Create an <code>XPath2Transformation</code>.
- *
- * @param transform The <code>Transform</code> object containing the
- * XPath filter transformation.
- * @return An <code>XPath2Transformation</code> corresponding the
- * transformation given in <code>transform</code>.
+ *
+ * @param transform The <code>Transform</code> object containing the XPath
+ * filter transformation.
+ * @return An <code>XPath2Transformation</code> corresponding the transformation
+ * given in <code>transform</code>.
* @throws MOAApplicationException An error occurred creating the
- * <code>Transformation</code>.
+ * <code>Transformation</code>.
*/
private Transformation createXPath2Transformation(XPathFilter2Transform transform)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- XPath2TransformationImpl xpath2 = new XPath2TransformationImpl();
+ final XPath2TransformationImpl xpath2 = new XPath2TransformationImpl();
Iterator iter;
for (iter = transform.getFilters().iterator(); iter.hasNext();) {
- XPathFilter filter = (XPathFilter) iter.next();
- String mappedFilterType =
- (String) FILTER_TYPE_MAPPING.get(filter.getFilterType());
- XPath2FilterImpl mappedFilter =
- new XPath2FilterImpl(
- mappedFilterType,
- filter.getXPathExpression(),
- filter.getNamespaceDeclarations());
+ final XPathFilter filter = (XPathFilter) iter.next();
+ final String mappedFilterType =
+ (String) FILTER_TYPE_MAPPING.get(filter.getFilterType());
+ final XPath2FilterImpl mappedFilter =
+ new XPath2FilterImpl(
+ mappedFilterType,
+ filter.getXPathExpression(),
+ filter.getNamespaceDeclarations());
xpath2.addXPathFilter(mappedFilter);
}
@@ -266,15 +265,15 @@ public class TransformationFactory {
/**
* Create an <code>XSLTTransformation</code>.
- *
+ *
* @param transform The <code>Transform</code> containing the XSLT stylesheet.
* @return An <code>XSLTTransformation</code> corresponding the transformation
- * given in <code>transform</code>.
+ * given in <code>transform</code>.
* @throws MOAApplicationException An error occurred creating the
- * <code>Transformation</code>.
+ * <code>Transformation</code>.
*/
private Transformation createXSLTTransformation(XSLTTransform transform)
- throws MOAApplicationException {
+ throws MOAApplicationException {
return new XSLTTransformationImpl(transform.getStylesheet());
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java
index 7ebea52..813d28e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/VerifyCMSSignatureResponseBuilder.java
@@ -21,13 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
-import iaik.server.modules.cmsverify.CMSSignatureVerificationResult;
-import iaik.server.modules.pdfverify.PDFSignatureVerificationResult;
-import iaik.server.cmspdfverify.CertificateValidationResult;
-
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
@@ -41,28 +36,35 @@ import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult;
import at.gv.egovernment.moa.spss.api.common.SignerInfo;
import at.gv.egovernment.moa.spss.api.common.TslInfos;
import at.gv.egovernment.moa.spss.server.config.TrustProfile;
+import iaik.server.cmspdfverify.CertificateValidationResult;
+import iaik.server.modules.cmsverify.CMSSignatureVerificationResult;
+import iaik.server.modules.pdfverify.PDFSignatureVerificationResult;
/**
* A class to build a <code>VerifyCMSSignatureResponse</code> object.
- *
- * <p>Via subsequent calls to <code>addResult()</code> a number of results from
- * a CMS signature verification can be added to the response.</p>
- *
- * <p>The <code>getResponseElement()</code> method then returns the
- * <code>VerifyCMSSignatureResponse</code> built so far.</p>
- *
+ *
+ * <p>
+ * Via subsequent calls to <code>addResult()</code> a number of results from a
+ * CMS signature verification can be added to the response.
+ * </p>
+ *
+ * <p>
+ * The <code>getResponseElement()</code> method then returns the
+ * <code>VerifyCMSSignatureResponse</code> built so far.
+ * </p>
+ *
* @author Patrick Peck
* @version $Id$
*/
public class VerifyCMSSignatureResponseBuilder {
/** The <code>SPSSFactory</code> for creating API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/** The elements making up the response. */
- private List responseElements = new ArrayList();
+ private final List responseElements = new ArrayList();
/**
* Get the <code>VerifyCMSSignatureResponse</code> built so far.
- *
+ *
* @return The <code>VerifyCMSSignatureResponse</code> built so far.
*/
public VerifyCMSSignatureResponse getResponse() {
@@ -71,141 +73,146 @@ public class VerifyCMSSignatureResponseBuilder {
/**
* Add a verification result to the response.
- *
- * @param result The result to add.
- * @param trustprofile The actual trustprofile
- * @param checkQCFromTSL <code>true</code>, if the TSL check verifies the
- * certificate as qualified, otherwise <code>false</code>.
- * @param checkSSCD <code>true</code>, if the TSL check verifies the
- * signature based on a SSDC, otherwise <code>false</code>.
- * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from the TSL,
- * otherwise <code>false</code>.
- * @throws MOAException
+ *
+ * @param result The result to add.
+ * @param trustprofile The actual trustprofile
+ * @param checkQCFromTSL <code>true</code>, if the TSL check verifies the
+ * certificate as qualified, otherwise <code>false</code>.
+ * @param checkSSCD <code>true</code>, if the TSL check verifies the
+ * signature based on a SSDC, otherwise
+ * <code>false</code>.
+ * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from
+ * the TSL, otherwise <code>false</code>.
+ * @throws MOAException
*/
- public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode, List adesResults,
- ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos, boolean extendedVerification)
- throws MOAException {
-
-
- int signatureCheckCode = result.getSignatureValueVerificationCode().intValue();
- CertificateValidationResult certResult = result.getCertificateValidationResult();
-
+ public void addResult(CMSSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC,
+ boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode,
+ List adesResults,
+ ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos,
+ boolean extendedVerification)
+ throws MOAException {
+
+ final int signatureCheckCode = result.getSignatureValueVerificationCode().intValue();
+ final CertificateValidationResult certResult = result.getCertificateValidationResult();
+
VerifyCMSSignatureResponseElement responseElement;
SignerInfo signerInfo = null;
CheckResult signatureCheck;
CheckResult certificateCheck;
- boolean qualifiedCertificate = checkQC;
-
- //add signature algorithm name in case of extended validation
+ final boolean qualifiedCertificate = checkQC;
+
+ // add signature algorithm name in case of extended validation
String sigAlgName = null;
if (extendedVerification) {
- sigAlgName = result.getSignatureAlgorithmName();
-
+ sigAlgName = result.getSignatureAlgorithmName();
+
}
-
- //set code 99 if not certcheckresult exists
+
+ // set code 99 if not certcheckresult exists
int certificateCheckCode = 99;
if (certResult != null) {
- certificateCheckCode = certResult.getValidationResultCode().intValue();
-
- // add SignerInfo element
- signerInfo =
- factory.createSignerInfo(
- (X509Certificate) certResult.getCertificateChain().get(0),
- qualifiedCertificate,
- qcSourceTSL,
- certResult.isPublicAuthorityCertificate(),
- certResult.getPublicAuthorityID(),
- checkSSCD,
- sscdSourceTSL,
- issuerCountryCode,
- result.getSigningTime(),
- tslInfos);
+ certificateCheckCode = certResult.getValidationResultCode().intValue();
+
+ // add SignerInfo element
+ signerInfo =
+ factory.createSignerInfo(
+ (X509Certificate) certResult.getCertificateChain().get(0),
+ qualifiedCertificate,
+ qcSourceTSL,
+ certResult.isPublicAuthorityCertificate(),
+ certResult.getPublicAuthorityID(),
+ checkSSCD,
+ sscdSourceTSL,
+ issuerCountryCode,
+ result.getSigningTime(),
+ tslInfos);
}
-
+
// add SignatureCheck element
signatureCheck = factory.createCheckResult(signatureCheckCode, null);
// add CertificateCheck element
certificateCheck = factory.createCheckResult(certificateCheckCode, null);
-
+
// build the response element
responseElement =
- factory.createVerifyCMSSignatureResponseElement(
- signerInfo,
- signatureCheck,
- certificateCheck,
- adesResults,
- extendedCertificateCheckResult,
- sigAlgName,
- null,
- null);
+ factory.createVerifyCMSSignatureResponseElement(
+ signerInfo,
+ signatureCheck,
+ certificateCheck,
+ adesResults,
+ extendedCertificateCheckResult,
+ sigAlgName,
+ null,
+ null);
responseElements.add(responseElement);
}
-
-/**
- *
- * @param result
- * @param trustProfile
- * @param checkQC
- * @param qcSourceTSL
- * @param checkSSCD
- * @param sscdSourceTSL
- * @param issuerCountryCode
- * @param adesResults
- * @param extendedCertificateCheckResult
- * @param tslInfos
- * @param extendedVerification
- * @throws MOAException
- */
- public void addResult(PDFSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC, boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode, List adesResults,
- ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos, boolean extendedVerification)
- throws MOAException {
-
- CertificateValidationResult certResult =
- result.getCertificateValidationResult();
- int signatureCheckCode =
- result.getSignatureValueVerificationCode().intValue();
-
+
+ /**
+ *
+ * @param result
+ * @param trustProfile
+ * @param checkQC
+ * @param qcSourceTSL
+ * @param checkSSCD
+ * @param sscdSourceTSL
+ * @param issuerCountryCode
+ * @param adesResults
+ * @param extendedCertificateCheckResult
+ * @param tslInfos
+ * @param extendedVerification
+ * @throws MOAException
+ */
+ public void addResult(PDFSignatureVerificationResult result, TrustProfile trustProfile, boolean checkQC,
+ boolean qcSourceTSL, boolean checkSSCD, boolean sscdSourceTSL, String issuerCountryCode,
+ List adesResults,
+ ExtendedCertificateCheckResult extendedCertificateCheckResult, TslInfos tslInfos,
+ boolean extendedVerification)
+ throws MOAException {
+
+ final CertificateValidationResult certResult =
+ result.getCertificateValidationResult();
+ final int signatureCheckCode =
+ result.getSignatureValueVerificationCode().intValue();
+
VerifyCMSSignatureResponseElement responseElement;
SignerInfo signerInfo = null;
CheckResult signatureCheck;
CheckResult certificateCheck;
- boolean qualifiedCertificate = checkQC;
-
- //add signature algorithm name in case of extended validation
+ final boolean qualifiedCertificate = checkQC;
+
+ // add signature algorithm name in case of extended validation
String sigAlgName = null;
Boolean coversFullDoc = null;
int[] sigByteRange = null;
-
+
if (extendedVerification) {
- sigAlgName = result.getSignatureAlgorithmName();
- coversFullDoc = result.byteRangeCoversWholeDocument();
- sigByteRange = result.getByteRange();
-
- }
+ sigAlgName = result.getSignatureAlgorithmName();
+ coversFullDoc = result.byteRangeCoversWholeDocument();
+ sigByteRange = result.getByteRange();
+ }
- //set code 99 if not certcheckresult exists
+ // set code 99 if not certcheckresult exists
int certificateCheckCode = 99;
if (certResult != null) {
- certificateCheckCode = certResult.getValidationResultCode().intValue();
-
- // add SignerInfo element
- signerInfo =
- factory.createSignerInfo(
- (X509Certificate) certResult.getCertificateChain().get(0),
- qualifiedCertificate,
- qcSourceTSL,
- certResult.isPublicAuthorityCertificate(),
- certResult.getPublicAuthorityID(),
- checkSSCD,
- sscdSourceTSL,
- issuerCountryCode,
- result.getSigningTime(),
- tslInfos);
+ certificateCheckCode = certResult.getValidationResultCode().intValue();
+
+ // add SignerInfo element
+ signerInfo =
+ factory.createSignerInfo(
+ (X509Certificate) certResult.getCertificateChain().get(0),
+ qualifiedCertificate,
+ qcSourceTSL,
+ certResult.isPublicAuthorityCertificate(),
+ certResult.getPublicAuthorityID(),
+ checkSSCD,
+ sscdSourceTSL,
+ issuerCountryCode,
+ result.getSigningTime(),
+ tslInfos);
}
// add SignatureCheck element
@@ -213,18 +220,18 @@ public class VerifyCMSSignatureResponseBuilder {
// add CertificateCheck element
certificateCheck = factory.createCheckResult(certificateCheckCode, null);
-
+
// build the response element
responseElement =
- factory.createVerifyCMSSignatureResponseElement(
- signerInfo,
- signatureCheck,
- certificateCheck,
- adesResults,
- extendedCertificateCheckResult,
- sigAlgName,
- coversFullDoc,
- sigByteRange);
+ factory.createVerifyCMSSignatureResponseElement(
+ signerInfo,
+ signatureCheck,
+ certificateCheck,
+ adesResults,
+ extendedCertificateCheckResult,
+ sigAlgName,
+ coversFullDoc,
+ sigByteRange);
responseElements.add(responseElement);
}
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 22ef789..7e882ed 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
@@ -21,16 +21,15 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
-import java.util.Date;
import javax.xml.crypto.OctetStreamData;
import javax.xml.crypto.dsig.CanonicalizationMethod;
@@ -69,25 +68,28 @@ import iaik.server.modules.xmlverify.SecurityLayerManifest;
import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile;
import iaik.server.modules.xmlverify.XMLSignatureVerificationResult;
import iaik.x509.X509Certificate;
-import iaik.xml.crypto.alg.transform.C14NTransformService;
import iaik.xml.crypto.dsig.CanonicalizationMethodImpl;
/**
* A class to build a <code>VerifyXMLSignatureResponse</code> object.
- *
- * <p>Via a call to <code>addResult()</code> the only result of the
- * signature verification must be added.</p>
- *
- * <p>The <code>getResponseElement()</code> method then returns the
- * <code>VerifyXMLSignatureResponse</code> built so far.</p>
- *
+ *
+ * <p>
+ * Via a call to <code>addResult()</code> the only result of the signature
+ * verification must be added.
+ * </p>
+ *
+ * <p>
+ * The <code>getResponseElement()</code> method then returns the
+ * <code>VerifyXMLSignatureResponse</code> built so far.
+ * </p>
+ *
* @author Patrick Peck
* @version $Id$
*/
public class VerifyXMLSignatureResponseBuilder {
/** The <code>SPSSFactory</code> for creating API objects. */
- private SPSSFactory factory = SPSSFactory.getInstance();
+ private final SPSSFactory factory = SPSSFactory.getInstance();
/** Information about the signer certificate. */
private SignerInfo signerInfo;
@@ -106,216 +108,203 @@ 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.
- *
+ *
* @return The <code>VerifyXMLSignatureResponse</code> built so far.
*/
public VerifyXMLSignatureResponse getResponse() {
return factory.createVerifyXMLSignatureResponse(
- signerInfo,
- hashInputDatas,
- referenceInputDatas,
- signatureCheck,
- signatureManifestCheck,
- xmlDsigManifestChecks,
- certificateCheck,
- adesFormResults,
- extCheckResult,
- signatureAlgorithm);
+ signerInfo,
+ hashInputDatas,
+ referenceInputDatas,
+ signatureCheck,
+ signatureManifestCheck,
+ xmlDsigManifestChecks,
+ certificateCheck,
+ adesFormResults,
+ extCheckResult,
+ signatureAlgorithm);
}
-
+
public void setExtendedCertificateCheckResult(ExtendedCertificateCheckResult extCheckResult) {
- this.extCheckResult = extCheckResult;
+ this.extCheckResult = extCheckResult;
}
-
+
public void setAdESFormResults(List adesForm) {
- this.adesFormResults = adesForm;
+ this.adesFormResults = adesForm;
}
/**
* Sets the verification result to the response.
- *
+ *
* This method must be called exactly once to ensure a valid
* <code>VerifyXMLSignatureResponse</code>.
- *
- * @param result The result to set for the response.
- * @param profile The profile used for verifying the signature.
- * @param transformsSignatureManifestCheck The overall result for the signature
- * manifest check.
- * @param certificateCheck The overall result for the certificate check.
- * @param checkQC <code>true</code>, if the certificate is QC, otherwise <code>false</code>.
- * @param qcSourceTSL <code>true</code>, if the QC information comes from the TSL,
- * otherwise <code>false</code>.
- * @param checkSSCD <code>true</code>, if the signature is created by an SSCD, otherwise <code>false</code>.
- * @param sscdSourceTSL <code>true</code>, if the SSCD information comes from the TSL,
- * otherwise <code>false</code>.
+ *
+ * @param result The result to set for the response.
+ * @param profile The profile used for verifying the
+ * signature.
+ * @param transformsSignatureManifestCheck The overall result for the signature
+ * manifest check.
+ * @param certificateCheck The overall result for the
+ * certificate check.
+ * @param checkQC <code>true</code>, if the certificate
+ * is QC, otherwise <code>false</code>.
+ * @param qcSourceTSL <code>true</code>, if the QC
+ * information comes from the TSL,
+ * otherwise <code>false</code>.
+ * @param checkSSCD <code>true</code>, if the signature
+ * is created by an SSCD, otherwise
+ * <code>false</code>.
+ * @param sscdSourceTSL <code>true</code>, if the SSCD
+ * information comes from the TSL,
+ * otherwise <code>false</code>.
* @throws MOAApplicationException An error occurred adding the result.
*/
public void setResult(
- XMLSignatureVerificationResult result,
- XMLSignatureVerificationProfile profile,
- ReferencesCheckResult transformsSignatureManifestCheck,
- CheckResult certificateCheck,
- boolean checkQC,
- boolean qcSourceTSL,
- boolean checkSSCD,
- boolean sscdSourceTSL,
- boolean isTSLEnabledTrustprofile,
- String issuerCountryCode,
- TslInfos tslInfos,
- boolean isExtendedValidation)
- throws MOAApplicationException {
-
- CertificateValidationResult certResult =
- result.getCertificateValidationResult();
+ XMLSignatureVerificationResult result,
+ XMLSignatureVerificationProfile profile,
+ ReferencesCheckResult transformsSignatureManifestCheck,
+ CheckResult certificateCheck,
+ boolean checkQC,
+ boolean qcSourceTSL,
+ boolean checkSSCD,
+ boolean sscdSourceTSL,
+ boolean isTSLEnabledTrustprofile,
+ String issuerCountryCode,
+ TslInfos tslInfos,
+ boolean isExtendedValidation)
+ throws MOAApplicationException {
+
+ final CertificateValidationResult certResult =
+ result.getCertificateValidationResult();
List referenceDataList;
- ReferenceData referenceData;
+ final ReferenceData referenceData;
List dsigManifestList;
ReferencesCheckResultInfo checkResultInfo;
int[] failedReferences;
Iterator iter;
boolean qualifiedCertificate = false;
-
+
qualifiedCertificate = checkQC;
-
- if (isExtendedValidation)
- signatureAlgorithm = result.getSignatureAlgorithmName();
-
+
+ if (isExtendedValidation) {
+ signatureAlgorithm = result.getSignatureAlgorithmName();
+ }
+
// create the SignerInfo;
signerInfo =
- factory.createSignerInfo(
- (X509Certificate) certResult.getCertificateChain().get(0),
- qualifiedCertificate,
- qcSourceTSL,
- certResult.isPublicAuthorityCertificate(),
- certResult.getPublicAuthorityID(),
- checkSSCD,
- sscdSourceTSL,
- issuerCountryCode,
- result.getSigningTime(),
- tslInfos);
-
-
-
- //TODO: add hash algo. infos
+ factory.createSignerInfo(
+ (X509Certificate) certResult.getCertificateChain().get(0),
+ qualifiedCertificate,
+ qcSourceTSL,
+ certResult.isPublicAuthorityCertificate(),
+ certResult.getPublicAuthorityID(),
+ checkSSCD,
+ sscdSourceTSL,
+ issuerCountryCode,
+ result.getSigningTime(),
+ tslInfos);
+
+ // TODO: add hash algo. infos
// Create HashInputData Content objects
referenceDataList = result.getReferenceDataList();
if (profile.includeHashInputData()) {
hashInputDatas = new ArrayList();
-
+
// Include SignedInfo references
addHashInputDatas(
- hashInputDatas,
- referenceDataList,
- InputData.CONTAINER_SIGNEDINFO_,
- InputData.REFERER_NONE_);
-
+ hashInputDatas,
+ referenceDataList,
+ InputData.CONTAINER_SIGNEDINFO_,
+ InputData.REFERER_NONE_);
+
// Include XMLDSIGManifest references
- List xMLDSIGManifests = result.getDsigManifestList();
- for (iter = xMLDSIGManifests.iterator(); iter.hasNext();)
- {
- DsigManifest currentMF = (DsigManifest) iter.next();
- List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList();
+ final List xMLDSIGManifests = result.getDsigManifestList();
+ for (iter = xMLDSIGManifests.iterator(); iter.hasNext();) {
+ final DsigManifest currentMF = (DsigManifest) iter.next();
+ final List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList();
addHashInputDatas(
- hashInputDatas,
- xMLDSIGMFReferenceDataList,
- InputData.CONTAINER_XMLDSIGMANIFEST_,
- currentMF.getReferringReferenceInfo().getReferenceIndex());
+ hashInputDatas,
+ xMLDSIGMFReferenceDataList,
+ InputData.CONTAINER_XMLDSIGMANIFEST_,
+ currentMF.getReferringReferenceInfo().getReferenceIndex());
}
}
// Create the ReferenceInputData Content objects
if (profile.includeReferenceInputData()) {
referenceInputDatas = new ArrayList();
-
+
// Include SignedInfo references
addReferenceInputDatas(
- referenceInputDatas,
- referenceDataList,
- InputData.CONTAINER_SIGNEDINFO_,
- InputData.REFERER_NONE_);
+ referenceInputDatas,
+ referenceDataList,
+ InputData.CONTAINER_SIGNEDINFO_,
+ InputData.REFERER_NONE_);
// Include XMLDSIGManifest references
- List xMLDSIGManifests = result.getDsigManifestList();
- for (iter = xMLDSIGManifests.iterator(); iter.hasNext();)
- {
- DsigManifest currentMF = (DsigManifest) iter.next();
- List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList();
+ final List xMLDSIGManifests = result.getDsigManifestList();
+ for (iter = xMLDSIGManifests.iterator(); iter.hasNext();) {
+ final DsigManifest currentMF = (DsigManifest) iter.next();
+ final List xMLDSIGMFReferenceDataList = currentMF.getReferenceDataList();
addReferenceInputDatas(
- referenceInputDatas,
- xMLDSIGMFReferenceDataList,
- InputData.CONTAINER_XMLDSIGMANIFEST_,
- currentMF.getReferringReferenceInfo().getReferenceIndex());
+ referenceInputDatas,
+ xMLDSIGMFReferenceDataList,
+ InputData.CONTAINER_XMLDSIGMANIFEST_,
+ currentMF.getReferringReferenceInfo().getReferenceIndex());
}
}
// create the signature check
failedReferences = buildFailedReferences(result.getReferenceDataList());
checkResultInfo =
- failedReferences != null
- ? factory.createReferencesCheckResultInfo(null, failedReferences)
- : null;
+ failedReferences != null
+ ? factory.createReferencesCheckResultInfo(null, failedReferences)
+ : null;
signatureCheck =
- factory.createReferencesCheckResult(
- result.getSignatureValueVerificationCode().intValue(),
- checkResultInfo);
+ factory.createReferencesCheckResult(
+ result.getSignatureValueVerificationCode().intValue(),
+ checkResultInfo);
// create the signature manifest check
- if (profile.checkSecurityLayerManifest())
- {
- if (transformsSignatureManifestCheck.getCode() == 1)
- {
+ if (profile.checkSecurityLayerManifest()) {
+ if (transformsSignatureManifestCheck.getCode() == 1) {
// checking the transforms failed
signatureManifestCheck = transformsSignatureManifestCheck;
- }
- else if (result.isSecurityLayerManifestRequired())
- {
- if (!result.containsSecurityLayerManifest())
- {
+ } else if (result.isSecurityLayerManifestRequired()) {
+ if (!result.containsSecurityLayerManifest()) {
// required security layer manifest is missing in signature
signatureManifestCheck = factory.createReferencesCheckResult(2, null);
- }
- else
- {
+ } else {
// security layer manifest exists, so we have to check its validity
- SecurityLayerManifest slManifest = result.getSecurityLayerManifest();
- int verificationResult = slManifest.getManifestVerificationResult().intValue();
+ final SecurityLayerManifest slManifest = result.getSecurityLayerManifest();
+ final int verificationResult = slManifest.getManifestVerificationResult().intValue();
- if (SecurityLayerManifest.CODE_MANIFEST_VALID.intValue() == verificationResult)
- {
+ if (SecurityLayerManifest.CODE_MANIFEST_VALID.intValue() == verificationResult) {
// security layer manifest exists and is free of errors
signatureManifestCheck = factory.createReferencesCheckResult(0, null);
- }
- else
- {
+ } else {
// security layer manifest exists, but has errors
failedReferences = buildFailedReferences(slManifest.getReferenceDataList());
- checkResultInfo = (failedReferences != null)
- ? factory.createReferencesCheckResultInfo(null, failedReferences)
- : null;
- if (SecurityLayerManifest.CODE_MANIFEST_INCOMPLETE.intValue() == verificationResult)
- {
- signatureManifestCheck = factory.createReferencesCheckResult(3, checkResultInfo);
- }
- else if (SecurityLayerManifest.CODE_REFERENCE_HASH_INVALID.intValue() == verificationResult)
- {
- signatureManifestCheck = factory.createReferencesCheckResult(4, checkResultInfo);
- }
- else
- {
+ checkResultInfo = failedReferences != null
+ ? factory.createReferencesCheckResultInfo(null, failedReferences)
+ : null;
+ if (SecurityLayerManifest.CODE_MANIFEST_INCOMPLETE.intValue() == verificationResult) {
+ signatureManifestCheck = factory.createReferencesCheckResult(3, checkResultInfo);
+ } else if (SecurityLayerManifest.CODE_REFERENCE_HASH_INVALID.intValue() == verificationResult) {
+ signatureManifestCheck = factory.createReferencesCheckResult(4, checkResultInfo);
+ } else {
// Should not happen
throw new RuntimeException("Unexpected result from security layer manifest verification.");
}
}
}
- }
- else
- {
+ } else {
// no security layer manifest is required, so the signature manifest check is ok
signatureManifestCheck = factory.createReferencesCheckResult(0, null);
}
@@ -326,172 +315,181 @@ public class VerifyXMLSignatureResponseBuilder {
xmlDsigManifestChecks = new ArrayList();
dsigManifestList = result.getDsigManifestList();
for (iter = dsigManifestList.iterator(); iter.hasNext();) {
- DsigManifest dsigManifest = (DsigManifest) iter.next();
- int refIndex =
- dsigManifest.getReferringReferenceInfo().getReferenceIndex();
+ final DsigManifest dsigManifest = (DsigManifest) iter.next();
+ final int refIndex =
+ dsigManifest.getReferringReferenceInfo().getReferenceIndex();
ManifestRefsCheckResultInfo manifestCheckResultInfo;
failedReferences =
- buildFailedReferences(dsigManifest.getReferenceDataList());
+ buildFailedReferences(dsigManifest.getReferenceDataList());
manifestCheckResultInfo =
- factory.createManifestRefsCheckResultInfo(
- null,
- failedReferences,
- refIndex);
+ factory.createManifestRefsCheckResultInfo(
+ null,
+ failedReferences,
+ refIndex);
xmlDsigManifestChecks.add(
- factory.createManifestRefsCheckResult(
- dsigManifest.getManifestVerificationResult().intValue(),
- manifestCheckResultInfo));
+ factory.createManifestRefsCheckResult(
+ dsigManifest.getManifestVerificationResult().intValue(),
+ manifestCheckResultInfo));
}
}
- // create the certificate check
+ // create the certificate check
this.certificateCheck = certificateCheck;
-
+
this.signingTime = result.getSigningTime();
-
+
}
/**
- * Adds {@link InputData} entries to the specified <code>inputDatas</code> list. The content of the entry will
- * be created from {@link ReferenceData#getHashInputData()}.
- *
- * @param inputDatas The list to be amended.
- *
- * @param referenceDataList The list of {@link ReferenceData} objects to be investigated.
- *
- * @param containerType The type of container of the {@link InputData} objects to be created.
- *
- * @param refererNumber The number of the referring reference for the {@link InputData} objects to be created.
- *
- * @throws MOAApplicationException if creating an {@link InputData} fails.
+ * Adds {@link InputData} entries to the specified <code>inputDatas</code> list.
+ * The content of the entry will be created from
+ * {@link ReferenceData#getHashInputData()}.
+ *
+ * @param inputDatas The list to be amended.
+ *
+ * @param referenceDataList The list of {@link ReferenceData} objects to be
+ * investigated.
+ *
+ * @param containerType The type of container of the {@link InputData}
+ * objects to be created.
+ *
+ * @param refererNumber The number of the referring reference for the
+ * {@link InputData} objects to be created.
+ *
+ * @throws MOAApplicationException if creating an {@link InputData} fails.
*/
- private void addHashInputDatas(List inputDatas, List referenceDataList, String containerType, int refererNumber)
- throws MOAApplicationException
- {
- for (Iterator iter = referenceDataList.iterator(); iter.hasNext();)
- {
- ReferenceData referenceData = (ReferenceData) iter.next();
+ private void addHashInputDatas(List inputDatas, List referenceDataList, String containerType,
+ int refererNumber)
+ throws MOAApplicationException {
+ for (final Object element : referenceDataList) {
+ final ReferenceData referenceData = (ReferenceData) element;
inputDatas.add(buildInputData(
- referenceData.getHashInputData(),
- containerType,
- refererNumber,
- referenceData.getHashAlgorithmName()));
+ referenceData.getHashInputData(),
+ containerType,
+ refererNumber,
+ referenceData.getHashAlgorithmName()));
}
}
-
+
/**
- * Adds {@link InputData} entries to the specified <code>inputDatas</code> list. The content of the entry will
- * be created from {@link ReferenceData#getReferenceInputData()}.
- *
- * @param inputDatas The list to be amended.
- *
- * @param referenceDataList The list of {@link ReferenceData} objects to be investigated.
- *
- * @param containerType The type of container of the {@link InputData} objects to be created.
- *
- * @param refererNumber The number of the referring reference for the {@link InputData} objects to be created.
- *
- * @throws MOAApplicationException if creating an {@link InputData} fails.
+ * Adds {@link InputData} entries to the specified <code>inputDatas</code> list.
+ * The content of the entry will be created from
+ * {@link ReferenceData#getReferenceInputData()}.
+ *
+ * @param inputDatas The list to be amended.
+ *
+ * @param referenceDataList The list of {@link ReferenceData} objects to be
+ * investigated.
+ *
+ * @param containerType The type of container of the {@link InputData}
+ * objects to be created.
+ *
+ * @param refererNumber The number of the referring reference for the
+ * {@link InputData} objects to be created.
+ *
+ * @throws MOAApplicationException if creating an {@link InputData} fails.
*/
- private void addReferenceInputDatas(List inputDatas, List referenceDataList, String containerType, int refererNumber)
- throws MOAApplicationException
- {
- for (Iterator iter = referenceDataList.iterator(); iter.hasNext();)
- {
- ReferenceData referenceData = (ReferenceData) iter.next();
+ private void addReferenceInputDatas(List inputDatas, List referenceDataList, String containerType,
+ int refererNumber)
+ throws MOAApplicationException {
+ for (final Object element : referenceDataList) {
+ final ReferenceData referenceData = (ReferenceData) element;
inputDatas.add(buildInputData(
- referenceData.getReferenceInputData(),
- containerType,
- refererNumber,
- referenceData.getHashAlgorithmName()));
+ referenceData.getReferenceInputData(),
+ containerType,
+ refererNumber,
+ referenceData.getHashAlgorithmName()));
}
}
/**
* Build a <code>InputDataBinaryImpl</code> or an <code>InputDataXMLImpl</code>
* object from the given <code>DataObject</code> and the given attributes.
- *
- * @param dataObject The <code>DataObject</code> from which to build the result.
- * Based on the type of this parameter, the type of the result will either be
- * <code>InputDataBinaryImpl</code> or <code>InputDataXMLImpl</code>.
- *
- * @param partof see {@link InputData}
- *
+ *
+ * @param dataObject The <code>DataObject</code> from which to
+ * build the result. Based on the type of this
+ * parameter, the type of the result will either
+ * be <code>InputDataBinaryImpl</code> or
+ * <code>InputDataXMLImpl</code>.
+ *
+ * @param partof see {@link InputData}
+ *
* @param referringReferenceNumber see {@link InputData}
- *
- * @param hashAlg 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, String hashAlg)
- throws MOAApplicationException {
+ private Content buildInputData(DataObject dataObject, String partOf, int referringReferenceNumber,
+ String hashAlg)
+ throws MOAApplicationException {
if (dataObject instanceof BinaryDataObject) {
- BinaryDataObject binaryData = (BinaryDataObject) dataObject;
+ final BinaryDataObject binaryData = (BinaryDataObject) dataObject;
return new InputDataBinaryImpl(
- factory.createContent(binaryData.getInputStream(), null),
- partOf,
- referringReferenceNumber,
- hashAlg);
+ factory.createContent(binaryData.getInputStream(), null),
+ partOf,
+ referringReferenceNumber,
+ hashAlg);
} else if (dataObject instanceof XMLDataObject) {
- XMLDataObject xmlData = (XMLDataObject) dataObject;
- List nodes = new ArrayList();
+ final XMLDataObject xmlData = (XMLDataObject) dataObject;
+ final List nodes = new ArrayList();
nodes.add(xmlData.getElement());
return new InputDataXMLImpl(
- factory.createContent(new NodeListAdapter(nodes), null),
- partOf,
- referringReferenceNumber,
- hashAlg);
+ factory.createContent(new NodeListAdapter(nodes), null),
+ partOf,
+ 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
- XMLNodeListDataObject nodeData = (XMLNodeListDataObject) dataObject;
- NodeList nodes = nodeData.getNodeList();
-
+ // write it as XMLContent; otherwise, write it as Base64Content
+ final XMLNodeListDataObject nodeData = (XMLNodeListDataObject) dataObject;
+ final NodeList nodes = nodeData.getNodeList();
+
if (DOMUtils.checkAttributeParentsInNodeList(nodes)) {
// insert as XMLContent
try {
- DocumentFragment fragment = DOMUtils.nodeList2DocumentFragment(nodes);
+ final DocumentFragment fragment = DOMUtils.nodeList2DocumentFragment(nodes);
return new InputDataXMLImpl(
- factory.createContent(fragment.getChildNodes(), null),
- partOf,
- referringReferenceNumber,
- hashAlg);
- } catch (Exception e) {
+ factory.createContent(fragment.getChildNodes(), null),
+ partOf,
+ referringReferenceNumber,
+ hashAlg);
+ } catch (final Exception e) {
// not successful -> fall through to the Base64Content
}
}
-
+
// insert canonicalized NodeList as binary content
try {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- for(int i = 0; i < nodes.getLength(); i++) {
- baos.write(DOMUtils.nodeToByteArray(nodes.item(i)));
- }
- baos.close();
- ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
- OctetStreamData inputData = new OctetStreamData(bais);
-
- CanonicalizationMethodImpl canonicalizationMethodImpl = new CanonicalizationMethodImpl(
- CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, new ExcC14NParameterSpec());
- OctetStreamData data = (OctetStreamData)canonicalizationMethodImpl.transform(inputData, null);
- bais.close();
- //CanonicalizationAlgorithm c14n =
- //new CanonicalizationAlgorithmImplExclusiveCanonicalXMLWithComments();
- InputStream is = data.getOctetStream();
-
- //c14n.setInput(nodes);
- //is = c14n.canonicalize();
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ for (int i = 0; i < nodes.getLength(); i++) {
+ baos.write(DOMUtils.nodeToByteArray(nodes.item(i)));
+ }
+ baos.close();
+ final ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ final OctetStreamData inputData = new OctetStreamData(bais);
+
+ final CanonicalizationMethodImpl canonicalizationMethodImpl = new CanonicalizationMethodImpl(
+ CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, new ExcC14NParameterSpec());
+ final OctetStreamData data = (OctetStreamData) canonicalizationMethodImpl.transform(inputData, null);
+ bais.close();
+ // CanonicalizationAlgorithm c14n =
+ // new CanonicalizationAlgorithmImplExclusiveCanonicalXMLWithComments();
+ final InputStream is = data.getOctetStream();
+
+ // c14n.setInput(nodes);
+ // is = c14n.canonicalize();
return new InputDataBinaryImpl(
- factory.createContent(is, null),
- partOf,
- referringReferenceNumber,
- hashAlg);
- } catch (Exception e) {
+ factory.createContent(is, null),
+ partOf,
+ referringReferenceNumber,
+ hashAlg);
+ } catch (final Exception e) {
throw new MOAApplicationException("2200", null);
}
}
@@ -499,27 +497,27 @@ public class VerifyXMLSignatureResponseBuilder {
/**
* Build the failed references.
- *
+ *
* Failed references are references for which the <code>isHashValid()</code>
* method returns <code>false</code>.
- *
- * @param refInfos A <code>List</code> containing the
- * <code>ReferenceInfo</code> objects to be checked.
- * @return The indexes of the failed references.
+ *
+ * @param refInfos A <code>List</code> containing the <code>ReferenceInfo</code>
+ * objects to be checked.
+ * @return The indexes of the failed references.
*/
private int[] buildFailedReferences(List refInfos) {
- List failedReferencesList = new ArrayList();
+ final List failedReferencesList = new ArrayList();
int i;
// find out the failed references
for (i = 0; i < refInfos.size(); i++) {
- ReferenceInfo refInfo = (ReferenceInfo) refInfos.get(i);
+ final ReferenceInfo refInfo = (ReferenceInfo) refInfos.get(i);
try {
if (refInfo.isHashCalculated() && !refInfo.isHashValid()) {
failedReferencesList.add(new Integer(i + 1));
}
- } catch (HashUnavailableException e) {
+ } catch (final HashUnavailableException e) {
// nothing to do here because we called refInfo.isHashCalculated first
}
}
@@ -528,7 +526,7 @@ public class VerifyXMLSignatureResponseBuilder {
if (failedReferencesList.isEmpty()) {
return null;
} else {
- int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList);
+ final int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList);
return failedReferences;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java
index ecdd811..e039cb9 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationInvoker.java
@@ -21,18 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
-import iaik.server.modules.IAIKException;
-import iaik.server.modules.IAIKRuntimeException;
-import iaik.server.modules.xml.DataObject;
-import iaik.server.modules.xml.XMLDataObject;
-import iaik.server.modules.xml.XMLSignature;
-import iaik.server.modules.xmlsign.XMLSignatureCreationModule;
-import iaik.server.modules.xmlsign.XMLSignatureCreationModuleFactory;
-import iaik.server.modules.xmlsign.XMLSignatureCreationProfile;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -71,17 +61,25 @@ import at.gv.egovernment.moaspss.logging.LoggingContext;
import at.gv.egovernment.moaspss.logging.LoggingContextManager;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.XPathUtils;
+import iaik.server.modules.IAIKException;
+import iaik.server.modules.IAIKRuntimeException;
+import iaik.server.modules.xml.DataObject;
+import iaik.server.modules.xml.XMLDataObject;
+import iaik.server.modules.xml.XMLSignature;
+import iaik.server.modules.xmlsign.XMLSignatureCreationModule;
+import iaik.server.modules.xmlsign.XMLSignatureCreationModuleFactory;
+import iaik.server.modules.xmlsign.XMLSignatureCreationProfile;
/**
* A class providing an API based interface to the
* <code>XMLSignatureCreationModule</code>.
- *
- * This class performs the invocation of the
+ *
+ * This class performs the invocation of the
* <code>iaik.server.modules.xmlsign.XMLSignatureCreationModule</code> from a
* <code>CreateXMLSignatureRequest</code> given as an API object. The result of
* the invocation is integrated into a <code>CreateXMLSignatureResponse</code>
* and returned.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -92,7 +90,7 @@ public class XMLSignatureCreationInvoker {
/**
* Get the only instance of this class.
- *
+ *
* @return The only instance of this class.
*/
public static synchronized XMLSignatureCreationInvoker getInstance() {
@@ -104,7 +102,7 @@ public class XMLSignatureCreationInvoker {
/**
* Create a new <code>XMLSignatureCreationInvoker</code>.
- *
+ *
* Protected to disallow multiple instances.
*/
protected XMLSignatureCreationInvoker() {
@@ -114,31 +112,31 @@ public class XMLSignatureCreationInvoker {
* Process the <code>CreateXMLSignatureRequest<code> message and invoke the
* <code>XMLSignatureCreationModule</code> for every
* <code>SingleSignatureInfo</code> contained in the request.
- *
+ *
* @param request A <code>CreateXMLSignatureRequest<code> API object
* containing the information for creating the signature(s).
- * @param reserved A <code>Set</code> of reserved object IDs.
- *
- * @return A <code>CreateXMLSignatureResponse</code> API object containing
- * the created signature(s). The response contains either a
- * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code>
- * for each <code>SingleSignatureInfo</code> in the request.
- * @throws MOAException An error occurred during signature creation.
+ * &#64;param reserved A <code>Set</code> of reserved object IDs.
+ *
+ * @return A <code>CreateXMLSignatureResponse</code> API object containing the
+ * created signature(s). The response contains either a
+ * <code>SignatureEnvironment</code> or a <code>ErrorResponse</code> for
+ * each <code>SingleSignatureInfo</code> in the request.
+ * @throws MOAException An error occurred during signature creation.
*/
public CreateXMLSignatureResponse createXMLSignature(
- CreateXMLSignatureRequest request,
- Set reserved)
- throws MOAException {
-
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- LoggingContext loggingCtx =
- LoggingContextManager.getInstance().getLoggingContext();
+ CreateXMLSignatureRequest request,
+ Set reserved)
+ throws MOAException {
+
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final LoggingContext loggingCtx =
+ LoggingContextManager.getInstance().getLoggingContext();
reserved = new HashSet(reserved);
- XMLSignatureCreationProfileFactory profileFactory =
- new XMLSignatureCreationProfileFactory(request, reserved);
- CreateXMLSignatureResponseBuilder responseBuilder =
- new CreateXMLSignatureResponseBuilder();
+ final XMLSignatureCreationProfileFactory profileFactory =
+ new XMLSignatureCreationProfileFactory(request, reserved);
+ final CreateXMLSignatureResponseBuilder responseBuilder =
+ new CreateXMLSignatureResponseBuilder();
int createCount = 1;
IdGenerator refIdGen;
XMLSignatureCreationModule module;
@@ -153,8 +151,8 @@ public class XMLSignatureCreationInvoker {
// iterate over all the SingleSignatureInfo elements in the request
while (singleSignatureInfoIter.hasNext()) {
- SingleSignatureInfo singleSignatureInfo =
- (SingleSignatureInfo) singleSignatureInfoIter.next();
+ final SingleSignatureInfo singleSignatureInfo =
+ (SingleSignatureInfo) singleSignatureInfoIter.next();
CreateSignatureInfo createSignatureInfo;
List dataObjectList;
XMLSignatureCreationProfile profile;
@@ -170,44 +168,47 @@ public class XMLSignatureCreationInvoker {
// build the signature environment
createSignatureInfo = singleSignatureInfo.getCreateSignatureInfo();
if (createSignatureInfo != null) {
- DataObjectFactory dataObjFactory = DataObjectFactory.getInstance();
+ final DataObjectFactory dataObjFactory = DataObjectFactory.getInstance();
signatureEnvironment =
- dataObjFactory.createSignatureEnvironment(
- createSignatureInfo.getCreateSignatureEnvironment(),
- getCreateSignatureEnvironmentProfileSupplements(singleSignatureInfo));
+ dataObjFactory.createSignatureEnvironment(
+ createSignatureInfo.getCreateSignatureEnvironment(),
+ getCreateSignatureEnvironmentProfileSupplements(singleSignatureInfo));
} else {
signatureEnvironment = null;
}
-
- HashSet sigInfoReservedIDs = new HashSet();
- if (signatureEnvironment != null)
- {
+
+ final HashSet sigInfoReservedIDs = new HashSet();
+ if (signatureEnvironment != null) {
// Find Id attributes of existing XML signatures in signature environment
- HashMap nSMap = new HashMap();
- String dsp = Constants.DSIG_PREFIX;
- nSMap.put(dsp, Constants.DSIG_NS_URI);
- String xPathExpr = "//" + dsp + ":Signature/@Id | //" + dsp + ":Reference/@Id | //"
- + dsp + ":Object/@Id | //" + dsp + ":Manifest/@Id";
- NodeList idAttrs = XPathUtils.selectNodeList(signatureEnvironment.getElement(), nSMap, xPathExpr);
-
- // Add found Id attributes to set of reserved IDs
- for (int i = 0; i < idAttrs.getLength(); i++) sigInfoReservedIDs.add(idAttrs.item(i).getNodeValue());
+ final HashMap nSMap = new HashMap();
+ final String dsp = Constants.DSIG_PREFIX;
+ nSMap.put(dsp, Constants.DSIG_NS_URI);
+ final String xPathExpr = "//" + dsp + ":Signature/@Id | //" + dsp + ":Reference/@Id | //"
+ + dsp + ":Object/@Id | //" + dsp + ":Manifest/@Id";
+ final NodeList idAttrs = XPathUtils.selectNodeList(signatureEnvironment.getElement(), nSMap,
+ xPathExpr);
+
+ // Add found Id attributes to set of reserved IDs
+ for (int i = 0; i < idAttrs.getLength(); i++) {
+ sigInfoReservedIDs.add(idAttrs.item(i).getNodeValue());
+ }
}
// create the reference id generator
- HashSet allReservedIDs = new HashSet(reserved);
+ final HashSet allReservedIDs = new HashSet(reserved);
allReservedIDs.addAll(sigInfoReservedIDs);
refIdGen = new IdGenerator("reference-" + createCount++, allReservedIDs);
// build the list of DataObjects
- List createTransformsProfiles = profileFactory.getCreateTransformsInfoProfiles(singleSignatureInfo);
+ final List createTransformsProfiles = profileFactory.getCreateTransformsInfoProfiles(
+ singleSignatureInfo);
dataObjectList =
- buildDataObjectList(
- singleSignatureInfo,
- createTransformsProfiles,
- signatureEnvironment,
- refIdGen);
+ buildDataObjectList(
+ singleSignatureInfo,
+ createTransformsProfiles,
+ signatureEnvironment,
+ refIdGen);
// build the XMLSignatureCreationProfile
profile = profileFactory.createProfile(singleSignatureInfo, sigInfoReservedIDs);
@@ -218,78 +219,78 @@ public class XMLSignatureCreationInvoker {
// build the signatureParentElement
if (signatureEnvironment != null) {
signatureParent =
- buildSignatureParentElement(
- signatureEnvironment.getElement(),
- singleSignatureInfo);
+ buildSignatureParentElement(
+ signatureEnvironment.getElement(),
+ singleSignatureInfo);
} else {
signatureParent = null;
}
- // make the signature environment the root of the document, if it is
- // not a separate document anyway; this is done to assure that
- // canonicalization of the signature environment contains the correct
+ // make the signature environment the root of the document, if it is
+ // not a separate document anyway; this is done to assure that
+ // canonicalization of the signature environment contains the correct
// namespace declarations
if (signatureEnvironment != null) {
- Document requestDoc =
- signatureEnvironment.getElement().getOwnerDocument();
+ final Document requestDoc =
+ signatureEnvironment.getElement().getOwnerDocument();
requestElement = requestDoc.getDocumentElement();
if (requestElement != signatureEnvironment.getElement()) {
signatureEnvironmentParent =
- signatureEnvironment.getElement().getParentNode();
+ signatureEnvironment.getElement().getParentNode();
requestElement.getOwnerDocument().replaceChild(
- signatureEnvironment.getElement(),
- requestElement);
+ signatureEnvironment.getElement(),
+ requestElement);
}
}
try {
- ConfigurationProvider config = context.getConfiguration();
- String xadesVersion = config.getXAdESVersion();
-
- if (xadesVersion!= null && xadesVersion.compareTo(XMLSignatureCreationModule.XADES_VERSION_1_4_2) == 0) {
- // create the signature (XAdES 1.4.2)
- signature =
- module.createSignature(
+ final ConfigurationProvider config = context.getConfiguration();
+ final String xadesVersion = config.getXAdESVersion();
+
+ if (xadesVersion != null && xadesVersion.compareTo(
+ XMLSignatureCreationModule.XADES_VERSION_1_4_2) == 0) {
+ // create the signature (XAdES 1.4.2)
+ signature =
+ module.createSignature(
dataObjectList,
profile,
additionalSignedProperties,
signatureParent,
XMLSignatureCreationModule.XADES_VERSION_1_4_2,
new TransactionId(context.getTransactionID()));
- }
- else {
- // create the signature (XAdES 1.1.1 = default)
- signature =
- module.createSignature(
+ } else {
+ // create the signature (XAdES 1.1.1 = default)
+ signature =
+ module.createSignature(
dataObjectList,
profile,
additionalSignedProperties,
signatureParent,
XMLSignatureCreationModule.XADES_VERSION_1_1_1,
new TransactionId(context.getTransactionID()));
- }
+ }
// insert the result into the response
if (signatureParent != null) {
responseBuilder.addSignatureEnvironment(
- signatureEnvironment.getElement());
+ signatureEnvironment.getElement());
} else {
responseBuilder.addSignatureEnvironment(signature.getElement());
}
- } catch (IAIKException e) {
- MOAException moaException = IaikExceptionMapper.getInstance().map(e);
+ } catch (final IAIKException e) {
+ final MOAException moaException = IaikExceptionMapper.getInstance().map(e);
responseBuilder.addError(
- moaException.getMessageId(),
- moaException.getMessage());
+ moaException.getMessageId(),
+ moaException.getMessage());
Logger.warn(moaException.getMessage(), e);
- } catch (IAIKRuntimeException e) {
- MOAException moaException = IaikExceptionMapper.getInstance().map(e);
+ } catch (final IAIKRuntimeException e) {
+ final MOAException moaException = IaikExceptionMapper.getInstance().map(e);
responseBuilder.addError(
- moaException.getMessageId(),
- moaException.getMessage());
+ moaException.getMessageId(),
+ moaException.getMessage());
Logger.warn(moaException.getMessage(), e);
}
@@ -297,14 +298,14 @@ public class XMLSignatureCreationInvoker {
if (signatureEnvironment != null) {
if (requestElement != signatureEnvironment.getElement()) {
requestElement.getOwnerDocument().replaceChild(
- requestElement,
- signatureEnvironment.getElement());
+ requestElement,
+ signatureEnvironment.getElement());
signatureEnvironmentParent.appendChild(
- signatureEnvironment.getElement());
+ signatureEnvironment.getElement());
}
}
- } catch (MOAException e) {
+ } catch (final MOAException e) {
responseBuilder.addError(e.getMessageId(), e.getMessage());
Logger.warn(e.getMessage(), e);
}
@@ -317,85 +318,88 @@ public class XMLSignatureCreationInvoker {
/**
* Build the list of <code>DataObject</code>s from the given
* <code>SingleSignatureInfo</code> object.
- *
+ *
* <p>
- * Only the following cases of <code>DataObject</code>s are
- * valid in case of an enveloping signature:
- *
+ * Only the following cases of <code>DataObject</code>s are valid in case of an
+ * enveloping signature:
+ *
* <ul>
- * <li><code>Reference == null && Content != null</code>: The
+ * <li><code>Reference == null && Content != null</code>: The
* <code>Content</code> will be used in the <code>DataObject</code>.</li>
* <li><code>Reference != null && Content == null</code>: Resolve the
- * <code>Reference</code> and use it as <code>DataObject</code>.
- * Set the <code>Reference</code> in the <code>DataObject</code> as well.</li>
+ * <code>Reference</code> and use it as <code>DataObject</code>. Set the
+ * <code>Reference</code> in the <code>DataObject</code> as well.</li>
* </ul>
* </p>
- *
+ *
* <p>
- * Only the following cases of <code>DataObject</code>s are valid in case
- * of a detached signature:
- *
+ * Only the following cases of <code>DataObject</code>s are valid in case of a
+ * detached signature:
+ *
* <ul>
* <li><code>Reference != null && Content == null</code>: Resolve the
- * <code>Reference</code> and use it as <code>DataObject</code>.
- * Set the <code>Reference</code> in the <code>DataObject</code> as well.</li>
+ * <code>Reference</code> and use it as <code>DataObject</code>. Set the
+ * <code>Reference</code> in the <code>DataObject</code> as well.</li>
* <li><code>Reference != null && Content != null</code>: The
- * <code>Content</code> will be used in the <code>DataObject</code>.
- * Set the <code>Reference</code> in the <code>DataObject</code> as well.</li>
+ * <code>Content</code> will be used in the <code>DataObject</code>. Set the
+ * <code>Reference</code> in the <code>DataObject</code> as well.</li>
* </ul>
* </p>
- *
+ *
* <p>
* All other cases will lead to an error.
* </p>
- *
- * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object
- * containing the <code>DataObjectInfo</code> objects.
- * @param createTransformsProfiles A list of objects of type {@link CreateTransformsInfoProfileExplicit},
- * each representing the transforms info profile information for the corresponding <code>DataObject</code>.
- * @param signatureEnvironment The
- * @param idGen The ID generator for <code>DataObject</code> references.
+ *
+ * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object
+ * containing the <code>DataObjectInfo</code>
+ * objects.
+ * @param createTransformsProfiles A list of objects of type
+ * {@link CreateTransformsInfoProfileExplicit},
+ * each representing the transforms info profile
+ * information for the corresponding
+ * <code>DataObject</code>.
+ * @param signatureEnvironment The
+ * @param idGen The ID generator for <code>DataObject</code>
+ * references.
* @return The <code>List</code> of <code>DataObject</code>s contained in the
- * given <code>singleSignatureInfo</code>.
- * @throws MOASystemException A system error occurred building the data
- * objects.
- * @throws MOAApplicationException An error occurred building the data
- * objects.
+ * given <code>singleSignatureInfo</code>.
+ * @throws MOASystemException A system error occurred building the data
+ * objects.
+ * @throws MOAApplicationException An error occurred building the data objects.
*/
private List buildDataObjectList(
- SingleSignatureInfo singleSignatureInfo,
- List createTransformsProfiles,
- XMLDataObject signatureEnvironment,
- IdGenerator idGen)
- throws MOASystemException, MOAApplicationException {
-
- List dataObjInfos = singleSignatureInfo.getDataObjectInfos();
- List dataObjects = new ArrayList();
+ SingleSignatureInfo singleSignatureInfo,
+ List createTransformsProfiles,
+ XMLDataObject signatureEnvironment,
+ IdGenerator idGen)
+ throws MOASystemException, MOAApplicationException {
+
+ final List dataObjInfos = singleSignatureInfo.getDataObjectInfos();
+ final List dataObjects = new ArrayList();
Iterator dtIter;
- Iterator ctpIter = createTransformsProfiles.iterator();
+ final Iterator ctpIter = createTransformsProfiles.iterator();
- for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();)
- {
- DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next();
- String structure = dataObjInfo.getStructure();
-
- CreateTransformsInfoProfileExplicit transformsProfile =
- (CreateTransformsInfoProfileExplicit) ctpIter.next();
- MetaInfo finalDataMetaInfo = transformsProfile.getCreateTransformsInfo().getFinalDataMetaInfo();
+ for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();) {
+ final DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next();
+ final String structure = dataObjInfo.getStructure();
+
+ final CreateTransformsInfoProfileExplicit transformsProfile =
+ (CreateTransformsInfoProfileExplicit) ctpIter.next();
+ final MetaInfo finalDataMetaInfo = transformsProfile.getCreateTransformsInfo().getFinalDataMetaInfo();
if (DataObjectInfo.STRUCTURE_ENVELOPING.equals(structure)) {
dataObjects.add(
- buildEnvelopingDataObject(
- dataObjInfo.getDataObject(),
- finalDataMetaInfo,
- idGen.uniqueId()));
+ buildEnvelopingDataObject(
+ dataObjInfo.getDataObject(),
+ finalDataMetaInfo,
+ idGen.uniqueId()));
} else if (DataObjectInfo.STRUCTURE_DETACHED.equals(structure)) {
dataObjects.add(
- buildDetachedDataObject(
- dataObjInfo.getDataObject(),
- finalDataMetaInfo,
- signatureEnvironment,
- idGen.uniqueId()));
+ buildDetachedDataObject(
+ dataObjInfo.getDataObject(),
+ finalDataMetaInfo,
+ signatureEnvironment,
+ idGen.uniqueId()));
} else {
throw new MOAApplicationException("1103", new Object[] { structure });
}
@@ -406,126 +410,128 @@ public class XMLSignatureCreationInvoker {
}
/**
- * Build a <code>DataObject</code> to be used in an enveloping
- * signature.
- *
- * @param content The <code>Content</code> object containing the data object.
- * <code>ContentOptionalRefType</code>.
- * @param finalDataMetaInfo The meta information corresponding with <code>content</code>.
- * @param referenceID The reference ID to use in the signature for the
- * <code>DataObject</code> created.
+ * Build a <code>DataObject</code> to be used in an enveloping signature.
+ *
+ * @param content The <code>Content</code> object containing the data
+ * object. <code>ContentOptionalRefType</code>.
+ * @param finalDataMetaInfo The meta information corresponding with
+ * <code>content</code>.
+ * @param referenceID The reference ID to use in the signature for the
+ * <code>DataObject</code> created.
* @return The <code>DataObject</code> representing the data contained in
- * <code>dataObjectElem</code>.
- * @throws MOAApplicationException An error occurred during the creation of
- * the <code>DataObject</code>.
- * @throws MOASystemException A system error occurred during the creation of
- * the <code>DataObject</code>.
+ * <code>dataObjectElem</code>.
+ * @throws MOAApplicationException An error occurred during the creation of the
+ * <code>DataObject</code>.
+ * @throws MOASystemException A system error occurred during the creation
+ * of the <code>DataObject</code>.
*/
private DataObject buildEnvelopingDataObject(
- Content content,
- MetaInfo finalDataMetaInfo,
- String referenceID)
- throws MOASystemException, MOAApplicationException {
+ Content content,
+ MetaInfo finalDataMetaInfo,
+ String referenceID)
+ throws MOASystemException, MOAApplicationException {
- DataObjectFactory factory = DataObjectFactory.getInstance();
+ final DataObjectFactory factory = DataObjectFactory.getInstance();
DataObject dataObject;
dataObject =
- factory.createFromContentOptionalRefType(
- content,
- finalDataMetaInfo,
- referenceID,
- false,
- false,
- true,
- false);
+ factory.createFromContentOptionalRefType(
+ content,
+ finalDataMetaInfo,
+ referenceID,
+ false,
+ false,
+ true,
+ false);
return dataObject;
}
/**
* Build a <code>DataObject</code> to be used in a detached signature.
- *
- * @param content The <code>Content</code> object containing an the data.
- * @param finalDataMetaInfo The meta information corresponding with <code>content</code>.
+ *
+ * @param content The <code>Content</code> object containing an the
+ * data.
+ * @param finalDataMetaInfo The meta information corresponding with
+ * <code>content</code>.
* @param signatureEnvironment The signature environment where the signature
- * will be inserted.
- * @param referenceID The reference ID to use in the signature for the
- * <code>DataObject</code> created.
+ * will be inserted.
+ * @param referenceID The reference ID to use in the signature for the
+ * <code>DataObject</code> created.
* @return The <code>DataObject</code> representing the data contained in
- * <code>dataObjectElem</code>.
- * @throws MOAApplicationException An error occurred during the creation of
- * the <code>DataObject</code>.
- * @throws MOASystemException A system error occurred during the creation of
- * the <code>DataObject</code>.
+ * <code>dataObjectElem</code>.
+ * @throws MOAApplicationException An error occurred during the creation of the
+ * <code>DataObject</code>.
+ * @throws MOASystemException A system error occurred during the creation
+ * of the <code>DataObject</code>.
*/
private DataObject buildDetachedDataObject(
- Content content,
- MetaInfo finalDataMetaInfo,
- XMLDataObject signatureEnvironment,
- String referenceID)
- throws MOASystemException, MOAApplicationException {
-
- String reference = content.getReference();
- DataObjectFactory factory = DataObjectFactory.getInstance();
+ Content content,
+ MetaInfo finalDataMetaInfo,
+ XMLDataObject signatureEnvironment,
+ String referenceID)
+ throws MOASystemException, MOAApplicationException {
+
+ final String reference = content.getReference();
+ final DataObjectFactory factory = DataObjectFactory.getInstance();
DataObject dataObject;
if (reference == null) {
throw new MOAApplicationException("1102", null);
} else if ("".equals(reference) || reference.startsWith("#")) {
dataObject =
- factory.createFromSignatureEnvironment(
- signatureEnvironment.getElement(),
- reference,
- referenceID);
+ factory.createFromSignatureEnvironment(
+ signatureEnvironment.getElement(),
+ reference,
+ referenceID);
} else {
dataObject =
- factory.createFromContentOptionalRefType(
- content,
- finalDataMetaInfo,
- referenceID,
- true,
- false,
- true,
- false);
+ factory.createFromContentOptionalRefType(
+ content,
+ finalDataMetaInfo,
+ referenceID,
+ true,
+ false,
+ true,
+ false);
}
return dataObject;
}
/**
* Build the signature parent element.
- *
- * @param signatureEnvironment The signature environment containing the
- * document in which to insert the signature.
- * @param singleSignatureInfo The <code>SingleSignatureInfo</code>
- * containing the signature parent element.
- * @return An <code>XMLDataObject</code> containing the signature parent
- * element or <code>null</code>, if the <code>CreateSignatureInfo</code> is
- * <code>null</code>.
- * @throws MOAApplicationException An error occurred during the creation of
- * the signature parent.
+ *
+ * @param signatureEnvironment The signature environment containing the document
+ * in which to insert the signature.
+ * @param singleSignatureInfo The <code>SingleSignatureInfo</code> containing
+ * the signature parent element.
+ * @return An <code>XMLDataObject</code> containing the signature parent element
+ * or <code>null</code>, if the <code>CreateSignatureInfo</code> is
+ * <code>null</code>.
+ * @throws MOAApplicationException An error occurred during the creation of the
+ * signature parent.
*/
private XMLDataObject buildSignatureParentElement(
- Element signatureEnvironment,
- SingleSignatureInfo singleSignatureInfo)
- throws MOAApplicationException {
+ Element signatureEnvironment,
+ SingleSignatureInfo singleSignatureInfo)
+ throws MOAApplicationException {
- CreateSignatureInfo createInfo =
- singleSignatureInfo.getCreateSignatureInfo();
+ final CreateSignatureInfo createInfo =
+ singleSignatureInfo.getCreateSignatureInfo();
// evaluate the CreateSignatureLocation
if (createInfo != null) {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- CreateSignatureEnvironmentProfileExplicit createProfile =
- ProfileMapper.mapCreateSignatureEnvironmentProfile(
- createInfo.getCreateSignatureEnvironmentProfile(),
- config);
- CreateSignatureLocation location =
- createProfile.getCreateSignatureLocation();
- Element signatureParent =
- InvokerUtils.evaluateSignatureLocation(signatureEnvironment, location);
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final CreateSignatureEnvironmentProfileExplicit createProfile =
+ ProfileMapper.mapCreateSignatureEnvironmentProfile(
+ createInfo.getCreateSignatureEnvironmentProfile(),
+ config);
+ final CreateSignatureLocation location =
+ createProfile.getCreateSignatureLocation();
+ final Element signatureParent =
+ InvokerUtils.evaluateSignatureLocation(signatureEnvironment, location);
return new XMLDataObjectImpl(signatureParent);
} else {
@@ -534,31 +540,31 @@ public class XMLSignatureCreationInvoker {
}
/**
- * Get the supplements contained in the
- * <code>CreateSignatureEnvironmentProfile</code> of the given
+ * Get the supplements contained in the
+ * <code>CreateSignatureEnvironmentProfile</code> of the given
* <code>SingleSignatureInfo</code>.
- *
- * @param singleSigInfo The <code>SingleSignatureInfo</code> from which
- * to extract the supplements.
- * @return A <code>List</code> of <code>XMLDataObjectAssociation</code>s
- * or <code>null</code>, if the <code>singleSigInfo</code> does not contain
- * supplements.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>CreateSignatureEnvironmentProfile</code>.
+ *
+ * @param singleSigInfo The <code>SingleSignatureInfo</code> from which to
+ * extract the supplements.
+ * @return A <code>List</code> of <code>XMLDataObjectAssociation</code>s or
+ * <code>null</code>, if the <code>singleSigInfo</code> does not contain
+ * supplements.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>CreateSignatureEnvironmentProfile</code>.
*/
private List getCreateSignatureEnvironmentProfileSupplements(SingleSignatureInfo singleSigInfo)
- throws MOAApplicationException {
- CreateSignatureInfo sigInfo = singleSigInfo.getCreateSignatureInfo();
+ throws MOAApplicationException {
+ final CreateSignatureInfo sigInfo = singleSigInfo.getCreateSignatureInfo();
if (sigInfo != null) {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- CreateSignatureEnvironmentProfileExplicit profile =
- ProfileMapper.mapCreateSignatureEnvironmentProfile(
- sigInfo.getCreateSignatureEnvironmentProfile(),
- config);
- List supplements = profile.getSupplements();
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final CreateSignatureEnvironmentProfileExplicit profile =
+ ProfileMapper.mapCreateSignatureEnvironmentProfile(
+ sigInfo.getCreateSignatureEnvironmentProfile(),
+ config);
+ final List supplements = profile.getSupplements();
return supplements;
}
@@ -567,18 +573,18 @@ public class XMLSignatureCreationInvoker {
/**
* Build the list of additional signed properties.
- *
+ *
* Based on the generic configuration setting
- * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a
- * constant <code>SigningTime</code> will be added to the properties.
- *
+ * <code>ConfigurationProvider.TEST_SIGNING_TIME_PROPERTY</code>, a constant
+ * <code>SigningTime</code> will be added to the properties.
+ *
* @return The <code>List</code> of additional signed properties.
*/
private List buildAdditionalSignedProperties() {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- List additionalSignedProperties = Collections.EMPTY_LIST;
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final List additionalSignedProperties = Collections.EMPTY_LIST;
return additionalSignedProperties;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java
index 32eab9e..c097b0c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureCreationProfileFactory.java
@@ -21,18 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
-import iaik.server.modules.algorithms.HashAlgorithms;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-import iaik.server.modules.xml.Canonicalization;
-import iaik.server.modules.xmlsign.SignatureStructureTypes;
-import iaik.server.modules.xmlsign.XMLSignatureCreationProfile;
-import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation;
-
import java.math.BigInteger;
import java.security.Principal;
import java.security.cert.X509Certificate;
@@ -70,12 +60,20 @@ import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.Constants;
+import iaik.server.modules.algorithms.HashAlgorithms;
+import iaik.server.modules.keys.KeyEntryID;
+import iaik.server.modules.keys.KeyModule;
+import iaik.server.modules.keys.KeyModuleFactory;
+import iaik.server.modules.xml.Canonicalization;
+import iaik.server.modules.xmlsign.SignatureStructureTypes;
+import iaik.server.modules.xmlsign.XMLSignatureCreationProfile;
+import iaik.server.modules.xmlsign.XMLSignatureInsertionLocation;
/**
* A factory to create <code>XMLSignatureCreationProfile</code>s from a
* <code>CreateXMLSignatureRequest</code>, based on the current MOA
* configuration.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -91,24 +89,25 @@ public class XMLSignatureCreationProfileFactory {
HASH_ALGORITHM_MAPPING.put(Constants.SHA512_URI, HashAlgorithms.SHA512);
}
- /** The <code>CreateXMLSignatureRequest</code> for which to create the
- * profile.*/
- private CreateXMLSignatureRequest request;
+ /**
+ * The <code>CreateXMLSignatureRequest</code> for which to create the profile.
+ */
+ private final CreateXMLSignatureRequest request;
/** How many profiles have been created based on the same request. */
private int createProfileCount;
- /** The <code>Set</code> of reserved object IDs.*/
- private Set reserved;
+ /** The <code>Set</code> of reserved object IDs. */
+ private final Set reserved;
/**
* Create a new <code>XMLSignatureCreationProfileFactory</code>.
- *
- * @param request The request for which to create profiles.
- * @param reserved The <code>Set</code> of reserved object IDs. IDs will
- * be added during signature creation.
+ *
+ * @param request The request for which to create profiles.
+ * @param reserved The <code>Set</code> of reserved object IDs. IDs will be
+ * added during signature creation.
*/
public XMLSignatureCreationProfileFactory(
- CreateXMLSignatureRequest request,
- Set reserved) {
+ CreateXMLSignatureRequest request,
+ Set reserved) {
this.request = request;
this.reserved = reserved;
createProfileCount = 1;
@@ -117,98 +116,98 @@ public class XMLSignatureCreationProfileFactory {
/**
* Create a <code>XMLSignatureCreationProfile</code> for the given
* <code>SingleSignatureInfo</code> object..
- *
+ *
* @param singleSignatureInfo The <code>SingleSignatureInfo</code> object
- * containing information about the creation of a signature.
- * @param sigInfoReservedIDs The <code>Set</code> of reserved ID attribue values
- * for the particular <code>singleSignatureInfo</code>.
+ * containing information about the creation of a
+ * signature.
+ * @param sigInfoReservedIDs The <code>Set</code> of reserved ID attribue
+ * values for the particular
+ * <code>singleSignatureInfo</code>.
* @return The <code>XMLSignatureCreationProfile</code> containing additional
- * information for creating an XML signature.
- * @throws MOASystemException A system error occurred during creation of the
- * profile. See message for details
- * @throws MOAApplicationException An application error occurred during
- * creation of the profile. See message for details.
+ * information for creating an XML signature.
+ * @throws MOASystemException A system error occurred during creation of
+ * the profile. See message for details
+ * @throws MOAApplicationException An application error occurred during creation
+ * of the profile. See message for details.
*/
public XMLSignatureCreationProfile createProfile(SingleSignatureInfo singleSignatureInfo,
- Set sigInfoReservedIDs) throws MOASystemException, MOAApplicationException {
+ Set sigInfoReservedIDs) throws MOASystemException, MOAApplicationException {
- HashSet allReservedIDs = new HashSet(reserved);
+ final HashSet allReservedIDs = new HashSet(reserved);
allReservedIDs.addAll(sigInfoReservedIDs);
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
List dataObjectTreatmentList;
Set keySet;
List transformationSupplements;
List createTransformsProfiles;
// get the key group id
- String keyGroupID = request.getKeyIdentifier();
+ final String keyGroupID = request.getKeyIdentifier();
// get digest method on key group level (if configured)
- KeyGroup keygroup = config.getKeyGroup(keyGroupID);
- if(null == keygroup) {
- Logger.error("Could not find key group '" + keyGroupID + "'");
- throw new MOAApplicationException("2231", null);
+ final KeyGroup keygroup = config.getKeyGroup(keyGroupID);
+ if (null == keygroup) {
+ Logger.error("Could not find key group '" + keyGroupID + "'");
+ throw new MOAApplicationException("2231", null);
}
- String configDigestMethodKG = keygroup.getDigestMethodAlgorithm();
+ final String configDigestMethodKG = keygroup.getDigestMethodAlgorithm();
// get default digest method (if configured)
- String configDigestMethod = config.getDigestMethodAlgorithmName();
-
- String xadesVersion = config.getXAdESVersion();
-
+ final String configDigestMethod = config.getDigestMethodAlgorithmName();
+
+ final String xadesVersion = config.getXAdESVersion();
+
String digestMethodXAdES142 = null;
boolean isXAdES142 = false;
// if XAdES Version 1.4.2 is configured
if (xadesVersion != null && xadesVersion.compareTo("1.4.2") == 0) {
- isXAdES142 = true;
- Logger.debug("XAdES version '" + xadesVersion + "' used");
+ isXAdES142 = true;
+ Logger.debug("XAdES version '" + xadesVersion + "' used");
}
-
+
if (isXAdES142) {
- if (configDigestMethodKG != null) {
- // if KG specific digest method is configured
- digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG);
- if (digestMethodXAdES142 == null) {
- error(
- "config.17",
- new Object[] { configDigestMethodKG});
- throw new MOASystemException("2900", null);
- }
- Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(configured in KeyGroup)");
- }
- else {
- // else get default configured digest method
- digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod);
- if (digestMethodXAdES142 == null) {
- error(
- "config.17",
- new Object[] { configDigestMethod});
- throw new MOASystemException("2900", null);
- }
- Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(default)");
-
- }
+ if (configDigestMethodKG != null) {
+ // if KG specific digest method is configured
+ digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethodKG);
+ if (digestMethodXAdES142 == null) {
+ error(
+ "config.17",
+ new Object[] { configDigestMethodKG });
+ throw new MOASystemException("2900", null);
+ }
+ Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(configured in KeyGroup)");
+ } else {
+ // else get default configured digest method
+ digestMethodXAdES142 = (String) HASH_ALGORITHM_MAPPING.get(configDigestMethod);
+ if (digestMethodXAdES142 == null) {
+ error(
+ "config.17",
+ new Object[] { configDigestMethod });
+ throw new MOASystemException("2900", null);
+ }
+ Logger.debug("Digest algorithm: " + digestMethodXAdES142 + "(default)");
+
+ }
}
-
- XMLSignatureCreationProfileImpl profile =
- new XMLSignatureCreationProfileImpl(createProfileCount, allReservedIDs, digestMethodXAdES142);
-
+ final XMLSignatureCreationProfileImpl profile =
+ new XMLSignatureCreationProfileImpl(createProfileCount, allReservedIDs, digestMethodXAdES142);
+
// build the transformation supplements
createTransformsProfiles =
- getCreateTransformsInfoProfiles(singleSignatureInfo);
+ getCreateTransformsInfoProfiles(singleSignatureInfo);
transformationSupplements =
- buildTransformationSupplements(createTransformsProfiles);
+ buildTransformationSupplements(createTransformsProfiles);
// build and set the data object treatment list
dataObjectTreatmentList =
- buildDataObjectTreatmentList(
- singleSignatureInfo,
- createTransformsProfiles,
- transformationSupplements,
- allReservedIDs,
- digestMethodXAdES142);
+ buildDataObjectTreatmentList(
+ singleSignatureInfo,
+ createTransformsProfiles,
+ transformationSupplements,
+ allReservedIDs,
+ digestMethodXAdES142);
profile.setDataObjectTreatmentList(dataObjectTreatmentList);
// set the key set
@@ -232,27 +231,28 @@ public class XMLSignatureCreationProfileFactory {
// set insertion location
profile.setSignatureInsertionLocation(
- getSignatureInsertionLocationIndex(singleSignatureInfo));
+ getSignatureInsertionLocationIndex(singleSignatureInfo));
// set the canonicalization algorithm
- String canonicalizationURI = config.getCanonicalizationAlgorithmName();
+ final String canonicalizationURI = config.getCanonicalizationAlgorithmName();
if (Canonicalization.ALL_EXCLUSIVE.contains(canonicalizationURI)) {
- ExclusiveCanonicalizationImpl canonicalization = new ExclusiveCanonicalizationImpl(config.getCanonicalizationAlgorithmName(), null);
- profile.setSignedInfoCanonicalization(canonicalization);
-
+ final ExclusiveCanonicalizationImpl canonicalization = new ExclusiveCanonicalizationImpl(config
+ .getCanonicalizationAlgorithmName(), null);
+ profile.setSignedInfoCanonicalization(canonicalization);
+
} else {
- CanonicalizationImpl canonicalization =
- new CanonicalizationImpl(config.getCanonicalizationAlgorithmName());
- profile.setSignedInfoCanonicalization(canonicalization);
-
+ final CanonicalizationImpl canonicalization =
+ new CanonicalizationImpl(config.getCanonicalizationAlgorithmName());
+ profile.setSignedInfoCanonicalization(canonicalization);
+
}
-
+
// set the signed properties
profile.setSignedProperties(Collections.EMPTY_LIST);
// set security layer conformity
profile.setSecurityLayerConform(
- singleSignatureInfo.isSecurityLayerConform());
+ singleSignatureInfo.isSecurityLayerConform());
// update the createProfileCount
createProfileCount++;
@@ -262,31 +262,32 @@ public class XMLSignatureCreationProfileFactory {
/**
* Get the <code>List</code> of all <code>CreateTransformsInfoProfile</code>s
- * contained in all the <code>DataObjectInfo</code>s of the given
+ * contained in all the <code>DataObjectInfo</code>s of the given
* <code>SingleSignatureInfo</code>.
- *
+ *
* @param singleSignatureInfo The <code>SingleSignatureInfo</code> object from
- * which to extract the <code>CreateTransformsInfoProfile</code>s.
- * @return All <code>CreateTransformsInfoProfile</code>s of all
- * <code>DataObjectInfo</code>s of <code>singleSignatureInfo</code>.
+ * which to extract the
+ * <code>CreateTransformsInfoProfile</code>s.
+ * @return All <code>CreateTransformsInfoProfile</code>s of all
+ * <code>DataObjectInfo</code>s of <code>singleSignatureInfo</code>.
* @throws MOAApplicationException An error occurred creating one of the
- * profiles.
+ * profiles.
*/
List getCreateTransformsInfoProfiles(SingleSignatureInfo singleSignatureInfo)
- throws MOAApplicationException {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- List dataObjInfos = singleSignatureInfo.getDataObjectInfos();
- List profiles = new ArrayList();
+ throws MOAApplicationException {
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final List dataObjInfos = singleSignatureInfo.getDataObjectInfos();
+ final List profiles = new ArrayList();
Iterator dtIter;
for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();) {
- DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next();
- CreateTransformsInfoProfileExplicit profile =
- ProfileMapper.mapCreateTransformsInfoProfile(
- dataObjInfo.getCreateTransformsInfoProfile(),
- config);
+ final DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next();
+ final CreateTransformsInfoProfileExplicit profile =
+ ProfileMapper.mapCreateTransformsInfoProfile(
+ dataObjInfo.getCreateTransformsInfoProfile(),
+ config);
profiles.add(profile);
}
@@ -296,41 +297,42 @@ public class XMLSignatureCreationProfileFactory {
/**
* Build the <code>List</code> of transformation supplements contained in a
* <code>SingleSignatureInfo</code> object.
- *
- * @param createTransformsInfoProfiles The
- * <code>CreateTransformsInfoProfile</code> object from which to extract the
- * transformation supplements.
+ *
+ * @param createTransformsInfoProfiles The
+ * <code>CreateTransformsInfoProfile</code>
+ * object from which to extract the
+ * transformation supplements.
* @return A <code>List</code> of <code>DataObject</code>s containing the
- * transformation supplements.
- * @throws MOASystemException A system error occurred creating one of the
- * transformation supplements.
+ * transformation supplements.
+ * @throws MOASystemException A system error occurred creating one of the
+ * transformation supplements.
* @throws MOAApplicationException An error occurred creating one of the
- * transformation supplements.
+ * transformation supplements.
*/
private List buildTransformationSupplements(List createTransformsInfoProfiles)
- throws MOASystemException, MOAApplicationException {
+ throws MOASystemException, MOAApplicationException {
- List transformationSupplements = new ArrayList();
- DataObjectFactory factory = DataObjectFactory.getInstance();
+ final List transformationSupplements = new ArrayList();
+ final DataObjectFactory factory = DataObjectFactory.getInstance();
Iterator iter;
for (iter = createTransformsInfoProfiles.iterator(); iter.hasNext();) {
- CreateTransformsInfoProfileExplicit profile =
- (CreateTransformsInfoProfileExplicit) iter.next();
- List supplements = profile.getSupplements();
+ final CreateTransformsInfoProfileExplicit profile =
+ (CreateTransformsInfoProfileExplicit) iter.next();
+ final List supplements = profile.getSupplements();
if (supplements != null) {
Iterator supplIter;
for (supplIter = supplements.iterator(); supplIter.hasNext();) {
- XMLDataObjectAssociation supplement =
- (XMLDataObjectAssociation) supplIter.next();
+ final XMLDataObjectAssociation supplement =
+ (XMLDataObjectAssociation) supplIter.next();
transformationSupplements.add(
- factory.createFromXmlDataObjectAssociation(
- supplement,
- false,
- true));
+ factory.createFromXmlDataObjectAssociation(
+ supplement,
+ false,
+ true));
}
}
}
@@ -341,35 +343,40 @@ public class XMLSignatureCreationProfileFactory {
/**
* Build the <code>List</code> of <code>DataObjectTreatment</code>s for the
* given <code>SingleSignatureInfo</code> object..
- *
- * @param singleSignatureInfo The <code>SingleSignatureInfo</code> object
- * from which to exctract the <code>CreateTransformsInfoProfile</code>s
- * containing the data for the <code>DataObjectTreatment</code>s.
- * @param createTransformsInfoProfiles The
- * <code>CreateTransformsInfoProfile</code>s contained in the
- * <code>singleSignatureInfo</code>.
- * @param transformationSupplements Additional parameters for
- * transformations contained in <code>DataObjectTreatment</code>s.
- * @param reservedIDs The <code>Set</code> of reserved object IDs.
+ *
+ * @param singleSignatureInfo The <code>SingleSignatureInfo</code>
+ * object from which to exctract the
+ * <code>CreateTransformsInfoProfile</code>s
+ * containing the data for the
+ * <code>DataObjectTreatment</code>s.
+ * @param createTransformsInfoProfiles The
+ * <code>CreateTransformsInfoProfile</code>s
+ * contained in the
+ * <code>singleSignatureInfo</code>.
+ * @param transformationSupplements Additional parameters for transformations
+ * contained in
+ * <code>DataObjectTreatment</code>s.
+ * @param reservedIDs The <code>Set</code> of reserved object
+ * IDs.
* @return A <code>List</code> of <code>DataObjectTreatment</code> objects.
* @throws MOAApplicationException An error occurred building one of the
- * <code>DataObjectTreatment</code>s.
- * @throws MOASystemException A system error occurred building one of the
- * <code>DataObjectTreatment</code>s.
+ * <code>DataObjectTreatment</code>s.
+ * @throws MOASystemException A system error occurred building one of the
+ * <code>DataObjectTreatment</code>s.
*/
private List buildDataObjectTreatmentList(
- SingleSignatureInfo singleSignatureInfo,
- List createTransformsInfoProfiles,
- List transformationSupplements,
- Set reservedIDs,
- String digestMethodXAdES142)
- throws MOASystemException, MOAApplicationException {
-
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- List treatments = new ArrayList();
- List dataObjInfos = singleSignatureInfo.getDataObjectInfos();
+ SingleSignatureInfo singleSignatureInfo,
+ List createTransformsInfoProfiles,
+ List transformationSupplements,
+ Set reservedIDs,
+ String digestMethodXAdES142)
+ throws MOASystemException, MOAApplicationException {
+
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final List treatments = new ArrayList();
+ final List dataObjInfos = singleSignatureInfo.getDataObjectInfos();
int dataObjectTreatmentCount = 1;
String hashAlgorithmName;
Iterator dtIter;
@@ -377,44 +384,40 @@ public class XMLSignatureCreationProfileFactory {
prIter = createTransformsInfoProfiles.iterator();
for (dtIter = dataObjInfos.iterator(); dtIter.hasNext();) {
- CreateTransformsInfoProfileExplicit profile =
- (CreateTransformsInfoProfileExplicit) prIter.next();
- DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next();
- IdGenerator objIdGen =
- new IdGenerator(
- ("signed-data-" + createProfileCount)
- + ("-" + dataObjectTreatmentCount++),
- reservedIDs);
- DataObjectTreatmentImpl treatment = new DataObjectTreatmentImpl(objIdGen);
+ final CreateTransformsInfoProfileExplicit profile =
+ (CreateTransformsInfoProfileExplicit) prIter.next();
+ final DataObjectInfo dataObjInfo = (DataObjectInfo) dtIter.next();
+ final IdGenerator objIdGen =
+ new IdGenerator(
+ "signed-data-" + createProfileCount
+ + "-" + dataObjectTreatmentCount++,
+ reservedIDs);
+ final DataObjectTreatmentImpl treatment = new DataObjectTreatmentImpl(objIdGen);
treatment.setFinalContentType(
- profile.getCreateTransformsInfo().getFinalDataMetaInfo().getMimeType());
+ profile.getCreateTransformsInfo().getFinalDataMetaInfo().getMimeType());
treatment.setTransformationList(buildTransformationList(profile));
treatment.setReferenceInManifest(dataObjInfo.isChildOfManifest());
// if XAdES version is 1.4.2
if (digestMethodXAdES142 != null) {
- // use configured digest algorithm
- hashAlgorithmName = digestMethodXAdES142;
- }
- else {
- // stay as it is
- hashAlgorithmName = (String) HASH_ALGORITHM_MAPPING.get(
- config.getDigestMethodAlgorithmName());
- if (hashAlgorithmName == null) {
- error(
- "config.17",
- new Object[] { config.getDigestMethodAlgorithmName()});
- throw new MOASystemException("2900", null);
- }
+ // use configured digest algorithm
+ hashAlgorithmName = digestMethodXAdES142;
+ } else {
+ // stay as it is
+ hashAlgorithmName = (String) HASH_ALGORITHM_MAPPING.get(
+ config.getDigestMethodAlgorithmName());
+ if (hashAlgorithmName == null) {
+ error(
+ "config.17",
+ new Object[] { config.getDigestMethodAlgorithmName() });
+ throw new MOASystemException("2900", null);
+ }
}
-
-
-
treatment.setHashAlgorithmName(hashAlgorithmName);
treatment.setIncludedInSignature(
- DataObjectInfo.STRUCTURE_ENVELOPING.equals(dataObjInfo.getStructure()));
+ DataObjectInfo.STRUCTURE_ENVELOPING.equals(dataObjInfo.getStructure()));
treatment.setTransformationSupplements(transformationSupplements);
treatments.add(treatment);
@@ -427,48 +430,48 @@ public class XMLSignatureCreationProfileFactory {
/**
* Build the <code>List</code> of transformations contained in a
* <code>CreateTransformsInfoProfile</code> object.
- *
- * @param profile The <code>CreateTransformsInfoProfile</code> object
- * from which to extract the <code>Transform</code>s.
- * @return A <code>List</code> of <code>Transformation</code>s contained in
- * the given <code>CreateTransformsInfoProfile</code>.
+ *
+ * @param profile The <code>CreateTransformsInfoProfile</code> object from which
+ * to extract the <code>Transform</code>s.
+ * @return A <code>List</code> of <code>Transformation</code>s contained in the
+ * given <code>CreateTransformsInfoProfile</code>.
* @throws MOAApplicationException An error occurred building one of the
- * <code>Transformation</code>s.
+ * <code>Transformation</code>s.
*/
private List buildTransformationList(CreateTransformsInfoProfileExplicit profile)
- throws MOAApplicationException {
+ throws MOAApplicationException {
- TransformationFactory factory = TransformationFactory.getInstance();
- List transforms = profile.getCreateTransformsInfo().getTransforms();
+ final TransformationFactory factory = TransformationFactory.getInstance();
+ final List transforms = profile.getCreateTransformsInfo().getTransforms();
return transforms != null
- ? factory.createTransformationList(transforms)
- : Collections.EMPTY_LIST;
+ ? factory.createTransformationList(transforms)
+ : Collections.EMPTY_LIST;
}
/**
* Build the set of <code>KeyEntryID</code>s available to the given
* <code>keyGroupID</code>.
- *
+ *
* @param keyGroupID The keygroup ID for which the available keys should be
- * returned.
- * @return The <code>Set</code> of <code>KeyEntryID</code>s
- * identifying the available keys.
+ * returned.
+ * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the
+ * available keys.
*/
private Set buildKeySet(String keyGroupID) {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
Set keyGroupEntries;
// get the KeyGroup entries from the configuration
if (context.getClientCertificate() != null) {
- X509Certificate cert = context.getClientCertificate()[0];
- Principal issuer = cert.getIssuerDN();
- BigInteger serialNumber = cert.getSerialNumber();
+ final X509Certificate cert = context.getClientCertificate()[0];
+ final Principal issuer = cert.getIssuerDN();
+ final BigInteger serialNumber = cert.getSerialNumber();
keyGroupEntries =
- config.getKeyGroupEntries(issuer, serialNumber, keyGroupID);
+ config.getKeyGroupEntries(issuer, serialNumber, keyGroupID);
} else {
keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
}
@@ -479,23 +482,23 @@ public class XMLSignatureCreationProfileFactory {
} else if (keyGroupEntries.size() == 0) {
return Collections.EMPTY_SET;
} else {
- KeyModule module =
- KeyModuleFactory.getInstance(
- new TransactionId(context.getTransactionID()));
- Set keyEntryIDs = module.getPrivateKeyEntryIDs();
- Set keySet = new HashSet();
+ final KeyModule module =
+ KeyModuleFactory.getInstance(
+ new TransactionId(context.getTransactionID()));
+ final Set keyEntryIDs = module.getPrivateKeyEntryIDs();
+ final Set keySet = new HashSet();
Iterator iter;
// filter out the keys that do not exist in the IAIK configuration
// by walking through the key entries and checking if the exist in the
// keyGroupEntries
for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
- KeyGroupEntry entry =
- new KeyGroupEntry(
- entryID.getModuleID(),
- entryID.getCertificateIssuer(),
- entryID.getCertificateSerialNumber());
+ final KeyEntryID entryID = (KeyEntryID) iter.next();
+ final KeyGroupEntry entry =
+ new KeyGroupEntry(
+ entryID.getModuleID(),
+ entryID.getCertificateIssuer(),
+ entryID.getCertificateSerialNumber());
if (keyGroupEntries.contains(entry)) {
keySet.add(entryID);
}
@@ -507,29 +510,31 @@ public class XMLSignatureCreationProfileFactory {
/**
* Get the signature location index where the signature will be inserted into
* the signature parent element.
- *
+ *
* @param singleSignatureInfo The <code>SingleSignatureInfo</code> object
- * containing the <code>CreateSignatureLocation</code>.
+ * containing the
+ * <code>CreateSignatureLocation</code>.
* @return The index at which to insert the signature into the signature
- * environment.
- * @throws MOAApplicationException An error occurred parsing the
- * <code>CreateSignatureEnvironmentProfile</code>.
+ * environment.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>CreateSignatureEnvironmentProfile</code>.
*/
- private XMLSignatureInsertionLocation getSignatureInsertionLocationIndex(SingleSignatureInfo singleSignatureInfo)
- throws MOAApplicationException {
+ private XMLSignatureInsertionLocation getSignatureInsertionLocationIndex(
+ SingleSignatureInfo singleSignatureInfo)
+ throws MOAApplicationException {
- CreateSignatureInfo createInfo =
- singleSignatureInfo.getCreateSignatureInfo();
+ final CreateSignatureInfo createInfo =
+ singleSignatureInfo.getCreateSignatureInfo();
if (createInfo != null) {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- CreateSignatureEnvironmentProfileExplicit profile =
- ProfileMapper.mapCreateSignatureEnvironmentProfile(
- createInfo.getCreateSignatureEnvironmentProfile(),
- config);
- int index = profile.getCreateSignatureLocation().getIndex();
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final CreateSignatureEnvironmentProfileExplicit profile =
+ ProfileMapper.mapCreateSignatureEnvironmentProfile(
+ createInfo.getCreateSignatureEnvironmentProfile(),
+ config);
+ final int index = profile.getCreateSignatureLocation().getIndex();
return new XMLSignatureInsertionLocationImpl(index);
} else {
@@ -539,12 +544,12 @@ public class XMLSignatureCreationProfileFactory {
/**
* Utility function to issue an error message to the log.
- *
- * @param messageId The ID of the message to log.
+ *
+ * @param messageId The ID of the message to log.
* @param parameters Additional message parameters.
*/
private static void error(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
Logger.error(new LogMsg(msg.getMessage(messageId, parameters)));
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java
index 74c4f0b..b97cc95 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationInvoker.java
@@ -37,8 +37,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import javax.xml.ws.soap.AddressingFeature.Responses;
-
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -49,7 +47,6 @@ import at.gv.egovernment.moa.spss.api.SPSSFactory;
import at.gv.egovernment.moa.spss.api.common.CheckResult;
import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult;
import at.gv.egovernment.moa.spss.api.common.XMLDataObjectAssociation;
-import at.gv.egovernment.moa.spss.api.impl.AdESFormResultsImpl;
import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo;
import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResult;
import at.gv.egovernment.moa.spss.api.xmlverify.ReferencesCheckResultInfo;
@@ -78,12 +75,9 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager;
import at.gv.egovernment.moaspss.util.CollectionUtils;
import at.gv.egovernment.moaspss.util.Constants;
import iaik.server.ConfigurationException;
-import iaik.server.modules.AdESConstants;
-import iaik.server.modules.AdESFormVerificationResult;
import iaik.server.modules.IAIKException;
import iaik.server.modules.IAIKRuntimeException;
import iaik.server.modules.SignatureVerificationProfile;
-import iaik.server.modules.SignatureVerificationResult;
import iaik.server.modules.xml.DataObject;
import iaik.server.modules.xml.XMLDataObject;
import iaik.server.modules.xml.XMLSignature;
@@ -103,667 +97,667 @@ import iaik.xml.crypto.utils.URIException;
/**
* A class providing a DOM based interface to the
* <code>XMLSignatureVerificationModule</code>.
- *
+ *
* This class performs the invocation of the
* <code>iaik.server.modules.xmlverify.XMLSignatureVerificationModule</code>
* from a <code>VerifyXMLSignatureRequest</code> given as a DOM element. The
* result of the invocation is integrated into a
* <code>VerifyXMLSignatureResponse</code> and returned.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLSignatureVerificationInvoker {
- /** The single instance of this class. */
- private static XMLSignatureVerificationInvoker instance = null;
-
- private static Set FILTERED_REF_TYPES;
-
- static {
- FILTERED_REF_TYPES = new HashSet();
- FILTERED_REF_TYPES.add(DsigManifest.XML_DSIG_MANIFEST_TYPE);
- FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE);
- FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE_OLD);
- FILTERED_REF_TYPES.add(XMLConstants.NAMESPACE_ETSI_STRING + "SignedProperties");
- FILTERED_REF_TYPES.add("http://uri.etsi.org/01903#SignedProperties");
- }
-
- /**
- * Get the single instance of this class.
- *
- * @return The single instance of this class.
- */
- public static synchronized XMLSignatureVerificationInvoker getInstance() {
- if (instance == null) {
- instance = new XMLSignatureVerificationInvoker();
- }
- return instance;
- }
-
- /**
- * Create a new <code>XMLSignatureCreationInvoker</code>.
- *
- * Protected to disallow multiple instances.
- */
- protected XMLSignatureVerificationInvoker() {
- }
-
- /**
- * Process the <code>VerifyXMLSignatureRequest<code> message and invoke the
- * <code>XMLSignatureVerificationModule</code>.
- *
- * @param request
- * A <code>VerifyXMLSignatureRequest<code> API object
- * containing the data for verifying an XML signature.
- * @return A <code>VerifyXMLSignatureResponse</code> containing the answert
- * to the <code>VerifyXMLSignatureRequest</code>. MOA schema
- * definition.
- * @throws MOAException
- * An error occurred during signature verification.
- */
- public VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request) throws MOAException {
-
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext();
- XMLSignatureVerificationProfileFactory profileFactory = new XMLSignatureVerificationProfileFactory(request);
- VerifyXMLSignatureResponseBuilder responseBuilder = new VerifyXMLSignatureResponseBuilder();
- ExtendedXMLSignatureVerificationResult result = null;
- XMLSignatureVerificationResult plainResult;
- XMLSignatureVerificationProfile profile;
- ReferencesCheckResult signatureManifestCheck;
- DataObjectFactory dataObjFactory;
- XMLDataObject signatureEnvironment;
- Node signatureEnvironmentParent = null;
- Element requestElement = null;
- XMLSignature xmlSignature;
- Date signingTime;
- List supplements;
- List dataObjectList;
-
- // get the supplements
- supplements = getSupplements(request);
-
- // build XMLSignature
- dataObjFactory = DataObjectFactory.getInstance();
- signatureEnvironment = dataObjFactory
- .createSignatureEnvironment(request.getSignatureInfo().getVerifySignatureEnvironment(), supplements);
- xmlSignature = buildXMLSignature(signatureEnvironment, request);
-
- // build the list of DataObjects
- dataObjectList = buildDataObjectList(supplements);
-
- // build profile
- profile = profileFactory.createProfile();
-
- // get the signingTime
- signingTime = request.getDateTime();
-
- // make the signature environment the root of the document, if it is not
- // a
- // separate document anyway; this is done to assure that
- // canonicalization
- // of the signature environment contains the correct namespace
- // declarations
- requestElement = signatureEnvironment.getElement().getOwnerDocument().getDocumentElement();
- if (requestElement != signatureEnvironment.getElement()) {
- signatureEnvironmentParent = signatureEnvironment.getElement().getParentNode();
- requestElement.getOwnerDocument().replaceChild(signatureEnvironment.getElement(), requestElement);
- }
-
- QCSSCDResult qcsscdresult = new QCSSCDResult();
- String tpID = profile.getCertificateValidationProfile().getTrustStoreProfile().getId();
- ConfigurationProvider config = ConfigurationProvider.getInstance();
- TrustProfile tp = config.getTrustProfile(tpID);
-
- // verify the signature
- try {
- XMLSignatureVerificationModule module = XMLSignatureVerificationModuleFactory.getInstance();
-
- module.setLog(new IaikLog(loggingCtx.getNodeID()));
-
- if(request.getExtendedValidaiton()) {
- result = module.verifyXAdESSignature(xmlSignature, dataObjectList, profile, signingTime,
- new TransactionId(context.getTransactionID()));
- plainResult = result.getXMLSignatureVerificationResult();
- } else {
- plainResult = module.verifySignature(xmlSignature, dataObjectList, profile, signingTime,
- new TransactionId(context.getTransactionID()));
- }
- } catch (IAIKException e) {
- MOAException moaException = IaikExceptionMapper.getInstance().map(e);
- throw moaException;
- } catch (IAIKRuntimeException e) {
- MOAException moaException = IaikExceptionMapper.getInstance().map(e);
- throw moaException;
- }
-
- ExtendedCertificateCheckResult extCheckResult;
- if(result != null) {
- List adesResults = null;//
-
- adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult());
-
- if (Logger.isDebugEnabled()) {
- if (adesResults != null) {
- Iterator adesIterator = adesResults.iterator();
- while (adesIterator.hasNext()) {
- Logger.debug("ADES Formresults: " + adesIterator.next().toString());
- }
- }
- }
-
- responseBuilder.setAdESFormResults(adesResults);
-
- try {
- //Logger.info("Extended Validation Report: " + result.getName());
- Logger.debug("Extended Validation Code: " + result.getResultCode().toString());
- Logger.debug("Extended Validation Info: " + result.getInfo());
-
- extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode());
- responseBuilder.setExtendedCertificateCheckResult(extCheckResult);
-
- } catch (NullPointerException e) {
- Logger.info("No extendend validation result available.");
- }
- }
- // QC/SSCD check
- List list = plainResult.getCertificateValidationResult().getCertificateChain();
- if (list != null) {
- X509Certificate[] chain = new X509Certificate[list.size()];
-
- Iterator it = list.iterator();
- int i = 0;
- while (it.hasNext()) {
- chain[i] = (X509Certificate) it.next();
- i++;
- }
-
- qcsscdresult = CertificateUtils.checkQCSSCD(chain, plainResult.getSigningTime(), tp.isTSLEnabled(), config);
- }
-
- // get signer certificate issuer country code
- String issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0));
-
- // swap back in the request as root document
- if (requestElement != signatureEnvironment.getElement()) {
- requestElement.getOwnerDocument().replaceChild(requestElement, signatureEnvironment.getElement());
- signatureEnvironmentParent.appendChild(signatureEnvironment.getElement());
- }
-
- // check the result
- signatureManifestCheck = validateSignatureManifest(request, plainResult,
- profile);
-
- // Check if signer certificate is in trust profile's allowed signer
- // certificates pool
- TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId());
- CheckResult certificateCheck = validateSignerCertificate(plainResult,
- trustProfile);
-
- // build the response
- responseBuilder.setResult(plainResult, profile, signatureManifestCheck,
- certificateCheck, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), qcsscdresult.isSSCD(),
- qcsscdresult.isSSCDSourceTSL(), tp.isTSLEnabled(), issuerCountryCode, qcsscdresult.getTslInfos(), request.getExtendedValidaiton());
- return responseBuilder.getResponse();
- }
-
- /**
- * Checks if the signer certificate matches one of the allowed signer
- * certificates specified in the provided <code>trustProfile</code>.
- *
- * @param result
- * The result produced by the
- * <code>XMLSignatureVerificationModule</code>.
- *
- * @param trustProfile
- * The trust profile the signer certificate is validated against.
- *
- * @return The overal result of the certificate validation for the signer
- * certificate.
- *
- * @throws MOAException
- * if one of the signer certificates specified in the
- * <code>trustProfile</code> cannot be read from the file
- * system.
- */
- private CheckResult validateSignerCertificate(XMLSignatureVerificationResult result,
- TrustProfile trustProfile)
- throws MOAException {
- MessageProvider msg = MessageProvider.getInstance();
-
- int resultCode = result.getCertificateValidationResult().getValidationResultCode().intValue();
-
- if (resultCode == 0 && trustProfile.getSignerCertsUri() != null) {
- X509Certificate signerCertificate = (X509Certificate) result.getCertificateValidationResult()
- .getCertificateChain().get(0);
-
- File signerCertsDir = null;
- try {
- signerCertsDir = new File(new URI(trustProfile.getSignerCertsUri()).getPath());
- } catch (URIException e) {
- throw new MOASystemException("2900", null, e); // Should not
- // happen,
- // already
- // checked at
- // loading the
- // MOA
- // configuration
- }
-
- File[] files = signerCertsDir.listFiles();
- if (files == null)
- resultCode = 1;
- int i;
- for (i = 0; i < files.length; i++) {
- if (!files[i].isDirectory()) {
- FileInputStream currentFIS = null;
- try {
- currentFIS = new FileInputStream(files[i]);
- } catch (FileNotFoundException e) {
- throw new MOASystemException("2900", null, e);
- }
-
- try {
- X509Certificate currentCert = new X509Certificate(currentFIS);
- currentFIS.close();
- if (currentCert.equals(signerCertificate))
- break;
- } catch (Exception e) {
- // Simply ignore file if it cannot be interpreted as
- // certificate
- String logMsg = msg.getMessage("invoker.03",
- new Object[] { trustProfile.getId(), files[i].getName() });
- Logger.warn(logMsg);
- try {
- currentFIS.close();
- } catch (IOException e1) {
- // If clean-up fails, do nothing
- }
- }
- }
- }
- if (i >= files.length) {
- resultCode = 1; // No signer certificate from the trustprofile
- // pool matches the actual signer certificate
- }
- }
-
- SPSSFactory factory = SPSSFactory.getInstance();
- return factory.createCheckResult(resultCode, null);
- }
-
- /**
- * Select the <code>dsig:Signature</code> DOM element within the signature
- * environment.
- *
- * @param signatureEnvironment
- * The signature environment containing the
- * <code>dsig:Signature</code>.
- * @param request
- * The <code>VerifyXMLSignatureRequest</code> containing the
- * signature environment.
- * @return The <code>dsig:Signature</code> element wrapped in a
- * <code>XMLSignature</code> object.
- * @throws MOAApplicationException
- * An error occurred locating the <code>dsig:Signature</code>.
- */
- private XMLSignature buildXMLSignature(XMLDataObject signatureEnvironment, VerifyXMLSignatureRequest request)
- throws MOAApplicationException {
-
- VerifySignatureLocation signatureLocation = request.getSignatureInfo().getVerifySignatureLocation();
- Element signatureParent;
-
- // evaluate the VerifySignatureLocation to get the signature parent
- signatureParent = InvokerUtils.evaluateSignatureLocation(signatureEnvironment.getElement(), signatureLocation);
-
- // check for signatureParent to be a dsig:Signature element
- if (!"Signature".equals(signatureParent.getLocalName())
- || !Constants.DSIG_NS_URI.equals(signatureParent.getNamespaceURI())) {
- throw new MOAApplicationException("2266", null);
- }
-
- return new XMLSignatureImpl(signatureParent);
- }
-
- /**
- * Build the supplemental data objects contained in the
- * <code>VerifyXMLSignatureRequest</code>.
- *
- * @param supplements
- * A <code>List</code> of <code>XMLDataObjectAssociation</code>s
- * containing the supplement data.
- * @return A <code>List</code> of <code>DataObject</code>s representing the
- * supplemental data objects.
- * @throws MOASystemException
- * A system error occurred building one of the data objects.
- * @throws MOAApplicationException
- * An error occurred building one of the data objects.
- */
- private List buildDataObjectList(List supplements) throws MOASystemException, MOAApplicationException {
- List dataObjectList = new ArrayList();
-
- DataObjectFactory factory = DataObjectFactory.getInstance();
- DataObject dataObject;
- Iterator iter;
-
- if (supplements != null) {
- for (iter = supplements.iterator(); iter.hasNext();) {
- XMLDataObjectAssociation supplement = (XMLDataObjectAssociation) iter.next();
- dataObject = factory.createFromXmlDataObjectAssociation(supplement, true, false);
- dataObjectList.add(dataObject);
- }
- }
-
- return dataObjectList;
-
- }
-
- /**
- * Get the supplemental data contained in the
- * <code>VerifyXMLSignatureRequest</code>.
- *
- * @param request
- * The <code>VerifyXMLSignatureRequest</code> containing the
- * supplemental data.
- * @return A <code>List</code> of <code>XMLDataObjectAssociation</code>
- * objects containing the supplemental data.
- * @throws MOAApplicationException
- * An error occurred resolving one of the supplement profiles.
- */
- private List getSupplements(VerifyXMLSignatureRequest request) throws MOAApplicationException {
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- List supplementProfiles = request.getSupplementProfiles();
-
- List supplements = new ArrayList();
-
- if (supplementProfiles != null) {
-
- List mappedProfiles = ProfileMapper.mapSupplementProfiles(supplementProfiles, config);
- Iterator iter;
-
- for (iter = mappedProfiles.iterator(); iter.hasNext();) {
- SupplementProfileExplicit profile = (SupplementProfileExplicit) iter.next();
- supplements.add(profile.getSupplementProfile());
- }
-
- }
- return supplements;
- }
-
- /**
- * Perform additional validations of the
- * <code>XMLSignatureVerificationResult</code>.
- *
- * <p>
- * In particular, it is verified that:
- * <ul>
- * <li>Each <code>ReferenceData</code> object contains transformation chain
- * that matches one of the <code>Transforms</code> given in the
- * corresponding <code>SignatureManifestCheckParams/ReferenceInfo</code>
- * </li>
- * <li>The hash values of the <code>TransformParameter</code>s are valid.
- * </li>
- * </ul>
- * </p>
- *
- * @param request
- * The <code>VerifyXMLSignatureRequest</code> containing the
- * signature to verify.
- * @param result
- * The result produced by
- * <code>XMLSignatureVerificationModule</code>.
- * @param profile
- * The profile used for validating the <code>request</code>.
- * @return The result of additional validations of the signature manifest.
- * @throws MOAApplicationException
- * Post-validation of the
- * <code>XMLSignatureVerificaitonResult</code> failed.
- */
- private ReferencesCheckResult validateSignatureManifest(VerifyXMLSignatureRequest request,
- XMLSignatureVerificationResult result, XMLSignatureVerificationProfile profile)
- throws MOAApplicationException {
-
- SPSSFactory factory = SPSSFactory.getInstance();
- MessageProvider msg = MessageProvider.getInstance();
-
- // validate that each ReferenceData object contains transforms specified
- // in the corresponding SignatureManifestCheckParams/ReferenceInfo
- if (request.getSignatureManifestCheckParams() != null) {
- List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos();
- List refDatas = filterReferenceInfos(result.getReferenceDataList());
- List failedReferencesList = new ArrayList();
- Iterator refInfoIter;
- Iterator refDataIter;
-
- if (refInfos.size() != refDatas.size()) {
- return factory.createReferencesCheckResult(1, null);
- }
-
- refInfoIter = refInfos.iterator();
- refDataIter = filterReferenceInfos(result.getReferenceDataList()).iterator();
-
- while (refInfoIter.hasNext()) {
- ReferenceInfo refInfo = (ReferenceInfo) refInfoIter.next();
- ReferenceData refData = (ReferenceData) refDataIter.next();
- List transforms = buildTransformsList(refInfo);
- boolean found = false;
- Iterator trIter;
-
- for (trIter = transforms.iterator(); trIter.hasNext() && !found;) {
- found = trIter.next().equals(refData.getTransformationList());
- }
-
- if (!found) {
- Integer refIndex = new Integer(refData.getReferenceIndex());
- String logMsg = msg.getMessage("invoker.01", new Object[] { refIndex });
-
- failedReferencesList.add(refIndex);
- Logger.debug(new LogMsg(logMsg));
- }
- }
-
- if (!failedReferencesList.isEmpty()) {
- // at least one reference failed - return their indexes and
- // check code 1
- int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList);
- ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null, failedReferences);
-
- return factory.createReferencesCheckResult(1, checkInfo);
- }
- }
-
- // validate the hashes contained in all the ReferenceInfo objects of the
- // security layer manifest
- if (request.getSignatureManifestCheckParams() != null && result.containsSecurityLayerManifest()) {
- Map hashValues = buildTransformParameterHashValues(request);
- Set transformParameterURIs = buildTransformParameterURIs(profile.getTransformationSupplements());
- List referenceInfoList = result.getSecurityLayerManifest().getReferenceDataList();
- Iterator refIter;
-
- for (refIter = referenceInfoList.iterator(); refIter.hasNext();) {
- iaik.server.modules.xmlverify.ReferenceInfo ref = (iaik.server.modules.xmlverify.ReferenceInfo) refIter
- .next();
- byte[] hash = (byte[]) hashValues.get(ref.getURI());
-
- if (!transformParameterURIs.contains(ref.getURI())
- || (hash != null && !Arrays.equals(hash, ref.getHashValue()))) {
-
- // the transform parameter doesn't exist or the hashs do not
- // match
- // return the index of the failed reference and check code 1
- int[] failedReferences = new int[] { ref.getReferenceIndex() };
- ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null,
- failedReferences);
- String logMsg = msg.getMessage("invoker.02", new Object[] { new Integer(ref.getReferenceIndex()) });
-
- Logger.debug(new LogMsg(logMsg));
-
- return factory.createReferencesCheckResult(1, checkInfo);
- }
- }
- }
-
- return factory.createReferencesCheckResult(0, null);
- }
-
- /**
- * Get all <code>Transform</code>s contained in all the
- * <code>VerifyTransformsInfoProfile</code>s of the given
- * <code>ReferenceInfo</code>.
- *
- * @param refInfo
- * The <code>ReferenceInfo</code> object containing the
- * transformations.
- * @return A <code>List</code> of <code>List</code>s. Each of the
- * <code>List</code>s contains <code>Transformation</code> objects.
- * @throws MOAApplicationException
- * An error occurred building one of the
- * <code>Transformation</code>s.
- */
- private List buildTransformsList(ReferenceInfo refInfo) throws MOAApplicationException {
-
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- List profiles = refInfo.getVerifyTransformsInfoProfiles();
- List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config);
- List transformsList = new ArrayList();
- TransformationFactory factory = TransformationFactory.getInstance();
- Iterator iter;
-
- for (iter = mappedProfiles.iterator(); iter.hasNext();) {
- VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) iter.next();
- List transforms = profile.getTransforms();
-
- if (transforms != null) {
- transformsList.add(factory.createTransformationList(transforms));
- }
- }
-
- return transformsList;
- }
-
- /**
- * Build the <code>Set</code> of all <code>TransformParameter</code> URIs.
- *
- * @param transformParameters
- * The <code>List</code> of <code>TransformParameter</code>s, as
- * provided to the verification.
- * @return The <code>Set</code> of all <code>TransformParameter</code> URIs.
- */
- private Set buildTransformParameterURIs(List transformParameters) {
- Set uris = new HashSet();
- Iterator iter;
-
- for (iter = transformParameters.iterator(); iter.hasNext();) {
- DataObject transformParameter = (DataObject) iter.next();
- uris.add(transformParameter.getURI());
- }
-
- return uris;
- }
-
- /**
- * Build a mapping between <code>TransformParameter</code> URIs (a
- * <code>String</code> and <code>dsig:HashValue</code> (a
- * <code>byte[]</code>).
- *
- * @param request
- * The <code>VerifyXMLSignatureRequest</code>.
- * @return Map The resulting mapping.
- * @throws MOAApplicationException
- * An error occurred accessing one of the profiles.
- */
- private Map buildTransformParameterHashValues(VerifyXMLSignatureRequest request) throws MOAApplicationException {
-
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- Map hashValues = new HashMap();
- List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos();
- Iterator refIter;
-
- for (refIter = refInfos.iterator(); refIter.hasNext();) {
- ReferenceInfo refInfo = (ReferenceInfo) refIter.next();
- List profiles = refInfo.getVerifyTransformsInfoProfiles();
- List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config);
- Iterator prIter;
-
- for (prIter = mappedProfiles.iterator(); prIter.hasNext();) {
- VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) prIter.next();
- List trParameters = profile.getTransformParameters();
- Iterator trIter;
-
- for (trIter = trParameters.iterator(); trIter.hasNext();) {
- TransformParameter transformParameter = (TransformParameter) trIter.next();
- String uri = transformParameter.getURI();
-
- if (transformParameter.getTransformParameterType() == TransformParameter.HASH_TRANSFORMPARAMETER) {
- hashValues.put(uri, ((TransformParameterHash) transformParameter).getDigestValue());
- }
-
- }
- }
- }
- return hashValues;
- }
-
- /**
- * Filter the <code>ReferenceInfo</code>s returned by the
- * <code>VerifyXMLSignatureResult</code> for comparison with the
- * <code>ReferenceInfo</code> elements in the request.
- *
- * @param referenceInfos
- * The <code>ReferenceInfo</code>s from the
- * <code>VerifyXMLSignatureResult</code>.
- * @return A <code>List</code> of all <code>ReferenceInfo</code>s whose type
- * is not a XMLDsig manifest, Security Layer manifest, or ETSI
- * signed property.
- */
- private List filterReferenceInfos(List referenceInfos) {
- List filtered = new ArrayList();
- Iterator iter;
-
- for (iter = referenceInfos.iterator(); iter.hasNext();) {
- iaik.server.modules.xmlverify.ReferenceInfo refInfo = (iaik.server.modules.xmlverify.ReferenceInfo) iter
- .next();
- String refType = refInfo.getReferenceType();
-
- if (refType == null || !FILTERED_REF_TYPES.contains(refType)) {
- filtered.add(refInfo);
- }
- }
-
- return filtered;
- }
-
- private List getAdESResult(ExtendedXMLSignatureVerificationResult adesFormVerification) throws ConfigurationException {
- if (adesFormVerification == null) {
- // no form information
- return null;
- }
-
- List adesList = new ArrayList();
-
- /*
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA),
- SignatureVerificationProfile.LEVEL_LTA, adesList);
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT),
- SignatureVerificationProfile.LEVEL_LT, adesList);
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T),
- SignatureVerificationProfile.LEVEL_T, adesList);
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B),
- SignatureVerificationProfile.LEVEL_B, adesList);
- */
-
- AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.LONG_TERM_VALIDATION),
- SignatureVerificationProfile.LEVEL_LT, adesList);
- AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(AdESConstants.ADES_T_VALIDATION),
- SignatureVerificationProfile.LEVEL_T, adesList);
- AdESResultUtils.checkSubResult(adesFormVerification.getSubResult("basic report"),
- SignatureVerificationProfile.LEVEL_B, adesList);
-
- return adesList;
- }
+ /** The single instance of this class. */
+ private static XMLSignatureVerificationInvoker instance = null;
+
+ private static Set FILTERED_REF_TYPES;
+
+ static {
+ FILTERED_REF_TYPES = new HashSet();
+ FILTERED_REF_TYPES.add(DsigManifest.XML_DSIG_MANIFEST_TYPE);
+ FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE);
+ FILTERED_REF_TYPES.add(SecurityLayerManifest.SECURITY_LAYER_MANIFEST_TYPE_OLD);
+ FILTERED_REF_TYPES.add(XMLConstants.NAMESPACE_ETSI_STRING + "SignedProperties");
+ FILTERED_REF_TYPES.add("http://uri.etsi.org/01903#SignedProperties");
+ }
+
+ /**
+ * Get the single instance of this class.
+ *
+ * @return The single instance of this class.
+ */
+ public static synchronized XMLSignatureVerificationInvoker getInstance() {
+ if (instance == null) {
+ instance = new XMLSignatureVerificationInvoker();
+ }
+ return instance;
+ }
+
+ /**
+ * Create a new <code>XMLSignatureCreationInvoker</code>.
+ *
+ * Protected to disallow multiple instances.
+ */
+ protected XMLSignatureVerificationInvoker() {
+ }
+
+ /**
+ * Process the <code>VerifyXMLSignatureRequest<code> message and invoke the
+ * <code>XMLSignatureVerificationModule</code>.
+ *
+ * @param request A <code>VerifyXMLSignatureRequest<code> API object
+ * containing the data for verifying an XML signature.
+ * &#64;return A <code>VerifyXMLSignatureResponse</code> containing the answert
+ * to the <code>VerifyXMLSignatureRequest</code>. MOA schema
+ * definition.
+ * @throws MOAException An error occurred during signature verification.
+ */
+ public VerifyXMLSignatureResponse verifyXMLSignature(VerifyXMLSignatureRequest request)
+ throws MOAException {
+
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final LoggingContext loggingCtx = LoggingContextManager.getInstance().getLoggingContext();
+ final XMLSignatureVerificationProfileFactory profileFactory = new XMLSignatureVerificationProfileFactory(
+ request);
+ final VerifyXMLSignatureResponseBuilder responseBuilder = new VerifyXMLSignatureResponseBuilder();
+ ExtendedXMLSignatureVerificationResult result = null;
+ XMLSignatureVerificationResult plainResult;
+ XMLSignatureVerificationProfile profile;
+ ReferencesCheckResult signatureManifestCheck;
+ DataObjectFactory dataObjFactory;
+ XMLDataObject signatureEnvironment;
+ Node signatureEnvironmentParent = null;
+ Element requestElement = null;
+ XMLSignature xmlSignature;
+ Date signingTime;
+ List supplements;
+ List dataObjectList;
+
+ // get the supplements
+ supplements = getSupplements(request);
+
+ // build XMLSignature
+ dataObjFactory = DataObjectFactory.getInstance();
+ signatureEnvironment = dataObjFactory
+ .createSignatureEnvironment(request.getSignatureInfo().getVerifySignatureEnvironment(), supplements);
+ xmlSignature = buildXMLSignature(signatureEnvironment, request);
+
+ // build the list of DataObjects
+ dataObjectList = buildDataObjectList(supplements);
+
+ // build profile
+ profile = profileFactory.createProfile();
+
+ // get the signingTime
+ signingTime = request.getDateTime();
+
+ // make the signature environment the root of the document, if it is not
+ // a
+ // separate document anyway; this is done to assure that
+ // canonicalization
+ // of the signature environment contains the correct namespace
+ // declarations
+ requestElement = signatureEnvironment.getElement().getOwnerDocument().getDocumentElement();
+ if (requestElement != signatureEnvironment.getElement()) {
+ signatureEnvironmentParent = signatureEnvironment.getElement().getParentNode();
+ requestElement.getOwnerDocument().replaceChild(signatureEnvironment.getElement(), requestElement);
+ }
+
+ QCSSCDResult qcsscdresult = new QCSSCDResult();
+ final String tpID = profile.getCertificateValidationProfile().getTrustStoreProfile().getId();
+ final ConfigurationProvider config = ConfigurationProvider.getInstance();
+ final TrustProfile tp = config.getTrustProfile(tpID);
+
+ // verify the signature
+ try {
+ final XMLSignatureVerificationModule module = XMLSignatureVerificationModuleFactory.getInstance();
+
+ module.setLog(new IaikLog(loggingCtx.getNodeID()));
+
+ if (request.getExtendedValidaiton()) {
+ result = module.verifyXAdESSignature(xmlSignature, dataObjectList, profile, signingTime,
+ new TransactionId(context.getTransactionID()));
+ plainResult = result.getXMLSignatureVerificationResult();
+ } else {
+ plainResult = module.verifySignature(xmlSignature, dataObjectList, profile, signingTime,
+ new TransactionId(context.getTransactionID()));
+ }
+ } catch (final IAIKException e) {
+ final MOAException moaException = IaikExceptionMapper.getInstance().map(e);
+ throw moaException;
+ } catch (final IAIKRuntimeException e) {
+ final MOAException moaException = IaikExceptionMapper.getInstance().map(e);
+ throw moaException;
+ }
+
+ ExtendedCertificateCheckResult extCheckResult;
+ if (result != null) {
+ List adesResults = null;//
+
+ adesResults = AdESResultUtils.getAdESResult(result.getFormVerificationResult());
+
+ if (Logger.isDebugEnabled()) {
+ if (adesResults != null) {
+ final Iterator adesIterator = adesResults.iterator();
+ while (adesIterator.hasNext()) {
+ Logger.debug("ADES Formresults: " + adesIterator.next().toString());
+ }
+ }
+ }
+
+ responseBuilder.setAdESFormResults(adesResults);
+
+ try {
+ // Logger.info("Extended Validation Report: " + result.getName());
+ Logger.debug("Extended Validation Code: " + result.getResultCode().toString());
+ Logger.debug("Extended Validation Info: " + result.getInfo());
+
+ extCheckResult = AdESResultUtils.getExtendedResult(result.getResultCode());
+ responseBuilder.setExtendedCertificateCheckResult(extCheckResult);
+
+ } catch (final NullPointerException e) {
+ Logger.info("No extendend validation result available.");
+ }
+ }
+ // QC/SSCD check
+ final List list = plainResult.getCertificateValidationResult().getCertificateChain();
+ if (list != null) {
+ final X509Certificate[] chain = new X509Certificate[list.size()];
+
+ final Iterator it = list.iterator();
+ int i = 0;
+ while (it.hasNext()) {
+ chain[i] = (X509Certificate) it.next();
+ i++;
+ }
+
+ qcsscdresult = CertificateUtils.checkQCSSCD(chain, plainResult.getSigningTime(), tp.isTSLEnabled(),
+ config);
+ }
+
+ // get signer certificate issuer country code
+ final String issuerCountryCode = CertificateUtils.getIssuerCountry((X509Certificate) list.get(0));
+
+ // swap back in the request as root document
+ if (requestElement != signatureEnvironment.getElement()) {
+ requestElement.getOwnerDocument().replaceChild(requestElement, signatureEnvironment.getElement());
+ signatureEnvironmentParent.appendChild(signatureEnvironment.getElement());
+ }
+
+ // check the result
+ signatureManifestCheck = validateSignatureManifest(request, plainResult,
+ profile);
+
+ // Check if signer certificate is in trust profile's allowed signer
+ // certificates pool
+ final TrustProfile trustProfile = context.getConfiguration().getTrustProfile(request.getTrustProfileId());
+ final CheckResult certificateCheck = validateSignerCertificate(plainResult,
+ trustProfile);
+
+ // build the response
+ responseBuilder.setResult(plainResult, profile, signatureManifestCheck,
+ certificateCheck, qcsscdresult.isQC(), qcsscdresult.isQCSourceTSL(), qcsscdresult.isSSCD(),
+ qcsscdresult.isSSCDSourceTSL(), tp.isTSLEnabled(), issuerCountryCode, qcsscdresult.getTslInfos(),
+ request.getExtendedValidaiton());
+ return responseBuilder.getResponse();
+ }
+
+ /**
+ * Checks if the signer certificate matches one of the allowed signer
+ * certificates specified in the provided <code>trustProfile</code>.
+ *
+ * @param result The result produced by the
+ * <code>XMLSignatureVerificationModule</code>.
+ *
+ * @param trustProfile The trust profile the signer certificate is validated
+ * against.
+ *
+ * @return The overal result of the certificate validation for the signer
+ * certificate.
+ *
+ * @throws MOAException if one of the signer certificates specified in the
+ * <code>trustProfile</code> cannot be read from the file
+ * system.
+ */
+ private CheckResult validateSignerCertificate(XMLSignatureVerificationResult result,
+ TrustProfile trustProfile)
+ throws MOAException {
+ final MessageProvider msg = MessageProvider.getInstance();
+
+ int resultCode = result.getCertificateValidationResult().getValidationResultCode().intValue();
+
+ if (resultCode == 0 && trustProfile.getSignerCertsUri() != null) {
+ final X509Certificate signerCertificate = (X509Certificate) result.getCertificateValidationResult()
+ .getCertificateChain().get(0);
+
+ File signerCertsDir = null;
+ try {
+ signerCertsDir = new File(new URI(trustProfile.getSignerCertsUri()).getPath());
+ } catch (final URIException e) {
+ throw new MOASystemException("2900", null, e); // Should not
+ // happen,
+ // already
+ // checked at
+ // loading the
+ // MOA
+ // configuration
+ }
+
+ final File[] files = signerCertsDir.listFiles();
+ if (files == null) {
+ resultCode = 1;
+ }
+ int i;
+ for (i = 0; i < files.length; i++) {
+ if (!files[i].isDirectory()) {
+ FileInputStream currentFIS = null;
+ try {
+ currentFIS = new FileInputStream(files[i]);
+ } catch (final FileNotFoundException e) {
+ throw new MOASystemException("2900", null, e);
+ }
+
+ try {
+ final X509Certificate currentCert = new X509Certificate(currentFIS);
+ currentFIS.close();
+ if (currentCert.equals(signerCertificate)) {
+ break;
+ }
+ } catch (final Exception e) {
+ // Simply ignore file if it cannot be interpreted as
+ // certificate
+ final String logMsg = msg.getMessage("invoker.03",
+ new Object[] { trustProfile.getId(), files[i].getName() });
+ Logger.warn(logMsg);
+ try {
+ currentFIS.close();
+ } catch (final IOException e1) {
+ // If clean-up fails, do nothing
+ }
+ }
+ }
+ }
+ if (i >= files.length) {
+ resultCode = 1; // No signer certificate from the trustprofile
+ // pool matches the actual signer certificate
+ }
+ }
+
+ final SPSSFactory factory = SPSSFactory.getInstance();
+ return factory.createCheckResult(resultCode, null);
+ }
+
+ /**
+ * Select the <code>dsig:Signature</code> DOM element within the signature
+ * environment.
+ *
+ * @param signatureEnvironment The signature environment containing the
+ * <code>dsig:Signature</code>.
+ * @param request The <code>VerifyXMLSignatureRequest</code>
+ * containing the signature environment.
+ * @return The <code>dsig:Signature</code> element wrapped in a
+ * <code>XMLSignature</code> object.
+ * @throws MOAApplicationException An error occurred locating the
+ * <code>dsig:Signature</code>.
+ */
+ private XMLSignature buildXMLSignature(XMLDataObject signatureEnvironment,
+ VerifyXMLSignatureRequest request)
+ throws MOAApplicationException {
+
+ final VerifySignatureLocation signatureLocation = request.getSignatureInfo().getVerifySignatureLocation();
+ Element signatureParent;
+
+ // evaluate the VerifySignatureLocation to get the signature parent
+ signatureParent = InvokerUtils.evaluateSignatureLocation(signatureEnvironment.getElement(),
+ signatureLocation);
+
+ // check for signatureParent to be a dsig:Signature element
+ if (!"Signature".equals(signatureParent.getLocalName())
+ || !Constants.DSIG_NS_URI.equals(signatureParent.getNamespaceURI())) {
+ throw new MOAApplicationException("2266", null);
+ }
+
+ return new XMLSignatureImpl(signatureParent);
+ }
+
+ /**
+ * Build the supplemental data objects contained in the
+ * <code>VerifyXMLSignatureRequest</code>.
+ *
+ * @param supplements A <code>List</code> of
+ * <code>XMLDataObjectAssociation</code>s containing the
+ * supplement data.
+ * @return A <code>List</code> of <code>DataObject</code>s representing the
+ * supplemental data objects.
+ * @throws MOASystemException A system error occurred building one of the
+ * data objects.
+ * @throws MOAApplicationException An error occurred building one of the data
+ * objects.
+ */
+ private List buildDataObjectList(List supplements) throws MOASystemException, MOAApplicationException {
+ final List dataObjectList = new ArrayList();
+
+ final DataObjectFactory factory = DataObjectFactory.getInstance();
+ DataObject dataObject;
+ Iterator iter;
+
+ if (supplements != null) {
+ for (iter = supplements.iterator(); iter.hasNext();) {
+ final XMLDataObjectAssociation supplement = (XMLDataObjectAssociation) iter.next();
+ dataObject = factory.createFromXmlDataObjectAssociation(supplement, true, false);
+ dataObjectList.add(dataObject);
+ }
+ }
+
+ return dataObjectList;
+
+ }
+
+ /**
+ * Get the supplemental data contained in the
+ * <code>VerifyXMLSignatureRequest</code>.
+ *
+ * @param request The <code>VerifyXMLSignatureRequest</code> containing the
+ * supplemental data.
+ * @return A <code>List</code> of <code>XMLDataObjectAssociation</code> objects
+ * containing the supplemental data.
+ * @throws MOAApplicationException An error occurred resolving one of the
+ * supplement profiles.
+ */
+ private List getSupplements(VerifyXMLSignatureRequest request) throws MOAApplicationException {
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final List supplementProfiles = request.getSupplementProfiles();
+
+ final List supplements = new ArrayList();
+
+ if (supplementProfiles != null) {
+
+ final List mappedProfiles = ProfileMapper.mapSupplementProfiles(supplementProfiles, config);
+ Iterator iter;
+
+ for (iter = mappedProfiles.iterator(); iter.hasNext();) {
+ final SupplementProfileExplicit profile = (SupplementProfileExplicit) iter.next();
+ supplements.add(profile.getSupplementProfile());
+ }
+
+ }
+ return supplements;
+ }
+
+ /**
+ * Perform additional validations of the
+ * <code>XMLSignatureVerificationResult</code>.
+ *
+ * <p>
+ * In particular, it is verified that:
+ * <ul>
+ * <li>Each <code>ReferenceData</code> object contains transformation chain that
+ * matches one of the <code>Transforms</code> given in the corresponding
+ * <code>SignatureManifestCheckParams/ReferenceInfo</code></li>
+ * <li>The hash values of the <code>TransformParameter</code>s are valid.</li>
+ * </ul>
+ * </p>
+ *
+ * @param request The <code>VerifyXMLSignatureRequest</code> containing the
+ * signature to verify.
+ * @param result The result produced by
+ * <code>XMLSignatureVerificationModule</code>.
+ * @param profile The profile used for validating the <code>request</code>.
+ * @return The result of additional validations of the signature manifest.
+ * @throws MOAApplicationException Post-validation of the
+ * <code>XMLSignatureVerificaitonResult</code>
+ * failed.
+ */
+ private ReferencesCheckResult validateSignatureManifest(VerifyXMLSignatureRequest request,
+ XMLSignatureVerificationResult result, XMLSignatureVerificationProfile profile)
+ throws MOAApplicationException {
+
+ final SPSSFactory factory = SPSSFactory.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
+
+ // validate that each ReferenceData object contains transforms specified
+ // in the corresponding SignatureManifestCheckParams/ReferenceInfo
+ if (request.getSignatureManifestCheckParams() != null) {
+ final List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos();
+ final List refDatas = filterReferenceInfos(result.getReferenceDataList());
+ final List failedReferencesList = new ArrayList();
+ Iterator refInfoIter;
+ Iterator refDataIter;
+
+ if (refInfos.size() != refDatas.size()) {
+ return factory.createReferencesCheckResult(1, null);
+ }
+
+ refInfoIter = refInfos.iterator();
+ refDataIter = filterReferenceInfos(result.getReferenceDataList()).iterator();
+
+ while (refInfoIter.hasNext()) {
+ final ReferenceInfo refInfo = (ReferenceInfo) refInfoIter.next();
+ final ReferenceData refData = (ReferenceData) refDataIter.next();
+ final List transforms = buildTransformsList(refInfo);
+ boolean found = false;
+ Iterator trIter;
+
+ for (trIter = transforms.iterator(); trIter.hasNext() && !found;) {
+ found = trIter.next().equals(refData.getTransformationList());
+ }
+
+ if (!found) {
+ final Integer refIndex = new Integer(refData.getReferenceIndex());
+ final String logMsg = msg.getMessage("invoker.01", new Object[] { refIndex });
+
+ failedReferencesList.add(refIndex);
+ Logger.debug(new LogMsg(logMsg));
+ }
+ }
+
+ if (!failedReferencesList.isEmpty()) {
+ // at least one reference failed - return their indexes and
+ // check code 1
+ final int[] failedReferences = CollectionUtils.toIntArray(failedReferencesList);
+ final ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null,
+ failedReferences);
+
+ return factory.createReferencesCheckResult(1, checkInfo);
+ }
+ }
+
+ // validate the hashes contained in all the ReferenceInfo objects of the
+ // security layer manifest
+ if (request.getSignatureManifestCheckParams() != null && result.containsSecurityLayerManifest()) {
+ final Map hashValues = buildTransformParameterHashValues(request);
+ final Set transformParameterURIs = buildTransformParameterURIs(profile.getTransformationSupplements());
+ final List referenceInfoList = result.getSecurityLayerManifest().getReferenceDataList();
+ Iterator refIter;
+
+ for (refIter = referenceInfoList.iterator(); refIter.hasNext();) {
+ final iaik.server.modules.xmlverify.ReferenceInfo ref =
+ (iaik.server.modules.xmlverify.ReferenceInfo) refIter
+ .next();
+ final byte[] hash = (byte[]) hashValues.get(ref.getURI());
+
+ if (!transformParameterURIs.contains(ref.getURI())
+ || hash != null && !Arrays.equals(hash, ref.getHashValue())) {
+
+ // the transform parameter doesn't exist or the hashs do not
+ // match
+ // return the index of the failed reference and check code 1
+ final int[] failedReferences = new int[] { ref.getReferenceIndex() };
+ final ReferencesCheckResultInfo checkInfo = factory.createReferencesCheckResultInfo(null,
+ failedReferences);
+ final String logMsg = msg.getMessage("invoker.02", new Object[] { new Integer(ref
+ .getReferenceIndex()) });
+
+ Logger.debug(new LogMsg(logMsg));
+
+ return factory.createReferencesCheckResult(1, checkInfo);
+ }
+ }
+ }
+
+ return factory.createReferencesCheckResult(0, null);
+ }
+
+ /**
+ * Get all <code>Transform</code>s contained in all the
+ * <code>VerifyTransformsInfoProfile</code>s of the given
+ * <code>ReferenceInfo</code>.
+ *
+ * @param refInfo The <code>ReferenceInfo</code> object containing the
+ * transformations.
+ * @return A <code>List</code> of <code>List</code>s. Each of the
+ * <code>List</code>s contains <code>Transformation</code> objects.
+ * @throws MOAApplicationException An error occurred building one of the
+ * <code>Transformation</code>s.
+ */
+ private List buildTransformsList(ReferenceInfo refInfo) throws MOAApplicationException {
+
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final List profiles = refInfo.getVerifyTransformsInfoProfiles();
+ final List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config);
+ final List transformsList = new ArrayList();
+ final TransformationFactory factory = TransformationFactory.getInstance();
+ Iterator iter;
+
+ for (iter = mappedProfiles.iterator(); iter.hasNext();) {
+ final VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) iter.next();
+ final List transforms = profile.getTransforms();
+
+ if (transforms != null) {
+ transformsList.add(factory.createTransformationList(transforms));
+ }
+ }
+
+ return transformsList;
+ }
+
+ /**
+ * Build the <code>Set</code> of all <code>TransformParameter</code> URIs.
+ *
+ * @param transformParameters The <code>List</code> of
+ * <code>TransformParameter</code>s, as provided to
+ * the verification.
+ * @return The <code>Set</code> of all <code>TransformParameter</code> URIs.
+ */
+ private Set buildTransformParameterURIs(List transformParameters) {
+ final Set uris = new HashSet();
+ Iterator iter;
+
+ for (iter = transformParameters.iterator(); iter.hasNext();) {
+ final DataObject transformParameter = (DataObject) iter.next();
+ uris.add(transformParameter.getURI());
+ }
+
+ return uris;
+ }
+
+ /**
+ * Build a mapping between <code>TransformParameter</code> URIs (a
+ * <code>String</code> and <code>dsig:HashValue</code> (a <code>byte[]</code>).
+ *
+ * @param request The <code>VerifyXMLSignatureRequest</code>.
+ * @return Map The resulting mapping.
+ * @throws MOAApplicationException An error occurred accessing one of the
+ * profiles.
+ */
+ private Map buildTransformParameterHashValues(VerifyXMLSignatureRequest request)
+ throws MOAApplicationException {
+
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final Map hashValues = new HashMap();
+ final List refInfos = request.getSignatureManifestCheckParams().getReferenceInfos();
+ Iterator refIter;
+
+ for (refIter = refInfos.iterator(); refIter.hasNext();) {
+ final ReferenceInfo refInfo = (ReferenceInfo) refIter.next();
+ final List profiles = refInfo.getVerifyTransformsInfoProfiles();
+ final List mappedProfiles = ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config);
+ Iterator prIter;
+
+ for (prIter = mappedProfiles.iterator(); prIter.hasNext();) {
+ final VerifyTransformsInfoProfileExplicit profile = (VerifyTransformsInfoProfileExplicit) prIter
+ .next();
+ final List trParameters = profile.getTransformParameters();
+ Iterator trIter;
+
+ for (trIter = trParameters.iterator(); trIter.hasNext();) {
+ final TransformParameter transformParameter = (TransformParameter) trIter.next();
+ final String uri = transformParameter.getURI();
+
+ if (transformParameter.getTransformParameterType() == TransformParameter.HASH_TRANSFORMPARAMETER) {
+ hashValues.put(uri, ((TransformParameterHash) transformParameter).getDigestValue());
+ }
+
+ }
+ }
+ }
+ return hashValues;
+ }
+
+ /**
+ * Filter the <code>ReferenceInfo</code>s returned by the
+ * <code>VerifyXMLSignatureResult</code> for comparison with the
+ * <code>ReferenceInfo</code> elements in the request.
+ *
+ * @param referenceInfos The <code>ReferenceInfo</code>s from the
+ * <code>VerifyXMLSignatureResult</code>.
+ * @return A <code>List</code> of all <code>ReferenceInfo</code>s whose type is
+ * not a XMLDsig manifest, Security Layer manifest, or ETSI signed
+ * property.
+ */
+ private List filterReferenceInfos(List referenceInfos) {
+ final List filtered = new ArrayList();
+ Iterator iter;
+
+ for (iter = referenceInfos.iterator(); iter.hasNext();) {
+ final iaik.server.modules.xmlverify.ReferenceInfo refInfo =
+ (iaik.server.modules.xmlverify.ReferenceInfo) iter
+ .next();
+ final String refType = refInfo.getReferenceType();
+
+ if (refType == null || !FILTERED_REF_TYPES.contains(refType)) {
+ filtered.add(refInfo);
+ }
+ }
+
+ return filtered;
+ }
+
+ private List getAdESResult(ExtendedXMLSignatureVerificationResult adesFormVerification)
+ throws ConfigurationException {
+ if (adesFormVerification == null) {
+ // no form information
+ return null;
+ }
+
+ final List adesList = new ArrayList();
+
+ /*
+ * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile
+ * .LEVEL_LTA), SignatureVerificationProfile.LEVEL_LTA, adesList);
+ * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile
+ * .LEVEL_LT), SignatureVerificationProfile.LEVEL_LT, adesList);
+ * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile
+ * .LEVEL_T), SignatureVerificationProfile.LEVEL_T, adesList);
+ * checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile
+ * .LEVEL_B), SignatureVerificationProfile.LEVEL_B, adesList);
+ */
+
+ AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(
+ iaik.esi.sva.util.Constants.LONG_TERM_VALIDATION),
+ SignatureVerificationProfile.LEVEL_LT, adesList);
+ AdESResultUtils.checkSubResult(adesFormVerification.getSubResult(
+ iaik.esi.sva.util.Constants.ADES_T_VALIDATION),
+ SignatureVerificationProfile.LEVEL_T, adesList);
+ AdESResultUtils.checkSubResult(adesFormVerification.getSubResult("basic report"),
+ SignatureVerificationProfile.LEVEL_B, adesList);
+
+ return adesList;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java
index 3e4c712..7fcd0e9 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/invoke/XMLSignatureVerificationProfileFactory.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.invoke;
import java.util.ArrayList;
@@ -29,8 +28,6 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile;
-
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.xmlverify.ReferenceInfo;
@@ -43,26 +40,29 @@ import at.gv.egovernment.moa.spss.server.iaik.pki.PKIProfileImpl;
import at.gv.egovernment.moa.spss.server.iaik.xmlverify.XMLSignatureVerificationProfileImpl;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
+import iaik.server.modules.xmlverify.XMLSignatureVerificationProfile;
/**
* A factory to create a <code>XMLSignatureVerificationProfile</code> from a
* <code>VerifyXMLSignatureRequest</code>, based on the current MOA
* configuration.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class XMLSignatureVerificationProfileFactory {
- /** The <code>VerifyXMLSignatureRequest</code> for which to create profile
- * information. */
- private VerifyXMLSignatureRequest request;
+ /**
+ * The <code>VerifyXMLSignatureRequest</code> for which to create profile
+ * information.
+ */
+ private final VerifyXMLSignatureRequest request;
/**
* Create a new <code>XMLSignatureVerificationProfileFactory</code>.
- *
- * @param request The <code>VerifyXMLSignatureRequest</code> to extract
- * profile data from.
+ *
+ * @param request The <code>VerifyXMLSignatureRequest</code> to extract profile
+ * data from.
*/
public XMLSignatureVerificationProfileFactory(VerifyXMLSignatureRequest request) {
this.request = request;
@@ -71,19 +71,19 @@ public class XMLSignatureVerificationProfileFactory {
/**
* Create a <code>XMLSignatureCreationProfile</code> from the
* <code>VerifyXMLSignaturesRequest</code> and the current MOA configuration.
- *
+ *
* @return The <code>XMLSignatureVerificationProfile</code> containing
- * additional information for verifying an XML signature.
- * @throws MOASystemException A system error occurred building the profile.
+ * additional information for verifying an XML signature.
+ * @throws MOASystemException A system error occurred building the profile.
* @throws MOAApplicationException An error occurred building the profile.
*/
public XMLSignatureVerificationProfile createProfile()
- throws MOASystemException, MOAApplicationException {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- XMLSignatureVerificationProfileImpl profile =
- new XMLSignatureVerificationProfileImpl();
+ throws MOASystemException, MOAApplicationException {
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final XMLSignatureVerificationProfileImpl profile =
+ new XMLSignatureVerificationProfileImpl();
SignatureManifestCheckParams checkParams;
String trustProfileID;
@@ -93,49 +93,50 @@ public class XMLSignatureVerificationProfileFactory {
// set the certificate validation profile
trustProfileID = request.getTrustProfileId();
profile.setCertificateValidationProfile(
- new PKIProfileImpl(config, trustProfileID));
+ new PKIProfileImpl(config, trustProfileID));
// set whether hash input data is to be included
profile.setIncludeHashInputData(request.getReturnHashInputData());
// set the security layer manifest check parameters
- // and transformation supplements (if present)
+ // and transformation supplements (if present)
checkParams = request.getSignatureManifestCheckParams();
profile.setCheckSecurityLayerManifest(true);
- profile.setIncludeReferenceInputData(checkParams != null ? checkParams.getReturnReferenceInputData() : false);
+ profile.setIncludeReferenceInputData(checkParams != null ? checkParams.getReturnReferenceInputData()
+ : false);
if (checkParams != null) {
- List transformationSupplements;
- transformationSupplements = buildTransformationSupplements();
- profile.setTransformationSupplements(transformationSupplements);
+ List transformationSupplements;
+ transformationSupplements = buildTransformationSupplements();
+ profile.setTransformationSupplements(transformationSupplements);
} else {
- profile.setTransformationSupplements(Collections.EMPTY_LIST);
+ profile.setTransformationSupplements(Collections.EMPTY_LIST);
}
-
+
profile.setPermitFileURIs(config.getPermitFileURIs());
-
+
return profile;
}
/**
* Build supplemental data objects used in the transformations.
- *
+ *
* @return A <code>List</code> of <code>DataObject</code>s providing
- * supplemental data to the transformations.
- * @throws MOASystemException A system error occurred building one of the
- * transformations.
+ * supplemental data to the transformations.
+ * @throws MOASystemException A system error occurred building one of the
+ * transformations.
* @throws MOAApplicationException An error occurred building one of the
- * transformations.
+ * transformations.
*/
public List buildTransformationSupplements()
- throws MOASystemException, MOAApplicationException {
- TransactionContext context =
- TransactionContextManager.getInstance().getTransactionContext();
- ConfigurationProvider config = context.getConfiguration();
- SignatureManifestCheckParams checkParams =
- request.getSignatureManifestCheckParams();
- List transformsProfiles = new ArrayList();
- List transformationSupplements = new ArrayList();
- DataObjectFactory factory = DataObjectFactory.getInstance();
+ throws MOASystemException, MOAApplicationException {
+ final TransactionContext context =
+ TransactionContextManager.getInstance().getTransactionContext();
+ final ConfigurationProvider config = context.getConfiguration();
+ final SignatureManifestCheckParams checkParams =
+ request.getSignatureManifestCheckParams();
+ final List transformsProfiles = new ArrayList();
+ final List transformationSupplements = new ArrayList();
+ final DataObjectFactory factory = DataObjectFactory.getInstance();
List refInfos = checkParams.getReferenceInfos();
Iterator refIter;
Iterator prIter;
@@ -144,26 +145,26 @@ public class XMLSignatureVerificationProfileFactory {
// build the list of all VerifyTransformsInfoProfiles in all ReferenceInfos
refInfos = checkParams.getReferenceInfos();
for (refIter = refInfos.iterator(); refIter.hasNext();) {
- ReferenceInfo refInfo = (ReferenceInfo) refIter.next();
- List profiles = refInfo.getVerifyTransformsInfoProfiles();
+ final ReferenceInfo refInfo = (ReferenceInfo) refIter.next();
+ final List profiles = refInfo.getVerifyTransformsInfoProfiles();
transformsProfiles.addAll(
- ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config));
+ ProfileMapper.mapVerifyTransformsInfoProfiles(profiles, config));
}
// build the DataObjects
for (prIter = transformsProfiles.iterator(); prIter.hasNext();) {
- VerifyTransformsInfoProfileExplicit profile =
- (VerifyTransformsInfoProfileExplicit) prIter.next();
- List transformParameters = profile.getTransformParameters();
+ final VerifyTransformsInfoProfileExplicit profile =
+ (VerifyTransformsInfoProfileExplicit) prIter.next();
+ final List transformParameters = profile.getTransformParameters();
for (trIter = transformParameters.iterator(); trIter.hasNext();) {
- TransformParameter trParam = (TransformParameter) trIter.next();
+ final TransformParameter trParam = (TransformParameter) trIter.next();
transformationSupplements.add(
- factory.createFromTransformParameter(trParam));
+ factory.createFromTransformParameter(trParam));
}
}
-
+
return transformationSupplements;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java
index dcb1397..f477588 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLog.java
@@ -21,20 +21,17 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.logging;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import iaik.logging.TransactionId;
/**
- * An implementation of the <code>iaik.logging.Log</code>
- * interface that is based on Jakarta Commons-Logging.
- *
+ * An implementation of the <code>iaik.logging.Log</code> interface that is
+ * based on Jakarta Commons-Logging.
+ *
* @author Fatemeh Philippi
* @version $Id$
*/
@@ -45,11 +42,11 @@ public class IaikLog implements iaik.logging.Log {
private static Logger log = LoggerFactory.getLogger(IAIK_LOG_HIERARCHY);
/** The node ID to use. */
private String nodeId;
-
+
/**
* Create a new <code>IaikLog</code>.
- *
- * @param nodeId The node ID for this <code>Log</code> object.
+ *
+ * @param nodeId The node ID for this <code>Log</code> object.
*/
public IaikLog(String nodeId) {
this.nodeId = nodeId;
@@ -58,6 +55,7 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#isDebugEnabled()
*/
+ @Override
public boolean isDebugEnabled() {
return log.isDebugEnabled();
}
@@ -65,8 +63,9 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#debug(TransactionId, Object, Throwable)
*/
+ @Override
public void debug(TransactionId transactionId, Object message, Throwable t) {
- IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
+ final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
log.debug(msg.toString(), t);
}
@@ -74,6 +73,7 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#isInfoEnabled()
*/
+ @Override
public boolean isInfoEnabled() {
return log.isInfoEnabled();
}
@@ -81,8 +81,9 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#info(TransactionId, Object, Throwable)
*/
+ @Override
public void info(TransactionId transactionId, Object message, Throwable t) {
- IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
+ final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
log.info(msg.toString(), t);
}
@@ -90,6 +91,7 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#isWarnEnabled()
*/
+ @Override
public boolean isWarnEnabled() {
return log.isWarnEnabled();
}
@@ -97,8 +99,9 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#warn(TransactionId, Object, Throwable)
*/
+ @Override
public void warn(TransactionId transactionId, Object message, Throwable t) {
- IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
+ final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
log.warn(msg.toString(), t);
}
@@ -106,6 +109,7 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#isErrorEnabled()
*/
+ @Override
public boolean isErrorEnabled() {
return log.isErrorEnabled();
}
@@ -113,8 +117,9 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#error(TransactionId, Object, Throwable)
*/
+ @Override
public void error(TransactionId transactionId, Object message, Throwable t) {
- IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
+ final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
log.error(msg.toString(), t);
}
@@ -122,6 +127,7 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#isFatalEnabled()
*/
+ @Override
public boolean isFatalEnabled() {
return log.isErrorEnabled();
}
@@ -129,8 +135,9 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#fatal(TransactionId, Object, Throwable)
*/
+ @Override
public void fatal(TransactionId transactionId, Object message, Throwable t) {
- IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
+ final IaikLogMsg msg = new IaikLogMsg(transactionId, nodeId, message);
log.error(msg.toString(), t);
}
@@ -138,6 +145,7 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#setNodeId(String)
*/
+ @Override
public void setNodeId(String nodeId) {
this.nodeId = nodeId;
}
@@ -145,6 +153,7 @@ public class IaikLog implements iaik.logging.Log {
/**
* @see iaik.logging.Log#getNodeId()
*/
+ @Override
public String getNodeId() {
return nodeId;
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java
index 9989087..e0a4ea6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogFactory.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.logging;
import at.gv.egovernment.moaspss.logging.LoggingContext;
@@ -31,36 +30,40 @@ import iaik.logging.LogConfigurationException;
import iaik.logging.LogFactory;
/**
- * An implementation of the <code>iaik.logging.LogFactory</code> abstract
- * class to log messages to the MOA logging subsystem.
- *
+ * An implementation of the <code>iaik.logging.LogFactory</code> abstract class
+ * to log messages to the MOA logging subsystem.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class IaikLogFactory extends LogFactory {
+ @Override
public Log getInstance(Class clazz) throws LogConfigurationException {
return getInstanceImpl(clazz.getName());
}
+ @Override
public Log getInstance(String name) throws LogConfigurationException {
return getInstanceImpl(name);
}
/**
* Return an instance of <code>iaik.logging.Log</code>.
- *
+ *
* @return The <code>iaik.logging.Log</code> object to log messages to.
- */
+ */
private Log getInstanceImpl(String name) {
- LoggingContext context = LoggingContextManager.getInstance().getLoggingContext();
- if (context != null)
- return new IaikLog(context.getNodeID());
- else
- return new IaikLog("Internal");
-
+ final LoggingContext context = LoggingContextManager.getInstance().getLoggingContext();
+ if (context != null) {
+ return new IaikLog(context.getNodeID());
+ } else {
+ return new IaikLog("Internal");
+ }
+
}
+ @Override
public void release() {
// we do not hold any resources
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java
index 7e4ff84..d096b2e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/IaikLogMsg.java
@@ -21,34 +21,33 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.logging;
import iaik.logging.TransactionId;
/**
* A unified message type to log messages from the IAIK subsystem.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class IaikLogMsg {
-
+
/** The transaction ID of this message. */
- private TransactionId transactionId;
+ private final TransactionId transactionId;
/** The node ID of this message. */
- private String nodeId;
+ private final String nodeId;
/** The message to log. */
- private Object message;
-
+ private final Object message;
+
/**
* Create a <code>IaikLogMsg</code> object.
- *
- * @param transactionId The transaction id of the transaction which
- * generated this log message. May be <code>null</code>.
- * @param nodeId The node id where this message was generated. May be
- * <code>null</code>.
- * @param message The actual message to log. May be <code>null</code>.
+ *
+ * @param transactionId The transaction id of the transaction which generated
+ * this log message. May be <code>null</code>.
+ * @param nodeId The node id where this message was generated. May be
+ * <code>null</code>.
+ * @param message The actual message to log. May be <code>null</code>.
*/
public IaikLogMsg(TransactionId transactionId, String nodeId, Object message) {
this.transactionId = transactionId;
@@ -56,22 +55,22 @@ public class IaikLogMsg {
this.message = message;
}
-
/**
* Convert this log message to a <code>String</code>.
- *
- * @return The <code>String</code> representation of this log message.
+ *
+ * @return The <code>String</code> representation of this log message.
*/
+ @Override
public String toString() {
- StringBuffer msg = new StringBuffer();
-
+ final StringBuffer msg = new StringBuffer();
+
msg.append("TID=");
msg.append(transactionId != null ? transactionId.getLogID() : "<null>");
msg.append(" NID=");
msg.append(nodeId != null ? nodeId : "<null>");
msg.append(" MSG=");
msg.append(message != null ? message.toString() : "<null>");
-
+
return msg.toString();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java
index ba76c0b..75623fd 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/logging/TransactionId.java
@@ -21,25 +21,24 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.logging;
/**
* An implementation of the <code>iaik.logging.TransactionId</code> interface.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class TransactionId implements iaik.logging.TransactionId {
-
+
/** The String representation for logging the transaction ID. */
- private String logID;
-
+ private final String logID;
+
/**
* Create a <code>TransactionId</code> object.
- *
+ *
* @param logID The transaction id as it should be presented to the logging
- * subsystem.
+ * subsystem.
*/
public TransactionId(String logID) {
this.logID = logID;
@@ -48,13 +47,15 @@ public class TransactionId implements iaik.logging.TransactionId {
/**
* @see iaik.logging.TransactionId#getLogID()
*/
+ @Override
public String getLogID() {
return logID;
}
-
+
/**
* @see java.lang.Object#toString()
*/
+ @Override
public String toString() {
return getLogID();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java
index 3d100a4..9c5bef3 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/monitoring/ServiceStatusContainer.java
@@ -7,37 +7,38 @@ import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
public class ServiceStatusContainer {
- public static final String STATUS_NOT_SET = "no status message";
- public static final String STATUS_OK = "ok";
-
- private static boolean TSLStatusValid = false;
- private static String TSLStatusMsg = STATUS_NOT_SET;
- private static List<TSLProcessingResultElement> tslDetailStatus = null;
-
- public static boolean getStatus() {
- return TSLStatusValid;
-
- }
-
- public static String getStatusMsg() {
- return TSLStatusMsg;
-
- }
-
- public static List<TSLProcessingResultElement> getTslDetailStatus() {
- return tslDetailStatus;
- }
-
- public static void setStatus(boolean currentStatus) {
- TSLStatusValid = currentStatus;
-
- if (TSLServiceFactory.isInitialized())
- tslDetailStatus = TSLServiceFactory.getTSLServiceClient().getCurrentTSLClientStatus();
-
- }
-
- public static void setStatusMsg(String msg) {
- TSLStatusMsg = msg;
- }
-
+ public static final String STATUS_NOT_SET = "no status message";
+ public static final String STATUS_OK = "ok";
+
+ private static boolean TSLStatusValid = false;
+ private static String TSLStatusMsg = STATUS_NOT_SET;
+ private static List<TSLProcessingResultElement> tslDetailStatus = null;
+
+ public static boolean getStatus() {
+ return TSLStatusValid;
+
+ }
+
+ public static String getStatusMsg() {
+ return TSLStatusMsg;
+
+ }
+
+ public static List<TSLProcessingResultElement> getTslDetailStatus() {
+ return tslDetailStatus;
+ }
+
+ public static void setStatus(boolean currentStatus) {
+ TSLStatusValid = currentStatus;
+
+ if (TSLServiceFactory.isInitialized()) {
+ tslDetailStatus = TSLServiceFactory.getTSLServiceClient().getCurrentTSLClientStatus();
+ }
+
+ }
+
+ public static void setStatusMsg(String msg) {
+ TSLStatusMsg = msg;
+ }
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java
index d3a930c..1d85d66 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/service/RevocationArchiveCleaner.java
@@ -21,13 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
-import iaik.pki.revocation.RevocationSourceTypes;
-import iaik.pki.store.revocation.archive.Archive;
-import iaik.pki.store.revocation.archive.ArchiveFactory;
-
import java.util.Date;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
@@ -35,64 +30,67 @@ import at.gv.egovernment.moa.spss.server.logging.TransactionId;
import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.pki.revocation.RevocationSourceTypes;
+import iaik.pki.store.revocation.archive.Archive;
+import iaik.pki.store.revocation.archive.ArchiveFactory;
/**
- * A <code>Runnable</code> for periodically cleaning up the revocation archive.
+ * A <code>Runnable</code> for periodically cleaning up the revocation archive.
+ *
* @author Patrick Peck
* @version $Id$
*/
public class RevocationArchiveCleaner implements Runnable {
/** The inverval between two clean-ups of the revocation archive. */
- private long archiveCleanupInterval;
+ private final long archiveCleanupInterval;
/**
* Create a new <code>RevocationArchiveCleaner</code>.
- *
+ *
* @param archiveCleanupInterval The interval between two clean-ups of the
- * revocation archive.
+ * revocation archive.
*/
public RevocationArchiveCleaner(long archiveCleanupInterval) {
this.archiveCleanupInterval = archiveCleanupInterval;
}
/**
- * Run the <code>RevocationArchiveCleaner</code> in its own
- * <code>Thread</code>.
+ * Run the <code>RevocationArchiveCleaner</code> in its own <code>Thread</code>.
*/
+ @Override
public void run() {
while (true) {
try {
- ConfigurationProvider config = ConfigurationProvider.getInstance();
- boolean enableArchiving = config.getEnableRevocationArchiving();
+ final ConfigurationProvider config = ConfigurationProvider.getInstance();
+ final boolean enableArchiving = config.getEnableRevocationArchiving();
- if (enableArchiving)
- {
- Archive archive = ArchiveFactory.getInstance().getArchive();
- long archiveDurationMillis =
- (long) config.getCRLArchiveDuration() * 86400000;
+ if (enableArchiving) {
+ final Archive archive = ArchiveFactory.getInstance().getArchive();
+ final long archiveDurationMillis =
+ (long) config.getCRLArchiveDuration() * 86400000;
// delete old archive data
if (archiveDurationMillis > 0) {
- Date olderThan =
- new Date(System.currentTimeMillis() - archiveDurationMillis);
+ final Date olderThan =
+ new Date(System.currentTimeMillis() - archiveDurationMillis);
archive.deleteOldArchiveEntries(
- RevocationSourceTypes.CRL,
- olderThan,
- new TransactionId("RevocationArchiveCleaner"));
+ RevocationSourceTypes.CRL,
+ olderThan,
+ new TransactionId("RevocationArchiveCleaner"));
}
}
- } catch (Exception e) {
- MessageProvider msg = MessageProvider.getInstance();
+ } catch (final Exception e) {
+ final MessageProvider msg = MessageProvider.getInstance();
Logger.error(new LogMsg(msg.getMessage("init.02", null)), e);
}
- // sleep
+ // sleep
try {
Thread.sleep(archiveCleanupInterval * 1000);
- } catch (InterruptedException e) {
+ } catch (final InterruptedException e) {
// ok to do nothing here
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java
index a5ea592..335bf68 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/DeleteableDataSource.java
@@ -3,5 +3,5 @@ package at.gv.egovernment.moa.spss.server.transaction;
import javax.activation.DataSource;
public interface DeleteableDataSource extends DataSource {
- public void delete();
+ void delete();
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java
index 4e0d9f6..5746657 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java
@@ -21,11 +21,8 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.transaction;
-import iaik.xml.crypto.utils.URI;
-
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
@@ -33,23 +30,23 @@ import java.io.InputStream;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map.Entry;
import java.util.Vector;
import javax.activation.DataSource;
-import java.util.Map.Entry;
-
import org.w3c.dom.Element;
import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.xml.crypto.utils.URI;
/**
* Contains information about the current request.
- *
+ *
* @author Stefan Knirsch
- * @author Patrick Peck
+ * @author Patrick Peck
*/
public class TransactionContext {
@@ -69,18 +66,19 @@ public class TransactionContext {
private HashMap resolvedEntities = null;
/** The configuration to use throughout the request. */
private ConfigurationProvider configuration = null;
-
+
/**
* Create a <code>TransactionContext</code> object.
- *
- * @param transactionID A unique ID for this <code>TransactionContext</code>.
+ *
+ * @param transactionID A unique ID for this
+ * <code>TransactionContext</code>.
* @param clientCertificate The client certificate chain.
- * @param configuration The MOA configuration to use for this transaction.
+ * @param configuration The MOA configuration to use for this transaction.
*/
public TransactionContext(
- String transactionID,
- X509Certificate[] clientCertificate,
- ConfigurationProvider configuration) {
+ String transactionID,
+ X509Certificate[] clientCertificate,
+ ConfigurationProvider configuration) {
this.transactionID = transactionID;
this.clientCertificate = clientCertificate;
@@ -89,18 +87,19 @@ public class TransactionContext {
/**
* Create a <code>TransactionContext</code> object.
- *
- * @param transactionID A unique ID for this <code>TransactionContext</code>.
+ *
+ * @param transactionID A unique ID for this
+ * <code>TransactionContext</code>.
* @param clientCertificate The client certificate chain.
- * @param configuration The MOA configuration to use for this transaction.
- * @param attachments to use for this transaction.
+ * @param configuration The MOA configuration to use for this transaction.
+ * @param attachments to use for this transaction.
*/
public TransactionContext(
- String transactionID,
- X509Certificate[] clientCertificate,
- ConfigurationProvider configuration,
- Element request,
- HashMap attachments) {
+ String transactionID,
+ X509Certificate[] clientCertificate,
+ ConfigurationProvider configuration,
+ Element request,
+ HashMap attachments) {
this.transactionID = transactionID;
this.clientCertificate = clientCertificate;
@@ -108,14 +107,14 @@ public class TransactionContext {
this.request = request;
this.attachments = attachments;
}
-
+
/**
* Returns the client certificate.
- *
+ *
* @return The client certificate chain, if SSL client authentication has been
- * configured in the web server and has been used by the client. The 0th
- * element of the array contains the client certificate. <code>null</code>
- * otherwise.
+ * configured in the web server and has been used by the client. The 0th
+ * element of the array contains the client certificate.
+ * <code>null</code> otherwise.
*/
public X509Certificate[] getClientCertificate() {
return clientCertificate;
@@ -123,7 +122,7 @@ public class TransactionContext {
/**
* Returns the unique transaction ID.
- *
+ *
* @return The transaction ID.
*/
public String getTransactionID() {
@@ -132,7 +131,7 @@ public class TransactionContext {
/**
* Returns the name of the request.
- *
+ *
* @return The name of the request.
*/
public String getRequestName() {
@@ -141,7 +140,7 @@ public class TransactionContext {
/**
* Sets the name of the request.
- *
+ *
* @param requestName The request name to set.
*/
public void setRequestName(String requestName) {
@@ -150,7 +149,7 @@ public class TransactionContext {
/**
* Sets the the request.
- *
+ *
* @param request The request to set.
*/
public void setRequest(Element request) {
@@ -159,7 +158,7 @@ public class TransactionContext {
/**
* Returns the request.
- *
+ *
* @return The request.
*/
public Element getRequest() {
@@ -168,7 +167,7 @@ public class TransactionContext {
/**
* Sets the the response.
- *
+ *
* @param response The response to set.
*/
public void setResponse(Element response) {
@@ -177,23 +176,26 @@ public class TransactionContext {
/**
* Returns the response.
- *
+ *
* @return The response.
*/
public Element getResponse() {
return response;
}
-
+
/**
* Adds an attachment to the transactions list of SOAP attachments.
- *
+ *
* @param referenceId Identification value for the SOAP attachment.
* @param contentType MIME type of the SOAP attachment.
- * @param is Handle to the ManagedMemoryDataSource of the SOAP attachment.
+ * @param is Handle to the ManagedMemoryDataSource of the SOAP
+ * attachment.
*/
public void addAttachment(String referenceId, String contentType, DataSource is) {
- if (this.attachments == null) this.attachments = new HashMap();
- Vector entry = new Vector(2);
+ if (this.attachments == null) {
+ this.attachments = new HashMap();
+ }
+ final Vector entry = new Vector(2);
entry.add(contentType);
entry.add(is);
this.attachments.put(referenceId, entry);
@@ -201,185 +203,198 @@ public class TransactionContext {
/**
* Adds an attachment to the transactions list of SOAP attachments.
- *
+ *
* @param referenceId Identification value for the SOAP attachment.
* @param contentType MIME type of the SOAP attachment.
- * @param is Handle to the InputStream of the SOAP attachment.
- * @param filename Filename of the temporary file the InputStream belongs to
+ * @param is Handle to the InputStream of the SOAP attachment.
+ * @param filename Filename of the temporary file the InputStream belongs to
*/
public void addAttachment(String referenceId, String contentType, InputStream is, String filename) {
- if (this.attachments == null) this.attachments = new HashMap();
- Vector entry = new Vector(3);
+ if (this.attachments == null) {
+ this.attachments = new HashMap();
+ }
+ final Vector entry = new Vector(3);
entry.add(contentType);
entry.add(is);
entry.add(filename);
this.attachments.put(referenceId, entry);
}
-
+
/**
- * Returns the ManagedMemoryDataSource to a specific SOAP attachment identified by referenceId.
- *
+ * Returns the ManagedMemoryDataSource to a specific SOAP attachment identified
+ * by referenceId.
+ *
* @param referenceId Identification value for the SOAP attachment.
*/
public DataSource getAttachment(String referenceId) {
- if (attachments==null) {
+ if (attachments == null) {
return null;
}
- Vector entry = (Vector) attachments.get(referenceId);
- if (entry==null) {
+ final Vector entry = (Vector) attachments.get(referenceId);
+ if (entry == null) {
return null;
}
- Object object = entry.get(1);
+ final Object object = entry.get(1);
if (object instanceof DataSource) {
- return (DataSource) object;
+ return (DataSource) object;
} else {
- return null;
+ return null;
}
}
-
+
/**
* Returns the InputStream to a specific SOAP attachment identified by uri.
- *
+ *
* @param uri Identification value for the SOAP attachment.
*/
public InputStream getAttachmentInputStream(URI uri) throws MOAApplicationException {
- if (attachments==null) {
+ if (attachments == null) {
return null;
}
- String referenceId = uri.getPath();
- Vector entry = (Vector) attachments.get(referenceId);
- if (entry==null) {
+ final String referenceId = uri.getPath();
+ final Vector entry = (Vector) attachments.get(referenceId);
+ if (entry == null) {
return null;
}
InputStream attachmentIs = null;
- Object object = entry.get(1);
-
+ final Object object = entry.get(1);
+
if (object instanceof DataSource) {
- try {
- attachmentIs = (InputStream) ( ((DataSource)object).getInputStream());
- } catch (IOException e) {
- throw new MOAApplicationException("2208", new Object[] { uri }, e);
- }
+ try {
+ attachmentIs = ((DataSource) object).getInputStream();
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2208", new Object[] { uri }, e);
+ }
} else {
- attachmentIs = (InputStream) object;
+ attachmentIs = (InputStream) object;
}
return attachmentIs;
- //If we would return the whole mmds: return (ManagedMemoryDataSource) entry.get(1);
+ // If we would return the whole mmds: return (ManagedMemoryDataSource)
+ // entry.get(1);
}
-
+
/**
- * Returns the content type to a specific SOAP attachment identified by referenceId.
- *
+ * Returns the content type to a specific SOAP attachment identified by
+ * referenceId.
+ *
* @param referenceId Identification value for the SOAP attachment.
*/
public String getAttachmentContentType(String referenceId) {
- Vector entry = (Vector) attachments.get(referenceId);
- if (entry==null) {
+ final Vector entry = (Vector) attachments.get(referenceId);
+ if (entry == null) {
return null;
}
return (String) entry.get(0);
}
-
+
/**
* Delete the temporary attachment files.
*/
-public void cleanAttachmentCache() {
- if (null==attachments) {
+ public void cleanAttachmentCache() {
+ if (null == attachments) {
return;
}
- Iterator iterator = attachments.entrySet().iterator();
+ final Iterator iterator = attachments.entrySet().iterator();
while (iterator.hasNext()) {
- Entry hmEntry = (Entry) iterator.next();
- Vector entry = (Vector)hmEntry.getValue();
- Object object = entry.get(1);
+ final Entry hmEntry = (Entry) iterator.next();
+ final Vector entry = (Vector) hmEntry.getValue();
+ final Object object = entry.get(1);
if (object instanceof DataSource) {
- DataSource mmds = (DataSource)object;
- try {
- if (mmds!=null) {
- InputStream is = mmds.getInputStream();
- if (is!=null) is.close();
-// not available in Axis 1.0 to 1.1
+ final DataSource mmds = (DataSource) object;
+ try {
+ if (mmds != null) {
+ final InputStream is = mmds.getInputStream();
+ if (is != null) {
+ is.close();
+ }
+// not available in Axis 1.0 to 1.1
// File f = mmds.getDiskCacheFile();
// if (f!=null) f.delete();
- if(mmds instanceof DeleteableDataSource) {
- ((DeleteableDataSource)mmds).delete();
- }
- //mmds..delete();
- }
- } catch (IOException e) {
- // ok to do nothing here
- }
+ if (mmds instanceof DeleteableDataSource) {
+ ((DeleteableDataSource) mmds).delete();
+ }
+ // mmds..delete();
+ }
+ } catch (final IOException e) {
+ // ok to do nothing here
+ }
} else if (object instanceof InputStream) {
- InputStream is = (InputStream)object;
- try {
- if (is!=null) is.close();
- String tempFile = (String) entry.get(2);
- if (tempFile!=null){
- File f = new File(tempFile);
- f.delete();
- }
- } catch (IOException e) {
- // ok to do nothing here
- }
+ final InputStream is = (InputStream) object;
+ try {
+ if (is != null) {
+ is.close();
+ }
+ final String tempFile = (String) entry.get(2);
+ if (tempFile != null) {
+ final File f = new File(tempFile);
+ f.delete();
+ }
+ } catch (final IOException e) {
+ // ok to do nothing here
+ }
}
}
}
-
+
/**
* Returns the <code>ConfigurationProvider</code> associated with this
* transaction.
- *
- * @return The ConfigurationProvider associated with this transaction.
+ *
+ * @return The ConfigurationProvider associated with this transaction.
*/
public ConfigurationProvider getConfiguration() {
return configuration;
}
-
+
/**
* Search an uri content in cashed map.
- *
+ *
* @param uri The value to look for.
* @return If found the cached entity, <code>null<code> otherwise.
*/
public Vector FindResolvedEntity(String uri) {
- if (resolvedEntities==null) return null;
- return (Vector) resolvedEntities.get(uri);
+ if (resolvedEntities == null) {
+ return null;
+ }
+ return (Vector) resolvedEntities.get(uri);
}
-
+
/**
* Get a new InputStream of a cached entity.
- *
+ *
* @param uri The value to look for.
* @return A new InputStream of the cached entity.
*/
public InputStream ResolveURI(String uri) {
- InputStream is = null;
- Vector entity = FindResolvedEntity(uri);
- if (entity!=null) {
- byte[] contentBytes = (byte[]) entity.get(0);
- if (contentBytes!=null) {
- is = new ByteArrayInputStream(contentBytes);
- }
- }
- return is;
+ InputStream is = null;
+ final Vector entity = FindResolvedEntity(uri);
+ if (entity != null) {
+ final byte[] contentBytes = (byte[]) entity.get(0);
+ if (contentBytes != null) {
+ is = new ByteArrayInputStream(contentBytes);
+ }
+ }
+ return is;
}
/**
- * Put a read entity (supplement, detached content, data object) on
- * transactions entity cash, to prevent repeated reading on slower channels.
- *
- * @param uri A transaction-wide unique URI used as key of the entity cash
- * table.
+ * Put a read entity (supplement, detached content, data object) on transactions
+ * entity cash, to prevent repeated reading on slower channels.
+ *
+ * @param uri A transaction-wide unique URI used as key of the entity
+ * cash table.
* @param contentBytes The cached content belonging to the uri.
- * @param contentType If known, the MIME-type of the cashed content.
+ * @param contentType If known, the MIME-type of the cashed content.
*/
public void PutResolvedEntity(String uri, byte[] contentBytes, String contentType) {
- Logger.trace(" storing uri content of uri \"" + uri + "\" for future references");
- if (resolvedEntities==null) resolvedEntities = new HashMap();
- Vector entity = new Vector();
- entity.add(contentBytes);
- entity.add(contentType);
- resolvedEntities.put(uri, entity);
+ Logger.trace(" storing uri content of uri \"" + uri + "\" for future references");
+ if (resolvedEntities == null) {
+ resolvedEntities = new HashMap();
+ }
+ final Vector entity = new Vector();
+ entity.add(contentBytes);
+ entity.add(contentType);
+ resolvedEntities.put(uri, entity);
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java
index 8a45ddf..080f801 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionContextManager.java
@@ -21,30 +21,29 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.transaction;
/**
* Provides each thread with an instance of <code>TransactionContext</code>.
- *
+ *
* The single instance of the <code>TransactionContextManager</code> should be
* used to access contextual information for each web service transaction, e.g.
* the transaction ID, MOA configuration, client certificate, etc.
- *
+ *
* @author Stefan Knirsch
* @author Patrick Peck
*/
public class TransactionContextManager {
- /** The single instance of <code>TransactionContextManager</code> */
+ /** The single instance of <code>TransactionContextManager</code> */
private static TransactionContextManager instance = null;
-
+
/** Contains a single <code>TransactionContext</code> for each thread. */
private ThreadLocal context = null;
/**
* Get the single instance of <code>TransactionContextManager</code>.
- *
+ *
* @return The single instanc of <code>TransactionContextManager</code>.
*/
public static synchronized TransactionContextManager getInstance() {
@@ -56,7 +55,7 @@ public class TransactionContextManager {
/**
* Creates a new <code>TransactionContextManager</code>.
- *
+ *
* Protected to disallow direct instantiation.
*/
protected TransactionContextManager() {
@@ -65,7 +64,7 @@ public class TransactionContextManager {
/**
* Set the <code>TransactionContext</code> for the current thread.
- *
+ *
* @param txContext The <code>TransactionContext</code> for this thread.
*/
public void setTransactionContext(TransactionContext txContext) {
@@ -74,10 +73,10 @@ public class TransactionContextManager {
/**
* Get the <code>TransactionContext</code> for the current thread.
- *
+ *
* @return The <code>TransactionContext</code> for the current thread or
- * <code>null</code>, if none has been set (or if this method is being invoked
- * outside the bounds of a transaction).
+ * <code>null</code>, if none has been set (or if this method is being
+ * invoked outside the bounds of a transaction).
*/
public TransactionContext getTransactionContext() {
return (TransactionContext) context.get();
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java
index b173308..463785b 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/transaction/TransactionIDGenerator.java
@@ -21,27 +21,28 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.transaction;
-
/**
* A generator for unique transaction IDs.
- *
- * <p>The transaction IDs are of the form "<base>-<counter>", where:
- * <ul>
+ *
+ * <p>
+ * The transaction IDs are of the form "<base>-<counter>", where:
+ * <ul>
* <li><code>base</code> is initialized with the system time when this class is
* being loaded</li>
* <li><code>counter</code> is incremented sequentially on each call to
* <code>nextID()</code></li>
* </ul>
* </p>
- *
- * <p> Assuming that it is highly unlikely that MOA servers are started at
- * exactly the same time instant, the mechanism provided by this class should
- * guarantee unique transaction IDs across multiple restarts and/or instances of
- * the server.</p>
- *
+ *
+ * <p>
+ * Assuming that it is highly unlikely that MOA servers are started at exactly
+ * the same time instant, the mechanism provided by this class should guarantee
+ * unique transaction IDs across multiple restarts and/or instances of the
+ * server.
+ * </p>
+ *
* @author Patrick Peck
* @author Stefan Knirsch
*/
@@ -63,13 +64,13 @@ public class TransactionIDGenerator {
/**
* Returns the next transaction ID.
- *
+ *
* @return The next transaction ID.
*/
public static synchronized String nextID() {
counter++;
- return (base + "-" + counter);
+ return base + "-" + counter;
}
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java
index a8d9e1b..a6bc653 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/util/IdGenerator.java
@@ -21,65 +21,66 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.util;
import java.util.Set;
/**
* Generate unique ID values for various objects in the response.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class IdGenerator {
/** The base value to append the counter to. */
- private String base;
+ private final String base;
/** The <code>Set</code> of reserved ID values. */
- private Set reserved;
+ private final Set reserved;
/** The sequence number. */
private int count;
-
+
/**
* Create a new <code>IdGenerator</code>.
- *
- * @param base A base value to append the IDs to. The creator of this object
- * should provide a base value, so that appending the counter leads to unique
- * IDs.
- * @param reserved The <code>Set</code> of reserved IDs. A call to
- * <code>uniqueId()</code> will respect the reserved IDs.
+ *
+ * @param base A base value to append the IDs to. The creator of this object
+ * should provide a base value, so that appending the counter
+ * leads to unique IDs.
+ * @param reserved The <code>Set</code> of reserved IDs. A call to
+ * <code>uniqueId()</code> will respect the reserved IDs.
*/
public IdGenerator(String base, Set reserved) {
this.base = base;
this.reserved = reserved;
count = 1;
}
-
+
/**
* Create the next ID value in the sequence.
- *
+ *
* @return The next ID value in the sequence.
*/
protected String nextId() {
return base + "-" + count++;
}
-
+
/**
* Create the next unique ID value which is unique in the reserved ID set.
- *
+ *
* The created ID is added to the set of reserved IDs.
- *
+ *
* @return The next ID value.
*/
public String uniqueId() {
String nextId;
- while (reserved.contains(nextId = nextId()));
-
+ while (reserved.contains(nextId = nextId())) {
+ ;
+ }
+
reserved.add(nextId);
-
+
return nextId;
-
+
}
-
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java
index bc902f2..d75240e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/TSLServiceFactory.java
@@ -13,55 +13,59 @@ import iaik.pki.store.truststore.TrustStoreFactory;
public class TSLServiceFactory {
- private static ITslService tslClient = null;
- private static TslConfigurationImpl interalConfig;
-
- public static void initialize(TslConfigurationImpl config) {
- if (tslClient == null) {
- try {
- interalConfig = config;
- tslClient = TslClientFactory.buildTslService(interalConfig);
-
- TrustStoreFactory.addTrustStoreHandler(new ChainingTrustStoreHandler());
-
- //set global TSL client status
- ServiceStatusContainer.setStatus(true);
- ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK);
-
- } catch (TslException e) {
- Logger.fatal(new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[]{e.getMessage()})), e);
-
- //set global TSL client status
- ServiceStatusContainer.setStatus(false);
- ServiceStatusContainer.setStatusMsg(
- new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[]{e.getMessage()})).toString());
-
- }
-
- } else {
- Logger.error("TSL-Service client can only be initialized once.");
- throw new IllegalStateException("TSL-Service client can only be initialized once.");
-
- }
-
- }
-
- public static boolean isInitialized() {
- if (tslClient == null)
- return false;
- else
- return true;
-
- }
-
- public static ITslService getTSLServiceClient() {
- if (!isInitialized()) {
- Logger.warn("TSL client is not initialized but config is available. Starting new initialization process ...");
- initialize(interalConfig);
- }
-
- return tslClient;
-
- }
-
+ private static ITslService tslClient = null;
+ private static TslConfigurationImpl interalConfig;
+
+ public static void initialize(TslConfigurationImpl config) {
+ if (tslClient == null) {
+ try {
+ interalConfig = config;
+ tslClient = TslClientFactory.buildTslService(interalConfig);
+
+ TrustStoreFactory.addTrustStoreHandler(new ChainingTrustStoreHandler());
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(true);
+ ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK);
+
+ } catch (final TslException e) {
+ Logger.fatal(new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[] { e
+ .getMessage() })), e);
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(false);
+ ServiceStatusContainer.setStatusMsg(
+ new LogMsg(MessageProvider.getInstance().getMessage("init.05", new Object[] { e.getMessage() }))
+ .toString());
+
+ }
+
+ } else {
+ Logger.error("TSL-Service client can only be initialized once.");
+ throw new IllegalStateException("TSL-Service client can only be initialized once.");
+
+ }
+
+ }
+
+ public static boolean isInitialized() {
+ if (tslClient == null) {
+ return false;
+ } else {
+ return true;
+ }
+
+ }
+
+ public static ITslService getTSLServiceClient() {
+ if (!isInitialized()) {
+ Logger.warn(
+ "TSL client is not initialized but config is available. Starting new initialization process ...");
+ initialize(interalConfig);
+ }
+
+ return tslClient;
+
+ }
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java
index b5a7a8c..1a377b6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java
@@ -1,77 +1,49 @@
package at.gv.egovernment.moa.spss.tsl.timer;
-import iaik.asn1.ObjectID;
-import iaik.pki.store.certstore.CertStoreException;
-import iaik.pki.store.certstore.CertStoreParameters;
-import iaik.pki.store.truststore.TrustStoreException;
-import iaik.pki.store.truststore.TrustStoreProfile;
-import iaik.pki.store.utils.StoreUpdater;
-import iaik.server.ConfigurationData;
-import iaik.x509.X509Certificate;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Map;
import java.util.TimerTask;
import at.gv.egovernment.moa.sig.tsl.exception.TslException;
import at.gv.egovernment.moa.sig.tsl.exception.TslUpdateException;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.api.common.TSLConfiguration;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
-import at.gv.egovernment.moa.spss.server.config.TrustProfile;
-import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
-import at.gv.egovernment.moa.spss.server.iaik.pki.store.truststore.TrustStoreProfileImpl;
-import at.gv.egovernment.moa.spss.server.logging.TransactionId;
import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer;
import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
-import at.gv.egovernment.moaspss.util.StringUtils;
-
public class TSLUpdaterTimerTask extends TimerTask {
-
- @Override
- public void run() {
-
- try {
- Logger.info("Start TSL Update");
- TSLServiceFactory.getTSLServiceClient().updateTSLInformation();
- Logger.info("Finished TSL Update");
-
- //set global TSL client status
- ServiceStatusContainer.setStatus(true);
- ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK);
-
- } catch (TslUpdateException e) {
- MessageProvider msg = MessageProvider.getInstance();
- Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
-
- //set global TSL client status
- ServiceStatusContainer.setStatus(false);
- ServiceStatusContainer.setStatusMsg(
- new LogMsg(msg.getMessage("tsl.00", null)).toString());
-
- } catch (TslException e) {
- MessageProvider msg = MessageProvider.getInstance();
- Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
-
- //set global TSL client status
- ServiceStatusContainer.setStatus(false);
- ServiceStatusContainer.setStatusMsg(
- new LogMsg(msg.getMessage("tsl.00", null)).toString());
-
- }
- }
+ @Override
+ public void run() {
+
+ try {
+ Logger.info("Start TSL Update");
+ TSLServiceFactory.getTSLServiceClient().updateTSLInformation();
+ Logger.info("Finished TSL Update");
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(true);
+ ServiceStatusContainer.setStatusMsg(ServiceStatusContainer.STATUS_OK);
+
+ } catch (final TslUpdateException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(false);
+ ServiceStatusContainer.setStatusMsg(
+ new LogMsg(msg.getMessage("tsl.00", null)).toString());
+
+ } catch (final TslException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e);
+
+ // set global TSL client status
+ ServiceStatusContainer.setStatus(false);
+ ServiceStatusContainer.setStatusMsg(
+ new LogMsg(msg.getMessage("tsl.00", null)).toString());
+
+ }
+
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java
index 763382a..eeff27c 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/CertificateReader.java
@@ -1,10 +1,4 @@
package at.gv.egovernment.moa.spss.tsl.utils;
-import iaik.pkcs.PKCS7CertList;
-import iaik.pkcs.PKCSParsingException;
-import iaik.security.provider.IAIK;
-import iaik.utils.Util;
-import iaik.x509.X509Certificate;
-import iaik.xml.crypto.EccProviderAdapter;
import java.io.BufferedInputStream;
import java.io.File;
@@ -18,6 +12,13 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import iaik.pkcs.PKCS7CertList;
+import iaik.pkcs.PKCSParsingException;
+import iaik.security.provider.IAIK;
+import iaik.utils.Util;
+import iaik.x509.X509Certificate;
+import iaik.xml.crypto.EccProviderAdapter;
+
// Copyright (C) 2011 IAIK
// http://jce.iaik.at
//
@@ -49,107 +50,106 @@ import java.util.List;
public class CertificateReader {
+ /**
+ * Filter for reading certificate files from a directory. The filter accepts a
+ * file if its name ends with &quot;.cer&quot;, &quot;.der&quot;,
+ * &quot;.crt&quot; or &quot;.pem&quot;.
+ *
+ * @author Harald Bratko
+ * @author Konrad Lanz
+ */
+ static class CertificateFileFilter implements FileFilter {
+
/**
- * Filter for reading certificate files from a directory.
- * The filter accepts a file if its name ends with
- * &quot;.cer&quot;, &quot;.der&quot;, &quot;.crt&quot;
- * or &quot;.pem&quot;.
+ * Accepts a file if it is not a directory and its name ends with
+ * &quot;.cer&quot;, &quot;.der&quot;, &quot;.crt&quot; or &quot;.pem&quot;.
*
- * @author Harald Bratko
- * @author Konrad Lanz
+ * @see java.io.FileFilter#accept(java.io.File)
*/
- static class CertificateFileFilter implements FileFilter {
-
- /**
- * Accepts a file if it is not a directory and its name ends with
- * &quot;.cer&quot;, &quot;.der&quot;, &quot;.crt&quot; or &quot;.pem&quot;.
- *
- * @see java.io.FileFilter#accept(java.io.File)
- */
- public boolean accept(File file) {
- String name = file.getName();
- if (name.endsWith(".der") ||
+ @Override
+ public boolean accept(File file) {
+ final String name = file.getName();
+ if (name.endsWith(".der") ||
name.endsWith(".cer") ||
name.endsWith(".crt") ||
- name.endsWith(".pem"))
- {
- return true;
- } else {
- return false;
- }
+ name.endsWith(".pem")) {
+ return true;
+ } else {
+ return false;
}
}
-
-
-
- /**
- * Reads the certificates from the given directory and
- * returns the certificates as sorted list (end user certificate first).
- * @param directory
- * @return
- * @throws IOException
- * @throws FileNotFoundException
- * @throws CertificateException
- * @throws Exception
- */
- public static X509Certificate[] readCertificatesIntoArray(String directory) throws CertificateException, FileNotFoundException, IOException{
- File file = new File(directory);
- File[] certificateFiles = file.listFiles(new CertificateFileFilter());
- int l = certificateFiles.length;
- X509Certificate[] certs = new X509Certificate[l];
- for (int i=0; i<certificateFiles.length; i++) {
- X509Certificate certificate = new X509Certificate(new FileInputStream(certificateFiles[i]));
- certs[i] = certificate;
- }
- return Util.arrangeCertificateChain(certs, false);
+ }
+
+ /**
+ * Reads the certificates from the given directory and returns the certificates
+ * as sorted list (end user certificate first).
+ *
+ * @param directory
+ * @return
+ * @throws IOException
+ * @throws FileNotFoundException
+ * @throws CertificateException
+ * @throws Exception
+ */
+ public static X509Certificate[] readCertificatesIntoArray(String directory) throws CertificateException,
+ FileNotFoundException, IOException {
+ final File file = new File(directory);
+ final File[] certificateFiles = file.listFiles(new CertificateFileFilter());
+ final int l = certificateFiles.length;
+ final X509Certificate[] certs = new X509Certificate[l];
+ for (int i = 0; i < certificateFiles.length; i++) {
+ final X509Certificate certificate = new X509Certificate(new FileInputStream(certificateFiles[i]));
+ certs[i] = certificate;
}
-
- /**
- * Reads the certificates from the given directory and
- * returns the certificates as sorted list (end user certificate first).
- * @param directory
- * @return
- * @throws IOException
- * @throws FileNotFoundException
- * @throws CertificateException
- * @throws Exception
- */
- public static List<X509Certificate> readCertificates(String directory) throws CertificateException, FileNotFoundException, IOException{
-
- return Arrays.asList(readCertificatesIntoArray(directory));
- }
-
- public static void main(String[] args) {
- try {
-
- IAIK.addAsJDK14Provider();
- //IAIK.addAsProvider();
- //Security.addProvider(new IAIK());
-
- // install ECC provider
- Security.addProvider(EccProviderAdapter.getEccProvider());
-
- String dir = "spec/examples/EU/AT/certs/on-tsl/chain/";
- List l = readCertificates(dir);
- Iterator<X509Certificate> it = l.iterator();
- while (it.hasNext()) {
- System.out.println(((X509Certificate)it.next()).getSubjectDN().getName());
- }
- } catch (Exception e) {
- e.printStackTrace();
- System.exit(1);
+ return Util.arrangeCertificateChain(certs, false);
+ }
+
+ /**
+ * Reads the certificates from the given directory and returns the certificates
+ * as sorted list (end user certificate first).
+ *
+ * @param directory
+ * @return
+ * @throws IOException
+ * @throws FileNotFoundException
+ * @throws CertificateException
+ * @throws Exception
+ */
+ public static List<X509Certificate> readCertificates(String directory) throws CertificateException,
+ FileNotFoundException, IOException {
+
+ return Arrays.asList(readCertificatesIntoArray(directory));
+ }
+
+ public static void main(String[] args) {
+ try {
+
+ IAIK.addAsJDK14Provider();
+ // IAIK.addAsProvider();
+ // Security.addProvider(new IAIK());
+
+ // install ECC provider
+ Security.addProvider(EccProviderAdapter.getEccProvider());
+
+ final String dir = "spec/examples/EU/AT/certs/on-tsl/chain/";
+ final List l = readCertificates(dir);
+ final Iterator<X509Certificate> it = l.iterator();
+ while (it.hasNext()) {
+ System.out.println(it.next().getSubjectDN().getName());
}
-
+ } catch (final Exception e) {
+ e.printStackTrace();
+ System.exit(1);
}
- public static X509Certificate[] p7read(File path) throws PKCSParsingException, FileNotFoundException, IOException {
- PKCS7CertList p7certList = new PKCS7CertList(
- new BufferedInputStream(
- new FileInputStream(
- path
- )
- )
- );
- return p7certList.getCertificateList();
- }
- } \ No newline at end of file
+ }
+
+ public static X509Certificate[] p7read(File path) throws PKCSParsingException, FileNotFoundException,
+ IOException {
+ final PKCS7CertList p7certList = new PKCS7CertList(
+ new BufferedInputStream(
+ new FileInputStream(
+ path)));
+ return p7certList.getCertificateList();
+ }
+} \ No newline at end of file
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java
index 738801c..23570cc 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/AdESResultUtils.java
@@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import at.gv.egovernment.moa.sig.tsl.utils.MiscUtil;
import at.gv.egovernment.moa.spss.api.common.ExtendedCertificateCheckResult;
import at.gv.egovernment.moa.spss.api.impl.AdESFormResultsImpl;
import at.gv.egovernment.moa.spss.api.impl.ExtendedCertificateCheckResultImpl;
@@ -22,229 +21,228 @@ import iaik.server.modules.resultcodes.ResultCodeValid;
public class AdESResultUtils {
- private static final int MAJORRESULTCODESKIPPED = new Integer(3);
- private static final int MAJORRESULTCODEERROR = new Integer(4);
-
- public static Integer getResultCode(Integer adesCode) {
- return adesCode;
- }
-
- public static ExtendedCertificateCheckResult getExtendedResult(iaik.server.modules.resultcodes.ResultCode resultCode) {
- ExtendedCertificateCheckResult check = null;
-
- int majorCode = -1;
- String majorInfo = "";
- int minorCode = -1;
- String minorInfo = "";
-
- Logger.debug("Generating extendend validation result: " + resultCode.toString());
-
- if (resultCode instanceof ResultCodeValid) {
- majorCode = SignatureVerificationResult.VALID;
- majorInfo = "VALID";
-
- } else if (resultCode instanceof ResultCodeInvalid) {
- majorCode = SignatureVerificationResult.INVALID;
- majorInfo = "INVALID";
-
- } else if (resultCode instanceof ResultCodeSkipped) {
- majorCode = MAJORRESULTCODESKIPPED;
- majorInfo = "SKIPPED";
-
- } else if (resultCode instanceof ResultCodeError) {
- majorCode = MAJORRESULTCODEERROR;
- majorInfo = "ERROR";
-
- } else {
- majorCode = SignatureVerificationResult.INDETERMINATE;
- majorInfo = "INDETERMINATE";
- }
-
- if (resultCode.getCode() != null) {
- minorCode = resultCode.getCode();
- if (resultCode.getCode().equals(ResultCode.CODE_CHAIN_CONSTRAINTS_FAILURE)) {
- minorInfo = "CHAIN_CONSTRAINTS_FAILURE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE)) {
- minorInfo = "CRYPTO_CONSTRAINTS_FAILURE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE_NO_POE)) {
- minorInfo = "CRYPTO_CONSTRAINTS_FAILURE_NO_POE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_EXPIRED)) {
- minorInfo = "EXPIRED";
- } else if (resultCode.getCode().equals(ResultCode.CODE_FORMAT_FAILURE)) {
- minorInfo = "FORMAT_FAILURE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_GENERIC)) {
- minorInfo = "GENERIC";
- } else if (resultCode.getCode().equals(ResultCode.CODE_HASH_FAILURE)) {
- minorInfo = "HASH_FAILURE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_NO_CERTIFICATE_CHAIN_FOUND)) {
- minorInfo = "NO_CERTIFICATE_CHAIN_FOUND";
- } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POE)) {
- minorInfo = "NO_POE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POLICY)) {
- minorInfo = "NO_POLICY";
- } else if (resultCode.getCode().equals(ResultCode.CODE_NOT_YET_VALID)) {
- minorInfo = "NOT_YET_VALID";
- } else if (resultCode.getCode().equals(ResultCode.CODE_OUT_OF_BOUNDS_NO_POE)) {
- minorInfo = "OUT_OF_BOUNDS_NO_POE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_POLICY_PROCESSING_ERROR)) {
- minorInfo = "POLICY_PROCESSING_ERROR";
- } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED)) {
- minorInfo = "REVOKED";
- } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_CA_NO_POE)) {
- minorInfo = "REVOKED_CA_NO_POE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_NO_POE)) {
- minorInfo = "REVOKED_NO_POE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CONSTRAINTS_FAILURE)) {
- minorInfo = "SIG_CONSTRAINTS_FAILURE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CRYPTO_FAILURE)) {
- minorInfo = "SIG_CRYPTO_FAILURE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_SIGNED_DATA_NOT_FOUND)) {
- minorInfo = "SIGNED_DATA_NOT_FOUND";
- } else if (resultCode.getCode().equals(ResultCode.CODE_TIMESTAMP_ORDER_FAILURE)) {
- minorInfo = "TIMESTAMP_ORDER_FAILURE";
- } else if (resultCode.getCode().equals(ResultCode.CODE_TRY_LATER)) {
- minorInfo = "TRY_LATER";
- } else if (resultCode.getCode().equals(ResultCode.CODE_UNKNOWN_COMMITMENT_TYPE)) {
- minorInfo = "UNKNOWN_COMMITMENT_TYPE";
- } else if (resultCode.getCode().equals(ResultCode.SUCCESS)) {
- minorInfo = "SUCCESS";
- } else if (resultCode.getCode().equals(ResultCode.ERROR)) {
- minorInfo = "ERROR";
- } else if (resultCode.getCode().equals(ResultCode.UNKNOWN_SUBFILTER)) {
- minorInfo = "UNKNOWN_SUBFILTER";
-
- //pdf-as 3.x detection is removed from MOA-SP since 3.1.2
- } else if (resultCode.getCode().equals(ResultCode.PDF_AS_SIGNATURE)) {
- //minorInfo = "PDF_AS_SIGNATURE";
- minorInfo = "UNKNOWN_SUBFILTER";
- minorCode = ResultCode.UNKNOWN_SUBFILTER;
- }
-
- }
-
- check = new ExtendedCertificateCheckResultImpl(majorCode, majorInfo, minorCode,
- minorInfo);
-
- return check;
-
- }
-
- public static List getAdESResult(iaik.server.modules.AdESFormVerificationResult adesFormVerification) {
- if (adesFormVerification == null) {
- // no form information
- return null;
- }
-
- List adesList = new ArrayList();
-
- //add only the completed form result to response
- String completedForm = adesFormVerification.getCompleteForm();
- Logger.info("Find complete Form: " + completedForm);
-
-
- /*
- * This code only returns the result of the completed form
- */
+ private static final int MAJORRESULTCODESKIPPED = new Integer(3);
+ private static final int MAJORRESULTCODEERROR = new Integer(4);
+
+ public static Integer getResultCode(Integer adesCode) {
+ return adesCode;
+ }
+
+ public static ExtendedCertificateCheckResult getExtendedResult(
+ iaik.server.modules.resultcodes.ResultCode resultCode) {
+ ExtendedCertificateCheckResult check = null;
+
+ int majorCode = -1;
+ String majorInfo = "";
+ int minorCode = -1;
+ String minorInfo = "";
+
+ Logger.debug("Generating extendend validation result: " + resultCode.toString());
+
+ if (resultCode instanceof ResultCodeValid) {
+ majorCode = SignatureVerificationResult.VALID;
+ majorInfo = "VALID";
+
+ } else if (resultCode instanceof ResultCodeInvalid) {
+ majorCode = SignatureVerificationResult.INVALID;
+ majorInfo = "INVALID";
+
+ } else if (resultCode instanceof ResultCodeSkipped) {
+ majorCode = MAJORRESULTCODESKIPPED;
+ majorInfo = "SKIPPED";
+
+ } else if (resultCode instanceof ResultCodeError) {
+ majorCode = MAJORRESULTCODEERROR;
+ majorInfo = "ERROR";
+
+ } else {
+ majorCode = SignatureVerificationResult.INDETERMINATE;
+ majorInfo = "INDETERMINATE";
+ }
+
+ if (resultCode.getCode() != null) {
+ minorCode = resultCode.getCode();
+ if (resultCode.getCode().equals(ResultCode.CODE_CHAIN_CONSTRAINTS_FAILURE)) {
+ minorInfo = "CHAIN_CONSTRAINTS_FAILURE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE)) {
+ minorInfo = "CRYPTO_CONSTRAINTS_FAILURE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_CRYPTO_CONSTRAINTS_FAILURE_NO_POE)) {
+ minorInfo = "CRYPTO_CONSTRAINTS_FAILURE_NO_POE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_EXPIRED)) {
+ minorInfo = "EXPIRED";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_FORMAT_FAILURE)) {
+ minorInfo = "FORMAT_FAILURE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_GENERIC)) {
+ minorInfo = "GENERIC";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_HASH_FAILURE)) {
+ minorInfo = "HASH_FAILURE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_NO_CERTIFICATE_CHAIN_FOUND)) {
+ minorInfo = "NO_CERTIFICATE_CHAIN_FOUND";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POE)) {
+ minorInfo = "NO_POE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_NO_POLICY)) {
+ minorInfo = "NO_POLICY";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_NOT_YET_VALID)) {
+ minorInfo = "NOT_YET_VALID";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_OUT_OF_BOUNDS_NO_POE)) {
+ minorInfo = "OUT_OF_BOUNDS_NO_POE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_POLICY_PROCESSING_ERROR)) {
+ minorInfo = "POLICY_PROCESSING_ERROR";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED)) {
+ minorInfo = "REVOKED";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_CA_NO_POE)) {
+ minorInfo = "REVOKED_CA_NO_POE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_REVOKED_NO_POE)) {
+ minorInfo = "REVOKED_NO_POE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CONSTRAINTS_FAILURE)) {
+ minorInfo = "SIG_CONSTRAINTS_FAILURE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_SIG_CRYPTO_FAILURE)) {
+ minorInfo = "SIG_CRYPTO_FAILURE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_SIGNED_DATA_NOT_FOUND)) {
+ minorInfo = "SIGNED_DATA_NOT_FOUND";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_TIMESTAMP_ORDER_FAILURE)) {
+ minorInfo = "TIMESTAMP_ORDER_FAILURE";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_TRY_LATER)) {
+ minorInfo = "TRY_LATER";
+ } else if (resultCode.getCode().equals(ResultCode.CODE_UNKNOWN_COMMITMENT_TYPE)) {
+ minorInfo = "UNKNOWN_COMMITMENT_TYPE";
+ } else if (resultCode.getCode().equals(ResultCode.SUCCESS)) {
+ minorInfo = "SUCCESS";
+ } else if (resultCode.getCode().equals(ResultCode.ERROR)) {
+ minorInfo = "ERROR";
+ } else if (resultCode.getCode().equals(ResultCode.UNKNOWN_SUBFILTER)) {
+ minorInfo = "UNKNOWN_SUBFILTER";
+
+ // pdf-as 3.x detection is removed from MOA-SP since 3.1.2
+ } else if (resultCode.getCode().equals(ResultCode.PDF_AS_SIGNATURE)) {
+ // minorInfo = "PDF_AS_SIGNATURE";
+ minorInfo = "UNKNOWN_SUBFILTER";
+ minorCode = ResultCode.UNKNOWN_SUBFILTER;
+ }
+
+ }
+
+ check = new ExtendedCertificateCheckResultImpl(majorCode, majorInfo, minorCode,
+ minorInfo);
+
+ return check;
+
+ }
+
+ public static List getAdESResult(iaik.server.modules.AdESFormVerificationResult adesFormVerification) {
+ if (adesFormVerification == null) {
+ // no form information
+ return null;
+ }
+
+ final List adesList = new ArrayList();
+
+ // add only the completed form result to response
+ final String completedForm = adesFormVerification.getCompleteForm();
+ Logger.info("Find complete Form: " + completedForm);
+
+ /*
+ * This code only returns the result of the completed form
+ */
// if (MiscUtil.isNotEmpty(completedForm)) {
// Logger.info("Form-validation found completed form: " + completedForm);
// AdESVerificationResult subResult = adesFormVerification.getSubResult(completedForm);
// checkSubResult(subResult, completedForm, adesList);
// if (Logger.isDebugEnabled())
// Logger.debug("Detailed Result: \n" + subResult.getInfo());
-//
-// } else
+//
+// } else
// Logger.info("Form-valdition found NO completed form.");
-//
+//
// if (Logger.isDebugEnabled())
// Logger.debug("Full form-validation result: \n" + adesFormVerification.getInfo());
-
-
- /*
- * This code returns the result for all forms
- */
- //add results for all form types to response
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA),
- SignatureVerificationProfile.LEVEL_LTA, adesList);
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT),
- SignatureVerificationProfile.LEVEL_LT, adesList);
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T),
- SignatureVerificationProfile.LEVEL_T, adesList);
- checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B),
- SignatureVerificationProfile.LEVEL_B, adesList);
-
- return adesList;
- }
-
- public static void buildResult(ValidationReport report, List adesList) {
-
- if (report == null) {
- return;
- }
-
- AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl();
- adESFormResultsImpl.setCode(report.getStatus().ordinal());
- adESFormResultsImpl.setInfo(report.getLongText());
- adESFormResultsImpl.setName(report.getValidationName());
-
- adesList.add(adESFormResultsImpl);
-
- if (report.getSubValidationReports() != null && !report.getSubValidationReports().isEmpty()) {
- Iterator<ValidationReport> reportIt = report.getSubValidationReports().iterator();
- while (reportIt.hasNext()) {
- buildResult(reportIt.next(), adesList);
- }
- }
-
- }
-
- public static void checkSubResult(AdESVerificationResult subResult, String level, List adesList) {
- if (subResult != null) {
- Logger.debug("Checking Level: " + level);
- try {
-
- AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl();
- adESFormResultsImpl.setCode(subResult.getResultCode());
- Logger.debug("RESULT: " + String.valueOf(subResult.getResultCode()));
- adESFormResultsImpl.setInfo(subResult.getInfo());
- adESFormResultsImpl.setName(level);
-
- adesList.add(adESFormResultsImpl);
- } catch (NullPointerException e) {
- Logger.warn("Catching NullPointer Exception, of invalid Form Results", e);
-
- }
- } else {
- Logger.info("Subresult Level: " + level + " not available");
-
- }
- }
-
- public static void checkSubResult(SignatureVerificationResult subResult, String level, List adesList)
- throws ConfigurationException {
- if (subResult != null) {
- Logger.debug("Checking Level: " + level);
- try {
-
- AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl();
- iaik.server.modules.resultcodes.ResultCode resultCode = subResult.getResultCode();
- if (resultCode instanceof ResultCodeValid) {
- adESFormResultsImpl.setCode(SignatureVerificationResult.VALID);// .getResultCode().getCode()));
- } else if (resultCode instanceof ResultCodeInvalid) {
- adESFormResultsImpl.setCode(SignatureVerificationResult.INVALID);
- } else {
- adESFormResultsImpl.setCode(SignatureVerificationResult.INDETERMINATE);
- }
- Logger.debug("RESULT: " + resultCode.toString());
- adESFormResultsImpl.setInfo(subResult.getInfo());
- adESFormResultsImpl.setName(level);
-
- adesList.add(adESFormResultsImpl);
- } catch (NullPointerException e) {
- Logger.warn("Catching NullPointer Exception, of invalid? Form Results", e);
- }
- } else {
- Logger.info("Subresult Level: " + level + " not available");
- }
- }
+
+ /*
+ * This code returns the result for all forms
+ */
+ // add results for all form types to response
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LTA),
+ SignatureVerificationProfile.LEVEL_LTA, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_LT),
+ SignatureVerificationProfile.LEVEL_LT, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_T),
+ SignatureVerificationProfile.LEVEL_T, adesList);
+ checkSubResult(adesFormVerification.getSubResult(SignatureVerificationProfile.LEVEL_B),
+ SignatureVerificationProfile.LEVEL_B, adesList);
+
+ return adesList;
+ }
+
+ public static void buildResult(ValidationReport report, List adesList) {
+
+ if (report == null) {
+ return;
+ }
+
+ final AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl();
+ adESFormResultsImpl.setCode(report.getStatus().ordinal());
+ adESFormResultsImpl.setInfo(report.getLongText());
+ adESFormResultsImpl.setName(report.getValidationName());
+
+ adesList.add(adESFormResultsImpl);
+
+ if (report.getSubValidationReports() != null && !report.getSubValidationReports().isEmpty()) {
+ final Iterator<ValidationReport> reportIt = report.getSubValidationReports().iterator();
+ while (reportIt.hasNext()) {
+ buildResult(reportIt.next(), adesList);
+ }
+ }
+
+ }
+
+ public static void checkSubResult(AdESVerificationResult subResult, String level, List adesList) {
+ if (subResult != null) {
+ Logger.debug("Checking Level: " + level);
+ try {
+
+ final AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl();
+ adESFormResultsImpl.setCode(subResult.getResultCode());
+ Logger.debug("RESULT: " + String.valueOf(subResult.getResultCode()));
+ adESFormResultsImpl.setInfo(subResult.getInfo());
+ adESFormResultsImpl.setName(level);
+
+ adesList.add(adESFormResultsImpl);
+ } catch (final NullPointerException e) {
+ Logger.warn("Catching NullPointer Exception, of invalid Form Results", e);
+
+ }
+ } else {
+ Logger.info("Subresult Level: " + level + " not available");
+
+ }
+ }
+
+ public static void checkSubResult(SignatureVerificationResult subResult, String level, List adesList)
+ throws ConfigurationException {
+ if (subResult != null) {
+ Logger.debug("Checking Level: " + level);
+ try {
+
+ final AdESFormResultsImpl adESFormResultsImpl = new AdESFormResultsImpl();
+ final iaik.server.modules.resultcodes.ResultCode resultCode = subResult.getResultCode();
+ if (resultCode instanceof ResultCodeValid) {
+ adESFormResultsImpl.setCode(SignatureVerificationResult.VALID);// .getResultCode().getCode()));
+ } else if (resultCode instanceof ResultCodeInvalid) {
+ adESFormResultsImpl.setCode(SignatureVerificationResult.INVALID);
+ } else {
+ adESFormResultsImpl.setCode(SignatureVerificationResult.INDETERMINATE);
+ }
+ Logger.debug("RESULT: " + resultCode.toString());
+ adESFormResultsImpl.setInfo(subResult.getInfo());
+ adESFormResultsImpl.setName(level);
+
+ adesList.add(adESFormResultsImpl);
+ } catch (final NullPointerException e) {
+ Logger.warn("Catching NullPointer Exception, of invalid? Form Results", e);
+ }
+ } else {
+ Logger.info("Subresult Level: " + level + " not available");
+ }
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java
index ac3439d..59db5db 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertStoreConverter.java
@@ -14,96 +14,96 @@ import iaik.pki.store.certstore.utils.DirectoryCertStoreConverter;
public class CertStoreConverter {
- private static final Logger logger = LoggerFactory.getLogger(CertStoreConverter.class);
-
- public static boolean convert(String certStoreRoot, TransactionId transId) {
- String certStoreSubjectDN = certStoreRoot + File.separator + "subjectdn";
-
- logger.info("checking for new cert store format {} -> {}", certStoreRoot, certStoreSubjectDN);
-
- File certStoreDirectory = new File(certStoreRoot);
- if (certStoreDirectory.isDirectory() && certStoreDirectory.exists()) {
-
- File file = new File(certStoreSubjectDN);
-
- if (file.isDirectory() && file.exists()) {
- // Is new Format!
- logger.info("Cert store is allready new format!");
- return false;
- } else {
- try {
- logger.info(
- "###########################################################################################");
- logger.info(
- "###########################################################################################");
- logger.info("The certificate store @ {} will now be converted into the new format!",
- certStoreDirectory.getAbsolutePath());
-
- String backup = certStoreRoot;
-
- if (certStoreRoot.endsWith(File.separator)) {
- backup = certStoreRoot.substring(0, certStoreRoot.length() - File.separator.length());
- }
-
- String timestamp = String.valueOf(System.currentTimeMillis());
- backup = backup + "_" + timestamp;
-
- logger.info("Creating a backup of the certstore @ {}", backup);
-
- File backupDirectory = new File(backup);
- try {
- FileUtils.copyDirectory(certStoreDirectory, backupDirectory);
- } catch (IOException e) {
- logger.error("Failed to create certstore backup!", e);
- throw new RuntimeException("Failed to create certstore backup!", e);
- }
-
- logger.info("deleting original certstore @ {}", certStoreRoot);
-
- try {
- FileUtils.deleteDirectory(certStoreDirectory);
- } catch (IOException e1) {
- logger.error("Failed to delete old certstore!", e1);
- throw new RuntimeException("Failed to delete old certstore!", e1);
- }
- certStoreDirectory.mkdir();
-
- DirectoryCertStoreConverter directoryCertStoreConverter = new DirectoryCertStoreConverter();
-
- try {
- logger.info("running conversion of certstore @ {}", certStoreRoot);
- directoryCertStoreConverter.convert(backupDirectory.getAbsolutePath(),
- certStoreDirectory.getAbsolutePath(), true, false,
- new IaikLog("DirectoryCertStoreConverter"), transId);
- } catch (DirectoryStoreException e) {
- logger.error("Failed to run conversion of old certstore!", e);
-
- try {
- FileUtils.copyDirectory(backupDirectory, certStoreDirectory);
- } catch (IOException e1) {
- logger.error("!!!!Failed to restore original certstore!!!! CHECK LOGS", e1);
- throw new RuntimeException("!!!!Failed to restore original certstore!!!! CHECK LOGS", e);
-
- }
- throw new RuntimeException("Failed to run conversion of old certstore!", e);
- }
-
- logger.info("Conversion of certstore succseeded");
- logger.info("Certstore in new format is located @ {}", certStoreDirectory.getAbsolutePath());
- logger.info("Backup of Certstore in old format is located @ {}",
- certStoreDirectory.getAbsolutePath());
- } finally {
- logger.info(
- "###########################################################################################");
- logger.info(
- "###########################################################################################");
- }
- return true;
- }
- } else {
- logger.error("Certstore does not exist yet");
- }
- return false;
- }
-
+ private static final Logger logger = LoggerFactory.getLogger(CertStoreConverter.class);
+
+ public static boolean convert(String certStoreRoot, TransactionId transId) {
+ final String certStoreSubjectDN = certStoreRoot + File.separator + "subjectdn";
+
+ logger.info("checking for new cert store format {} -> {}", certStoreRoot, certStoreSubjectDN);
+
+ final File certStoreDirectory = new File(certStoreRoot);
+ if (certStoreDirectory.isDirectory() && certStoreDirectory.exists()) {
+
+ final File file = new File(certStoreSubjectDN);
+
+ if (file.isDirectory() && file.exists()) {
+ // Is new Format!
+ logger.debug("Cert store is allready new format!");
+ return false;
+ } else {
+ try {
+ logger.info(
+ "###########################################################################################");
+ logger.info(
+ "###########################################################################################");
+ logger.info("The certificate store @ {} will now be converted into the new format!",
+ certStoreDirectory.getAbsolutePath());
+
+ String backup = certStoreRoot;
+
+ if (certStoreRoot.endsWith(File.separator)) {
+ backup = certStoreRoot.substring(0, certStoreRoot.length() - File.separator.length());
+ }
+
+ final String timestamp = String.valueOf(System.currentTimeMillis());
+ backup = backup + "_" + timestamp;
+
+ logger.info("Creating a backup of the certstore @ {}", backup);
+
+ final File backupDirectory = new File(backup);
+ try {
+ FileUtils.copyDirectory(certStoreDirectory, backupDirectory);
+ } catch (final IOException e) {
+ logger.error("Failed to create certstore backup!", e);
+ throw new RuntimeException("Failed to create certstore backup!", e);
+ }
+
+ logger.info("deleting original certstore @ {}", certStoreRoot);
+
+ try {
+ FileUtils.deleteDirectory(certStoreDirectory);
+ } catch (final IOException e1) {
+ logger.error("Failed to delete old certstore!", e1);
+ throw new RuntimeException("Failed to delete old certstore!", e1);
+ }
+ certStoreDirectory.mkdir();
+
+ final DirectoryCertStoreConverter directoryCertStoreConverter = new DirectoryCertStoreConverter();
+
+ try {
+ logger.info("running conversion of certstore @ {}", certStoreRoot);
+ directoryCertStoreConverter.convert(backupDirectory.getAbsolutePath(),
+ certStoreDirectory.getAbsolutePath(), true, false,
+ new IaikLog("DirectoryCertStoreConverter"), transId);
+ } catch (final DirectoryStoreException e) {
+ logger.error("Failed to run conversion of old certstore!", e);
+
+ try {
+ FileUtils.copyDirectory(backupDirectory, certStoreDirectory);
+ } catch (final IOException e1) {
+ logger.error("!!!!Failed to restore original certstore!!!! CHECK LOGS", e1);
+ throw new RuntimeException("!!!!Failed to restore original certstore!!!! CHECK LOGS", e);
+
+ }
+ throw new RuntimeException("Failed to run conversion of old certstore!", e);
+ }
+
+ logger.info("Conversion of certstore succseeded");
+ logger.info("Certstore in new format is located @ {}", certStoreDirectory.getAbsolutePath());
+ logger.info("Backup of Certstore in old format is located @ {}",
+ certStoreDirectory.getAbsolutePath());
+ } finally {
+ logger.info(
+ "###########################################################################################");
+ logger.info(
+ "###########################################################################################");
+ }
+ return true;
+ }
+ } else {
+ logger.error("Certstore does not exist yet");
+ }
+ return false;
+ }
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java
index ae7fef7..b7580ac 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/CertificateUtils.java
@@ -1,18 +1,5 @@
package at.gv.egovernment.moa.spss.util;
-import iaik.asn1.ObjectID;
-import iaik.asn1.structures.Name;
-import iaik.asn1.structures.PolicyInformation;
-import iaik.utils.RFC2253NameParser;
-import iaik.utils.RFC2253NameParserException;
-import iaik.x509.X509Certificate;
-import iaik.x509.X509ExtensionInitException;
-import iaik.x509.extensions.CertificatePolicies;
-import iaik.x509.extensions.qualified.QCStatements;
-import iaik.x509.extensions.qualified.structures.QCStatement;
-import iaik.x509.extensions.qualified.structures.etsi.QcEuCompliance;
-import iaik.x509.extensions.qualified.structures.etsi.QcEuSSCD;
-
import java.net.URI;
import java.security.Principal;
import java.util.Arrays;
@@ -22,370 +9,387 @@ import java.util.List;
import at.gv.egovernment.moa.sig.tsl.TslConstants;
import at.gv.egovernment.moa.sig.tsl.engine.data.ITslEndEntityResult;
import at.gv.egovernment.moa.sig.tsl.exception.TslException;
-import at.gv.egovernment.moa.sig.tsl.utils.MiscUtil;
import at.gv.egovernment.moa.spss.api.common.TslInfos;
import at.gv.egovernment.moa.spss.api.impl.TslInfosImpl;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.asn1.ObjectID;
+import iaik.asn1.structures.Name;
+import iaik.asn1.structures.PolicyInformation;
+import iaik.utils.RFC2253NameParser;
+import iaik.utils.RFC2253NameParserException;
+import iaik.x509.X509Certificate;
+import iaik.x509.X509ExtensionInitException;
+import iaik.x509.extensions.CertificatePolicies;
+import iaik.x509.extensions.qualified.QCStatements;
+import iaik.x509.extensions.qualified.structures.QCStatement;
+import iaik.x509.extensions.qualified.structures.etsi.QcEuCompliance;
+import iaik.x509.extensions.qualified.structures.etsi.QcEuSSCD;
public class CertificateUtils {
-
-
- /**
- * Verifies if the given certificate contains QCP+ statement
- * @param cert X509Certificate
- * @return true if the given certificate contains QCP+ statement, else false
- */
- private static boolean checkQCPPlus(X509Certificate cert) {
- Logger.debug("Checking QCP+ extension");
- String OID_QCPPlus = "0.4.0.1456.1.1";
- try {
- CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid);
- if (certPol == null) {
- Logger.debug("No CertificatePolicies extension found");
- return false;
- }
-
- PolicyInformation[] polInfo = certPol.getPolicyInformation();
- if (polInfo == null) {
- Logger.debug("No policy information found");
- return false;
- }
-
- for (int i = 0; i < polInfo.length; i++) {
- ObjectID oid = polInfo[i].getPolicyIdentifier();
- String oidStr = oid.getID();
- if (oidStr.compareToIgnoreCase(OID_QCPPlus) == 0) {
- Logger.debug("QCP+ extension found");
- return true;
- }
- }
-
- Logger.debug("No QCP+ extension found");
-
- return false;
- } catch (X509ExtensionInitException e) {
- Logger.debug("No QCP+ extension found");
-
- return false;
- }
-
- }
-
- /**
- * Verifies if the given certificate contains QCP statement
- * @param cert X509Certificate
- * @return true if the given certificate contains QCP statement, else false
- */
- private static boolean checkQCP(X509Certificate cert) {
- Logger.debug("Checking QCP extension");
- String OID_QCP = "0.4.0.1456.1.2";
- try {
- CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid);
- if (certPol == null) {
- Logger.debug("No CertificatePolicies extension found");
- return false;
- }
-
- PolicyInformation[] polInfo = certPol.getPolicyInformation();
- if (polInfo == null) {
- Logger.debug("No policy information found");
- return false;
- }
-
- for (int i = 0; i < polInfo.length; i++) {
- ObjectID oid = polInfo[i].getPolicyIdentifier();
- String oidStr = oid.getID();
- if (oidStr.compareToIgnoreCase(OID_QCP) == 0) {
- Logger.debug("QCP extension found");
- return true;
- }
-
- }
-
- Logger.debug("No QCP extension found");
- return false;
-
- } catch (X509ExtensionInitException e) {
- Logger.debug("No QCP extension found");
- return false;
- }
-
- }
-
- /**
- * Verifies if the given certificate contains QcEuCompliance statement
- * @param cert X509Certificate
- * @return true if the given certificate contains QcEuCompliance statement, else false
- */
- private static boolean checkQcEuCompliance(X509Certificate cert) {
- Logger.debug("Checking QcEUCompliance extension");
- try {
- QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid);
-
- if (qcStatements == null) {
- Logger.debug("No QcStatements extension found");
- return false;
- }
-
- QCStatement qcEuCompliance = qcStatements.getQCStatements(QcEuCompliance.statementID);
-
- if (qcEuCompliance != null) {
- Logger.debug("QcEuCompliance extension found");
- return true;
- }
-
- Logger.debug("No QcEuCompliance extension found");
- return false;
-
- } catch (X509ExtensionInitException e) {
- Logger.debug("No QcEuCompliance extension found");
- return false;
- }
-
- }
-
- /**
- * Verifies if the given certificate contains QcEuSSCD statement
- * @param cert X509Certificate
- * @return true if the given certificate contains QcEuSSCD statement, else false
- */
- private static boolean checkQcEuSSCD(X509Certificate cert) {
- Logger.debug("Checking QcEuSSCD extension");
- try {
- QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid);
- if (qcStatements == null) {
- Logger.debug("No QcStatements extension found");
- return false;
- }
-
- QCStatement qcEuSSCD = qcStatements.getQCStatements(QcEuSSCD.statementID);
-
- if (qcEuSSCD != null) {
- Logger.debug("QcEuSSCD extension found");
- return true;
- }
-
- Logger.debug("No QcEuSSCD extension found");
- return false;
-
- } catch (X509ExtensionInitException e) {
- Logger.debug("No QcEuSSCD extension found");
- return false;
- }
-
- }
-
- public static QCSSCDResult checkQCSSCD(X509Certificate[] chain, Date signingTime, boolean isTSLenabledTrustprofile, ConfigurationProvider config) {
-
- try {
- if (isTSLenabledTrustprofile) {
- if (signingTime == null) {
- signingTime = new Date();
- Logger.debug("TSL check without signingTime --> use current time for evaluation");
-
- }
-
- ITslEndEntityResult tslCheckResult =
- TSLServiceFactory.getTSLServiceClient().evaluate(
- Arrays.asList(chain),
- signingTime,
- TslConstants.PKIX_MODEL);
-
- if (tslCheckResult != null) {
- URI tslServiceTypeIdentifier = tslCheckResult.getEvaluatedServiceTypeIdentifier();
- List<URI> tslCertificateQualifier = tslCheckResult.getEvaluatedQualifier();
-
- // QC evaluation flags
- boolean qc = false;
- boolean qcSourceTSL = false;
- boolean qcDisallowedFromTSL = false;
-
- // SSCD/QSCD evaluation flags
- boolean sscd = false;
- boolean sscdSourceTSL = false;
-
-
- //check QC
- List<URI> allowedQCQualifier = config.getTSLConfiguration().getQualifierForQC();
- for (URI el : allowedQCQualifier) {
- if (el.equals(tslServiceTypeIdentifier)) {
- qcSourceTSL = true;
- qc = true;
-
- }
-
- }
-
- //check SSCD/QSCD qualifiers and mark result acording this check
- List<URI> allowedSSCDQualifier = config.getTSLConfiguration().getQualifierForSSCD();
- if (tslCertificateQualifier != null && allowedSSCDQualifier != null) {
- for (URI allowedSSCD : allowedSSCDQualifier) {
- for (URI certSSCD : tslCertificateQualifier) {
- if (allowedSSCD.equals(certSSCD)) {
- sscdSourceTSL = true;
- sscd = true;
-
- }
- }
- }
- }
-
- //check additional flags in TSP qualifiers for this certificate
- if (tslCertificateQualifier != null) {
- for (URI qEl : tslCertificateQualifier) {
- //check if SSCD/QSCD status must be used from cert
- if (qEl.equals(
- TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get(
- TslConstants.SSCD_QUALIFIER_SHORT.QCQSCDStatusAsInCert))
- || qEl.equals(TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get(
- TslConstants.SSCD_QUALIFIER_SHORT.QCSSCDStatusAsInCert))) {
-
- sscdSourceTSL = false;
- sscd = false;
-
- //check if extentsion includes a NotQualified flag
- } else if (qEl.equals(
- TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get(
- TslConstants.SSCD_QUALIFIER_SHORT.NotQualified))) {
- qc = false;
- qcSourceTSL = false;
- qcDisallowedFromTSL = true;
- Logger.info("TSL mark this certificate explicitly as 'NotQualified'!");
-
- }
- }
- }
-
- /*
- * This block is removes with MOA-SP 3.1 because if TSL support is enabled for the requested TrustProfile
- * QC evaluation is ONLY allowed from TSL information!!! Because with eIDAS regulation and July 01. 2016
- * the Trust-Status List is constitutive.
- */
-// //evaluate QC statement according previous selected information
-// if (qcSourceTSL)
+
+ /**
+ * Verifies if the given certificate contains QCP+ statement
+ *
+ * @param cert X509Certificate
+ * @return true if the given certificate contains QCP+ statement, else false
+ */
+ private static boolean checkQCPPlus(X509Certificate cert) {
+ Logger.debug("Checking QCP+ extension");
+ final String OID_QCPPlus = "0.4.0.1456.1.1";
+ try {
+ final CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid);
+ if (certPol == null) {
+ Logger.debug("No CertificatePolicies extension found");
+ return false;
+ }
+
+ final PolicyInformation[] polInfo = certPol.getPolicyInformation();
+ if (polInfo == null) {
+ Logger.debug("No policy information found");
+ return false;
+ }
+
+ for (final PolicyInformation element : polInfo) {
+ final ObjectID oid = element.getPolicyIdentifier();
+ final String oidStr = oid.getID();
+ if (oidStr.compareToIgnoreCase(OID_QCPPlus) == 0) {
+ Logger.debug("QCP+ extension found");
+ return true;
+ }
+ }
+
+ Logger.debug("No QCP+ extension found");
+
+ return false;
+ } catch (final X509ExtensionInitException e) {
+ Logger.debug("No QCP+ extension found");
+
+ return false;
+ }
+
+ }
+
+ /**
+ * Verifies if the given certificate contains QCP statement
+ *
+ * @param cert X509Certificate
+ * @return true if the given certificate contains QCP statement, else false
+ */
+ private static boolean checkQCP(X509Certificate cert) {
+ Logger.debug("Checking QCP extension");
+ final String OID_QCP = "0.4.0.1456.1.2";
+ try {
+ final CertificatePolicies certPol = (CertificatePolicies) cert.getExtension(CertificatePolicies.oid);
+ if (certPol == null) {
+ Logger.debug("No CertificatePolicies extension found");
+ return false;
+ }
+
+ final PolicyInformation[] polInfo = certPol.getPolicyInformation();
+ if (polInfo == null) {
+ Logger.debug("No policy information found");
+ return false;
+ }
+
+ for (final PolicyInformation element : polInfo) {
+ final ObjectID oid = element.getPolicyIdentifier();
+ final String oidStr = oid.getID();
+ if (oidStr.compareToIgnoreCase(OID_QCP) == 0) {
+ Logger.debug("QCP extension found");
+ return true;
+ }
+
+ }
+
+ Logger.debug("No QCP extension found");
+ return false;
+
+ } catch (final X509ExtensionInitException e) {
+ Logger.debug("No QCP extension found");
+ return false;
+ }
+
+ }
+
+ /**
+ * Verifies if the given certificate contains QcEuCompliance statement
+ *
+ * @param cert X509Certificate
+ * @return true if the given certificate contains QcEuCompliance statement, else
+ * false
+ */
+ private static boolean checkQcEuCompliance(X509Certificate cert) {
+ Logger.debug("Checking QcEUCompliance extension");
+ try {
+ final QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid);
+
+ if (qcStatements == null) {
+ Logger.debug("No QcStatements extension found");
+ return false;
+ }
+
+ final QCStatement qcEuCompliance = qcStatements.getQCStatements(QcEuCompliance.statementID);
+
+ if (qcEuCompliance != null) {
+ Logger.debug("QcEuCompliance extension found");
+ return true;
+ }
+
+ Logger.debug("No QcEuCompliance extension found");
+ return false;
+
+ } catch (final X509ExtensionInitException e) {
+ Logger.debug("No QcEuCompliance extension found");
+ return false;
+ }
+
+ }
+
+ /**
+ * Verifies if the given certificate contains QcEuSSCD statement
+ *
+ * @param cert X509Certificate
+ * @return true if the given certificate contains QcEuSSCD statement, else false
+ */
+ private static boolean checkQcEuSSCD(X509Certificate cert) {
+ Logger.debug("Checking QcEuSSCD extension");
+ try {
+ final QCStatements qcStatements = (QCStatements) cert.getExtension(QCStatements.oid);
+ if (qcStatements == null) {
+ Logger.debug("No QcStatements extension found");
+ return false;
+ }
+
+ final QCStatement qcEuSSCD = qcStatements.getQCStatements(QcEuSSCD.statementID);
+
+ if (qcEuSSCD != null) {
+ Logger.debug("QcEuSSCD extension found");
+ return true;
+ }
+
+ Logger.debug("No QcEuSSCD extension found");
+ return false;
+
+ } catch (final X509ExtensionInitException e) {
+ Logger.debug("No QcEuSSCD extension found");
+ return false;
+ }
+
+ }
+
+ public static QCSSCDResult checkQCSSCD(X509Certificate[] chain, Date signingTime,
+ boolean isTSLenabledTrustprofile, ConfigurationProvider config) {
+
+ try {
+ if (isTSLenabledTrustprofile) {
+ if (signingTime == null) {
+ signingTime = new Date();
+ Logger.debug("TSL check without signingTime --> use current time for evaluation");
+
+ }
+
+ final ITslEndEntityResult tslCheckResult =
+ TSLServiceFactory.getTSLServiceClient().evaluate(
+ Arrays.asList(chain),
+ signingTime,
+ TslConstants.PKIX_MODEL);
+
+ if (tslCheckResult != null) {
+ final URI tslServiceTypeIdentifier = tslCheckResult.getEvaluatedServiceTypeIdentifier();
+ final List<URI> tslCertificateQualifier = tslCheckResult.getEvaluatedQualifier();
+
+ // QC evaluation flags
+ boolean qc = false;
+ boolean qcSourceTSL = false;
+ boolean qcDisallowedFromTSL = false;
+
+ // SSCD/QSCD evaluation flags
+ boolean sscd = false;
+ boolean sscdSourceTSL = false;
+
+ // check QC
+ final List<URI> allowedQCQualifier = config.getTSLConfiguration().getQualifierForQC();
+ for (final URI el : allowedQCQualifier) {
+ if (el.equals(tslServiceTypeIdentifier)) {
+ qcSourceTSL = true;
+ qc = true;
+
+ }
+
+ }
+
+ // check SSCD/QSCD qualifiers and mark result acording this check
+ final List<URI> allowedSSCDQualifier = config.getTSLConfiguration().getQualifierForSSCD();
+ if (tslCertificateQualifier != null && allowedSSCDQualifier != null) {
+ for (final URI allowedSSCD : allowedSSCDQualifier) {
+ for (final URI certSSCD : tslCertificateQualifier) {
+ if (allowedSSCD.equals(certSSCD)) {
+ sscdSourceTSL = true;
+ sscd = true;
+
+ }
+ }
+ }
+ }
+
+ // check additional flags in TSP qualifiers for this certificate
+ if (tslCertificateQualifier != null) {
+ for (final URI qEl : tslCertificateQualifier) {
+ // check if SSCD/QSCD status must be used from cert
+ if (qEl.equals(
+ TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get(
+ TslConstants.SSCD_QUALIFIER_SHORT.QCQSCDStatusAsInCert))
+ || qEl.equals(TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get(
+ TslConstants.SSCD_QUALIFIER_SHORT.QCSSCDStatusAsInCert))) {
+
+ sscdSourceTSL = false;
+ sscd = false;
+
+ // check if extentsion includes a NotQualified flag
+ } else if (qEl.equals(
+ TslConstants.SSCD_QUALIFIER_SORT_TO_URI.get(
+ TslConstants.SSCD_QUALIFIER_SHORT.NotQualified))) {
+ qc = false;
+ qcSourceTSL = false;
+ qcDisallowedFromTSL = true;
+ Logger.info("TSL mark this certificate explicitly as 'NotQualified'!");
+
+ }
+ }
+ }
+
+ /*
+ * This block is removes with MOA-SP 3.1 because if TSL support is enabled for
+ * the requested TrustProfile QC evaluation is ONLY allowed from TSL
+ * information!!! Because with eIDAS regulation and July 01. 2016 the
+ * Trust-Status List is constitutive.
+ */
+// //evaluate QC statement according previous selected information
+// if (qcSourceTSL)
// Logger.debug("Certificate is QC (Source: TSL)");
-//
+//
// else {
-//
-//
+//
+//
// // if TSL return no service-type identifier us information from certificate
-// if (tslServiceTypeIdentifier == null ||
+// if (tslServiceTypeIdentifier == null ||
// MiscUtil.isEmpty(tslServiceTypeIdentifier.toString())) {
// // try certificate extensions QCP and QcEuCompliance
// Logger.debug("QC check via TSL returned false - checking certificate extensions");
// boolean checkQCP = CertificateUtils.checkQCP(chain[0]);
// boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]);
-//
+//
// if ((checkQCP || checkQcEuCompliance) && !qcDisallowedFromTSL) {
// Logger.debug("Certificate is QC (Source: Certificate)");
// qc = true;
-//
+//
// }
-// }
+// }
// }
-
-
- //evaluate SSCD/QSCD results according previous selected information
- if (sscdSourceTSL)
- Logger.debug("Certificate is SSCD (Source: TSL)");
-
- else {
- // if SSCD check via TSL returns false
- // try certificate extensions QCP+ and QcEuSSCD
- Logger.debug("SSCD check via TSL returned false - checking certificate extensions");
- boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]);
- boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]);
-
- if (checkQCPPlus || checkQcEuSSCD) {
- Logger.debug("Certificate is SSCD (Source: Certificate)");
- sscd = true;
- }
- }
-
- //build basic result
- QCSSCDResult result = new QCSSCDResult(qc, qcSourceTSL, sscd, sscdSourceTSL);
-
- //add additinal information
- TslInfos extTslInfos = new TslInfosImpl(
- tslCheckResult.getTerritory(),
- tslCheckResult.getTspStatus(),
- tslServiceTypeIdentifier.toString(),
- tslCertificateQualifier,
- tslCheckResult.getAdditionalServiceInformation());
- result.setTslInfos(extTslInfos);
-
- return result;
-
- } else {
- Logger.debug("Qualifier check via TSL return null - checking certificate extensions without QC evaluation");
- return parseInfosFromCertificate(chain, false);
-
- }
-
- } else
- Logger.info("TSL support is not enabled - checking certificate extensions with QC evaluation ");
- return parseInfosFromCertificate(chain, true);
- }
- catch (TslException e) {
- MessageProvider msg = MessageProvider.getInstance();
- Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e);
-
- return new QCSSCDResult();
- }
-
- }
-
- private static QCSSCDResult parseInfosFromCertificate(X509Certificate[] chain, boolean performQCEvaluation) {
- boolean qc = false;
- boolean sscd = false;
-
- // Trustprofile is not TSL enabled - use certificate extensions only
-
- if (performQCEvaluation) {
- // perform QC check
- // try certificate extensions QCP and QcEuCompliance
- boolean checkQCP = CertificateUtils.checkQCP(chain[0]);
- boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]);
-
- if (checkQCP || checkQcEuCompliance)
- qc = true;
-
- }
-
- // perform SSCD check
- // try certificate extensions QCP+ and QcEuSSCD
- boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]);
- boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]);
-
- if (checkQCPPlus || checkQcEuSSCD)
- sscd = true;
-
- return new QCSSCDResult(qc, false, sscd, false);
-
- }
-
-
- /**
- * Gets the country from the certificate issuer
- * @param cert X509 certificate
- * @return Country code from the certificate issuer
- */
- public static String getIssuerCountry(X509Certificate cert) {
- String country = null;
- Principal issuerdn = cert.getIssuerX500Principal();
- RFC2253NameParser nameParser = new RFC2253NameParser(issuerdn.getName());
-
- try {
- Name name = nameParser.parse();
- country = name.getRDN(ObjectID.country);
- } catch (RFC2253NameParserException e) {
- Logger.warn("Could not get country code from issuer.");
- }
-
-
- return country;
- }
+
+ // evaluate SSCD/QSCD results according previous selected information
+ if (sscdSourceTSL) {
+ Logger.debug("Certificate is SSCD (Source: TSL)");
+ } else {
+ // if SSCD check via TSL returns false
+ // try certificate extensions QCP+ and QcEuSSCD
+ Logger.debug("SSCD check via TSL returned false - checking certificate extensions");
+ final boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]);
+ final boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]);
+
+ if (checkQCPPlus || checkQcEuSSCD) {
+ Logger.debug("Certificate is SSCD (Source: Certificate)");
+ sscd = true;
+ }
+ }
+
+ // build basic result
+ final QCSSCDResult result = new QCSSCDResult(qc, qcSourceTSL, sscd, sscdSourceTSL);
+
+ // add additinal information
+ final TslInfos extTslInfos = new TslInfosImpl(
+ tslCheckResult.getTerritory(),
+ tslCheckResult.getTspStatus(),
+ tslServiceTypeIdentifier.toString(),
+ tslCertificateQualifier,
+ tslCheckResult.getAdditionalServiceInformation());
+ result.setTslInfos(extTslInfos);
+
+ return result;
+
+ } else {
+ Logger.debug(
+ "Qualifier check via TSL return null - checking certificate extensions without QC evaluation");
+ return parseInfosFromCertificate(chain, false);
+
+ }
+
+ } else {
+ Logger.info("TSL support is not enabled - checking certificate extensions with QC evaluation ");
+ }
+ return parseInfosFromCertificate(chain, true);
+ } catch (final TslException e) {
+ final MessageProvider msg = MessageProvider.getInstance();
+ Logger.error(new LogMsg(msg.getMessage("tsl.01", null)), e);
+
+ return new QCSSCDResult();
+ }
+
+ }
+
+ private static QCSSCDResult parseInfosFromCertificate(X509Certificate[] chain,
+ boolean performQCEvaluation) {
+ boolean qc = false;
+ boolean sscd = false;
+
+ // Trustprofile is not TSL enabled - use certificate extensions only
+
+ if (performQCEvaluation) {
+ // perform QC check
+ // try certificate extensions QCP and QcEuCompliance
+ final boolean checkQCP = CertificateUtils.checkQCP(chain[0]);
+ final boolean checkQcEuCompliance = CertificateUtils.checkQcEuCompliance(chain[0]);
+
+ if (checkQCP || checkQcEuCompliance) {
+ qc = true;
+ }
+
+ }
+
+ // perform SSCD check
+ // try certificate extensions QCP+ and QcEuSSCD
+ final boolean checkQCPPlus = CertificateUtils.checkQCPPlus(chain[0]);
+ final boolean checkQcEuSSCD = CertificateUtils.checkQcEuSSCD(chain[0]);
+
+ if (checkQCPPlus || checkQcEuSSCD) {
+ sscd = true;
+ }
+
+ return new QCSSCDResult(qc, false, sscd, false);
+
+ }
+
+ /**
+ * Gets the country from the certificate issuer
+ *
+ * @param cert X509 certificate
+ * @return Country code from the certificate issuer
+ */
+ public static String getIssuerCountry(X509Certificate cert) {
+ String country = null;
+ final Principal issuerdn = cert.getIssuerX500Principal();
+ final RFC2253NameParser nameParser = new RFC2253NameParser(issuerdn.getName());
+
+ try {
+ final Name name = nameParser.parse();
+ country = name.getRDN(ObjectID.country);
+ } catch (final RFC2253NameParserException e) {
+ Logger.warn("Could not get country code from issuer.");
+ }
+
+ return country;
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java
index 859e7e9..be40a9e 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ExternalURIVerifier.java
@@ -12,103 +12,103 @@ import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
public class ExternalURIVerifier {
-
- public static void verify(String host, int port) throws MOAApplicationException {
-
-
- if (host == null)
- return;
- if (host.equalsIgnoreCase(""))
- return;
-
- try {
- ConfigurationProvider config = ConfigurationProvider.getInstance();
-
- boolean allowExternalUris = config.getAllowExternalUris();
- List blacklist = config.getBlackListedUris();
- List whitelist = config.getWhiteListedUris();
-
- InetAddress hostInetAddress = InetAddress.getByName(host);
- String ip = hostInetAddress.getHostAddress();
-
-
- if (allowExternalUris) {
- // external URIs are allowed - check blacklist
- Iterator it = blacklist.iterator();
- while (it.hasNext()) {
- String[] array = (String[])it.next();
- String bhost = array[0];
- String bport = array[1];
- if (bport == null || port == -1) {
- // check only host
- if (ip.startsWith(bhost)) {
- Logger.debug(new LogMsg("Blacklist check: " + host + " (" + ip + ") blacklisted"));
- throw new MOAApplicationException("4002", new Object[]{host + "(" + ip + ")"});
- }
- }
- else {
- // check host and port
- int iport = new Integer(bport).intValue();
- if (ip.startsWith(bhost) && (iport == port)) {
- Logger.debug(new LogMsg("Blacklist check: " + host + ":" + port + " (" + ip + ":" + port + " blacklisted"));
- throw new MOAApplicationException("4002", new Object[]{host + ":" + port + " (" + ip + ":" + port + ")"});
- }
-
- }
- }
- }
- else {
- // external uris are forbidden - check whitelist
- Iterator it = whitelist.iterator();
- boolean allowed = false;
- while (it.hasNext()) {
- String[] array = (String[])it.next();
- String bhost = array[0];
- String bport = array[1];
- if (bport == null || port == -1) {
- // check only host
- if (ip.startsWith(bhost)) {
- Logger.debug(new LogMsg("Whitelist check: " + host + " (" + ip + ") whitelisted"));
- allowed = true;
- //throw new MOAApplicationException("4002", new Object[]{host + "(" + ip + ")"});
- }
- }
- else {
- // check host and port
- int iport = new Integer(bport).intValue();
- if (ip.startsWith(bhost) && (iport == port)) {
- Logger.debug(new LogMsg("Whitelist check: " + host + ":" + port + " (" + ip + ":" + port + " whitelisted"));
- //throw new MOAApplicationException("4002", new Object[]{host + ":" + port + " (" + ip + ":" + port + ")"});
- allowed = true;
- }
-
- }
- }
-
- if (!allowed) {
- if (port != -1) {
- Logger.debug(new LogMsg("No external URIs allowed (" + host + ")"));
- throw new MOAApplicationException("4001", new Object[]{host + "(" + ip + ")"});
- }
- else {
- Logger.debug(new LogMsg("No external URIs allowed (" + host + ":" + port + ")"));
- throw new MOAApplicationException("4001", new Object[]{host + ":" + port + " (" + ip + ":" + port + ")"});
- }
-
- }
-
- }
-
- Logger.debug(new LogMsg("URI allowed: " + ip + ":" + port));
-
- } catch (ConfigurationException e) {
- throw new MOAApplicationException("config.10", null);
- } catch (UnknownHostException e) {
- throw new MOAApplicationException("4003", new Object[]{host});
- }
-
-
-
- }
+
+ public static void verify(String host, int port) throws MOAApplicationException {
+
+ if (host == null) {
+ return;
+ }
+ if (host.equalsIgnoreCase("")) {
+ return;
+ }
+
+ try {
+ final ConfigurationProvider config = ConfigurationProvider.getInstance();
+
+ final boolean allowExternalUris = config.getAllowExternalUris();
+ final List blacklist = config.getBlackListedUris();
+ final List whitelist = config.getWhiteListedUris();
+
+ final InetAddress hostInetAddress = InetAddress.getByName(host);
+ final String ip = hostInetAddress.getHostAddress();
+
+ if (allowExternalUris) {
+ // external URIs are allowed - check blacklist
+ final Iterator it = blacklist.iterator();
+ while (it.hasNext()) {
+ final String[] array = (String[]) it.next();
+ final String bhost = array[0];
+ final String bport = array[1];
+ if (bport == null || port == -1) {
+ // check only host
+ if (ip.startsWith(bhost)) {
+ Logger.debug(new LogMsg("Blacklist check: " + host + " (" + ip + ") blacklisted"));
+ throw new MOAApplicationException("4002", new Object[] { host + "(" + ip + ")" });
+ }
+ } else {
+ // check host and port
+ final int iport = new Integer(bport).intValue();
+ if (ip.startsWith(bhost) && iport == port) {
+ Logger.debug(new LogMsg("Blacklist check: " + host + ":" + port + " (" + ip + ":" + port
+ + " blacklisted"));
+ throw new MOAApplicationException("4002", new Object[] { host + ":" + port + " (" + ip + ":"
+ + port + ")" });
+ }
+
+ }
+ }
+ } else {
+ // external uris are forbidden - check whitelist
+ final Iterator it = whitelist.iterator();
+ boolean allowed = false;
+ while (it.hasNext()) {
+ final String[] array = (String[]) it.next();
+ final String bhost = array[0];
+ final String bport = array[1];
+ if (bport == null || port == -1) {
+ // check only host
+ if (ip.startsWith(bhost)) {
+ Logger.debug(new LogMsg("Whitelist check: " + host + " (" + ip + ") whitelisted"));
+ allowed = true;
+ // throw new MOAApplicationException("4002", new Object[]{host + "(" + ip +
+ // ")"});
+ }
+ } else {
+ // check host and port
+ final int iport = new Integer(bport).intValue();
+ if (ip.startsWith(bhost) && iport == port) {
+ Logger.debug(new LogMsg("Whitelist check: " + host + ":" + port + " (" + ip + ":" + port
+ + " whitelisted"));
+ // throw new MOAApplicationException("4002", new Object[]{host + ":" + port + "
+ // (" + ip + ":" + port + ")"});
+ allowed = true;
+ }
+
+ }
+ }
+
+ if (!allowed) {
+ if (port != -1) {
+ Logger.debug(new LogMsg("No external URIs allowed (" + host + ")"));
+ throw new MOAApplicationException("4001", new Object[] { host + "(" + ip + ")" });
+ } else {
+ Logger.debug(new LogMsg("No external URIs allowed (" + host + ":" + port + ")"));
+ throw new MOAApplicationException("4001", new Object[] { host + ":" + port + " (" + ip + ":"
+ + port + ")" });
+ }
+
+ }
+
+ }
+
+ Logger.debug(new LogMsg("URI allowed: " + ip + ":" + port));
+
+ } catch (final ConfigurationException e) {
+ throw new MOAApplicationException("config.10", null);
+ } catch (final UnknownHostException e) {
+ throw new MOAApplicationException("4003", new Object[] { host });
+ }
+
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java
index 3a9fe51..4f33617 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/FilteredOutputStream.java
@@ -6,71 +6,73 @@ import java.io.OutputStream;
import java.math.BigDecimal;
public class FilteredOutputStream extends BufferedOutputStream {
- private BigDecimal from = null;
- private BigDecimal to = null;
- private BigDecimal counter = new BigDecimal("0");
- BigDecimal one = new BigDecimal("1");
-
- public FilteredOutputStream(OutputStream innerStream,
- int bufferSize, BigDecimal from,
- BigDecimal to) {
- super(innerStream, bufferSize);
- this.from = from;
- this.to = to;
- }
+ private BigDecimal from = null;
+ private BigDecimal to = null;
+ private BigDecimal counter = new BigDecimal("0");
+ BigDecimal one = new BigDecimal("1");
- @Override
- public synchronized void write(int b) throws IOException {
- if(!inRange(counter)) {
- super.write(b);
- }
- counter = counter.add(one);
- }
+ public FilteredOutputStream(OutputStream innerStream,
+ int bufferSize, BigDecimal from,
+ BigDecimal to) {
+ super(innerStream, bufferSize);
+ this.from = from;
+ this.to = to;
+ }
- @Override
- public synchronized void write(byte[] b, int off, int len) throws IOException {
- this.filteredWrite(b, off, len);
- }
+ @Override
+ public synchronized void write(int b) throws IOException {
+ if (!inRange(counter)) {
+ super.write(b);
+ }
+ counter = counter.add(one);
+ }
- @Override
- public synchronized void flush() throws IOException {
- super.flush();
- }
+ @Override
+ public synchronized void write(byte[] b, int off, int len) throws IOException {
+ this.filteredWrite(b, off, len);
+ }
- @Override
- public void write(byte[] b) throws IOException {
- if(b != null) {
- this.filteredWrite(b, 0, b.length);
- }
- }
+ @Override
+ public synchronized void flush() throws IOException {
+ super.flush();
+ }
- @Override
- public void close() throws IOException {
- super.close();
- }
-
- private synchronized void filteredWrite(byte[] b, int off, int len) throws IOException {
- for(int i = 0; i < len; i++) {
- if(!inRange(counter)) {
- super.write(b[off+i]);
- }
- counter = counter.add(one);
- }
- }
-
- private boolean inRange(BigDecimal counter) {
- if ( (from == null) || (to == null))
- return false;
-
- int compare = counter.compareTo(from);
- if (compare == -1)
- return false;
- else {
- compare = counter.compareTo(to);
- if (compare == 1)
- return false;
- else
- return true;
- }
- }
+ @Override
+ public void write(byte[] b) throws IOException {
+ if (b != null) {
+ this.filteredWrite(b, 0, b.length);
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ super.close();
+ }
+
+ private synchronized void filteredWrite(byte[] b, int off, int len) throws IOException {
+ for (int i = 0; i < len; i++) {
+ if (!inRange(counter)) {
+ super.write(b[off + i]);
+ }
+ counter = counter.add(one);
+ }
+ }
+
+ private boolean inRange(BigDecimal counter) {
+ if (from == null || to == null) {
+ return false;
+ }
+
+ int compare = counter.compareTo(from);
+ if (compare == -1) {
+ return false;
+ } else {
+ compare = counter.compareTo(to);
+ if (compare == 1) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java
index ee6fe0a..047c2bf 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MOASPSSEntityResolver.java
@@ -36,20 +36,21 @@ import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.Constants;
-
/**
- * An <code>EntityResolver</code> that looks up entities stored as
- * local resources.
- *
- * <p>The following DTDs are mapped to local resources:
+ * An <code>EntityResolver</code> that looks up entities stored as local
+ * resources.
+ *
+ * <p>
+ * The following DTDs are mapped to local resources:
* <ul>
* <li>The XMLSchema.dtd</li>
* <li>The datatypes.dtd</li>
* </ul>
* </p>
- * <p>For all other resources, an attempt is made to resolve them as resources,
+ * <p>
+ * For all other resources, an attempt is made to resolve them as resources,
* either absolute or relative to <code>Constants.SCHEMA_ROOT</code>.
- *
+ *
* @author Patrick Peck
* @author Sven Aigner
*/
@@ -57,65 +58,66 @@ public class MOASPSSEntityResolver implements EntityResolver {
/**
* Resolve an entity.
- *
+ *
* The <code>systemId</code> parameter is used to perform the lookup of the
- * entity as a resource, either by interpreting the <code>systemId</code> as
- * an absolute resource path, or by appending the last path component of
+ * entity as a resource, either by interpreting the <code>systemId</code> as an
+ * absolute resource path, or by appending the last path component of
* <code>systemId</code> to <code>Constants.SCHEMA_ROOT</code>.
- *
+ *
* @param publicId The public ID of the resource.
* @param systemId The system ID of the resource.
* @return An <code>InputSource</code> from which the entity can be read, or
- * <code>null</code>, if the entity could not be found.
- * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String, java.lang.String)
+ * <code>null</code>, if the entity could not be found.
+ * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
+ * java.lang.String)
*/
+ @Override
public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
InputStream stream;
int slashPos;
-
+
if (Logger.isDebugEnabled()) {
Logger.debug(
- new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId));
+ new LogMsg("resolveEntity: p=" + publicId + " s=" + systemId));
}
if (publicId != null) {
// check if we can resolve some standard dtd's
if (publicId.equalsIgnoreCase("-//W3C//DTD XMLSchema 200102//EN")) {
return new InputSource(
- getClass().getResourceAsStream(
- Constants.SCHEMA_ROOT + "XMLSchema.dtd"));
+ getClass().getResourceAsStream(
+ Constants.SCHEMA_ROOT + "XMLSchema.dtd"));
} else if (publicId.equalsIgnoreCase("datatypes")) {
return new InputSource(
- getClass().getResourceAsStream(
- Constants.SCHEMA_ROOT + "datatypes.dtd"));
+ getClass().getResourceAsStream(
+ Constants.SCHEMA_ROOT + "datatypes.dtd"));
}
} else if (systemId != null) {
// get the URI path
try {
- URI uri = new URI(systemId);
+ final URI uri = new URI(systemId);
systemId = uri.getPath();
-
+
if ("".equals(systemId.trim())) {
return null;
}
-
+
// if (!"file".equals(uri.getScheme()) || "".equals(systemId.trim())) {
// return null;
// }
ExternalURIVerifier.verify(uri.getHost(), uri.getPort());
-
- } catch (MalformedURIException e) {
+
+ } catch (final MalformedURIException e) {
return null;
- }
- catch (MOAApplicationException e) {
- throw new SAXException(e);
+ } catch (final MOAApplicationException e) {
+ throw new SAXException(e);
}
-
+
// try to get the resource from the full path
stream = getClass().getResourceAsStream(systemId);
if (stream != null) {
- InputSource source = new InputSource(stream);
+ final InputSource source = new InputSource(stream);
source.setSystemId(systemId);
return source;
@@ -126,9 +128,9 @@ public class MOASPSSEntityResolver implements EntityResolver {
if (slashPos >= 0 && systemId.length() > slashPos) {
systemId = systemId.substring(slashPos + 1, systemId.length());
stream =
- getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId);
+ getClass().getResourceAsStream(Constants.SCHEMA_ROOT + systemId);
if (stream != null) {
- InputSource source = new InputSource(stream);
+ final InputSource source = new InputSource(stream);
source.setSystemId(systemId);
return source;
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java
index 47b8d36..cb83b3a 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/MessageProvider.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.util;
import java.util.Locale;
@@ -30,45 +29,45 @@ import at.gv.egovernment.moaspss.util.Messages;
/**
* Singleton wrapper around a <code>Messages</code> object.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class MessageProvider {
-
- /** The resource names of the messages to load. */
+
+ /** The resource names of the messages to load. */
private static final String[] DEFAULT_MESSAGE_RESOURCES =
- { "resources/properties/spss_messages" };
+ { "resources/properties/spss_messages" };
/** The corresponding message locales. */
private static final Locale[] DEFAULT_MESSAGE_LOCALES =
- new Locale[] { new Locale("de", "AT") };
+ new Locale[] { new Locale("de", "AT") };
/** The single instance of this class. */
private static MessageProvider instance;
-
+
/** The messages provided by the <code>MessageProvider</code>. */
- private Messages messages;
-
+ private final Messages messages;
+
/**
* Return the single instance of the <code>MessageProvider</code>.
- *
+ *
* Intialilizes the <code>MessageProvider</code> with the default message
* locations: <code>/resources/properties/spss_messages</code>.
- *
+ *
* @return The single <code>MessageProvider</code>.
*/
public static synchronized MessageProvider getInstance() {
if (instance == null) {
instance =
- new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES);
+ new MessageProvider(DEFAULT_MESSAGE_RESOURCES, DEFAULT_MESSAGE_LOCALES);
}
return instance;
}
/**
* Create a <code>MessageProvider</code>.
- *
+ *
* @param resourceNames The names of the resources containing the messages.
- * @param locales The corresponding locales.
+ * @param locales The corresponding locales.
*/
protected MessageProvider(String[] resourceNames, Locale[] locales) {
this.messages = new Messages(resourceNames, locales);
@@ -77,13 +76,12 @@ public class MessageProvider {
/**
* Get the message corresponding to a given message ID.
*
- * @param messageId The ID of the message.
+ * @param messageId The ID of the message.
* @param parameters The parameters to fill in into the message arguments.
- * @return The formatted message.
+ * @return The formatted message.
*/
public String getMessage(String messageId, Object[] parameters) {
return messages.getMessage(messageId, parameters);
}
-
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java
index e9b1f7d..9c684b1 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/NodeListToNodeSetDataAdapter.java
@@ -10,17 +10,17 @@ import org.w3c.dom.NodeList;
public class NodeListToNodeSetDataAdapter implements NodeSetData {
- private List list = new ArrayList();
-
- public NodeListToNodeSetDataAdapter(NodeList list) {
- for(int i = 0; i < list.getLength(); i++) {
- this.list.add(list.item(i));
- }
- }
-
- @Override
- public Iterator iterator() {
- return this.list.iterator();
- }
+ private final List list = new ArrayList();
+
+ public NodeListToNodeSetDataAdapter(NodeList list) {
+ for (int i = 0; i < list.getLength(); i++) {
+ this.list.add(list.item(i));
+ }
+ }
+
+ @Override
+ public Iterator iterator() {
+ return this.list.iterator();
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java
index c00225d..3e8a7fd 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/QCSSCDResult.java
@@ -4,50 +4,50 @@ import at.gv.egovernment.moa.spss.api.common.TslInfos;
public class QCSSCDResult {
- private boolean qc;
- private boolean qcSourceTSL;
-
- private boolean sscd;
- private boolean sscdSourceTSL;
-
- private TslInfos tslInfos;
-
-
-
- public QCSSCDResult() {
- this.qc = false;
- this.qcSourceTSL = false;
- this.sscd = false;
- this.sscdSourceTSL = false;
- }
-
- public QCSSCDResult(boolean qc, boolean qcSourceTSL, boolean sscd, boolean sscdSourceTSL) {
- this.qc = qc;
- this.qcSourceTSL = qcSourceTSL;
- this.sscd = sscd;
- this.sscdSourceTSL = sscdSourceTSL;
- }
-
- public boolean isQC() {
- return this.qc;
- }
- public boolean isQCSourceTSL() {
- return this.qcSourceTSL;
- }
- public boolean isSSCD() {
- return this.sscd;
- }
- public boolean isSSCDSourceTSL() {
- return this.sscdSourceTSL;
- }
-
- public TslInfos getTslInfos() {
- return tslInfos;
- }
-
- public void setTslInfos(TslInfos tslInfos) {
- this.tslInfos = tslInfos;
- }
-
-
+ private final boolean qc;
+ private final boolean qcSourceTSL;
+
+ private final boolean sscd;
+ private final boolean sscdSourceTSL;
+
+ private TslInfos tslInfos;
+
+ public QCSSCDResult() {
+ this.qc = false;
+ this.qcSourceTSL = false;
+ this.sscd = false;
+ this.sscdSourceTSL = false;
+ }
+
+ public QCSSCDResult(boolean qc, boolean qcSourceTSL, boolean sscd, boolean sscdSourceTSL) {
+ this.qc = qc;
+ this.qcSourceTSL = qcSourceTSL;
+ this.sscd = sscd;
+ this.sscdSourceTSL = sscdSourceTSL;
+ }
+
+ public boolean isQC() {
+ return this.qc;
+ }
+
+ public boolean isQCSourceTSL() {
+ return this.qcSourceTSL;
+ }
+
+ public boolean isSSCD() {
+ return this.sscd;
+ }
+
+ public boolean isSSCDSourceTSL() {
+ return this.sscdSourceTSL;
+ }
+
+ public TslInfos getTslInfos() {
+ return tslInfos;
+ }
+
+ public void setTslInfos(TslInfos tslInfos) {
+ this.tslInfos = tslInfos;
+ }
+
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java
index 243cd5d..f0e5326 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/ResetableInputStreamWrapper.java
@@ -6,54 +6,54 @@ import java.io.InputStream;
public class ResetableInputStreamWrapper extends InputStream {
- private ByteArrayInputStream bais;
-
- public ResetableInputStreamWrapper(ByteArrayInputStream bais) {
- this.bais = bais;
- }
-
- @Override
- public int read() throws IOException {
- return this.bais.read();
- }
-
- @Override
- public int read(byte[] b) throws IOException {
- return this.bais.read(b);
- }
-
- @Override
- public int read(byte[] b, int off, int len) throws IOException {
- return this.bais.read(b, off, len);
- }
-
- @Override
- public long skip(long n) throws IOException {
- return this.bais.skip(n);
- }
-
- @Override
- public int available() throws IOException {
- return this.bais.available();
- }
-
- @Override
- public void close() throws IOException {
- this.bais.close();
- }
-
- @Override
- public synchronized void mark(int readlimit) {
- this.bais.mark(readlimit);
- }
-
- @Override
- public synchronized void reset() throws IOException {
- this.bais.reset();
- }
-
- @Override
- public boolean markSupported() {
- return this.bais.markSupported();
- }
+ private final ByteArrayInputStream bais;
+
+ public ResetableInputStreamWrapper(ByteArrayInputStream bais) {
+ this.bais = bais;
+ }
+
+ @Override
+ public int read() throws IOException {
+ return this.bais.read();
+ }
+
+ @Override
+ public int read(byte[] b) throws IOException {
+ return this.bais.read(b);
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ return this.bais.read(b, off, len);
+ }
+
+ @Override
+ public long skip(long n) throws IOException {
+ return this.bais.skip(n);
+ }
+
+ @Override
+ public int available() throws IOException {
+ return this.bais.available();
+ }
+
+ @Override
+ public void close() throws IOException {
+ this.bais.close();
+ }
+
+ @Override
+ public synchronized void mark(int readlimit) {
+ this.bais.mark(readlimit);
+ }
+
+ @Override
+ public synchronized void reset() throws IOException {
+ this.bais.reset();
+ }
+
+ @Override
+ public boolean markSupported() {
+ return this.bais.markSupported();
+ }
}
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java
index edcac97..12e3837 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/util/SecProviderUtils.java
@@ -7,16 +7,16 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SecProviderUtils {
-
- private static final Logger logger = LoggerFactory.getLogger(SecProviderUtils.class);
-
-
- public static void dumpSecProviders(String message) {
-
- logger.info("Security Providers: {}", message);
-
- for(Provider provider : Security.getProviders()) {
- logger.info(" - {} - {}", provider.getName(), provider.getVersion());
- }
- }
+
+ private static final Logger logger = LoggerFactory.getLogger(SecProviderUtils.class);
+
+ public static void dumpSecProviders(String message) {
+ if (logger.isDebugEnabled()) {
+ logger.info("Security Providers: {}", message);
+ for (final Provider provider : Security.getProviders()) {
+ logger.info(" - {} - {}", provider.getName(), provider.getVersion());
+
+ }
+ }
+ }
}
diff --git a/moaSig/moa-sig/build.gradle b/moaSig/moa-sig/build.gradle
index b3574e6..3ac9f32 100644
--- a/moaSig/moa-sig/build.gradle
+++ b/moaSig/moa-sig/build.gradle
@@ -1,32 +1,20 @@
apply plugin: 'war'
apply plugin: 'eclipse'
apply plugin: 'eclipse-wtp'
-//apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
+apply plugin: 'distribution'
apply plugin: 'maven-publish'
-repositories {
- maven {
- url "http://joinup.ec.europa.eu/site/pdf-as/maven/"
- }
-}
-
dependencies {
- compile project(':moa-sig-lib')
- compile project(':moa-asic')
- compile fileTree(dir: 'libs', include: '*.jar')
- providedCompile 'javax.servlet:servlet-api:2.4'
- compile 'commons-discovery:commons-discovery:0.5'
- compile 'org.slf4j:slf4j-log4j12:1.7.30'
- //compile group: 'org.slf4j', name: 'log4j-over-slf4j', version: '1.7.30'
-
- //compile 'org.apache.cxf:cxf-rt-frontend-jaxws:3.1.4'
- //compile 'org.apache.cxf:cxf-rt-transports-http:3.1.4'
- //compile 'org.aspectj:aspectjrt:1.8.7'
- //compile 'org.aspectj:aspectjweaver:1.8.7'
+ implementation project(':common')
+ implementation project(':moa-sig-lib')
+ implementation project(':moa-asic')
+ implementation fileTree(dir: 'libs', include: '*.jar')
+ compileOnly 'javax.servlet:servlet-api:2.4'
- //compile 'at.gv.egiz.pdfas:pdf-as-lib:4.0.7'
- //compile 'at.gv.egiz.pdfas:pdf-as-pdfbox:4.0.7'
- //compile 'at.gv.egiz.pdfas:sigs-pades:4.0.7'
+ implementation 'commons-discovery:commons-discovery:0.5'
+ implementation 'org.slf4j:slf4j-log4j12:1.7.30'
+ implementation group: 'javax.jws', name: 'javax.jws-api', version: '1.1'
+
}
sourceSets {
@@ -38,7 +26,8 @@ sourceSets {
}
war {
- baseName = "moa-spss"
+ archiveBaseName = "moa-spss"
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
configurations {
@@ -47,34 +36,19 @@ configurations {
dependencies {
jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.4-1'
- compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
- compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
- //def tomcatVersion = '7.0.59'
- //tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
- // "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}",
- // "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
+ implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
+ implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}
-//gretty {
-// jvmArgs = [
-// '-Dmoa.spss.server.configuration=/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/spss.config.xml',
-// '-Dlog4j.configuration=/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/log4j.properties'
-// ]
-// loggingLevel = "TRACE"
-// servletContainer = 'tomcat8'
-//}
-
task jaxb () {
// output directory
def jaxbTargetDir = file( "${projectDir}/src/generated/java" )
- //jaxbTargetDirMoaSig = file( jaxbTargetDir.path )
// perform actions
doLast {
jaxbTargetDir.mkdirs()
ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath)
- //ant.jaxbTargetDirMoaSig = jaxbTargetDir
// MOA Sig
ant.xjc(
@@ -85,20 +59,41 @@ task jaxb () {
}
}
-task releases(type: Copy) {
- from war.outputs
- into rootDir.toString() + "/releases/" + version
+distributions {
+ main {
+ distributionBaseName = "moa-spss"
+ contents {
+ into('/') { // Copy the following jars to the lib/ directory in the distribution archive
+ from war.outputs
+ from "$rootDir/../release-infos/readme_" + "$version" + ".txt"
+ dirMode = 0755
+ fileMode = 0644
+ }
+ into('/handbook') {
+ from rootDir.toString() + "/../release-infos/handbook/"
+ }
+ into('/endorsed_libs') {
+ from findJar('serializer')
+ from findJar('xalan')
+ from findJar('xercesImpl')
+ from findJar('xml-apis')
+ }
+ into('/ext_libs') {
+ from findJar('iaik_jce_full')
+ from rootDir.toString() + "/../release-infos/ext_libs/"
+
+ }
+ }
+ }
}
-//compileJava.dependsOn jaxb
-// context where tomcat is deployed, by defautl localhost:8080/
-
-//tomcat {
-// stopKey = 'x'
- //daemon = true
-//}
-//System.setProperty('moa.spss.server.configuration', '/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/spss.config.xml')
-// System.setProperty('log4j.configuration', '/home/afitzek/server/moa-spss/apache-tomcat-8.0.0-RC3/conf/moa-spss/log4j.properties')
+def findJar(prefix) {
+ configurations.runtimeClasspath.filter { it.name.startsWith(prefix) }
+
+}
-//tomcatRun.contextPath = '/'
-//tomcatRunWar.contextPath = '/'
+task releases(type: Copy) {
+ from distZip.outputs
+ from distTar.outputs
+ into rootDir.toString() + "/releases/" + version
+}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java
index fb84293..dfc7bff 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/initializer/PDFASInitializer.java
@@ -5,24 +5,23 @@ import org.slf4j.LoggerFactory;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.init.ExternalInitializer;
-import at.gv.egovernment.moa.spss.server.invoke.PDFASInvoker;
public class PDFASInitializer implements ExternalInitializer {
- private static final Logger logger = LoggerFactory.getLogger(PDFASInitializer.class);
-
- @Override
- public void initialize(ConfigurationProvider configurationProvider) {
- logger.warn("Log4j Config: {}", System.getProperty("log4j.configuration"));
-
- /*String pdfAsConfiguration = configurationProvider.getPDFASConfiguration();
-
- logger.info("Running PDFASInitializer with pdf as cfg: {}", pdfAsConfiguration);
-
- if(pdfAsConfiguration != null) {
- PDFASInvoker
- .init(pdfAsConfiguration);
- }*/
- }
+ private static final Logger logger = LoggerFactory.getLogger(PDFASInitializer.class);
+
+ @Override
+ public void initialize(ConfigurationProvider configurationProvider) {
+ logger.warn("Log4j Config: {}", System.getProperty("log4j.configuration"));
+
+ /*
+ * String pdfAsConfiguration = configurationProvider.getPDFASConfiguration();
+ *
+ * logger.info("Running PDFASInitializer with pdf as cfg: {}",
+ * pdfAsConfiguration);
+ *
+ * if(pdfAsConfiguration != null) { PDFASInvoker .init(pdfAsConfiguration); }
+ */
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java
index 1f7522b..94c2239 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/invoke/PDFASInvoker.java
@@ -1,118 +1,82 @@
package at.gv.egovernment.moa.spss.server.invoke;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.io.IOUtils;
-
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.server.logging.TransactionId;
-import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaConnector;
-import at.gv.egovernment.moa.spss.server.pdfas.InternalMoaVerifier;
-import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest;
-import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone;
-import at.gv.egovernment.moa.spss.server.xmlbind.PDFSignatureInfo;
-import at.gv.egovernment.moa.spss.server.xmlbind.SignedPDFInfo;
-import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFRequest;
-import at.gv.egovernment.moa.spss.server.xmlbind.VerifyPDFResponse;
-import at.gv.egovernment.moaspss.logging.Logger;
-
public class PDFASInvoker {
- /*
- private static PDFASInvoker instance = null;
-
- private PdfAs pdfAS;
-
- private PDFASInvoker(File configuration) {
- pdfAS = PdfAsFactory.createPdfAs(configuration);
- }
-
- public synchronized static void init(String pdfAsConfiguration) {
- instance = new PDFASInvoker(new File(pdfAsConfiguration));
- }
-
- public synchronized static PDFASInvoker getInstance() {
- if (instance == null) {
- throw new RuntimeException("PDF PDFASInvoker not initialized");
- }
- return instance;
- }
-
- public VerifyPDFResponse verifyPDFSignature(VerifyPDFRequest verifyPDFRequest) throws MOAException {
- Configuration pdfConfiguration = this.pdfAS.getConfiguration();
-
- VerifyPDFResponse verifyPDFResponse = new VerifyPDFResponse();
-
- VerifyParameter verifyParameter = PdfAsFactory.createVerifyParameter(pdfConfiguration, new ByteArrayDataSource(
- verifyPDFRequest.getSignedPDF()));
-
- pdfConfiguration.setValue(InternalMoaVerifier.MOA_TRUSTPROFILE, verifyPDFRequest.getTrustProfileID());
-
- try {
- List<VerifyResult> verifyResults = this.pdfAS.verify(verifyParameter);
- verifyPDFResponse.setVerificationResults(verifyResults);
- } catch (Throwable e) {
- Logger.warn("Failed to generate signed PDF document", e);
- throw new MOAApplicationException("Failed to generate signed PDF document", null, e);
- }
-
- return verifyPDFResponse;
- }
-
- public CreatePDFRespone createPDFSignature(CreatePDFRequest createPDFRequest, String transactionId) {
- Configuration pdfConfiguration = this.pdfAS.getConfiguration();
-
- String keyIdentifier = createPDFRequest.getKeyIdentifier();
-
- Iterator<PDFSignatureInfo> signatureInfoIterator = createPDFRequest.getSignatureInfoList().iterator();
-
- CreatePDFRespone createPDFRespone = new CreatePDFRespone();
-
- while (signatureInfoIterator.hasNext()) {
- PDFSignatureInfo pdfSignatureInfo = signatureInfoIterator.next();
- SignedPDFInfo signedPDFInfo = new SignedPDFInfo(pdfSignatureInfo.getSignatureID());
- try {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- SignParameter signParameter = PdfAsFactory.createSignParameter(pdfConfiguration,
- new ByteArrayDataSource(pdfSignatureInfo.getPdfDocument()), baos);
-
- signParameter.setSignaturePosition(pdfSignatureInfo.getSignaturePosition());
- signParameter.setSignatureProfileId(pdfSignatureInfo.getSignatureProfile());
-
- IPlainSigner signer = new PAdESSigner(
- new InternalMoaConnector(keyIdentifier, new TransactionId(transactionId), null));
-
- signParameter.setPlainSigner(signer);
-
- try {
- this.pdfAS.sign(signParameter);
- signedPDFInfo.setPdfDocument(baos.toByteArray());
- signedPDFInfo.setResponseType(SignedPDFInfo.SUCCESS_SIGNATURE);
- } catch (Throwable e) {
- signedPDFInfo.setResponseType(SignedPDFInfo.ERROR_RESPONSE);
-
- if (e instanceof PDFASError) {
- PDFASError pdfAsError = (PDFASError) e;
- Logger.warn("Failed to generate signed PDF document", e);
- signedPDFInfo.setErrorCode((int) pdfAsError.getCode());
- signedPDFInfo.setErrorInfo(pdfAsError.getInfo());
- } else {
- Logger.error("Unknown exception!: ", e);
- signedPDFInfo.setErrorCode(9999);
- signedPDFInfo.setErrorInfo("Nicht klassifizierter Fehler");
- }
- } finally {
- IOUtils.closeQuietly(baos);
- }
-
- } finally {
- createPDFRespone.getSignatureInfoList().add(signedPDFInfo);
- }
-
- }
- return createPDFRespone;
- }*/
+ /*
+ * private static PDFASInvoker instance = null;
+ *
+ * private PdfAs pdfAS;
+ *
+ * private PDFASInvoker(File configuration) { pdfAS =
+ * PdfAsFactory.createPdfAs(configuration); }
+ *
+ * public synchronized static void init(String pdfAsConfiguration) { instance =
+ * new PDFASInvoker(new File(pdfAsConfiguration)); }
+ *
+ * public synchronized static PDFASInvoker getInstance() { if (instance == null)
+ * { throw new RuntimeException("PDF PDFASInvoker not initialized"); } return
+ * instance; }
+ *
+ * public VerifyPDFResponse verifyPDFSignature(VerifyPDFRequest
+ * verifyPDFRequest) throws MOAException { Configuration pdfConfiguration =
+ * this.pdfAS.getConfiguration();
+ *
+ * VerifyPDFResponse verifyPDFResponse = new VerifyPDFResponse();
+ *
+ * VerifyParameter verifyParameter =
+ * PdfAsFactory.createVerifyParameter(pdfConfiguration, new ByteArrayDataSource(
+ * verifyPDFRequest.getSignedPDF()));
+ *
+ * pdfConfiguration.setValue(InternalMoaVerifier.MOA_TRUSTPROFILE,
+ * verifyPDFRequest.getTrustProfileID());
+ *
+ * try { List<VerifyResult> verifyResults = this.pdfAS.verify(verifyParameter);
+ * verifyPDFResponse.setVerificationResults(verifyResults); } catch (Throwable
+ * e) { Logger.warn("Failed to generate signed PDF document", e); throw new
+ * MOAApplicationException("Failed to generate signed PDF document", null, e); }
+ *
+ * return verifyPDFResponse; }
+ *
+ * public CreatePDFRespone createPDFSignature(CreatePDFRequest createPDFRequest,
+ * String transactionId) { Configuration pdfConfiguration =
+ * this.pdfAS.getConfiguration();
+ *
+ * String keyIdentifier = createPDFRequest.getKeyIdentifier();
+ *
+ * Iterator<PDFSignatureInfo> signatureInfoIterator =
+ * createPDFRequest.getSignatureInfoList().iterator();
+ *
+ * CreatePDFRespone createPDFRespone = new CreatePDFRespone();
+ *
+ * while (signatureInfoIterator.hasNext()) { PDFSignatureInfo pdfSignatureInfo =
+ * signatureInfoIterator.next(); SignedPDFInfo signedPDFInfo = new
+ * SignedPDFInfo(pdfSignatureInfo.getSignatureID()); try { ByteArrayOutputStream
+ * baos = new ByteArrayOutputStream(); SignParameter signParameter =
+ * PdfAsFactory.createSignParameter(pdfConfiguration, new
+ * ByteArrayDataSource(pdfSignatureInfo.getPdfDocument()), baos);
+ *
+ * signParameter.setSignaturePosition(pdfSignatureInfo.getSignaturePosition());
+ * signParameter.setSignatureProfileId(pdfSignatureInfo.getSignatureProfile());
+ *
+ * IPlainSigner signer = new PAdESSigner( new
+ * InternalMoaConnector(keyIdentifier, new TransactionId(transactionId), null));
+ *
+ * signParameter.setPlainSigner(signer);
+ *
+ * try { this.pdfAS.sign(signParameter);
+ * signedPDFInfo.setPdfDocument(baos.toByteArray());
+ * signedPDFInfo.setResponseType(SignedPDFInfo.SUCCESS_SIGNATURE); } catch
+ * (Throwable e) { signedPDFInfo.setResponseType(SignedPDFInfo.ERROR_RESPONSE);
+ *
+ * if (e instanceof PDFASError) { PDFASError pdfAsError = (PDFASError) e;
+ * Logger.warn("Failed to generate signed PDF document", e);
+ * signedPDFInfo.setErrorCode((int) pdfAsError.getCode());
+ * signedPDFInfo.setErrorInfo(pdfAsError.getInfo()); } else {
+ * Logger.error("Unknown exception!: ", e); signedPDFInfo.setErrorCode(9999);
+ * signedPDFInfo.setErrorInfo("Nicht klassifizierter Fehler"); } } finally {
+ * IOUtils.closeQuietly(baos); }
+ *
+ * } finally { createPDFRespone.getSignatureInfoList().add(signedPDFInfo); }
+ *
+ * } return createPDFRespone; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java
index 705e124..2dbb239 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/ExtendedVerifyResult.java
@@ -1,61 +1,45 @@
package at.gv.egovernment.moa.spss.server.pdfas;
+
/*
import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
import at.gv.egiz.pdfas.lib.impl.verify.VerifyResultImpl;
*/
-public class ExtendedVerifyResult { /*extends VerifyResultImpl implements VerifyResult {
- private String qcSource;
- private boolean publicAuthority;
- private String publicAuthorityID;
- private boolean SSCD;
- private String sscdSource;
- private String issureCountryCode;
-
- public synchronized String getIssureCountryCode() {
- return issureCountryCode;
- }
-
- public synchronized void setIssureCountryCode(String issureCountryCode) {
- this.issureCountryCode = issureCountryCode;
- }
-
- public synchronized String getQcSource() {
- return qcSource;
- }
-
- public synchronized void setQcSource(String qcSource) {
- this.qcSource = qcSource;
- }
-
- public synchronized boolean isPublicAuthority() {
- return publicAuthority;
- }
-
- public synchronized void setPublicAuthority(boolean publicAuthority) {
- this.publicAuthority = publicAuthority;
- }
-
- public synchronized String getPublicAuthorityID() {
- return publicAuthorityID;
- }
-
- public synchronized void setPublicAuthorityID(String publicAuthorityID) {
- this.publicAuthorityID = publicAuthorityID;
- }
-
- public synchronized boolean isSSCD() {
- return SSCD;
- }
-
- public synchronized void setSSCD(boolean sSCD) {
- SSCD = sSCD;
- }
-
- public synchronized String getSscdSource() {
- return sscdSource;
- }
-
- public synchronized void setSscdSource(String sscdSource) {
- this.sscdSource = sscdSource;
- }*/
+public class ExtendedVerifyResult { /*
+ * extends VerifyResultImpl implements VerifyResult { private String
+ * qcSource; private boolean publicAuthority; private String
+ * publicAuthorityID; private boolean SSCD; private String sscdSource;
+ * private String issureCountryCode;
+ *
+ * public synchronized String getIssureCountryCode() { return
+ * issureCountryCode; }
+ *
+ * public synchronized void setIssureCountryCode(String issureCountryCode)
+ * { this.issureCountryCode = issureCountryCode; }
+ *
+ * public synchronized String getQcSource() { return qcSource; }
+ *
+ * public synchronized void setQcSource(String qcSource) { this.qcSource =
+ * qcSource; }
+ *
+ * public synchronized boolean isPublicAuthority() { return
+ * publicAuthority; }
+ *
+ * public synchronized void setPublicAuthority(boolean publicAuthority) {
+ * this.publicAuthority = publicAuthority; }
+ *
+ * public synchronized String getPublicAuthorityID() { return
+ * publicAuthorityID; }
+ *
+ * public synchronized void setPublicAuthorityID(String publicAuthorityID)
+ * { this.publicAuthorityID = publicAuthorityID; }
+ *
+ * public synchronized boolean isSSCD() { return SSCD; }
+ *
+ * public synchronized void setSSCD(boolean sSCD) { SSCD = sSCD; }
+ *
+ * public synchronized String getSscdSource() { return sscdSource; }
+ *
+ * public synchronized void setSscdSource(String sscdSource) {
+ * this.sscdSource = sscdSource; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java
index 0344346..efcd2ce 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaConnector.java
@@ -1,227 +1,170 @@
package at.gv.egovernment.moa.spss.server.pdfas;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.security.Principal;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.cmssign.CMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponseElement;
-import at.gv.egovernment.moa.spss.api.impl.CMSContentExplicitImpl;
-import at.gv.egovernment.moa.spss.api.impl.CMSDataObjectImpl;
-import at.gv.egovernment.moa.spss.api.impl.CreateCMSSignatureRequestImpl;
-import at.gv.egovernment.moa.spss.api.impl.DataObjectInfoCMSImpl;
-import at.gv.egovernment.moa.spss.api.impl.MetaInfoImpl;
-import at.gv.egovernment.moa.spss.api.impl.SingleSignatureInfoCMSImpl;
-import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationException;
-import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
-import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker;
-import at.gv.egovernment.moaspss.logging.Logger;
-import at.gv.egovernment.moaspss.util.Base64Utils;
-import iaik.logging.TransactionId;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-import iaik.server.modules.keys.UnknownKeyException;
-import iaik.x509.X509Certificate;
-
-public class InternalMoaConnector { /*implements ISignatureConnector {
-
- private String keyIdentifier;
- private X509Certificate clientCert;
- private TransactionId transactionId;
-
- public InternalMoaConnector(String keyIdentifier, TransactionId transactionId, X509Certificate clientCert) {
- this.keyIdentifier = keyIdentifier;
- this.transactionId = transactionId;
- this.clientCert = clientCert;
- }
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private Set buildKeySet(String keyGroupID, KeyModule module) throws ConfigurationException {
- ConfigurationProvider config = ConfigurationProvider.getInstance();
-
- Set keyGroupEntries;
-
- // get the KeyGroup entries from the configuration
- if (clientCert != null) {
- Principal issuer = clientCert.getIssuerDN();
- BigInteger serialNumber = clientCert.getSerialNumber();
-
- keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber, keyGroupID);
- } else {
- keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
- }
-
- // map the KeyGroup entries to a set of KeyEntryIDs
- if (keyGroupEntries == null) {
- return Collections.EMPTY_SET;
- } else if (keyGroupEntries.size() == 0) {
- return Collections.EMPTY_SET;
- } else {
-
- Set keyEntryIDs = module.getPrivateKeyEntryIDs();
- Set keySet = new HashSet();
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
- KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(), entryID.getCertificateIssuer(),
- entryID.getCertificateSerialNumber());
- if (keyGroupEntries.contains(entry)) {
- keySet.add(entryID);
- }
- }
- return keySet;
- }
- }
-
- @Override
- @SuppressWarnings("rawtypes")
- public X509Certificate getCertificate(SignParameter parameter) throws PdfAsException {
- KeyModule module = KeyModuleFactory.getInstance(this.transactionId);
-
- Set keySet = null;
- try {
- keySet = buildKeySet(this.keyIdentifier, module);
- } catch (ConfigurationException e2) {
- Logger.warn("MOA not correctly configured!", e2);
- throw new PdfAsException("MOA not correctly configured!");
- }
-
- if (keySet == null || keySet.isEmpty()) {
- Logger.warn("No keys available for Key Identifier " + this.keyIdentifier + " and given authentication.");
- throw new PdfAsException("Invalid Key Identifier: " + this.keyIdentifier);
- }
-
- if (keySet.size() != 1) {
- Logger.warn(
- "Too many keys available for Key Identifier " + this.keyIdentifier + " and given authentication.");
- throw new PdfAsException("Too many keys available for Key Identifier: " + this.keyIdentifier);
- }
-
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keySet.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
-
- List certChain = null;
- try {
- certChain = module.getPrivateKeyEntry(entryID).getCertificateChain();
- } catch (UnknownKeyException e1) {
- Logger.warn("Unknown KeyIdentifier found!", e1);
- throw new PdfAsException("Unknown Key Identifier: " + this.keyIdentifier);
- }
-
- if (certChain != null && !certChain.isEmpty()) {
- Logger.trace("Returning Certificate!");
- Certificate keyCert = ((Certificate) certChain.get(0));
- if (keyCert instanceof X509Certificate) {
- return (X509Certificate) keyCert;
- } else {
- try {
- return new X509Certificate(keyCert.getEncoded());
- } catch (CertificateEncodingException e) {
- Logger.warn("Invalid certificate found!", e);
- throw new PdfAsException("Invalid certificate for Key Identifier: " + this.keyIdentifier);
- } catch (CertificateException e) {
- Logger.warn("Invalid certificate found!", e);
- throw new PdfAsException("Invalid certificate for Key Identifier: " + this.keyIdentifier);
- }
- }
- }
-
- break;
- }
-
- // No Certificate could be found!
- Logger.warn("Failed to find keys available for Key Identifier " + this.keyIdentifier
- + " and given authentication.");
- throw new PdfAsException("Failed to find keys available for Key Identifier: " + this.keyIdentifier);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public byte[] sign(byte[] input, int[] byteRange, SignParameter parameter, RequestedSignature requestedSignature)
- throws PdfAsException {
-
- CreateCMSSignatureRequestImpl createCMSSignatureRequest = new CreateCMSSignatureRequestImpl();
- createCMSSignatureRequest.setKeyIdentifier(this.keyIdentifier);
- SingleSignatureInfoCMSImpl singleSignatureInfos = new SingleSignatureInfoCMSImpl();
-
- DataObjectInfoCMSImpl dataObjectInfoCMSImpl = new DataObjectInfoCMSImpl();
-
- dataObjectInfoCMSImpl.setStructure(DataObjectInfoCMSImpl.STRUCTURE_DETACHED);
-
- CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
-
- CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl();
- cmsContent.setBinaryContent(new ByteArrayInputStream(input));
-
- cmsDataObjectImpl.setContent(cmsContent);
-
- MetaInfoImpl metaInfoImpl = new MetaInfoImpl();
-
- metaInfoImpl.setMimeType("application/pdf");
-
- cmsDataObjectImpl.setMetaInfo(metaInfoImpl);
-
- dataObjectInfoCMSImpl.setDataObject(cmsDataObjectImpl);
-
- singleSignatureInfos.setDataObjectInfo(dataObjectInfoCMSImpl);
-
- createCMSSignatureRequest.getSingleSignatureInfos().add(singleSignatureInfos);
-
- try {
- CreateCMSSignatureResponse createCMSSignatureResponse = CMSSignatureCreationInvoker.getInstance()
- .createCMSSignature(createCMSSignatureRequest, Collections.EMPTY_SET);
-
- if (createCMSSignatureResponse.getResponseElements().isEmpty()) {
- Logger.error("MOA CMS Signature response is empty!");
- throw new PdfAsException("MOA CMS Signature response is empty");
- }
-
- CreateCMSSignatureResponseElement createCMSSignatureResponseElement = (CreateCMSSignatureResponseElement) createCMSSignatureResponse
- .getResponseElements().get(0);
-
- if(createCMSSignatureResponseElement.getResponseType()
- == CreateCMSSignatureResponseElement.ERROR_RESPONSE) {
- ErrorResponse errorResponse = (ErrorResponse) createCMSSignatureResponseElement;
- Logger.error("Failed to create signature " + errorResponse.getErrorCode() + " " + errorResponse.getInfo());
- throw new PdfAsErrorCarrier(new PDFASError(errorResponse.getErrorCode(), errorResponse.getInfo()));
- } else if(createCMSSignatureResponseElement.getResponseType()
- == CreateCMSSignatureResponseElement.CMS_SIGNATURE ) {
- CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse) createCMSSignatureResponseElement;
- return Base64Utils.decode(cmsSignatureResponse.getCMSSignature(), true);
- }
- } catch (MOAException e) {
- Logger.error("Failed to create signature!", e);
- throw new PdfAsException("Failed to create signature!", e);
- } catch (IOException e) {
- Logger.error("Failed to create signature!", e);
- throw new PdfAsException("Failed to create signature!", e);
- }
-
- return null;
- }
- */
+public class InternalMoaConnector { /*
+ * implements ISignatureConnector {
+ *
+ * private String keyIdentifier; private X509Certificate clientCert;
+ * private TransactionId transactionId;
+ *
+ * public InternalMoaConnector(String keyIdentifier, TransactionId
+ * transactionId, X509Certificate clientCert) { this.keyIdentifier =
+ * keyIdentifier; this.transactionId = transactionId; this.clientCert =
+ * clientCert; }
+ *
+ * @SuppressWarnings({ "rawtypes", "unchecked" }) private Set
+ * buildKeySet(String keyGroupID, KeyModule module) throws
+ * ConfigurationException { ConfigurationProvider config =
+ * ConfigurationProvider.getInstance();
+ *
+ * Set keyGroupEntries;
+ *
+ * // get the KeyGroup entries from the configuration if (clientCert !=
+ * null) { Principal issuer = clientCert.getIssuerDN(); BigInteger
+ * serialNumber = clientCert.getSerialNumber();
+ *
+ * keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber,
+ * keyGroupID); } else { keyGroupEntries = config.getKeyGroupEntries(null,
+ * null, keyGroupID); }
+ *
+ * // map the KeyGroup entries to a set of KeyEntryIDs if (keyGroupEntries
+ * == null) { return Collections.EMPTY_SET; } else if
+ * (keyGroupEntries.size() == 0) { return Collections.EMPTY_SET; } else {
+ *
+ * Set keyEntryIDs = module.getPrivateKeyEntryIDs(); Set keySet = new
+ * HashSet(); Iterator iter;
+ *
+ * // filter out the keys that do not exist in the IAIK configuration //
+ * by walking through the key entries and checking if the exist in // the
+ * // keyGroupEntries for (iter = keyEntryIDs.iterator(); iter.hasNext();)
+ * { KeyEntryID entryID = (KeyEntryID) iter.next(); KeyGroupEntry entry =
+ * new KeyGroupEntry(entryID.getModuleID(),
+ * entryID.getCertificateIssuer(), entryID.getCertificateSerialNumber());
+ * if (keyGroupEntries.contains(entry)) { keySet.add(entryID); } } return
+ * keySet; } }
+ *
+ * @Override
+ *
+ * @SuppressWarnings("rawtypes") public X509Certificate
+ * getCertificate(SignParameter parameter) throws PdfAsException {
+ * KeyModule module = KeyModuleFactory.getInstance(this.transactionId);
+ *
+ * Set keySet = null; try { keySet = buildKeySet(this.keyIdentifier,
+ * module); } catch (ConfigurationException e2) {
+ * Logger.warn("MOA not correctly configured!", e2); throw new
+ * PdfAsException("MOA not correctly configured!"); }
+ *
+ * if (keySet == null || keySet.isEmpty()) {
+ * Logger.warn("No keys available for Key Identifier " +
+ * this.keyIdentifier + " and given authentication."); throw new
+ * PdfAsException("Invalid Key Identifier: " + this.keyIdentifier); }
+ *
+ * if (keySet.size() != 1) { Logger.warn(
+ * "Too many keys available for Key Identifier " + this.keyIdentifier +
+ * " and given authentication."); throw new
+ * PdfAsException("Too many keys available for Key Identifier: " +
+ * this.keyIdentifier); }
+ *
+ * Iterator iter;
+ *
+ * // filter out the keys that do not exist in the IAIK configuration //
+ * by walking through the key entries and checking if the exist in // the
+ * // keyGroupEntries for (iter = keySet.iterator(); iter.hasNext();) {
+ * KeyEntryID entryID = (KeyEntryID) iter.next();
+ *
+ * List certChain = null; try { certChain =
+ * module.getPrivateKeyEntry(entryID).getCertificateChain(); } catch
+ * (UnknownKeyException e1) { Logger.warn("Unknown KeyIdentifier found!",
+ * e1); throw new PdfAsException("Unknown Key Identifier: " +
+ * this.keyIdentifier); }
+ *
+ * if (certChain != null && !certChain.isEmpty()) {
+ * Logger.trace("Returning Certificate!"); Certificate keyCert =
+ * ((Certificate) certChain.get(0)); if (keyCert instanceof
+ * X509Certificate) { return (X509Certificate) keyCert; } else { try {
+ * return new X509Certificate(keyCert.getEncoded()); } catch
+ * (CertificateEncodingException e) {
+ * Logger.warn("Invalid certificate found!", e); throw new
+ * PdfAsException("Invalid certificate for Key Identifier: " +
+ * this.keyIdentifier); } catch (CertificateException e) {
+ * Logger.warn("Invalid certificate found!", e); throw new
+ * PdfAsException("Invalid certificate for Key Identifier: " +
+ * this.keyIdentifier); } } }
+ *
+ * break; }
+ *
+ * // No Certificate could be found!
+ * Logger.warn("Failed to find keys available for Key Identifier " +
+ * this.keyIdentifier + " and given authentication."); throw new
+ * PdfAsException("Failed to find keys available for Key Identifier: " +
+ * this.keyIdentifier); }
+ *
+ * @SuppressWarnings("unchecked")
+ *
+ * @Override public byte[] sign(byte[] input, int[] byteRange,
+ * SignParameter parameter, RequestedSignature requestedSignature) throws
+ * PdfAsException {
+ *
+ * CreateCMSSignatureRequestImpl createCMSSignatureRequest = new
+ * CreateCMSSignatureRequestImpl();
+ * createCMSSignatureRequest.setKeyIdentifier(this.keyIdentifier);
+ * SingleSignatureInfoCMSImpl singleSignatureInfos = new
+ * SingleSignatureInfoCMSImpl();
+ *
+ * DataObjectInfoCMSImpl dataObjectInfoCMSImpl = new
+ * DataObjectInfoCMSImpl();
+ *
+ * dataObjectInfoCMSImpl.setStructure(DataObjectInfoCMSImpl.
+ * STRUCTURE_DETACHED);
+ *
+ * CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
+ *
+ * CMSContentExplicitImpl cmsContent = new CMSContentExplicitImpl();
+ * cmsContent.setBinaryContent(new ByteArrayInputStream(input));
+ *
+ * cmsDataObjectImpl.setContent(cmsContent);
+ *
+ * MetaInfoImpl metaInfoImpl = new MetaInfoImpl();
+ *
+ * metaInfoImpl.setMimeType("application/pdf");
+ *
+ * cmsDataObjectImpl.setMetaInfo(metaInfoImpl);
+ *
+ * dataObjectInfoCMSImpl.setDataObject(cmsDataObjectImpl);
+ *
+ * singleSignatureInfos.setDataObjectInfo(dataObjectInfoCMSImpl);
+ *
+ * createCMSSignatureRequest.getSingleSignatureInfos().add(
+ * singleSignatureInfos);
+ *
+ * try { CreateCMSSignatureResponse createCMSSignatureResponse =
+ * CMSSignatureCreationInvoker.getInstance()
+ * .createCMSSignature(createCMSSignatureRequest, Collections.EMPTY_SET);
+ *
+ * if (createCMSSignatureResponse.getResponseElements().isEmpty()) {
+ * Logger.error("MOA CMS Signature response is empty!"); throw new
+ * PdfAsException("MOA CMS Signature response is empty"); }
+ *
+ * CreateCMSSignatureResponseElement createCMSSignatureResponseElement =
+ * (CreateCMSSignatureResponseElement) createCMSSignatureResponse
+ * .getResponseElements().get(0);
+ *
+ * if(createCMSSignatureResponseElement.getResponseType() ==
+ * CreateCMSSignatureResponseElement.ERROR_RESPONSE) { ErrorResponse
+ * errorResponse = (ErrorResponse) createCMSSignatureResponseElement;
+ * Logger.error("Failed to create signature " +
+ * errorResponse.getErrorCode() + " " + errorResponse.getInfo()); throw
+ * new PdfAsErrorCarrier(new PDFASError(errorResponse.getErrorCode(),
+ * errorResponse.getInfo())); } else
+ * if(createCMSSignatureResponseElement.getResponseType() ==
+ * CreateCMSSignatureResponseElement.CMS_SIGNATURE ) {
+ * CMSSignatureResponse cmsSignatureResponse = (CMSSignatureResponse)
+ * createCMSSignatureResponseElement; return
+ * Base64Utils.decode(cmsSignatureResponse.getCMSSignature(), true); } }
+ * catch (MOAException e) { Logger.error("Failed to create signature!",
+ * e); throw new PdfAsException("Failed to create signature!", e); } catch
+ * (IOException e) { Logger.error("Failed to create signature!", e); throw
+ * new PdfAsException("Failed to create signature!", e); }
+ *
+ * return null; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java
index 8d5a27e..c1d18bf 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/pdfas/InternalMoaVerifier.java
@@ -1,129 +1,101 @@
package at.gv.egovernment.moa.spss.server.pdfas;
-import java.io.ByteArrayInputStream;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/*import at.gv.egiz.pdfas.common.exceptions.PdfAsException;
-import at.gv.egiz.pdfas.lib.api.Configuration;
-import at.gv.egiz.pdfas.lib.api.verify.SignatureCheck;
-import at.gv.egiz.pdfas.lib.api.verify.VerifyParameter.SignatureVerificationLevel;
-import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
-import at.gv.egiz.pdfas.lib.impl.verify.IVerifier;
-import at.gv.egiz.pdfas.lib.impl.verify.SignatureCheckImpl;
-*/
-import at.gv.egovernment.moa.spss.MOAException;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
-import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponseElement;
-import at.gv.egovernment.moa.spss.api.common.CheckResult;
-import at.gv.egovernment.moa.spss.api.impl.CMSContentExplicitImpl;
-import at.gv.egovernment.moa.spss.api.impl.CMSDataObjectImpl;
-import at.gv.egovernment.moa.spss.api.impl.MetaInfoImpl;
-import at.gv.egovernment.moa.spss.api.impl.VerifyCMSSignatureRequestImpl;
-import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureVerificationInvoker;
-import iaik.x509.X509Certificate;
-
-public class InternalMoaVerifier { /*implements IVerifier {
-
- public static final String MOA_TRUSTPROFILE = "internal.moa.trustprofile";
-
- private String trustProfile;
-
- private static final Logger logger = LoggerFactory.getLogger(InternalMoaVerifier.class);
-
- @Override
- public List<VerifyResult> verify(byte[] signature, byte[] signatureContent, Date verificationTime)
- throws PdfAsException {
-
- List<VerifyResult> verificationResultList = new ArrayList<VerifyResult>();
-
- VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new VerifyCMSSignatureRequestImpl();
- verifyCMSSignatureRequest.setDateTime(verificationTime);
- verifyCMSSignatureRequest.setTrustProfileId(this.trustProfile);
- verifyCMSSignatureRequest.setCMSSignature(new ByteArrayInputStream(signature));
-
- CMSContentExplicitImpl cmsContentExplicitImpl = new CMSContentExplicitImpl();
- cmsContentExplicitImpl.setBinaryContent(new ByteArrayInputStream(signatureContent));
-
- CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
- cmsDataObjectImpl.setContent(cmsContentExplicitImpl);
-
- MetaInfoImpl metaInfo = new MetaInfoImpl();
- metaInfo.setMimeType("application/pdf");
- metaInfo.setDescription("PDF Document");
- cmsDataObjectImpl.setMetaInfo(metaInfo);
-
- verifyCMSSignatureRequest.setDataObject(cmsDataObjectImpl);
-
- verifyCMSSignatureRequest.setSignatories(VerifyCMSSignatureRequest.ALL_SIGNATORIES);
-
- try {
- VerifyCMSSignatureResponse verifyCMSSignatureResponse = CMSSignatureVerificationInvoker.getInstance()
- .verifyCMSSignature(verifyCMSSignatureRequest);
- @SuppressWarnings("rawtypes")
- Iterator iter;
- for (iter = verifyCMSSignatureResponse.getResponseElements().iterator(); iter.hasNext();) {
- VerifyCMSSignatureResponseElement responseElement = (VerifyCMSSignatureResponseElement) iter.next();
- ExtendedVerifyResult verifyResult = new ExtendedVerifyResult();
-
- verifyResult.setCertificateCheck(convertCheck(responseElement.getCertificateCheck()));
- verifyResult.setValueCheckCode(convertCheck(responseElement.getSignatureCheck()));
- verifyResult.setManifestCheckCode(new SignatureCheckImpl(99, null));
- verifyResult.setQualifiedCertificate(responseElement.getSignerInfo().isQualifiedCertificate());
- verifyResult.setVerificationDone(true);
-
- if (responseElement.getSignerInfo().getSignerCertificate() instanceof X509Certificate) {
- verifyResult.setSignerCertificate(
- (X509Certificate) responseElement.getSignerInfo().getSignerCertificate());
- } else {
- verifyResult.setSignerCertificate(
- new X509Certificate(responseElement.getSignerInfo().getSignerCertificate().getEncoded()));
- }
-
- verifyResult.setQcSource(responseElement.getSignerInfo().getQCSource());
-
- verifyResult.setPublicAuthority(responseElement.getSignerInfo().isPublicAuthority());
- verifyResult.setPublicAuthorityID(responseElement.getSignerInfo().getPublicAuhtorityID());
- verifyResult.setSSCD(responseElement.getSignerInfo().isSSCD());
- verifyResult.setSscdSource(responseElement.getSignerInfo().getSSCDSource());
- verifyResult.setIssureCountryCode(responseElement.getSignerInfo().getIssuerCountryCode());
-
- verificationResultList.add(verifyResult);
- }
- } catch (MOAException e) {
- logger.error("Failed to verify CMS Signature with MOA", e);
- throw new PdfAsException("Failed to verify CMS Signature with MOA", e);
- } catch (CertificateEncodingException e) {
- logger.error("Failed to verify CMS Signature with MOA", e);
- throw new PdfAsException("Failed to verify CMS Signature with MOA", e);
- } catch (CertificateException e) {
- logger.error("Failed to verify CMS Signature with MOA", e);
- throw new PdfAsException("Failed to verify CMS Signature with MOA", e);
- }
-
- return verificationResultList;
- }
-
- private SignatureCheck convertCheck(CheckResult checkResult) {
- return new SignatureCheckImpl(checkResult.getCode(), null);
- }
-
- @Override
- public void setConfiguration(Configuration config) {
- this.trustProfile = config.getValue(MOA_TRUSTPROFILE);
- }
-
- @Override
- public SignatureVerificationLevel getLevel() {
- return SignatureVerificationLevel.FULL_VERIFICATION;
- }
- */
+public class InternalMoaVerifier { /*
+ * implements IVerifier {
+ *
+ * public static final String MOA_TRUSTPROFILE =
+ * "internal.moa.trustprofile";
+ *
+ * private String trustProfile;
+ *
+ * private static final Logger logger =
+ * LoggerFactory.getLogger(InternalMoaVerifier.class);
+ *
+ * @Override public List<VerifyResult> verify(byte[] signature, byte[]
+ * signatureContent, Date verificationTime) throws PdfAsException {
+ *
+ * List<VerifyResult> verificationResultList = new
+ * ArrayList<VerifyResult>();
+ *
+ * VerifyCMSSignatureRequestImpl verifyCMSSignatureRequest = new
+ * VerifyCMSSignatureRequestImpl();
+ * verifyCMSSignatureRequest.setDateTime(verificationTime);
+ * verifyCMSSignatureRequest.setTrustProfileId(this.trustProfile);
+ * verifyCMSSignatureRequest.setCMSSignature(new
+ * ByteArrayInputStream(signature));
+ *
+ * CMSContentExplicitImpl cmsContentExplicitImpl = new
+ * CMSContentExplicitImpl(); cmsContentExplicitImpl.setBinaryContent(new
+ * ByteArrayInputStream(signatureContent));
+ *
+ * CMSDataObjectImpl cmsDataObjectImpl = new CMSDataObjectImpl();
+ * cmsDataObjectImpl.setContent(cmsContentExplicitImpl);
+ *
+ * MetaInfoImpl metaInfo = new MetaInfoImpl();
+ * metaInfo.setMimeType("application/pdf");
+ * metaInfo.setDescription("PDF Document");
+ * cmsDataObjectImpl.setMetaInfo(metaInfo);
+ *
+ * verifyCMSSignatureRequest.setDataObject(cmsDataObjectImpl);
+ *
+ * verifyCMSSignatureRequest.setSignatories(VerifyCMSSignatureRequest.
+ * ALL_SIGNATORIES);
+ *
+ * try { VerifyCMSSignatureResponse verifyCMSSignatureResponse =
+ * CMSSignatureVerificationInvoker.getInstance()
+ * .verifyCMSSignature(verifyCMSSignatureRequest);
+ *
+ * @SuppressWarnings("rawtypes") Iterator iter; for (iter =
+ * verifyCMSSignatureResponse.getResponseElements().iterator();
+ * iter.hasNext();) { VerifyCMSSignatureResponseElement responseElement =
+ * (VerifyCMSSignatureResponseElement) iter.next(); ExtendedVerifyResult
+ * verifyResult = new ExtendedVerifyResult();
+ *
+ * verifyResult.setCertificateCheck(convertCheck(responseElement.
+ * getCertificateCheck()));
+ * verifyResult.setValueCheckCode(convertCheck(responseElement.
+ * getSignatureCheck())); verifyResult.setManifestCheckCode(new
+ * SignatureCheckImpl(99, null));
+ * verifyResult.setQualifiedCertificate(responseElement.getSignerInfo().
+ * isQualifiedCertificate()); verifyResult.setVerificationDone(true);
+ *
+ * if (responseElement.getSignerInfo().getSignerCertificate() instanceof
+ * X509Certificate) { verifyResult.setSignerCertificate( (X509Certificate)
+ * responseElement.getSignerInfo().getSignerCertificate()); } else {
+ * verifyResult.setSignerCertificate( new
+ * X509Certificate(responseElement.getSignerInfo().getSignerCertificate().
+ * getEncoded())); }
+ *
+ * verifyResult.setQcSource(responseElement.getSignerInfo().getQCSource());
+ *
+ * verifyResult.setPublicAuthority(responseElement.getSignerInfo().
+ * isPublicAuthority());
+ * verifyResult.setPublicAuthorityID(responseElement.getSignerInfo().
+ * getPublicAuhtorityID());
+ * verifyResult.setSSCD(responseElement.getSignerInfo().isSSCD());
+ * verifyResult.setSscdSource(responseElement.getSignerInfo().getSSCDSource
+ * ()); verifyResult.setIssureCountryCode(responseElement.getSignerInfo().
+ * getIssuerCountryCode());
+ *
+ * verificationResultList.add(verifyResult); } } catch (MOAException e) {
+ * logger.error("Failed to verify CMS Signature with MOA", e); throw new
+ * PdfAsException("Failed to verify CMS Signature with MOA", e); } catch
+ * (CertificateEncodingException e) {
+ * logger.error("Failed to verify CMS Signature with MOA", e); throw new
+ * PdfAsException("Failed to verify CMS Signature with MOA", e); } catch
+ * (CertificateException e) {
+ * logger.error("Failed to verify CMS Signature with MOA", e); throw new
+ * PdfAsException("Failed to verify CMS Signature with MOA", e); }
+ *
+ * return verificationResultList; }
+ *
+ * private SignatureCheck convertCheck(CheckResult checkResult) { return
+ * new SignatureCheckImpl(checkResult.getCode(), null); }
+ *
+ * @Override public void setConfiguration(Configuration config) {
+ * this.trustProfile = config.getValue(MOA_TRUSTPROFILE); }
+ *
+ * @Override public SignatureVerificationLevel getLevel() { return
+ * SignatureVerificationLevel.FULL_VERIFICATION; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java
index 4ee4e07..804c7ad 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java
@@ -35,9 +35,7 @@ import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
-import org.apache.axis.AxisEngine;
import org.apache.axis.AxisFault;
-import org.apache.axis.AxisProperties;
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
import org.apache.axis.attachments.AttachmentPart;
@@ -49,7 +47,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
@@ -66,447 +63,434 @@ import at.gv.egovernment.moaspss.util.DOMUtils;
/**
* An handler that is invoked on each web service request and performs some
* central message handling.
- *
+ *
* Mainly sets up the <code>TransactionContext</code> for the current
* transaction (i.e. web service request).
- *
+ *
* @author Patrick Peck
* @author Stefan Knirsch
* @version $Id$
*/
public class AxisHandler extends BasicHandler {
- /**
- *
- */
- private static final long serialVersionUID = 2520698947819506866L;
-
- /** The resource names of the messages to load. */
- private static final String MOA_SPSS_WSDL_RESOURCE_ = "/resources/wsdl/MOA-SPSS-2.0.0.wsdl";
-
- /** The property name for accessing the HTTP request. */
- private static final String REQUEST_PROPERTY = HTTPConstants.MC_HTTP_SERVLETREQUEST;
-
- /** The property name for accessing the X509 client certificate chain. */
- private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
-
- /** The property name for accessing the SOAP action header. */
- private static final String SOAP_ACTION_HEADER = "soapaction";
-
- /** URI of the SOAP XML namespace. */
- public static final String SOAP_NS_URI = "http://schemas.xmlsoap.org/soap/envelope/";
-
- /** Prefix used for the SOAP XML namespace */
- public static final String SOAP_PREFIX = "soapenv";
-
- /** Simple string contains the front part of the enveloping SOAP wrapping */
- private static final String SOAP_PART_PRE = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body>";
-
- /** Simple string contains the post part of the enveloping SOAP wrapping */
- private static final String SOAP_PART_POST = "</soapenv:Body></soapenv:Envelope>";
-
- /**
- * Handle an invocation of this handler.
- *
- * @param msgContext
- * Information about this request/response.
- * @throws AxisFault
- * An error occurred during processing of the request.
- * @see org.apache.axis.Handler#invoke(MessageContext)
- */
- public void invoke(MessageContext msgContext) throws AxisFault {
- if (!msgContext.getPastPivot()) {
- handleRequest(msgContext);
- } else {
- handleResponse(msgContext);
- }
- }
-
- /**
- * This method is called by <code>invoke</code> to handle incoming requests.
- *
- * @param msgContext
- * The context as provided to <code>invoke</code>.
- * @throws AxisFault
- * An error occurred during processing of the request.
- */
- private void handleRequest(MessageContext msgContext) throws AxisFault {
- Message soapMessage = null;
- try {
- Logger.trace("---- Entering Axishandler");
- // generate a unique transaction id and build the TransactionContext
- // for this request
- HttpServletRequest request = (HttpServletRequest) msgContext.getProperty(REQUEST_PROPERTY);
-
- X509Certificate[] clientCert = (X509Certificate[]) request.getAttribute(X509_CERTIFICATE_PROPERTY);
-
- if (Logger.isTraceEnabled()) {
- Enumeration<String> allHeaders = request.getHeaderNames();
- if (allHeaders != null) {
- while(allHeaders.hasMoreElements()) {
- String header = allHeaders.nextElement();
- Logger.trace("Header: " + header + " : " + request.getHeader(header));
-
- }
- }
- }
-
- // Configure Axis
- // AxisProperties.setProperty(AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
- // AxisProperties.setProperty(AxisEngine.PROP_DOMULTIREFS,"false");
- // AxisProperties.setProperty(AxisEngine.PROP_SEND_XSI,"true");
- // msgContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION,
- // Boolean.FALSE);
- // msgContext.setProperty(org.apache.axis.
- // AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
- //AxisProperties.setProperty(AxisEngine.PROP_ATTACHMENT_IMPLEMENTATION, AxisEngine.DEFAULT_ATTACHMENT_IMPL);
- soapMessage = msgContext.getCurrentMessage();
-
- ConfigurationProvider configuration = ConfigurationProvider.getInstance();
- new String(soapMessage.getSOAPPartAsBytes());
- Element xmlRequest = null;
- // log.info(soapMessage.getSOAPPartAsString());
- Element soapPart = DOMUtils
- .parseDocument(new ByteArrayInputStream(soapMessage.getSOAPPartAsBytes()), false, null, null)
- .getDocumentElement();
- if (soapPart != null) {
- // TODO: check if DOM Version is intolerant when white spaces
- // are between tags (preceding normalization would be necessary)
- NodeList soapBodies = soapPart.getElementsByTagNameNS(SOAP_NS_URI, "Body");
- if (soapBodies != null && soapBodies.getLength() > 0) {
- xmlRequest = DOMUtils.getElementFromNodeList(soapBodies.item(0).getChildNodes());
- }
- // oder TODO: Evaluierung ob XPATH schneller
- /*
- * HashMap nSMap = new HashMap(); nSMap.put((String)SOAP_PREFIX,
- * SOAP_NS_URI); Element soapBody = (Element)
- * XPathUtils.selectSingleNode(soapPart, nSMap,
- * "/"+SOAP_PREFIX+":Envelope/"+SOAP_PREFIX+":Body"); if
- * (soapBody!=null) { xmlRequest =
- * DOMUtils.getElementFromNodeList(soapBody.getChildNodes()); }
- */
- }
-
- TransactionContext context = new TransactionContext(TransactionIDGenerator.nextID(), clientCert,
- configuration, xmlRequest, null);
-
- String soapAction = (String) request.getHeader(SOAP_ACTION_HEADER);
- if ("\"\"".equals(soapAction)) {
- // if http soap action header is empty
- soapAction = msgContext.getTargetService();
- }
- context.setRequestName(soapAction);
-
- if (soapMessage.getAttachmentsImpl() != null) {
- Logger.info("Attachments is NOT null!");
- Logger.trace(">>> Get AttachmentCount");
- int attachmentCount = soapMessage.getAttachmentsImpl().getAttachmentCount();
- Logger.trace("<<< Finished Get AttachmentCount");
- if (attachmentCount > 0) {
-
- // add SOAP attachments to transaction context
- @SuppressWarnings("rawtypes")
- Iterator iterator = soapMessage.getAttachments();
- while (iterator.hasNext()) {
- AttachmentPart attachment = (AttachmentPart) iterator.next();
- String id = attachment.getContentId();
- String type = attachment.getContentType();
-
- // Now get the InputStream (note: we could also get the
- // content with Object content =
- // attachment.getContent();)
- InputStream is = null;
- javax.activation.DataHandler datahandler = attachment.getDataHandler();
-
- int TYPE = 2;
- switch (TYPE) {
- case 1: {
- org.apache.axis.attachments.ManagedMemoryDataSource mmds = (org.apache.axis.attachments.ManagedMemoryDataSource) datahandler
- .getDataSource();
- context.addAttachment(id, type, mmds);
- break;
- }
- case 2: {
- is = datahandler.getDataSource().getInputStream();
- context.addAttachment(id, type, is, datahandler.getDataSource().getName());
- break;
- }
- }
- debug("handler.06", new Object[] { id, type });
- }
- }
- } else {
- Logger.info("Attachments is null!");
- }
-
- setUpContexts(context);
-
- // log some information about the request
- info("handler.00", new Object[] { context.getTransactionID(), msgContext.getTargetService() });
- info("handler.01", new Object[] { request.getRemoteAddr() });
- if (clientCert != null) {
- info("handler.02", new Object[] { clientCert[0].getSubjectDN(), clientCert[0].getSerialNumber(),
- clientCert[0].getIssuerDN() });
-
- } else {
- info("handler.03", null);
- }
- if (Logger.isTraceEnabled()) {
- // OutputFormat format = new OutputFormat((Document)
- // xmlRequest.getOwnerDocument());
- // format.setLineSeparator("\n");
- // format.setIndenting(false);
- // format.setPreserveSpace(true);
- // format.setOmitXMLDeclaration(false);
- // format.setEncoding("UTF-8");
- // ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // XMLSerializer conSerializer = new XMLSerializer(baos,
- // format);
- // conSerializer.serialize(xmlRequest);
- // Logger.debug(new LogMsg("Request:" + baos.toString()));
-
- String msg = soapMessage.getSOAPPartAsString();
- Logger.trace(new LogMsg(msg));
- }
- } catch (MOASystemException e) {
- MOASystemException se = new MOASystemException("2900", null, e);
- AxisFault fault = AxisFault.makeFault(se);
- fault.setFaultDetail(new Element[] { se.toErrorResponse() });
- throw fault;
-
- } catch (SAXException t ) {
- if (soapMessage != null && soapMessage.getSOAPPartAsBytes() != null) {
- try {
- Logger.debug("Req: " + new String(soapMessage.getSOAPPartAsBytes(), "UTF-8"));
- } catch (UnsupportedEncodingException e1) {
- e1.printStackTrace();
- }
-
- }
-
- t.printStackTrace();
- Logger.info(new LogMsg(t.getStackTrace()));
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse() });
- throw fault;
-
- } catch (Throwable t) {
- t.printStackTrace();
- Logger.info(new LogMsg(t.getStackTrace()));
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse() });
- throw fault;
- }
- Logger.trace("---- Leaving Axishandler");
- }
-
- /**
- * This method is called by <code>invoke</code> to handle outgoing
- * responses.
- *
- * @param msgContext
- * The context as provided to <code>invoke</code>.
- * @throws AxisFault
- * An error occurred during processing of the response.
- */
- private void handleResponse(MessageContext msgContext) throws AxisFault {
- String xmlResponseString = null;
- String soapResponseString = null;
-
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- Element xmlResponse = context.getResponse();
-
- if (xmlResponse != null) {
- try {
- xmlResponseString = DOMUtils.serializeNode(xmlResponse, true);
- /*
- * Soll die Antwort nur \n enthalten, so gibt es 2
- * Möglichkeiten: 1.) Xalan Version und xmlResponseString =
- * DOMUtils.serializeNode(xmlResponse, true, "\n"); 2.)
- * OutputFormat serializerFormat = new OutputFormat((Document)
- * xmlResponse.getOwnerDocument());
- * serializerFormat.setLineSeparator("\n");
- * serializerFormat.setIndenting(false);
- * serializerFormat.setPreserveSpace(true);
- * serializerFormat.setOmitXMLDeclaration(true);
- * serializerFormat.setEncoding("UTF-8"); ByteArrayOutputStream
- * serializedBytes = new ByteArrayOutputStream(); XMLSerializer
- * serializer = new XMLSerializer(serializedBytes,
- * serializerFormat); serializer.serialize(xmlResponse);
- * serializedBytes.close(); xmlResponseString =
- * serializedBytes.toString("UTF-8");
- */
- if (Logger.isTraceEnabled()) {
- Logger.trace(new LogMsg(xmlResponseString));
- }
- soapResponseString = SOAP_PART_PRE + xmlResponseString + SOAP_PART_POST;
- // override axis response-message
- msgContext.setResponseMessage(new Message(soapResponseString));
- } catch (Throwable t) {
- t.printStackTrace();
- Logger.info(new LogMsg(t.getStackTrace()));
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse() });
- throw fault;
- }
-
- } else {
- // Fallback: if functions do not set the resulting response in the
- // transaction, the original one from axis will be used
- soapResponseString = msgContext.getCurrentMessage().getSOAPPartAsString();
- }
-
- info("handler.04", null);
- if (Logger.isDebugEnabled()) {
- Logger.debug(new LogMsg(soapResponseString));
- }
- tearDownContexts();
- }
-
- /**
- * Called, when the processing of the web service fails.
- *
- * @param msgContext
- * Information about the current request.
- * @see org.apache.axis.Handler#onFault(org.apache.axis.MessageContext)
- */
- public void onFault(MessageContext msgContext) {
- info("handler.05", null);
- tearDownContexts();
- }
-
- /**
- * Set up the thread-local contexts (<code>TransactionContext</code> and
- * <code>LoggingContext</code>).
- *
- * @param context
- * The <code>TransactionContext</code> to set for the current
- * request.
- */
- private void setUpContexts(TransactionContext context) {
- // set the transaction context in the TransactionContextManager
- TransactionContextManager tcm = TransactionContextManager.getInstance();
- tcm.setTransactionContext(context);
-
- // set the logging context in the LoggingContextManager
- LoggingContextManager lcm = LoggingContextManager.getInstance();
- LoggingContext lc = new LoggingContext(context.getTransactionID());
- lcm.setLoggingContext(lc);
- }
-
- /**
- * Tear down the thread-local contexts.
- */
- private void tearDownContexts() {
- TransactionContextManager tcm = TransactionContextManager.getInstance();
-
- // delete temporary files
- TransactionContext context = tcm.getTransactionContext();
- context.cleanAttachmentCache();
-
- // unset the transaction context
- tcm.setTransactionContext(null);
-
- // unset the logging context
- LoggingContextManager lcm = LoggingContextManager.getInstance();
- lcm.setLoggingContext(null);
- }
-
- /**
- * Generate the WSDL into the <code>msgContext</code>.
- *
- * The code of this method is more or less copied from the
- * <code>org.apache.axis.handlers.soap.SOAPService</code> class contained in
- * the 1.1 release of Axis to allow for a missing <code>wsdlFile</code> (so
- * that a resource by the same name is searched for in the classpath). The
- * implementation of this method should be obsolete if Axis 1.1 or higher is
- * used.
- *
- * @param msgContext
- * The <code>MessageContext</code> that will contain the WSDL
- * description of the current web service.
- * @throws AxisFault
- * An error occurred producing the WSDL.
- */
- public void generateWSDL(MessageContext msgContext) throws AxisFault {
- InputStream instream = null;
-
- try {
- String filename = MOA_SPSS_WSDL_RESOURCE_;
-
- File file = new File(filename);
- if (file.exists()) {
- // if this resolves to a file, load it
- instream = new FileInputStream(filename);
- } else {
- // else load a named resource in our classloader.
- instream = this.getClass().getResourceAsStream(filename);
- if (instream == null) {
- String errorText = Messages.getMessage("wsdlFileMissing", filename);
- throw new AxisFault(errorText);
- }
- }
- Document doc = XMLUtils.newDocument(instream);
- msgContext.setProperty("WSDL", doc);
- } catch (Exception e) {
- throw AxisFault.makeFault(e);
- } finally {
- if (instream != null) {
- try {
- instream.close();
- } catch (IOException e) {
- // ok to do nothing here
- }
- }
- }
- }
-
- /**
- * Utility function to issue an info message to the log.
- *
- * @param messageId
- * The ID of the message to log.
- * @param parameters
- * Additional message parameters.
- */
- private static void info(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
-
- Logger.info(new LogMsg(msg.getMessage(messageId, parameters)));
- }
-
- /**
- * Utility function to issue an debug message to the log.
- *
- * @param messageId
- * The ID of the message to log.
- * @param parameters
- * Additional message parameters.
- */
- private static void debug(String messageId, Object[] parameters) {
- MessageProvider msg = MessageProvider.getInstance();
-
- Logger.debug(new LogMsg(msg.getMessage(messageId, parameters)));
- }
-
- // private byte[] toByteArray(AttachmentPart attachment) throws
- // SOAPException, IOException
- // {
- // ByteArrayOutputStream outputStream = new
- // ByteArrayOutputStream(attachment.getSize());
- // InputStream inputStream = (InputStream) attachment.getContent();
- // int currentByte = -1;
- // while ((currentByte = inputStream.read()) != -1)
- // outputStream.write(currentByte);
- //
- // inputStream.close();
- // outputStream.close();
- //
- // return outputStream.toByteArray();
- //
- // }
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2520698947819506866L;
+
+ /** The resource names of the messages to load. */
+ private static final String MOA_SPSS_WSDL_RESOURCE_ = "/resources/wsdl/MOA-SPSS-2.0.0.wsdl";
+
+ /** The property name for accessing the HTTP request. */
+ private static final String REQUEST_PROPERTY = HTTPConstants.MC_HTTP_SERVLETREQUEST;
+
+ /** The property name for accessing the X509 client certificate chain. */
+ private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
+
+ /** The property name for accessing the SOAP action header. */
+ private static final String SOAP_ACTION_HEADER = "soapaction";
+
+ /** URI of the SOAP XML namespace. */
+ public static final String SOAP_NS_URI = "http://schemas.xmlsoap.org/soap/envelope/";
+
+ /** Prefix used for the SOAP XML namespace */
+ public static final String SOAP_PREFIX = "soapenv";
+
+ /** Simple string contains the front part of the enveloping SOAP wrapping */
+ private static final String SOAP_PART_PRE =
+ "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><soapenv:Body>";
+
+ /** Simple string contains the post part of the enveloping SOAP wrapping */
+ private static final String SOAP_PART_POST = "</soapenv:Body></soapenv:Envelope>";
+
+ /**
+ * Handle an invocation of this handler.
+ *
+ * @param msgContext Information about this request/response.
+ * @throws AxisFault An error occurred during processing of the request.
+ * @see org.apache.axis.Handler#invoke(MessageContext)
+ */
+ @Override
+ public void invoke(MessageContext msgContext) throws AxisFault {
+ if (!msgContext.getPastPivot()) {
+ handleRequest(msgContext);
+ } else {
+ handleResponse(msgContext);
+ }
+ }
+
+ /**
+ * This method is called by <code>invoke</code> to handle incoming requests.
+ *
+ * @param msgContext The context as provided to <code>invoke</code>.
+ * @throws AxisFault An error occurred during processing of the request.
+ */
+ private void handleRequest(MessageContext msgContext) throws AxisFault {
+ Message soapMessage = null;
+ try {
+ Logger.trace("---- Entering Axishandler");
+ // generate a unique transaction id and build the TransactionContext
+ // for this request
+ final HttpServletRequest request = (HttpServletRequest) msgContext.getProperty(REQUEST_PROPERTY);
+
+ final X509Certificate[] clientCert = (X509Certificate[]) request.getAttribute(
+ X509_CERTIFICATE_PROPERTY);
+
+ if (Logger.isTraceEnabled()) {
+ final Enumeration<String> allHeaders = request.getHeaderNames();
+ if (allHeaders != null) {
+ while (allHeaders.hasMoreElements()) {
+ final String header = allHeaders.nextElement();
+ Logger.trace("Header: " + header + " : " + request.getHeader(header));
+
+ }
+ }
+ }
+
+ // Configure Axis
+ // AxisProperties.setProperty(AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
+ // AxisProperties.setProperty(AxisEngine.PROP_DOMULTIREFS,"false");
+ // AxisProperties.setProperty(AxisEngine.PROP_SEND_XSI,"true");
+ // msgContext.setProperty(org.apache.axis.SOAPPart.ALLOW_FORM_OPTIMIZATION,
+ // Boolean.FALSE);
+ // msgContext.setProperty(org.apache.axis.
+ // AxisEngine.PROP_ENABLE_NAMESPACE_PREFIX_OPTIMIZATION,"false");
+ // AxisProperties.setProperty(AxisEngine.PROP_ATTACHMENT_IMPLEMENTATION,
+ // AxisEngine.DEFAULT_ATTACHMENT_IMPL);
+ soapMessage = msgContext.getCurrentMessage();
+
+ final ConfigurationProvider configuration = ConfigurationProvider.getInstance();
+ new String(soapMessage.getSOAPPartAsBytes());
+ Element xmlRequest = null;
+ // log.info(soapMessage.getSOAPPartAsString());
+ final Element soapPart = DOMUtils
+ .parseDocument(new ByteArrayInputStream(soapMessage.getSOAPPartAsBytes()), false, null, null)
+ .getDocumentElement();
+ if (soapPart != null) {
+ // TODO: check if DOM Version is intolerant when white spaces
+ // are between tags (preceding normalization would be necessary)
+ final NodeList soapBodies = soapPart.getElementsByTagNameNS(SOAP_NS_URI, "Body");
+ if (soapBodies != null && soapBodies.getLength() > 0) {
+ xmlRequest = DOMUtils.getElementFromNodeList(soapBodies.item(0).getChildNodes());
+ }
+ // oder TODO: Evaluierung ob XPATH schneller
+ /*
+ * HashMap nSMap = new HashMap(); nSMap.put((String)SOAP_PREFIX, SOAP_NS_URI);
+ * Element soapBody = (Element) XPathUtils.selectSingleNode(soapPart, nSMap,
+ * "/"+SOAP_PREFIX+":Envelope/"+SOAP_PREFIX+":Body"); if (soapBody!=null) {
+ * xmlRequest = DOMUtils.getElementFromNodeList(soapBody.getChildNodes()); }
+ */
+ }
+
+ final TransactionContext context = new TransactionContext(TransactionIDGenerator.nextID(), clientCert,
+ configuration, xmlRequest, null);
+
+ String soapAction = request.getHeader(SOAP_ACTION_HEADER);
+ if ("\"\"".equals(soapAction)) {
+ // if http soap action header is empty
+ soapAction = msgContext.getTargetService();
+ }
+ context.setRequestName(soapAction);
+
+ if (soapMessage.getAttachmentsImpl() != null) {
+ Logger.info("Attachments is NOT null!");
+ Logger.trace(">>> Get AttachmentCount");
+ final int attachmentCount = soapMessage.getAttachmentsImpl().getAttachmentCount();
+ Logger.trace("<<< Finished Get AttachmentCount");
+ if (attachmentCount > 0) {
+
+ // add SOAP attachments to transaction context
+ @SuppressWarnings("rawtypes")
+ final Iterator iterator = soapMessage.getAttachments();
+ while (iterator.hasNext()) {
+ final AttachmentPart attachment = (AttachmentPart) iterator.next();
+ final String id = attachment.getContentId();
+ final String type = attachment.getContentType();
+
+ // Now get the InputStream (note: we could also get the
+ // content with Object content =
+ // attachment.getContent();)
+ InputStream is = null;
+ final javax.activation.DataHandler datahandler = attachment.getDataHandler();
+
+ final int TYPE = 2;
+ switch (TYPE) {
+ case 1: {
+ final org.apache.axis.attachments.ManagedMemoryDataSource mmds =
+ (org.apache.axis.attachments.ManagedMemoryDataSource) datahandler
+ .getDataSource();
+ context.addAttachment(id, type, mmds);
+ break;
+ }
+ case 2: {
+ is = datahandler.getDataSource().getInputStream();
+ context.addAttachment(id, type, is, datahandler.getDataSource().getName());
+ break;
+ }
+ }
+ debug("handler.06", new Object[] { id, type });
+ }
+ }
+ } else {
+ Logger.info("Attachments is null!");
+ }
+
+ setUpContexts(context);
+
+ // log some information about the request
+ info("handler.00", new Object[] { context.getTransactionID(), msgContext.getTargetService() });
+ info("handler.01", new Object[] { request.getRemoteAddr() });
+ if (clientCert != null) {
+ info("handler.02", new Object[] { clientCert[0].getSubjectDN(), clientCert[0].getSerialNumber(),
+ clientCert[0].getIssuerDN() });
+
+ } else {
+ info("handler.03", null);
+ }
+ if (Logger.isTraceEnabled()) {
+ // OutputFormat format = new OutputFormat((Document)
+ // xmlRequest.getOwnerDocument());
+ // format.setLineSeparator("\n");
+ // format.setIndenting(false);
+ // format.setPreserveSpace(true);
+ // format.setOmitXMLDeclaration(false);
+ // format.setEncoding("UTF-8");
+ // ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ // XMLSerializer conSerializer = new XMLSerializer(baos,
+ // format);
+ // conSerializer.serialize(xmlRequest);
+ // Logger.debug(new LogMsg("Request:" + baos.toString()));
+
+ final String msg = soapMessage.getSOAPPartAsString();
+ Logger.trace(new LogMsg(msg));
+ }
+ } catch (final MOASystemException e) {
+ final MOASystemException se = new MOASystemException("2900", null, e);
+ final AxisFault fault = AxisFault.makeFault(se);
+ fault.setFaultDetail(new Element[] { se.toErrorResponse() });
+ throw fault;
+
+ } catch (final SAXException t) {
+ if (soapMessage != null && soapMessage.getSOAPPartAsBytes() != null) {
+ try {
+ Logger.debug("Req: " + new String(soapMessage.getSOAPPartAsBytes(), "UTF-8"));
+ } catch (final UnsupportedEncodingException e1) {
+ e1.printStackTrace();
+ }
+
+ }
+
+ t.printStackTrace();
+ Logger.info(new LogMsg(t.getStackTrace()));
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ throw fault;
+
+ } catch (final Throwable t) {
+ t.printStackTrace();
+ Logger.info(new LogMsg(t.getStackTrace()));
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ throw fault;
+ }
+ Logger.trace("---- Leaving Axishandler");
+ }
+
+ /**
+ * This method is called by <code>invoke</code> to handle outgoing responses.
+ *
+ * @param msgContext The context as provided to <code>invoke</code>.
+ * @throws AxisFault An error occurred during processing of the response.
+ */
+ private void handleResponse(MessageContext msgContext) throws AxisFault {
+ String xmlResponseString = null;
+ String soapResponseString = null;
+
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ final Element xmlResponse = context.getResponse();
+
+ if (xmlResponse != null) {
+ try {
+ xmlResponseString = DOMUtils.serializeNode(xmlResponse, true);
+ /*
+ * Soll die Antwort nur \n enthalten, so gibt es 2 Möglichkeiten: 1.) Xalan
+ * Version und xmlResponseString = DOMUtils.serializeNode(xmlResponse, true,
+ * "\n"); 2.) OutputFormat serializerFormat = new OutputFormat((Document)
+ * xmlResponse.getOwnerDocument()); serializerFormat.setLineSeparator("\n");
+ * serializerFormat.setIndenting(false);
+ * serializerFormat.setPreserveSpace(true);
+ * serializerFormat.setOmitXMLDeclaration(true);
+ * serializerFormat.setEncoding("UTF-8"); ByteArrayOutputStream serializedBytes
+ * = new ByteArrayOutputStream(); XMLSerializer serializer = new
+ * XMLSerializer(serializedBytes, serializerFormat);
+ * serializer.serialize(xmlResponse); serializedBytes.close(); xmlResponseString
+ * = serializedBytes.toString("UTF-8");
+ */
+ if (Logger.isTraceEnabled()) {
+ Logger.trace(new LogMsg(xmlResponseString));
+ }
+ soapResponseString = SOAP_PART_PRE + xmlResponseString + SOAP_PART_POST;
+ // override axis response-message
+ msgContext.setResponseMessage(new Message(soapResponseString));
+ } catch (final Throwable t) {
+ t.printStackTrace();
+ Logger.info(new LogMsg(t.getStackTrace()));
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ throw fault;
+ }
+
+ } else {
+ // Fallback: if functions do not set the resulting response in the
+ // transaction, the original one from axis will be used
+ soapResponseString = msgContext.getCurrentMessage().getSOAPPartAsString();
+ }
+
+ info("handler.04", null);
+ if (Logger.isDebugEnabled()) {
+ Logger.debug(new LogMsg(soapResponseString));
+ }
+ tearDownContexts();
+ }
+
+ /**
+ * Called, when the processing of the web service fails.
+ *
+ * @param msgContext Information about the current request.
+ * @see org.apache.axis.Handler#onFault(org.apache.axis.MessageContext)
+ */
+ @Override
+ public void onFault(MessageContext msgContext) {
+ info("handler.05", null);
+ tearDownContexts();
+ }
+
+ /**
+ * Set up the thread-local contexts (<code>TransactionContext</code> and
+ * <code>LoggingContext</code>).
+ *
+ * @param context The <code>TransactionContext</code> to set for the current
+ * request.
+ */
+ private void setUpContexts(TransactionContext context) {
+ // set the transaction context in the TransactionContextManager
+ final TransactionContextManager tcm = TransactionContextManager.getInstance();
+ tcm.setTransactionContext(context);
+
+ // set the logging context in the LoggingContextManager
+ final LoggingContextManager lcm = LoggingContextManager.getInstance();
+ final LoggingContext lc = new LoggingContext(context.getTransactionID());
+ lcm.setLoggingContext(lc);
+ }
+
+ /**
+ * Tear down the thread-local contexts.
+ */
+ private void tearDownContexts() {
+ final TransactionContextManager tcm = TransactionContextManager.getInstance();
+
+ // delete temporary files
+ final TransactionContext context = tcm.getTransactionContext();
+ context.cleanAttachmentCache();
+
+ // unset the transaction context
+ tcm.setTransactionContext(null);
+
+ // unset the logging context
+ final LoggingContextManager lcm = LoggingContextManager.getInstance();
+ lcm.setLoggingContext(null);
+ }
+
+ /**
+ * Generate the WSDL into the <code>msgContext</code>.
+ *
+ * The code of this method is more or less copied from the
+ * <code>org.apache.axis.handlers.soap.SOAPService</code> class contained in the
+ * 1.1 release of Axis to allow for a missing <code>wsdlFile</code> (so that a
+ * resource by the same name is searched for in the classpath). The
+ * implementation of this method should be obsolete if Axis 1.1 or higher is
+ * used.
+ *
+ * @param msgContext The <code>MessageContext</code> that will contain the WSDL
+ * description of the current web service.
+ * @throws AxisFault An error occurred producing the WSDL.
+ */
+ @Override
+ public void generateWSDL(MessageContext msgContext) throws AxisFault {
+ InputStream instream = null;
+
+ try {
+ final String filename = MOA_SPSS_WSDL_RESOURCE_;
+
+ final File file = new File(filename);
+ if (file.exists()) {
+ // if this resolves to a file, load it
+ instream = new FileInputStream(filename);
+ } else {
+ // else load a named resource in our classloader.
+ instream = this.getClass().getResourceAsStream(filename);
+ if (instream == null) {
+ final String errorText = Messages.getMessage("wsdlFileMissing", filename);
+ throw new AxisFault(errorText);
+ }
+ }
+ final Document doc = XMLUtils.newDocument(instream);
+ msgContext.setProperty("WSDL", doc);
+ } catch (final Exception e) {
+ throw AxisFault.makeFault(e);
+ } finally {
+ if (instream != null) {
+ try {
+ instream.close();
+ } catch (final IOException e) {
+ // ok to do nothing here
+ }
+ }
+ }
+ }
+
+ /**
+ * Utility function to issue an info message to the log.
+ *
+ * @param messageId The ID of the message to log.
+ * @param parameters Additional message parameters.
+ */
+ private static void info(String messageId, Object[] parameters) {
+ final MessageProvider msg = MessageProvider.getInstance();
+
+ Logger.info(new LogMsg(msg.getMessage(messageId, parameters)));
+ }
+
+ /**
+ * Utility function to issue an debug message to the log.
+ *
+ * @param messageId The ID of the message to log.
+ * @param parameters Additional message parameters.
+ */
+ private static void debug(String messageId, Object[] parameters) {
+ final MessageProvider msg = MessageProvider.getInstance();
+
+ Logger.debug(new LogMsg(msg.getMessage(messageId, parameters)));
+ }
+
+ // private byte[] toByteArray(AttachmentPart attachment) throws
+ // SOAPException, IOException
+ // {
+ // ByteArrayOutputStream outputStream = new
+ // ByteArrayOutputStream(attachment.getSize());
+ // InputStream inputStream = (InputStream) attachment.getContent();
+ // int currentByte = -1;
+ // while ((currentByte = inputStream.read()) != -1)
+ // outputStream.write(currentByte);
+ //
+ // inputStream.close();
+ // outputStream.close();
+ //
+ // return outputStream.toByteArray();
+ //
+ // }
} \ No newline at end of file
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java
index 43804a2..bc2c3b6 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/CertificateProviderServlet.java
@@ -1,9 +1,5 @@
package at.gv.egovernment.moa.spss.server.service;
-import iaik.server.modules.keys.KeyEntryID;
-import iaik.server.modules.keys.KeyModule;
-import iaik.server.modules.keys.KeyModuleFactory;
-
import java.io.IOException;
import java.math.BigInteger;
import java.security.Principal;
@@ -26,155 +22,158 @@ import at.gv.egovernment.moa.spss.server.config.KeyGroupEntry;
import at.gv.egovernment.moa.spss.server.logging.TransactionId;
import at.gv.egovernment.moa.spss.server.transaction.TransactionIDGenerator;
import at.gv.egovernment.moaspss.logging.Logger;
+import iaik.server.modules.keys.KeyEntryID;
+import iaik.server.modules.keys.KeyModule;
+import iaik.server.modules.keys.KeyModuleFactory;
/**
- *
+ *
* @author Andreas Fitzek
* @version $Id$
*/
public class CertificateProviderServlet extends HttpServlet {
- /**
- *
- */
- private static final long serialVersionUID = -6907582473072190122L;
-
- /** The property name for accessing the X509 client certificate chain. */
- private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
-
- public static final String PARAM_KEYID = "id";
-
- /**
- * Build the set of <code>KeyEntryID</code>s available to the given
- * <code>keyGroupID</code>.
- *
- * @param keyGroupID
- * The keygroup ID for which the available keys should be
- * returned.
- * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the
- * available keys.
- * @throws ConfigurationException
- */
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private Set buildKeySet(String keyGroupID, X509Certificate cert, KeyModule module)
- throws ConfigurationException {
- ConfigurationProvider config = ConfigurationProvider.getInstance();
- Set keyGroupEntries;
-
- // get the KeyGroup entries from the configuration
- if (cert != null) {
- Principal issuer = cert.getIssuerDN();
- BigInteger serialNumber = cert.getSerialNumber();
-
- keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber,
- keyGroupID);
- } else {
- keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
- }
-
- // map the KeyGroup entries to a set of KeyEntryIDs
- if (keyGroupEntries == null) {
- return null;
- } else if (keyGroupEntries.size() == 0) {
- return Collections.EMPTY_SET;
- } else {
-
- Set keyEntryIDs = module.getPrivateKeyEntryIDs();
- Set keySet = new HashSet();
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
- KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(),
- entryID.getCertificateIssuer(),
- entryID.getCertificateSerialNumber());
- if (keyGroupEntries.contains(entry)) {
- keySet.add(entryID);
- }
- }
- return keySet;
- }
- }
-
- private X509Certificate getClientCertificate(HttpServletRequest request) {
- X509Certificate[] clientCert = (X509Certificate[]) request
- .getAttribute(X509_CERTIFICATE_PROPERTY);
- if(clientCert != null) {
- return clientCert[0];
- }
- return null;
- }
-
- @SuppressWarnings("rawtypes")
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- try {
- X509Certificate cert = getClientCertificate(request);
- String keyId = request.getParameter(PARAM_KEYID);
-
- if(keyId == null) {
- Logger.warn(PARAM_KEYID + " not provided in Request. Returning: " + HttpServletResponse.SC_BAD_REQUEST);
- response.sendError(HttpServletResponse.SC_BAD_REQUEST);
- return;
- }
-
- String transactionId = TransactionIDGenerator.nextID();
-
- KeyModule module = KeyModuleFactory.getInstance(new TransactionId(
- transactionId));
-
- Set keySet = buildKeySet(keyId, cert, module);
-
- if(keySet == null || keySet.isEmpty()) {
- Logger.warn("No keys available for Key Identifier " + keyId + " and given authentication.");
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
-
-
- if(keySet.size() != 1) {
- Logger.warn("Too many keys available for Key Identifier " + keyId + " and given authentication.");
- response.sendError(HttpServletResponse.SC_CONFLICT);
- return;
- }
-
- Iterator iter;
-
- // filter out the keys that do not exist in the IAIK configuration
- // by walking through the key entries and checking if the exist in
- // the
- // keyGroupEntries
- for (iter = keySet.iterator(); iter.hasNext();) {
- KeyEntryID entryID = (KeyEntryID) iter.next();
-
- List certChain = module.getPrivateKeyEntry(entryID).getCertificateChain();
-
- if(certChain != null && !certChain.isEmpty()) {
- Logger.trace("Returning Certificate!");
- Certificate keyCert = ((Certificate)certChain.get(0));
- byte[] certData = keyCert.getEncoded();
- response.setStatus(HttpServletResponse.SC_OK);
- response.setContentType("application/pkix-cert");
- response.setHeader("Content-disposition","attachment; filename=\"" + keyId + ".cer\"");
- response.getOutputStream().write(certData);
- response.getOutputStream().close();
- return;
- }
-
- break;
- }
-
- // No Certificate could be found!
- Logger.warn("Failed to find keys available for Key Identifier " + keyId + " and given authentication.");
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
- } catch(Throwable e) {
- Logger.error("Unhandled Exception when providing certificate", e);
- response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
- }
+ /**
+ *
+ */
+ private static final long serialVersionUID = -6907582473072190122L;
+
+ /** The property name for accessing the X509 client certificate chain. */
+ private static final String X509_CERTIFICATE_PROPERTY = "javax.servlet.request.X509Certificate";
+
+ public static final String PARAM_KEYID = "id";
+
+ /**
+ * Build the set of <code>KeyEntryID</code>s available to the given
+ * <code>keyGroupID</code>.
+ *
+ * @param keyGroupID The keygroup ID for which the available keys should be
+ * returned.
+ * @return The <code>Set</code> of <code>KeyEntryID</code>s identifying the
+ * available keys.
+ * @throws ConfigurationException
+ */
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ private Set buildKeySet(String keyGroupID, X509Certificate cert, KeyModule module)
+ throws ConfigurationException {
+ final ConfigurationProvider config = ConfigurationProvider.getInstance();
+ Set keyGroupEntries;
+
+ // get the KeyGroup entries from the configuration
+ if (cert != null) {
+ final Principal issuer = cert.getIssuerDN();
+ final BigInteger serialNumber = cert.getSerialNumber();
+
+ keyGroupEntries = config.getKeyGroupEntries(issuer, serialNumber,
+ keyGroupID);
+ } else {
+ keyGroupEntries = config.getKeyGroupEntries(null, null, keyGroupID);
+ }
+
+ // map the KeyGroup entries to a set of KeyEntryIDs
+ if (keyGroupEntries == null) {
+ return null;
+ } else if (keyGroupEntries.size() == 0) {
+ return Collections.EMPTY_SET;
+ } else {
+
+ final Set keyEntryIDs = module.getPrivateKeyEntryIDs();
+ final Set keySet = new HashSet();
+ Iterator iter;
+
+ // filter out the keys that do not exist in the IAIK configuration
+ // by walking through the key entries and checking if the exist in
+ // the
+ // keyGroupEntries
+ for (iter = keyEntryIDs.iterator(); iter.hasNext();) {
+ final KeyEntryID entryID = (KeyEntryID) iter.next();
+ final KeyGroupEntry entry = new KeyGroupEntry(entryID.getModuleID(),
+ entryID.getCertificateIssuer(),
+ entryID.getCertificateSerialNumber());
+ if (keyGroupEntries.contains(entry)) {
+ keySet.add(entryID);
+ }
+ }
+ return keySet;
+ }
+ }
+
+ private X509Certificate getClientCertificate(HttpServletRequest request) {
+ final X509Certificate[] clientCert = (X509Certificate[]) request
+ .getAttribute(X509_CERTIFICATE_PROPERTY);
+ if (clientCert != null) {
+ return clientCert[0];
+ }
+ return null;
+ }
+
+ @Override
+ @SuppressWarnings("rawtypes")
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ try {
+ final X509Certificate cert = getClientCertificate(request);
+ final String keyId = request.getParameter(PARAM_KEYID);
+
+ if (keyId == null) {
+ Logger.warn(PARAM_KEYID + " not provided in Request. Returning: "
+ + HttpServletResponse.SC_BAD_REQUEST);
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST);
+ return;
+ }
+
+ final String transactionId = TransactionIDGenerator.nextID();
+
+ final KeyModule module = KeyModuleFactory.getInstance(new TransactionId(
+ transactionId));
+
+ final Set keySet = buildKeySet(keyId, cert, module);
+
+ if (keySet == null || keySet.isEmpty()) {
+ Logger.warn("No keys available for Key Identifier " + keyId + " and given authentication.");
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ }
+
+ if (keySet.size() != 1) {
+ Logger.warn("Too many keys available for Key Identifier " + keyId + " and given authentication.");
+ response.sendError(HttpServletResponse.SC_CONFLICT);
+ return;
+ }
+
+ Iterator iter;
+
+ // filter out the keys that do not exist in the IAIK configuration
+ // by walking through the key entries and checking if the exist in
+ // the
+ // keyGroupEntries
+ for (iter = keySet.iterator(); iter.hasNext();) {
+ final KeyEntryID entryID = (KeyEntryID) iter.next();
+
+ final List certChain = module.getPrivateKeyEntry(entryID).getCertificateChain();
+
+ if (certChain != null && !certChain.isEmpty()) {
+ Logger.trace("Returning Certificate!");
+ final Certificate keyCert = (Certificate) certChain.get(0);
+ final byte[] certData = keyCert.getEncoded();
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.setContentType("application/pkix-cert");
+ response.setHeader("Content-disposition", "attachment; filename=\"" + keyId + ".cer\"");
+ response.getOutputStream().write(certData);
+ response.getOutputStream().close();
+ return;
+ }
+
+ break;
+ }
+
+ // No Certificate could be found!
+ Logger.warn("Failed to find keys available for Key Identifier " + keyId + " and given authentication.");
+ response.sendError(HttpServletResponse.SC_NOT_FOUND);
+ return;
+ } catch (final Throwable e) {
+ Logger.error("Unhandled Exception when providing certificate", e);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java
index 6164154..135d652 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ConfigurationServlet.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
import java.io.IOException;
@@ -37,7 +36,7 @@ import javax.servlet.http.HttpServletResponse;
import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;
import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;
-import at.gv.egovernment.moa.spss.server.init.*;
+import at.gv.egovernment.moa.spss.server.init.SystemInitializer;
import at.gv.egovernment.moa.spss.util.MessageProvider;
import at.gv.egovernment.moaspss.logging.LogMsg;
import at.gv.egovernment.moaspss.logging.Logger;
@@ -46,36 +45,38 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager;
/**
* A servlet to initialize and update the MOA configuration.
- *
+ *
* @author Fatemeh Philippi
* @author Patrick Peck
* @version $Id$
*/
public class ConfigurationServlet extends HttpServlet {
/**
- *
- */
- private static final long serialVersionUID = 8372961105222028696L;
-/** The document type of the HTML to generate. */
+ *
+ */
+ private static final long serialVersionUID = 8372961105222028696L;
+ /** The document type of the HTML to generate. */
private static final String DOC_TYPE =
- "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
/**
- * Handle a HTTP GET request, used to indicated that the MOA
- * configuration needs to be updated (reloaded).
- *
- * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest, HttpServletResponse)
+ * Handle a HTTP GET request, used to indicated that the MOA configuration needs
+ * to be updated (reloaded).
+ *
+ * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest,
+ * HttpServletResponse)
*/
+ @Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
+ throws ServletException, IOException {
- MessageProvider msg = MessageProvider.getInstance();
+ final MessageProvider msg = MessageProvider.getInstance();
PrintWriter out;
// set up a logging context for logging the reconfiguration
LoggingContextManager.getInstance().setLoggingContext(
- new LoggingContext("configuration update"));
+ new LoggingContext("configuration update"));
response.setContentType("text/html");
out = response.getWriter();
@@ -84,8 +85,8 @@ public class ConfigurationServlet extends HttpServlet {
out.println("<body bgcolor=\"#FFFFFF\">");
try {
// reconfigure the system
- ConfigurationProvider config = ConfigurationProvider.reload();
- IaikConfigurator iaikConfigurator = new IaikConfigurator();
+ final ConfigurationProvider config = ConfigurationProvider.reload();
+ final IaikConfigurator iaikConfigurator = new IaikConfigurator();
iaikConfigurator.configure(config);
@@ -95,12 +96,12 @@ public class ConfigurationServlet extends HttpServlet {
if (!config.getWarnings().isEmpty()) {
// print the warnings
- List allWarnings = new ArrayList();
+ final List allWarnings = new ArrayList();
Iterator iter;
-
+
allWarnings.addAll(config.getWarnings());
allWarnings.addAll(iaikConfigurator.getWarnings());
-
+
out.println("<p><b>" + msg.getMessage("config.29", null) + "</b></p>");
for (iter = allWarnings.iterator(); iter.hasNext();) {
out.println(iter.next() + "<br />");
@@ -108,7 +109,7 @@ public class ConfigurationServlet extends HttpServlet {
out.println("<p><b>" + msg.getMessage("config.28", null) + "</b></p>");
}
- } catch (Throwable t) {
+ } catch (final Throwable t) {
out.println("<p><b>" + msg.getMessage("config.20", null) + "</b></p>");
out.println("<p><b>" + msg.getMessage("config.28", null) + "</b></p>");
Logger.warn(new LogMsg(msg.getMessage("config.20", null)), t);
@@ -117,30 +118,33 @@ public class ConfigurationServlet extends HttpServlet {
out.flush();
out.close();
-
+
// tear down the logging context
LoggingContextManager.getInstance().setLoggingContext(null);
}
/**
* Do the same as <code>doGet</code>.
- *
- * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest, HttpServletResponse)
+ *
+ * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest,
+ * HttpServletResponse)
*/
+ @Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
+ throws ServletException, IOException {
doGet(request, response);
}
/**
* Perform some initial initialization tasks for the MOA web services
* application.
- *
+ *
* Does an initial load of the MOA configuration to test if a working web
* service can be provided.
- *
+ *
* @see javax.servlet.GenericServlet#init()
*/
+ @Override
public void init() throws ServletException {
SystemInitializer.init();
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java
index 1d49cd7..f5350af 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/DeleteableDataSourceWrapper.java
@@ -8,36 +8,35 @@ import at.gv.egovernment.moa.spss.server.transaction.DeleteableDataSource;
public class DeleteableDataSourceWrapper implements DeleteableDataSource {
- private org.apache.axis.attachments.ManagedMemoryDataSource wrapped;
-
- public DeleteableDataSourceWrapper(org.apache.axis.attachments.ManagedMemoryDataSource wrapped) {
- this.wrapped = wrapped;
- }
-
- @Override
- public String getContentType() {
- return this.wrapped.getContentType();
- }
-
- @Override
- public InputStream getInputStream() throws IOException {
- return this.wrapped.getInputStream();
- }
-
- @Override
- public String getName() {
- return this.wrapped.getName();
- }
-
- @Override
- public OutputStream getOutputStream() throws IOException {
- return this.wrapped.getOutputStream();
- }
-
- @Override
- public void delete() {
- this.wrapped.delete();
- }
-
-
+ private final org.apache.axis.attachments.ManagedMemoryDataSource wrapped;
+
+ public DeleteableDataSourceWrapper(org.apache.axis.attachments.ManagedMemoryDataSource wrapped) {
+ this.wrapped = wrapped;
+ }
+
+ @Override
+ public String getContentType() {
+ return this.wrapped.getContentType();
+ }
+
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return this.wrapped.getInputStream();
+ }
+
+ @Override
+ public String getName() {
+ return this.wrapped.getName();
+ }
+
+ @Override
+ public OutputStream getOutputStream() throws IOException {
+ return this.wrapped.getOutputStream();
+ }
+
+ @Override
+ public void delete() {
+ this.wrapped.delete();
+ }
+
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java
index 697c69e..c4ad498 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/ServiceUtils.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
import java.io.ByteArrayInputStream;
@@ -37,7 +36,7 @@ import at.gv.egovernment.moaspss.util.MOAErrorHandler;
/**
* Helper methods for the Service classes.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -45,59 +44,59 @@ public class ServiceUtils {
/**
* Schema-validate a request.
- *
+ *
* @param request The request to validate.
* @throws MOAApplicationException An error occurred validating the requst.
*/
public static void validateRequest(Element[] request)
- throws MOAApplicationException {
+ throws MOAApplicationException {
// validate the request
try {
DOMUtils.validateElement(
- request[0],
- Constants.ALL_SCHEMA_LOCATIONS,
- null,
- new MOASPSSEntityResolver());
- } catch (Exception e) {
+ request[0],
+ Constants.ALL_SCHEMA_LOCATIONS,
+ null,
+ new MOASPSSEntityResolver());
+ } catch (final Exception e) {
throw new MOAApplicationException(
- "1100",
- new Object[] { e.getMessage()},
- e);
+ "1100",
+ new Object[] { e.getMessage() },
+ e);
}
}
/**
* Reparse the request with schema-validation turned on so that ID references
* are resolved.
- *
+ *
* @param request The request to reparse.
* @return The reparsed request.
* @throws MOAApplicationException An error occurred parsing the request.
*/
public static Element reparseRequest(Element request)
- throws MOAApplicationException {
+ throws MOAApplicationException {
try {
- byte[] requestBytes = DOMUtils.serializeNode(request, "UTF-8");
- Document validatedRequest = DOMUtils.parseDocument(new ByteArrayInputStream(requestBytes),
- true,
- Constants.ONLY_MOASIG_SCHEMA_LOCATIONS,
- null,
- new MOASPSSEntityResolver(),
- new MOAErrorHandler());
-
+ final byte[] requestBytes = DOMUtils.serializeNode(request, "UTF-8");
+ final Document validatedRequest = DOMUtils.parseDocument(new ByteArrayInputStream(requestBytes),
+ true,
+ Constants.ONLY_MOASIG_SCHEMA_LOCATIONS,
+ null,
+ new MOASPSSEntityResolver(),
+ new MOAErrorHandler());
+
// DOMUtils.parseDocument(
// new ByteArrayInputStream(requestBytes),
// true,
// Constants.ALL_SCHEMA_LOCATIONS,
// null);
return validatedRequest.getDocumentElement();
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new MOAApplicationException(
- "1100",
- new Object[] { e.getMessage()},
- e);
+ "1100",
+ new Object[] { e.getMessage() },
+ e);
}
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java
index 839d8ba..4030883 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureCreationService.java
@@ -21,7 +21,6 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
import java.util.Collections;
@@ -43,7 +42,6 @@ import at.gv.egovernment.moa.spss.api.xmlbind.CreateXMLSignatureResponseBuilder;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
import at.gv.egovernment.moa.spss.server.invoke.CMSSignatureCreationInvoker;
-import at.gv.egovernment.moa.spss.server.invoke.PDFASInvoker;
import at.gv.egovernment.moa.spss.server.invoke.XMLSignatureCreationInvoker;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;
import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
@@ -57,260 +55,261 @@ import at.gv.egovernment.moaspss.util.StreamUtils;
/**
* The service endpoint for the <code>SignatureCreation</code> web service.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SignatureCreationService {
-
- /**
- * Handle a <code>CreatePDFSignatureRequest</code>.
- *
- * @param request The <code>CreatePDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>CreatePDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] CreatePDFSignatureRequest(Element[] request)
- throws AxisFault {
- Logger.trace("---- Entering SignatureCreationService");
- //PDFSignatureCreationInvoker invoker =
- // PDFSignatureCreationInvoker.getInstance();
- Element[] response = new Element[1];
-
- // check that we have a CreateXMLSignatureRequest; if not, create an
- // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
- if (!Constants.MOA_SPSS_CREATE_PDF_REQUEST.equals(request[0].getLocalName()) ||
- !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI()))
- {
- QName qname =
- new QName(request[0].getNamespaceURI(), request[0].getLocalName());
- throw new AxisFault(
- Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse
- }
-
- // handle the request
- try {
-
- // create a parser and builder for binding API objects to/from XML
- CreatePDFSignatureRequestParser requestParser =
- new CreatePDFSignatureRequestParser();
- CreatePDFSignatureResponseBuilder responseBuilder =
- new CreatePDFSignatureResponseBuilder();
- Element reparsedReq;
- CreatePDFRequest requestObj;
- CreatePDFRespone responseObj = null;
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
-
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- Logger.trace(">>> preparsing Request");
- requestObj = requestParser.parse(reparsedReq);
- Logger.trace("<<< preparsed Request");
-
- Logger.trace(">>> creating Signature");
- // invoke the core logic
- //responseObj = PDFASInvoker.getInstance().createPDFSignature(requestObj, context.getTransactionID());
-
- Logger.trace("<<< created Signature");
-
- Logger.trace(">>> building Response");
- // map back to XML
- response[0] = responseBuilder.build(responseObj).getDocumentElement();
- Logger.trace("<<< built Response");
-
- // save response in transaction
- context.setResponse(response[0]);
- Logger.trace("---- Leaving SignatureCreationService");
-
- //TODO: remove if PDF signatures are supported
- throw new MOASystemException("Create PAdES signatures is currently NOT supported by MOA-SIG", null);
-
- //return response;
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
-
- }
-
- /**
- * Handle a <code>CreateXMLSignatureRequest</code>.
- *
- * @param request The <code>CreateXMLSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>CreateXMLSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] CreateCMSSignatureRequest(Element[] request)
- throws AxisFault {
- Logger.trace("---- Entering SignatureCreationService");
- CMSSignatureCreationInvoker invoker =
- CMSSignatureCreationInvoker.getInstance();
- Element[] response = new Element[1];
-
- // check that we have a CreateXMLSignatureRequest; if not, create an
- // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
- if (!Constants.MOA_SPSS_CREATE_CMS_REQUEST.equals(request[0].getLocalName()) ||
- !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI()))
- {
- QName qname =
- new QName(request[0].getNamespaceURI(), request[0].getLocalName());
- throw new AxisFault(
- Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse
- }
-
- // handle the request
- try {
-
- // create a parser and builder for binding API objects to/from XML
- CreateCMSSignatureRequestParser requestParser =
- new CreateCMSSignatureRequestParser();
- CreateCMSSignatureResponseBuilder responseBuilder =
- new CreateCMSSignatureResponseBuilder();
- Element reparsedReq;
- CreateCMSSignatureRequest requestObj;
- CreateCMSSignatureResponse responseObj;
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
-
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- Logger.trace(">>> preparsing Request");
- requestObj = requestParser.parse(reparsedReq);
- Logger.trace("<<< preparsed Request");
-
- Logger.trace(">>> creating Signature");
- // invoke the core logic
- responseObj = invoker.createCMSSignature(requestObj, Collections.EMPTY_SET);
- Logger.trace("<<< created Signature");
-
- Logger.trace(">>> building Response");
- // map back to XML
- response[0] = responseBuilder.build(responseObj).getDocumentElement();
- Logger.trace("<<< built Response");
-
- // save response in transaction
- context.setResponse(response[0]);
- Logger.trace("---- Leaving SignatureCreationService");
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
- }
+
+ /**
+ * Handle a <code>CreatePDFSignatureRequest</code>.
+ *
+ * @param request The <code>CreatePDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>CreatePDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] CreatePDFSignatureRequest(Element[] request)
+ throws AxisFault {
+ Logger.trace("---- Entering SignatureCreationService");
+ // PDFSignatureCreationInvoker invoker =
+ // PDFSignatureCreationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ // check that we have a CreateXMLSignatureRequest; if not, create an
+ // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
+ if (!Constants.MOA_SPSS_CREATE_PDF_REQUEST.equals(request[0].getLocalName()) ||
+ !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) {
+ final QName qname =
+ new QName(request[0].getNamespaceURI(), request[0].getLocalName());
+ throw new AxisFault(
+ Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not
+ // make it into the error repsonse
+ }
+
+ // handle the request
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final CreatePDFSignatureRequestParser requestParser =
+ new CreatePDFSignatureRequestParser();
+ final CreatePDFSignatureResponseBuilder responseBuilder =
+ new CreatePDFSignatureResponseBuilder();
+ Element reparsedReq;
+ CreatePDFRequest requestObj;
+ final CreatePDFRespone responseObj = null;
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ Logger.trace(">>> preparsing Request");
+ requestObj = requestParser.parse(reparsedReq);
+ Logger.trace("<<< preparsed Request");
+
+ Logger.trace(">>> creating Signature");
+ // invoke the core logic
+ // responseObj = PDFASInvoker.getInstance().createPDFSignature(requestObj,
+ // context.getTransactionID());
+
+ Logger.trace("<<< created Signature");
+
+ Logger.trace(">>> building Response");
+ // map back to XML
+ response[0] = responseBuilder.build(responseObj).getDocumentElement();
+ Logger.trace("<<< built Response");
+
+ // save response in transaction
+ context.setResponse(response[0]);
+ Logger.trace("---- Leaving SignatureCreationService");
+
+ // TODO: remove if PDF signatures are supported
+ throw new MOASystemException("Create PAdES signatures is currently NOT supported by MOA-SIG", null);
+
+ // return response;
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ }
+
+ }
/**
* Handle a <code>CreateXMLSignatureRequest</code>.
*
* @param request The <code>CreateXMLSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>CreateXMLSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>CreateXMLSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] CreateCMSSignatureRequest(Element[] request)
+ throws AxisFault {
+ Logger.trace("---- Entering SignatureCreationService");
+ final CMSSignatureCreationInvoker invoker =
+ CMSSignatureCreationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ // check that we have a CreateXMLSignatureRequest; if not, create an
+ // AxisFault, just like the org.apache.axis.providers.java.MsgProvider
+ if (!Constants.MOA_SPSS_CREATE_CMS_REQUEST.equals(request[0].getLocalName()) ||
+ !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) {
+ final QName qname =
+ new QName(request[0].getNamespaceURI(), request[0].getLocalName());
+ throw new AxisFault(
+ Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not
+ // make it into the error repsonse
+ }
+
+ // handle the request
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final CreateCMSSignatureRequestParser requestParser =
+ new CreateCMSSignatureRequestParser();
+ final CreateCMSSignatureResponseBuilder responseBuilder =
+ new CreateCMSSignatureResponseBuilder();
+ Element reparsedReq;
+ CreateCMSSignatureRequest requestObj;
+ CreateCMSSignatureResponse responseObj;
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ Logger.trace(">>> preparsing Request");
+ requestObj = requestParser.parse(reparsedReq);
+ Logger.trace("<<< preparsed Request");
+
+ Logger.trace(">>> creating Signature");
+ // invoke the core logic
+ responseObj = invoker.createCMSSignature(requestObj, Collections.EMPTY_SET);
+ Logger.trace("<<< created Signature");
+
+ Logger.trace(">>> building Response");
+ // map back to XML
+ response[0] = responseBuilder.build(responseObj).getDocumentElement();
+ Logger.trace("<<< built Response");
+
+ // save response in transaction
+ context.setResponse(response[0]);
+ Logger.trace("---- Leaving SignatureCreationService");
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ }
+
+ return response;
+ }
+
+ /**
+ * Handle a <code>CreateXMLSignatureRequest</code>.
+ *
+ * @param request The <code>CreateXMLSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>CreateXMLSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] CreateXMLSignatureRequest(Element[] request)
- throws AxisFault {
- Logger.trace("---- Entering SignatureCreationService");
- XMLSignatureCreationInvoker invoker =
- XMLSignatureCreationInvoker.getInstance();
- Element[] response = new Element[1];
+ throws AxisFault {
+ Logger.trace("---- Entering SignatureCreationService");
+ final XMLSignatureCreationInvoker invoker =
+ XMLSignatureCreationInvoker.getInstance();
+ final Element[] response = new Element[1];
// check that we have a CreateXMLSignatureRequest; if not, create an
// AxisFault, just like the org.apache.axis.providers.java.MsgProvider
if (!Constants.MOA_SPSS_CREATE_XML_REQUEST.equals(request[0].getLocalName()) ||
- !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI()))
- {
- QName qname =
- new QName(request[0].getNamespaceURI(), request[0].getLocalName());
+ !Constants.MOA_NS_URI.equals(request[0].getNamespaceURI())) {
+ final QName qname =
+ new QName(request[0].getNamespaceURI(), request[0].getLocalName());
throw new AxisFault(
- Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not make it into the error repsonse
+ Messages.getMessage("noOperationForQName", qname.toString())); // TODO GK Operation name does not
+ // make it into the error repsonse
}
// handle the request
try {
-
+
// create a parser and builder for binding API objects to/from XML
- CreateXMLSignatureRequestParser requestParser =
- new CreateXMLSignatureRequestParser();
- CreateXMLSignatureResponseBuilder responseBuilder =
- new CreateXMLSignatureResponseBuilder();
+ final CreateXMLSignatureRequestParser requestParser =
+ new CreateXMLSignatureRequestParser();
+ final CreateXMLSignatureResponseBuilder responseBuilder =
+ new CreateXMLSignatureResponseBuilder();
Element reparsedReq;
CreateXMLSignatureRequest requestObj;
CreateXMLSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
-
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+
// validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
// convert to API objects
- Logger.trace(">>> preparsing Request");
+ Logger.trace(">>> preparsing Request");
requestObj = requestParser.parse(reparsedReq);
- Logger.trace("<<< preparsed Request");
-
- Logger.trace(">>> creating Signature");
+ Logger.trace("<<< preparsed Request");
+
+ Logger.trace(">>> creating Signature");
// invoke the core logic
responseObj = invoker.createXMLSignature(requestObj, Collections.EMPTY_SET);
- Logger.trace("<<< created Signature");
+ Logger.trace("<<< created Signature");
- Logger.trace(">>> building Response");
+ Logger.trace(">>> building Response");
// map back to XML
response[0] = responseBuilder.build(responseObj).getDocumentElement();
- Logger.trace("<<< built Response");
-
+ Logger.trace("<<< built Response");
+
// save response in transaction
context.setResponse(response[0]);
- Logger.trace("---- Leaving SignatureCreationService");
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ Logger.trace("---- Leaving SignatureCreationService");
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturerstellung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
index e4d93a7..55cc5c6 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/SignatureVerificationService.java
@@ -21,21 +21,21 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.service;
+import java.util.List;
+
+import org.apache.axis.AxisFault;
+import org.w3c.dom.Element;
+
import at.gv.egiz.asic.api.ASiC;
import at.gv.egiz.asic.api.ASiCFactory;
-import at.gv.egiz.asic.api.ASiCFormat;
import at.gv.egiz.asic.api.ASiCVerificationResult;
import at.gv.egiz.asic.impl.ASiCMOAVerifier;
import at.gv.egiz.asic.xmlbind.VerifyASICSignatureRequestParser;
import at.gv.egiz.asic.xmlbind.VerifyASICSignatureResponseBuilder;
import at.gv.egiz.asic.xmlbind.VerifyASiCRequest;
import at.gv.egovernment.moa.spss.MOAApplicationException;
-import org.apache.axis.AxisFault;
-import org.w3c.dom.Element;
-
import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest;
@@ -54,192 +54,189 @@ import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;
import at.gv.egovernment.moaspss.logging.Logger;
import at.gv.egovernment.moaspss.util.StreamUtils;
-import java.io.FileInputStream;
-import java.util.List;
-
/**
* The service endpoint for the <code>SignatureVerification</code> web service.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class SignatureVerificationService {
- /**
- * Handle a <code>VerifyPDFSignatureRequest</code>.
- *
- * @param request The <code>VerifyPDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyPDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] VerifyPDFSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
- try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyCMSSignatureRequestParser requestParser =
- new VerifyCMSSignatureRequestParser();
- VerifyPDFSignatureResponseBuilder responseBuilder =
- new VerifyPDFSignatureResponseBuilder();
- Element reparsedReq;
- VerifyCMSSignatureRequest requestObj;
- VerifyCMSSignatureResponse responseObj;
- // create a parser and builder for binding API objects to/from XML
- /*VerifyPDFRequestParser requestParser =
- new VerifyPDFRequestParser();
- VerifyPDFResponseBuilder responseBuilder =
- new VerifyPDFResponseBuilder();
- Element reparsedReq;
- VerifyPDFRequest requestObj;
- VerifyPDFResponse responseObj;*/
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- requestObj = requestParser.parsePDF(reparsedReq);
-
- // invoke the core logic
- responseObj = invoker.verifyCMSSignature(requestObj);
-
- // map back to XML
- response[0] = responseBuilder.build(responseObj).getDocumentElement();
-
- // save response in transaction
- context.setResponse(response[0]);
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
- }
-
-
- /**
- * Handle a <code>VerifyPDFSignatureRequest</code>.
- *
- * @param request The <code>VerifyPDFSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyPDFSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
- * @throws AxisFault An error occurred during handling of the message.
- */
- public Element[] VerifyASICSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
- try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyASICSignatureRequestParser requestParser =
- new VerifyASICSignatureRequestParser();
- VerifyASICSignatureResponseBuilder responseBuilder =
- new VerifyASICSignatureResponseBuilder();
- Element reparsedReq;
- VerifyASiCRequest requestObj;
- VerifyCMSSignatureResponse responseObj;
- // create a parser and builder for binding API objects to/from XML
-
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
- // validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
- // convert to API objects
- requestObj = requestParser.parseASIC(reparsedReq);
-
- if(requestObj.getFormat() == null) {
- throw new MOAApplicationException("asic.0006", null);
- }
-
- ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(),
- requestObj.getFormat());
-
- Logger.debug("Got ASiC " + aSiC);
-
- // invoke the core logic
- ASiCMOAVerifier v = new ASiCMOAVerifier();
- List<ASiCVerificationResult> results = v.verify(aSiC,
- requestObj.getTrustProfile(), requestObj.getDate());
-
- // map back to XML
- response[0] = responseBuilder.build(results).getDocumentElement();
-
- // save response in transaction
- context.setResponse(response[0]);
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
- throw fault;
- }
-
- return response;
+ /**
+ * Handle a <code>VerifyPDFSignatureRequest</code>.
+ *
+ * @param request The <code>VerifyPDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] VerifyPDFSignatureRequest(Element[] request)
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyCMSSignatureRequestParser requestParser =
+ new VerifyCMSSignatureRequestParser();
+ final VerifyPDFSignatureResponseBuilder responseBuilder =
+ new VerifyPDFSignatureResponseBuilder();
+ Element reparsedReq;
+ VerifyCMSSignatureRequest requestObj;
+ VerifyCMSSignatureResponse responseObj;
+ // create a parser and builder for binding API objects to/from XML
+ /*
+ * VerifyPDFRequestParser requestParser = new VerifyPDFRequestParser();
+ * VerifyPDFResponseBuilder responseBuilder = new VerifyPDFResponseBuilder();
+ * Element reparsedReq; VerifyPDFRequest requestObj; VerifyPDFResponse
+ * responseObj;
+ */
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ requestObj = requestParser.parsePDF(reparsedReq);
+
+ // invoke the core logic
+ responseObj = invoker.verifyCMSSignature(requestObj);
+
+ // map back to XML
+ response[0] = responseBuilder.build(responseObj).getDocumentElement();
+
+ // save response in transaction
+ context.setResponse(response[0]);
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
}
-
+
+ return response;
+ }
+
+ /**
+ * Handle a <code>VerifyPDFSignatureRequest</code>.
+ *
+ * @param request The <code>VerifyPDFSignatureRequest</code> to work on
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyPDFSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
+ * @throws AxisFault An error occurred during handling of the message.
+ */
+ public Element[] VerifyASICSignatureRequest(Element[] request)
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
+ try {
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyASICSignatureRequestParser requestParser =
+ new VerifyASICSignatureRequestParser();
+ final VerifyASICSignatureResponseBuilder responseBuilder =
+ new VerifyASICSignatureResponseBuilder();
+ Element reparsedReq;
+ VerifyASiCRequest requestObj;
+ final VerifyCMSSignatureResponse responseObj;
+ // create a parser and builder for binding API objects to/from XML
+
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // validate the request
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
+ // convert to API objects
+ requestObj = requestParser.parseASIC(reparsedReq);
+
+ if (requestObj.getFormat() == null) {
+ throw new MOAApplicationException("asic.0006", null);
+ }
+
+ final ASiC aSiC = ASiCFactory.parseASiC(requestObj.getAsicInput(),
+ requestObj.getFormat());
+
+ Logger.debug("Got ASiC " + aSiC);
+
+ // invoke the core logic
+ final ASiCMOAVerifier v = new ASiCMOAVerifier();
+ final List<ASiCVerificationResult> results = v.verify(aSiC,
+ requestObj.getTrustProfile(), requestObj.getDate());
+
+ // map back to XML
+ response[0] = responseBuilder.build(results).getDocumentElement();
+
+ // save response in transaction
+ context.setResponse(response[0]);
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ throw fault;
+ }
+
+ return response;
+ }
+
/**
* Handle a <code>VerifyCMSSignatureRequest</code>.
- *
+ *
* @param request The <code>VerifyCMSSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyCMSSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyCMSSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] VerifyCMSSignatureRequest(Element[] request)
- throws AxisFault {
- CMSSignatureVerificationInvoker invoker =
- CMSSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
-
+ throws AxisFault {
+ final CMSSignatureVerificationInvoker invoker =
+ CMSSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
+
try {
-
+
// create a parser and builder for binding API objects to/from XML
- VerifyCMSSignatureRequestParser requestParser =
- new VerifyCMSSignatureRequestParser();
- VerifyCMSSignatureResponseBuilder responseBuilder =
- new VerifyCMSSignatureResponseBuilder();
+ final VerifyCMSSignatureRequestParser requestParser =
+ new VerifyCMSSignatureRequestParser();
+ final VerifyCMSSignatureResponseBuilder responseBuilder =
+ new VerifyCMSSignatureResponseBuilder();
Element reparsedReq;
VerifyCMSSignatureRequest requestObj;
VerifyCMSSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
// validate the request
- reparsedReq = ServiceUtils.reparseRequest(request[0]);//context.getRequest());
-
+ reparsedReq = ServiceUtils.reparseRequest(request[0]);// context.getRequest());
+
// convert to API objects
requestObj = requestParser.parse(reparsedReq);
@@ -251,20 +248,19 @@ public class SignatureVerificationService {
// save response in transaction
context.setResponse(response[0]);
-
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}
@@ -273,60 +269,60 @@ public class SignatureVerificationService {
/**
* Handle a <code>VerifyXMLSignatureRequest</code>.
- *
+ *
* @param request The <code>VerifyXMLSignatureRequest</code> to work on
- * (contained in the 0th element of the array).
- * @return A <code>VerifyXMLSignatureResponse</code> as the only element of
- * the <code>Element</code> array.
+ * (contained in the 0th element of the array).
+ * @return A <code>VerifyXMLSignatureResponse</code> as the only element of the
+ * <code>Element</code> array.
* @throws AxisFault An error occurred during handling of the message.
*/
public Element[] VerifyXMLSignatureRequest(Element[] request)
- throws AxisFault {
- XMLSignatureVerificationInvoker invoker =
- XMLSignatureVerificationInvoker.getInstance();
- Element[] response = new Element[1];
+ throws AxisFault {
+ final XMLSignatureVerificationInvoker invoker =
+ XMLSignatureVerificationInvoker.getInstance();
+ final Element[] response = new Element[1];
try {
-
- // create a parser and builder for binding API objects to/from XML
- VerifyXMLSignatureRequestParser requestParser =
- new VerifyXMLSignatureRequestParser();
- VerifyXMLSignatureResponseBuilder responseBuilder =
- new VerifyXMLSignatureResponseBuilder();
+
+ // create a parser and builder for binding API objects to/from XML
+ final VerifyXMLSignatureRequestParser requestParser =
+ new VerifyXMLSignatureRequestParser();
+ final VerifyXMLSignatureResponseBuilder responseBuilder =
+ new VerifyXMLSignatureResponseBuilder();
Element reparsedReq;
VerifyXMLSignatureRequest requestObj;
VerifyXMLSignatureResponse responseObj;
- //since Axis (1.1 ff) has problem with namespaces we take the raw request stored by the Axishandler.
- TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
+ // since Axis (1.1 ff) has problem with namespaces we take the raw request
+ // stored by the Axishandler.
+ final TransactionContext context = TransactionContextManager.getInstance().getTransactionContext();
// validate the request
reparsedReq = ServiceUtils.reparseRequest(context.getRequest());
-
+
// convert to API objects
requestObj = requestParser.parse(reparsedReq);
-
+
// invoke the core logic
responseObj = invoker.verifyXMLSignature(requestObj);
// map back to XML
response[0] = responseBuilder.build(responseObj).getDocumentElement();
-
+
// save response in transaction
context.setResponse(response[0]);
-
- } catch (MOAException e) {
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final MOAException e) {
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
- } catch (Throwable t) {
- MOASystemException e = new MOASystemException("2900", null, t);
- AxisFault fault = AxisFault.makeFault(e);
- fault.setFaultDetail(new Element[] { e.toErrorResponse()});
- Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
- + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
+ } catch (final Throwable t) {
+ final MOASystemException e = new MOASystemException("2900", null, t);
+ final AxisFault fault = AxisFault.makeFault(e);
+ fault.setFaultDetail(new Element[] { e.toErrorResponse() });
+ Logger.debug("Anfrage zur Signaturpruefung wurde nicht erfolgreich beendet:"
+ + System.getProperty("line.separator") + StreamUtils.getStackTraceAsString(e));
throw fault;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java
index d763c44..3bf9a37 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/service/TSLClientStatusServlet.java
@@ -10,72 +10,74 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import at.gv.egovernment.moa.sig.tsl.TslClientFactory;
import at.gv.egovernment.moa.sig.tsl.engine.data.TSLProcessingResultElement;
import at.gv.egovernment.moa.spss.server.monitoring.ServiceStatusContainer;
-import at.gv.egovernment.moa.spss.tsl.TSLServiceFactory;
public class TSLClientStatusServlet extends HttpServlet {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
-
- public static final String STATUS_RESP = "'{'\"EUTSLStatus\":\"{0}\", \"EUTSLStatusMsg\":\"{1}\"{2}'}'";
- public static final String DETAIL_INFO = ", \"Details\":'{'{0}'}'";
- //public static final String DETAIL_ENTRY = "\"{0}\":'{'\"verified\":\"{1}\", \"processed\":\"{2}\"'}'";
- public static final String DETAIL_ENTRY = "\"{0}\":'{'\"processed\":\"{2}\"'}'";
-
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- if (ServiceStatusContainer.getStatus())
- response.setStatus(200);
- else
- response.setStatus(500);
-
- response.setContentType("application/json");
- PrintWriter out = response.getWriter();
- out.println(MessageFormat.format(STATUS_RESP,
- new Object[] {
- String.valueOf(ServiceStatusContainer.getStatus()),
- ServiceStatusContainer.getStatusMsg(),
- getTSLClientDetailInfos()
- }));
- out.flush();
- out.close();
-
- }
-
- private String getTSLClientDetailInfos() {
- String detailInfo = "";
- List<TSLProcessingResultElement> tslDetailStatus = ServiceStatusContainer.getTslDetailStatus();
- if (tslDetailStatus != null) {
- String detailElements = null;
-
- for (TSLProcessingResultElement el : tslDetailStatus) {
- String entry = MessageFormat.format(DETAIL_ENTRY,
- new Object[] {
- el.getCountryCode(),
- String.valueOf(el.isVerified()),
- String.valueOf(el.isProcessed())
- });
- if (detailElements == null)
- detailElements = entry;
- else
- detailElements += ", " + entry;
-
- }
-
- if (detailElements != null)
- detailInfo = MessageFormat.format(DETAIL_INFO,
- new Object[] {
- detailElements
- });
- }
-
- return detailInfo;
- }
+ public static final String STATUS_RESP = "'{'\"EUTSLStatus\":\"{0}\", \"EUTSLStatusMsg\":\"{1}\"{2}'}'";
+ public static final String DETAIL_INFO = ", \"Details\":'{'{0}'}'";
+ // public static final String DETAIL_ENTRY = "\"{0}\":'{'\"verified\":\"{1}\",
+ // \"processed\":\"{2}\"'}'";
+ public static final String DETAIL_ENTRY = "\"{0}\":'{'\"processed\":\"{2}\"'}'";
+
+ @Override
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ if (ServiceStatusContainer.getStatus()) {
+ response.setStatus(200);
+ } else {
+ response.setStatus(500);
+ }
+
+ response.setContentType("application/json");
+ final PrintWriter out = response.getWriter();
+ out.println(MessageFormat.format(STATUS_RESP,
+ new Object[] {
+ String.valueOf(ServiceStatusContainer.getStatus()),
+ ServiceStatusContainer.getStatusMsg(),
+ getTSLClientDetailInfos()
+ }));
+ out.flush();
+ out.close();
+
+ }
+
+ private String getTSLClientDetailInfos() {
+ String detailInfo = "";
+ final List<TSLProcessingResultElement> tslDetailStatus = ServiceStatusContainer.getTslDetailStatus();
+ if (tslDetailStatus != null) {
+ String detailElements = null;
+
+ for (final TSLProcessingResultElement el : tslDetailStatus) {
+ final String entry = MessageFormat.format(DETAIL_ENTRY,
+ new Object[] {
+ el.getCountryCode(),
+ String.valueOf(el.isVerified()),
+ String.valueOf(el.isProcessed())
+ });
+ if (detailElements == null) {
+ detailElements = entry;
+ } else {
+ detailElements += ", " + entry;
+ }
+
+ }
+
+ if (detailElements != null) {
+ detailInfo = MessageFormat.format(DETAIL_INFO,
+ new Object[] {
+ detailElements
+ });
+ }
+ }
+
+ return detailInfo;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java
index c6a1b01..264abd5 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSCreateSignatureBinding.java
@@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureResponse;
public interface CMSCreateSignatureBinding {
- public at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest buildCMSRequest(
- CreateCMSSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.cmssign.CreateCMSSignatureRequest buildCMSRequest(
+ CreateCMSSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
- public CreateCMSSignatureResponseType buildCMSResponse(CreateCMSSignatureResponse response)
- throws MOAApplicationException;
+ CreateCMSSignatureResponseType buildCMSResponse(CreateCMSSignatureResponse response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java
index d878b26..02a838c 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/CMSVerifySignatureBinding.java
@@ -8,16 +8,16 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureResponse;
public interface CMSVerifySignatureBinding {
- public at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildCMSRequest(
- VerifyCMSSignatureRequest verifyCMSSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildCMSRequest(
+ VerifyCMSSignatureRequest verifyCMSSignatureRequest) throws MOAApplicationException;
+
+ at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildPDFRequest(
+ VerifyPDFSignatureRequest verifyPDFSignatureRequest) throws MOAApplicationException;
+
+ VerifyCMSSignatureResponseType buildCMSResponse(VerifyCMSSignatureResponse response)
+ throws MOAApplicationException;
+
+ VerifyPDFSignatureResponseType buildPDFResponse(VerifyCMSSignatureResponse response)
+ throws MOAApplicationException;
- public at.gv.egovernment.moa.spss.api.cmsverify.VerifyCMSSignatureRequest buildPDFRequest(
- VerifyPDFSignatureRequest verifyPDFSignatureRequest) throws MOAApplicationException;
-
- public VerifyCMSSignatureResponseType buildCMSResponse(VerifyCMSSignatureResponse response)
- throws MOAApplicationException;
-
- public VerifyPDFSignatureResponseType buildPDFResponse(VerifyCMSSignatureResponse response)
- throws MOAApplicationException;
-
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java
index bb670b7..b5aae78 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/PDFCreateSignatureBinding.java
@@ -7,9 +7,9 @@ import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest;
import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone;
public interface PDFCreateSignatureBinding {
- public CreatePDFRequest buildPDFRequest(
- CreatePDFSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
+ CreatePDFRequest buildPDFRequest(
+ CreatePDFSignatureRequest createCMSSignatureRequest) throws MOAApplicationException;
- public CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response)
- throws MOAApplicationException;
+ CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java
index ccfc3fc..bf06ff6 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureCreationService.java
@@ -4,21 +4,29 @@ import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
-@WebService(name = "SignatureCreationService", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
+@WebService(name = "SignatureCreationService",
+ targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
public interface SignatureCreationService {
- @WebMethod(action = "XMLSignatureCreate", operationName = "XMLSignatureCreate")
- public at.gv.egiz.moasig.CreateXMLSignatureResponseType createXMLSignature(
- @WebParam(name = "CreateXMLSignatureRequest") at.gv.egiz.moasig.CreateXMLSignatureRequest createXMLSignatureRequest)
- throws Exception;
-
- @WebMethod(action = "CMSSignatureCreate", operationName = "CMSSignatureCreate")
- public at.gv.egiz.moasig.CreateCMSSignatureResponseType createCMSSignature(
- @WebParam(name = "CreateCMSSignatureRequest") at.gv.egiz.moasig.CreateCMSSignatureRequest createCMSSignatureRequest)
- throws Exception;
-
- /*@WebMethod(action = "PDFSignatureCreate", operationName = "PDFSignatureCreate")
- public at.gv.egiz.moasig.CreatePDFSignatureResponseType createPDFSignature(
- @WebParam(name = "CreatePDFSignatureRequest") at.gv.egiz.moasig.CreatePDFSignatureRequest createPDFSignatureRequest)
- throws Exception;*/
+ @WebMethod(action = "XMLSignatureCreate", operationName = "XMLSignatureCreate")
+ at.gv.egiz.moasig.CreateXMLSignatureResponseType createXMLSignature(
+ @WebParam(
+ name = "CreateXMLSignatureRequest") at.gv.egiz.moasig.CreateXMLSignatureRequest createXMLSignatureRequest)
+ throws Exception;
+
+ @WebMethod(action = "CMSSignatureCreate", operationName = "CMSSignatureCreate")
+ at.gv.egiz.moasig.CreateCMSSignatureResponseType createCMSSignature(
+ @WebParam(
+ name = "CreateCMSSignatureRequest") at.gv.egiz.moasig.CreateCMSSignatureRequest createCMSSignatureRequest)
+ throws Exception;
+
+ /*
+ * @WebMethod(action = "PDFSignatureCreate", operationName =
+ * "PDFSignatureCreate") public at.gv.egiz.moasig.CreatePDFSignatureResponseType
+ * createPDFSignature(
+ *
+ * @WebParam(name = "CreatePDFSignatureRequest")
+ * at.gv.egiz.moasig.CreatePDFSignatureRequest createPDFSignatureRequest) throws
+ * Exception;
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java
index 65de3bf..b2ee799 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/SignatureVerificationService.java
@@ -4,22 +4,26 @@ import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
-@WebService(name = "SignatureVerificationService", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
+@WebService(name = "SignatureVerificationService",
+ targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20151109#")
public interface SignatureVerificationService {
- @WebMethod(action = "XMLSignatureVerify", operationName = "XMLSignatureVerify")
- public at.gv.egiz.moasig.VerifyXMLSignatureResponseType verifyXMLSignature(
- @WebParam(name = "VerifyXMLSignatureRequest") at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest)
- throws Exception;
-
- @WebMethod(action = "CMSSignatureVerify", operationName = "CMSSignatureVerify")
- public at.gv.egiz.moasig.VerifyCMSSignatureResponseType verifyCMSSignature(
- @WebParam(name = "VerifyCMSSignatureRequest") at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest)
- throws Exception;
-
- @WebMethod(action = "PDFSignatureVerify", operationName = "PDFSignatureVerify")
- public at.gv.egiz.moasig.VerifyPDFSignatureResponseType verifyPDFSignature(
- @WebParam(name = "VerifyPDFSignatureRequest") at.gv.egiz.moasig.VerifyPDFSignatureRequest verifyPDFSignatureRequest)
- throws Exception;
-
+ @WebMethod(action = "XMLSignatureVerify", operationName = "XMLSignatureVerify")
+ at.gv.egiz.moasig.VerifyXMLSignatureResponseType verifyXMLSignature(
+ @WebParam(
+ name = "VerifyXMLSignatureRequest") at.gv.egiz.moasig.VerifyXMLSignatureRequest verifyXMLSignatureRequest)
+ throws Exception;
+
+ @WebMethod(action = "CMSSignatureVerify", operationName = "CMSSignatureVerify")
+ at.gv.egiz.moasig.VerifyCMSSignatureResponseType verifyCMSSignature(
+ @WebParam(
+ name = "VerifyCMSSignatureRequest") at.gv.egiz.moasig.VerifyCMSSignatureRequest verifyCMSSignatureRequest)
+ throws Exception;
+
+ @WebMethod(action = "PDFSignatureVerify", operationName = "PDFSignatureVerify")
+ at.gv.egiz.moasig.VerifyPDFSignatureResponseType verifyPDFSignature(
+ @WebParam(
+ name = "VerifyPDFSignatureRequest") at.gv.egiz.moasig.VerifyPDFSignatureRequest verifyPDFSignatureRequest)
+ throws Exception;
+
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java
index 149095b..f70f120 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLCreateSignatureBinding.java
@@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse;
public interface XMLCreateSignatureBinding {
- public at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest(
- CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest buildXMLRequest(
+ CreateXMLSignatureRequest createXMLSignatureRequest) throws MOAApplicationException;
- public CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response)
- throws MOAApplicationException;
+ CreateXMLSignatureResponseType buildXMLResponse(CreateXMLSignatureResponse response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java
index 4a6d110..130cf81 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/XMLVerifySignatureBinding.java
@@ -6,9 +6,9 @@ import at.gv.egovernment.moa.spss.MOAApplicationException;
import at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureResponse;;
public interface XMLVerifySignatureBinding {
- public at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest buildXMLRequest(
- VerifyXMLSignatureRequest verifyXMLSignatureRequest) throws MOAApplicationException;
+ at.gv.egovernment.moa.spss.api.xmlverify.VerifyXMLSignatureRequest buildXMLRequest(
+ VerifyXMLSignatureRequest verifyXMLSignatureRequest) throws MOAApplicationException;
- public VerifyXMLSignatureResponseType buildXMLResponse(VerifyXMLSignatureResponse response)
- throws MOAApplicationException;
+ VerifyXMLSignatureResponseType buildXMLResponse(VerifyXMLSignatureResponse response)
+ throws MOAApplicationException;
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java
index 110665c..5628e4b 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRequest.java
@@ -4,18 +4,18 @@ import java.util.ArrayList;
import java.util.List;
public class CreatePDFRequest {
- private String keyIdentifier;
- private List<PDFSignatureInfo> signatureInfoList = new ArrayList<PDFSignatureInfo>();
-
- public CreatePDFRequest(String keyIdentifier) {
- this.keyIdentifier = keyIdentifier;
- }
+ private final String keyIdentifier;
+ private final List<PDFSignatureInfo> signatureInfoList = new ArrayList<>();
- public synchronized String getKeyIdentifier() {
- return keyIdentifier;
- }
+ public CreatePDFRequest(String keyIdentifier) {
+ this.keyIdentifier = keyIdentifier;
+ }
- public synchronized List<PDFSignatureInfo> getSignatureInfoList() {
- return signatureInfoList;
- }
+ public synchronized String getKeyIdentifier() {
+ return keyIdentifier;
+ }
+
+ public synchronized List<PDFSignatureInfo> getSignatureInfoList() {
+ return signatureInfoList;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java
index ef7e832..8cabc78 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFRespone.java
@@ -4,12 +4,12 @@ import java.util.ArrayList;
import java.util.List;
public class CreatePDFRespone {
- private List<SignedPDFInfo> signatureInfoList = new ArrayList<SignedPDFInfo>();
-
- public CreatePDFRespone() {
- }
-
- public synchronized List<SignedPDFInfo> getSignatureInfoList() {
- return signatureInfoList;
- }
+ private final List<SignedPDFInfo> signatureInfoList = new ArrayList<>();
+
+ public CreatePDFRespone() {
+ }
+
+ public synchronized List<SignedPDFInfo> getSignatureInfoList() {
+ return signatureInfoList;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java
index c6b2126..e483db8 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureRequestParser.java
@@ -37,106 +37,99 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
/**
* A parser to parse <code>CreateCMSSignatureRequest</code> DOM trees into
* <code>CreateCMSSignatureRequest</code> API objects.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
public class CreatePDFSignatureRequestParser {
- //
- // XPath expresssions to select elements in the CreateCMSSignatureRequest
- //
- private static final String MOA = Constants.MOA_PREFIX + ":";
- private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA + "KeyIdentifier";
- private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA
- + "SingleSignatureInfo";
- private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile";
- private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition";
- private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID";
-
- private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument";
-
- /**
- * Create a new <code>CreateCMSSignatureRequestParser</code>.
- */
- public CreatePDFSignatureRequestParser() {
- }
-
- /**
- * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by
- * the MOA schema.
- *
- * @param requestElem
- * The <code>CreateCMSSignatureRequest</code> to parse. The
- * request must have been successfully parsed against the schema
- * for this method to succeed.
- * @return A <code>CreateCMSSignatureRequest</code> API object containing
- * the data from the DOM element.
- * @throws MOAApplicationException
- * An error occurred parsing the request.
- */
- public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException {
-
- String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
-
- CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier);
- parseSingleSignatureInfos(requestElem, createPDFRequest);
-
- return createPDFRequest;
- }
-
- /**
- * Parse all <code>SingleSignatureInfo</code> elements of the
- * <code>CreateCMSSignatureRequest</code>.
- *
- * @param requestElem
- * The <code>CreateCMSSignatureRequest</code> to parse.
- * @return A <code>List</code> of <code>SingleSignatureInfo</code> API
- * objects.
- * @throws MOAApplicationException
- * An error occurred parsing on of the
- * <code>SingleSignatureInfo</code> elements.
- */
- private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest)
- throws MOAApplicationException {
-
- NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
- Element sigInfoElem;
-
- while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) {
- createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem));
- }
- }
-
- /**
- * Parse a <code>SingleSignatureInfo</code> DOM element.
- *
- * @param sigInfoElem
- * The <code>SingleSignatureInfo</code> DOM element to parse.
- * @return A <code>SingleSignatureInfo</code> API object containing the
- * information of <code>sigInfoElem</code>.
- * @throws MOAApplicationException
- * An error occurred parsing the
- * <code>SingleSignatureInfo</code>.
- */
- private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException {
-
- String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null);
- String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null);
- String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null);
-
-
- Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH);
- String base64Str = DOMUtils.getText(base64ContentElem);
- try {
- byte[] inputPDF = Base64Utils.decode(base64Str, true);
- PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF,
- signatureProfile, signaturePosition, signatureID);
-
- return PDFSignatureInfo;
- } catch (IOException e) {
- throw new MOAApplicationException("2244", null, e);
- }
-
- }
+ //
+ // XPath expresssions to select elements in the CreateCMSSignatureRequest
+ //
+ private static final String MOA = Constants.MOA_PREFIX + ":";
+ private static final String KEY_IDENTIFIER_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA
+ + "KeyIdentifier";
+ private static final String SINGLE_SIGNATURE_INFO_XPATH = "/" + MOA + "CreatePDFSignatureRequest/" + MOA
+ + "SingleSignatureInfo";
+ private static final String SIGNATURE_PROFILE_XPATH = MOA + "SignatureProfile";
+ private static final String SIGNATURE_POSITION_XPATH = MOA + "SignaturePosition";
+ private static final String SIGNATURE_ID_XPATH = MOA + "SignatureID";
+
+ private static final String PDF_DOCUMENT_XPATH = MOA + "PDFDocument";
+
+ /**
+ * Create a new <code>CreateCMSSignatureRequestParser</code>.
+ */
+ public CreatePDFSignatureRequestParser() {
+ }
+
+ /**
+ * Parse a <code>CreateCMSSignatureRequest</code> DOM element, as defined by the
+ * MOA schema.
+ *
+ * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse. The
+ * request must have been successfully parsed against the
+ * schema for this method to succeed.
+ * @return A <code>CreateCMSSignatureRequest</code> API object containing the
+ * data from the DOM element.
+ * @throws MOAApplicationException An error occurred parsing the request.
+ */
+ public CreatePDFRequest parse(Element requestElem) throws MOAApplicationException {
+
+ final String keyIdentifier = XPathUtils.getElementValue(requestElem, KEY_IDENTIFIER_XPATH, null);
+
+ final CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier);
+ parseSingleSignatureInfos(requestElem, createPDFRequest);
+
+ return createPDFRequest;
+ }
+
+ /**
+ * Parse all <code>SingleSignatureInfo</code> elements of the
+ * <code>CreateCMSSignatureRequest</code>.
+ *
+ * @param requestElem The <code>CreateCMSSignatureRequest</code> to parse.
+ * @return A <code>List</code> of <code>SingleSignatureInfo</code> API objects.
+ * @throws MOAApplicationException An error occurred parsing on of the
+ * <code>SingleSignatureInfo</code> elements.
+ */
+ private void parseSingleSignatureInfos(Element requestElem, CreatePDFRequest createPDFRequest)
+ throws MOAApplicationException {
+
+ final NodeIterator sigInfoElems = XPathUtils.selectNodeIterator(requestElem, SINGLE_SIGNATURE_INFO_XPATH);
+ Element sigInfoElem;
+
+ while ((sigInfoElem = (Element) sigInfoElems.nextNode()) != null) {
+ createPDFRequest.getSignatureInfoList().add(parsePDFSignatureInfo(sigInfoElem));
+ }
+ }
+
+ /**
+ * Parse a <code>SingleSignatureInfo</code> DOM element.
+ *
+ * @param sigInfoElem The <code>SingleSignatureInfo</code> DOM element to parse.
+ * @return A <code>SingleSignatureInfo</code> API object containing the
+ * information of <code>sigInfoElem</code>.
+ * @throws MOAApplicationException An error occurred parsing the
+ * <code>SingleSignatureInfo</code>.
+ */
+ private PDFSignatureInfo parsePDFSignatureInfo(Element sigInfoElem) throws MOAApplicationException {
+
+ final String signatureProfile = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_PROFILE_XPATH, null);
+ final String signaturePosition = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_POSITION_XPATH, null);
+ final String signatureID = XPathUtils.getElementValue(sigInfoElem, SIGNATURE_ID_XPATH, null);
+
+ final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(sigInfoElem, PDF_DOCUMENT_XPATH);
+ final String base64Str = DOMUtils.getText(base64ContentElem);
+ try {
+ final byte[] inputPDF = Base64Utils.decode(base64Str, true);
+ final PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF,
+ signatureProfile, signaturePosition, signatureID);
+
+ return PDFSignatureInfo;
+ } catch (final IOException e) {
+ throw new MOAApplicationException("2244", null, e);
+ }
+
+ }
} \ No newline at end of file
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java
index bdb9a71..6f9880f 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/CreatePDFSignatureResponseBuilder.java
@@ -39,117 +39,114 @@ import at.gv.egovernment.moaspss.util.Constants;
/**
* Convert a <code>CreateCMSSignatureResponse</code> API object into its XML
* representation, according to the MOA XML schema.
- *
+ *
* @version $Id$
*/
public class CreatePDFSignatureResponseBuilder {
- private static final String MOA_NS_URI = Constants.MOA_NS_URI;
-
- private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class);
-
- /** The XML document containing the response element. */
- private Document responseDoc;
- /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
- private Element responseElem;
-
- /**
- * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException
- * An error occurred setting up the resulting XML document.
- */
- public CreatePDFSignatureResponseBuilder() throws MOASystemException {
- responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse");
- responseElem = responseDoc.getDocumentElement();
- }
-
- /**
- * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
- * element being the XML representation of the given
- * <code>CreateCMSSignatureResponse</code> API object.
- *
- * @param response
- * The <code>CreateCMSSignatureResponse</code> to convert to XML.
- * @return A document containing the <code>CreateCMSSignatureResponse</code>
- * DOM element.
- */
- public Document build(CreatePDFRespone response) {
- Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator();
-
- while (iter.hasNext()) {
- SignedPDFInfo signedPDFInfo = iter.next();
- addPDFSignature(signedPDFInfo);
- }
-
- return responseDoc;
- }
-
- /**
- * Add a <code>CMSSignature</code> element to the response.
- *
- * @param cmsSignatureResponse
- * The content to put under the <code>CMSSignature</code>
- * element.
- */
- private void addPDFSignature(SignedPDFInfo signedPDFInfo) {
- Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
-
- if(signedPDFInfo.getSignatureID() != null) {
- Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID");
- signatureID.setTextContent(signedPDFInfo.getSignatureID());
- pdfSignature.appendChild(signatureID);
- }
-
- switch (signedPDFInfo.getResponseType()) {
- case SignedPDFInfo.SUCCESS_SIGNATURE:
- pdfSignature.appendChild(addSuccessSignature(signedPDFInfo));
- break;
-
- default:
- pdfSignature.appendChild(addErrorResponse(signedPDFInfo));
- break;
- }
-
- responseElem.appendChild(pdfSignature);
- }
-
- private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) {
- try {
- String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument());
- Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
- cmsSignature.setTextContent(base64Value);
-
- return cmsSignature;
- } catch (IOException e) {
- logger.error("Failed to encode pdf signature", e);
- signedPDFInfo.setErrorCode(2300);
- signedPDFInfo.setErrorInfo("Failed to encode the signed document");
- return addErrorResponse(signedPDFInfo);
- }
-
-
- }
-
- /**
- * Add a <code>ErrorResponse</code> element to the response.
- *
- * @param errorResponse
- * The API object containing the information to put into the
- * <code>ErrorResponse</code> DOM element.
- */
- private Element addErrorResponse(SignedPDFInfo signedPDFInfo) {
- Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
- Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
- Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
- String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode());
-
- errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr));
- errorElem.appendChild(errorCodeElem);
- infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo()));
- errorElem.appendChild(errorCodeElem);
- errorElem.appendChild(infoElem);
-
- return errorElem;
- }
+ private static final String MOA_NS_URI = Constants.MOA_NS_URI;
+
+ private static final Logger logger = LoggerFactory.getLogger(CreatePDFSignatureResponseBuilder.class);
+
+ /** The XML document containing the response element. */
+ private final Document responseDoc;
+ /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
+ private final Element responseElem;
+
+ /**
+ * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
+ */
+ public CreatePDFSignatureResponseBuilder() throws MOASystemException {
+ responseDoc = ResponseBuilderUtils.createResponse("CreatePDFSignatureResponse");
+ responseElem = responseDoc.getDocumentElement();
+ }
+
+ /**
+ * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
+ * <code>CreateCMSSignatureResponse</code> API object.
+ *
+ * @param response The <code>CreateCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM
+ * element.
+ */
+ public Document build(CreatePDFRespone response) {
+ final Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator();
+
+ while (iter.hasNext()) {
+ final SignedPDFInfo signedPDFInfo = iter.next();
+ addPDFSignature(signedPDFInfo);
+ }
+
+ return responseDoc;
+ }
+
+ /**
+ * Add a <code>CMSSignature</code> element to the response.
+ *
+ * @param cmsSignatureResponse The content to put under the
+ * <code>CMSSignature</code> element.
+ */
+ private void addPDFSignature(SignedPDFInfo signedPDFInfo) {
+ final Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
+
+ if (signedPDFInfo.getSignatureID() != null) {
+ final Element signatureID = responseDoc.createElementNS(MOA_NS_URI, "SignatureID");
+ signatureID.setTextContent(signedPDFInfo.getSignatureID());
+ pdfSignature.appendChild(signatureID);
+ }
+
+ switch (signedPDFInfo.getResponseType()) {
+ case SignedPDFInfo.SUCCESS_SIGNATURE:
+ pdfSignature.appendChild(addSuccessSignature(signedPDFInfo));
+ break;
+
+ default:
+ pdfSignature.appendChild(addErrorResponse(signedPDFInfo));
+ break;
+ }
+
+ responseElem.appendChild(pdfSignature);
+ }
+
+ private Element addSuccessSignature(SignedPDFInfo signedPDFInfo) {
+ try {
+ final String base64Value = Base64Utils.encode(signedPDFInfo.getPdfDocument());
+ final Element cmsSignature = responseDoc.createElementNS(MOA_NS_URI, "PDFSignature");
+ cmsSignature.setTextContent(base64Value);
+
+ return cmsSignature;
+ } catch (final IOException e) {
+ logger.error("Failed to encode pdf signature", e);
+ signedPDFInfo.setErrorCode(2300);
+ signedPDFInfo.setErrorInfo("Failed to encode the signed document");
+ return addErrorResponse(signedPDFInfo);
+ }
+
+ }
+
+ /**
+ * Add a <code>ErrorResponse</code> element to the response.
+ *
+ * @param errorResponse The API object containing the information to put into
+ * the <code>ErrorResponse</code> DOM element.
+ */
+ private Element addErrorResponse(SignedPDFInfo signedPDFInfo) {
+ final Element errorElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorResponse");
+ final Element errorCodeElem = responseDoc.createElementNS(MOA_NS_URI, "ErrorCode");
+ final Element infoElem = responseDoc.createElementNS(MOA_NS_URI, "Info");
+ final String errorCodeStr = Integer.toString(signedPDFInfo.getErrorCode());
+
+ errorCodeElem.appendChild(responseDoc.createTextNode(errorCodeStr));
+ errorElem.appendChild(errorCodeElem);
+ infoElem.appendChild(responseDoc.createTextNode(signedPDFInfo.getErrorInfo()));
+ errorElem.appendChild(errorCodeElem);
+ errorElem.appendChild(infoElem);
+
+ return errorElem;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java
index fd2be7c..3fe8e82 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/PDFSignatureInfo.java
@@ -1,33 +1,33 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
public class PDFSignatureInfo {
- private String signatureProfile = null;
- private String signaturePosition = null;
- private String signatureID = null;
- private byte[] pdfDocument = null;
-
- public PDFSignatureInfo(byte[] pdfDocument,
- String signatureProfile, String signaturePosition,
- String signatureID) {
- this.pdfDocument = pdfDocument;
- this.signatureProfile = signatureProfile;
- this.signaturePosition = signaturePosition;
- this.signatureID = signatureID;
- }
+ private String signatureProfile = null;
+ private String signaturePosition = null;
+ private String signatureID = null;
+ private byte[] pdfDocument = null;
- public synchronized String getSignatureProfile() {
- return signatureProfile;
- }
+ public PDFSignatureInfo(byte[] pdfDocument,
+ String signatureProfile, String signaturePosition,
+ String signatureID) {
+ this.pdfDocument = pdfDocument;
+ this.signatureProfile = signatureProfile;
+ this.signaturePosition = signaturePosition;
+ this.signatureID = signatureID;
+ }
- public synchronized String getSignaturePosition() {
- return signaturePosition;
- }
+ public synchronized String getSignatureProfile() {
+ return signatureProfile;
+ }
- public synchronized String getSignatureID() {
- return signatureID;
- }
+ public synchronized String getSignaturePosition() {
+ return signaturePosition;
+ }
- public synchronized byte[] getPdfDocument() {
- return pdfDocument;
- }
+ public synchronized String getSignatureID() {
+ return signatureID;
+ }
+
+ public synchronized byte[] getPdfDocument() {
+ return pdfDocument;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java
index a950006..b6409f1 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/SignedPDFInfo.java
@@ -1,53 +1,53 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
public class SignedPDFInfo {
-
- public static final int SUCCESS_SIGNATURE = 0;
- public static final int ERROR_RESPONSE = 1;
-
- private String signatureID = null;
- private byte[] pdfDocument = null;
- private int responseType = ERROR_RESPONSE;
- private int errorCode = 0;
- private String errorInfo = null;
-
- public SignedPDFInfo(String signatureID) {
- this.signatureID = signatureID;
- }
-
- public synchronized void setPdfDocument(byte[] pdfDocument) {
- this.pdfDocument = pdfDocument;
- }
-
- public synchronized String getSignatureID() {
- return signatureID;
- }
-
- public synchronized byte[] getPdfDocument() {
- return pdfDocument;
- }
-
- public synchronized void setResponseType(int responseType) {
- this.responseType = responseType;
- }
-
- public int getResponseType() {
- return this.responseType;
- }
-
- public synchronized int getErrorCode() {
- return errorCode;
- }
-
- public synchronized void setErrorCode(int errorCode) {
- this.errorCode = errorCode;
- }
-
- public synchronized String getErrorInfo() {
- return errorInfo;
- }
-
- public synchronized void setErrorInfo(String errorInfo) {
- this.errorInfo = errorInfo;
- }
+
+ public static final int SUCCESS_SIGNATURE = 0;
+ public static final int ERROR_RESPONSE = 1;
+
+ private String signatureID = null;
+ private byte[] pdfDocument = null;
+ private int responseType = ERROR_RESPONSE;
+ private int errorCode = 0;
+ private String errorInfo = null;
+
+ public SignedPDFInfo(String signatureID) {
+ this.signatureID = signatureID;
+ }
+
+ public synchronized void setPdfDocument(byte[] pdfDocument) {
+ this.pdfDocument = pdfDocument;
+ }
+
+ public synchronized String getSignatureID() {
+ return signatureID;
+ }
+
+ public synchronized byte[] getPdfDocument() {
+ return pdfDocument;
+ }
+
+ public synchronized void setResponseType(int responseType) {
+ this.responseType = responseType;
+ }
+
+ public int getResponseType() {
+ return this.responseType;
+ }
+
+ public synchronized int getErrorCode() {
+ return errorCode;
+ }
+
+ public synchronized void setErrorCode(int errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public synchronized String getErrorInfo() {
+ return errorInfo;
+ }
+
+ public synchronized void setErrorInfo(String errorInfo) {
+ this.errorInfo = errorInfo;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java
index c9ca89d..59c8c94 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequest.java
@@ -3,34 +3,34 @@ package at.gv.egovernment.moa.spss.server.xmlbind;
import java.util.Date;
public class VerifyPDFRequest {
- private Date dateTime;
- private byte[] signedPDF;
- private String trustProfileID;
-
- public VerifyPDFRequest() {
- }
-
- public synchronized Date getDateTime() {
- return dateTime;
- }
-
- public synchronized void setDateTime(Date dateTime) {
- this.dateTime = dateTime;
- }
-
- public synchronized byte[] getSignedPDF() {
- return signedPDF;
- }
-
- public synchronized void setSignedPDF(byte[] signedPDF) {
- this.signedPDF = signedPDF;
- }
-
- public synchronized String getTrustProfileID() {
- return trustProfileID;
- }
-
- public synchronized void setTrustProfileID(String trustProfileID) {
- this.trustProfileID = trustProfileID;
- }
+ private Date dateTime;
+ private byte[] signedPDF;
+ private String trustProfileID;
+
+ public VerifyPDFRequest() {
+ }
+
+ public synchronized Date getDateTime() {
+ return dateTime;
+ }
+
+ public synchronized void setDateTime(Date dateTime) {
+ this.dateTime = dateTime;
+ }
+
+ public synchronized byte[] getSignedPDF() {
+ return signedPDF;
+ }
+
+ public synchronized void setSignedPDF(byte[] signedPDF) {
+ this.signedPDF = signedPDF;
+ }
+
+ public synchronized String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ public synchronized void setTrustProfileID(String trustProfileID) {
+ this.trustProfileID = trustProfileID;
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java
index 66761e4..0581595 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFRequestParser.java
@@ -14,47 +14,47 @@ import at.gv.egovernment.moaspss.util.XPathUtils;
public class VerifyPDFRequestParser {
- //
- // XPath expressions for selecting parts of the DOM message
- //
- private static final String MOA = Constants.MOA_PREFIX + ":";
- private static final String DATE_TIME_XPATH = MOA + "DateTime";
- private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature";
- private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
-
- public VerifyPDFRequest parse(Element requestElem) throws MOAApplicationException {
-
- VerifyPDFRequest verifyPDFRequest = new VerifyPDFRequest();
-
- Date dateTime = RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
- byte[] signedPDF = null;
- try {
- signedPDF = parsePDF(requestElem);
- } catch (IOException e) {
- throw new MOAApplicationException("Failed to extract signed pdf data", null, e);
- }
- String trustProfileID = XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
- verifyPDFRequest.setDateTime(dateTime);
- verifyPDFRequest.setSignedPDF(signedPDF);
- verifyPDFRequest.setTrustProfileID(trustProfileID);
-
- return verifyPDFRequest;
- }
-
- /**
- * Parse the content contained in a <code>CMSContentBaseType</code> kind of
- * DOM element.
- *
- * @param contentElem
- * The <code>CMSContentBaseType</code> kind of element to parse.
- * @return A <code>CMSDataObject</code> API object containing the data from
- * the given DOM element.
- * @throws IOException
- */
- private byte[] parsePDF(Element contentElem) throws IOException {
- Element base64ContentElem = (Element) XPathUtils.selectSingleNode(contentElem, PDF_SIGNATURE_XPATH);
-
- String base64Str = DOMUtils.getText(base64ContentElem);
- return Base64Utils.decode(base64Str, true);
- }
+ //
+ // XPath expressions for selecting parts of the DOM message
+ //
+ private static final String MOA = Constants.MOA_PREFIX + ":";
+ private static final String DATE_TIME_XPATH = MOA + "DateTime";
+ private static final String PDF_SIGNATURE_XPATH = MOA + "PDFSignature";
+ private static final String TRUST_PROFILE_ID_XPATH = MOA + "TrustProfileID";
+
+ public VerifyPDFRequest parse(Element requestElem) throws MOAApplicationException {
+
+ final VerifyPDFRequest verifyPDFRequest = new VerifyPDFRequest();
+
+ final Date dateTime = RequestParserUtils.parseDateTime(requestElem, DATE_TIME_XPATH);
+ byte[] signedPDF = null;
+ try {
+ signedPDF = parsePDF(requestElem);
+ } catch (final IOException e) {
+ throw new MOAApplicationException("Failed to extract signed pdf data", null, e);
+ }
+ final String trustProfileID = XPathUtils.getElementValue(requestElem, TRUST_PROFILE_ID_XPATH, null);
+ verifyPDFRequest.setDateTime(dateTime);
+ verifyPDFRequest.setSignedPDF(signedPDF);
+ verifyPDFRequest.setTrustProfileID(trustProfileID);
+
+ return verifyPDFRequest;
+ }
+
+ /**
+ * Parse the content contained in a <code>CMSContentBaseType</code> kind of DOM
+ * element.
+ *
+ * @param contentElem The <code>CMSContentBaseType</code> kind of element to
+ * parse.
+ * @return A <code>CMSDataObject</code> API object containing the data from the
+ * given DOM element.
+ * @throws IOException
+ */
+ private byte[] parsePDF(Element contentElem) throws IOException {
+ final Element base64ContentElem = (Element) XPathUtils.selectSingleNode(contentElem, PDF_SIGNATURE_XPATH);
+
+ final String base64Str = DOMUtils.getText(base64ContentElem);
+ return Base64Utils.decode(base64Str, true);
+ }
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java
index c162529..61304b0 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponse.java
@@ -1,20 +1,17 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
-import java.util.List;
-
//import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
public class VerifyPDFResponse {
- /*private List<VerifyResult> verificationResults = null;
-
- public VerifyPDFResponse() {
- }
-
- public synchronized List<VerifyResult> getVerificationResults() {
- return verificationResults;
- }
-
- public synchronized void setVerificationResults(List<VerifyResult> verificationResults) {
- this.verificationResults = verificationResults;
- }*/
+ /*
+ * private List<VerifyResult> verificationResults = null;
+ *
+ * public VerifyPDFResponse() { }
+ *
+ * public synchronized List<VerifyResult> getVerificationResults() { return
+ * verificationResults; }
+ *
+ * public synchronized void setVerificationResults(List<VerifyResult>
+ * verificationResults) { this.verificationResults = verificationResults; }
+ */
}
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java
index cb3c66b..b9117e9 100644
--- a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java
+++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/xmlbind/VerifyPDFResponseBuilder.java
@@ -1,110 +1,87 @@
package at.gv.egovernment.moa.spss.server.xmlbind;
-import java.util.Iterator;
-
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-//import at.gv.egiz.pdfas.lib.api.verify.VerifyResult;
-import at.gv.egovernment.moa.spss.MOAApplicationException;
-import at.gv.egovernment.moa.spss.MOAException;
import at.gv.egovernment.moa.spss.MOASystemException;
import at.gv.egovernment.moa.spss.api.xmlbind.ResponseBuilderUtils;
-import at.gv.egovernment.moa.spss.server.pdfas.ExtendedVerifyResult;
import at.gv.egovernment.moaspss.util.Constants;
public class VerifyPDFResponseBuilder {
- private static final String MOA_NS_URI = Constants.MOA_NS_URI;
-
- //private static final Logger logger = LoggerFactory.getLogger(VerifyPDFResponseBuilder.class);
-
- /** The XML document containing the response element. */
- private Document responseDoc;
- /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
- private Element responseElem;
-
- /**
- * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
- *
- * @throws MOASystemException
- * An error occurred setting up the resulting XML document.
- */
- public VerifyPDFResponseBuilder() throws MOASystemException {
- responseDoc = ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse");
- responseElem = responseDoc.getDocumentElement();
- }
-
- /**
- * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
- * element being the XML representation of the given
- * <code>CreateCMSSignatureResponse</code> API object.
- *
- * @param response
- * The <code>CreateCMSSignatureResponse</code> to convert to XML.
- * @return A document containing the <code>CreateCMSSignatureResponse</code>
- * DOM element.
- */
- /*public Document build(VerifyPDFResponse response) throws MOAException {
- if(response.getVerificationResults() == null) {
- throw new MOAApplicationException("No verification results available", null);
- }
- Iterator<VerifyResult> iter = response.getVerificationResults().iterator();
+ private static final String MOA_NS_URI = Constants.MOA_NS_URI;
- while (iter.hasNext()) {
- VerifyResult verifyResult = iter.next();
- addVerifyResult(verifyResult);
- }
+ // private static final Logger logger =
+ // LoggerFactory.getLogger(VerifyPDFResponseBuilder.class);
- return responseDoc;
- }
-
- private void addVerifyResult(VerifyResult verifyResult) throws MOAApplicationException {
- Element pdfSignature = responseDoc.createElementNS(MOA_NS_URI, "SignatureResult");
-
-
- String qcSource = null;
- String publicAuthorityID = null;
- String sscdSource = null;
- boolean isPublicAuthority = false;
- boolean isSSCD = false;
- String issureCountryCode = null;
-
- if(verifyResult instanceof ExtendedVerifyResult) {
- ExtendedVerifyResult extendedVerifyResult = (ExtendedVerifyResult)verifyResult;
-
- qcSource = extendedVerifyResult.getQcSource();
- publicAuthorityID = extendedVerifyResult.getPublicAuthorityID();
- sscdSource = extendedVerifyResult.getQcSource();
- issureCountryCode = extendedVerifyResult.getIssureCountryCode();
-
- isPublicAuthority = extendedVerifyResult.isPublicAuthority();
- isSSCD = extendedVerifyResult.isSSCD();
- }
-
- ResponseBuilderUtils.addSignerInfo(responseDoc, pdfSignature,
- verifyResult.getSignerCertificate(),
- verifyResult.isQualifiedCertificate(),
- qcSource,
- isPublicAuthority,
- publicAuthorityID,
- isSSCD,
- sscdSource,
- issureCountryCode);
-
- ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- pdfSignature,
- "SignatureCheck",
- verifyResult.getValueCheckCode().getCode(),
- (String)null);
+ /** The XML document containing the response element. */
+ private final Document responseDoc;
+ /** The response <code>CreateCMSSignatureResponse</code> DOM element. */
+ private final Element responseElem;
- ResponseBuilderUtils.addCodeInfoElement(
- responseDoc,
- pdfSignature,
- "CertificateCheck",
- verifyResult.getCertificateCheck().getCode(),
- (String)null);
+ /**
+ * Create a new <code>CreateCMSSignatureResponseBuilder</code>:
+ *
+ * @throws MOASystemException An error occurred setting up the resulting XML
+ * document.
+ */
+ public VerifyPDFResponseBuilder() throws MOASystemException {
+ responseDoc = ResponseBuilderUtils.createResponse("VerifyPDFSignatureResponse");
+ responseElem = responseDoc.getDocumentElement();
+ }
- responseElem.appendChild(pdfSignature);
- }*/
+ /**
+ * Build a document containing a <code>CreateCMSSignatureResponse</code> DOM
+ * element being the XML representation of the given
+ * <code>CreateCMSSignatureResponse</code> API object.
+ *
+ * @param response The <code>CreateCMSSignatureResponse</code> to convert to
+ * XML.
+ * @return A document containing the <code>CreateCMSSignatureResponse</code> DOM
+ * element.
+ */
+ /*
+ * public Document build(VerifyPDFResponse response) throws MOAException {
+ * if(response.getVerificationResults() == null) { throw new
+ * MOAApplicationException("No verification results available", null); }
+ * Iterator<VerifyResult> iter = response.getVerificationResults().iterator();
+ *
+ * while (iter.hasNext()) { VerifyResult verifyResult = iter.next();
+ * addVerifyResult(verifyResult); }
+ *
+ * return responseDoc; }
+ *
+ * private void addVerifyResult(VerifyResult verifyResult) throws
+ * MOAApplicationException { Element pdfSignature =
+ * responseDoc.createElementNS(MOA_NS_URI, "SignatureResult");
+ *
+ *
+ * String qcSource = null; String publicAuthorityID = null; String sscdSource =
+ * null; boolean isPublicAuthority = false; boolean isSSCD = false; String
+ * issureCountryCode = null;
+ *
+ * if(verifyResult instanceof ExtendedVerifyResult) { ExtendedVerifyResult
+ * extendedVerifyResult = (ExtendedVerifyResult)verifyResult;
+ *
+ * qcSource = extendedVerifyResult.getQcSource(); publicAuthorityID =
+ * extendedVerifyResult.getPublicAuthorityID(); sscdSource =
+ * extendedVerifyResult.getQcSource(); issureCountryCode =
+ * extendedVerifyResult.getIssureCountryCode();
+ *
+ * isPublicAuthority = extendedVerifyResult.isPublicAuthority(); isSSCD =
+ * extendedVerifyResult.isSSCD(); }
+ *
+ * ResponseBuilderUtils.addSignerInfo(responseDoc, pdfSignature,
+ * verifyResult.getSignerCertificate(), verifyResult.isQualifiedCertificate(),
+ * qcSource, isPublicAuthority, publicAuthorityID, isSSCD, sscdSource,
+ * issureCountryCode);
+ *
+ * ResponseBuilderUtils.addCodeInfoElement( responseDoc, pdfSignature,
+ * "SignatureCheck", verifyResult.getValueCheckCode().getCode(), (String)null);
+ *
+ * ResponseBuilderUtils.addCodeInfoElement( responseDoc, pdfSignature,
+ * "CertificateCheck", verifyResult.getCertificateCheck().getCode(),
+ * (String)null);
+ *
+ * responseElem.appendChild(pdfSignature); }
+ */
}
diff --git a/moaSig/moa-sig/src/main/resources/log4j.properties b/moaSig/moa-sig/src/main/resources/log4j.properties
index 8cd351c..61f0cfe 100644
--- a/moaSig/moa-sig/src/main/resources/log4j.properties
+++ b/moaSig/moa-sig/src/main/resources/log4j.properties
@@ -6,15 +6,22 @@
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
# Configure root logger and loggers for moa-spss
+log4j.rootLogger=warn,stdout
+log4j.logger.moa.spss.server=info,moaspss
+log4j.logger.iaik.server=info,moaspss
+log4j.logger.iaik.pki=info,moaspss
+log4j.logger.at.gv.egovernment.moa.spss=info, moaspss
+
log4j.rootLogger=warn, stdout
log4j.logger.moa.spss.server=info, stdout, moaspss
log4j.logger.iaik.server=info, stdout, moaspss
log4j.logger.at.gv.egovernment.moa.spss=TRACE, stdout, moaspss
+>>>>>>> moaSig/moa-sig/src/main/resources/log4j.properties
# Configure the 'stdout' appender to write logging output to the console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
+log4j.appender.stdout.layout.ConversionPattern=log4j | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
# Configure the 'moaspss' appender to write moa-spss related logging output
# to the file '${catalina.base}/logs/moa-spss.log'. The file is rolled over every 1000KB,
@@ -24,7 +31,7 @@ log4j.appender.moaspss.File=${catalina.base}/logs/moa-spss.log
log4j.appender.moaspss.MaxFileSize=1000KB
log4j.appender.moaspss.MaxBackupIndex=10
log4j.appender.moaspss.layout=org.apache.log4j.PatternLayout
-log4j.appender.moaspss.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
+log4j.appender.moaspss.layout.ConversionPattern=log4j | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n
# Configure the jdbc appender 'JDBC' to write logging output
# to the given PostgreSQL database
diff --git a/moaSig/moa-sig/src/main/resources/logback.xml b/moaSig/moa-sig/src/main/resources/logback.xml
new file mode 100644
index 0000000..501c1a6
--- /dev/null
+++ b/moaSig/moa-sig/src/main/resources/logback.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- For assistance related to logback-translator or configuration -->
+<!-- files in general, please contact the logback user mailing list -->
+<!-- at http://www.qos.ch/mailman/listinfo/logback-user -->
+<!-- -->
+<!-- For professional support please see -->
+<!-- http://www.qos.ch/shop/products/professionalSupport -->
+<!-- -->
+<configuration>
+ <appender name="moaspss" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
+ <File>${catalina.base}/logs/moa-spss.log</File>
+ <encoder>
+ <pattern>logback | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n</pattern>
+ </encoder>
+ <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+ <maxIndex>10</maxIndex>
+ <FileNamePattern>${catalina.base}/logs/moa-spss.log.%i</FileNamePattern>
+ </rollingPolicy>
+ <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+ <MaxFileSize>1000KB</MaxFileSize>
+ </triggeringPolicy>
+ </appender>
+ <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>logback | %5p | %d{dd HH:mm:ss,SSS} | %C{1} | %20c | %10t | %m%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="moa.spss.server" level="debug">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <logger name="iaik.pki" level="debug">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <logger name="at.gv.egovernment.moa.spss" level="debug">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <logger name="iaik.server" level="error">
+ <appender-ref ref="moaspss"/>
+ <appender-ref ref="stdout"/>
+ </logger>
+ <root level="warn">
+ <appender-ref ref="stdout"/>
+ </root>
+</configuration> \ No newline at end of file
diff --git a/moaSig/settings.gradle b/moaSig/settings.gradle
index 222a5bd..86077eb 100644
--- a/moaSig/settings.gradle
+++ b/moaSig/settings.gradle
@@ -1,2 +1 @@
-
include "common", "moa-sig", "moa-sig-lib", "moa-asic"
diff --git a/release-infos/ext_libs/iaik_jce_full_signed-5.61_MOA.jar b/release-infos/ext_libs/iaik_jce_full_signed-5.61_MOA.jar
deleted file mode 100644
index 78b79e9..0000000
--- a/release-infos/ext_libs/iaik_jce_full_signed-5.61_MOA.jar
+++ /dev/null
Binary files differ
diff --git a/release-infos/readme_3.1.4-RC1.txt b/release-infos/readme_3.1.4-RC1.txt
new file mode 100644
index 0000000..e48c4f9
--- /dev/null
+++ b/release-infos/readme_3.1.4-RC1.txt
@@ -0,0 +1,85 @@
+Releaseinfos zu MOA-SPSS Version 3.1.3
+ - Änderungen:
+ - Anpassungen an der TSL Implementierung
+ - Updates von Bibliotheken zur Stabilitätsverbesserung
+ - TrustStore Update in der Beispielkonfiguration
+
+-------------------------------------------------------------------------------
+ Update einer bestehenden MOA-SPSS-Installation auf Version 3.1.3
+-------------------------------------------------------------------------------
+Es gibt zwei Moeglichkeiten (im Folgenden als "Update Variante A" und
+"Update Variante B" bezeichnet), das Update von MOA-SPSS auf Version
+3.1.1 durchzufuehren. Update Variante A geht dabei den Weg ueber eine
+vorangestellte Neuinstallation, waehrend Variante B direkt eine
+bestehende Installation aktualisiert.
+
+Folgende Begriffe werden verwendet:
+
+JAVA_HOME bezeichnet das Wurzelverzeichnis der JDK-Installation
+
+CATALINA_HOME bezeichnet das Wurzelverzeichnis der Tomcat-Installation
+
+MOA_SPSS_WAR bezeichnet die Applikation MOA-SPSS in der Datei moa-spss-3.1.3.war
+
+MOA_SPSS_HANDBOOK bezeichnet das Archiv mit dem Handbuch und der Default Konfiguration
+
+--------------------------
+Update Variante A
+--------------------------
+
+1.) Erstellen Sie eine Sicherungskopie des kompletten Tomcat-Verzeichnisses
+ Ihrer MOA-SPSS-Installation.
+
+2.) Fuehren Sie eine Neuinstallation gemaess Handbuch durch.
+
+3.) Kopieren Sie etwaige Konfigurationsdateien, Trust-Profile und Key-Stores,
+ die Sie aus Ihrer alten Installation beibehalten moechten, aus Ihrer
+ Sicherungskopie in die entsprechenden Verzeichnisse der neuen
+ Installation.
+
+
+--------------------------
+Update Variante B
+--------------------------
+
+1.) Erstellen Sie eine Sicherungskopie des kompletten Tomcat-Verzeichnisses
+ Ihrer MOA-SPSS-Installation.
+
+2.) Umstellung auf Java JDK 9
+ Die 'JAVA_HOME\jre\lib\ext' und die 'CATALINA_HOME\endorsed' wird in Java 9
+ nicht mehr unterstützt und entsprechende Referenzen müssen aus den Start-Scripts
+ entfernt werden. Ab MOA-SPSS 3.1.3 sind die Bibliotheken, welche früher in
+ den beiden Verzeichnissen hinterlegt waren, direkt in MOA-SPSS integriert.
+ Falls sie eine Java Version < 9 verwenden und aktuell Bibliotheken in diesen
+ Verzeichnissen abgelegt haben müssen diese aktualisiert werden:
+
+ 2.1.) Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ JAVA_HOME\jre\lib\ext und loeschen Sie diese Dateien danach.
+
+ 2.2.) Kopieren Sie alle Dateien aus dem Verzeichnis MOA_SPSS_HANDBOOK\ext_libs in das
+ Verzeichnis JAVA_HOME\jre\lib\ext
+
+ 2.3.) Erstellen Sie eine Sicherungskopie aller "*.jar"-Dateien im Verzeichnis
+ CATALINA_HOME\endorsed und loeschen Sie diese Dateien danach.
+
+ 2.4.) Kopieren Sie die Dateien aus dem Verzeichnis MOA_SPSS_HANDBOOK\endorsed_libs
+ in das Verzeichnis CATALINA_HOME\endorsed. Ueberschreiben Sie dabei
+ etwaige gleichnamige Dateien. Die dort eventuell vorhandene Datei
+ xmlParserAPIs.jar ist zu loechen.
+
+7.) Loeschen Sie das Verzeichnis CATALINA_HOME\webapps\moa-spss.
+
+8.) Ersetzen Sie die Datei CATALINA_HOME\webapps\moa-spss.war durch die Datei
+ MOA_SPSS_WAR.
+
+9.) Loeschen Sie das Verzeichnis CATALINA_HOME\work.
+
+10.) Falls sie MOA-SP mit Trust-Status List (TSL) Unterstützung betreiben passen Sie
+ die Konfiguration entsprechend der TSL Konfiguration im Handbuch an.
+
+11.) Falls sie MOA-SP ohne Trust-Status List (TSL) Unterstützung betreiben gleichen Sie
+ nach bedarf die in der Konfiguration begelegten TrustStore für Zertifikate
+ MOA_SPSS_HANDBOOK/conf/moa-spss/trustProfiles/*
+ udnd das toBeAdded Verzeichnis des CertStores
+ MOA_SPSS_HANDBOOK/conf/moa-spss/certstore/toBeAdded/*
+ mit der von Ihnen aktuell verwendeten Konfiguration ab. \ No newline at end of file